When user tries to login to tray, it shows "Unknown network error"

Need to give more feedback, instead of showing this error.

Debian OS 9.4
Lenovo X220
dpkg -i subutai-control-center
I installed open the control center and the network error appeared:
"Network Error. Code : Unknown Network Error"

@GabriAz try open SubutaiControlCenter using terminal, copy and paste the output on this issue.

Started a new proc with hash: 0
Total number of procs:  1
requested which for "/usr/bin/ssh-keygen" exit code: 0 result: 0 output: ("/usr/bin/ssh-keygen")
Started a new proc with hash: 0
Total number of procs:  1
requested which for "/usr/bin/ssh" exit code: 0 result: 0 output: ("/usr/bin/ssh")
Started a new proc with hash: 0
Total number of procs:  1
requested which for "/opt/subutai/bin/p2p" exit code: 1 result: 0 output: ()
Started a new proc with hash: 0
Total number of procs:  1
requested which for "p2p" exit code: 1 result: 0 output: ()
Started a new proc with hash: 0
Total number of procs:  1
requested which for "/opt/subutai/bin/p2p" exit code: 1 result: 0 output: ()
Can not find any program to run for p2p
Started a new proc with hash: 0
Total number of procs:  1
requested which for "/usr/bin/x2goclient" exit code: 1 result: 0 output: ()
Started a new proc with hash: 0
Total number of procs:  1
requested which for "x2goclient" exit code: 1 result: 0 output: ()
Started a new proc with hash: 0
Total number of procs:  1
requested which for "/usr/bin/x2goclient" exit code: 1 result: 0 output: ()
Can not find any program to run for x2goclient
Started a new proc with hash: 0
Total number of procs:  1
requested which for "/usr/bin/vagrant" exit code: 1 result: 0 output: ()
Started a new proc with hash: 0
Total number of procs:  1
requested which for "vagrant" exit code: 1 result: 0 output: ()
Started a new proc with hash: 0
Total number of procs:  1
requested which for "/usr/bin/vagrant" exit code: 1 result: 0 output: ()
Can not find any program to run for vagrant
Started a new proc with hash: 0
Total number of procs:  1
requested which for "/usr/bin/scp" exit code: 0 result: 0 output: ("/usr/bin/scp")
Started a new proc with hash: 0
Total number of procs:  1
requested which for "/usr/bin/virtualbox" exit code: 1 result: 0 output: ()
Started a new proc with hash: 0
Total number of procs:  1
requested which for "virtualbox" exit code: 1 result: 0 output: ()
Started a new proc with hash: 0
Total number of procs:  1
requested which for "/usr/bin/virtualbox" exit code: 1 result: 0 output: ()
Can not find any program to run for virtualbox
Started a new proc with hash: 0
Total number of procs:  1
requested which for "Terminal" exit code: 1 result: 0 output: ()
Started a new proc with hash: 0
Total number of procs:  1
requested which for "aterm" exit code: 1 result: 0 output: ()
Started a new proc with hash: 0
Total number of procs:  1
requested which for "evilvte" exit code: 1 result: 0 output: ()
Started a new proc with hash: 0
Total number of procs:  1
requested which for "gnome-terminal" exit code: 0 result: 0 output: ("/usr/bin/gnome-terminal")
[22:49:33] [(0)] Warning: QCommandLineParser: call process() or parse() before isSet (in function )
[22:49:33] [../main.cpp(114)] Info: Tray application 7.0.2 launched (in function int main(int, char**))
[22:49:33] [../hub/src/DlgLogin.cpp(48)] Debug: Username<EMAIL_ADDRESS>(in function bool DlgLogin::login())
[22:49:33] [../hub/src/DlgLogin.cpp(49)] Debug: Remember Me  "Remember me" (in function bool DlgLogin::login())
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve CRYPTO_num_locks (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve CRYPTO_set_id_callback (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve CRYPTO_set_locking_callback (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve ERR_free_strings (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve EVP_CIPHER_CTX_cleanup (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve EVP_CIPHER_CTX_init (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve sk_new_null (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve sk_push (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve sk_free (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve sk_num (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve sk_pop_free (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve sk_value (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve SSL_library_init (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve SSL_load_error_strings (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve SSL_get_ex_new_index (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve SSLv3_client_method (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve SSLv23_client_method (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve SSLv3_server_method (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve SSLv23_server_method (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve X509_STORE_CTX_get_chain (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_conf (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve SSLeay (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot resolve SSLeay_version (in function )
[22:49:33] [(0)] Warning: Incompatible version of OpenSSL (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot call unresolved function SSLv23_client_method (in function )
[22:49:33] [(0)] Warning: QSslSocket: cannot call unresolved function SSL_library_init (in function )
[22:49:33] [../hub/src/RestWorker.cpp(876)] Critical: Send request network error : Error creating SSL context (error:140A90C4:SSL routines:func(169):reason(196)) (in function QByteArray CRestWorker::send_request(QNetworkAccessManager*, QNetworkRequest&, int, int&, int&, int&, QByteArray, bool, uint))
[22:49:33] [../hub/src/RestWorker.cpp(178)] Debug: Http code  0 Error code  6 Network Error  99 (in function void CRestWorker::login(const QString&, const QString&, int&, int&, int&))
[22:49:33] [../hub/src/SystemCallWrapper.cpp(3345)] Debug: Taking info about system on Linux (in function static QStringList CSystemCallWrapper::lsb_release())
[22:49:33] [../hub/src/SystemCallWrapper.cpp(3374)] Debug: Started a new proc with hash: 0 (in function int CProcessHandler::start_proc(QProcess&))
[22:49:33] [../hub/src/SystemCallWrapper.cpp(3375)] Debug: Total number of procs:  1 (in function int CProcessHandler::start_proc(QProcess&))
[22:49:33] [../hub/src/SystemCallWrapper.cpp(3352)] Debug: Result about system on Linux: Exit code:  0 Result code:  0 Output:  ("Distributor ID:\tDebian", "Description:\tDebian GNU/Linux 9.4 (stretch)", "Release:\t9.4", "Codename:\tstretch") (in function static QStringList CSystemCallWrapper::lsb_release())
[22:49:39] [../hub/src/SystemCallWrapper.cpp(3374)] Debug: Started a new proc with hash: 0 (in function int CProcessHandler::start_proc(QProcess&))
[22:49:39] [../hub/src/SystemCallWrapper.cpp(3375)] Debug: Total number of procs:  1 (in function int CProcessHandler::start_proc(QProcess&))
[22:49:39] [../hub/src/SystemCallWrapper.cpp(2840)] Debug: requested which for "pkexec" exit code: 0 result: 0 output: ("/usr/bin/pkexec") (in function static system_call_wrapper_error_t CSystemCallWrapper::which(const QString&, QString&))
[22:49:39] [../hub/src/SystemCallWrapper.cpp(3374)] Debug: Started a new proc with hash: 0 (in function int CProcessHandler::start_proc(QProcess&))
[22:49:39] [../hub/src/SystemCallWrapper.cpp(3375)] Debug: Total number of procs:  1 (in function int CProcessHandler::start_proc(QProcess&))
[22:49:39] [../hub/src/SystemCallWrapper.cpp(2840)] Debug: requested which for "sh" exit code: 0 result: 0 output: ("/bin/sh") (in function static system_call_wrapper_error_t CSystemCallWrapper::which(const QString&, QString&))
[22:49:39] [../hub/src/SystemCallWrapper.cpp(2143)] Debug: "/tmp/install_libssl1.0-dev.sh" (in function static system_call_wrapper_error_t CSystemCallWrapper::install_libssl())
[22:49:39] [../hub/src/SystemCallWrapper.cpp(3374)] Debug: Started a new proc with hash: 0 (in function int CProcessHandler::start_proc(QProcess&))
[22:49:39] [../hub/src/SystemCallWrapper.cpp(3375)] Debug: Total number of procs:  1 (in function int CProcessHandler::start_proc(QProcess&))

I formatted the notebook (ThinkPad x220), the first thing I did was install the control center, it worked. When I installed the fingerprint driver (libpam-fprintd). Once installed control center is not logged in, does it have anything to do with each other?

Fixed in Master.

I do not understand much about these names, I usually say that these alphabet soups leave me without understanding. Corrected what? My request? Can I install the fingerprint driver without fear of having to format the machine?

@GabriAz Hi! We have fixed this issue. No need to format your machine, just update Control Center and it will guide you how to fix these OpenSSL compatibility issues.

Thank you very much, I'm very happy.
--
gabriel<EMAIL_ADDRESS><EMAIL_ADDRESS>(62) 98133-6666
2018-08-01 2:07 GMT-03:00 Amangeldi Zhusubaliev<EMAIL_ADDRESS>
@GabriAz https://github.com/GabriAz Hi! We have fixed this issue. No
need to format your machine, just update Control Center and it will guide
you how to fix these OpenSSL compatibility issues.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/subutai-io/control-center/issues/602#issuecomment-409450899,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ANNzc5AAXcxsUxjb3I3GefR6PWRZGt7Wks5uMTeWgaJpZM4R9_0E
.

Fixed in Prod.


Unrecognized function or variable 'importONNXFunction'

Hi Georg,
Thanks a lot for making this available. I am trying to use the toolbox in Matlab. I have installed the DL toolbox and ONNX converter toolbox. However, when I run demo.m, I get this error
Unrecognized function or variable 'importONNXFunction'.
It seems like the only options are importONNXNetwork and importONNXLayers, am I missing something?
P.S - I am using MATLAB R2020a

Hi,
The function importONNXFunction was unfortunately only introduced in MATLAB 2020b. We have tried using importONNXNetwork and/or importONNXLayers before, but it seems that they do not support MaxPoolLayers at this point. We haven't really found a good workaround for this yet, apart from requiring MATLAB 2020b or later. Of course, using the Python toolbox would be another alternative.
-Georg


Improve integration test document to follow Arrow C++ repo CI

Which issue does this PR close?

Closes #1741.
Rationale for this change

What changes are included in this PR?

Are there any user-facing changes?

Codecov Report

Merging #1742 (e102173) into master (a14a1d3) will increase coverage by 0.00%.
The diff coverage is n/a.

:exclamation: Current head e102173 differs from pull request most recent head dcd99ae. Consider uploading reports for the commit dcd99ae to get more accurate results

@@           Coverage Diff           @@
##           master    #1742   +/-   ##
=======================================
  Coverage   83.31%   83.31%
=======================================
  Files         196      196
  Lines       55961    55961
=======================================
+ Hits        46624    46625    +1
+ Misses       9337     9336    -1

Impacted Files
Coverage Δ

parquet_derive/src/parquet_field.rs
65.75% <0.00%> (ø)

arrow/src/array/transform/mod.rs
86.85% <0.00%> (+0.11%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a14a1d3...dcd99ae. Read the comment docs.

cc @alamb

If we want to enable these tests in the C++ repo, we need to pass --gold-dirs test too. Currently although we can pass all producer/consumer tests between C++/Rust according to our doc, it fails --gold-dirs test in C++ repo CI. This update is to reflect this point.

I'm a little confused why we are documenting what the C++ repo does in the Rust repo? Are you perhaps suggesting we should run with --gold-dirs?

The C++ repo is used in the rust repo's CI test:
https://github.com/apache/arrow-rs/blob/722fcfcf2f55672c2bae626e3f652a3a792dff13/.github/workflows/integration.yml#L29-L35

Thanks @alamb @tustvold


feat(Order/LatticeIntervals): order instances for Set.Icc

Add OrderBot, OrderTop and BoundedOrder instances for Set.Icc a b under [Fact (a \le b)].

@YaelDillies That ended up needing a few more changes to use the new instances. I was wandering, would an instance of Fact (0 \le 1) under [ZeroLeOneClass \alpha] be useful? E.g. it would trivialize the BoundedOrder instance for UnitInterval.

@YaelDillies That ended up needing a few more changes to use the new instances. I was wondering, would an instance of Fact (0 \le 1) under [ZeroLeOneClass \alpha] be useful? E.g. it would trivialize the BoundedOrder instance for UnitInterval.

It is an option, but I would keep that for a separate PR because

Global Fact instances slow down all Fact TC searches
2.UnitInterval is kind of considered a concrete type in itself

OK then I'm happy with this PR if you are.

Done.

Ah I missed a few, sorry

bors merge


Extensions of FileIO interface

I excised ec2dec5, reverted the commit (#370) that caused the test failure, created some deprecations, and moved Imagine into its own package.
Only AndorSIF to go, right? Do you want me to tackle that?

Awesome!!!
AndorSIF is mostly ready and it might be better if you do the rest. I don't know the format and couldn't find any files to test this. I think it's fine to leave it in Images, as the other IO packages rely on Images anyways. Up to you ;)

OK. @rsrock, I'm going to take the liberty of moving the SIF reader over to JuliaIO, and make sure you have push privileges.

https://github.com/JuliaIO/AndorSIF.jl
Once this passes its tests, I'm merging :smile:.

Ha! That would be quite something :)
Just remembered though, that the reading Vector{Uint8} hasn't made it into ImageMagick.jl yet.
Are we forgetting other stuff?

Win64 0.3 is off by one:
Expression: raw(res) --> raw(map(ScaleAutoMinMax(Ufixed16),raw(imgr)))
Expected:
Uint16[65535 43131
       49330 23688
       35780 41243]
Uint16[40516 36945
       43380 18967
       28964 0]
Occurred:
Uint16[65535 43131
       49330 23688
       35780 41243]
Uint16[40516 36945
       43379 18967
       28964 0]

This must be a rounding error due floating point precision problems?
Should we relax the test? Would be annoying if this lets the tests fail at random

I want to try to debug it first, so for now let's have it generate enough output to reproduce the problem.

The writemime test failure is expected until https://github.com/JuliaIO/FileIO.jl/pull/37 gets merged.

No problem, I'll catch up with all these changes when I have the chance.  I assume osxnative is moving somewhere else too?  Let me know where that will go, I'd like to add image writing too.
I doubt that Andor SIF is used much. At one point I tried to grab a small test image, but it was with the wrong version of the software and the format was different. Of course.
--
Ronald S. Rock, Jr., Associate Professor
Dept. of Biochemistry and Molecular Biology, The University of Chicago
GCIS W240, 929 E. 57th St.
Chicago, IL 60637   USA
+1<PHONE_NUMBER> (w), +1<PHONE_NUMBER> (f)
<EMAIL_ADDRESS>
On Sep 27, 2015, at 2:47 PM, Tim Holy<EMAIL_ADDRESS>wrote:
OK. @rsrock, I'm going to take the liberty of moving the SIF reader over to JuliaIO, and make sure you have push privileges.
—
Reply to this email directly or view it on GitHub.

Little checklist:

[x] SIF
[x] Imagine
[ ] pass PBM tests
[x] writemime
[ ] rounding (?) error
[x] OSXNative
[ ] OSXNative rename
[x] NRRD
[x] ImageMagick
[ ]  merge Choose a default for ambiguous in FileIO

Probably incomplete ;)

OK, I think we're basically good to go here. This couples to the following PRs:

https://github.com/JuliaIO/FileIO.jl/pull/38
The new Netpbm package: https://github.com/JuliaIO/Netpbm.jl
https://github.com/JuliaIO/ImageMagick.jl/pull/9

I think lots of travis tests will fail (surprisingly, this one succeeded) until packages are registered and tagged. OK to go ahead?

(I'm not sure what the "rounding error" means above.)

This one:
Expression: raw(res) --> raw(map(ScaleAutoMinMax(Ufixed16),raw(imgr)))
Expected:
Uint16[65535 43131
       49330 23688
       35780 41243]
Uint16[40516 36945
       43380 18967
       28964 0]
Occurred:
Uint16[65535 43131
       49330 23688
       35780 41243]
Uint16[40516 36945
       43379 18967
       28964 0]

Ah, thanks for reminding me. Yes, let's wait for it to happen again and see what the debugging output tells us.

Aside from a weird problem with QuartzImageIO, things are looking good. I'm interested in tagging a new (minor) release very soon. A key question: should Images (temporarily?) add
ImageMagick
@osx QuartzImageIO

to its REQUIRE file?
Also, if folks can test I'd be grateful.

Wow, is it Christmas already!? :)
On 29 Sep 2015 12:02, "Tim Holy"<EMAIL_ADDRESS>wrote:

Merged #373 https://github.com/timholy/Images.jl/pull/373.
—
Reply to this email directly or view it on GitHub
https://github.com/timholy/Images.jl/pull/373#event-421703320.

:100: Whoo

A Pkg.update(), followed by Pkg.checkout("Images") also installs FileIO. Subsequent Pkg.test("Images") succeeds. imread("some.png") nicely warns about deprecated imread and recommends load.
But with the new system, I'm back to having ImageMagick problems:
julia> load("/home/beyer/zealgo.png")
ERROR: ArgumentError: ImageMagick not found in path
 in require at ./loading.jl:233
 in check_loader at /home/beyer/.julia/v0.5/FileIO/src/loadsave.jl:11

A Pkg.free("Images") "fixes" this problem, e.g. imread works on my system in the latest release. I'll investigate this towards the end of the week.

Thanks for checking. Right now you have to say Pkg.add("ImageMagick"). See https://github.com/timholy/Images.jl/pull/373#issuecomment-144017692.

Ah, right, I read that comment but comitted it to memory with a bitflip :) Adding the ImageMagick package, it all works fine on my Arch Linux for a few images I tried.

Awesome! Thanks for the report.
I think we can take this as evidence that we should add it to the REQUIRE :smile:.

That, or to the README.md if you want people to always choose their loader.


Feature/support time slice

Ⅰ. Describe what this PR does
Support time slice. Users can set time slices to allow rollout to be executed , if the step not in slices , it will be run at  near time when it  allowed.
Ⅱ. Does this pull request fix one issue?

fixes #74
Ⅲ. Special notes for reviews
User can customize the time zone. The local time zone will be used , if it is not set .

Codecov Report

Merging #76 (2baa5b6) into master (e1ba1b0) will increase coverage by 0.80%.
The diff coverage is 60.00%.

@@            Coverage Diff             @@
##           master      #76      +/-   ##
==========================================
+ Coverage   16.11%   16.92%   +0.80%
==========================================
  Files          30       31       +1
  Lines        3482     3546      +64
==========================================
+ Hits          561      600      +39
- Misses       2821     2841      +20
- Partials      100      105       +5

Flag
Coverage Δ

unittests
16.92% <60.00%> (+0.80%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

pkg/controller/rollout/canary.go
0.00% <0.00%> (ø)

pkg/controller/rollout/context.go
0.00% <0.00%> (ø)

pkg/util/time_utils.go
66.66% <66.66%> (ø)

...ollout/validating/rollout_create_update_handler.go
62.59% <93.75%> (+4.33%)
:arrow_up:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


A11y_ML .NET Model Builder_Image Classification-Next Steps_Keyboard: 'Train in Azure' option is not accessible using keyboard. Keyboard focus is not landing on 'Train in Azure' option while navigating using tab key.

“Check out Accessibility Insights! - Identify accessibility bugs before check-in and make bug fixing faster and easier.”
GitHubTags:
#A11yMAS; #A11yTCS; #Win32; #DesktopApp; #BM-VisualStudioClient-Win32-Jul21; #A11ySev2; #Visual Studio Client; #WCAG2.1.1; #Keyboard; #A11yPreview; #A11yAuto; #TabStops;
Environment Details:
Microsoft Visual Studio
Re-pro Steps:

Open Visual Studio Enterprise 2022 Preview
Create a new .Net Core Console App (C#) ex: WpfApp
Tab to "Solution Explorer" and right click on the project (Shift + F10) and then from the expanded list Select "Add" and then from the list items select "Machine learning"
Tab till "Image classification" and press enter
Select "Local (CPU)" environment and tab till "Next" button and press enter
In Data tab, Tab till "Browse" button and select the input file
After uploading data, click next step button, start training in Train tab
After completing training, click next step button, complete all the steps and navigate to 'Next Steps' tab
Verify whether 'Train in Azure' option is not accessible using keyboard or not

Actual Result:
'Train in Azure' option is not accessible using keyboard. Keyboard focus is not landing on 'Train in Azure' option while navigating using tab key.
Expected Result:
'Train in Azure' option should be accessible using keyboard. Keyboard focus should land on 'Train in Azure' option while navigating using tab key.
User Impact:
Keyboard users will not get to access train in azure option if keyboard focus does not land on it.

@zewditu Issue is partially fixed. Train in Azure option is receiving keyboard focus but on pressing enter/space key, no action is getting performed. When train in azure optioned is selected using mouse, it will be navigated to training environment tab.
https://user-images.githubusercontent.com/83570638/131464815-a5435819-9860-4f26-9b58-09d497dc68a9.mp4

@zewditu Please take a look at this issue.

@NiharikaTipirishetty  I am not able to reproduce the issue in our latest main or model builder version .
Could you update your model builder ?
But I am not sure why you got partially fixed.

New build is available here https://devdiv.visualstudio.com/_apis/resources/Containers/8663755/VSSetup_Release17?itemPath=VSSetup_Release17%2FMicrosoft.ML.ModelBuilder.Gallery.Dev17.vsix

@beccamc @zewditu the new model builder version is throwing error. please suggest what need to be done.
I am using Visual Studio Version 17.0.0 Preview 3.1

@NiharikaTipirishetty sorry about this problem.
Can you install Preview 5 (internal build) from this link?  https://aka.ms/vs/17/pre/vs_Enterprise.exe.  Using this version with the model builder extension above worked for me.

You should be able to validate all of our "Ready for review" issues with this build.

Issue is fixed. Train in Azure option is receiving keyboard focus and on pressing enter key, it will be navigated to training environment tab.  Train in Azure option is keyboard accessible. Hence closing this bug.
https://user-images.githubusercontent.com/83570638/133382952-23d63c5f-e479-47c1-8932-b6d752455306.mp4


panic on micro:bit not detected

Basically, put the micro:bit in panic and you won't notice anything on the jacdac browser side. There does not seem to be any error raised over the webusb transport.
Repro:
flash a new jacdac program on micro:bit v2
go to https://microsoft.github.io/jacdac-docs/tools/settings
click on "clear" a few times
the device will crash with 921
nothing detected on the web site

I guess we should update the protocol code on the website to detect that micro:bit is not picking up (or sending) any packets. If it doesn't for a second or two, we should assume it paniced. We talk to it via debugger interface, so all we can tell is that it's not modifying the transport buffers. Same would happen in hard fault (though possibly we could detect hard fault).

watch point on target_panic?

imho too complicated - just look for timeouts - bullet proof method

I also don't know the address of target_panic(); it could be also that program gets stuck somewhere else.

makes sense :smile:


Prevent warnings from CGBitmapContextCreate

Sometimes if the parameter combination is not supported by CGBitmapContextCreate, it will generate some warnings like the following one:
<Error>: CGBitmapContextCreate: unsupported parameter combination: 16 integer bits/component; 64 bits/pixel; 3-component color space; kCGImageAlphaPremultipliedFirst; 2400 bytes/row.
The warnings will be eliminated by using fixed parameter combinations which are already supported by CGBitmapContextCreate.

@mythodeia doesn't #1217 via 4cfb12c replace this PR?

@bpoplauschi yeap

Closing, #1217 replaces this


Under what License are you distributing AlertX?

Hello, I'm currently working on an MIT open source project and was wondering what the exact license of this project is.
Since no license is supplied, it follows that the project is currently under the default license, meaning I currently can't use this project.
Could you perhaps please add a license to remedy this?
Kind regards

Hello, this project is now licensed under MIT License. Please feel free to use AlertX in your projects.
Thanks!


black + flake8 run

This PR makes sure the current repo passes all the pre-commit checks

This PR fixes #13


Performance of square masks is much better

Hi! Thanks a lot for your work! I downloaded 2 pretrained face models and noticed that results of the model with square masks are much better than that with random masks despite that random masks are smaller than squares. Below is the example. Why do you think this is? Also do you think that model can be trained with higher resolutions?

Hi, muxgt
In fact, it is the fixed mask is much better than random masks. center square mask inpainiting are specific mask that the mask is just at the center position with the fixed size square mask.
I think this model can be directly trained with higher resolutions (if GPU memory is bigger enough). For better performance, maybe you can refer to some relevent papers.

Thank you for the answer!


Update test-cluster to use fabric_idx type for fabricIndex

Problem

Fixes https://github.com/project-chip/connectedhomeip/issues/11286

Change overview
Update test-cluster to use fabric_idx type for fabricIndex
Testing

Github test CI

Ops I did the wrong thing here. I need to make it a Fabric ID not index


Smooth ci

Modify CI files to be in line with pyiron_base, e.g. using Mambaforge to speed stuff up

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

17 of 22 (77.27%)  changed or added relevant lines in 3 files are covered.
3 unchanged lines in 1 file lost coverage.
Overall coverage increased (+0.2%) to 57.271%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

ironflow/model/node.py
5
7
71.43%

ironflow/nodes/pyiron/atomistics_nodes.py
0
3
0.0%

Files with Coverage Reduction
New Missed Lines
%

ironflow/nodes/pyiron/atomistics_nodes.py
3
56.32%

Totals

Change from base Build<PHONE_NUMBER>:
0.2%

Covered Lines:
1595

Relevant Lines:
2785

💛  - Coveralls

I like this approach! However, I am not sure how well this plays with running multiple environment setups in one go (like for our unittests where we use py3.8, py3.9, py3.10 on linux plus py3.10 on windows and mac).

Super! It plays totally fine; I do that already in unittests here.
There is some way to put stragegy: matrix: right inside the called action as well, but I don't think that's what we want here since it sometimes gets called as an action and sometimes not. One vulnerability with this setup is that if the path you pass in to the called action doesn't line up with what the calling script used for it's on then you'll be in trouble. But that's equivalent to getting these messed up in your matrix setup, so I don't think we're facing any more danger than we normally would for this sort of screw-up.

@niklassiemer since you're on leave I'll just merge this without further review. If you wind up later reviewing a PR where I give pyiron_module_template a similar treatment, this might be a useful resource.


UofT-DSI | Python - Assignment 1

What changes are you trying to make? (e.g. Adding or removing code, refactoring existing code, adding reports)
Answers for the assignment.
What did you learn from the changes you have made?
I practiced:
1 - Deciding to use list/tuple/or set. I went with list - as it lists out all letters in a word.
2 - The command to turn all letters to lowercase ".lower()"
3 - The command to remove any space in a word ".replace(' ','')"
4 - Combining several commands in one code: sorted(), .lower(), .replace()
5 - Having a structured approach to solving a problem
And I tested my logics to see any issue before moving to "define function". For example, when i did "sorted(word_a)" and then "sorted(word_a) == sorted(word_b)", I was able to see that it treats uppercase and lowercase differently and messes up the alphabetical order. So I added .lower(). And then during Saturday optional work session, I learned from other classmates that in the real world there may be spaces in a word so we should also remove spaces with .replace().
Was there another approach you were thinking about making? If so, what approach(es) were you thinking of?
N/A
Were there any challenges? If so, what issue(s) did you face? How did you overcome it?
Yes, there were several challenges I encountered:
(1) I still struggled with steps to submit the assignment from local drive to git hub repository. The video that Daniel Razavi shared helped me to resolve this.
(2) I initially renamed my file "Ly-assignment1-python.jpnb", which I had to rename back to "assignment1.jpnb" - I believe this is the assignment submission guide.
(3) I initially added additional mark-down and code cells for my answers (keeping lecturer's question cells for reference purposes), but after today's Work session, I understood that I should insert my answers in the designated cells that say "Your code here" and not create new or delete any cell.
(4) I also learned that in real-world interviews, I should not rename any variable (even for tracking purposes), or add/remove any cell.
How were these changes tested?
I created a separated draft jupyter notebook to test my codes before inputting my final codes in my assignment.
A reference to a related issue in your repository (if applicable)
N/A
Checklist

[X] I can confirm that my changes are working as intended

Thank you Emma Tend for having confirmed on Slack that my work is good, I will close the Pull Request now.


Fix ecdsa test been disabled issue

This came from f3fdfbf78c6b. run = 1 should be done in pkey_print_message
as well, otherwise other tests(ecdsa...) printed with pkey_print_message won't run.

Checklist

[ ] documentation is added or updated
[ ] tests are added or updated

What about the formal OTC issue?

I forgot changing this after noticing the issue in the other PR, thanks @mspncp for watching over me! 😂

I didn't want to pingpong the labels, so I thought I'd better ask. :-)

So, I guess now that @romen is officially on the OTC this has the required approvals!

Merged to master with:

6e49b51406 Fix disabled ecdsa in apps/speed

Merged to 1.1.1-stable with:

49847f3c40 Fix disabled ecdsa in apps/speed

Thanks again @zorrorffm for your contributions!


Docker image

Hi!
We are using Keycloak in Kubernetes and therefore use the Keycloak Docker image and Helm chart.
Are there any plans on creating a Dockerfile that bundles Keycloak and scim-for-keycloak?
Thanks

HI I did not plan to create a docker-image here. Maintaining it would be a real pain and it is pretty simple deploying the scim-api into keycloak by just mounting the artifact into the deployments directory or using jboss-cli.
I am afraid you will need to generate your own Dockerfile that copies the artifact.

Hi!
Thank you for your reply and I understand that it is a real pain to maintain. I think deep down I was looking for an easy way out since I not familiar with the Java eco-system, Jboss and the Java build and deployment process. I will do some proper learning about Java and create my own Dockerfile. Thanks!

I will add a simple manual to the wiki in the next few days

Thank you so much! I will let you know if I have any questions or comments :blush:


What does a Website need to be automatically "compatible" with yt-dlp?

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I remove or skip any mandatory* field

Checklist

[X] I'm asking a question and not reporting a bug or requesting a feature
[X] I've looked through the README
[X] I've verified that I'm running yt-dlp version 2023.01.06 (update instructions) or later (specify commit)
[X] I've searched the bugtracker for similar questions including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Please make sure the question is worded well enough to be understood
I made my own private video hosting website, and I want it to be completly compatible with yt-dlp generic info extractor. Content-* Headers are all set, but when extracting information/downloading with yt-dlp, it doesn't get the duration / videosize / mime-type
right. I have tried Ktor and Flask that sends outputs the File. Both do not serve static files but get an id and they know the file path (Maybe that is the problem) .
Do I need write my own private Information Extractor or is there a way to make it compatible?
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
yt-dlp -j http://<IP_ADDRESS>:4040/video/38e599f39279cab6bd41773c0dfca7ce -vU
[debug] Command-line config: ['-j', 'http://<IP_ADDRESS>:4040/video/38e599f39279cab6bd41773c0dfca7ce', '-vU']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2023.01.06 [6becd25] (pip)
[debug] Python 3.11.0rc2 (CPython x86_64 64bit) - Linux-<IP_ADDRESS>-microsoft-standard-WSL2-x86_64-with-glibc2.27 (OpenSSL 1.1.1  11 Sep 2018, glibc 2.27)
[debug] exe versions: ffmpeg 3.4.11, ffprobe 3.4.11
[debug] Optional libraries: Cryptodome-3.14.1, brotli-1.0.9, certifi-2021.10.08, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.2
[debug] Proxy map: {}
[debug] Loaded 1760 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2023.01.06, Current version: 2023.01.06
yt-dlp is up to date (2023.01.06)
[generic] Extracting URL: http://<IP_ADDRESS>:4040/video/38e599f39279cab6bd41773c0dfca7ce
[generic] 38e599f39279cab6bd41773c0dfca7ce: Downloading webpage
[debug] Identified a direct video link
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec:vp9.2(10), channels, acodec, filesize, fs_approx, tbr, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 38e599f39279cab6bd41773c0dfca7ce: Downloading 1 format(s): fmp4
{"id": "38e599f39279cab6bd41773c0dfca7ce", "title": "38e599f39279cab6bd41773c0dfca7ce", "timestamp": null, "direct": true, "formats": [{"format_id": "fmp4", "url": "http://<IP_ADDRESS>:4040/video/38e599f39279cab6bd41773c0dfca7ce", "vcodec": null, "protocol": "http", "ext": "unknown_video", "video_ext": "unknown_video", "audio_ext": "none", "format": "fmp4 - unknown", "resolution": null, "dynamic_range": "SDR", "aspect_ratio": null, "http_headers": {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-us,en;q=0.5", "Sec-Fetch-Mode": "navigate"}}], "subtitles": {}, "http_headers": {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-us,en;q=0.5", "Sec-Fetch-Mode": "navigate"}, "webpage_url": "http://<IP_ADDRESS>:4040/video/38e599f39279cab6bd41773c0dfca7ce", "original_url": "http://<IP_ADDRESS>:4040/video/38e599f39279cab6bd41773c0dfca7ce", "webpage_url_basename": "38e599f39279cab6bd41773c0dfca7ce", "webpage_url_domain": "<IP_ADDRESS>:4040", "extractor": "generic", "extractor_key": "Generic", "playlist": null, "playlist_index": null, "display_id": "38e599f39279cab6bd41773c0dfca7ce", "fulltitle": "38e599f39279cab6bd41773c0dfca7ce", "requested_subtitles": null, "_has_drm": null, "format_id": "fmp4", "url": "http://<IP_ADDRESS>:4040/video/38e599f39279cab6bd41773c0dfca7ce", "vcodec": null, "protocol": "http", "ext": "unknown_video", "video_ext": "unknown_video", "audio_ext": "none", "format": "fmp4 - unknown", "resolution": null, "dynamic_range": "SDR", "aspect_ratio": null, "epoch":<PHONE_NUMBER>, "_filename": "38e599f39279cab6bd41773c0dfca7ce [38e599f39279cab6bd41773c0dfca7ce].unknown_video", "filename": "38e599f39279cab6bd41773c0dfca7ce [38e599f39279cab6bd41773c0dfca7ce].unknown_video", "urls": "http://<IP_ADDRESS>:4040/video/38e599f39279cab6bd41773c0dfca7ce", "_type": "video", "_version": {"version": "2023.01.06", "current_git_head": null, "release_git_head": "6becd25", "repository": "yt-dlp/yt-dlp"}}

When the generic extractor detects a direct video link, the only response headers that it pays attention to are last-modified, the value of which is extracted as timestamp, and content-type, which it only uses to check for a dash/hls/f4m manifest and set the format_id. You can see some of the relevant code here:
https://github.com/yt-dlp/yt-dlp/blob/05997b6e98e638d97d409c65bb5eb86da68f3b64/yt_dlp/extractor/generic.py#L2397-L2431
The file extension is determined from the URL, so if that extension-less localhost URL doesn't redirect to one with an extension, then yt-dlp ends up using unknown_video as ext
If you want to provide yt-dlp with more metadata without writing your own custom extractor, one option would be to have your server return a JSON LD response that points to the actual file URL instead of returning the file itself. Something like this:
<script type="application/ld+json">
{
    "@context": "https://schema.org",
    "@type": "VideoObject",
    "contentUrl": "http://<IP_ADDRESS>:4040/video/actual_file_url",
    "encodingFormat": "video/mp4",
    "name": "Custom title",
    "description": "Custom description",
    "duration": "PT1M33S",
    "uploadDate": "2023-01-29T05:57:54+02:00",
    "bitrate": "4128",
    "width": "1920",
    "height": "1080"
}
</script>

Note that the <script type="application/ld+json"> and </script> html tags are required by yt-dlp, as is "@type": "VideoObject" in the JSON

When the generic extractor detects a direct video link, the only response headers that it pays attention to are last-modified, the value of which is extracted as timestamp, and content-type, which it only uses to check for a dash/hls/f4m manifest and set the format_id. You can see some of the relevant code here:
https://github.com/yt-dlp/yt-dlp/blob/05997b6e98e638d97d409c65bb5eb86da68f3b64/yt_dlp/extractor/generic.py#L2397-L2431
The file extension is determined from the URL, so if that extension-less localhost URL doesn't redirect to one with an extension, then yt-dlp ends up using unknown_video as ext
If you want to provide yt-dlp with more metadata without writing your own custom extractor, one option would be to have your server return a JSON LD response that points to the actual file URL instead of returning the file itself. Something like this:
<script type="application/ld+json">
{
    "@context": "https://schema.org",
    "@type": "VideoObject",
    "contentUrl": "http://<IP_ADDRESS>:4040/video/actual_file_url",
    "encodingFormat": "video/mp4",
    "name": "Custom title",
    "description": "Custom description",
    "duration": "PT1M33S",
    "uploadDate": "2023-01-29T05:57:54+02:00",
    "bitrate": "4128",
    "width": "1920",
    "height": "1080"
}
</script>

Note that the <script type="application/ld+json"> and </script> html tags are required by yt-dlp, as is "@type": "VideoObject" in the JSON

Thanks alot, I wanted to implement this after making the Website for Discord, turns out that the open graph properties do the job as well.

When the generic extractor detects a direct video link, the only response headers that it pays attention to are last-modified, the value of which is extracted as timestamp, and content-type, which it only uses to check for a dash/hls/f4m manifest and set the format_id. You can see some of the relevant code here:
https://github.com/yt-dlp/yt-dlp/blob/05997b6e98e638d97d409c65bb5eb86da68f3b64/yt_dlp/extractor/generic.py#L2397-L2431
The file extension is determined from the URL, so if that extension-less localhost URL doesn't redirect to one with an extension, then yt-dlp ends up using unknown_video as ext
If you want to provide yt-dlp with more metadata without writing your own custom extractor, one option would be to have your server return a JSON LD response that points to the actual file URL instead of returning the file itself. Something like this:
<script type="application/ld+json">
{
    "@context": "https://schema.org",
    "@type": "VideoObject",
    "contentUrl": "http://<IP_ADDRESS>:4040/video/actual_file_url",
    "encodingFormat": "video/mp4",
    "name": "Custom title",
    "description": "Custom description",
    "duration": "PT1M33S",
    "uploadDate": "2023-01-29T05:57:54+02:00",
    "bitrate": "4128",
    "width": "1920",
    "height": "1080"
}
</script>

Note that the <script type="application/ld+json"> and </script> html tags are required by yt-dlp, as is "@type": "VideoObject" in the JSON

I did end up doing the LD JSON method for maximum information, and it works, but yt-dlp priotizes the HTML5 Embed, so if I put the Video in a  tag, yt-dlp will get the metadata(Which are incomplete) from it instead of the json. Putting the video on  makes yt-dlp read the json, but it breaks compatibility with the Safari Browser (Works on chrome). Is there a way to force it to read the LD json instead?

Is there a way to force it to read the LD json instead?

--ies all,-html5
or
'allowed_extractors': ['all', '-html5']


Greg/476/sqlite

This PR fixes a bug in the SQLiteAdapter. It does not now update the value when the key already exists.
This PR also makes the aggregator to use SQLite as adapter for all its stores.

Duplicate of #477
Commit fd5807a has been cherry-picked into this PR's branch.


channeldb: change balance fields to tlv records and migrate historical bucket

This PR makes two changes,

use tlv to store the two balance fields.
patch empty balance values to historical channels. Since the revocation logs are removed when the channel is closed, it's not possible to find the balance info again. To avoid serialization/deserialization errors, we patch them with empty values. For historical channels after the revocation log PR, those fields should have the values again.

Fixes #6549 #6548

On my testnet node:
2022-05-19 12:30:47.404 [INF] CHDB: Performing database schema migration
2022-05-19 12:30:47.404 [INF] CHDB: Applying migration #26
2022-05-19 12:30:47.405 [INF] CHDB: Applying migration #27
2022-05-19 12:30:47.405 [INF] CHDB: Unable to apply migration #27
2022-05-19 12:30:47.405 [ERR] LTND: unable to open graph DB: unable to fetch chan info: unexpected EOF
2022-05-19 12:30:47.405 [ERR] LTND: Shutting down because error in main method: unable to open databases: unable to open graph DB: unable to fetch chan info: unexpected EOF

On one of my testnet nodes (the other didn't have this issue):
2022-05-19 12:30:47.404 [INF] CHDB: Performing database schema migration
2022-05-19 12:30:47.404 [INF] CHDB: Applying migration #26
2022-05-19 12:30:47.405 [INF] CHDB: Applying migration #27
2022-05-19 12:30:47.405 [INF] CHDB: Unable to apply migration #27
2022-05-19 12:30:47.405 [ERR] LTND: unable to open graph DB: unable to fetch chan info: unexpected EOF
2022-05-19 12:30:47.405 [ERR] LTND: Shutting down because error in main method: unable to open databases: unable to open graph DB: unable to fetch chan info: unexpected EOF

Thanks for reporting! Could you patch this PR and start it again? I've added more verbose error messages to hopefully debug what's going on there.

2022-05-19 13:11:28.397 [ERR] LTND: unable to open graph DB: unable to fetch chan info: read FundingTxn got: unexpected EOF

I added a bunch of debug statements in there and this one is triggered:
case **wire.MsgTx:
		tx := wire.NewMsgTx(2)
		if err := tx.Deserialize(r); err != nil {
			return fmt.Errorf("q %v", err)
		}

		*e = tx

2022-05-19 13:11:28.397 [ERR] LTND: unable to open graph DB: unable to fetch chan info: read FundingTxn got: unexpected EOF

The funding tx looks weird. I added more verbose error messages to fetch the channel point, could you run it again?

2022-05-19 13:28:58.062 [INF] CHDB: Performing database schema migration
2022-05-19 13:28:58.062 [INF] CHDB: Applying migration #26
2022-05-19 13:28:58.063 [INF] CHDB: Applying migration #27
2022-05-19 13:28:58.075 [INF] LTND: Database(s) now open (time_to_open=5.028657158s)!

I published my old state, maybe that helps figuring out what went wrong?
https://c-otto.de/lnd.tar.bz2

2022-05-19 13:36:46.668 [ERR] LTND: unable to open graph DB: 32fc40c53d1116bc91782626f243058a51efafc209ac9d75825dfac42413db28:0: fetch chan info got: read FundingTxn got: unexpected EOF

2022-05-19 13:36:46.668 [ERR] LTND: unable to open graph DB: 32fc40c53d1116bc91782626f243058a51efafc209ac9d75825dfac42413db28:0: fetch chan info got: read FundingTxn got: unexpected EOF

Messaged you on slack.

On one of my testnet nodes (the other didn't have this issue):
2022-05-19 12:30:47.404 [INF] CHDB: Performing database schema migration
2022-05-19 12:30:47.404 [INF] CHDB: Applying migration #26
2022-05-19 12:30:47.405 [INF] CHDB: Applying migration #27
2022-05-19 12:30:47.405 [INF] CHDB: Unable to apply migration #27
2022-05-19 12:30:47.405 [ERR] LTND: unable to open graph DB: unable to fetch chan info: unexpected EOF
2022-05-19 12:30:47.405 [ERR] LTND: Shutting down because error in main method: unable to open databases: unable to open graph DB: unable to fetch chan info: unexpected EOF

Ok I think I found the issue. It turns out the historical channel was created after migration25 was applied. So the info would have the fields InitialLocalBalance and InitialRemoteBalance presented. The latest update should fix this case too.

Nice addition with that last update: confirmed locally it hits that fall back path which exercises the migration for those that have closed channels after migration25, but before this one.


Display issue

I opened up an image and this is what ti looks like

Commented out lines of code setting screen background colour to denote whether the user is view a single image or an image series.


Improvements for CI Support

🏗 Enhancement Proposal
NuKeeper as currently written is problematic when trying to use it for CI purposes.

It makes the assumption that Git is configured as it would be on a developers machines. i.e. user and email set in git config. However, this is not necessarily the case on a build machine.
I makes assumptions about where NuGet.exe might be located which again is not necessarily true on a build machine.
When it fails to perform its function it does not return a suitable exit code to enable the build process to take suitable actions. In most config parsing situations it appears to return 0.

These assumptions are not documented and only evident if you spend some time looking at the code or by debugging.
Pitch
I suggest the following improvements:-

Remove the need for Git configuration. Maybe use defaults such the user you already have from the creds and<EMAIL_ADDRESS>as the email. Failing that allow the values to be specified on the command line.
Allow the nuget.exe path to be specified on the command line.
Only return 0 if the program is entirely successful at updating the packages.config etc and creating the PR or if there is nothing to do. Otherwise return some error value.

Platforms affected (mark all that apply)

[x] :hammer_and_wrench: NuKeeper CLI
[ ] :sparkles: GitHub
[ ] :robot: AzureDevops
[ ] :checkered_flag: Bitbucket
[ ] :earth_americas: Gitlab
[ ] :tv: Gitea
[ ] :whale: Docker

Related to #988 930


Add SLURMRunner from jacobtomlinson/dask-hpc-runners

Towards #638
As we decided that the code from jacobtomlinson/dask-hpc-runners would be best to live in this repo this PR adds the SLURMRunner along with the base class and other core code.
Design
The core assumption in the design of the runner model is that the same script will be executed many times by a job scheduler.
(mpirun|srun|qsub|etc) -n4 myscript.py
├── [0] myscript.py
├── [1] myscript.py
├── [2] myscript.py
└── [3] myscript.py

Within the script the runner class is created.
from dask_jobqueue import SomeRunner
from dask.distributed import Client

with SomeRunner(**kwargs) as runner:
    with Client(runner) as client:
        client.wait_for_workers(2)
        # Do some Dask work

This will result in multiple processes runnning on an HPC that are all instantiating the runner class.
The processes need to coordinate to decide which process should run the Dask Scheduler, which should be Dask Workers and which should continue running the rest of the client code within the script. This coordination happens during the __init__() of the runner class.
The Scheduler and Worker processes exit after they complete to avoid running the client code multiple times. This means that only one of the processes will continue past the __init__() of the runner class, the rest will exit at that point after the work is done.
Base class
In the new file runner.py contains the BaseRunner class that can be used for implementing other runners. It also includes an AsyncRunner class that is used for testing.
The minimum required to implement a new runner is the following methods.
from dask_jobqueue.runner import BaseRunner

class MyRunner(BaseRunner):

    async def get_role(self) -> str:
        """Figure out whether I am a scheduler, worker or client.

        A common way to do this is by using a process ID. Many job queues give each process
        a monotonic index that starts from zero. So we can assume proc 0 is the scheduler, proc 1
        is the client and any other procs are workers.
        """
        ...

    async def get_scheduler_address(self) -> str:
        """If I am not the scheduler discover the scheduler address.

        A common way to do this is to read a scheduler file from a shared filesystem.

        Alternatively if the scheduler process can broadcast it's address via something like MPI
        we can define ``BaseRunner.set_scheduler_address()`` which will be called on the scheduler
        and then recieve the broadcast in this method.
        """
        ...

The BaseRunner class handles starting up Dask once these methods have been implemented. It also provides many stubbed out hooks to allow you to write code that runs before/after each component is created. E.g BaseRunner.before_scheduler_start(), BaseRunner.before_worker_start() and BaseRunner.before_client_start().
The runner must know the address of the scheduler so that it can coordinate the clean shutdown of all processes when we reach the end of the code (either via __exit__() or a finalizer). This communication happens independently of any clients that may be created.
Slurm implementation
This PR also adds a Slurm implementation to slurm.py.
In the get_role() method I use the SLURM_PROCID environment variable to infer the role.
I also add a default scheduler option to set the scheduler_file="scheduler-{job_id}.json" and I look up the Job ID from the SLURM_JOB_ID environment variable to ensource uniqueness. This effectively allows us to broadcast the scheduler address via the shared filesystem.
Then in the get_scheduler_address() method I wait for the scheduler file to exist and then open and read the address from the scheduler file in the same way the dask.distributed.Client does.
Example
# myscript.py
from dask.distributed import Client
from dask_jobqueue.slurm import SLURMRunner

with SLURMRunner(scheduler_file="/path/to/shared/filesystem/dask-slurm-{job_id}.json") as runner:
    with Client(runner) as client:
        client.wait_for_workers(2)
        # Do some Dask work

Then I can submit this script via srun or an sbatch script.
srun -n4 myscript.py

TODO

[x] Add base runner class
[x] Add base tests
[x] Add Slurm runner
[x] Add Slurm tests
[x] Update documentation

I'm going to mark this as ready to review as all the tehnical work is done and the tests are passing (ignore the failed SGE test #653).
It still needs docs but I'd love to get a review, even just a high level design review, before I dive into writing up the documentation. @guillaumeeb @lesteve @kmpaul if any of you have time to take a look I'd really appreciate it!

I've gone over the documentation and given is an overhaul to make space for the new features.

I've consolidated the existing documentation under the Dynamic Clusters section.
I've added a new Batch Runners section to document the new classes.
I've updated the index to describe the difference between the two paradigms.
I've also fixed up a few Sphinx warnings, but the existing documentation is largely untouched.
Also added redirects for some of the pages I renamed under the new structure.

Other maintainers of this repo expressed to me via email they they have limited capacity for reviews at the moment. To avoid being blocked on review any longer I'm going to self-merge this. But if anyone wants to revisit this work with a review down the line then I would encourage you to open an issue where we can discuss things.


Support responses like HTTP/1.1 404 öööööööö

Currently this code raises UnicodeDecodeError:
requests.get('http://www.voice.fi//lampaan-kiveksia-ja-coca-cola-hulluutta-5-asiaa-joita-et-tiennyt-islannista-122015?utm_source=feed&utm_medium=feed&utm_content=article_link&utm_campaign=feed').ok
Here is their status:
HTTP/1.1 404 Komponenttia ei löydy
This pull request allow module to handle URLs like this correctly

Generally speaking I'm not too interested in supporting this kind of logic: servers are really not supposed to be sending non-ASCII-bytes in the reason phrase, and choosing to assume that UTF-8 is being used is really fairly optimistic.
However, in the case of raise_for_status, we're exploding in a situation that we don't need to. RFC 7230 says we should ignore the reason phrase, and we're choosing not to do that, so the least we should do is not explode if it's weird. For that reason, I'm in favour of a patch like this, though I'd like us to change the decode logic to make sure that we will always successfully decode the reason phrase, even if we decode it to gibberish.

@Lukasa is reason.decode('utf-8', 'ignore') ok?

'ignore' is fine.

@Lukasa done, updated PR

@Lukasa done

Cool, I'm happy with this as-is. I'd like @sigmavirus24 to ACK as well, if possible.

I have a question or two inline. Otherwise, I agree we shouldn't have this exception raised, even if the server is in the wrong.

@gugu just use u''. Further, stop importing six. It's not a dependency of requests.

six is a test dependency of requests though, it's acceptable to use there.

six is a test dependency of requests though, it's acceptable to use there.

Sure but there's little sense to using six.u in the tests when we already use u'' in the tests.

@sigmavirus24 @lucasa done, update PR

Thanks @gugu! :sparkles: :cake: :sparkles: :fireworks:

y'all emoji-chain thieves!

Is there any plan to make a new Pypi release? We would rather bump requests' version in our dependencies instead of referencing a GitHub commit.
(We're affected because of the raven library calling response.ok on all our requests calls)

We're currently tentatively planning a release for next week. =)

Great

Thank you guys for v2.11!


[Q] Hyperband badly documented. min_iter doesn't do what is expected

I am trying to run a sweep with hyperband but I am facing two issues. First, the documentation on wandb is quite lacking. Nowhere it says what the 4 parameters are supposed to mean (it does direct you to the paper, but it's complex to understand those even from there).
Second, the min_iter parameter for hyperband, should specify the minimum iteration before stopping? If so it's not working, no matter what I put for min_iter (and also for s) it stops as early as 2 iterations into the process. I want it to carry out for at least 7. Here is the code:
early_terminate:
  type: hyperband
  s: 2
  min_iter: 7
  max_iter: 19

Sorry - I will do a pass on the docs at https://docs.wandb.ai/sweeps/configuration#stopping-criteria and add some examples.   You should only define min_iter or max_iter and this will define the bands where a run might stop. So if you set eta to 3 (default), max_iter to 19 and s to 2 you will get brackets at floor(19/3)=6 and floor(19/3^2)=2.
Does this make sense? This is a little hard to explain.

Hi @jbmorgado could you please share a link to the page you were looking at previously that didn't have good examples?

After calculating out these brackets, what is the next step to use them to determine when the run should be stop early ? I tried to put hyperband in my configuration, but i have run 4 times, i haven't seen any run stopped early, they all run to the end of last epoch. I would very appreciate if you could  make a video or any intuitive way that show us how to use hyperband and what is the normal running behaviour should look like.


Support IBM Cloud Logs as a target for Activity Tracking logs

The activity_tracker submodule is missing support for Cloud Logs as a target

:tada: This issue has been resolved in version 2.17.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


WIP: fix #6913, feat($compiler): add support of v-local directive to provide a way to…

… set local variable in template
fix #6913

What kind of change does this PR introduce? (check at least one)

[ ] Bugfix
[x] Feature
[ ] Code style update
[ ] Refactor
[ ] Build-related changes
[ ] Other, please describe:

Does this PR introduce a breaking change? (check one)

[ ] Yes
[x] No

If yes, please describe the impact and migration path for existing applications:
The PR fulfills these requirements:

[x] It's submitted to the dev branch for v2.x (or to a previous version branch), not the master branch
[x] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)
[x] All tests are passing: https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md#development-setup
[x] New/updated tests are included

If adding a new feature, the PR's description includes:

[x] A convincing reason for adding this feature (to avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it)

Other information:

👋 community user here adding thoughts
i appreciate the interest in this feature and also respect your time in creating, however I don't think that increasing the scope, complexity and maintenance of Vue core is worth the cost of this feature because it could be handled in userland.

@Austio It's happy (and rare) to see users ask for not adding a feature 😄 . I do share the same sentiment with you. Let's move the discussion to the original issue #6913 and keep pull request thread for code review.

I'm closing this since I share a similar concern (the tradeoff between codebase complexity vs. the benefits).
Instead, I think we should look at how to make scoped slots syntax even simpler so a less-verbose userland helper component becomes possible.

I'm closing this since I share a similar concern (the tradeoff between codebase complexity vs. the benefits).
Instead, I think we should look at how to make scoped slots syntax even simpler so a less-verbose userland helper component becomes possible.

I think this one should be reconsidered.  I think people are moving to Alpine.js because it's so easy to sprinkle declarative rendering in server-side templates.  At the very minimum, I'd suggest some documentation on how to do this in Vue.js.
As an example, you can make "Django components" like this...
In base.html, you have:

Welcome to my site

  {% include "MySimpleVueToggleButton.html" with prop1="Hello" prop2="World" only %}

In MySimpleVueToggleButton.html:
{{ prop1 }}
{{ prop2 }}

  <button type="button" v-on:click="myvar = (myvar === 'Off') ? 'On' : 'Off'">{{ myvar }}</button>

I'd love to do this in Vue.js, but it's not clear (at least to me) how to do so with the current docs.  Please let me if I'm missing something.  Thanks!

@yyx990803 @posva
I agree with @pandichef that this should be reconsidered. This was closed before the release of petite-vue and it would make it easier for people converting from petite-vue to the full Vue experience.


Prevent Bots/Robots/Crawlets from getting passed Scala Kinesis Enrich

Is there a way to reject bots entirely from getting passed enrich ?
From what I saw currently it just classifies them as br_type: Robot , I exclude these when I do queries to get pageviews and other events but it seems that it doesn't detect all of them for example Apple Bot is viewed as a normal browser...
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Applebot/0.1;  http://www.apple.com/go/applebot)
Is there a way to manually add bots to make enrich at least detect them? it would be better if it was possible to reject or send them to the bad kinesis stream, I guess it would be better to have them in there if people actually want to know what they do on their website, this could be based on the feature that classifies them as bots currently.
For me having bots in the stats seems pretty pointless since I need to exclude them, they shouldn't be there in the first place.

Hi @xkidro!
In terms of better bot detection - the people to speak to are the IAB/ABC, who maintain a list: http://www.iab.com/guidelines/iababc-international-spiders-bots-list/ It would be cool to have a Snowplow Enrichment which used the IAB/ABC bots and spiders list.

For me having bots in the stats seems pretty pointless since I need to exclude them, they shouldn't be there in the first place.

Lots of users don't want the bots in their event stream, but of course some do - in fact some are using Snowplow only to detect bots.

it would be better if it was possible to reject or send them to the bad kinesis stream

We have thought about adding filtering capabilities to Kinesis Enrich, but it a) makes the event stream harder to audit and b) breaks the Unix philosophy of small stream workers which do one thing well. Instead, we are planning on creating a dedicated forker/filterer for Kinesis, here: https://github.com/snowplow/kinesis-tee

Duplicate of #937, closing


socket: Remove the unused nx_xxx functions

Summary

net: Remove the unused nx_send to prefer psock_send for kernel
net: Remove the unused nx_recv[from] to prefer psock_recv[from] for kernel

Impact
Code refactor only
Testing
Internal test

@xiaoxiang781216 removing _NX_SEND() will not make the API unsymmetrical since it still haveing _NX_RECV() ? Why not to create a new macro for _NX_SEND() ?

@acassis the second patch remove _NX_RECV/_NX_RECVFROM.

@xiaoxiang781216 removing _NX_SEND() will not make the API unsymmetrical since it still haveing _NX_RECV() ? Why not to create a new macro for _NX_SEND() ?

@acassis the second patch remove _NX_RECV/_NX_RECVFROM.

Oh sorry, I missed the second commit in this PR

@acassis could you merge it?


Sync with just added port

Hey, thanks so much for making this port!  I've added it to the ports tree with a couple of minor changes.  They're all here so you can keep your repo in sync.  Nice work!
Remove the need to edit pkg-plist on minor updates
Shorten install targets using loops
Realign added lines

As promised, here's a Makefile target to automatically generate the necessary GH_TUPLES lines.

Thank you very much for your help and for doing the commit work.


New interpolateFromCurve, interpolateCardinal, interpolateCatmull-Rom & interpolateMonotoneX

Although D3 has a wide selection of curve functions; curveMonotoneX, curveCardinal etc. for generating SVG curves, there is not as many interpolate functions for situations where, rather than SVG, we want to interpolate values for other use, for example in my case X3DOM IndexedFaceSet.
This PR adds 4 new interpolation functions which compliment the existing intrpolateBasis function:

interpolateFromCurve which can be passed values and a d3.curve function and returns an interpolator, for example: d3Interpolate.interpolateFromCurve(values, d3.curveMonotoneX);
interpolateCardinal, interpolateCatmullRom & interpolateMonotoneX are all basically shortcut functions to the interpolateFromCurve above.

These have been developed with the help from a fellow X3DOM developer @andreasplesch who came up with the the original draft version of interpolateFromCurve.
To see a demo of these in action see:
https://observablehq.com/@jamesleesaunders/why-are-there-no-d3-interpolatecardinal-and-d3-interpolate
The problem with this function is considerably inefficient because, under the hood, it has to create a detached SVG element, generate the curve then reverse engineer the SVG curve back to values. The process of converting values -> curve -> svg -> values is a little bit long winded and could be a little heavy.

Here is the original function on observable: https://observablehq.com/@andreasplesch/svg-path-sampler
It can be imported into other notebooks, for example: https://observablehq.com/@andreasplesch/line-chart
Here is a discussion: https://talk.observablehq.com/t/obtain-interpolated-y-values-without-drawing-a-line/1796

Thanks for the pull request. I recommend you release this as a standalone module. I tend to keep the core modules small.

Thanks for reviewing Mike, I will indeed consider releasing this as a standalone module. But before I do I’d be interested to know you have seen much appetite for a potential d3.interpolateCardinal etc. Type function? Other than myself (and the people on [this Observable thread] (https://talk.observablehq.com/t/obtain-interpolated-y-values-without-drawing-a-line/1796). Has this been requested before?
I am happy to close this PR and go for separate module but would like to make one last bid for consideration for it to go into core as I think this would benefit other non-SVG based applications.
Thanks for all you great work Mike!

I have not heard any other requests for this feature.
Also, I would suggest parametric evaluation of curves rather than using SVG’s getPointAtLength, as shown here for cubic Bézier segments:
https://observablehq.com/@mbostock/fourier-series-path-sampling

Requests for interpolators corresponding to the curves do come up regularly, Here is one: #52 . It is a natural expectation.
Parametric sampling would help a bit with convergence during bisection which then would use t instead of length but requires a lot of code (until svg path normalization becomes implemented). For high curvature, very winding paths, it might actually slow down convergence a bit since the search may have to go through many densely sample portions. Then again, these portions would also have a lot of the length of the total. Interrupted paths presumably would just work.

Thanks @mbostock I have opted to create this as a standalone module https://github.com/jamesleesaunders/d3-interpolate-curve should you ever want to include this in core I would be more than happy to help.
@andreasplesch I hope you don't mind me taking the reins on this one. I have added you as a collaborator to d3-interpolate-curve please feel free to contribute as you see fit.

I don’t think you would need any bisection or search at all—just direct evaluation. See interpolateBasis for example: the total curve is divided into n segments, which are then evaluated using the basis function.
https://github.com/d3/d3-interpolate/blob/master/src/basis.js

Yes, but only if you want the x and y of a given t, no ? Often what is needed is the y of an x.

Correct, yes. In the case of interpolateBasis it’s simply f(t) outputs a number in [0, n] that is then passed to a piecewise linear interpolator. In the general case of a two-dimensional curve in xy there could be more than one y-value for a given x.

True, the general case needs the parametric form. The case of a single-valued function (http://mathworld.wolfram.com/Function.html) is the common case and is often expected to be evaluated as y(x). And people then just use the curves to fit something and want to access it as y(x).


feat: add parameter aliases in tsdoc

Current dependencies on/for this PR:

add-dependency-params-pt2

PR #7   👈

This comment was auto-generated by Graphite.


Fix building boost.mpi

Currently the boost-mpi port says that it has build boost.mpi successful but it actually did not build anything.
This is because boost.mpi is skipped by default and has to be enabled via using mpi ; in the user-config.jam manually.
This PR enables building boost.mpi and adds msmpi as a dependency to it. Additionally I had to add boost.serialization to the Jamroot.jam file, since boost.mpi depends on it.

We already tried internally and didn't get too far ;)
If the connection between the libraries is including special headers, then I think it's actually best to just remove the dependency links from boost-odeint and boost-graph-parallel. Features are needed to ensure a particular library gets rebuilt when a dependency changes and to sequence builds -- since these don't need that afaict, I think it will be better to just not specify anything. If the user happens to install boost-mpi, everything will Just Work regardless of the installation order.
In the case of boost, it is probably reasonable to add an mpi feature. Rebuilding is near-instant since it is just a stub package anyway.
We do generate optional dependencies for a few sublibraries [1][2].
[1] https://github.com/Microsoft/vcpkg/blob/a0648c23afd9f081bf8d88a41a6842e969f05805/ports/boost-vcpkg-helpers/generate-ports.ps1#L43-L51
[2] https://github.com/Microsoft/vcpkg/blob/a0648c23afd9f081bf8d88a41a6842e969f05805/ports/boost-vcpkg-helpers/generate-ports.ps1#L91-L110

I've applied the changes we discussed.
Thanks for the PR!

Thank you for having left optional boost-mpi now that it is working. Due to the fact that MSMPI does not work in all triplets (#2059), it was a little troublesome but I was able to update to latest boost removing first some components and then re-installing them (upgrading was continuously triggering the new MSMPI dependency)


fix(layout): remove google analytics

We need to have a cookie consent element in place to be able to serve google analytics.
This is a temporary solution until we have a cookie consent element.
Signed-off-by: Milo Casagrande<EMAIL_ADDRESS>

Docs for b3541a8f409b3455e374d45a5b4adee9058e1957 are browsable at: https://ci.foundries.io/projects/fio-docs/builds/1844/docs/artifacts/html/index.html


Support old versions of urllib3

Changes
This PR changes the SDK to tolerate urllib3 < 1.26.0. In these versions of urllib3, Retry class's DEFAULT_ALLOWED_METHODS was called DEFAULT_METHOD_WHITELIST, and the parameter in Retry's constructor was changed from method_whitelist to allowed_methods. With this change, users using older versions of DBR (like the 7.3 LTS) can still use the current version of the SDK, even though the version of urllib3 is old.
This change can be reverted when we no longer need to support urllib3 < 1.26.0 (i.e. after DBR 10.4 LTS, which is EOL on March 18, 2025).
Test

[x] Manually tested on DBR 7.3LTS:
[x] Manually tested on DBR 13.2:

Codecov Report
Patch coverage: 66.66% and project coverage change: +0.01 :tada:

Comparison is base (ba4d26a) 53.23% compared to head (86dbaf1) 53.24%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #240      +/-   ##
==========================================
+ Coverage   53.23%   53.24%   +0.01%
==========================================
  Files          32       32
  Lines       19147    19154       +7
==========================================
+ Hits        10193    10199       +6
- Misses       8954     8955       +1

Impacted Files
Coverage Δ

databricks/sdk/core.py
67.38% <66.66%> (-0.01%)
:arrow_down:

... and 2 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Nesting Promise.then() blocks causes module mock to reset

🐛 Bug Report
Nesting Promise.then() blocks causes module mock to reset
This code was causing the cross-fetch mock we use to reset which was causing test to fail with Cannot read property 'then' of undefined error. This is because we mock fetch() (default cross-fetch export) in our test to return a Promise.resolve(someData) to fake network request.
Broke
 handleInactivate() {
    const {
      selectedRows,
      inactivateRetailers,
      getRetailers,
      selectionChanged,
      getRetailersIncludingInactives,
      userContext: { distributorId },
      filter
    } = this.props;

    const selectedRetailersIds = selectedRows.map(r => r.id);

    inactivateRetailers({ retailersIds: selectedRetailersIds })
      .then(
        () =>
          filter.showInactive
            ? getRetailersIncludingInactives(distributorId, {
                useCaching: false,
                noBusySpinner: false
              })
            : getRetailers(distributorId, false)
              .then(() => {
                getRetailersIncludingInactives(   // <====== this call blows up
                  distributorId, {
                  useCaching: false,
                  noBusySpinner: true
                });
              }
              )
      )
      .then(this.refreshGrid(this.retailers.retailersGrid))
      .catch(handleError);
  }

However, if we flatten out the promises like below the mock doesn't reset and nothing blows up.
Works
  handleInactivate() {
    const {
      selectedRows,
      inactivateRetailers,
      getRetailers,
      selectionChanged,
      getRetailersIncludingInactives,
      userContext: { distributorId },
      filter
    } = this.props;

    const selectedRetailersIds = selectedRows.map(r => r.id);

    inactivateRetailers({ retailersIds: selectedRetailersIds })
      .then(
        () =>
          filter.showInactive
            ? getRetailersIncludingInactives(distributorId, {
                useCaching: false,
                noBusySpinner: false
              })
            : getRetailers(distributorId, false)
      )
      .then(() => filter.showInactive
        ? Promise.resolve()
        : getRetailersIncludingInactives(  // <=== logically same pattern but doesn't blow up
          distributorId, {
            useCaching: false,
            noBusySpinner: true
          }
        )
      )
      .then(this.refreshGrid(this.retailers.retailersGrid))
      .catch(handleError);
  }

How do I know that the mock is resetting?
To validate this I added some logging code
console.log('===> about to fetch', fetch, fetch.mock && fetch.mock.calls);
and the output shows the fetch.mock.calls getting reset to be empty after a few calls as shown below.
  console.log src\modules\http\http.js:86
    ===> about to fetch function fetch() {return mockConstructor.apply(this,arguments);} []

  console.log src\modules\http\http.js:86
    ===> about to fetch function fetch() {return mockConstructor.apply(this,arguments);} [ [ 'http://localhost:55885/api/v1/pricesource/distributors/undefined/items',
        { Accept: 'application/json',
          'Content-Type': 'application/json',
          headers: [Object] } ] ]

  console.log src\modules\http\http.js:86
    ===> about to fetch function fetch() {return mockConstructor.apply(this,arguments);} [ [ 'http://localhost:55885/api/v1/pricesource/distributors/undefined/items',
        { Accept: 'application/json',
          'Content-Type': 'application/json',
          headers: [Object] } ],
      [ 'http://localhost:55885/api/v1/pricesource/distributors/undefined/groups',
        { Accept: 'application/json',
          'Content-Type': 'application/json',
          headers: [Object] } ] ]

  console.log src\modules\http\http.js:86
    ===> about to fetch function fetch() {return mockConstructor.apply(this,arguments);} [ [ 'http://localhost:55885/api/v1/pricesource/distributors/undefined/items',
        { Accept: 'application/json',
          'Content-Type': 'application/json',
          headers: [Object] } ],
      [ 'http://localhost:55885/api/v1/pricesource/distributors/undefined/groups',
        { Accept: 'application/json',
          'Content-Type': 'application/json',
          headers: [Object] } ],
      [ 'http://localhost:55885/api/v1/pricesource/distributors/undefined/retailers',
        { Accept: 'application/json',
          'Content-Type': 'application/json',
          headers: [Object] } ] ]

  console.log src\modules\http\http.js:86
    ===> about to fetch function fetch() {return mockConstructor.apply(this,arguments);} [ [ 'http://localhost:55885/api/v1/pricesource/distributors/undefined/items',
        { Accept: 'application/json',
          'Content-Type': 'application/json',
          headers: [Object] } ],
      [ 'http://localhost:55885/api/v1/pricesource/distributors/undefined/groups',
        { Accept: 'application/json',
          'Content-Type': 'application/json',
          headers: [Object] } ],
      [ 'http://localhost:55885/api/v1/pricesource/distributors/undefined/retailers',
        { Accept: 'application/json',
          'Content-Type': 'application/json',
          headers: [Object] } ],
      [ 'http://localhost:55885/api/v1/pricesource/distributors/undefined/retailers/plusinactives',
        { Accept: 'application/json',
          'Content-Type': 'application/json',
          headers: [Object] } ] ]

  console.log src\modules\http\http.js:86
    ===> about to fetch function fetch() {return mockConstructor.apply(this,arguments);} [ [ 'http://localhost:55885/api/v1/pricesource/distributors/undefined/items',
        { Accept: 'application/json',
          'Content-Type': 'application/json',
          headers: [Object] } ],
      [ 'http://localhost:55885/api/v1/pricesource/distributors/undefined/groups',
        { Accept: 'application/json',
          'Content-Type': 'application/json',
          headers: [Object] } ],
      [ 'http://localhost:55885/api/v1/pricesource/distributors/undefined/retailers',
        { Accept: 'application/json',
          'Content-Type': 'application/json',
          headers: [Object] } ],
      [ 'http://localhost:55885/api/v1/pricesource/distributors/undefined/retailers/plusinactives',
        { Accept: 'application/json',
          'Content-Type': 'application/json',
          headers: [Object] } ],
      [ 'http://localhost:55885/api/v1/pricesource/deactivateRetailersRequest',
        { body: '{"retailersIds":["-2"]}',
          headers: [Object],
          Accept: 'application/json',
          'Content-Type': 'application/json',
          method: 'POST' } ] ]

  console.log src\modules\http\http.js:86
    ===> about to fetch function fetch() {return mockConstructor.apply(this,arguments);} []

To Reproduce
Steps to reproduce the behavior:
I put our code that causes this above. Because it's using nested promises it seems hard to create a small sample to pre
Expected behavior
Expect the mock to continue to work and not reset during test run.
Link to repl or repo (highly encouraged)
Please provide either a repl.it demo or a minimal repository on GitHub.
Issues without a reproduction link are likely to stall.
Run npx envinfo --preset jest
Paste the results here:
C:\code\FinTech PriceSource\Dev\PriceSource\PriceSource.UI>npx envinfo --preset jest
npx: installed 1 in 3.191s
Path must be a string. Received undefined
npx: installed 1 in 2.662s
C:\Users\ryanvice\AppData\Roaming\npm-cache\_npx\736\node_modules\envinfo\dist\cli.js

  System:
    OS: Windows 10
    CPU: x64 Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
  Binaries:
    npm: 5.6.0 - C:\Program Files\nodejs\npm.CMD

Could you set up a reproduction showing the error? The sample is well and good, but a running example is more likely to get attention quicker 🙂

@SimenB I doubt I will have time to create a reproduction as you have to have a pretty complex setup to create this but if I have time I might take a swing at it.
In the meantime hopefully reporting what seems like a bug to me (definitely unexpected behavior) can be helpful in someway, if nothing else it can help other folks with the work around that I found.

I'm not sure why you get an error, but in general you need to wait for your promises in the test. My guess is that since you don't wait, the single tick difference is what bites you.
All .then and .catch happens in the next tick, so it's always async.

That's a good guess. We uses Promise's and setTimeout in our tests to move the execution to the next tick but maybe I needed to add an extra layer for the additional nesting. I can try it real quick. I should probably write some wait utility like the one in kent dodd's framework.

That said in this case though the number of ticks would be the same for both block though right? All I did was move the nested .then to a changed .then. Maybe I'm lacking some understanding on some nuances here.

@SimenB wow how embarrassing... you were right I was needing one more tick. I've shared my code so that maybe someone else will benefit (look for comments with <=====).
Note that you can use the this library to make waiting for ticks easier: https://github.com/TheBrainFamily/wait-for-expect
Broke
import { mountApp } from '../../../test/behaviors';
import fetch from 'cross-fetch';
import {
  expectNode,
  expectNoErrors,
  resetRedux
} from '../../../test/common.utils';
import mockFetch from '../../../test/mockFetch';
import { resetHttpRequestCache } from '../../../modules/http/httpCache';
import { navigateToRetailers } from './retailers.behaviors';
import { getInactiveDummyRetailersPlusInactives, getInactivesDummyRetailers } from "./inactiveRetailers.data";

jest.mock('cross-fetch');

describe('Given we are on the items page ', () => {
  afterEach(() => {
    fetch.mockReset();
    resetRedux();
    resetHttpRequestCache();
  });

  describe('and we navigate to the retailers page ', () => {
    describe('and we click the add button and we fill out add retailers form ', () => {
      describe('Then client side validations work properly and once the form is valid we POST correct body to /retailers ', () => {
        it('', done => {
          expectNoErrors(done);

          return mountApp()
            .then(context =>
              navigateToRetailers({
                ...context,
                dummyRetailers: getInactivesDummyRetailers
              })
            )
            .then(selectARetailerRowAndClickEditDeactivate)
            .then(({wrapper, store, calls}) => {
              expect(calls.length).toBe(1);
              calls.expect('/deactivateRetailersRequest', 'post');
            })
            .then(() => done())
            .catch(done.fail);

          function selectARetailerRowAndClickEditDeactivate({
                                                                                wrapper,
                                                                                store
                                                                                }) {
            const calls = [];

            fetch.mockImplementation(
              mockFetch(
                [
                  {
                    url: '/deactivateRetailersRequest',
                    method: 'post',
                    response: () => ({ result: { retailer: [{}] } })
                  },
                  {
                    url: '/plusinactives',
                    response: getInactiveDummyRetailersPlusInactives
                  }
                  ,
                  {
                    url: '/retailers',
                    response: () => {
                      const retailers = getInactivesDummyRetailers();
                      return {
                        result: {
                          companies: retailers.result.companies.filter(r => r.id !== '-2')
                        }
                      }
                    }
                  }
                ],
                { calls }
              )
            );

            const gridContainer = wrapper.find('GridContainer');

            const distributorRow = [{ id: '-2' }];

            gridContainer.props().selectionChanged(distributorRow);

            wrapper.update();

            const expectDeactivateButtonEnabledBecauseADistributorRowSelected = () =>
              expect(wrapper.find('#deactivateButton').props().disabled).toBe(
                false
              );

            expectDeactivateButtonEnabledBecauseADistributorRowSelected();

            expectNode(wrapper.find('#deactivateButton')).simulate('click');

            return Promise.resolve({ wrapper, store, calls });  // <=== we need an extra tick here
          }
        });
      });
    });
  });
});

import { mountApp } from '../../../test/behaviors';
import fetch from 'cross-fetch';
import {
  expectNode,
  expectNoErrors,
  resetRedux
} from '../../../test/common.utils';
import mockFetch from '../../../test/mockFetch';
import { resetHttpRequestCache } from '../../../modules/http/httpCache';
import { navigateToRetailers } from './retailers.behaviors';
import { getInactiveDummyRetailersPlusInactives, getInactivesDummyRetailers } from "./inactiveRetailers.data";

jest.mock('cross-fetch');

describe('Given we are on the items page ', () => {
  afterEach(() => {
    fetch.mockReset();
    resetRedux();
    resetHttpRequestCache();
  });

  describe('and we navigate to the retailers page ', () => {
    describe('and we click the add button and we fill out add retailers form ', () => {
      describe('Then client side validations work properly and once the form is valid we POST correct body to /retailers ', () => {
        it('', done => {
          expectNoErrors(done);

          return mountApp()
            .then(context =>
              navigateToRetailers({
                ...context,
                dummyRetailers: getInactivesDummyRetailers
              })
            )
            .then(selectARetailerRowAndClickEditDeactivate)
            .then(({wrapper, store, calls}) => {
              expect(calls.length).toBe(1);
              calls.expect('/deactivateRetailersRequest', 'post');
            })
            .then(() => done())
            .catch(done.fail);

          function selectARetailerRowAndClickEditDeactivate({
                                                                                wrapper,
                                                                                store
                                                                                }) {
            const calls = [];

            fetch.mockImplementation(
              mockFetch(
                [
                  {
                    url: '/deactivateRetailersRequest',
                    method: 'post',
                    response: () => ({ result: { retailer: [{}] } })
                  },
                  {
                    url: '/plusinactives',
                    response: getInactiveDummyRetailersPlusInactives
                  }
                  ,
                  {
                    url: '/retailers',
                    response: () => {
                      const retailers = getInactivesDummyRetailers();
                      return {
                        result: {
                          companies: retailers.result.companies.filter(r => r.id !== '-2')
                        }
                      }
                    }
                  }
                ],
                { calls }
              )
            );

            const gridContainer = wrapper.find('GridContainer');

            const distributorRow = [{ id: '-2' }];

            gridContainer.props().selectionChanged(distributorRow);

            wrapper.update();

            const expectDeactivateButtonEnabledBecauseADistributorRowSelected = () =>
              expect(wrapper.find('#deactivateButton').props().disabled).toBe(
                false
              );

            expectDeactivateButtonEnabledBecauseADistributorRowSelected();

            expectNode(wrapper.find('#deactivateButton')).simulate('click');

            return new Promise(
              resolve => setTimeout(() => resolve({ wrapper, store, calls }))  // <==== Adding this moves code to next tick and fixes the issue
            );
          }
        });
      });
    });
  });
});

If you replace Promise with e.g. https://www.npmjs.com/package/promise#usage and setImmediate you can use jest fake timers and jest.runAllImmediates to power promises synchronously.
What I would recommend is to somehow make your promise chain available from the outside or otherwise observable. Waiting arbitrary ticks instead of waiting for something concrete is pretty brittle (as you noticed here 🙂)

Those are some great tips thanks. I'm not crazy about the idea of having to modify the code under test to create seams if I don't need to and would probably prefer counting ticks.
Note that wait-for-next will loop and retry the code until it hits a timeout. That would remove the brittle factor. Up to now we've been OK with the idea that our tests are coupled to the tick count of the code under test. I think I probably was just tired yesterday...
Thanks so much for your time and tips!


panic at "no Task is currently running"

I'm trying to write some multithreaded WebSocket code. I'm sending a Remote to another thread then calling spawn on it and sending a message inside the callback. For some reason, it works fine for a bit and then panics like this:
thread 'main' panicked at 'no Task is currently running', ~/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.18/src/task_impl/mod.rs:44:8
stack backtrace:
   0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace
   1: std::sys_common::backtrace::_print
   2: std::panicking::default_hook::{{closure}}
   3: std::panicking::default_hook
   4: std::panicking::rust_panic_with_hook
   5: std::panicking::begin_panic
   6: futures::task_impl::current
   7: <tokio_core::net::tcp::TcpStream as std::io::Write>::write
   8: <tungstenite::protocol::frame::FrameSocket<Stream>>::write_pending
   9: <tungstenite::protocol::WebSocket<Stream>>::send_one_frame
  10: <tungstenite::protocol::WebSocket<Stream>>::write_pending
  11: <F as tokio_core::reactor::FnBox>::call_box
  12: tokio_core::reactor::Core::notify
  13: tokio_core::reactor::Core::consume_queue
  14: tokio_core::reactor::Core::poll
...

I'm not exactly sure how to debug this, especially since it only happens in a release build. Is it the case that there might not be a current task inside a call to "notify"? Is there any way to get it to be called inside a task? Or any way of adding extra debugging checks in tokio-core that could catch the issue?
Sorry to ask here but I'm not sure where to start. Please let me know if there's a better place to ask instead. I found https://github.com/rust-lang-nursery/futures-rs/issues/234 but I wasn't sure how to apply that to my situation. I'm not calling poll() or park() or anything, just core.run().

Closing this because I think I found a different way of doing this that doesn't cause a panic, at least at the moment.


feat(rhineng-5496): combined empty state for workloads table

https://issues.redhat.com/browse/RHINENG-8462
Temporary link that will be used for the docs
https://redhat-internal.slack.com/archives/CLABA9CHY/p1709727002174119?thread_ts=1709718840.715419&cid=CLABA9CHY

Codecov Report
Attention: Patch coverage is 25.00000% with 3 lines in your changes are missing coverage. Please review.

Project coverage is 8.38%. Comparing base (02c3b4a) to head (9fb3005).

Files
Patch %
Lines

...omponents/WorkloadsListTable/WorkloadsListTable.js
0.00%
2 Missing :warning:

src/Components/MessageState/EmptyStates.js
50.00%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff            @@
##           master    #689      +/-   ##
=========================================
- Coverage    8.40%   8.38%   -0.02%
=========================================
  Files          67      67
  Lines        3571    3567       -4
  Branches      809     809
=========================================
- Hits          300     299       -1
+ Misses       3271    3268       -3

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

:tada: This PR is included in version 1.40.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Enable both versioned symbols

The modified curl version uses CURL_OPENSSL_3 for the versioned symbols. Recommend adding both CURL_OPENSSL_3 and CURL_OPENSSL_4 to prevent breaking other libraries that may depend on CURL_OPENSSL_4.

The curl dependency will be removed in 5.0: https://github.com/dotnet/runtime/issues/28891#issuecomment-539705582

Added support for 5.0 in 3c92d36fd3d4dc2ac8b25da7cbb7bcaed4f713a9. I confirmed their binaries do remove the dependency for curl. I still need to update the bbappend to only target 2.x and 3.x.

I dropped the 2.x and 3.x versions from master, so I also dropped the curl bbappend.


fix: RTCPeerConnectionWeb.getRemoteStreams

This fixes #44

I just noticed the auto generated parameter e in the map callback.  I would normally have renamed that, but overlooked it in this case.  Happy to change that if you like.


Github Actions: prevent failures of push on fork

Description
This PR introduces small modifications to the build pipeline to prevent failures on forks (especially when pushing on master)
How Has This Been Tested?

Checking the outcome on the main repository
Checking the outcome on a fork

/merge


Wrap fit function for running tests in karma

spec-main adds some customization for running tests in karma.
We forgot to add our customization to the fit function, which is useful for debugging.

Thanks.


remove redundant link

Description
Remove redundant line in build from source doc
https://www.dropbox.com/s/lr3ngjvh16hlnv3/Screenshot 2018-11-27 15.23.26.png?dl=0
Checklist
Essentials
Please feel free to remove inapplicable items for your PR.

[ ] The PR title starts with [MXNET-$JIRA_ID], where $JIRA_ID refers to the relevant JIRA issue created (except PRs with tiny changes)
[ ] Changes are complete (i.e. I finished coding on this PR)
[ ] All changes have test coverage:
Unit tests are added for small changes to verify correctness (e.g. adding a new operator)
Nightly tests are added for complicated/long-running ones (e.g. changing distributed kvstore)
Build tests will be added for build configuration changes (e.g. adding a new build option with NCCL)
[ ] Code is well-documented:
For user-facing API changes, API doc string has been updated.
For new C++ functions in header files, their functionalities and arguments are documented.
For new examples, README.md is added to explain the what the example does, the source of the dataset, expected performance on test set and reference to the original paper if applicable
Check the API doc at http://mxnet-ci-doc.s3-accelerate.dualstack.amazonaws.com/PR-$PR_ID/$BUILD_ID/index.html
[ ] To the my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

Changes

[ ] Remove redundant line in build from source doc

Comments

If this change is a backward incompatible change, why must this change be made.
Interesting edge cases to note here

@nswamy for review/merge

@mxnet-label-bot add [Doc, pr-awaiting-review]

@mxnet-label-bot update [pr-awaiting-merge]


Routing

is there any way to facilitate routing in React with surveyJS. ie the url would be http://localhost:3000/test/1 for question one and  http://localhost:3000/test/2 for question two

@tthamel What do you mean about question one and question two?
Probably you mean page no? I mean you may set routing to change the page no, it is possible.
There is survey.currentPageNo property. It should do a trick.
Thank you,
Andrew

i mean like if i have a sruvey with say 3 questions i want the URL to show https://localhost:3000/1 for the first question and then change to https://localhost:3000/2 for the second question and then https://localhost:3000/3 for the third questions.

@tthamel What do you mean by show first question or changing to the second question? Do they placed on different pages? I just do not understand what do you try to achieve.
Thank you,
Andrew

@tthamel Do you want to show survey questions on appropriate (and different) pages of the react application?
Let's say the route  https://localhost:3000/1 leads to the 1st quesion and so on?

@tsv2013  yes that is exactly what i want to do, if i have 20 questions in the JSON survey i want them to route to their own react pages https://localhost:3000/1 https://localhost:3000/2 https://localhost:3000/3  etc etc..
right now i get all the questions 1-20 and the url stays https://localhost:3000/, i need each question to be its own page for routing purposes

@tthamel Here is the example, that does what you need: https://plnkr.co/edit/jhjCD0?p=preview
Just use gotoQuestion function in your route.
Thank you,
Andrew

In the plunker its still a static index route of /
are you saying that if i hook that gotoQuestion function into my router it will work properly?
is gotoQuestion a hook exposed by the API? i didnt see it in the documentation

@tthamel I you may use the code from gotoQuestion method (it is in the plunker example) in your code.
Thank you,
Andrew

No reply for a long time. I am closing the issue.