MDL module compilation with Slang

A design document for this task is written by @cheneym2 .
This issue is to track the progress of the task.
In short, we want to compile MDL with Slang and see how much the compile time can be saved with the "module feature" of Slang.
The goal is to see the compile time difference.
We also like to see the runtime difference, but the scope of this task wouldn't extend to improve the performance even when it shows slower runtime.
The proposed approach consists of five subtasks.

Converting complex shaders from HLSL to Slang
Utilize existing slang-module capabilities in compilation
Benchmark compilation times
Write a sample renderer test case that utilize the above complex shader modules in a simple rendering application, which verifies correctness and runtime rendering performance
Add support for the embedded precompiled slang-module feature, measuring both compilation and runtime performance differences to the base slang-module case.

For the step 1, we need to figure out how to generate HLSL from MDL system and asses the complexity of the shader. If the complexity is not as high as we expected, we may need to reevaluate the approach of the task.
During the step 1, we may find a few bugs that Slang needs to iron out.
If the generated HLSL from MDL doesn't directly work with Slang, we will need to create new issues and address them properly rather than adding hacks and workaround.
For the step 4, we may be able to reuse an internal unit testing framework that MDL team might be using.
During the step 4, we will also need to evaluate the possibility of adopting the MDL testing framework in our CI like how we do for Falcor.

I am setting the estimate to 6 weeks (30 days).
Each sub task will roughly get 1 week.
@venkataram-nv should feel free to adjust as needed.
If this is not good for task tracking, we can create new issues for each sub task.
But github doesn't have ways to treat issues as subtasks and it may add confusion.

Venki found that there is an open source version of MDL SDK at github.
I found the followings after building and running the examples

An example, "examples/mdl_sdk/code_gen/Release/code_gen.exe", generates HLSL
An example, "examples/mdl_sdk/dxr/Release/dxr.exe", renders a scene at runtime.

I noticed that there are two examples trying to demonstrate "module".
I am not sure what kind of module it is about but it will be worth checking out.

examples/mdl_sdk/create_module/Release/create_module.exe
examples/mdl_sdk/modules/Release/modules.exe

When I built "RUN_TEST" project from MDL.sln, it runs unit tests.
I see that it runs 56 unit tests when I tried, which took about 1 minute 23 seconds on my machine.
The install instruction was not easy to follow, and I like to leave a few notes about it.

I had to use an exact commit ID for vcpkg repo, "fe1e9f5".
I had to add a line "set(VCPKG_PLATFORM_TOOLSET v143)" to a file, "triplets/x64-windows-static.cmake", in vcpkg repo.
I set an environment variable, set VCPKG_ROOT="C:\path\to\vcpkg, and I also added the same path to Path variable.
I installed boost and openimageio with the following commands,

vcpkg install --triplet=x64-windows-static boost-any
vcpkg install --triplet=x64-windows-static boost-uuid
vcpkg install --triplet=x64-windows-static openimageio[gif,openjpeg,tools,webp]

I install a latest Python 3.12.4 from python.org
I installed LLVM 12.0.1 from llvm.org
I downloaded DXC from its release page

When I got to the point where I can run cmake-gui, I also had to deal with errors.

When I clicked on "Configure", I got an error about CMAKE_TOOLCHAIN_FILE. I had to set it to be "C:\path\to\vcpkg\scripts/buildsystems/vcpkg.cmake" inside of the cmake-gui UI.
When I clicked on "Configure" again, it gave me errors again. I had to uncheck the following check boxes,

MDL_BUILD_DOCUMENTATION
MDL_ENABLE_CUDA_EXAMPLES
MDL_ENABLE_OPENGL_EXAMPLES
MDL_ENABLE_VULKAN_EXAMPLES
MDL_ENABLE_QT_EXAMPLES

I had to set DXC_DIR to where the downloaded DXC files are unzipped at.

I am uploading a screenshot from "examples/mdl_sdk/dxr/Release/dxr.exe" as a quick reference.

Here is a unit test result as another quick reference.
I am not sure why one of the tests is failing,
16:59:35:652	1>------ Build started: Project: RUN_TESTS, Configuration: Release x64 ------
16:59:36:337	1>1>
16:59:36:734	1>Test project D:/sbf/git/mdl/MDL-SDK/build/vs2022
16:59:36:908	1>      Start  1: prod-test-base-test
16:59:36:979	1> 1/56 Test  #1: prod-test-base-test ............................   Passed    0.03 sec
16:59:36:979	1>      Start  2: prod-test-math-test
16:59:37:111	1> 2/56 Test  #2: prod-test-math-test ............................   Passed    0.17 sec
16:59:37:111	1>      Start  3: base-data-attr-test
16:59:37:175	1> 3/56 Test  #3: base-data-attr-test ............................   Passed    0.05 sec
16:59:37:175	1>      Start  4: base-data-dblight-test
16:59:37:490	1> 4/56 Test  #4: base-data-dblight-test .........................   Passed    0.32 sec
16:59:37:552	1>      Start  5: base-data-serial-test
16:59:37:552	1> 5/56 Test  #5: base-data-serial-test ..........................   Passed    0.05 sec
16:59:37:552	1>      Start  6: base-data-thread_pool-test
16:59:49:312	1> 6/56 Test  #6: base-data-thread_pool-test .....................   Passed   11.77 sec
16:59:49:312	1>      Start  7: base-hal-disk-test
16:59:49:411	1> 7/56 Test  #7: base-hal-disk-test .............................   Passed    0.10 sec
16:59:49:470	1>      Start  8: base-hal-hal-test
16:59:49:470	1> 8/56 Test  #8: base-hal-hal-test ..............................   Passed    0.04 sec
16:59:49:470	1>      Start  9: base-hal-thread-test
16:59:49:530	1> 9/56 Test  #9: base-hal-thread-test ...........................   Passed    0.02 sec
16:59:49:530	1>      Start 10: base-hal-time-test
16:59:53:316	1>10/56 Test #10: base-hal-time-test .............................   Passed    3.84 sec
16:59:53:385	1>      Start 11: base-lib-config-test
16:59:53:385	1>11/56 Test #11: base-lib-config-test ...........................   Passed    0.05 sec
16:59:53:386	1>      Start 12: base-lib-cont-test
16:59:53:445	1>12/56 Test #12: base-lib-cont-test .............................   Passed    0.03 sec
16:59:53:445	1>      Start 13: base-lib-mem-test
16:59:53:445	1>13/56 Test #13: base-lib-mem-test ..............................   Passed    0.03 sec
16:59:53:445	1>      Start 14: base-lib-path-test
16:59:53:506	1>14/56 Test #14: base-lib-path-test .............................   Passed    0.03 sec
16:59:53:506	1>      Start 15: base-util-string_utils-test
16:59:53:506	1>15/56 Test #15: base-util-string_utils-test ....................   Passed    0.03 sec
16:59:53:506	1>      Start 16: base-system-main-test
16:59:53:566	1>16/56 Test #16: base-system-main-test ..........................   Passed    0.04 sec
16:59:53:566	1>      Start 17: base-system-main-test_impl1_only
16:59:53:627	1>17/56 Test #17: base-system-main-test_impl1_only ...............   Passed    0.03 sec
16:59:53:627	1>      Start 18: base-system-stlext-test
16:59:53:627	1>18/56 Test #18: base-system-stlext-test ........................   Passed    0.04 sec
16:59:53:627	1>      Start 19: base-system-test-test_self
16:59:53:686	1>19/56 Test #19: base-system-test-test_self .....................   Passed    0.04 sec
16:59:53:686	1>      Start 20: io-image-image-test_access_canvas
16:59:54:362	1>20/56 Test #20: io-image-image-test_access_canvas ..............   Passed    0.70 sec
16:59:54:425	1>      Start 21: io-image-image-test_access_mipmap
16:59:54:813	1>21/56 Test #21: io-image-image-test_access_mipmap ..............   Passed    0.45 sec
16:59:54:878	1>      Start 22: io-image-image-test_dds
16:59:55:684	1>22/56 Test #22: io-image-image-test_dds ........................   Passed    0.87 sec
16:59:55:738	1>      Start 23: io-image-image-test_huge_tiles
17:00:00:406	1>23/56 Test #23: io-image-image-test_huge_tiles .................   Passed    4.72 sec
17:00:00:470	1>      Start 24: io-image-image-test_import_export
17:00:34:163	1>24/56 Test #24: io-image-image-test_import_export ..............   Passed   33.75 sec
17:00:34:227	1>      Start 25: io-image-image-test_mipmap
17:00:34:979	1>25/56 Test #25: io-image-image-test_mipmap .....................   Passed    0.81 sec
17:00:34:979	1>      Start 26: io-image-image-test_module
17:00:35:397	1>26/56 Test #26: io-image-image-test_module .....................Exit code 0xc0000409
17:00:35:397	1>***Exception:   0.41 sec
17:00:35:397	1>      Start 27: io-image-image-test_pixel_conversion
17:00:35:973	1>27/56 Test #27: io-image-image-test_pixel_conversion ...........   Passed    0.58 sec
17:00:36:035	1>      Start 28: io-image-image-test_pixel_conversion_sse
17:00:36:765	1>28/56 Test #28: io-image-image-test_pixel_conversion_sse .......   Passed    0.79 sec
17:00:36:835	1>      Start 29: io-image-image-test_quantization
17:00:36:835	1>29/56 Test #29: io-image-image-test_quantization ...............   Passed    0.04 sec
17:00:36:835	1>      Start 30: io-scene-bsdf_measurements-test
17:00:37:120	1>30/56 Test #30: io-scene-bsdf_measurements-test ................   Passed    0.31 sec
17:00:37:120	1>      Start 31: io-scene-mdl_elements-test_types
17:00:37:407	1>31/56 Test #31: io-scene-mdl_elements-test_types ...............   Passed    0.28 sec
17:00:37:407	1>      Start 32: io-scene-mdl_elements-test_values
17:00:37:701	1>32/56 Test #32: io-scene-mdl_elements-test_values ..............   Passed    0.29 sec
17:00:37:754	1>      Start 33: io-scene-mdl_elements-test_expressions
17:00:37:996	1>33/56 Test #33: io-scene-mdl_elements-test_expressions .........   Passed    0.29 sec
17:00:38:055	1>      Start 34: io-scene-mdl_elements-test_misc
17:00:38:551	1>34/56 Test #34: io-scene-mdl_elements-test_misc ................   Passed    0.55 sec
17:00:38:613	1>      Start 35: io-scene-dbimage-test
17:00:39:869	1>35/56 Test #35: io-scene-dbimage-test ..........................   Passed    1.26 sec
17:00:39:869	1>      Start 36: prod-lib-mdl_sdk-test_class_factory
17:00:40:307	1>36/56 Test #36: prod-lib-mdl_sdk-test_class_factory ............   Passed    0.49 sec
17:00:40:307	1>      Start 37: prod-lib-mdl_sdk-test_db_elements
17:00:40:689	1>37/56 Test #37: prod-lib-mdl_sdk-test_db_elements ..............   Passed    0.38 sec
17:00:40:754	1>      Start 38: prod-lib-mdl_sdk-test_idebug_configuration
17:00:41:099	1>38/56 Test #38: prod-lib-mdl_sdk-test_idebug_configuration .....   Passed    0.36 sec
17:00:41:099	1>      Start 39: prod-lib-mdl_sdk-test_ifactory
17:00:41:464	1>39/56 Test #39: prod-lib-mdl_sdk-test_ifactory .................   Passed    0.41 sec
17:00:41:522	1>      Start 40: prod-lib-mdl_sdk-test_i18n
17:00:42:164	1>40/56 Test #40: prod-lib-mdl_sdk-test_i18n .....................   Passed    0.70 sec
17:00:42:218	1>      Start 41: prod-lib-mdl_sdk-test_iimage
17:00:42:581	1>41/56 Test #41: prod-lib-mdl_sdk-test_iimage ...................   Passed    0.41 sec
17:00:42:581	1>      Start 42: prod-lib-mdl_sdk-test_ilogging_configuration
17:00:43:013	1>42/56 Test #42: prod-lib-mdl_sdk-test_ilogging_configuration ...   Passed    0.39 sec
17:00:43:013	1>      Start 43: prod-lib-mdl_sdk-test_imdl_configuration
17:00:43:278	1>43/56 Test #43: prod-lib-mdl_sdk-test_imdl_configuration .......   Passed    0.30 sec
17:00:43:333	1>      Start 44: prod-lib-mdl_sdk-test_imdl_module
17:00:46:139	1>44/56 Test #44: prod-lib-mdl_sdk-test_imdl_module ..............   Passed    2.86 sec
17:00:46:195	1>      Start 45: prod-lib-mdl_sdk-test_ineuray
17:00:46:580	1>45/56 Test #45: prod-lib-mdl_sdk-test_ineuray ..................   Passed    0.38 sec
17:00:46:580	1>      Start 46: prod-lib-mdl_sdk-test_itransaction
17:00:46:911	1>46/56 Test #46: prod-lib-mdl_sdk-test_itransaction .............   Passed    0.39 sec
17:00:46:978	1>      Start 47: prod-lib-mdl_sdk-test_neuray_factory
17:00:47:624	1>47/56 Test #47: prod-lib-mdl_sdk-test_neuray_factory ...........   Passed    0.71 sec
17:00:47:690	1>      Start 48: prod-lib-mdl_sdk-test_set_get
17:00:48:018	1>48/56 Test #48: prod-lib-mdl_sdk-test_set_get ..................   Passed    0.39 sec
17:00:48:080	1>      Start 49: prod-lib-mdl_sdk-test_target_materials
17:00:48:413	1>49/56 Test #49: prod-lib-mdl_sdk-test_target_materials .........   Passed    0.39 sec
17:00:48:472	1>      Start 50: prod-lib-mdl_sdk-test_types
17:00:48:821	1>50/56 Test #50: prod-lib-mdl_sdk-test_types ....................   Passed    0.41 sec
17:00:48:878	1>      Start 51: prod-lib-mdl_sdk-test_types_array
17:00:49:202	1>51/56 Test #51: prod-lib-mdl_sdk-test_types_array ..............   Passed    0.38 sec
17:00:49:268	1>      Start 52: prod-lib-mdl_sdk-test_types_compound
17:00:49:669	1>52/56 Test #52: prod-lib-mdl_sdk-test_types_compound ...........   Passed    0.40 sec
17:00:49:669	1>      Start 53: prod-lib-mdl_sdk-test_types_map
17:00:50:001	1>53/56 Test #53: prod-lib-mdl_sdk-test_types_map ................   Passed    0.40 sec
17:00:50:001	1>      Start 54: prod-lib-mdl_sdk-test_types_at_api_boundary
17:00:50:336	1>54/56 Test #54: prod-lib-mdl_sdk-test_types_at_api_boundary ....   Passed    0.33 sec
17:00:50:336	1>      Start 55: prod-lib-mdl_sdk-test_unique_IIDs
17:00:51:127	1>55/56 Test #55: prod-lib-mdl_sdk-test_unique_IIDs ..............   Passed    0.79 sec
17:00:51:127	1>      Start 56: prod-bin-mdltlc-test_basics
17:00:58:010	1>56/56 Test #56: prod-bin-mdltlc-test_basics ....................   Passed    6.88 sec
17:00:58:065	1>
17:00:58:065	1>98% tests passed, 1 tests failed out of 56
17:00:58:065	1>
17:00:58:066	1>Label Time Summary:
17:00:58:066	1>unit_test    =  80.98 sec*proc (56 tests)
17:00:58:066	1>
17:00:58:066	1>Total Test time (real) =  81.29 sec
17:00:58:066	1>
17:00:58:066	1>The following tests FAILED:
17:00:58:066	1>	 26 - io-image-image-test_module (Exit code 0xc0000409
17:00:58:066	1>)

I am attaching a generated HLSL from "examples/mdl_sdk/code_gen/Release/code_gen.exe" as another quick reference.
code_gen.hlsl.txt

I found a more formal document about what MDL is.
https://github.com/NVIDIA/MDL-SDK/blob/master/doc/specification/MDL_spec_1.8.2_24May2023.pdf

After taking a closer at the DXR example, it seems that the code_gen output is far from enough to get a compiled final output. In the DXR program they generate a lot of code on the fly which is plugged into the shader source code. Perhaps we have use the DXR program as a base for the rendering test, since we may need to hijack it to use slang code from generation itself to get a full set of compatible slang shaders.

Got a set of shaders to compile with slang with no modification whatsover (e.g. compiling as HLSL rather than slang).

Now I have manged to slangify the initial HLSL code so that it uses slang modules (via import declarations). The files can be seen here. There may be a question of whether this is sufficiently complex, since the compile time seems (at least at a glance) to be quite fast already. We could also generate multiple materials (there are a few files which are common to all) and benchmark separate compilation.

After rearranging and separating the source code a little bit, I have gotten a version of shaders where I can separately compile each into individual modules and then compile them all into a single unit (see the compiled-modules.sh file). I also did some very coarse timings on slangc and there indeed seems to be an improvement in using modules over monolothic sources:
compiling altogether:

modules/types.slang-module
modules/shading.slang-module
modules/runtime.slang-module
modules/mdl.slang-module
modules/material.slang-module
modules/hit.slang-module
modules/environment.slang-module
modules/enumerations.slang-module
modules/common.slang-module
modules/buffers.slang-module

real    0m0.202s
user    0m0.172s
sys     0m0.030s

monolithic compilation:

real    0m0.297s
user    0m0.286s
sys     0m0.010s

The compilation times for each unit are not shown here.

Got some updated compile time timings by adding some modifications to the slangc related functions. Each time slangc is called there is an additional ~0.1 seconds needed to initialize the global state of the compiler. including loading the std lib functions which takes the longest (99%).
An additional modification is that the hit.slang shader is compiled into separate modules for each stage.
The timings for each RTX shader stage are shown in the table below:

Monolithic
Modules
Speed up

Closest hit
0.140s
0.290s
2.07x

Any hit
0.053s
0.201s
3.79x

Shadow hit
0.052s
0.196s
3.76x

The complete output (with all stages and compiles) is as follows:
===========================
file: buffers.slang
===========================
                             create_global_session: 0.119s
                                         spCompile: 0.060s
                                       slangc_main: 0.195s

===========================
file: common.slang
===========================
                             create_global_session: 0.105s
                                         spCompile: 0.032s
                                       slangc_main: 0.152s

===========================
file: enumerations.slang
===========================
                             create_global_session: 0.106s
                                         spCompile: 0.006s
                                       slangc_main: 0.128s

===========================
file: environment.slang
===========================
                             create_global_session: 0.105s
                                         spCompile: 0.045s
                                       slangc_main: 0.165s

===========================
file: hit.slang
===========================

Closest hit shader:
                             create_global_session: 0.120s
                                         spCompile: 0.190s
                                       slangc_main: 0.330s
Any hit shader:
                             create_global_session: 0.113s
                                         spCompile: 0.150s
                                       slangc_main: 0.284s
Shadow hit shader:
                             create_global_session: 0.116s
                                         spCompile: 0.151s
                                       slangc_main: 0.286s

===========================
file: material.slang
===========================
                             create_global_session: 0.112s
                                         spCompile: 0.110s
                                       slangc_main: 0.248s

===========================
file: mdl.slang
===========================
                             create_global_session: 0.111s
                                         spCompile: 0.015s
                                       slangc_main: 0.144s

===========================
file: runtime.slang
===========================
                             create_global_session: 0.112s
                                         spCompile: 0.108s
                                       slangc_main: 0.241s

===========================
file: shading.slang
===========================
                             create_global_session: 0.117s
                                         spCompile: 0.002s
                                       slangc_main: 0.134s

===========================
file: types.slang
===========================
                             create_global_session: 0.111s
                                         spCompile: 0.007s
                                       slangc_main: 0.134s

===========================
compiling altogether:
===========================

modules/types.slang-module
                modules/shading.slang-module
                modules/runtime.slang-module
                modules/mdl.slang-module
                modules/material.slang-module
                modules/closesthit.slang-module
                modules/anyhit.slang-module
                modules/shadow.slang-module
                modules/environment.slang-module
                modules/enumerations.slang-module
                modules/common.slang-module
                modules/buffers.slang-module

Closest hit shader:
                             create_global_session: 0.117s
                                         spCompile: 0.140s
                                       slangc_main: 0.299s
Any hit shader:
                             create_global_session: 0.114s
                                         spCompile: 0.053s
                                       slangc_main: 0.210s
Shadow hit shader:
                             create_global_session: 0.110s
                                         spCompile: 0.052s
                                       slangc_main: 0.213s

===========================
monolithic compilation:
===========================

Closest hit shader:
                             create_global_session: 0.104s
                                         spCompile: 0.290s
                                       slangc_main: 0.415s
Any hit shader:
                             create_global_session: 0.117s
                                         spCompile: 0.201s
                                       slangc_main: 0.338s
Shadow hit shader:
                             create_global_session: 0.117s
                                         spCompile: 0.196s
                                       slangc_main: 0.335s

For verification purposes, here are the storage sizes for each module:
[4.0K]  modules
├── [123K]  anyhit.slang-module
├── [ 33K]  buffers.slang-module
├── [123K]  closesthit.slang-module
├── [ 70K]  common.slang-module
├── [111K]  enumerations.slang-module
├── [ 50K]  environment.slang-module
├── [ 98K]  material.slang-module
├── [ 48K]  mdl.slang-module
├── [461K]  runtime.slang-module
├── [ 11K]  shading.slang-module
├── [123K]  shadow.slang-module
└── [ 46K]  types.slang-module

Considering that the *hit.slang-module sizes are similar, it is likely that hit.slang can be separated into at least another file.

I think the result looks very promising.

Can you figure out if it is currently possible to load stdlib only once and execute compilations for multiple outputs?
If not, we need to file an issue to make it possible.

I think we can at least make everything in the benchmark app using the same IGlobalSession, to get rid of that global session creation time.


Error: socket hang up

I'm getting this error pretty often during the upload phase.
  • building        target=DMG arch=x64 file=dist/LosslessCut-mac.dmg
  • building block map  blockMapFile=dist/LosslessCut-mac.dmg.blockmap
  • uploading       file=LosslessCut-mac.dmg.blockmap provider=GitHub
  • uploading       file=LosslessCut-mac.dmg provider=GitHub
  ⨯ socket hang up  stackTrace=
                      Error: socket hang up
                          at connResetException (internal/errors.js:608:14)
                          at TLSSocket.socketOnEnd (_http_client.js:460:23)
                          at TLSSocket.emit (events.js:322:22)
                          at endReadableNT (_stream_readable.js:1187:12)
                          at processTicksAndRejections (internal/process/task_queues.js:84:21)
  • overwrite published file  file=LosslessCut-mac.dmg.blockmap reason=already exists on GitHub
  • overwrite published file  file=LosslessCut-mac.dmg reason=already exists on GitHub
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
child_process.js:660
    throw err;
    ^

Error: Command failed: yarn run electron-builder --mac --publish always

I realize it's probably GitHub's fault for having unstable infrastructure, but I'm wondering if it's possible to implement some retry? Or maybe it needs to be done in electron-builder

Unfortunately, this happens to me too every now and then. Re-running the workflow should do the trick. I also think this should be handled by electron-builder, especially because according to the docs, running it in CI seems to be a common use case.

Hey, I'm having the same issue for a while now. I'm building my app for macOS, Windows and Ubuntu and randomly one of the tasks fails due to the socket error, which causes the other two to get cancelled as well.
I thought that maybe #28 could fix that issue, because it will automatically try again, but sadly that didn't help as well.
Is there a way to automatically retry on failure or is there a new and better fix for that issue?

@craftycram See https://github.com/electron-userland/electron-builder/issues/4940 for actual state of issue :)

@mandrasch
thanks for the info


[helm-docs] Add helm-docs CI

Description of the change

Adds a workflow to create a PR with helm-docs updates
Benefits

Ensure documentation stays updated
Possible drawbacks

More work to integrate changes when submitter did not update documentation on his own fork prior to PR. This happens when submitter forgets to enable actions on his fork.
Applicable issues

NA

Additional information

Checklist

[ ] Chart version bumped in Chart.yaml according to semver.
[ ] Title of the PR starts with chart name (e.g. [home-assistant])
[ ] (optional) Chart is using our common library as a dependency.
[ ] (optional) Variables are documented in the README.md

Example of PR in my fork - https://github.com/angelnu/charts/pull/5

@angelnu should we use the script in hack/gen-helmdocs.sh to generate the templates? We might want to keep using this wrapper incase things change.

@onedr0p - we could do it but currently the script is ignoring the .helmdocsignore so it adds the templates to all folders.
Once the other PR is merged that .helmdocsignore will not be needed so maybe we merge this PR as it is and once the other PR is merged (including the 8 charts I did not convert yet) we can adopt hack/gen-helmdocs.sh

ok no problem!
What do you think about if it were to run on a cron instead of when pushes are made?

Yes, we can transform to use an scheduled trigger since we can very quickly process all the charts anyway.
Should we also consider calling in the release CI to ensure we do not build charts with outdated info? Potentially, we could also commit the change so we do not have any PRs to merge.

We have to wait until we fix the chart releaser action so that it doesn't error out on duplicate tags.
It ties in with my comment on Discord
https://discord.com/channels/673534664354430999/740734177279868949/818477961190965258

Changed to use a daily schedule as trigger.


Feature/boas 694 bulk download

Describe your changes
Implement bulk download. This should keep working whatever solution for the actual download we choose
Issue ticket number and link
Type of change 🧩

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation update
[ ] Other (please explain in the description section above)

Checklist before requesting a review

[ ] I have performed a self-review of my own code
[ ] I have double checked this work does not include any hardcoded secrets or passwords
[ ] I have made corresponding changes to the documentation
[ ] I have provided details on how I have tested my code
[ ] I have referenced the ticket number above
[ ] I have provided a description of the ticket
[ ] I have included unit tests to cover any testable code changes

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

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


Add Arm64 Support for Contiv/VPP

We think Contiv/VPP is a very attractive container networking solution for k8s with VPP and plan to port it to Arm64 platform. The final target is to support Contiv/VPP(contiv-cni, agent, ksr, stn, cri) with K8s on arm64 platform.
We would provide or just enhance the needed porting files, such as build scripts, Dockerfiles, Makefiles, or possible other files for arm64 support. If needed, the documents are also included.
Hope it would get support from the Contiv/VPP team.
Possible known problems when porting Contiv/vpp to Arm64 platform currently:

CNI_Version:  for x86, the Contiv/vpp uses CNI_VERSION=0.3.0 and its binary release at:
https://github.com/containernetworking/cni/releases/download/v$CNI_VERSION/cni-v$CNI_VERSION.tgz
but for arm64, only the release of 0.4.0 and above are available. Can we use higher version here for arm64 platform.
Some suitable docker images/binaries used in Contiv/vpp on Arm64 need to be found, such as Etcd.
Can I improve the current scripts to provide a multi-arch build script for both X86 and Arm64, such as build-new.sh?
If there is any hard code aimed just for X86 in contiv-agent, contiv-ksr, contiv-init, contiv-stn,…;
The naming convention for files, such as Dockerfile, I would provide a corresponding file named Dockerfile.arm64
…

@rastislavszabo
Thanks.
For question 4, the VPP should be ok on arm64(ubuntu 16.04 only), but still needs to be verified.
Another question here is how to name the docker images for arm64, now I add a "-arm64" to the original name end, e.g., prod-contiv-vswitch:xxx, to prod-contiv-vswitch-arm64:xxx.
For the official image,  e.g., contivvpp/vswitch:latest,  it would be "contivvpp/vswitch-arm64:latest":

A known problem for release stable-1801-contiv of vpp is the symbolic links in the lib pkg in platform.mk
is hard code to /usr/lib/x86_64-linux-gnu, I changed it(build-vpp.sh) when meets aarch64:
if [ "$(uname -m)" = "aarch64" ] ; then
sed -i 's/lib/x86_64-linux-gnu/lib/aarch64-linux-gnu/g' build-data/platforms.mk
fi

sounds good, I will create the respective repos on dockerhub once you are ready with this

@rastislavszabo
The following are my considerations about Multi-arch docker images support for Contiv/vpp :
I want to enable the multi-arch docker images and fat manifest for contiv/vpp docker images in the future.
If that, for example, if you use "docker pull contivvpp/vswitch:latest", it will get the desired docker image which matches your arch(now just amd64, arm64).
I would like to do that step by step to avoid an abrupt huge change to current build system:

Enhance the current build scripts to enable building docker images for different arches, the 'arch' would be added to the image name, such as prod-contiv-cni-amd64:latest, prod-contiv-cni-arm64:latest;
then tag the 'amd64' image as the default image, e.g, docker tag prod-contiv-cni-amd64:latest prod-contiv-cni:latest if the current machine is 'x86_64'.

Add manifest tool into one of the docker images, and add "push manifest" function into our build scripts like:
push-manifest:
# Docker login to hub.docker.com required before running this target as we are using #$(HOME)/.docker/config.json holds the docker login credentials
docker run -t --entrypoint /bin/sh -v $(HOME)/.docker/config.json:/root/.docker/config.json $(ARCHIMAGE) -c "/usr/bin/manifest-tool push from-args --platforms arm64, amd64 --template $(DEFAULTIMAGE)-ARCH --target $(DEFAULTIMAGE)"

Enable 'cross build' in the future if needed

For fat manifest, please refer
https://docs.docker.com/registry/spec/manifest-v2-2/#example-manifest-list
For manifest-tool, please refer:
https://github.com/estesp/manifest-tool/
For the multi-arch idea, I refer:
https://github.com/projectcalico/go-build

@TrevorTaoARM
I aggre with your approach...


Simple NC/DCPC data sharing in data-and-metadata-flows.adoc

In my understanding the simple NC/DCPC data sharing described in data-and-metadata-flows.adoc is not part of WIS2 and should be removed. Also WIS2 Nodes are not required to operate a local metadata catalogue.
If this section is intended to illustrate the concept this should be made clear explicitly.

Discussed at ET-W2AT, 16-Oct-2023.
Discussion
The Data and Metadata Flows section is very detailed - useful for implementors, not for users. The Guide is intended for Users - data consumers, data publishers, global service operators.
We agree that the Simple NC/DCPC Data Sharing is not valid and should be removed in its current form. The intent was to introduce people to the concept of publishing notification messages and using the info therein to determine whether to download a given resource.
@golfvert showed a sequence diagram showing interactions between components. We agreed that this was the appropriate level of detail.
The detailed "technical blueprints" are useful and should be published somewhere.
Recommendation
Section 4 of the Data and Metadata Flows will be removed from the Guide and published as an external resource. The Simple NC/DCPC Data Sharing subsection should be re-written to introduce people to the concept of publishing notification messages and using the info therein to determine whether to download a given resource.
This external resource will be published in a "reference library"; e.g., WIS2 architecture and development - name/place to be determined. These external resources will not need approval by INFCOM.
The Guide should have a short (i.e., 2-paragraph) section on WIS2 Architecture, with reference to more detailed technical resources.
Actions
Update the Guide
Validate whether Mermaid (text-driven sequence diagram generator) is compatible with ASCII Doc publication << @golfvert, @tomkralidis
Establish a reference library for WIS2 technical resources << @efucile

updates:

a WIS2 Architecture Guide document is now availble at https://github.com/wmo-im/wis2-architecture-guide

@tomkralidis to bootstrap

Mermaid can be used in AsciiDoc/Asciidoctor (main documentation).  Installation and rendering steps are documented accordingly

For WIS2 Guides, this would be added to an AsciiDoc as follows:
[mermaid]
----
sequenceDiagram
    title: Adding a new WIS2 Node
    GlobalCaches->>GlobalBrokers: Subscribe to origin/a/wis2/#
    Center->>WMO: My organisation is ready to run a WIS2 Node.
    Note over WMO,Center: Center has been already approved by PR.
    WMO->>Center: OK. What would be the centre_id ?
    Note over WMO,Center: The centre_id should be based
on the name of your organisation.
Typically, the domain name is a good choice.
Then, if you intend to run multiple WIS2 Node, each one
must have its own centre_id. The ISO3166 2-lettre code for
your country is ab.
    Center->>WMO: I propose "ab-myorg-climate"
    Note over WMO,Center: My main website can be reached at https://www.myorg.ab
This WIS2 Node will provide climate data.
    WMO->>Center: Can you give me the information of your broker endpoint ?
    Center->>WMO: Here they are.
    Note right of Center: Such information includes the protocols
 preferably a secure version so MQTTS,
using a valid certificate, a username
and a password, and the topic(s) to subscribe to.
    Note right of WMO: All information is recorded
in the WIS2 Node database
    WMO->>Center: That is fine. Let me contact the GISC for your country.
    Create participant GISC
    WMO->>GISC: Center is ready with WIS2 Node ab-myorg-climate.
Can you check if everything is correct ?
    GISC->>Center: Can we check your WIS2 Node implementation ?
    Note left of GISC: GISC must verify that Center
as implemented a WIS2 compliant solution.
    GISC->>Center: Can you publish some test messages with the associated files to download ?
    Note left of GISC: By using a test MQTT client, the GISC can
 verify that the Notification Message is correct
and that the download links are working.
    Center->>GISC: Done.
    GISC->>Center: The MQTTS connection is working. The notification message is correct. The download link works. All good!
    Note left of GISC: The GISC verifies that the topic used by the center
is compliant with the agreed topic hierarchy.
 Compliance of the Notification Message
with the specifications is also verified.
The download link is using HTTPS which is prefered.
    GISC->>Center: When your dataset is ready, please ensure to provide the relevant metadata record!
    GISC->>WMO: All checks are good. This new centre_id can be added to WIS2.
    WMO->>GlobalBrokers: A new centre_id is available. Can you subscribe to the broker endpoint? Here are the details.
    GlobalBrokers->>Center: Subscribe to agreed topic(s)
    GlobalCaches->>Center: Download and cache metadata records.
 Download and cache core data (if applicable).
----

We will have to test some output (sizing, legibility).


builders demo review

Use Eth address as AccountId, and Eth signatures (iso sr25519).
Do not init evm storage for endowed accounts, use balances pallet instead.

Thank you for the PR! We will review these changes and come back to you soon.


Problem with package csquotes

I use pandoc-include with csquotes for showing German quotation marks, XeLaTeX-Engine. Works fine, when "quoted word" not in an included document. If it is part of an included document, csquotes has no effect at all.

Would you supply an example?

Smart quotes appear to not work.


Add Node-API

Coverage remained the same at 96.61% when pulling 7503a1cbb27a3f1a8c05106850f74235128678fc on node-api into 718e16f8568d4cfa4580df406d1b586786e4c1df on master.


Jianpu notation tutorial?

As a supplement to xxx https://ssb22.user.srcf.net/mwrhome/jianpu-ly.html

https://fourstringmate.com/lilypond/write-numbered-musical-notation-with-jianpu-ly/

Nashville Number System


Integration tests

I'll close this ticket as this is a very broad topic. We'll need to rethink this.


Add deployer support

Tested working

Thanks.

How do you run deployer to deploy your local Laravel app to production using this setup? Do you need to log into the workspace with Docker Machine or something? Reading https://github.com/deployphp/deployer/issues/1636 it seems deployer cannot be used just like that. But perhaps we are using it the wrong way.


completed changes to teach tab and added scratchrj connect

Resolves
What Github issue does this resolve (please include link)? Please make sure that the PR title reflects what the PR will do, not what is changing.
Please do not submit PRs that are not associated with a Github issue, or that only partially implement an issue.

Resolves #

Proposed Changes
In the Teach tab, changes Curricula to Resources, and Assessments to ScratchJr Connect. In Resources,
adds introduction and changes the text at the top. In ScratchJr Connect, replaces previous content with
a description of scratchjr connect website and links it with a button.
Reason for Changes
To integrate scratchJr connect website.
Test Coverage
Please show how you have added tests to cover your changes, or provide the testing steps to verify the change. Screenshots that show the change are also helpful.

@epolak01 @martinatan thank you!


OPIK-76 Add stream experiment items endpoint

Details
This is meant to be used by SDK and to return at least these fields per experiment item: id, trace_id and dataset_item_id and that's exactly what it does, plus any other field in experiments table.
It has the same semantics as the other stream operations in the service: limit (default 500) and last retrieved id cursor.
The search by experiment name follows the same pattern as in the find experiment endpoints: contains regex and case insensitive.
Therefore, it can match experiment items per multiple experiments. For that reason, they're sorted by experiment id first.
Issues
OPIK-76
Testing

Added integration test covering all logical cases.

Documentation
N/A

My concern only concerns are:

What if we have too many experiments?
Shouldn't the response format be responsibility of the API layer ?

Those are nice questions. Let me answer then:
Regarding 1: there are multiple alternatives to handle this:

By using the current limit param: this wouldn't work in some cases, as we want to limit by the items.
Adding a limit for experiments: this works but makes the endpoint more cumbersome and results will be less predictable.
Optimising the experiments query to just return the id: this can be done on top any other improvement. I'd rather not in order to leave this DAO method more reusable for the future. Also, because it might by a not very impactful optimisation.

With all this in mind, I honestly think that the best option is to leave the endpoint like it is. Experiment names are randomly generated and in practice the number of matches within a workspace is going to be very low.
We might never encounter an issue with this and if we do, we can always tackle 2, 3 or both.
Regarding 2, I've refactored the services and resources a bit and encapsulated the streaming logic in a Streamer class. I think the separation of responsibilities and reusability of code has improved a lot.
With this, adding new streaming endpoints is much more straight forward.

By using the current limit param: this wouldn't work in some cases, as we want to limit by the items.

Perfect. My concern was more with having a very large list of experimentIds passed to the second. But I agree this may not be an issue any time soon

Agree! An option would be to do the join or a subquery in the IN clause. But can discuss about it later, when if needed


Hard-code the requirements to fix installation

My bad. The requirements.txt file wasn't included in the tarball, so installing from pypi fails because it can't find it.
I've now hardcoded the requirements in setup.py. This version should work, but please upload it and test it.
Thanks

I don't know. I think it was installed by boto. To be honest I think you could get rid of it, but I left it in because it was difficult for me to test it.


Re-link bootstrap.el whenever straight.el is rebuilt

Currently, if you change the :local-repo for straight.el, the bootstrap script is not re-linked, and you have to make a network call using install.el. This is undesirable.
(Of course, we'll always have the edge case of making a copy of straight.el under a different :local-repo and switching to it, but not reloading your init-file before restarting. This should be documented in the developer manual, see #51.)

I've decided that it makes more sense to not use the symlink and instead just require users who customize :local-repo for straight.el (probably 0 users) to change their bootstrap snippet to point at the appropriate local repository. I am implementing this change.


Set up Travis CI to run against new commits

Tests are no good if they don't get run! Let's put in place Travis CI which is free for open source projects.

This would be a good time to add in a gradle wrapper as well.


chore: bdd-spring-1585225441 to 0.0.1

chore: Promote bdd-spring-1585225441 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


ChangeLog

Would you mind creating a changelog to make it easier for packagers and other users to understand what is in each release.
Currently the best we have is "Push up to 218904912" at https://github.com/abseil/abseil-py/releases/tag/pypi-v0.6.1 , or manually building a changelog from the commits

Yeah, I've been meaning to add one, but wanted to figure out if there is some standard way to do it. Namely a file format and a tool to help populate a file based on commit descriptions.
From some looking around, I found a pretty wide variety of ways people do it.
I guess I'll just pick one.


replace tabs with spaces and organize imports

@alainsahli Please sign the Contributor License Agreement!
Click here to manually synchronize the status of this Pull Request.
See the FAQ for frequently asked questions.

@alainsahli Please sign the Contributor License Agreement!
Click here to manually synchronize the status of this Pull Request.
See the FAQ for frequently asked questions.

@alainsahli Thank you for signing the Contributor License Agreement!


Back to mocha

fixes #158

Did you run through a test on https://github.com/ipfs/aegir-test-repo ?

No, not yet

What's left here, @dignifiedquire ?

@diasdavid just ran through the test suite in js-ipfs-api to make sure things are working, all good so far. Now I am checking what's missing to make it work fine on windows.


Feature/core#486 get_label()

get_label()
get_simple_label()

Minor comments, but LGTM.

So this PR adds methods to handle label. But it is kinda hidden from the user (or the UI). Maybe we need to describe it somewhere?
Otherwise, this PR looks great!

Right!

get_label and get_simple_label must be documented so they will be in the reference manual.
I should add some documentation in the user manual as well


Toggle symmetry globally

Dear Viresh,
You have made an exquisite tool and I am loving it! One small recommendation I would make is to include an option to toggle symmetry on/off globally, rather than just for next cell changed, as I desire to make some grids with reflectional symmetry but no rotational symmetry - and perhaps some with little symmetry of any kind. If this doesn't affect other functionality, I feel this might be a very useful option.
Kind regards,
Josh - a new and impressed user

I've made this change with v0.65 now:

Make the "Do not force symmetry" option sticky. Previously, it applied
to just the next bar/block change. If someone's likely to break symmetry,
they are likely to do that across a puzzle rather than just at a few cells,
so for them the old way was painful. Make this option stick with the specific
crossword (so that for a new crossword we default to enforcing symmetry).

I've completed two crosswords in the past 2 days and working on another now, such an intuitive and helpful toolkit, wonderful work Viresh!

Closing the issue (pls reopen if needed). Also, feel free to share any public links to crosswords that you (anyone!) may have constructed using Exet, on the Discussions page.


dorado_trimming feedback from testing

@AnnaSyme I'm tracking changes for the dorado read trimmer here, let me know if there's anything else!

[x] Don't allow custom primers with --no-trim-primers

thanks @TomHarrop !

@TomHarrop to convert the output bam file of trimmed reads to fastq, I'm using "samtoFastq", but it's giving me an error.
history: https://dev.gvl.org.au/u/annasyme/h/dorado
not sure if this is something to do with the dorado output itself, or something else.

@AnnaSyme I've used Samtools fastx to get the reads out of the basecalling files. I think it should work for the trimming output too.

@TomHarrop that looks good, yes. I'll try out fastp perhaps on the reads before and after trimming to see if we can get any info about what was trimmed. (unless another tool seems better for that?)


localhost 当前无法处理此请求。

Problem encountered on https://dotnet.microsoft.com/zh-cn/learn/aspnet/blazor-tutorial/run
Operating System: windows
当我点击“调试”按钮启动项目后
浏览器显示

控制台打印

can you try the plain HTTP port at 5138? Is it possible there is some security firewall on your machine blocking the connection @lovemyxin ?


Launching kickoff softlocks Hyprland due to no surface being focused

Hyprland Version
 System/Version info
Hyprland, built from branch main at commit 2ead1fd22103ce065661555513bace5897083ded  (virtual-keyboard: emit event before finishing keyboard).
Date: Sat May 18 05:07:33 2024
Tag: v0.40.0-111-g2ead1fd2, commits: 4717

flags: (if any)

System Information:
System name: Linux
Node name: milkbar
Release: 6.9.1-arch1-1
Version: #1 SMP PREEMPT_DYNAMIC Fri, 17 May 2024 16:56:38 +0000

GPU information:
0b:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] [1002:731f] (rev c1) (prog-if 00 [VGA controller])
0c:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU104 [GeForce RTX 2070 SUPER] [10de:1e84] (rev a1) (prog-if 00 [VGA controller])

os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo

plugins:

Bug or Regression?
Regression
Description
Launching kickoff results in Hyprland being uninteractable due to no window being focusable (normal), but the new kickoff surface also appearing to be unfocused (no inputs work, can't type, can't close with esc).
I can still change workspaces with hotkeys, but that doesn't help. The only way I was able to escape back to a usable system was to switch TTY and terminate kickoff from another session.
I have already bisected the issue, unfortunately it's a significant commit (121d3a7).
121d3a72137d4780602cf245704615f63357ea22 is the first bad commit

How to reproduce
Start kickoff on master and try to type.
Crash reports, logs, images, videos
No response

Still the case after the release of 0.41.0.

Same issue here


Refs in responses don't seem to work

paths:
  /healthz:
    get:
      operationId: healthCheck
      tags:
        - system
      summary: Health check endpoint
      description: Check if the API is up and running
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: "OK"
        "500":
          $ref: "./responses.yaml#/$defs/InternalServerError"

responses.yaml
$schema: https://json-schema.org/draft/2020-12/schema

$defs:
  InternalServerError:
    description: Internal Server Error

This syntax causes the issue described in #100

Yes this is a bug! fixing it

Fixing in #107


Stack Overflow staging for new questions gets double posted by SD after approval

What problem has occurred? What issues has it caused?

Staging: https://m.erwaysoftware.com/posts/uid/stackoverflow/78579270
After approval: https://m.erwaysoftware.com/posts/uid/stackoverflow/78579301
What would you like to happen/not happen?
I would like it to get posted once, but I'm not even sure if this is possible. This is more of a informative kind of thing in case someone doesn't know this happens.

Hmm. This is a tough one, because the IDs for the posts are different (first one is https://stackoverflow.com/staging-ground/78579270, second is https://stackoverflow.com/questions/78579301). When a question is published through the SG it basically makes a whole new question and just adds a timeline entry that it was posted via the SG (such as this entry).
I dunno. Another thing to consider is... Maybe this is acceptable behavior. One extra FP isn't the end of the world.

Ok, I understand, I just wanted to make sure, that you guys knew this was happening. :-)

I am in full agreement with what @Spevacus said. In fact, I'd go one step further: these are, effectively, completely different posts, so they should be separate reports. The Stack Overflow system treats them as two separate posts, as Spevacus already explained, and not only is it easier for us to continue to do the same, but I would argue that it is more correct.
From a system/implementation perspective, it is akin to a user deleting and then re-posting the exact same question. Their contents may be identical, and the second obviously originated from the first, but from Stack Overflow's perspective, they are two completely different posts, with two completely different histories.
It might be nice to have some kind of tracking that would link the second report ("proper" question) to the first report (Staging Ground question), but that would be quite difficult to implement, and not really worth doing, in my judgment. The genealogy is already available in the question's history, for those wanting to investigate. Reviewers of the report(s) do not need to see this connection in order to properly review.


[Spart 5.0][Cashier 15.0] Call to undefined method Spark\SparkManager::ignoreMigrations()

Laravel Version
10.38.2
PHP Version
8.2
Database Driver & Version
No response
Description
I have just updated laravel/cashier to version 15.0.0 and laravel/spark-stripe to version 5.0.0.
After following the migration guide to the new version, I get an error concerning the ignoreMigrations method, which is not defined.
This method is still referenced in the Spark-stripe documentation: https://spark.laravel.com/docs/spark-stripe/customization.html#migrations
My SparkServiceProvider.php
use App\Models\Organization;
use Illuminate\Http\Request;
use Illuminate\Support\ServiceProvider;
use Laravel\Cashier\Cashier;
use Spark\Spark;

class SparkServiceProvider extends ServiceProvider
{
    public function register(): void
    {
        Spark::ignoreMigrations();
    }

This error concerns the Spark library but I can't find any way of sending a bug report to the Spark team.
Steps To Reproduce
Upgrade laravel/cashier to version 15.0.0 and laravel/spark-stripe to version 5.0.0

Hey @gotexx1. That part is defined here: https://github.com/laravel/cashier-stripe/blob/15.x/UPGRADE.md#publishing-migrations. But might need an explicit reference about the `ignoreMigrations. I'll add that and also update the spark docs.
You'll need to publish the migrations from now on as stated in the docs.

This error concerns the Spark library but I can't find any way of sending a bug report to the Spark team.

There's a helpdesk widget on the spark website when you're logged in.


Dockerfile.client and Dockerfile.server

Created new Dockerfiles for a server and a client to assist in having a local dockerized server and local dockerized client.
This would assist those hoping to test or run these without mucking up their Python environment and should give handy examples hoping to extend the environment.
BTW -- I love what y'all have already provided.

Great, thanks for this! Can you please check, there's a duplicate line in the server file ("Install required Python packages -- either librosa or numpy"). Could you also please add a note or quick "How-to" to the README explaining the two files? Thanks!

Also, can you please take a look at #16, seems like both PRs have the same goal but slightly different attempts.

I cleaned up that bad copy and paste then updated the README to include the client and server. I also reviewed #16 but I didn't integrate that change as it ends up making the dockerfile larger in an attempt to make it single purpose. The dockerfile running just the client.py doesn't need bottle or tensorflow.
I used Dockerfile.server and Dockerfile.client since docker expects a directory to only have one Dockerfile in it. After you build, the specified Dockerfile.X doesn't have any negative impact and the facility is included in docker for situations just like this.

Alright, I think that's ok considering your comments. Would you mind updating the README in a way that the command line arguments only appear once, instead of repeating them for each use case? Also, if you adjust headlines, can you please also adjust shortcut links in the "Contents" section? Thanks.

I like the exact versioning, but the split of the Dockerfile makes it overly complicated. We probably just add bottle to the Dockerfile to support server.py as well and take the puny overhead, which this change introduces to the analyzer use with Docker.


Fix changelogs

Closes https://github.com/iTwin/presentation/issues/212

Can you please describe what was causing the changelogs to point to the same commit? Not checkouting the branch with full history?

Can you please describe what was causing the changelogs to point to the same commit? Not checkouting the branch with full history?

Yes workflow was checking out only top commit and that was used for all changes when generating changelog.


Add delay before processing message from firebase

When we've written the app to automatically respond to messages in a certain way, some views only appear for a fraction of a second before transitioning to the next view.
By delaying the processing of an incoming message, the user can at least see this screen momentarily.

Going to close this, as we didn't end up using it for the demo and it doesn't seem like we'd want this going forward.


Chore: miscellaneous fixes

Thanks GoLand problem detector!
Description
Miscellaneous fixes for the sloppiness in code base.

is this a linter ? @timwangmusic

It's the problem detector in Goland, so good.


[curl] Fix incomplete read/writes.

Fix https://github.com/microsoft/vcpkg/issues/29499

Note: Reference the upstream commit. Solve the problem that when the length is too long, it cannot be accepted and sent
https://github.com/curl/curl/commit/16bb32e104d348e05ec84436ded662ae4f761019

Internal SSL engine error encountered during the SSL handshake.

cc @ludekvodicka could you please test this PR?

[x] Changes comply with the maintainer guide
[x] SHA512s are updated for each updated download
[ ] The "supports" clause reflects platforms that may be fixed by this new version
[ ] Any fixed CI baseline entries are removed from that file.
[ ] Any patches that are no longer applied are deleted from the port's directory.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is added to each modified port's versions file.

@marekr Thank you for reminding, I will finish the update today.

@marekr Thank you for reminding, I will finish the update today.

Actually you may want to hold off until Feb 20, a somewhat problematic bug affecting HTTP2 connections was found so a 7.88.1 release is being made
https://github.com/curl/curl/issues/10525#issuecomment-1432713383

I'll wait. Thanks. :)

@FrankXie05  curl 7.88.1 is released.


[Feature Request]: Add LocationPermission.prompt status

Is there already an issue requesting this feature?

[X] I have searched the existing issues.

Please select affected platform(s)

[ ] Android
[ ] iOS
[ ] Linux
[ ] macOS
[X] Web
[ ] Windows

Use case
On Safari or Firefox, if users don't select the remember location permission checkbox, the browser sets the status as prompt Currently, the web plugin interprets this as a denial of permission. https://github.com/Baseflow/flutter-geolocator/blob/main/geolocator_web/lib/src/utils.dart#L38
Proposal
We should add a prompt status to  LocationPermission.
Specific requirements or considerations
No response
Additional information or context
No response

Hi @Prn-Ice,
With the current versions of the geolocator plugin we strive to create a common cross-platform interface. Regarding permissions and there states we decided to use the following values which can be applied to all platforms:

denied: This is the default permission state and means the application should request permission. This state is also returned when the user denies permission and the system will allow requesting permissions on a later time (e.g. the use case where Safari and Firefox return the prompt state).
permanentlyDenied: This status is returned when the user denied permission and doesn't allow requesting permissions again (e.g. when the user selected the remember location permission checkbox).
granted: The user granted permissions and the application is allowed to access the location services.

At this time we are not planning to add another status that will only work for one specific platform. Possibly in the future we will refactor the geolocator to allow access to the native APIs next to the cross-platform interface, however that is something for the future.
I hope this answers your question. I will go ahead and close this issue now as denied means prompt in this case.

Hi @Prn-Ice,
With the current versions of the geolocator plugin we strive to create a common cross-platform interface. Regarding permissions and there states we decided to use the following values which can be applied to all platforms:

denied: This is the default permission state and means the application should request permission. This state is also returned when the user denies permission and the system will allow requesting permissions on a later time (e.g. the use case where Safari and Firefox return the prompt state).
permanentlyDenied: This status is returned when the user denied permission and doesn't allow requesting permissions again (e.g. when the user selected the remember location permission checkbox).
granted: The user granted permissions and the application is allowed to access the location services.

At this time we are not planning to add another status that will only work for one specific platform. Possibly in the future we will refactor the geolocator to allow access to the native APIs next to the cross-platform interface, however that is something for the future.
I hope this answers your question. I will go ahead and close this issue now as denied means prompt in this case.

Thanks


WIP Translation de

I've translated a bit more and are planning to do so in the next weeks. Let's see whether I find the time. 🤓
This PR is to join forces so that no-one is translating the same stuff all over. Happy about any feedback to the translation.

I get the point and I'm also not entirely sure about it. But, to defend my current decision, I point to http://ncase.me/polygons-de/

Phew, that was a way larger amount of work than I expected in the first place. But it's completely translated now. I've updated the translations credits accordingly, assuming you are willing to proofread.
(Btw "political correctness" is a right-wing Kampfbegriff, impliyng someone is censoring something / or one cannot say some stuff, which is obviously false.)

Hey, not intending to put pressure on you but will you find some to time to proofread? If not, that's fine and I'll go ahead and open a PR at the original crowds repo on my own.

Great, thanks a lot for proofreading!

Most prominently, there is a clear difference in how we both perceive the German language to work in written form, more precise, punctuation, explicitly concerning spaces around ellipsis (...). While I would say that I am correct in thinking that an ellipsis before and after some words which are discontinued or started without a proper start of a sentence should not be separated from it by a space, I am sure that you are just as certain that it should be. So this is simply a matter of further discussion. Maybe you know where we could look the more common way or standard up... (← see what I did there? grin)

I followed typographic standards, see for instance here: https://typefacts.com/artikel/auslassungspunkte

You often translate Well with ok, and I feel divided about that. I don't really have a better suggestion at the moment though.

Maybe "Alles klar" or "Gut" at some places?

The first time (I think...?) you translated PUZZLE TIME! you did not capitalize your translation, later you did. I believe this was a mistake, but I'm not sure and thus want to get back to you on that.

Yes, this sounds more like a mistake than on purpose.

Say, for bonding & bridging, isn't bonding at least already "eingedeutscht"? I know business German is a hopeless mess regarding Denglish terms, but I would think this could already be in the public conscience. What do you think?

I just saw, its already in the Duden, so I guess, yes, it's eingedeutscht. So we should change all translations back to bonding then?

On line 1277, 1289, 1321 and 1334 (and potentially more) you placed extra dots after mentioning the authors name which didn't appear in the original. I'm not sure what to do with it, was that a conscious decision?

Yes, IMHO the dots should also be there in the original. et al. is an abbreviation of et alii: https://de.wikipedia.org/wiki/Et_al.

On line 1315, 1328 and 1378 you translated evidence with Evidenz — in contrast to Bonding this sounds rather unfamiliar to me. I would rather translate it as something like Hinweise — thoughts?

Hinweise sounds too weak to me. What about Belege?

For well, I often understand it more in the role of the German Nun, ..., though I think it would feel bad if we use it more often than just a couple of times.

I would vote for letting bonding stay Bonding, yes. To me it sounds better than any true German replacement.

Yes, IMHO the dots should also be there in the original. et al. is an abbreviation of et alii

Maybe we should also make a separate pull request to the original then (if it is not already different)?

Belege or maybe better Indizien if you like that.

For well, I often understand it more in the role of the German Nun, ..., though I think it would feel bad if we use it more often than just a couple of times.

What about using "Nun" at some places and "Okay" at others?

I would vote for letting bonding stay Bonding, yes. To me it sounds better than any true German replacement.

Ok, fine with me. Are you going to change this or should I?

   Yes, IMHO the dots should also be there in the original. et al. is an abbreviation of et alii

Maybe we should also make a separate pull request to the original then (if it is not already different)?

Might be an idea, although English sometimes has other rules for not putting an abbreviation dot (e.g., for "Mr" I just had a document in my hand without a dot after Mr). But I never saw a missing dot for "et al." in scientific texts. I might open a PR then.

Belege or maybe better Indizien if you like that.

Let's use Belege. Indizien sounds to vague for me. Should I change this or do you?

Hi there. Former German teacher here, Berlin-based. So glad there's people already committed to this task. Mind if I join? :)

Not at all, this is perfect! We just finished translating though, so there will be only the usual teacher work to do... But feel free to go crazy correcting! (does this phrase even make sense?)

I hope I didn't trod on your toes, surely some of my fixes aren't pure typo-hunting or grammar or anything, but style issues.
"Wisdom" should in some contexts not be translated into "Weisheit", but rather "Vernunft" in Opposition to "Wahnsinn". "Weisheit" is just not commonly used (in German, at least) and people might miss the message.
It's my first time contributing via GitHub, I hope I did follow protocol and didn't break anything. It's just that I'm into the topic "Trust in Information" at my working place (german NGO) and tripped over this piece of art and so much wanted to see a german translation in June, alas till now I didn't find the time to do it myself. Till now. So glad to have been part in this, hope u like my Input.
All the best from Berlin

Very nice! Don't worry, everything is fine and I value these style corrections even more. I have the problem of trying to find a matching translation as close to the original, since many nuances are not translatable already. Of course, this results in more unnatural translations, so I'm really happy to read your corrections and see how much more intuitive they sound. So thank you very much!

As for breaking stuff on GitHub, don't worry! You cannot break other peoples' repos, only your own. In order to contribute to foreign projects, you first need to "fork" the repo from the other person, meaning to make a new repo belonging to you that starts off as a copy of the original one. GitHub defaults to that when trying to make a "commit" to a foreign repo, you probably didn't even notice it did that. There you can do your work without being interrupted, but that means that 1) changes in the original repo do not appear in your fork automatically and 2) changes in your fork so not appear in the original repo automatically (what a chaos if they would!)
So, how do you join the changes back together? You need to make a "pull request", so basically request the original owner to "pull" your changes back into his repo, merging your changes with what he potentially has done in the mean time. Of course, he can decide whether to do that or not — he can also decline or request changes. This page here is the pull request for the changes by silberzwiebel to my repo which he forked, while I forked my repo from ncase to start the german translation. You can see between the discussion, I as the owner reviewed it some times before approving and merging it. For more information about what is what, how everything works and so on, see the GitHub Guides, especially the "Git Handbook" and "Forking Projects".
Okay, I hope I didn't bore you with what you may already know after all, but long story short, you need to make such a pull request for your changes now, too. (I could simply do that as well, but why not let you try if you're new?) For that, you need to go to your own fork and make sure you're on the right branch you want to submit the changes from. There you need to find and click "New pull request" — the source and target repos/branches should already be correctly picked by GitHub. Then, I'll approve and merge the changes and finally take care of submitting a pull request with our translation to the original repo by ncase.

Thanks. I understand I wouldn't harm the original in any case for me working on a copy all the time - I can see that. Still, there's logic and grammar and layout I can possibly destroy. Let's see what we got now ;)
I opened a pull request. If this didn't work, feel free to jump into action yourself. Would be a waste if this was left unfinished because of my inability to merge stuff.

Cheers guys, the translation has been merged! Still, if you find anything else, don't hesitate to make a pull request against this or the original repository.

Hooray, many thanks!


Added event to listen for tile list updates on a layer

Description
There's currently no way to easily be notified of tile updates to a tile layer, the closest method is to periodically check the _tiles property.
Solution
A tilesList  event has been added to all tile layers that is emitted every time the tiles for a layer are updated and sent for output. The payload is an array of tile coordinates in the format [x, y, z]. All visible tiles are sent on each update, rather than only those that changed between updates.

:+1: Looks good


Set the left side and right side margin when generate PDF

Thanks for the great plugin, now I am using the plugin to generate the PDF
and in the doc, there is a function:
$request->setMargin('0cm');
The problem is , it received a string, and doesn't seem can assign the different margin for different dimension,
are there any syntax for it?
Thanks a lot.

This value is passed straight to PhantomJS. According to the documentation, it accepts just a single value for a uniform margin.
Documentation

It looks like you can do it in PhantomJS, according to the documentation.
Documentation
I will look at adding it to the library.


Modernize

Please see details in commit messages

In my fork the CI is already running https://github.com/hannesa2/unity-background-service/actions/runs/12047581580/job/33590394684
When you merge it, it will run on any pull request here too


Update version in README.md & create GitHub release for 2.0.1

Archives with 2.0.1 were uploaded to Maven Central Repository. Now, we're waiting for Maven Sync.

Initial release notes (actually it's a single note):
replaced networkInfo.isConnectedOrConnecting() with networkInfo.isConnected() in isOnline(context) method in OnlineCheckerImpl

Done.


Get the original message of the Exception

Hi @jcardenascentral  - that looks good, however you will need to fix the style issues with the code, and have a look at the tests that are failing (looks a bit odd).


[improve][broker]Make CompactedTopicImpl.findStartPointLoop work more efficiently

Motivation & Modifications
CompactedTopicImpl.findStartPointLoop uses the binary search, but the implementation had a flaw that caused several more loops to be executed. If an array like this: [1,2,3...100], and we search value 2 in this array, CompactedTopicImpl.findStartPointLoop will execute the following loops:
start: 0, mid:50, end: 100
start: 0, mid:25, end: 50
start: 0, mid:12, end: 25
start: 0, mid:6, end: 12
start: 0, mid:3, end: 6
start: 0, mid:1, end: 3
start: 1, mid:1, end: 1    bingo!

We can optimize the loop like this:
start: 0, mid:50, end: 100
start: 1, mid:25, end: 50    bingo!

Documentation

[ ] doc
[ ] doc-required
[x] doc-not-needed
[ ] doc-complete

Matching PR in forked repository
PR in forked repository:

https://github.com/poorbarcode/pulsar/pull/20

Hi @codelipenghui

How can the test cover the new improvement?

already append test "testRecursionNumberOfFindStartPointLoop" to cover this case.

/pulsarbot rerun-failure-checks


feat: Add update-rock workflow

Description
Adds update-rock workflow to create PRs automatically in order to get latest Upstream code.
The workflow will run every 12 hours.
This PR depends on TELCO_GITHUB_BOT_TOKEN secret which is already requested for another PR. IS ticket  needs to resolved before merging.
Checklist

[x] I have performed a self-review of my own code.
[ ] I have made corresponding changes to the documentation.
[ ] I have added tests that validate the behaviour of the software.
[ ] I validated that new and existing tests pass locally with my changes.
[ ] Any dependent changes have been merged and published in downstream modules.

Closing this for the moment as this will have to be based on git tags, and not on git commits.


Docker system prune command ignoring filter when "all" flag is passed

When running a docker system prune (https://docs.docker.com/v17.09/engine/reference/commandline/system_prune/#extended-description) and passing a filter flag with the -a flag, the filter seems to be ignored and everything gets pruned.
This can be replicated by running the following commands:
docker pull hello-world
docker inspect hello-world
Verify that you get a bunch of output because the image was found. Now:
docker system prune -a -f --filter "until=2h"
docker inspect hello-world
This will return: Error: No such object: hello-world even though we created the image less than 2 hours ago and specified that filter for the prune command.
Expected behavior would be that the -a flag can be passed to remove dangling and unused images, while also allowing for the filter flag to specify timeframe which things were created that you want removed.
Note: I could see there being debate as to whether or not this is truly a bug since we are passing the -a flag, however it's documented as "Remove all unused images not just dangling ones" and there's nothing written about it overriding the filter flag. Personally, I think it would be nice to be able to specify both.
Docker Version: 19.03.4

This is not a bug, as the filter applies to when the image was first created, and not when the image was created onto the local machine as I expected it to work. Will have to investigate how to prune and filter based on when the image was pulled down.


Installation failure: step_size.py can't import blackjax.optimizers.dual_averaging

Bug:  When trying to import blackjax after installation, it fails and gives the following error: "ImportError: cannot import name 'optimizers' from 'blackjax' (/usr/local/lib/python3.7/dist-packages/blackjax/init.py)". This was noted in the comments of Issue #223 as occurring when you install blackjax before installing jaxopt, but even when I first install jaxopt, I am running into this issue.
Sample code to reproduce the problem:
! pip install jaxopt
! pip install blackjax
import blackjax
I noticed that when I run these commands in terminal, and then run python in terminal and import blackjax, I do not have this error – only when I am on Google colab. I also have no issue in Spyder, so it seems Google colab specific
Thank you in advance!

Can you please print the version number requested in the bug issue template?

I cannot reproduce it in Colab.

When I restarted runtime and ran everything in one code block it's now working – not sure what was happening but glad it's now working!


generating SBOMs for both cosign and cosigned projects and sign them

Description
we (w/@dentrax) thought that there are no SBOMs files generated and signed for both cosign and cosigned projects, so we're proposing to generate, sign them right after generating them via cosign's private key, and attach them to the proper registry. I'd like to list the tools that can help us to do that:

https://github.com/anchore/syft
https://github.com/anchore/sbom-action
https://github.com/CycloneDX/gh-gomod-generate-sbom
https://github.com/spdx/spdx-sbom-generator
https://github.com/tern-tools/tern
https://github.com/CycloneDX/cyclonedx-cli
https://github.com/kubernetes/release/tree/master/cmd/bom

as an example the Kyverno project is already doing this:
👀 github.com/kyverno/kyverno/pull/2438/
cc: @luhring @puerco @cpanato @nishakm

We have helped with the SBOM generation for Kyverno, Trivy, gosec, Buildpack, etc. The following Github action is utilised to generate the SBOM, https://github.com/CycloneDX/gh-gomod-generate-sbom . It is simple and straightforward and generates an accurate SBOM with a dependency graph. @nscuro has already addressed @dlorenc's concern ( https://github.com/CycloneDX/cyclonedx-gomod/issues/20 ) related to the accuracy of SBOM. The team is happy to address any further concerns and provide any help with the SBOM generation.
Cc: @nscuro, @stevespringett, @coderpatros, @DarthHater, @tricky42, @knqyf263, @masahiro331, @samj1912, @natalieparellano, @ShubhamPalriwala, @JimBugwadia, @ccojocar, @mmorel-35

As cosign uses goreleaser, https://github.com/goreleaser/goreleaser/issues/2597 (and consequently https://github.com/goreleaser/goreleaser/pull/2618) may be relevant.

kindly reminder @dlorenc

For cosigned we added support for producing sboms with ko, so once we cut a new ko release we should get that for free (same with the cosign images we build with ko).

oh, that's so nice, would you mind sharing the PR on the ko side?

There were a few, but this connects a few of the dots: https://github.com/google/ko/pull/511
It's merged at HEAD.  Please try it out and report any issues!

We (w/@dentrax) would like to add CycloneDX support as well. May we do this? Because the CycloneDX community provides great go modules that we can use for this.

https://github.com/CycloneDX/cyclonedx-go

works like a charm @mattmoor 🤩

Also, cosign supports text/spdx+json mediaType for SBOMs based on SPDX format. Maybe we can add this support too, WDYT @mattmoor? Is it worth it?

@developer-guy works for me!  cc @imjasonh

works like a charm @mattmoor 🤩

Just a nit: ko build --sbom builds and pushes with an SBOM, and ko deps --sbom=spdx generates one on-demand from the binary in the image.
You should try ko build --sbom=spdx and cosign download sbom ... on the pushed image to verify that the SBOM was built and pushed and attached how cosign expects to find it.

what about making ko compliant with CycloneDX format, and also supporting text/spdx+json mediaType, I'd love to do that btw, I can create separate issues for that.

SPDX was always just a starting point.  I think we'd love to have CycloneDX support as well.


With Durables Parse is not working

I am trying to set up durable objects and when I try to get the JSON to return a modified response of an object it does not give me the parsed response even though I set the parse option to true.

This should be addressed in v1.x releasing today!


repeated "BUSY" in webpage title

One busy is enough I guess...

@quertenmont are those (Busy) staying in the title?
Is this also the case when using Chrome (or similar) browser?

The "busy"   (one per running/pending cell) disappears after the cell has finished to run.
I don't have this in Chrome actually, just in Firefox.

@andypetrella  how do I edit labels? certainly we need new labels for low/high priority [bug/enchacement] .


🔧 [Refactor] Evaluate and refactor Frontend to use more Components

:zap: Refactor ticket

Evaluate and refactor Frontend to use more Components

[ ] Find out if the way the Frontend is made is good for testing
[ ] Find out if the structure i properly defined and suitable in the long run
[ ] Develop a target structure & transformation Strategy for the Frontend
[ ] Do this in cooperation with Alex and educate him in how it should be
[ ] Consider other essential Software (nuxt needed?, Storybook?)

Please make Issue for Stuff not done with this ticket
Motive

We do not want to build a big Frontend we have to refactor alot in a later phase of the project

@Mogge Can we close this? Do we need some restructuring? Whats your opinion on this?


Default parser to babylon

Issue
Refs:

https://github.com/facebook/jscodeshift/issues/488
https://github.com/facebook/jscodeshift/issues/500

Description
The jscodeshift a parser parameter defaults to babel5compat, which is has a significantly reduced feature set from ts, babylon, etc. The upstream project is meaning to switch default parser to babylon.
Testing
CI

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Switching to babylon had resolved lot of issues in the past:

https://github.com/facebook/jscodeshift/issues/232#issuecomment-351303137
https://github.com/facebook/jscodeshift/issues/180#issuecomment-348872733


18602 - Clean up Run directory

The task was called via Run and it was not going through the entire task life cycle and as a result it after_return wasn't being called, leaving the stage directory in place.

Coverage increased (+0.005%) to 88.753% when pulling 4ebff93e7e167a87a564bf0db37bc5b70c55f30f on 18602-CleanStage into 764c8499d4516a52fc9790414d93ff2045c37df8 on master.


Export value data after each roll, factored by parameters

In order to do a regression on the parameter space, we can export the value after each roll broken down by the coefficients on each of the parameters. These parameters can then be evaluated using cross-entropy against the game result to compute the best value for each parameter.

This assumes that the relative difference in value is the logit of the probability of the home team winning.


add some examples for gringo and clasp

Just adding some examples for gringo and clasp. Let me know what you think. Adding one for clingo should also be easy. We just have to call it with instance and encoding.

With the last commit the adjustbox package has to be included: \usepackage{adjustbox}. It makes scaling only parts of a frame much easier.


Better user wall

Description
To make a better user wall, we should make the avatars smaller and the wall only the width of the screen. It will therefore be a maximum image size and then calculated via JS to fit to the width of the screen.
The next bit would be to randomly change the avatars for an almost "pixel" fade-in / fade-out effect.
Screenshots

Tasks

[ ] Control avatar sizes by JS to fit perfectly on page.
[ ] Random changing of avatars to get pixel effect.
[ ] Random set of avatars when the page loads.

@DavidLemayian  is this project still actively being maintained? Would like to contribute

Hey @HenryKenya . Good to see you here. @kilemensi / @JustinArenstein are leading this project
@kilemensi / @JustinArenstein any pointers you can give?

Hey @HenryKenya.
Yes, the project is definitely alive & big things are coming... Please stay tuned.

Anything I can contribute to @kilemensi ?

None of the issues seem recent @kilemensi


Add support for synonyms

I'm using skos:altLabel for synonyms right now, but I can change that if there's another, better property.
tests/resources/test_1.ttl has some good examples of how the alt label came out. There's also support for if a unit has multiple synonyms, which are expected to be pipe-separated. I don't think there are any units with multiple synonyms in this column right now, but the "non-pluralize" column of the spreadsheet has some. I'm only using the "pluralize" column, which I've just renamed to exact_synonym_en for now. Waiting on @kaiiam to confirm if this is OK.

Just noticed a bug, please hold off on reviews...

Sounds good thanks @beckyjackson!

OK, this is ready now!


Click is not working for images - closing issue duplicated with #1067

Click is not working for images , I use example below
// This automation flow downloads a document from IRAS
// and uses OCR to extract information from the document.
// Accounting firms can do this at scale to download and
// automate part of their business processes for clients.
// visit IRAS website (for managing taxes in Singapore)
https://www.iras.gov.sg/irashome/default.aspx
// bring Chrome web browser to foreground to be in focus,
// for subsequent steps to click visually on UI elements
//click chrome_icon.png
// increase timeout from default 10 seconds to 300 seconds
// to let user sign in, including using 2FA authentication
//timeout 15
// log in to personal income tax using visual automation,
// instead of specifying XPath or other web identifiers
// that natively interact with web browser's backend
click login_menu.png
click mytax_option.png
click personal_button.pn

closing issue duplicated with #1067


Implement replicated secret sharing (From ABY3)

Can you add more details here @mortendahl ?

Pretty good explanation of replicated secret sharing in Section 3.2.1 of the ABY3 paper.

Some more details about the outcome of this issue:
Motivation
The motivation behind implementing replicated secret sharing is to benchmark some models using this scheme and to learn more about adding new features/protocols to tf-encrypted.
Outcome
Implement a new protocol which adds the ability to run basic computations with a replicated secret sharing scheme.
Below are the basic computations we should support from the beginning:

[ ] fixed point numbers
[ ] sharing
[ ] recombining
[ ] private private multiplication
[ ] private private addition
[ ] private private matrix multiplications
[ ]  polynomial approximation (e.g. sigmoid, relu)

Once we have these implemented and a great idea of where we want to go in the future we can extend this protocol to support things we already support in Pond.

@justin1121 can we add the tensor refactor as a dependency to this issue and which of the above checkboxes are blocked?

None of the above check boxes are currently blocked. Ideally implementing the above will help us understand how best to tackle the tensor refactor.

Closed with https://github.com/tf-encrypted/tf-encrypted/pull/721


fixing issue 27: now SVG graphics are correct for PieCharts >180°

fixes https://github.com/vdobler/chart/issues/27
In the code there is now a comparison which sets the "large-arc-flag" if needed as described in the SVG documenation.
Examples of plots:

Thanks for finding this bug and providing a fix!
Could you please reword the commit message, something like.
Fix SVG pie charts with segments larger than 180°

<Here some problem description and how you solved it
basically what is inside the issue>.

Fixes  \#27.

See e.g. https://chris.beams.io/posts/git-commit/
Will merge with proper commit message.

Had to re-fork as I messed up the commit messages. New Pull request to come.


Stage channels still not fixed

Data that i getting from the stage channel in backup
{
 "oldId": "1044145830917046282"
}

error when loading
Job Failed: Invalid Form Body
name[BASE_TYPE_REQUIRED]: This field is required
ID: loadChannel::guild.channels.create::undefined
DiscordAPIError[50035]: Invalid Form Body
name[BASE_TYPE_REQUIRED]: This field is required
    at handleErrors (C:\Users\V3land\Documents\backup_test\node_modules\@discordjs\rest\dist\index.js:722:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async SequentialHandler.runRequest (C:\Users\V3land\Documents\backup_test\node_modules\@discordjs\rest\dist\index.js:1120:23)
    at async SequentialHandler.queueRequest (C:\Users\V3land\Documents\backup_test\node_modules\@discordjs\rest\dist\index.js:953:14)
    at async _REST.request (C:\Users\V3land\Documents\backup_test\node_modules\@discordjs\rest\dist\index.js:1266:22)
    at async GuildChannelManager.create (C:\Users\V3land\Documents\backup_test\node_modules\discord.js\src\managers\GuildChannelManager.js:171:18) {
  requestBody: {
    files: undefined,
    json: {
      name: undefined,
      topic: undefined,
      type: null,
      nsfw: undefined,
      bitrate: undefined,
      user_limit: undefined,
      parent_id: '1195604545766686761',
      position: undefined,
      permission_overwrites: undefined,
      rate_limit_per_user: undefined,
      rtc_region: undefined,
      video_quality_mode: undefined,
      default_thread_rate_limit_per_user: undefined,
      available_tags: undefined,
      default_reaction_emoji: undefined,
      default_auto_archive_duration: undefined,
      default_sort_order: undefined,
      default_forum_layout: undefined
    }
  },
  rawError: {
    message: 'Invalid Form Body',
    code: 50035,
    errors: { name: [Object] }
  },
  code: 50035,
  status: 400,
  method: 'POST',
  url: 'https://discord.com/api/v10/guilds/1195297326730842182/channels'
}

npm list
+--<EMAIL_ADDRESS>+--<EMAIL_ADDRESS>+--<EMAIL_ADDRESS>`--<EMAIL_ADDRESS>

Also, logged child value after
} else if (child.type == discord_js.ChannelType.GuildStageVoice) {

If statement seems to be working, there is a something inside channelData = fetchStageChannelData(child, options, limiter);
Child value
<ref *2> StageChannel {
  type: 13,
  guild: <ref *1> Guild {
    id: '609422663898628110',
    name: 'GTA 5 RP | FIB',
    icon: '453c331fa46fdbd80e9c0ce9916f595d',
    features: [
      'ANIMATED_ICON',
      'INVITE_SPLASH',
      'AUTO_MODERATION',
      'SOUNDBOARD',
      'CHANNEL_ICON_EMOJIS_GENERATED',
      'THREE_DAY_THREAD_ARCHIVE',
      'COMMUNITY',
      'GUESTS_ENABLED',
      'TEXT_IN_VOICE_ENABLED',
      'NEWS'
    ],
    commands: GuildApplicationCommandManager {
      permissions: [ApplicationCommandPermissionsManager],
      guild: [Circular *1]
    },
    members: GuildMemberManager { guild: [Circular *1] },
    channels: GuildChannelManager { guild: [Circular *1] },
    bans: GuildBanManager { guild: [Circular *1] },
    roles: RoleManager { guild: [Circular *1] },
    presences: PresenceManager {},
    voiceStates: VoiceStateManager { guild: [Circular *1] },
    stageInstances: StageInstanceManager { guild: [Circular *1] },
    invites: GuildInviteManager { guild: [Circular *1] },
    scheduledEvents: GuildScheduledEventManager { guild: [Circular *1] },
    autoModerationRules: AutoModerationRuleManager { guild: [Circular *1] },
    available: true,
    shardId: 0,
    splash: null,
    banner: null,
    description: null,
    verificationLevel: 2,
    vanityURLCode: null,
    nsfwLevel: 0,
    premiumSubscriptionCount: 2,
    discoverySplash: null,
    memberCount: 240,
    large: true,
    premiumProgressBarEnabled: false,
    applicationId: null,
    afkTimeout: 900,
    afkChannelId: '629404453589614620',
    systemChannelId: '615288792328175648',
    premiumTier: 1,
    widgetEnabled: null,
    widgetChannelId: null,
    explicitContentFilter: 2,
    mfaLevel: 0,
    joinedTimestamp:<PHONE_NUMBER>997,
    defaultMessageNotifications: 1,
    systemChannelFlags: SystemChannelFlagsBitField { bitfield: 0 },
    maximumMembers: 500000,
    maximumPresences: null,
    maxVideoChannelUsers: 25,
    maxStageVideoChannelUsers: 50,
    approximateMemberCount: null,
    approximatePresenceCount: null,
    vanityURLUses: null,
    rulesChannelId: '1043902254266195979',
    publicUpdatesChannelId: '1043902254266195980',
    preferredLocale: 'en-US',
    safetyAlertsChannelId: null,
    ownerId: '204259438163525633',
    emojis: GuildEmojiManager { guild: [Circular *1] },
    stickers: GuildStickerManager { guild: [Circular *1] }
  },
  guildId: '609422663898628110',
  permissionOverwrites: PermissionOverwriteManager { channel: [Circular *2] },
  messages: GuildMessageManager { channel: [Circular *2] },
  nsfw: false,
  flags: ChannelFlagsBitField { bitfield: 0 },
  id: '1044145830917046282',
  name: 'Собрание',
  rawPosition: 3,
  parentId: '695954822242762752',
  rtcRegion: null,
  bitrate: 64000,
  userLimit: 10000,
  videoQualityMode: null,
  lastMessageId: '1189959789887889411',
  rateLimitPerUser: 0,
  topic: null
}

Oh, found the issue. Seems like you forget to add await in
channelData = fetchStageChannelData(child, options, limiter);

I will make PR with this fix. Please, review it. Thank you!

Fixed code still returning error on loading.
Job Failed: Cannot execute action on this channel type
ID: loadChannel::guild.channels.create::Собрание
DiscordAPIError[50024]: Cannot execute action on this channel type
    at handleErrors (C:\Users\V3land\Documents\backup_test\node_modules\@discordjs\rest\dist\index.js:722:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async SequentialHandler.runRequest (C:\Users\V3land\Documents\backup_test\node_modules\@discordjs\rest\dist\index.js:1120:23)
    at async SequentialHandler.queueRequest (C:\Users\V3land\Documents\backup_test\node_modules\@discordjs\rest\dist\index.js:953:14)
    at async _REST.request (C:\Users\V3land\Documents\backup_test\node_modules\@discordjs\rest\dist\index.js:1266:22)
    at async GuildChannelManager.create (C:\Users\V3land\Documents\backup_test\node_modules\discord.js\src\managers\GuildChannelManager.js:171:18) {
  requestBody: {
    files: undefined,
    json: {
      name: 'Собрание',
      topic: null,
      type: 13,
      nsfw: false,
      bitrate: 64000,
      user_limit: 10000,
      parent_id: '1195627558184681553',
      position: undefined,
      permission_overwrites: undefined,
      rate_limit_per_user: 0,
      rtc_region: undefined,
      video_quality_mode: undefined,
      default_thread_rate_limit_per_user: undefined,
      available_tags: undefined,
      default_reaction_emoji: undefined,
      default_auto_archive_duration: undefined,
      default_sort_order: undefined,
      default_forum_layout: undefined
    }
  },
  rawError: {
    message: 'Cannot execute action on this channel type',
    code: 50024
  },
  code: 50024,
  status: 400,
  method: 'POST',
  url: 'https://discord.com/api/v10/guilds/1195297326730842182/channels'
}

Found the issue. Server must be checked before loading for 'community' feature enabled in config.
Need to make additional checks.
Also, if community feature enabled, itteration with creating channels fails with error
Error occurred while deleting channels: Cannot delete a channel required for community servers
Error occurred while deleting channels: Cannot delete a channel required for community servers

Thanks for catching that @TuskarMA, It sounds like you know the fix for the community checks to add. Do you want to add those checks to your PR or would you like me to add them?

@TuskarMA, I made merged your PR and added the feature check for Community when loading a stage channel as well as added a check that only deletable channels will be attempted to be deleted in clearGuild which should remove those errors you received. All these changes are present in v0.7.1, let me know if you have any more issues. I will leave this issue open until its confirmed everything is working.

I assume everything is working correctly for you now, I will close this issue, but if there are any remaining problems, I will re-open it.


When you define TINYXML2_EXPORT StrPair is not exported and causes errors.

Hello and thanks for maintaining this library.
(USING WINDOWS) When I try to build and link the library built with TINYXML2_EXPORT I get errors from StrPair not getting exported.
I changed this:
class StrPair
to this:
class TINYXML2_LIB StrPair
And now it works. Is this a bug?
Thanks!

No idea; it doesn't hurt, I'll wrap it into the update.


IRC web service

Could an IRC web service be added with the following settings:
Server: irc.esper.net
Port: 6667
Room: #FTB-Wiki-Dev
Nick: Tilesheets
Branches:
NickServ Password:
SSL: false
Message Without Join: true
No colors: false
Long URL: false
Notice: true

Done!


Apply consistent naming "remote lab"

The name virtual lab is already use by another project. The question here is anyways, if virtual lab would be the correct name. The goal of the project is to enable citizen scientists and students access to lab equipment that is not "virtual" but actually physically exists. This lab equipment is stationed remotely from the user. Therefore "remote lab" or something similar is probably a more correct naming.

I agree 'virtual lab' is a misnomer and that 'remote lab' is more accurate, but the former is also the term used in a range of projects in various universities across the country with a similar aim which use proprietary software such as LabView. The 'remote access' feature is one part of the broader umbrella of 'virtual labs' . Here's the doc released by the Ministry of Human Resource Development in case you're interested
From a visibility point of view, 'virtual' may be better suited, and I'm sure that this platform will also include simulators and educational resources as it evolves, but for now I've renamed it to 'remote lab'


[hotfix] Fix dead link

Purpose of this pull request
fixed #1504
Check list

[ ] Code changed are covered with tests, or it does not need tests for reason:
[ ] If any new Jar binary package adding in you PR, please add License Notice according
New License Guide
[ ] If necessary, please update the documentation to describe the new feature. https://github.com/apache/incubator-seatunnel/tree/dev/docs

Hi @simon824 , it seems that the http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html URL is normal

Hi @simon824 , it seems that the http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html URL is normal

ok, seems have been fixed.


Can we have ogusa_default_parameters.json file available from pip install?

I'm wondering if there is any way to package ``ogusa_default_parameters.jsonwith the PyPI distribution and allow users of that package to access this JSON file directly from the package.  e.g., something likeogusa.ogusa_default_parameters.json`
Is this possible?
In general, I want to best think through how users who don't want to clone the repo to bring down files locally can use the OG-USA default calibration from this package.
A possible solution is to have them install the package and then read the JSON file directly from the github URL.  But wondering if there are other options.

We've figured this out.  One can use:
with importlib.resources.open_text(
        "ogusa", "ogusa_default_parameters.json"
    ) as file:
        defaults = json.load(file)
    p.update_specifications(defaults)