Occasional NPE when calling JupyterConnection.connect

Sometimes when my kernel's main method calls JupyterConnection.connect, I get a NPE and the kernel fails to connect to Jupyter. Here's the log output (including stack trace) when this happens:
Jun 06, 2018 2:39:45 PM io.github.spencerpark.jupyter.channels.HeartbeatChannel bind
INFORMATION: Polling on Heartbeat-0
Jun 06, 2018 2:39:45 PM io.github.spencerpark.jupyter.channels.ShellChannel lambda$bind$17
INFORMATION: Shell-0 shutdown.
Exception in thread "main" java.lang.NullPointerException
        at io.github.spencerpark.jupyter.channels.ShellChannel.bind(ShellChannel.java:68)
        at io.github.spencerpark.jupyter.channels.JupyterConnection.lambda$connect$15(JupyterConnection.java:48)
        at io.github.spencerpark.jupyter.channels.JupyterConnection.forEachSocket(JupyterConnection.java:74)
        at io.github.spencerpark.jupyter.channels.JupyterConnection.connect(JupyterConnection.java:48)
        at de.prob2.jupyter.Main.main(Main.java:41)
[W 14:39:47.091 NotebookApp] Timeout waiting for kernel_info reply from 256259e8-8ac5-49ca-8935-b11acab9cc23

I'm using version 2.2.0-SNAPSHOT, but this has happened on previous versions as well. It's not common enough to be a major problem, but it does happen regularly every now and then. When it happens, restarting the kernel is usually enough to fix it.

You shouldn't get the NPE any more but there still may be an underlying problem as the NPE should only occur if the channel is closed almost immediately after opening. If you find this is still a problem please reopen this issue as it is related.
I have a feeling this is related to a development workflow replacing the jar and constantly restarting but I'm not sure how to reproduce it. I'll keep an eye out myself as well.

I have a feeling this is related to a development workflow replacing the jar and constantly restarting

That is more or less what I'm doing. (I have my kernelspec pointing to the jar in the Gradle build output directory.) Previously I left the kernel running while rebuilding the jar, and that caused some really odd issues, like the JVM crashing during the build. Now I always shut the kernel down before I rebuild the jar, which has fixed the JVM crashes, but not the NPEs.
Thanks for the fix, I'll see how things work with the new version.

You were correct, the underlying issue is still there. At least now it doesn't cause any exceptions, but the kernel still fails to start up. Here's how the log typically looks when it happens:
[I 18:10:04.627 NotebookApp] Kernel started: 557f41f1-ef28-4922-ac21-093f7a9c476a
Listening for transport dt_socket at address: 54966
[W 18:10:14.778 NotebookApp] Timeout waiting for kernel_info reply from 557f41f1-ef28-4922-ac21-093f7a9c476a
Jun 20, 2018 6:10:14 PM io.github.spencerpark.jupyter.channels.HeartbeatChannel bind
INFORMATION: Polling on Heartbeat-0
Jun 20, 2018 6:10:14 PM io.github.spencerpark.jupyter.channels.HeartbeatChannel lambda$bind$4
INFORMATION: Heartbeat-0 shutdown.
Jun 20, 2018 6:10:14 PM io.github.spencerpark.jupyter.channels.ShellChannel lambda$bind$17
INFORMATION: Shell-0 shutdown.
Jun 20, 2018 6:10:14 PM io.github.spencerpark.jupyter.channels.ShellChannel bind
INFORMATION: Polling on Shell-0
Jun 20, 2018 6:10:14 PM io.github.spencerpark.jupyter.channels.ShellChannel lambda$bind$17
INFORMATION: Shell-1 shutdown.
Jun 20, 2018 6:10:14 PM io.github.spencerpark.jupyter.channels.ShellChannel bind
INFORMATION: Polling on Shell-1

I don't know if there's anything specific that triggers it, so far it seems to be basically random. I'm fairly sure that it's not related to rebuilding the kernel jar while it's running, I've also had this happen with notebooks that I just opened.
I know this isn't a lot of information - if there's anything else I can provide to help you debug this, let me know. (I have my kernel set up so I can connect with a debugger, if that's of any use...)

Thanks for the update.
I tried to reproduce as well as look into jeromq to see if maybe there is an issue on that end but to no avail. I've looked at issues with the debugger port colliding, tried running multiple kernels, stress testing reloads, explicit port collisions, nothing is reproducing the error.
The client isn't explicitly closing the connection as we would have a log entry about that shutdown_request. The ordering of the shutdowns has me convinced that JupyterConnection#close is what is triggering it but it shouldn't be.
If I may ask, what OS, jvm, python, and jupyter versions are you on? I've published a version with some extra logging lines which might be helpful and running jupyter with the --debug flag could also get some more information.

It just happened again, and this was with a freshly started Jupyter and the first notebook I opened. That confirms that it's not because of me rebuilding the kernel.
I'm using Mac OS X 10.11.6, Oracle JDK 8u172, Python 3.6.4, jupyter-core 4.4.0, jupyter-client 5.2.3. Here's the console output with --debug (I removed all the lines about successful HTTP requests and such):
[I 10:45:23.879 NotebookApp] Kernel started: a9dab926-0961-4844-9446-e3c223a3a0de
[D 10:45:23.880 NotebookApp] Kernel args: {'kernel_name': 'prob2', 'cwd': '/Users/Shared/Uni/SHK/ProB2/prob2-jupyter-kernel/notebooks'}
[D 10:45:23.886 NotebookApp] 201 POST /api/sessions (::1) 116.17ms
[D 10:45:24.061 NotebookApp] Using contents: services/contents
Listening for transport dt_socket at address: 49551
[D 10:45:24.566 NotebookApp] Initializing websocket connection /api/kernels/a9dab926-0961-4844-9446-e3c223a3a0de/channels
[D 10:45:24.571 NotebookApp] Requesting kernel info from a9dab926-0961-4844-9446-e3c223a3a0de
[D 10:45:24.571 NotebookApp] Connecting to: tcp://<IP_ADDRESS>:49540
[W 10:45:34.576 NotebookApp] Timeout waiting for kernel_info reply from a9dab926-0961-4844-9446-e3c223a3a0de
[D 10:45:34.578 NotebookApp] Opening websocket /api/kernels/a9dab926-0961-4844-9446-e3c223a3a0de/channels
[D 10:45:34.579 NotebookApp] Getting buffer for a9dab926-0961-4844-9446-e3c223a3a0de
[D 10:45:34.579 NotebookApp] Connecting to: tcp://<IP_ADDRESS>:49540
[D 10:45:34.580 NotebookApp] Connecting to: tcp://<IP_ADDRESS>:49541
[D 10:45:34.580 NotebookApp] Connecting to: tcp://<IP_ADDRESS>:49542
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.HeartbeatChannel bind
INFORMATION: Binding Heartbeat-0 to tcp://<IP_ADDRESS>:49544.
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.Loop start
INFORMATION: Loop starting...
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.Loop start
INFORMATION: Loop started.
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.HeartbeatChannel bind
INFORMATION: Polling on Heartbeat-0
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.ShellChannel bind
INFORMATION: Binding Shell-0 to tcp://<IP_ADDRESS>:49540.
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.Loop start
INFORMATION: Loop starting...
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.Loop run
INFORMATION: Running loop shutdown callback.
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.ShellChannel lambda$bind$17
INFORMATION: Shell-0 shutdown.
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.Loop start
INFORMATION: Loop started.
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.Loop run
INFORMATION: Loop stopped.
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.ShellChannel bind
INFORMATION: Polling on Shell-0
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.ShellChannel bind
INFORMATION: Binding Shell-1 to tcp://<IP_ADDRESS>:49543.
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.Loop start
INFORMATION: Loop starting...
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.Loop start
INFORMATION: Loop started.
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.ShellChannel bind
INFORMATION: Polling on Shell-1
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.StdinChannel bind
INFORMATION: Binding stdin to tcp://<IP_ADDRESS>:49542.
Jun 21, 2018 10:45:35 AM io.github.spencerpark.jupyter.channels.IOPubChannel bind
INFORMATION: Binding iopub to tcp://<IP_ADDRESS>:49541.

I actually have a theory what might be happening here. Based on the log, we know that:

Because of the "Running loop shutdown callback" message, the while (running) loop in Loop.run must have exited, i. e. running must be false.
running is set to false in three places: in the initializer, the InterruptedException handler, and shutdown.

https://github.com/SpencerPark/jupyter-jvm-basekernel/blob/53bc4372de0ab2fa6c42299dc8273deb2f05da24/src/main/java/io/github/spencerpark/jupyter/channels/Loop.java#L10
https://github.com/SpencerPark/jupyter-jvm-basekernel/blob/53bc4372de0ab2fa6c42299dc8273deb2f05da24/src/main/java/io/github/spencerpark/jupyter/channels/Loop.java#L53-L56
https://github.com/SpencerPark/jupyter-jvm-basekernel/blob/53bc4372de0ab2fa6c42299dc8273deb2f05da24/src/main/java/io/github/spencerpark/jupyter/channels/Loop.java#L77-L80

The last two cases produce log messages, but neither of them appear in the log. That means that running was initialized to false when the Loop was created, and wasn't set to true before the while (running) loop started.
running is unconditionally set to true in Loop.start.

https://github.com/SpencerPark/jupyter-jvm-basekernel/blob/53bc4372de0ab2fa6c42299dc8273deb2f05da24/src/main/java/io/github/spencerpark/jupyter/channels/Loop.java#L70-L75

This means that Loop.run must have run before the this.running = true line. This is entirely possible, because super.start() starts a new thread, which might get to run immediately, before this.running = true is executed.

So we have a race condition: depending on how the scheduler is feeling, running may or may not be set to true before the while (running) loop is reached.
I think the easiest fix would be to move the this.running = true line from start into run, so that the assignment happens in the newly started thread rather than the parent thread.

So we have a race condition: depending on how the scheduler is feeling, running may or may not be set to true before the while (running) loop is reached.

Uggh yes a race condition makes perfect sense. I'm a little embarrassed of this one :). Thank you for the detailed outline of the problem and for your help debugging it.

I think the easiest fix would be to move the this.running = true line from start into run, so that the assignment happens in the newly started thread rather than the parent thread.

Thinking about what you mentioned about the scheduler, if we set running to true in run() and for some reason (a real reason this time) the loop is shutdown() before the tread gets up and running then the shutdown() request gets ignored. So I just moved the assignment to right before the super.start() which is where it should have been in the first place. I'm hesitant to make things any more complicated in case I introduce another bug like this but we really need running to have 3 states. Anyways I don't want to touch it as things should be working now. Thank you again and the fix will be published immediately.


Use pull_request_target for triggering the lint work

This should allow the workflow to correctly run on forks

Doesn't seem like this would work, if I'm reading this right? 🤔 https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#pull_request_target

Don't use this, the pull_request_target is a very hard to use trigger.


Zoid component is undefined in IE11 for consumer app

Hello,
Below is my code hosted on my local server, it is copied from iframe example. It works well in chrome but throws error in IE11 - MyLoginZoidComponent is undefined
Is this a known error or am I doing anything wrong here?
<!DOCTYPE html>

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css" />
    <link rel="stylesheet" href="../../common/index.css" />

Log in on xyz.com

Are you still seeing this issue?


low dept measure accuracy

librealsense
2.19.2 RELEASE

OS
Linux

Name
Intel RealSense D435

Serial Number
746512070331

Firmware Version
<IP_ADDRESS>

Advanced Mode
YES

Usb Type Descriptor
2.1

Please provide a description of the problem
hello. cam doesnt resolve drugs in palette. the distanse to palette is 30 cm.
what to set?

Hi @maxrodkin
The camera is connected via USB2, is this intentional?
Also, the selected preset is High Density, did you try with High or Medium Accuracy?
Last, what is the situation in the 3D view? The 2D colors can be misleading

hi @dorodnic
USB2 was my fault, now it is USB3
had set preset to High Accuracy. Got a little bit better view of blister. But obviously, the accurace is not enough to recognize a drill or another working instrument.. My goal is getting the cloud of points of object and comparing to 3D model, finding diffs.

@maxrodkin Noticed that you adjusted the exposure and laser power also, so did you try the default setting with default preset?

@maxrodkin Any update? Thanks!

@maxrodkin Could you please update? Thanks!

@maxrodkin Didn't get response from you for several weeks. Will close the ticket at this point. Please feel free to open new tickets if you still have questions. Thanks!


No CurseForge

This mod seems to be a cool replacement for OptiFine's Custom GUI's, but it's not accessible on CurseForge, something that can be very useful for modpacks. (Especially for Fabulously Optimized, the modpack/replacement for OptiFine)

And it would help the mod get more reach and support.


Issue: Whisper terminates YouTube transcriptions.

Issue you'd like to raise.
Hello everyone,
I've tried numerous approaches, but every time I attempt to transcribe a video from Google, the Whisper task gets terminated.
Does anyone have any suggestions?
def youtube_transcript(query: str) -> str:
    # Use the URL of the YouTube video you want to download
    youtube_url = [get_input_writing(query)]
# -------------
    # Directory to save audio files
    save_dir = "/home/ds_logos_2/transcripts"

    # Transcribe the videos to text
    loader = GenericLoader(YoutubeAudioLoader(youtube_url, save_dir), OpenAIWhisperParser())
    docs = loader.load()
    # Combine doc
    combined_docs = [doc.page_content for doc in docs]
    text = " ".join(combined_docs)

    # Save the transcription to a text file
    with open('/home/davesoma/transcripts/transcript.txt', 'w') as f:
        f.write(text)

[youtube] -hxeDjAxvJ8: Downloading webpage
[youtube] -hxeDjAxvJ8: Downloading ios player API JSON
[youtube] -hxeDjAxvJ8: Downloading android player API JSON
[youtube] -hxeDjAxvJ8: Downloading m3u8 information
[info] -hxeDjAxvJ8: Downloading 1 format(s): 140
[download] Destination: /home/davesoma/ds_logos_2/transcripts/Marc Andreessen： Future of the Internet, Technology, and AI ｜ Lex Fridman Podcast #386.m4a
[download] 100% of  177.41MiB in 00:00:18 at 9.52MiB/s
[FixupM4a] Correcting container of "/home/davesoma/ds_logos_2/transcripts/Marc Andreessen： Future of the Internet, Technology, and AI ｜ Lex Fridman Podcast #386.m4a"
[ExtractAudio] Not converting audio /home/davesoma/ds_logos_2/transcripts/Marc Andreessen： Future of the Internet, Technology, and AI ｜ Lex Fridman Podcast #386.m4a; fil
e is already in target format m4a                                                                                Transcribing part 1!
Killed

It appears the problem is due to the Whisper API limit.
Oddly enough, I've tried splitting the video without using the loader, and I encounter the same "killed" error.
Any ideas on how to overcome this issue?


Add dockerized version of Protect

@arkal this is ready for review whenever you're free

@arkal we should also change jenkins so it builds & pushes the docker containers to quay - I took a look at jenkins.sh, it seems like we can make the changes directly in the jenkins build config, right?

Done.
Jenkins, test this please.

@arkal any idea whats going on with the test?

Jenkins, test this please.

This one currently builds protect==2.3.0. A method to create a new docker for every release of protect is tracked in #142


Untar .tar files after decompressing

Hello,
When I use decompress option on a tar.gz file and content-encoding setted to gzip azcopy download file and delete gz extension only  (not uncompress and delete gz - not tar.gz) .
The copy delete the gz extension only and don't uncompress the file.
Any way to download and uncompress a tar.gz file with azcopy ?
Azcopy Version:
azcopy version 10.12.1 on Linux
Command used:
azcopy copy https://blob_url/archive.tar.gz --decompress destination/
Result :
destination/archive.tar

You're right; it decompressed the file, but it did not untar it. I'll mark this a feature request.

Tar extract to destination would be greet!
Support of tar extract from stdin (pipe) would be a killer feature for me.
My use case for backup restore with borg could be :
borg export-tar /path/to/repo::Monday - | azcopy copy --tar-extract "https://[account].blob.core.windows.net/[container]/[path/to/blob]" --from-to PipeBlob

Unfortunately, we are not going to add this functionality.  We are focused on documentation, testing, and quality, and this feature would represent a large increase in scope for the product.


Mark up summary list example with

The address may use the contact address element <address>, allowed within a <dl> parent element

Hi Benoit,
Thanks very much for taking the time to raise this. We definitely aim to make use of semantic HTML elements, but in this case we're not sure the use of <address> is appropriate.
The HTML living has this guidance for the address element:

The address element represents the contact information for its nearest article or body element ancestor. If that is the body element, then the contact information applies to the document as a whole.
[..]
The address element must not be used to represent arbitrary addresses (e.g. postal addresses), unless those addresses are in fact the relevant contact information. (The p element is the appropriate element for marking up postal addresses in general.)

We don't think that an address that appears within the summary list component is likely to be 'represent(ing) the contact information' for the document as a whole, and is instead likely to be an 'arbitrary postal address' and therefore should be not be marked up using the address element.
Even if there were instances where this is the case, they are likely to be in the minority and therefore we don't believe it makes sense to use the address element in this example which lacks the context needed to make that decision.
Based on this, we're going to close this Pull Request, but please do feel free to reply or open an issue if you think we have misunderstood the change or want clarification on anything.
Thanks again for contributing!


Input Not Registering While In-Game On WMR

I'm running on version 2.5.2 with a dell visor. When in the steam dashboard and house, my input workes fine and displays in the config menu. However, as soon as I get into a game, it stops working. If I move my mouse from the game window, it starts working again. I move it back, it stops working. Could this have something to do with steamvr taking ownership of the device?
Edit: The movements and events are still appearing in the debug mode.

Ok, I've double checked on my Vive. I haven't used it for a while but looks like no update broke it - I tried DirtRally through ReVive.
I don't have a dell visor.  But I might be able to fix it, what game is it? Are any other controllers connected? What API game uses, SteamVR, WMR? If events are still appearing in the debug mode then then it should work, I'm not sure what could be wrong if it doesn't. I would need the game to experiment with.

Could it be related to the new steamvr input remapping that came with the
last steamvr beta release?
On Sat, May 19, 2018, 12:27 PM mdovgialo<EMAIL_ADDRESS>wrote:

Ok, I've double checked on my Vive. I haven't used it for a while but
looks like no update broke it - I tried DirtRally through ReVive.
I don't have a dell visor. But I might be able to fix it, what game is it?
Are any other controllers connected? What API game uses, SteamVR, WMR? If
events are still appearing in the debug mode then then it should work, I'm
not sure what could be wrong if it doesn't. I would need the game to
experiment with.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/mdovgialo/steam-vr-wheel/issues/12#issuecomment-390416143,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHfhE1X9ocK5mq9-7Hdtbf5p0Yps1kzSks5t0EgEgaJpZM4UFkC9
.

It is in Elite Dangerous with SteamVR API. They are the only other controllers connected.

¯_(ツ)_/¯


migrations: Swap out deprecated JSONField import in-place

A deprecated import shouldn’t be used even in a migration, since the migration will need to remain runnable in the future. We never needed a migration for this switch anyway; we just needed to edit the old migration, since no actual state changes are involved.
For reference, django.contrib.postgres.fields.jsonb.JSONField is just a wrapper around django.db.models.JSONField that prints a deprecation message.
Testing plan: Ran rebuild-dev-database.
Cc @mateuszmandera.

Merged, thanks @andersk!


Diagram export (svg/png) with TAM shapes

Hi,
There seems to be an issue when Draw.IO crops the diagram for export to SVG/PNG when TAM stencils are used.

Is there a trick around that or a known issue?
Cheers,
Urs

I cannot reproduce. using v24.4.13 of draw.io.
are these elements from he tam-drawio plugin (because you mentioned stencils...)?


payment popup window (about:blank) not opening on android || ios white blank space

[x] I have read the Getting Started section
[x] I have already searched for the same problem

Environment

Technology
Version

Project Example Name

Flutter version
3.3.10

Plugin version
6.0.0-beta.22

Android version
11

iOS version
12.4 & 16.2 simulator

macOS version
12.6.3

Xcode version
14.2

Device information: iphone 8 - ios 15.5 & Android 11
Description
Expected behavior:
I am using flutter_inappwebview: ^6.0.0-beta.22 to creating a webview app for a ecommerce website .
Everything works fine except the payments popups ( about:blank ).
==My webview app not opening the popup window on android.
==On ios it's gone to a blank white space [ xcode log shown "[ViewportSizing] minimumViewportInset cannot be larger than frame"

No more interested

how to fixed?

how to fixed?

have anyone got any fix yet


Update definition DNA transcription, initiation, elongation, termination

GO:0097659
name: nucleic acid-templated transcription
namespace: biological_process
-def: "The cellular synthesis of RNA on a template of nucleic acid (DNA or RNA)." [GOC:pr, GOC:txnOH, GOC:vw]
+def: "The synthesis of an RNA transcript from a nucleic acid template (DNA or RNA)." [GOC:pr, GOC:txnOH, GOC:vw]
id:GO:0006351
name: DNA-templated transcription
+def: The synthesis of an RNA transcript from a DNA template.
GO:0001172
name: RNA-templated transcription
namespace: biological_process
-def: "The cellular synthesis of RNA on a template of RNA." [GOC:txnOH]
+def: "The synthesis of an RNA transcript from an RNA template.
DNA-templated transcription initiation
namespace: biological_process
alt_id: GO:0001123
-def: "Any process involved in the assembly of the RNA polymerase preinitiation complex (PIC) at the core promoter region of a DNA template, resulting in the subsequent synthesis of RNA from that promoter. The initiation phase includes PIC assembly and the formation of the first few bonds in the RNA chain, including abortive initiation, which occurs when the first few nucleotides are repeatedly synthesized and then released. The initiation phase ends just before and does not include promoter clearance, or release, which is the transition between the initiation and elongation phases of transcription." [GOC:jid, GOC:txnOH, PMID:18280161]
+def: "The initial step of transcription, consisting of the assembly of the RNA polymerase preinitiation complex (PIC) at a gene promoter, as well as the formation of the first few bonds of the RNA transcript. Transcription initiation includes abortive initiation events, which occur when the first few nucleotides are repeatedly synthesized and then released, and ends just before promoter clearance." [GOC:jid, GOC:txnOH, PMID:18280161]
GO:0006361
name: transcription initiation at RNA polymerase I promoter
namespace: biological_process
alt_id: GO:0001180
-def: "Any process involved in the assembly of the RNA polymerase I preinitiation complex (PIC) at an RNA polymerase I promoter region of a DNA template, resulting in the subsequent synthesis of RNA from that promoter. The initiation phase includes PIC assembly and the formation of the first few bonds in the RNA chain, including abortive initiation, which occurs when the first few nucleotides are repeatedly synthesized and then released. Promoter clearance, or release, is the transition between the initiation and elongation phases of transcription." [GOC:mah, GOC:txnOH]
+def: "A transcription initiation process that takes place at a RNA polymerase I gene promoter. Ribosomal RNAs (rRNA) genes are transcribed by RNA polymerase I." [GOC:txnOH]
GO:0006367
name: transcription initiation at RNA polymerase II promoter
def: "Any process involved in the assembly of the RNA polymerase II preinitiation complex (PIC) at an RNA polymerase II promoter region of a DNA template, resulting in the subsequent synthesis of RNA from that promoter. The initiation phase includes PIC assembly and the formation of the first few bonds in the RNA chain, including abortive initiation, which occurs when the first few nucleotides are repeatedly synthesized and then released. Promoter clearance, or release, is the transition between the initiation and elongation phases of transcription." [GOC:mah, GOC:txnOH]
+def: "A transcription initiation process that takes place at a RNA polymerase II gene promoter. Messenger RNAs (mRNA) genes, as well as some non-coding RNAs, are transcribed by RNA polymerase II." [GOC:mah, GOC:txnOH]
GOID:
name: transcription initiation at RNA polymerase III promoter
-def: Any process involved in the assembly of the RNA polymerase III preinitiation complex (PIC) at an RNA polymerase III promoter region of a DNA template, resulting in the subsequent synthesis of RNA from that promoter. The initiation phase includes PIC assembly and the formation of the first few bonds in the RNA chain, including abortive initiation, which occurs when the first few nucleotides are repeatedly synthesized and then released. Promoter clearance, or release, is the transition between the initiation and elongation phases of transcription." [GOC:mah, GOC:txnOH]
GO:0006391
name: transcription initiation at mitochondrial promoter
namespace: biological_process
-def: "A transcription initiation process that takes place at a promoter on the mitochondrial chromosome, and results in RNA synthesis by a mitochondrial RNA polymerase." [GOC:mah]
+def: "A transcription initiation process that takes place at a promoter on the mitochondrial chromosome." [GOC:mah]
+def: "A transcription initiation process that takes place at a RNA polymerase III gene promoter. Transfer RNAs (tRNA) genes, as well as other non-coding RNAs, are transcribed by RNA polymerase III." [GOC:mah, GOC:txnOH]

GO:0006353
-def: name: DNA-templated transcription termination
The cellular process that completes DNA-templated transcription; the formation of phosphodiester bonds ceases, the RNA-DNA hybrid dissociates, and RNA polymerase releases the DNA.

def: The completion of transcription: the RNA polymerase pauses, the RNA-DNA hybrid dissociates, followed by the release of the RNA polymerase from its DNA template.


Is the REST API available for version 11.4?

https://devcentral.f5.com/articles/demystifying-icontrol-rest-part-6-token-based-authentication
Introduced back in TMOS version 11.4 as an early access feature but released fully in version 11.5.
Text: u'{"code":404,"message":"http://localhost:8100/mgmt/tm/sys/","restOperationId":64681129,"errorStack":["com.f5.rest.common.RestWorkerUriNotFoundException: http://localhost:8100/mgmt/tm/sys/","at com.f5.rest.common.RestServer.trySendInProcess(RestServer.java:126)","at com.f5.rest.common.RestRequestReceiver.dispatchToService(RestRequestReceiver.java:93)","at com.f5.rest.common.RestRequestReceiver.processNext(RestRequestReceiver.java:57)","at com.f5.rest.common.RestHelper$2.run(RestHelper.java:1480)","at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)","at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)","at java.lang.Thread.run(Unknown Source)\n"]}'
If 11.4 is available using the REST API, what should I do?

This library is only tested to be working in 11.5 x and up maintenance releases. So in short the answer is use at your own peril. Also 11.4.x is out of support in general so we will never backport.


[BUG] Documentation on pytorch-cuda12 Missing Beginning of gcloud Command

Which image/versions are related to this issue/feature request?
pytorch-cuda12
Issue/Feature description
In the pytorch-cuda12 documentation on testing, the first step is creating a VM with GPUs.
It is currently written as below:
--zone=us-central1-a \
--machine-type=n1-standard-4 \
--accelerator="type=nvidia-tesla-t4,count=2" \
--boot-disk-size=200GB \
--boot-disk-type=pd-standard \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--maintenance-policy=TERMINATE \
--restart-on-failure

I don't know much about GCP, but I suspect that the command should be more like:
gcloud compute instances create INSTANCE_NAME \
--zone=us-central1-a \
--machine-type=n1-standard-4 \
--accelerator="type=nvidia-tesla-t4,count=2" \
--boot-disk-size=200GB \
--boot-disk-type=pd-standard \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--maintenance-policy=TERMINATE \
--restart-on-failure

Ignore me if I'm confused and close this issue :)
@EyeCantCU

I actually have a fresh set of instructions for spinning up a deep learning GCP instance after working on the pytorch-cuda12 getting started. I'll do a swap out. Thanks!


C# Linq 101 samples page is Unavailable in MSDN

This was the link to learn C# Linq 101 samples in MSDN but now it redirects some other page. I'm unable to find C# 101 samples. Anybody has any idea? Was this a mistake from Microsoft's end?

These samples have been moved and updated to use the new .NET Core "dotnet try" experience.
You can find them here: https://github.com/dotnet/try-samples


ZnInt division

ZnInt division is invalid.

So many things since last release are experimentals. Fixing the model for IVspace and Ring with stable design, then fixing generic implementation with abstract algebra, and at last fixing computations and user-elements.


[Bug] Unable to copy+paste from Preview response view

Overview

Insomnia Version: 5.7.11
Operating System:  Windows 10 Pro - 1703
Summary:  Unable to copy more than 1000 characters (including line breaks) from the Preview response view.  When pasting, only "-" gets pasted, instead of the selected/copied text.

How To Reproduce

Perform a request which returns a response with more than 1000 characters
Copy more than 1000 characters from the the Preview response view (ctrl-c, right click - copy, etc)
Paste copied context into notepad.  Only "-" appears.

Other Notes
"Raw Data" view does not seem to be affected, only the Visual Preview view.

Same for 5.7.11 on macOS.


Update assignment when mixpanel result has changed

Summary
https://github.com/Betterment/test_track/pull/123 introduced a change that results in the mixpanel_result never being updated when the client sends a request to DeterministicAssignmentCreation for an existing assignment. I believe the sequence of events would look something like this:

The client encounters a split and sends the first request to Api::V1::AssignmentEventsController with params that have a nil mixpanel_result.
The client's request to the analytics library succeeds and it sends another request to Api::V1::AssignmentEventsController with params that have a "success" mixpanel_result.
The DeterministicAssignmentCreation doesn't call ArbitraryAssignmentCreation because it finds an existing_assignment.
On a subsequent page load the client retrieves the split registry and sees a split with "unsynced": true.
The client sends another request to Api::V1::AssignmentEventsController with params that have a "success" mixpanel_result.
The DeterministicAssignmentCreation doesn't call ArbitraryAssignmentCreation because it finds an existing_assignment.

4 to 6 keep repeating for each page load.
This changes proposes a should_create_or_update_assignment? expression that incorporates a comparison of whether the existing and new mixpanel_results are equal.
It also adds an optional created_at attr to ArbitraryAssignmentCreation so we can choose to preserve the existing assignment timestamp if we don't want the default now.
/domain @Betterment/test_track_core
/platform @jmileham @aburgel

<< domain

<< platform - Burgel's gonna take this over while @joejansen's out

@aburgel >> domain
<< domain
cuz why not

tafn

nanda

Reopened with some modification in #126 since this PR off a fork.


Define a CMake style for the repo

For the 1.2% of this codebase that is cmake, there should be a coding standard that can be linted against in PR's. This ensures contributors are abiding by a common set of guidelines, just like the C++ code. One thing I noticed was that conditional statements were not indented.
Proposal
Use cmake-lint and cmake-format
Implementation
Once the tooling and styles are decided, a PR can be issued to do the following:

Add the necessary configuration files if defaults are not used
Determine how the linter/formatter can know which files need to be formatted/linted if automatic recursive detection is not supported
Add information to the README on the usage of the linter and formatter
Go through and fix all current lint/format issues in the codebase
Future: Add support to call the linter and/or formatter from cmake as part of CI to block non-compliant PR's

Thoughts?

It's probably a good idea, similar to how we have a clang-format file for linting the C++ files. In a broader sense that process needs additional documentation and CI checking as well. Might make sense to put those in a CONTRIBUTING.md file.
For CI we might be able to make a GitHub action that runs the linters and then does a git diff to ensure no lines were changed. If no lines were changed, then the files are ready for PR. If any line changed, then block the PR. Or perhaps there's a pre-baked one out there somewhere, I'd have to do some research.

Haven't forgotten about this. I do have one open issue on cmake-lint here: https://github.com/cmake-lint/cmake-lint/issues/17
But when we run cmake-format, it comes back pretty clean with mostly line length complaints so it should be pretty easy to get this completed and closed out.

Hey @ad3154 - I stumbled upon this thread and wanted to check in on your cmake-lint issue.
The cmake-lint script belongs to the cmakelang module:
From those docs, it looks like the format has to be yaml/json/python.
cmake-lint [-h]
           [--dump-config {yaml,json,python} | -o OUTFILE_PATH]
           [-c CONFIG_FILE]
           infilepath [infilepath ...]

The other module cmakelint where you filed your issue has different syntax:
cmakelint -h

Syntax: cmakelint.py [--version] [--config=file] [--filter=-x,+y] [--spaces=N]
                     [--quiet] [--linelength=digits]
        <file> [file] ...

If you were to run your config with cmakelint instead:
cmakelint --config=.cmakelintrc CMakeLists.txt
Total Errors: 0

But if you try to do:
cmake-lint --config=.cmakelintrc CMakeLists.txt
...
6, in try_get_configdict
    raise RuntimeError("Failed to parse {} as any of yaml, json, or python"
RuntimeError: Failed to parse .cmakelintrc as any of yaml, json, or python

If you want to run linting with the cmakelang instead:
cmake-lint --dump-config 'json' > config.json
cmake-lint --config=config.json CMakeLists.txt

Hope that helps!


local storage listener on event in Edge and IE

Thanks for your plugin!
I was doing some cross browser testing and the following code works in Chrome but not in Edge or IE.
Do you know if this should be supported in Edge and IE?  The getters and setters seem to be working fine in Edge and IE, just not the listener for changes:
        this.$ls.on('myKey', storedData => {
          //not fired in Edge/IE
          var myObj = JSON.parse(storedData)
          console.log('heard local storage event from )
        })

Thanks!

Hello.
Please read and test example open two tabs and click increment/decrement.
The value will be updated in both tabs

@RobinCK thank you - I was JSON.stringify storing a relatively large object with some special characters in local storage and then then JSON.parsing it in another tab.  I think my problem was one of the following:

IE/Edge didn't like some special characters in the JSON string which cause the event listener not to work
The string was too big for the IE/Edge event listener (it was 73kb).

I'm not sure which one it was, but I solved it by sending a subset of my object back and forth.  Thanks again.


Auto-Args to main in Azure function App are not generated at new bindings

@srikkar commented on Mon Mar 16 2020

Package Name:  Azure func core tools
Package Version: 2.7.2254
Operating System: Windows
Python Version:  3.6

Describe the bug
Have followed this URL: https://docs.microsoft.com/en-us/azure/python/tutorial-vs-code-serverless-python-07 to get the auto bindings generated. But, still after following the steps, I couldn’t get the auto generated arguments
To Reproduce
Steps to reproduce the behavior:

Follow the Steps as per URL above for Cosmos DB in binding with HTTPTrigger

Expected behavior
After Adding the new in binding to HTTPTrigger Azure function, expect SDK to auto-generate Args to access the data from Cosmos Graph/SQL inside function's main

Additional context
Any suggestions to get the data from grapgh DB using Gremlin API are most welcome

@msftbot[bot] commented on Tue Mar 17 2020
Thanks for the feedback! We are routing this to the appropriate team for follow-up. cc @ahmedelnably, @fabiocav.

Here's a quick snippet that might help that uses the Gremlin API from Python Functions:
in init.py
`import logging
import azure.functions as func
import ast
from ..shared_code import config
from gremlin_python.driver import client, serializer
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
if req.method == "POST":
    byte_body = req.get_body()
    logging.info(thi)
    dict_body = ast.literal_eval(byte_body.decode("UTF-8"))

    f_p = dict_body['fp']
    s_p = dict_body['sp']

    try:
        x = client.Client('wss://' + config.endpoint + ':443/', 'g',
                            username='/dbs/' + config.database + '/colls/' + config.collection,
                            password=config.password,
                            message_serializer=serializer.GraphSONSerializersV2d0()
                            )

        query = f"g.V('{f_p}').addE('knows').to(g.V('{s_p}'))"
        logging.info("\tRunning this Grem query:\n\t{0}\n".format(query))

        callback = x.submitAsync(query)
        if callback.result() is not None:
            logging.info("\tInserted this edge: \n\t{0}\n".format(callback.result().one()))
        else:
            logging.info("Something went wrong")
    except Exception as e:
        logging.info("there was an exception: {0}".format(e))
    return func.HttpResponse(f"Hello {f_p}")

`
my function.json looks like this:
{   "scriptFile": "__init__.py",   "bindings": [     {       "authLevel": "anonymous",       "type": "httpTrigger",       "direction": "in",       "name": "req",       "methods": [         "get",         "post"       ]     },     {       "type": "http",       "direction": "out",       "name": "$return"     }   ] }
and then take a look here: https://github.com/Azure-Samples/azure-cosmos-db-graph-python-getting-started/blob/master/connect.py
Hope this helps!

Routed to VS Code


Implement changelog parsing and manipulation

I'm going to create some test cases as well.

I've addressed the comments, I decided to use arrow library for parsing and formatting timestamps.
I'm also going to write a test for Specfile.add_changelog_entry() (or should I do it later in another PR?).


Getting error "cannot read property 'toLowerCase' of undefined" while using nock back

While using nock back on record mode and with the following options:
{
  recorder: {
    dont_print: true,
    output_objects: false,
    enable_reqheaders_recording: false,
    use_separator: false
  }
}

I'm getting the following error:
TypeError: Cannot read property 'toLowerCase' of undefined
    at /path/to/project/node_modules/nock/lib/scope.js:295:36
    at Array.forEach (native)
    at Function.define (/path/to/project/node_modules/nock/lib/scope.js:291:12)
    at load (/path/to/project/node_modules/nock/lib/back.js:231:19)
    at Object.start (/path/to/project/node_modules/nock/lib/back.js:155:19)
    at Function.Back (/path/to/project/node_modules/nock/lib/back.js:63:23)
    [...]

It only occurs when replaying a previous recorded nock. It runs fine when the request is made to the real server.

Could you please provide a failing test? I'm having trouble reproducing this.

Hi @vrinek!
Here's an example of it failing:
'use strict';

const nock = require('nock');
const path = require('path');
const request = require('request');

const url = 'https://google.com';
const nockBackOptions = {
  recorder: {
    dont_print: true,
    output_objects: false,
    enable_reqheaders_recording: false,
    use_separator: false
  }
};

nock(url)
  .persist()
  .filteringPath(/.*/, '');

['GET', 'POST', 'PUT', 'HEAD', 'DELETE', 'PATCH'].forEach(verb => {
  nock(url).intercept('/', verb);
});

nock.back.fixtures = path.join(__dirname, 'fixtures');
nock.back.setMode('record');

nock.back('test.json', nockBackOptions, nockDone => {
  request(url, (err, response, responseBody) => {
    if (err !== null) {
      console.error('ERROR', err.message);
      return;
    }

    nockDone();

    console.log('OK');
  });
});

Running this script for the first time, work fine and the fixture is saved on the fixtures folder. Running it a second time (with the fixtures file in place), produces the error described above.
If you need any help, please ping me.

Ah, yes. I see the problem. Nock is storing the records as code (instead of objects) but is trying to load them as objects. I'm afraid that the output_objects option is broken as it's storing code in json and then trying to load it as objects 😞

I'm getting the same issue.

@vrinek what's the expected behavior when nock.back receives optionoutput_objects: false? It never writes the result to disk?


Fix Webpack import.meta error

This PR:

Fixes this error I kept getting with Webpack by changing the function to use just the import.meta.url rather than import.meta

Critical dependency: Accessing import.meta directly is unsupported (only property access is supported)

Hey!
I'm curious why you compile a server library with webpack? If you really can't avoid that, would making webpack resolve mongoose-zod to dist/index.cjs make the compilation possible (since the CJS version of the lib is not using import.meta)?

Hey! I'm curious why you compile a server library with webpack? If you really can't avoid that, would making webpack resolve mongoose-zod to dist/index.cjs make the compilation possible (since the CJS version of the lib is not using import.meta)?

I'll look into that. I was attempting to use this library within my NextJS project and by default this is the error that you get without configuring anything. I believe NextJS compiles with CommonJS.


Add figure export(maybe ploty...)

rebuild the query function:

separate to return QuerySet(or DataFrame?) and print to csv(if I output to pandas, this isn't a problem right?)

redirect to search/result page and show the plotly graph


protobuf: switching to 3.4

I had to patch protobuf because it seems it has some bug in install.cmake (refereeing non existing files).

@thierryba,
Thanks for your contribution.
To ensure that the project team has proper rights to use your work, please complete the Contribution License Agreement at https://cla.microsoft.com.
It will cover your contributions to all Microsoft-managed open source projects.
Thanks,
Microsoft Pull Request Bot

@thierryba, thanks for signing the contribution license agreement. We will now validate the agreement and then the pull request.
Thanks, Microsoft Pull Request Bot

Thanks!


Persist Scripts working the other way around then described in the documentation

Due to a mistake in BLTPersistScripts.lua variable in global has to be set to false or nil in order for the script to run and set to anything else to stop the script

turns out i can't read :)


Allow for dumping service protocol information to a file on startup

Currently all tools wishing to connect to the service protocol need to scrape the URL and authentication codes from stdout. However, this isn't always possible or convenient (@DanTup mentioned some VSCode use cases that cannot rely on listening to stdout to get the service protocol information). The VM should provide a way to dump service protocol information to a file in a well known format that can be consumed by tooling (e.g., dart --observe --dump-service-info=service.json foo.dart).
Example format:
{
  "version": 1,
  "url": "http://<IP_ADDRESS>",
  "port": 8080,
  "authentication_code": "6iSIXM0fOBk=",
}

cc/ @zanderso would this functionality allow for us to enable authentication codes on Fuchsia?

@DanTup mentioned some VSCode use cases that cannot rely on listening to stdout to get the service protocol information

To expand on this - our debug adapter currently owns the process (and streams) because we need to scrape the Observatory URI to connect the debugger. However we have no good way to let the user to then send input to stdin (so if they want to debug an interactive CLI app, they can't).
If we could get the info without needing to own stdout, then we can just spawn the process in a terminal and let them have full access to the streams themselves. Similar to the existing --pid-file option, for ex. dart --debugger-file=/tmp/somefile.json script.dart. Then we could just watch that file and read the debugger info from there (it could be deleted when the VM quits).

Regarding Fuchsia, this would probably not reduce the amount of plumbing needed to get the auth codes where they need to go since the port is already being read out of a file.

@bkonyi this looks great! In the sample at the top you included a version number, though that doesn't seem to be in the written file - do you think we should add it?
It would also be nice to suppress the "Observatory listening" text (if easy) when this flag is supplied before we start using it (so there's no danger of anything using the flag also depending on the output).
When testing, I also saw this:
vm-service: isolate(401215214933043) 'main' has no debugger attached and is paused at start.  Connect to Observatory at http://<IP_ADDRESS>:8181/HCf6LrZjZIo=/ to debug.
I don't know what triggers this - is it if no debugger attaches within a certain period? (If so, what is that period? it seems like it could be racy if the IDE doesn't connect fast enough - though I've never noticed it show up in the console before).

@bkonyi I presume the URI here is still the Observatory web app, and for the VM service we should change the protocol to ws://, append the token and then /ws? If so, is there value in adding a vmServiceUri field that is the full websocket URI to simplify clients (and make it easier for the VM to change this in future if desired)?

@bkonyi I presume the URI here is still the Observatory web app, and for the VM service we should change the protocol to ws://, append the token and then /ws? If so, is there value in adding a vmServiceUri field that is the full websocket URI to simplify clients (and make it easier for the VM to change this in future if desired)?

That's correct. I don't think we output the websocket URI since it's rather easy to build from the Observatory URI. If this is something you think would be useful, would you mind filing a separate issue to track it?

Sure, will do. It's not difficult to build, but it'd be nice to have done in one place (I also wasn't sure if the Observatory web app went away and the VM only hosted a WS, whether that would change things here - whereas a specific WS URI wouldn't need to change). Thanks!


feat: username and password support for SSH connection type

Summary
Adds support for username and password to the 9.4 Remote (SSH) connection type.
Todos:

[ ] Use authHandler to handle authentication requests. See ssh2 docs for authHandler support. See prototype by @chunky here. We need to give some thought on how we define what supported auth methods should be attempted. I think it would be great to let the server tell us what the supported methods are, and then react to them. Kerberos methods are going to be a problem because the ssh2 library cant support those auth methods currently. For each supported method, the auth should be attempted, moving onto the next one during a failure to avoid issues like this.
[ ] Username/Password Support. Prompt for password "Just in time" on session establishment. Store password in Secrets API so that the user is not prompted for a password on each session establishment after initial profile creation. Use masked input field like we do for IOM on the text input prompt.
[ ] Maintain support for agent based authentication for users that want passwordless or agent based setup. Users should still be able to specify an identify file for keys that have a passphrase.
[ ] The setTimeout logic will need to be adjusted so that we dont errantly timeout while a user is typing in a password or passphrase

Testing
How did you test this change?

Pushed a super rough draft of auth handler logic this morning. Very rough around the edges but wanted to get thoughts down in some (semi) organized manner. Will further test and refine as time allows.

First up, thank you for working on this. It'll be a big improvement for us.
A few random thoughts:

You can find a conversation I had with a maintainer of ssh2 about authhandlers here: https://github.com/mscdex/ssh2/issues/1400 . Things that might be relevant from your comments and code so far:

The authhandler is only called with a list of methods that would work for that server
"agent" and "private key" are different, in the authhandler callback.
Note this from the ssh2 doc you link: "Valid method names are: ''none', 'password', 'publickey', 'agent', 'keyboard-interactive', 'hostbased'"

I feel pretty strongly that attempting all non-interactive options on the table first, and only then trying the interactive ones is the right choice. If agent would be accepted, and I have a running agent, then obviously that should be tried before asking users for a password, for example.
Don't forget keyboard-interactive, as separate from password. Some server configurations ask for "keyboard-interactive" authentication and ask you for a password in a message, rather than asking for "password" authentication. [set sshd config "ChallengeResponseAuthentication yes" to see this]
Affording use of an unshielded private key as a separate config item, and proffering it if "private key" method is available, would really help
I have no strong feelings about password storage in secrets. The main concern is, users have to rotate passwords regularly; what happens if the password in storage is no longer the same one that works for the server? Honestly for the first pass, asking for it each time doesn't seem unreasonable.

users can set up public key auth if they don't like it

From your top message: "Users should still be able to specify an identify file for keys that have a passphrase." ; do you mean "for keys that don't have a passphrase"? For keys that do, you would need to develop the ability to de-shield them after loading them from disk, to pass to the private key method. Probably safer to just expect users to set up ssh-agent, if that's where they're at. [although it's true that that is unfortunate on windows]

First up, thank you for working on this. It'll be a big improvement for us.
A few random thoughts:

You can find a conversation I had with a maintainer of ssh2 about authhandlers here: Request: Delay client password entry until password actually needed mscdex/ssh2#1400 . Things that might be relevant from your comments and code so far:

The authhandler is only called with a list of methods that would work for that server
"agent" and "private key" are different, in the authhandler callback.
Note this from the ssh2 doc you link: "Valid method names are: ''none', 'password', 'publickey', 'agent', 'keyboard-interactive', 'hostbased'"

I feel pretty strongly that attempting all non-interactive options on the table first, and only then trying the interactive ones is the right choice. If agent would be accepted, and I have a running agent, then obviously that should be tried before asking users for a password, for example.

Don't forget keyboard-interactive, as separate from password. Some server configurations ask for "keyboard-interactive" authentication and ask you for a password in a message, rather than asking for "password" authentication. [set sshd config "ChallengeResponseAuthentication yes" to see this]

Affording use of an unshielded private key as a separate config item, and proffering it if "private key" method is available, would really help

I have no strong feelings about password storage in secrets. The main concern is, users have to rotate passwords regularly; what happens if the password in storage is no longer the same one that works for the server? Honestly for the first pass, asking for it each time doesn't seem unreasonable.

users can set up public key auth if they don't like it

From your top message: "Users should still be able to specify an identify file for keys that have a passphrase." ; do you mean "for keys that don't have a passphrase"? For keys that do, you would need to develop the ability to de-shield them after loading them from disk, to pass to the private key method. Probably safer to just expect users to set up ssh-agent, if that's where they're at. [although it's true that that is unfortunate on windows]

All good feedback. I generally agree with thoughts above. I've put comments around changes that I think support these items. On the issue of whether or not to store the passwords in secrets, we have some precedent for doing this in other connection types. I do agree though that generally for ssh interaction with other solutions, anytime passwordless or passphraseless interactions are intended, that I've seen docs push users towards agent or public key.

I would like to see the authentication method gssapi-with-mic added.  This will be beneficial to those in corporate environments where Kerberos Tickets enable you to access other resources such as file systems, databases, APIs, etc ... while eliminating the need for the person to enter their credentials.

If you can figure it out, yes, the kerberos SSO stuff is great where available. That was another thing I couldn't figure out. It works on some of our servers. Another of those "if it works it's magical and absolutely preferred".
I think the distinction between "agent" and "public key" is a manifestation from the ssh2 library, not the server. In practice it might mean taking two bites at the key-based apple, which is explicitly afforded by the Auth handler mechanism

I think the distinction between "agent" and "public key" is a manifestation from the ssh2 library, not the server. In practice it might mean taking two bites at the key-based apple, which is explicitly afforded by the Auth handler mechanism

Yea that's what the current changeset has, inside of "publickey" we'd look for whether or not the user has set their keyfile on the connection profile, if so we'd use that file, otherwise we'd defer to agent.

I would like to see the authentication method gssapi-with-mic added. This will be beneficial to those in corporate environments where Kerberos Tickets enable you to access other resources such as file systems, databases, APIs, etc ... while eliminating the need for the person to enter their credentials.

One challenge is that the ssh2 library doesnt support GSSAPI methods yet:
https://github.com/mscdex/ssh2/issues/333

@smorrisj I missed this comment from earlier: "I'm seeing the auth method for agent and public key coming back from the server simply as "publickey". I'm wondering if the library is adding in agent based on set config options?"
From the server's perspective, these are the same thing; it just wants to do a key-based handshake. But on the client, they're different beasts. With ssh2's 'agent' they go get it from a daemon running on a socket, while 'publickey' is just a thing where you hand ssh2 the ready-to-use bytes.

1.Create a SSH connection profile and specify an invalid  privateKeyFilePath, run some code, it will prompt error message as expected.
2.Update the profile to correct the file path, run code, it has the same error as before.
The only way to restart VSC to use the updated profile.

1.Create a SSH connection profile, specify privateKeyFilePath field in connection profile (with a passphrase).
2.Run some code, it will ask the user to enter the passphrase for the private key
3.Cancel the dialog or type an invalid password in such scenario
Result: It keeps showing 'Connecting to SAS session' until it gets error message 'Could not connect to the SAS server.'
Suggestion: If the user cancel or type with an invalid password, it can stop the process right now without having to wait for some time.

It cannot create the profile successfully if leave the 'Enter the local private key file path' as blank. For others fields have been filled correctly.

It cannot create the profile successfully if leave the 'Enter the local private key file path' as blank. For others fields have been filled correctly.

Fixed in https://github.com/sassoftware/vscode-sas-extension/pull/1126/commits/d3c9cd20a7ed32da89318826b0ede0239c067780

It cannot create the profile successfully if leave the 'Enter the local private key file path' as blank. For others fields have been filled correctly.

Fixed in https://github.com/sassoftware/vscode-sas-extension/pull/1126/commits/d3c9cd20a7ed32da89318826b0ede0239c067780

1.Create a SSH connection profile and specify an invalid privateKeyFilePath, run some code, it will prompt error message as expected. 2.Update the profile to correct the file path, run code, it has the same error as before. The only way to restart VSC to use the updated profile.

Fixed in 6d28a43

1.Create a SSH connection profile, specify privateKeyFilePath field in connection profile (with a passphrase). 2.Run some code, it will ask the user to enter the passphrase for the private key 3.Cancel the dialog or type an invalid password in such scenario Result: It keeps showing 'Connecting to SAS session' until it gets error message 'Could not connect to the SAS server.' Suggestion: If the user cancel or type with an invalid password, it can stop the process right now without having to wait for some time.

In this setup, we're trying as much as possible to let the SSH client and server negotiate auth based on the server configuration. If you're seeing that message, it means that the SSH client received a disconnect from the server side to close the connection before auth could finish. This can happen in a number of auth setups, for example, if max auth tries are exceeded etc. I think to support the largest number of customer configured auth setups, we should keep this the way it is.

Private key specified in privateKeyFilePath field in connection profile (with a passphrase)
1.Remove the public key information from ~/.ssh/authorized_keys file for the ssh server.
2.Run some code
Results:

It keeps asking for passphrase (3 times at least)
It keeps showing 'Connecting to SAS session...' without further response

There are two SSH connection profiles and both do not work properly.  One was configured as an invalid private key file path, the other one was not reachable with error like 'getaddrinfo ENOTFOUND...',  switch between the two profiles, run some code, it did not use the specified one.

There are two SSH connection profiles and both do not work properly. One was configured as an invalid private key file path, the other one was not reachable with error like 'getaddrinfo ENOTFOUND...', switch between the two profiles, run some code, it did not use the specified one.

Fixed in https://github.com/sassoftware/vscode-sas-extension/pull/1126/commits/a0b7f88e5137f05462e2c7e7290d69bf8cd4d0aa

Private key specified in privateKeyFilePath field in connection profile (with a passphrase) 1.Remove the public key information from ~/.ssh/authorized_keys file for the ssh server. 2.Run some code Results:

It keeps asking for passphrase (3 times at least)
It keeps showing 'Connecting to SAS session...' without further response

Refactored error handling to fix issues like this in https://github.com/sassoftware/vscode-sas-extension/pull/1126/commits/a0b7f88e5137f05462e2c7e7290d69bf8cd4d0aa

Input an invalid password or cancel password typing, it will show message 'Encrypted private OpenSSH key detected, but no passphrase given'.
Run the code again it will show message 'Could not connect to the SAS server.' and passphrase input dialog will be opened at the same time.
Now input the correct passphrase, but, there is no corresponding result. Run the code again and type the passphrase, it will work as normal.

proc print data=sashelp.cars(obs=1);run;

Private key specified in privateKeyFilePath field in connection profile (with a passphrase)
1.Remove the public key information from ~/.ssh/authorized_keys file for the ssh server.
2.Run some code
Result:
It kept asking for passphrase if the user typed the correct password until the user got message 'Too many authentication failures'.

Private key specified in privateKeyFilePath field in connection profile (with a passphrase) 1.Remove the public key information from ~/.ssh/authorized_keys file for the ssh server. 2.Run some code Result: It kept asking for passphrase if the user typed the correct password until the user got message 'Too many authentication failures'.

There was a lifecycle issue where the ssh socket was dangling open after the run errored out. Fixed in https://github.com/sassoftware/vscode-sas-extension/commit/6e464402422436e98f8ead38581cfa991f6cbd72

Input an invalid password or cancel password typing, it will show message 'Encrypted private OpenSSH key detected, but no passphrase given'.
Run the code again it will show message 'Could not connect to the SAS server.' and passphrase input dialog will be opened at the same time.
Now input the correct passphrase, but, there is no corresponding result. Run the code again and type the passphrase, it will work as normal.

proc print data=sashelp.cars(obs=1);run;

Fixed in https://github.com/sassoftware/vscode-sas-extension/commit/6e464402422436e98f8ead38581cfa991f6cbd72. We now properly close the ssh connection when the user cancels out of the passphrase dialog. Entering blank on password will be treated as an invalid password attempt. Retries allowed are governed by the ssh server settings. So for that it's possible that the user will continue to be prompted until the server responds with "Too many authentication failures", where it will then close the connection.

There is no result output if specify a long workdir and a specific pagesize in sasOptions.
proc print data=sashelp.cars(obs=1);run;

There is no result output if specify a long workdir and a specific pagesize in sasOptions.
proc print data=sashelp.cars(obs=1);run;

The work dir code was setting up the value over multiple lines. In this approach, for long directory values we were getting log output intermixed in between the start element, end element, and directory value. Fixed in https://github.com/sassoftware/vscode-sas-extension/pull/1126/commits/2195eb967441272ae57c83a553f52dcf15a77c50

There is no result output if specify a long workdir and a specific pagesize in sasOptions.
proc print data=sashelp.cars(obs=1);run;

The work dir code was setting up the value over multiple lines. In this approach, for long directory values we were getting log output intermixed in between the start element, end element, and directory value. Fixed in 2195eb9

@smorrisj  I checked the issue in the latest PR build. I can still reproduce it if specify the page size as new value '23'.

Thanks @Zhirong2022. The log parsing for detecting work dir still was not robust enough. Refactored the code that sets work dir to use a more structured logging output. See fix in https://github.com/sassoftware/vscode-sas-extension/pull/1126/commits/cde43f065bd1ddeda4281fee5577014d5439222e.

All raised issues have been fixed.
Error validation works as following:
Feature: Public key specified in privateKeyFilePath field in connection profile (with a passphrase)
1.Type Enter and close the passphrase dialog
Error message: Failed to generate information to decrypt
2.Type ESC to cancel the passphrase typing
Error message: Encrypted private OpenSSH key detected, but no passphrase given key
3.Input invalid passphrase
Error message: OpenSSH key integrity check failed -- bad passphrase?
4.Remove the public key from the SSH sever with passphrase and type the correct passphrase several times
Error message: Too many authentication failures
5.Leave the passphrase dialog there and waiting
Error: Could not connect to the SAS server.
Feature: Traditional username/password
1.Type Enter to close the password typing or Input invalid password
It attempts to ask the user to type the password for several times
Error message: Too many authentication failures
2.Type ESC to cancel the passphrase typing
Error message: All configured authentication methods failed
3.Leave the password dialog there and waiting
Error: Could not connect to the SAS server.


fix: set for radio value was broken

Description
fixes a bug with radio values
Related Issue
I didn't create an issue :)
Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] I have signed the Adobe Open Source CLA.
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


Reclaim my old PyPi account

Hi,
https://pypi.org/user/lalo/ is me, but as you can see the account hasn't been used in a very long time, and the email associated with it has been lost for more than 10 years.
The packages are all dead… so strictly speaking I don't need the old account, but for the sake of not polluting the index I feel recovering it is the right thing to do.
I'm not sure how to prove I'm the same person, but there are people active in the community that have been in contact with me.

Hi @lalomartins, hopefully we can help you recover the account.
Looks like the email address is also the same one used as the Author-Email for all the packages, which is usually one way we can verify ownership.
Another way is if you can prove ownership over any of the domains listed as these project's homepages or linked to in their README. Looks like some of them are still up, do you have ownership over any of them?

@lalomartins Could you also email me at<EMAIL_ADDRESS>from the email address you'd like to use for the account instead?

Sadly no. PicoGUI wasn't my project, I just maintained the Python client lib. And the other two are on GNU Savannah which obviously I don't own. At best I can as I said point to a few people active in the community that would be willing to say “yes lalo@oldemail is the same person as lalo@newemail”
(I'll email you in a moment)


Unify base and base-apply templates

Is your feature request related to a problem? Please describe.
For an adoption that requires only the apply site of hypha there are still many interfaces like the login screen and open call listings that use the public site template (base.html). I know there are others that do as well but these are the ones to come to mind.
These templates also load different css bundles and its a little cumbersome to pick out which ones use them and don't while themeing a new deployment.
I know that there are plans to do away with the public site completely but until then some fixes to the current code to address this issue would help.
Is your feature request related to an existing functionality? Please describe.
As above.
Describe the solution you'd like

to provide a setting USE_UNIFIED_BASE_TEMPLATE = True | False that allows adopters to decide to do this.
in base.html check if the setting above is True and {% extends "base-apply.html" %} if not load the current contents.
in base-apply.html put in conditions for authenticated user to load navs and user buttons.

Describe alternatives you've considered
currently modifying both templates independently + their included style bundles.
Priority

Medium (slowing you down)

Affected roles

Developers

Ideal deadline
End 2021

We will soon scrap the public part of Hypha so closing this.


Some Fanbox Files cannot be downloaded due to OSError: [WinError 225]

Prerequisites

[x] Did you read FAQ section?
[x] Did you test with the latest releases or commit ?

Description
When downloading from supported artist, error flagged out and appeared to be OSError: [WinError 225], which it says "the file contains virus(I'm not a native English user so in the system it appeared in my mother language), and the program stopped forcing to exit.
Steps to Reproduce

[Re-Open Pixivutil]
[Try download the specific Pixiv Fanbox artwork failed previously]
[Try download the whole artist's works which contained the failed-to-be-downloaded artwork]

Expected behavior: [OSError: [WinError 225] occur and program ask to exit]
Actual behavior: [OSError: [WinError 225] occur and program ask to exit]
Versions
v20201031
You can get this information from executing PixivUtil2.py --help.
 Do you have the log file? most likely what it can be done is just skip that specific post.

I'll clean the files and try making a "specific" log file for the problematic artwork later when I return to my computer. As I can pin down the exact artwork which have this problem.

I do created a specific file log. However I do wonder is there any way to disable the anti virus...
log as follow

2020-11-10 16:28:22,962 - PixivUtil20201031 - DEBUG - Getting post detail from https://api.fanbox.cc/post.info?postId=571194
2020-11-10 16:28:23,303 - PixivUtil20201031 - DEBUG - {"body":{"id":"571194","title":"old old works","coverImageUrl":null,"feeRequired":500,"publishedDatetime":"2019-09-24T04:32:52+09:00","updatedDatetime":"2019-09-24T04:32:52+09:00","type":"file","body":{"text":"","files":[{"id":"BcwQEvrOFzsINGEGBm6JIWnz","name":"old old works1","extension":"zip","size":141269699,"url":"https://downloads.fanbox.cc/files/post/571194/BcwQEvrOFzsINGEGBm6JIWnz.zip"},{"id":"BGaRVHd458GoTypuWvlmJT6q","name":"old old works2","extension":"zip","size":125047341,"url":"https://downloads.fanbox.cc/files/post/571194/BGaRVHd458GoTypuWvlmJT6q.zip"},{"id":"YovgDUAar1SstVdwPG0Fv1IE","name":"old old works3","extension":"zip","size":158663869,"url":"https://downloads.fanbox.cc/files/post/571194/YovgDUAar1SstVdwPG0Fv1IE.zip"},{"id":"TKjjxTFlIwFe1t52Tsr0il4W","name":"old old works4","extension":"zip","size":103325394,"url":"https://downloads.fanbox.cc/files/post/571194/TKjjxTFlIwFe1t52Tsr0il4W.zip"},{"id":"ghbCQ39PnnNwALTKmUBDIiot","name":"old old works5","extension":"zip","size":157907512,"url":"https://downloads.fanbox.cc/files/post/571194/ghbCQ39PnnNwALTKmUBDIiot.zip"},{"id":"M49AElLzXpd81cIlejiDvMVY","name":"old old works6","extension":"zip","size":73757459,"url":"https://downloads.fanbox.cc/files/post/571194/M49AElLzXpd81cIlejiDvMVY.zip"},{"id":"FcSvFGhf97In0R1cTOZtYMyy","name":"old old works7","extension":"zip","size":155892480,"url":"https://downloads.fanbox.cc/files/post/571194/FcSvFGhf97In0R1cTOZtYMyy.zip"},{"id":"BrauhHLcH1yjccWQ8Reh31i0","name":"old old works8","extension":"zip","size":100421336,"url":"https://downloads.fanbox.cc/files/post/571194/BrauhHLcH1yjccWQ8Reh31i0.zip"},{"id":"BoliYaP5TefAQbxlSznD3giH","name":"old old works9","extension":"zip","size":99575049,"url":"https://downloads.fanbox.cc/files/post/571194/BoliYaP5TefAQbxlSznD3giH.zip"},{"id":"cJI5DeUR5jtQDfZY6SgYFvsz","name":"old old works10","extension":"zip","size":90706559,"url":"https://downloads.fanbox.cc/files/post/571194/cJI5DeUR5jtQDfZY6SgYFvsz.zip"},{"id":"QVQFPPmwxfwkMdrzi0lttW8e","name":"old old works11","extension":"zip","size":111319995,"url":"https://downloads.fanbox.cc/files/post/571194/QVQFPPmwxfwkMdrzi0lttW8e.zip"},{"id":"dqcfEy22TyFGwKNvN5LdgO76","name":"old old works12","extension":"zip","size":37268909,"url":"https://downloads.fanbox.cc/files/post/571194/dqcfEy22TyFGwKNvN5LdgO76.zip"}]},"tags":[],"excerpt":"","isLiked":false,"likeCount":30,"commentCount":1,"restrictedFor":null,"user":{"userId":"17151277","name":"mamimi","iconUrl":"https://pixiv.pximg.net/c/160x160_90_a2_g5/fanbox/public/images/user/17151277/icon/gef1I0qIQH7JerQTPnf8tWv3.jpeg"},"creatorId":"mamimi","hasAdultContent":true,"status":"published","commentList":{"items":[{"id":"338658","parentCommentId":"0","rootCommentId":"0","body":"\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3002\n\u898b\u305f\u304b\u3063\u305f\u7d75\u306a\u3069\u3082\u3042\u3063\u305f\u306e\u3067\n\u3068\u3066\u3082\u5b09\u3057\u3044\u3067\u3059\u3002","createdDatetime":"2019-09-24T07:49:55+09:00","likeCount":3,"isLiked":false,"isOwn":false,"user":{"userId":"20989700","name":"\u7530\u4e2d","iconUrl":null},"replies":[]}],"nextUrl":null},"nextPost":{"id":"578831","title":"Musume (complete)","publishedDatetime":"2019-09-29 05:52:16"},"prevPost":{"id":"569699","title":"Mamako (complete)","publishedDatetime":"2019-09-23 09:11:49"},"imageForShare":"https://pixiv.pximg.net/c/1200x630_90_a2_g5/fanbox/public/images/creator/17151277/cover/XHTOv3kP3OkzgJC0g0UgSxCP.jpeg"}}
2020-11-10 16:28:23,334 - PixivUtil20201031 - INFO - Getting artist information from https://api.fanbox.cc/creator.get?userId=17151277
2020-11-10 16:28:23,579 - PixivUtil20201031 - INFO - Member Url: https://www.pixiv.net/ajax/user/17151277/profile/all
2020-11-10 16:28:23,930 - PixivUtil20201031 - DEBUG - b'{"error":false,"message":"","body":{"illusts":{"85527682":null,"85466516":null,"85385177":null,"85264952":null,"85199422":null,"85159966":null,"85076867":null,"85002148":null,"84912790":null,"84844888":null,"84777046":null,"84726147":null,"84663050":null,"84545388":null,"84454641":null,"84329568":null,"84243425":null,"84139104":null,"84083096":null,"83944454":null,"83823667":null,"83798219":null,"83704874":null,"83564635":null,"83453380":null,"83375793":null,"83366013":null,"83223911":null,"83129081":null,"83017503":null,"82921045":null,"82834668":null,"82712030":null,"82603417":null,"82523500":null,"82443425":null,"82371711":null,"82266789":null,"82160395":null,"82045679":null,"81958659":null,"81719867":null,"81584663":null,"81473746":null,"81352374":null,"81223793":null,"81083320":null,"80959252":null,"80817395":null,"80677531":null,"80545499":null,"80486755":null,"80320113":null,"80247115":null,"80085910":null,"79961906":null,"79851304":null,"79815178":null,"79567877":null,"79341581":null,"79223865":null,"79210389":null,"79061835":null,"78983085":null,"78915162":null,"78824494":null,"78800940":null,"78700193":null,"78412771":null,"78358271":null,"78261988":null,"78244202":null,"78136841":null,"78083682":null,"77958640":null,"77935533":null,"77856511":null,"77787475":null,"77711449":null,"77615028":null,"77607158":null,"77443556":null,"77366482":null,"77211222":null,"77060309":null,"76995624":null,"76790864":null,"76660763":null,"76484269":null,"76218100":null,"76039479":null,"75851133":null,"75715011":null,"75695305":null,"75501689":null,"75264155":null,"75240567":null,"75227883":null,"75193823":null,"75122805":null,"75105534":null,"75051977":null,"75018908":null,"75000928":null,"74908876":null,"74890786":null,"74806335":null,"74786945":null,"74638660":null,"74391862":null,"74284290":null,"74211974":null,"74083149":null,"74059994":null,"73866655":null,"73845866":null,"73726895":null,"73604301":null,"73595090":null,"73477710":null,"73342224":null,"73231063":null,"73188717":null},"manga":[],"novels":[],"mangaSeries":[],"novelSeries":[],"pickup":[{"type":"fanbox","deletable":false,"draggable":true,"userName":"mamimi","userImageUrl":"https:\/\/i.pximg.net\/user-profile\/img\/2020\/03\/23\/08\/16\/46\/18165424_e84453ea3aa8d870b4b56807934f32ea_170.png","contentUrl":"https:\/\/www.pixiv.net\/fanbox\/creator\/17151277?utm_campaign=www_profile\u0026utm_medium=site_flow\u0026utm_source=pixiv","description":"Thank you for your support. I will always do my best. Your sponsorship is used for better quality drawings and stable production environments. (It will operate in the same way as patreon)","imageUrl":"https:\/\/pixiv.pximg.net\/c\/520x280_90_a2_g5\/fanbox\/public\/images\/creator\/17151277\/cover\/XHTOv3kP3OkzgJC0g0UgSxCP.jpeg","imageUrlMobile":"https:\/\/pixiv.pximg.net\/c\/520x280_90_a2_g5\/fanbox\/public\/images\/creator\/17151277\/cover\/XHTOv3kP3OkzgJC0g0UgSxCP.jpeg","hasAdultContent":true},{"id":"83129081","title":"Dildo","illustType":0,"xRestrict":1,"restrict":0,"sl":6,"url":"https:\/\/i.pximg.net\/c\/288x288_80_a2\/custom-thumb\/img\/2020\/07\/21\/23\/37\/50\/83129081_p0_custom1200.jpg","description":"\u003Ca href=\u0022https:\/\/mamimi.fanbox.cc\/posts\/1238477\u0022 target=\u0022_blank\u0022\u003Ehttps:\/\/mamimi.fanbox.cc\/posts\/1238477\u003C\/a\u003E","tags":["R-18","\u53e4\u898b\u3055\u3093\u306f\u3001\u30b3\u30df\u30e5\u75c7\u3067\u3059\u3002","\u53e4\u898b\u785d\u5b50","\u30c7\u30a3\u30eb\u30c9","\u53e4\u898b\u3055\u309310000users\u5165\u308a","\u5927\u4eba\u306e\u304a\u3082\u3061\u3083"],"userId":"17151277","userName":"mamimi","width":4000,"height":6128,"pageCount":2,"isBookmarkable":true,"bookmarkData":null,"alt":"#\u53e4\u898b\u3055\u3093\u306f\u3001\u30b3\u30df\u30e5\u75c7\u3067\u3059\u3002 Dildo - mamimi\u7684\u63d2\u756b","isAdContainer":false,"titleCaptionTranslation":{"workTitle":"","workCaption":""},"createDate":"2020-07-21T23:37:50+09:00","updateDate":"2020-07-21T23:37:50+09:00","isUnlisted":false,"urls":{"250x250":"https:\/\/i.pximg.net\/c\/250x250_80_a2\/custom-thumb\/img\/2020\/07\/21\/23\/37\/50\/83129081_p0_custom1200.jpg","360x360":"https:\/\/i.pximg.net\/c\/360x360_70\/custom-thumb\/img\/2020\/07\/21\/23\/37\/50\/83129081_p0_custom1200.jpg","540x540":"https:\/\/i.pximg.net\/c\/540x540_70\/custom-thumb\/img\/2020\/07\/21\/23\/37\/50\/83129081_p0_custom1200.jpg"},"type":"illust","deletable":true,"draggable":true,"contentUrl":"https:\/\/www.pixiv.net\/artworks\/83129081"},{"id":"82921045","title":"Komi-san\u0027s skirt","illustType":0,"xRestrict":1,"restrict":0,"sl":6,"url":"https:\/\/i.pximg.net\/c\/288x288_80_a2\/custom-thumb\/img\/2020\/07\/12\/13\/00\/04\/82921045_p0_custom1200.jpg","description":"Waiting for Tadano\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Ca href=\u0022https:\/\/mamimi.fanbox.cc\/posts\/1211237\u0022 target=\u0022_blank\u0022\u003Ehttps:\/\/mamimi.fanbox.cc\/posts\/1211237\u003C\/a\u003E\u003Cbr \/\u003E\u003Ca href=\u0022\/jump.php?https%3A%2F%2Fwww.patreon.com%2Fposts%2F39217513\u0022 target=\u0022_blank\u0022\u003Ehttps:\/\/www.patreon.com\/posts\/39217513\u003C\/a\u003E","tags":["R-18","\u53e4\u898b\u3055\u3093\u306f\u3001\u30b3\u30df\u30e5\u75c7\u3067\u3059\u3002","\u53e4\u898b\u785d\u5b50","\u8336\u5dfe\u7e1b\u308a","\u63c9\u307f\u3057\u3060\u304d\u305f\u3044\u4e73","\u53e4\u898b\u3055\u309310000users\u5165\u308a"],"userId":"17151277","userName":"mamimi","width":3400,"height":7300,"pageCount":2,"isBookmarkable":true,"bookmarkData":null,"alt":"#\u53e4\u898b\u3055\u3093\u306f\u3001\u30b3\u30df\u30e5\u75c7\u3067\u3059\u3002 Komi-san\u0027s skirt - mamimi\u7684\u63d2\u756b","isAdContainer":false,"titleCaptionTranslation":{"workTitle":"","workCaption":""},"createDate":"2020-07-12T13:00:04+09:00","updateDate":"2020-07-12T13:00:04+09:00","isUnlisted":false,"urls":{"250x250":"https:\/\/i.pximg.net\/c\/250x250_80_a2\/custom-thumb\/img\/2020\/07\/12\/13\/00\/04\/82921045_p0_custom1200.jpg","360x360":"https:\/\/i.pximg.net\/c\/360x360_70\/custom-thumb\/img\/2020\/07\/12\/13\/00\/04\/82921045_p0_custom1200.jpg","540x540":"https:\/\/i.pximg.net\/c\/540x540_70\/custom-thumb\/img\/2020\/07\/12\/13\/00\/04\/82921045_p0_custom1200.jpg"},"type":"illust","deletable":true,"draggable":true,"contentUrl":"https:\/\/www.pixiv.net\/artworks\/82921045"}],"bookmarkCount":{"public":{"illust":1,"novel":0},"private":{"illust":0,"novel":0}},"externalSiteWorksStatus":{"booth":false,"sketch":false,"vroidHub":false},"request":{"showRequestTab":false,"postWorks":{"artworks":[],"novels":[]}}}}'
2020-11-10 16:28:23,980 - PixivUtil20201031 - DEBUG - using webrpc: https://www.pixiv.net/rpc/get_work.php?id=85527682
2020-11-10 16:28:24,282 - PixivUtil20201031 - DEBUG - Getting post detail from https://api.fanbox.cc/post.info?postId=571194
2020-11-10 16:28:24,541 - PixivUtil20201031 - DEBUG - {"body":{"id":"571194","title":"old old works","coverImageUrl":null,"feeRequired":500,"publishedDatetime":"2019-09-24T04:32:52+09:00","updatedDatetime":"2019-09-24T04:32:52+09:00","type":"file","body":{"text":"","files":[{"id":"BcwQEvrOFzsINGEGBm6JIWnz","name":"old old works1","extension":"zip","size":141269699,"url":"https://downloads.fanbox.cc/files/post/571194/BcwQEvrOFzsINGEGBm6JIWnz.zip"},{"id":"BGaRVHd458GoTypuWvlmJT6q","name":"old old works2","extension":"zip","size":125047341,"url":"https://downloads.fanbox.cc/files/post/571194/BGaRVHd458GoTypuWvlmJT6q.zip"},{"id":"YovgDUAar1SstVdwPG0Fv1IE","name":"old old works3","extension":"zip","size":158663869,"url":"https://downloads.fanbox.cc/files/post/571194/YovgDUAar1SstVdwPG0Fv1IE.zip"},{"id":"TKjjxTFlIwFe1t52Tsr0il4W","name":"old old works4","extension":"zip","size":103325394,"url":"https://downloads.fanbox.cc/files/post/571194/TKjjxTFlIwFe1t52Tsr0il4W.zip"},{"id":"ghbCQ39PnnNwALTKmUBDIiot","name":"old old works5","extension":"zip","size":157907512,"url":"https://downloads.fanbox.cc/files/post/571194/ghbCQ39PnnNwALTKmUBDIiot.zip"},{"id":"M49AElLzXpd81cIlejiDvMVY","name":"old old works6","extension":"zip","size":73757459,"url":"https://downloads.fanbox.cc/files/post/571194/M49AElLzXpd81cIlejiDvMVY.zip"},{"id":"FcSvFGhf97In0R1cTOZtYMyy","name":"old old works7","extension":"zip","size":155892480,"url":"https://downloads.fanbox.cc/files/post/571194/FcSvFGhf97In0R1cTOZtYMyy.zip"},{"id":"BrauhHLcH1yjccWQ8Reh31i0","name":"old old works8","extension":"zip","size":100421336,"url":"https://downloads.fanbox.cc/files/post/571194/BrauhHLcH1yjccWQ8Reh31i0.zip"},{"id":"BoliYaP5TefAQbxlSznD3giH","name":"old old works9","extension":"zip","size":99575049,"url":"https://downloads.fanbox.cc/files/post/571194/BoliYaP5TefAQbxlSznD3giH.zip"},{"id":"cJI5DeUR5jtQDfZY6SgYFvsz","name":"old old works10","extension":"zip","size":90706559,"url":"https://downloads.fanbox.cc/files/post/571194/cJI5DeUR5jtQDfZY6SgYFvsz.zip"},{"id":"QVQFPPmwxfwkMdrzi0lttW8e","name":"old old works11","extension":"zip","size":111319995,"url":"https://downloads.fanbox.cc/files/post/571194/QVQFPPmwxfwkMdrzi0lttW8e.zip"},{"id":"dqcfEy22TyFGwKNvN5LdgO76","name":"old old works12","extension":"zip","size":37268909,"url":"https://downloads.fanbox.cc/files/post/571194/dqcfEy22TyFGwKNvN5LdgO76.zip"}]},"tags":[],"excerpt":"","isLiked":false,"likeCount":30,"commentCount":1,"restrictedFor":null,"user":{"userId":"17151277","name":"mamimi","iconUrl":"https://pixiv.pximg.net/c/160x160_90_a2_g5/fanbox/public/images/user/17151277/icon/gef1I0qIQH7JerQTPnf8tWv3.jpeg"},"creatorId":"mamimi","hasAdultContent":true,"status":"published","commentList":{"items":[{"id":"338658","parentCommentId":"0","rootCommentId":"0","body":"\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3002\n\u898b\u305f\u304b\u3063\u305f\u7d75\u306a\u3069\u3082\u3042\u3063\u305f\u306e\u3067\n\u3068\u3066\u3082\u5b09\u3057\u3044\u3067\u3059\u3002","createdDatetime":"2019-09-24T07:49:55+09:00","likeCount":3,"isLiked":false,"isOwn":false,"user":{"userId":"20989700","name":"\u7530\u4e2d","iconUrl":null},"replies":[]}],"nextUrl":null},"nextPost":{"id":"578831","title":"Musume (complete)","publishedDatetime":"2019-09-29 05:52:16"},"prevPost":{"id":"569699","title":"Mamako (complete)","publishedDatetime":"2019-09-23 09:11:49"},"imageForShare":"https://pixiv.pximg.net/c/1200x630_90_a2_g5/fanbox/public/images/creator/17151277/cover/XHTOv3kP3OkzgJC0g0UgSxCP.jpeg"}}
2020-11-10 16:28:24,584 - PixivUtil20201031 - INFO - No Cover Image for post: 571194.
2020-11-10 16:28:24,585 - PixivUtil20201031 - DEBUG - Sanitized Filename: D:\Download\Pixivutil\pixivutil20201031(Fanbox II)\mamimi (17151277)\571194_p0_BcwQEvrOFzsINGEGBm6JIWnz - old old works.zip
2020-11-10 16:28:24,588 - PixivUtil20201031 - INFO - Creating directory: D:\Download\Pixivutil\pixivutil20201031(Fanbox II)\mamimi (17151277)
2020-11-10 16:28:24,590 - PixivUtil20201031 - INFO - Using Referer: https://www.pixiv.net/fanbox/creator/17151277/post/571194
2020-11-10 16:28:24,937 - PixivUtil20201031 - INFO - Using Referer: https://www.pixiv.net/fanbox/creator/17151277/post/571194
2020-11-10 16:28:54,712 - PixivUtil20201031 - ERROR - Error at download_image(): (<class 'OSError'>, OSError(22, '因為檔案包含病毒或潛在的垃圾軟體，所以作業未順利完成。'), <traceback object at 0x03788F88>) at https://downloads.fanbox.cc/files/post/571194/BcwQEvrOFzsINGEGBm6JIWnz.zip (9001)
2020-11-10 16:28:54,713 - PixivUtil20201031 - ERROR - Traceback (most recent call last):
File "PixivDownloadHandler.pyc", line 151, in download_image
File "PixivDownloadHandler.pyc", line 276, in perform_download
File "PixivHelper.pyc", line 730, in download_image
OSError: [WinError 225] 因為檔案包含病毒或潛在的垃圾軟體，所以作業未順利完成。: 'D:\Download\Pixivutil\pixivutil20201031(Fanbox II)\mamimi (17151277)\571194_p0_BcwQEvrOFzsINGEGBm6JIWnz - old old works.zip.pixiv' -> 'D:\Download\Pixivutil\pixivutil20201031(Fanbox II)\mamimi (17151277)\571194_p0_BcwQEvrOFzsINGEGBm6JIWnz - old old works.zip'

if you are using windows, maybe you can exclude the download directory from scanning?
If you are using windows defender in win10 https://support.microsoft.com/en-us/windows/add-an-exclusion-to-windows-security-811816c0-4dfd-af4a-47e4-c301afe13b26

then upload the downloaded file to virustotal just to be sure if it real virus or not.

Probably Windows defender cause the problem, as I manual downloaded the files from artwork page it works just fine.
I'll try disable windows defender to see if it works.


Cursor.set(value: any): Cursor

Can we have a way to set current value of cursor?
Cursor.set(value: any): Cursor

It's similar to update(updater: (value: any) => any): Cursor, but with being able to set undefined.

I would like to be able to do this as well. Makes it easy to alter values stashed away in nested structures when passing cursors as props through React.

+1, this would be really handy. Shouldn't need a full update method call when I don't care about the current value of the cursor.

Added PR #516.
On another note, would it make sense to have a matching cursor.get()-method? It would basically be an alias for deref(). I have the code, can add it to the PR if you want.


Fix crash when types directory does not exist

This PR fixes dts-gen crashing when the types directory does not exist.

dts-gen crashes when used with the --dt argument and the types subdirectory does not exist. This can happen if you run dts-gen --dt anywhere besides the root of the DefinitelyTyped repo.
"C:\Program Files (x86)\nodejs\node.exe" --inspect-brk=55971 S:\Projects\_GitHub\dts-gen\bin\lib\run.js --dt --name angular-tooltips --template module --overwrite
Unexpected crash! Please log a bug with the commandline you specified.
S:\Projects\_GitHub\dts-gen\bin\lib\run.js:130
        throw e;
        ^

Error: ENOENT: no such file or directory, mkdir 'S:\Projects\_GitHub\dts-gen\types\angular-tooltips'
    at Object.fs.mkdirSync (fs.js:895:18)
    at Object.writeDefinitelyTypedPackage [as default] (S:\Projects\_GitHub\dts-gen\bin\lib\definitely-typed.js:24:14)
    at Object.<anonymous> (S:\Projects\_GitHub\dts-gen\bin\lib\run.js:92:35)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.runMain (module.js:605:10)
    at run (bootstrap_node.js:427:7)

@leonard-thieu,
Thanks for having already signed the Contribution License Agreement. Your agreement has not been validated yet. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot


"No commits yet" reported as "Uncommitted changes"

To reproduce :

Create an empty git repository (git init myemptyrepo)
Run mgitstatus on repository
Bug : "Uncommitted changes" reported

$ git status

On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)

$ mgitstatus myemptyrepo/

myemptyrepo/: Uncommitted changes

Thanks for the bug report, Oliver!
There are many edge cases in which multi-git-status shows a status that is not quite accurate. Unfortunately, git is a complex beast and adding logic for these edge cases usually just complicates matters even more.
The goal of multi-git-status is not to account for each edge case, but rather to inform the user that a repo might require some attention. I think in this case the "Uncommitted changes" communicates that well enough.
So I'm going to close this issue. If you disagree with my reasoning, feel free to reopen the issue and let me know!

thank you @fboender for your answer
Honestly, I think this specific case should be handled differently as "uncommitted changes". Because for my use case, the goal of obtaining multiple projects statuses is to quikcly know what should be done with each project. Reporting "uncommitted changes" incorrectly give the impression that something needs to be done on the repo, but this is not the case.
I saw another user had made a pullrequest with this change (#43, commits 0c83c2cb2c1c9e3a44ee8bf27791280aa4de1a24, 81dd89925817614582160fe96fdb81d1d1d669b3, ...), too bad it also includes many others modification and it cannot be merged anymore.
Unfortunately I have no time for now to help you to change this.

@OlivierJaquemet okay, that sounds like a reasonable use-case. I've reopened this issue. I think it should be fairly simple to detect such a repo and show a different message, or perhaps don't show a message at all unless -w is specified.


Rename widgets/widget.dart to widgets/framework.dart

It was confusing to have both widget.dart and widgets.dart

lgtm


Layer Specific Learning Rate For R

Hey,
is there a way to set layer Specific Learning Rate for the R version?
I found two different posts, one naming: Optimizer.set_lr_scale(). and one mx.sym.YOURSYMBOL(attr={'lr_mult': 0.01}).
which both make sense but I haven't found a way to do this in R.
Thanks for any help.

Currently, this hasn't been support in R.

@mxnet-label-bot please add [Feature Request] to this issue.

@sandeep-krishnamurthy please label - "Feature Request"


Deterministic builds

Please have a look at the individual commit messages for the details.

FYI @maxhbr. This way you shouldn't even need recursiveHash anymore.

I will test it

This fixes the deterministic build issue. If build twice, the hash is sha256-qv12RfIR75iVnj/UrhottF6oFWZMhplq3hmKrmTo230= both times. This closes https://github.com/oss-review-toolkit/ort/issues/3958

Merging despite the unrelated test failures.

PS: This change might come in handy in the context of https://reproducible-builds.org/.