Some unit tests fail on Debian bookworm and unstable

Tested versions

Reproducible in 4.3-stable

System information
Godot v4.3.stable (17df8f24f) - Debian GNU/Linux 12 (bookworm) 12 - Wayland - GLES3 (Compatibility) - Mesa Intel(R) UHD Graphics 620 (KBL GT2) - Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz (8 Threads)
Issue description
I am working to package 4.3-stable in Debian but have encountered a few unit test failures on both Debian stable/bookworm as well as bleeding-edge unstable (in a VM). Apologies if this is too many issues at once. I am happy to split this up further if that's easier! The logs are mostly identical, so here is the result from inside the unstable VM:
SCRIPT ERROR: Trying to assign value of type 'AnimationPlayer' to a variable of type 'Area2D'.
          at: @implicit_new (res://completion/get_node/member_typehint_scene_incompatible/native_member_typehint_scene_incompatible.gd:3)
SCRIPT ERROR: Trying to assign value of type 'Node' to a variable of type 'Area2D'.
          at: @implicit_new (res://completion/get_node/member_typehint_scene_incompatible/class_member_typehint_scene_incompatible.gd:3)
ERROR: Cannot open CryptoKeyMbedTLS file '/usr/bin/../tests/data/crypto/in.key'.
   at: load (modules/mbedtls/crypto_mbedtls.cpp:61)
ERROR: Cannot open CryptoKeyMbedTLS file '/usr/bin/../tests/data/crypto/in.pub'.
   at: load (modules/mbedtls/crypto_mbedtls.cpp:61)
ERROR: Cannot open CryptoKeyMbedTLS file '/usr/bin/../tests/data/crypto/in.key'.
   at: load (modules/mbedtls/crypto_mbedtls.cpp:61)
ERROR: Cannot save CryptoKeyMbedTLS file '/usr/bin/../tests/data/crypto/out.key'.
   at: save (modules/mbedtls/crypto_mbedtls.cpp:84)
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
./modules/gdscript/tests/gdscript_test_runner_suite.h:43:
TEST SUITE: [Modules][GDScript]
TEST CASE:  Script compilation and runtime

modules/gdscript/tests/gdscript_test_runner.cpp:217: ERROR: CHECK( result.passed ) is NOT correct!
  values: CHECK( false )
  logged: /mnt/godot-build/godot3/modules/gdscript/tests/scripts/parser/warnings/confusable_identifier.gd
          GDTEST_OK
0 1

modules/gdscript/tests/gdscript_test_runner.cpp:217: ERROR: CHECK( result.passed ) is NOT correct!
  values: CHECK( false )
  logged: /mnt/godot-build/godot3/modules/gdscript/tests/scripts/parser/errors/identifier_similar_to_keyword.gd
          GDTEST_OK
>> WARNING
>> Line: 3
>> UNASSIGNED_VARIABLE
>> The variable "аs" was used before being assigned a value.
<null>

modules/gdscript/tests/gdscript_test_runner.cpp:217: ERROR: CHECK( result.passed ) is NOT correct!
  values: CHECK( false )
  logged: /mnt/godot-build/godot3/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_targets.gd
          GDTEST_OK
>> WARNING
>> Line: 8
>> NARROWING_CONVERSION
>> Narrowing conversion (float is converted to int and loses precision).
>> WARNING
>> Line: 19
>> NARROWING_CONVERSION
>> Narrowing conversion (float is converted to int and loses precision).
>> WARNING
>> Line: 24
>> NARROWING_CONVERSION
>> Narrowing conversion (float is converted to int and loses precision).
>> WARNING
>> Line: 31
>> NARROWING_CONVERSION
>> Narrowing conversion (float is converted to int and loses precision).
>> WARNING
>> Line: 35
>> NARROWING_CONVERSION
>> Narrowing conversion (float is converted to int and loses precision).

./modules/gdscript/tests/gdscript_test_runner_suite.h:49: FATAL ERROR: REQUIRE( fail_count == 0 ) is NOT correct!
  values: REQUIRE( 3 == 0 )
  logged: Make sure `*.out` files have expected results.
          All GDScript tests should pass.

===============================================================================
./modules/mbedtls/tests/test_crypto_mbedtls.h:64:
TEST CASE:  [Crypto] CryptoKey is_public_only

modules/mbedtls/tests/test_crypto_mbedtls.cpp:86: ERROR: CHECK( is_equal ) is NOT correct!
  values: CHECK( false )

===============================================================================
./modules/mbedtls/tests/test_crypto_mbedtls.h:71:
TEST CASE:  [Crypto] CryptoKey save

modules/mbedtls/tests/test_crypto_mbedtls.cpp:73: FATAL ERROR: REQUIRE( file_access.is_valid() ) is NOT correct!
  values: REQUIRE( false )
./modules/mbedtls/tests/test_crypto_mbedtls.h:71: FATAL ERROR: test case CRASHED: SIGSEGV - Segmentation violation signal

===============================================================================
[doctest] test cases:    16 |    13 passed | 3 failed | 946 skipped
[doctest] assertions: 56651 | 56645 passed | 6 failed |
[doctest] Status: FAILURE!

================================================================
handle_crash: Program crashed with signal 11
Engine version: Godot Engine v4.3.stable.debian4.3-stable-1 (bf909ee9a75df1972cccdf4ad08d4f4820b14b58)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
ERROR: FATAL: Index p_index = 1 is out of bounds (size() = 0).
   at: get (./core/templates/cowdata.h:205)

Compiling on bookworm and running the tests does successfully produce a backtrace:
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] /lib/x86_64-linux-gnu/libc.so.6(+0x3c050) [0x7fa7b2c5b050] (??:0)
[2] godot4(+0x141dce6) [0x560b018a9ce6] (??:?)
[3] godot4(+0x141e3cb) [0x560b018aa3cb] (??:?)
[4] godot4(+0x77d339) [0x560b00c09339] (??:0)
[5] godot4(+0xcee450) [0x560b0117a450] (??:0)
[6] godot4(+0x78a91b) [0x560b00c1691b] (??:0)
[7] godot4(+0x6b6c58) [0x560b00b42c58] (??:0)
[8] godot4(+0x5e6a53) [0x560b00a72a53] (??:0)
[9] /lib/x86_64-linux-gnu/libc.so.6(+0x2724a) [0x7fa7b2c4624a] (??:0)
[10] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x85) [0x7fa7b2c46305] (??:0)
[11] godot4(+0x6221e1) [0x560b00aae1e1] (??:0)
-- END OF BACKTRACE --
================================================================

On the unstable VM there is also Illegal instruction reported at the very end and on stable it instead shows Aborted.
Steps to reproduce
For Debian stable/bookworm:
sudo apt install build-essential ca-certificates libasound2-dev libenet-dev libfreetype-dev libgl-dev libglu1-mesa-dev libpcre2-dev libpng-dev libpulse-dev libsquish-dev libmbedtls-dev libtheora-dev libudev-dev libvorbis-dev libwebp-dev libx11-dev libxcursor-dev libxi-dev libxinerama-dev libxrandr-dev pkgconf scons zlib1g-dev libwayland-dev libgraphite2-dev libharfbuzz-dev libogg-dev libzstd-dev libicu-dev libbrotli-dev
scons target=editor arch=x86_64 platform=linuxbsd system_certs_path=/etc/ssl/certs/ca-certificates.crt tests=yes builtin_brotli=no builtin_certs=no builtin_embree=yes builtin_enet=no builtin_freetype=no builtin_graphite=no builtin_harfbuzz=no builtin_icu4c=no builtin_libogg=no builtin_libpng=no builtin_libtheora=no builtin_libvorbis=no builtin_libwebp=no builtin_mbedtls=no builtin_pcre2=no builtin_squish=no builtin_zlib=no builtin_zstd=no openxr=no use_static_cpp=no engine_update_check=no -j 8 CCFLAGS="-g -O2 -fstack-protector-strong -Wformat -Werror=format-security" LINKFLAGS="-Wl,-z,relro -Wl,-z,now" CFLAGS="-g -O2 -fstack-protector-strong -Wformat -Werror=format-security"
./bin/godot.linuxbsd.editor.x86_64 --test

For unstable I just add libembree-dev and use builtin_embree=no, as unstable has a recent enough libembree.
Minimal reproduction project (MRP)
N/A

The error look as if you'd be running the tests from a Godot binary in /usr/bin, but they're only supported when ran "in place" in the Git repository.
ERROR: Cannot open CryptoKeyMbedTLS file '/usr/bin/../tests/data/crypto/in.key'.

That path should be /mnt/godot-build/godot3/bin/../tests/data/crypto/in.key.
I know distro packagers tend to patch software to match distro requirements (I've been there myself on Mageia/Fedora), do you have any downstream patches that could impact this? Or are you maybe running the tests from the binary already installed in /usr/bin or PATH inadvertently?
If you can share the debian/ files, I'm familiar with the system and might be able to spot what's wrong.

Compiling on bookworm and running the tests does successfully produce a backtrace:

To get a proper backtrace you should compile with debug_symbols=yes passed explicitly.

Sorry for the confusion! I did indeed run the Godot binaries from /usr/bin instead of the command I wrote.
Copying the binaries into bin/ and running them on Debian unstable gives only a few failing tests for the editor (the release template passed all tests :tada:):

Editor Test Output
SCRIPT ERROR: Trying to assign value of type 'AnimationPlayer' to a variable of type 'Area2D'.
          at: @implicit_new (res://completion/get_node/member_typehint_scene_incompatible/native_member_typehint_scene_
incompatible.gd:3)
SCRIPT ERROR: Trying to assign value of type 'Node' to a variable of type 'Area2D'.
          at: @implicit_new (res://completion/get_node/member_typehint_scene_incompatible/class_member_typehint_scene_i
ncompatible.gd:3)
WARNING: ICU data is not loaded, Unicode security and spoofing detection disabled.
     at: _is_valid_identifier (modules/text_server_adv/text_server_adv.cpp:7197)
[doctest] doctest version is "2.4.11"
[doctest] run with "--help" for options
===============================================================================
./modules/gdscript/tests/gdscript_test_runner_suite.h:43:
TEST SUITE: [Modules][GDScript]
TEST CASE:  Script compilation and runtime

modules/gdscript/tests/gdscript_test_runner.cpp:217: ERROR: CHECK( result.passed ) is NOT correct!
  values: CHECK( false )
  logged: /mnt/godot-build/godot3/modules/gdscript/tests/scripts/parser/warnings/confusable_identifier.gd
          GDTEST_OK
0 1

modules/gdscript/tests/gdscript_test_runner.cpp:217: ERROR: CHECK( result.passed ) is NOT correct!
  values: CHECK( false )
  logged: /mnt/godot-build/godot3/modules/gdscript/tests/scripts/parser/errors/identifier_similar_to_keyword.gd
          GDTEST_OK
>> WARNING
>> Line: 3
>> UNASSIGNED_VARIABLE
>> The variable "аs" was used before being assigned a value.
<null>

modules/gdscript/tests/gdscript_test_runner.cpp:217: ERROR: CHECK( result.passed ) is NOT correct!
  values: CHECK( false )
  logged: /mnt/godot-build/godot3/modules/gdscript/tests/scripts/analyzer/features/warning_ignore_targets.gd
          GDTEST_OK
>> WARNING
>> Line: 8
>> NARROWING_CONVERSION
>> Narrowing conversion (float is converted to int and loses precision).
>> WARNING
>> Line: 19
>> NARROWING_CONVERSION
>> Narrowing conversion (float is converted to int and loses precision).
>> WARNING
>> Line: 24
>> NARROWING_CONVERSION
>> Narrowing conversion (float is converted to int and loses precision).
>> WARNING
>> Line: 31
>> NARROWING_CONVERSION
>> Narrowing conversion (float is converted to int and loses precision).
>> WARNING
>> Line: 35
>> NARROWING_CONVERSION
>> Narrowing conversion (float is converted to int and loses precision).

./modules/gdscript/tests/gdscript_test_runner_suite.h:49: FATAL ERROR: REQUIRE( fail_count == 0 ) is NOT correct!
  values: REQUIRE( 3 == 0 )
  logged: Make sure `*.out` files have expected results.
          All GDScript tests should pass.

===============================================================================
./tests/servers/test_text_server.h:43:
TEST SUITE: [TextServer]
TEST CASE:  [TextServer] Init, font loading and shaping
  [TextServer] Unicode identifiers

./tests/servers/test_text_server.h:633: ERROR: CHECK( ts->is_valid_identifier(U"\u0646\u0627\u0645\u0647\u200C\u0627\u06CC") ) is NOT correct!
  values: CHECK( false )

./tests/servers/test_text_server.h:634: ERROR: CHECK( ts->is_valid_identifier(U"\u0D26\u0D43\u0D15\u0D4D\u200C\u0D38\u0D3E\u0D15\u0D4D\u0D37\u0D3F") ) is NOT correct!
  values: CHECK( false )

./tests/servers/test_text_server.h:635: ERROR: CHECK( ts->is_valid_identifier(U"\u0DC1\u0DCA\u200D\u0DBB\u0DD3") ) is NOT correct!
  values: CHECK( false )

===============================================================================
./tests/servers/test_text_server.h:43:
TEST SUITE: [TextServer]
TEST CASE:  [TextServer] Init, font loading and shaping
  [TextServer] Strip Diacritics

./tests/servers/test_text_server.h:737: ERROR: CHECK( ts->strip_diacritics(U"ٱلسَّلَامُ عَلَيْكُمْ") == U"ٱلسلام عليكم" ) is NOTcorrect!
  values: CHECK( ٱلسَّلَامُ عَلَيْكُمْ == [{?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}] )

===============================================================================
[doctest] test cases:     961 |     959 passed | 2 failed | 1 skipped
[doctest] assertions: 2405266 | 2405258 passed | 8 failed |
[doctest] Status: FAILURE!

To get a proper backtrace you should compile with debug_symbols=yes passed explicitly.

Turning this option on seemed to try to compile everything, including things specified as builtin_*=no, even with separate_debug_symbols=yes. Is there a way to just generate debug symbols for the built code and rely on distro-provided debug symbols for the others?
If you are interested, the MR is here. The Debian GitLab instance is currently being upgraded so it may be offline when you try to visit.

For what it's worth, I added static_icu_data=no to the build command but got the same test results.

Building with builtin_icu4c=yes gets rid of the unit test failures, so it seems to be something with the interaction between Debian's libicu (currently v72.1) and Godot.
I still get the following on stderr only on the editor test suite:
SCRIPT ERROR: Trying to assign value of type 'AnimationPlayer' to a variable of type 'Area2D'.
          at: @implicit_new (res://completion/get_node/member_typehint_scene_incompatible/native_member_typehint_scene_incompatible.gd:3)
SCRIPT ERROR: Trying to assign value of type 'Node' to a variable of type 'Area2D'.
          at: @implicit_new (res://completion/get_node/member_typehint_scene_incompatible/class_member_typehint_scene_incompatible.gd:3)

Are those safe to ignore or do they indicate further issues?
I'll try to see where the ICU data load failure is happening but happy for any pointers from more experienced folks.

The below patch seems to fix the failing unit tests when using builtin_icu4c=no static_icu_data=no. I'll submit this as a PR once I make sure nothing breaks using a normal vendored Godot build.
--- a/modules/text_server_adv/text_server_adv.cpp
+++ b/modules/text_server_adv/text_server_adv.cpp
@@ -438,6 +438,8 @@ bool TextServerAdvanced::_load_support_data(const String &p_filename) {
        }
 #else
        if (!icu_data_loaded) {
+               UErrorCode err = U_ZERO_ERROR;
+#ifdef ICU_DATA_NAME
                String filename = (p_filename.is_empty()) ? String("res://") + _MKSTR(ICU_DATA_NAME) : p_filename;

                Ref<FileAccess> f = FileAccess::open(filename, FileAccess::READ);
@@ -447,12 +449,11 @@ bool TextServerAdvanced::_load_support_data(const String &p_filename) {
                uint64_t len = f->get_length();
                icu_data = f->get_buffer(len);

-               UErrorCode err = U_ZERO_ERROR;
                udata_setCommonData(icu_data.ptr(), &err);
                if (U_FAILURE(err)) {
                        ERR_FAIL_V_MSG(false, u_errorName(err));
                }
-
+#endif
                err = U_ZERO_ERROR;
                u_init(&err);
                if (U_FAILURE(err)) {

I still get the SCRIPT ERROR messages, but they look intentional as they occur in a test that is expected to raise those errors?


Implementation of quaternion derivative

Can somebody explain the reason behind the implementation of the derivative function here: https://github.com/PX4/Matrix/blob/master/matrix/Quaternion.hpp#L238-L253
Why does it have to be implemented that way, as opposed to just:
matrix::Quaternion w(0, _w(0), _w(1), _w(2));
matrix::Quaternion dq = (0.5f * q * w);
(The above code is "textbook" example but it gives wrong results (seems like it results in angles being applied in the wrong order..). Yet it is what I was able to find in the literature so far so I want to know why it does not work).

When q0 is the scalar of the quaternion, the correct equation is dq = 0.5 * w * q, see (https://arxiv.org/pdf/0811.2889.pdf)
I just switched to this formula on master and added more unit tests. The existing formula was equivalent so no functional change.


Keck Graduate Institute

Keck Graduate Institute
535 Watson Dr.
Claremont, CA 91711
http://www.kgi.edu

@iwaniec Thank you for your patience while waiting for a review and processing your request. Pull request merged. Please start applying for JetBrains educational subscription at https://www.jetbrains.com/shop/eform/students in an hour, to allow the changes to propagate through JetBrains systems.


monaco is not defined

An error occurred when my program reached the following statement
MonacoServices.install(editor)
The error message is as follows
client.js:26 ReferenceError: monaco is not defined
at new MonacoWorkspace (monaco-workspace.js:13)
at create (monaco-services.js:21)
at Object.install (monaco-services.js:27)
I want to know why ‘monaco is not defined’ in MonacoWorkspace‘s constructor
"monaco-editor": "^0.26.0",
"monaco-languageclient": "^0.13.0"

Although I still don't know why, it doesn't report any mistakes now. I just changed the version number of "Monaco editor": "to 0.19.3

With the last version of monaco editor, you need to use the next version of monaco-languageclient


add sidecar.istio.io/inject annotations for alluxio runtime

Signed-off-by: Wang Ni<EMAIL_ADDRESS>
Ⅰ. Describe what this PR does
Ⅱ. Does this pull request fix one issue?

fixes https://github.com/fluid-cloudnative/fluid/issues/2531
Ⅲ. List the added test cases (unit test/integration test) if any, please explain if no tests are needed.
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

I will add test cases in other pr

I will add test cases in other pr

Please add test cases here: https://github.com/fluid-cloudnative/community/blob/master/testcase/fluid-testcase.md. thanks.

/lgtm
/approve


proposing "warnings" for response meta

Warnings seem like a much needed item to understand responses where the server wants to indicate information about potential problems with the response which are not outright failures. Especially useful for debugging aggregators.

@costero-e So I feel like changing string -> object (no further definitions, like info right now; or even using the info prototype. This would remove future hassle - one could design specific formats w/o breaking the spec. Agree? info?

I don't know if it's better to put it as an object or not, what I see is that if we don't specify all the cases in which we want the beacon to return a warning, this will be very generic and I don't know if it will be useful then.

I don't know if it's better to put it as an object or not, what I see is that if we don't specify all the cases in which we want the beacon to return a warning, this will be very generic and I don't know if it will be useful then.

Unfortunately, the only place to report Beacon ERROR**S** is a dubious BeaconErorr object with an example "404" that has little sense to me. Beacon Network may use "warnings" as a placeholder for errors when we do have a response, but some beacons failed. Probably not best solution. I would extend beaconErrorResponse to use an array of BeaconErrors, but...
D.

@costero-e @redmitry I'm actually for keeping the format the way I've submitted (list of strings) since otherwise we run into read-out/interpretation problems,

Agree.
I would also add the property location:
"location" : {
    "type": string,
    "format": "json-pointer"
}
' ' 'json

As I mentioned before the error reporting is quite weak.
Json Schema recommends the format for **schema** errors reporting:
https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-01#section-12.4.2

D.

@mbaudis The warning schema is more complete now, good job. On the other hand, I don't know if this is too technical. If this is oriented to users that don't have a lot of database or programming knowledge maybe these messages won't help them. But I guess every beacon developer can write the warning messages based on their needs so no problem.
@redmitry Can you provide an example of the location property, please?

@redmitry @costero-e location? Btw., have a look at the discussion there - maybe chime in? IMO it would be great to have the (geographic) location / geoLocation property in service-info. But a GeoLoaction object should anyway live somewhere & then be re-used across GA4GH standards; therefore I've had it for a while in {S}[B] ...

https://github.com/ga4gh-discovery/ga4gh-service-info/issues/73 discussion in service-info
{S}[B] GeoLocation  schema https://schemablocks.org/schema_pages/Progenetix/GeoLocation/

@redmitry Can you provide an example of the location property, please?

The idea is to use "location" which should locate the problem in json document (basically the input, but BN may use it for the outputs also)
.
In the json schema terms it is a "instanceLocation" for example; "/query/filters/0"
Json Schema parsers should also provide the "absoluteKeywordLocation" e.g. "https://raw.githubusercontent.com/ga4gh-beacon/beacon-v2/main/framework/json/requests/beaconRequestBody.json#/properties/query/properties/filters"
But as you said probably too technical. The idea is to provide some additional insight about the error location.
For instance, Beacon Network may use it to point invalid metadata provided by beacons.
D.

@redmitry Ok, I see, thank you. It is interesting if we have all the possible errors listed in the Json schema.
@mbaudis geolocation? What would we be using it for? To map where we have all the beacons or the info?

Yes. You can direcly use a GeoJSON object to project onto a map, geofence/query, get stats ... See the linked discussion. Was reminded again by the handmade ELIXIR map of beacons.
Now, while I wiuld prefer this as part of service-info (inherited by Beacon) we probably should demonstrate it in the network implementation (as additional parameter).

Sorry for jumping in late in the discussion.
I would like to see the actual use cases we are trying to solve here.
The provided examples are not compelling to me:

If a parameter could not be interpreted, an error should be returned or just a "false" response
The discrepancy in the granularity between request and response could be detected looking at the response header, and that is the purpose for having them there

In summary, if "warnings" is like a "hack" we should discuss which are the actual issues we are trying to solve and if "warnings" solve them or we need different solutions for different use cases.


Support flag PARALLEL_SOURCING

In situations where we fetch Wikipedia article titles from a CMS (eg Drupal) and flag PARALLEL_SOURCING is on it can happen that gatsby-wikipedia-fetcher will run before the CMS data is fetched, meaning no Wikipedia data will be retrieved.
We need to see what's possible to do about this - can we make this source plugin dependent on another one, or is there another solution?

See also https://github.com/gatsbyjs/gatsby/discussions/34289


Improve performance of log listener

Before we had one log listener for each event on each contract. Now we
use only 1 log listener for all events. This should boost performance.
I tried to not break too much of the proxy class, so thats why I left
the start_listen.. methods.
Closes #445

Codecov Report

Merging #448 into master will increase coverage by 0.23%.
The diff coverage is 74.35%.

@@            Coverage Diff             @@
##           master     #448      +/-   ##
==========================================
+ Coverage   64.02%   64.25%   +0.23%
==========================================
  Files          53       53
  Lines        3983     4054      +71
==========================================
+ Hits         2550     2605      +55
- Misses       1433     1449      +16

Impacted Files
Coverage Δ

src/relay/blockchain/exchange_proxy.py
73.75% <100%> (ø)
:arrow_up:

src/relay/relay.py
28.93% <5.88%> (-0.29%)
:arrow_down:

src/relay/blockchain/currency_network_proxy.py
81.39% <83.33%> (+0.14%)
:arrow_up:

src/relay/blockchain/proxy.py
82.58% <85.88%> (+1.93%)
:arrow_up:

Continue to review full report at Codecov.

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


Build is failing

I am unable to build the project; here's the output I'm getting:
$ goreleaser

   • releasing using goreleaser dev...
   • loading config file       file=.goreleaser.yml
   • RUNNING BEFORE HOOKS
   • GETTING AND VALIDATING GIT STATE
      • releasing 0.1, commit 206ec7e642292873604e6abe0d0590eb3b3afe95
   • PARSING TAG
   • SETTING DEFAULTS
      • LOADING ENVIRONMENT VARIABLES
      • SNAPSHOTING
      • GITHUB RELEASES
      • PROJECT NAME
      • ARCHIVES
      • BUILDING BINARIES
      • LINUX PACKAGES WITH NFPM
      • SNAPCRAFT PACKAGES
      • CALCULATING CHECKSUMS
      • SIGNING ARTIFACTS
      • DOCKER IMAGES
      • ARTIFACTORY
      • S3
      • HOMEBREW TAP FORMULA
      • SCOOP MANIFEST
   • SNAPSHOTING
      • pipe skipped              error=not a snapshot
   • CHECKING ./DIST
   • WRITING EFFECTIVE CONFIG FILE
      • writing                   config=dist/config.yaml
   • GENERATING CHANGELOG
      • writing                   changelog=dist/CHANGELOG.md
   • LOADING ENVIRONMENT VARIABLES
   • BUILDING BINARIES
      • building                  binary=dist/windows_386/system-profile-linux.exe
      • building                  binary=dist/darwin_amd64/system-profile-linux
      • building                  binary=dist/freebsd_amd64/system-profile-linux
      • building                  binary=dist/linux_arm64/system-profile-linux
      • building                  binary=dist/netbsd_amd64/system-profile-linux
      • building                  binary=dist/netbsd_386/system-profile-linux
      • building                  binary=dist/linux_amd64/system-profile-linux
      • building                  binary=dist/freebsd_386/system-profile-linux
      • building                  binary=dist/linux_386/system-profile-linux
      • building                  binary=dist/netbsd_arm_7/system-profile-linux
      • building                  binary=dist/solaris_amd64/system-profile-linux
      • building                  binary=dist/windows_amd64/system-profile-linux.exe
      • building                  binary=dist/linux_arm_6/system-profile-linux
      • building                  binary=dist/linux_arm_5/system-profile-linux
      • building                  binary=dist/linux_arm_7/system-profile-linux
      • building                  binary=dist/netbsd_arm_5/system-profile-linux
      • building                  binary=dist/netbsd_arm_6/system-profile-linux
      • building                  binary=dist/darwin_386/system-profile-linux
   ⨯ release failed after 0.12s error=build for system-profile-linux does not contain a main function

Fixed with #3. :boom:


Add tilt to the accessibility config file.

Almost forgot to do that until I saw the property today.

It's been added.


Custom UIImageView.contentMode

Is it possible to support custom UIImageView.contentMode?
https://github.com/v15a1/Glideshow/blob/master/Glideshow/GlideCell.swift#L173

Glideshow hasn't been configured for custom .contentMode. Although, PRs for improvement are appreciated.


Detect peer name collisions

This PR adds a machinery for detecting Peer names collision during the handshake. In the case of the collision, we log the error and close the connection without trying to reestablish it.

LGTM. If you rebase on master, the build failure should go away.

Done. PTAL.

LGTM! (Mesh is author merges policy.)


Properly handle restart edge cases between ExEx and new engine

With the previous engine, an exex might loose a chain notification, if the node crashes/stops before it has time to handle it. This means that on boot-up the exex should actually account for that since its tip will be behind the node tip.
With the new engine however, the exex will actually be ahead of the node in case of a crash or simple restart, since part of the chain will be purely in-memory
Example:

given a chain of blocks 1a(db) -> 2a(in-mem) -> 3a(in-mem)
exex processes 3a
node crashes/stops
node starts
node receives 2a from CL
node sends 2a to exex, even though its ready for 4a

This becomes more problematic if 2a -> 3a gets reorged during the crash and the exex depends solely on ChainReorged { old_chain } :

exex has a storage table with TxHash -> T
given a chain of blocks 1a(db) -> 2a(in-mem) -> 3a(in-mem)
exex processes 3a
node crashes/stops
chain gets reorged into 1a -> 2b -> 3b
node starts
node receives 2b from CL
node sends 2b to exex as a normal ChainCommitted notification. How is the exex supposed to clean-up the table on 1)?

With the roll-out of the new engine we should do:

Document and highlight these edge cases (probably discourage relying solely on old_chain)
Enforce some handling of these cases into the exex installation/start.

Proposal:

persistence = 0 could mean that an exex notification is only sent after persisted. this would solve the ahead + old_chain dependency issue, but reintroduce the old engine case of potentially being behind the node, which can be solved by:
exex passes its latest block on init/start. if behind the node (with the above suggestion), trigger backfill for missing range

Additional context
No response

Solved by https://github.com/paradigmxyz/reth/issues/11200


rclone check should return a count of files it couldn't checksum

rclone check will happily tell you everything is OK when the remote doesn't support checksums.
Should make a count of this.
Could also have an option to download the files if the checksum is missing to actually check it.

I've implemented this here: http://beta.rclone.org/v1.33-67-gb7875fc/


Memory leak resolution

Describe your changes
added the private method  "_get_interactive_variables" to "PloomberShell" to detect all the  variables defined within the notebook.
added the  method "delete_interactive_variables" to "PlommberShell" to delete all the references of the interactive variables.
applied this last method after the notebook exectuion at the exit method.
added test on test_memory_release_nb.py to track the memory usage.
Closes #74

:books: Documentation preview :books:: https://ploomber-engine--75.org.readthedocs.build/en/75/

looks like the tests are failing, what OS are you using? psutil works differently in difference OSs, so it might be that.

I am using a dockerized ubuntu container, my test assume that the CI pipeline executes the tests sequentially, in order to track and  compare the memory usage, if other tests runs in parallel, the outcome of the test won't be deterministic, and a lock must be added during the tests to prevent memory consumption by other process.
Is is the case ?
I think that I will also remove assertions done in the middle, to make the test simpler to maintain, and keep only the final comparison, I'll change the epsilon value to a threshold that compares the rate between the memory consumption at the end subtracted by the initial value and the memory consumption at its peak subtracted by the initial value.
This rate should be negligible in the case of absence of memory leak.

Is is the case ?

yes, tests are executed serially.

The test is also failing locally for me (mac M2):
(engine)  eduardo@macbookair dev/ploomber-engine (memory-release) » pytest tests/test_memory_release_nb.py
================================================================================ test session starts ================================================================================
platform darwin -- Python 3.10.9, pytest-7.2.2, pluggy-1.0.0
rootdir: /Users/eduardo/dev/ploomber-engine, configfile: pyproject.toml
plugins: anyio-3.6.2
collected 1 item

tests/test_memory_release_nb.py F                                                                                [100%]

===================================================================================== FAILURES ======================================================================================
_____________________________________________________________________ test_if_memory_leak_within_notebook[0.01] _____________________________________________________________________

path_notebook = PosixPath('/private/var/folders/p_/tdg15_tn0rq_b63np2rwrrpc0000gn/T/pytest-of-eduardo/pytest-41/test_if_memory_leak_within_not0/noteboook.ipynb'), epsilon = 0.01

    @pytest.mark.parametrize(
        "epsilon,",
        [
            0.01,
        ],
    )
    def test_if_memory_leak_within_notebook(path_notebook, epsilon):
        """
        epsilon is an amount of memory that is negligeable with respect
        to the data declared on the test,
        """
        memory_usage_start = get_current_memory_usage()

        for _ in range(2):
            # memory_usages.append(get_current_memory_usage())
            memory_usage_begining_loop = get_current_memory_usage()
            client = PloomberClient.from_path(path_notebook)

            # injecting new variables in namespace
            namespace = client.get_namespace(
                namespace=dict(a=[1 for _ in range(10**7)], b=[1 for _ in range(10**7)])
            )
            memory_usage_with_namespace_in_mem = get_current_memory_usage()

            # executing notebook with execute method

            nb_node = client.execute()

            del nb_node
            memory_usage_after_exec_method = get_current_memory_usage()

            assert (
                abs(
                    memory_usage_after_exec_method["used"]
                    - memory_usage_with_namespace_in_mem["used"]
                )
                < epsilon
            )
>           assert (
                abs(
                    memory_usage_after_exec_method["free"]
                    - memory_usage_with_namespace_in_mem["free"]
                )
                < epsilon
            )
E           assert 80.0 < 0.01
E            +  where 80.0 = abs((115.0 - 35.0))

tests/test_memory_release_nb.py:80: AssertionError
------------------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------------------
free 33.9
used 5.6
free 33.9
used 5.6
free 35.0
used 5.6
free 115.0
used 5.6
------------------------------------------------------------------------------- Captured stderr call --------------------------------------------------------------------------------
Executing cell: 3: 100%|██████████| 3/3 [00:00<00:00, 19.40it/s]
Executing cell: 3: 100%|██████████| 3/3 [00:00<00:00, 25.98it/s]
================================================================================= warnings summary ==================================================================================
../../miniconda3/envs/engine/lib/python3.10/site-packages/ansiwrap/core.py:6
  /Users/eduardo/miniconda3/envs/engine/lib/python3.10/site-packages/ansiwrap/core.py:6: DeprecationWarning: the imp module is deprecated in favour of importlib and slated for removal in Python 3.12; see the module's documentation for alternative uses
    import imp

../../miniconda3/envs/engine/lib/python3.10/site-packages/jupyter_client/connect.py:20
  /Users/eduardo/miniconda3/envs/engine/lib/python3.10/site-packages/jupyter_client/connect.py:20: DeprecationWarning: Jupyter is migrating its paths to use standard platformdirs
  given by the platformdirs library.  To remove this warning and
  see the appropriate new directories, set the environment variable
  `JUPYTER_PLATFORM_DIRS=1` and then run `jupyter --paths`.
  The use of platformdirs will be the default in `jupyter_core` v6
    from jupyter_core.paths import jupyter_data_dir, jupyter_runtime_dir, secure_write

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
============================================================================== short test summary info ==============================================================================
FAILED tests/test_memory_release_nb.py::test_if_memory_leak_within_notebook[0.01] - assert 80.0 < 0.01
=========================================================================== 1 failed, 2 warnings in 2.79s ===========================================================================

We've experienced this before: testing for memory consumption is challenging since many factors can influence the measurements. Perhaps we could test that the variables are released after running a notebook?  (check they no longer exist in the user_ns) It's not a perfect test but will be reliable.

Also, I tried the code on a vm instance from GCP.
I followed the docs for contribution to ploomber (https://ploomber-contributing.readthedocs.io/en/latest/contributing/setup.html)
I got 5 tests that failed on  the 'main branch' (and also for my branch).

Are these tests ignored on the CI pipeline ran by github ?

I can propose another solution, as soon as I have more time to work on it, this week or the next

great work! feel free to submit another PR if you find a better approach!

I'll make a release now


removed static clientId from the pug view

Removed static clientId from the pug view as it should be passed via router (render engine)
best
Atakan

@atakane, great suggestion, thanks for the PR! Merging.


Misc tweaks

This is a bit of a bits-and-bobs PR I'm afraid, loads of small fixes I wanted to get in ASAP.
Closes https://github.com/momentum-mod/panorama/issues/25
Closed https://github.com/momentum-mod/panorama/issues/23

Got rid of the debug Msgs and changed the .some to a negated .every which I think is a lot clearer


Feature request: @click:row event

If the user clicks somewhere on a row in the table, I would like to navigate that user to different page. With Vuetify 2.x you have a 'click:row' event you can subscribe to and then do navgiation programmatically. I don't believe a similar event exists in this library yet. What do you think?

@djhuistra Thank you for reminding me, that is really an important feature, I am going to add this in the next version, please wait for my notice.

@djhuistra click-row feature has been released since version 1.2.4.
here is the document: https://hc200ok.github.io/vue3-easy-data-table-doc/features/click-row.html 🤝


Downlink issues

Are you using Helium hosted Console or running your own open source Console? Helium Hosted

If you are on Helium hosted Console, which url are you currently on? N/A

If you are experiencing bugs in Helium hosted Console, please specify your Organization name and Device ID (ex. 3483050b-284d-47e2-8eda-e087fc03a753). r4wknet, b49366bf-b8fe-4c03-900f-444ef87b4c78, ab0f9eb5-dd18-47f0-b058-a610cccd29d5

Please describe your issue:
Downlinks are not being received by my devices. Seems they stopped working right at the time of the recent console update. Downlinks are being que'd in the console but they never make it to my devices. Unfortunately there's no way for my to prove this is something on the console's side other than the fact that this has been working for months. I've noticed uplinks have a spreading of SF7 and downlinks have a spreading of SF8. In the past, when downlinks were working, both would be SF7. I've also noticed since the console update the channel on downlinks is always 0. Where before it appeared to be a random channel. Below is a paste bin of some JSON showing the difference between a working downlink (pre update), and and not working one. The pastebin is only an example, if you look at my devices you should see hundred's of examples of this (if not 1000+). The two sensors I'm using to debug are WisBlock's running mapper firmware. Please let me know if you need anything else.
Edit: Also tried adding one of the devices to a second console account with seemingly no success. Any insight would be welcome!
https://pastebin.com/tmXWfmsz

Was this fixed with 2<IP_ADDRESS>? We reverted our LoraWan implementation due to some downlink issues

issues

Yup! happy to be getting downlinks again. thank you.

Awesome! Glad to see a happy device!


Fix markdown in HTML and Ocean latest-->stable

Also closes comments from @mdecandia in https://github.com/dwavesystems/olp-content/pull/146

Closes https://github.com/dwave-examples/hybrid-computing-notebook/issues/1 and https://github.com/dwave-examples/hybrid-computing-notebook/issues/2


Doesn't work on Android

Invariant Violation: requireNativeComponent: "OtpAutoFillView" was not found in the UIManager.

"expo": "~45.0.0",
"expo-asset": "~8.5.0",
"expo-constants": "~13.1.1",
"expo-font": "~10.1.0",
"expo-linking": "~3.1.0",
"expo-splash-screen": "~0.15.1",
"expo-status-bar": "~1.3.0",
"expo-system-ui": "~1.2.0",
"expo-web-browser": "~10.2.0",
"react": "17.0.2",
"react-dom": "17.0.2",
"react-native": "0.68.2",
"react-native-otp-auto-fill": "^0.1.17",

facing same issue
@ErnestMironov have you found any solution ?

Any updates on this? Does it work with expo?


Dependencies are not installing for features in manifest mode

Describe the bug
Dependencies are not installing for features in manifest mode
Environment

OS: macOS
Compiler: Apple clang version 14.0.3 (clang-14<IP_ADDRESS>.1)
CMake: version 3.25.2

To Reproduce
Steps to reproduce the behavior:

Download CMakeLists.txt and vcpkg.json.txt
Rename vcpkg.json.txt -> vcpkg.json (json attach failed)
cmake -DCMAKE_TOOLCHAIN_FILE=<path-to-vcpkg.cmake> -DBUILD_TESTING=ON -S . -B build
See error

Expected behavior
cmake configuration complete
Failure logs

cmake.log

Works, thanks


Python version discrepancy

Hi,
I am trying to install the DS. I found your readme suggests having Python 3.11. However, when I checked your conda environment file: DS-GPU.yml, I saw Python 3.7 was written. So, I wonder which one you suggest we go to?
Thank you,

Hey, I should remove the conda envs as they are no longer updated. Please go through pip and have Python 3.11


Implement IMSC writer

Implement a converter from the model to an IMSC 1.1 document :

Complete ttconv/imsc/imsc_writer.py to convert a model Document into a valid IMSC 1.1 document. There should be one function/method for each ContentElement model subclass that converts the subclass to the equivalent XML node.
add a write method to each StyleProperty at ttconv/imsc/style_properties.py take as input the value of a model style property and outputs an XML attribute
allow the user to chose whether to output time expressions using either:

HH:MM:SS.ms (hours-minutes-seconds-milliseconds)
xxxxxxf (frames)

The objective is to exercise the full capabilities of the model, which is based on IMSC 1.1. In particular, it should be possible to convert an IMSC document to another IMSC document, such that both render to the same result.

Starting work on this now.


Abort blocks

Devnet-py docs: https://0xspaceshard.github.io/starknet-devnet/docs/guide/blocks#abort-blocks

for reference https://github.com/0xSpaceShard/starknet-devnet/pull/421/

First of all StarknetBlocks struct needs to be changed, a hash of block should be the data structure key
pub(crate) struct StarknetBlocks {
    pub(crate) hash_to_num: HashMap<BlockHash, BlockNumber>,
    pub(crate) hash_to_block: HashMap<BlockHash, StarknetBlock>,
    pub(crate) pending_block: StarknetBlock,
    pub(crate) last_block_hash: Option<BlockHash>,
    pub(crate) hash_to_state_diff: HashMap<BlockHash, StateDiff>,
    pub(crate) hash_to_state: HashMap<BlockHash, StarknetState>,
}


Fix Issue #234: Add a known vulnerabilities badge

Added  to readme.md

Thanks for getting this done!


Feature request: DB2 JDBC Filter on Schemas

It would be nice to have the filter feature on a schema level on DB2.

What DB2 is this? (LUW, AS400, zOS)
You can configure top level objects (catalogs/schemas) filter in connection properties dialog, page General.

as400, yes. I missed that. Thank you


[build] added appveyor support

Added CI for MSVC. It could be used for:

checking compatibility with MSVC
one of the way to retrieving DXVK builds in addition to https://haagch.frickel.club/files/dxvk/

What else would be necessary to set this up? I know pretty much nothing about Appveyor.

Any updates? It would be great to have autobuilds for windows-compatible dlls

And I'm not sure if maintaining MSVC compatibility is really a priority

This really should not be a priority, but it gives another possibility to get ready-to-work binaries without installing the compiler stuff on the user side.


chilicote, ergotin (logical-conflict)

This pull request was generated by the 'mq' tool

/trunk merge


Create method add discount

Method created for add discount into percentage number base.
For example:
iex> Money.add_discount(Money.new(100, :USD), 20)      ## %Money{amount: 80, currency: :USD}

I understand and appreciate feedback. The proposal is to facilitates the usability of the library bringing the ease of applying only two simple parameters.


Update wgpu to 0.19, glyphon to 0.5, softbuffer to 0.4, window-clipboard to 0.4, and raw-window-handle to 0.6

Based on https://github.com/iced-rs/iced/pull/2169 and https://github.com/iced-rs/iced/pull/2190. This updates wgpu to the latest trunk (the last release doesn't use raw-window-handle 0.6).
This can't be merged until those two PRs are, and when a wgpu release is made. I just wanted to test Iced with newer Wgpu changes. And to see how the API changes here.
This should make the API here safe, while RawWindowHandle/RawDisplayHandle can be unsafe to use, since they can contain pointers and don't constrain the lifetime.
Problems:

To create a softbuffer Context and Surface from W, we need W: Clone. So this adds an Arc around winit::window::Window.
wgpu::WasmNotSendSync bounds are a bit awkward.
It should be possible for a Compositor to handle non-'static W. Need to try getting that to work.
window_clipboard will need to be updated for raw-window-handle 0.6

If the way softbuffer and wgpu use WindowHandle/DisplayHandle is problematic for iced, perhaps changes could be made there.
Closes #2190.

Wgpu 0.19 has just been released.
But this depends on https://github.com/grovesNL/glyphon/pull/80, and an update to window_clipboard.

I think this should basically be ready pending glyphon and https://github.com/hecrj/window_clipboard/pull/24. If everything is working properly.

Those changes seem reasonable. Out-of-order ages won't currently happen with softbuffer, but might in the future if it makes sense for any backend, so that seems reasonable. Using the max age that's been seen seems like a better idea than what I had. It means not having damage tracking for the first couple frames (which perhaps is why I didn't think of it), but that's reasonable.

@ids1024 Awesome!
Currently blocked by https://github.com/gfx-rs/wgpu/pull/5088.

We could probably detect if the dx12 backend is being used an then set desired_maximum_frame_latency to 3 (which perhaps is what a fix in wgpu is going to do?). Though if they release a fix fairly soon that isn't really necessary.

We could probably detect if the dx12 backend is being used an then set desired_maximum_frame_latency to 3 (which perhaps is what a fix in wgpu is going to do?). Though if they release a fix fairly soon that isn't really necessary.

This seems a bit hacky, I've spoken with the wgpu team and they intend to release a patch release for this fix. I already have an approved PR waiting to be merged that fixes the issue.

https://github.com/gfx-rs/wgpu/issues/5088 is fixed by https://github.com/gfx-rs/wgpu/pull/5091!

Let's merge then!


Ability to have seperate html and css files when building a web component

Description
When working on more complex components, it is nice to be able to have seperate files for logic (js/ts), structure (html), and styling (css/scss/etc).
Angular.io has a good approach to this, in that you are able to write an all-in-one-file component, or split out the html and css.
Reasoning
The ability to split out html and css is helpful for beginner/intermediate coders, who may find javascript/typescript overwhelming.  It is also helpful for people writing more advanced components, who find the one-file approach becomes unwieldy.
Examples
Below is an example of using multiple files to build the component:
@Component({
  selector: 'my-great-component',
  templateUrl: './my-great-component.html',
  styleUrls:  ['./my-great-component.css']
})
export class QuestSummaryComponent {
// logic goes here
}

Folder structure could be like so:
my-great-component
├─ my-great-component.ts
├─ my-great-component.html
└─ my-great-component.css

Acceptance criteria
Allow people writing web components with LitElement to split out their html and css from the javascript/typescript file.

The only way we could support this is the HTML and CSS didn't have expressions. I'm not sure who that would be useful for.

I have some observations that might help on this. Basically, this is already possible, with a couple caveats.
Major caveat is that CSS and HTML files aren't importable modules (yet). So without some sort of front end tooling to turn those into JS/TS, a pure HTML or CSS file cannot be imported.
CSS is easy, though. I prefer not going through front-end tooling and not using TS, so I create a file in my component folder called mycomponent.css.js.
An example file can look like:
`import {css} from "lit-element";
export const style = css         myrule {         width: 100%;     }
This can then be imported right into your component like so:import {style} from './mycomponent.css.js';
export default class MyComponent extends LitElement {
static get styles() {
return [style];
}`
If you DO use front end tooling, you can create a plugin script in Babel or Webpack, or whatever you're using to wrap up an existing CSS file as the above JS.
HTML is different though. Justin just chimed in with the basic problem as I was writing this. I've separated out my HTML as you're suggesting, just to see if I like it. And it's OK-ish. As Justin says, you're likely want expressions in your HTML rather than just basic markup.
I've done this in a mycomponent.html.js by exporting a function that accepts the component scope:
export const template = function(scope) { return html
${scope.somevariable}
`; }`
It feels a bit weird, but I guess I like the separation (for now).
I can then use it in LitElement like so:
render() { return template(this); }

Having templates in .html files would require both some way to import HTML, like HTML Modules, and a HTML-based template which is tracked in https://github.com/Polymer/lit-html/issues/867
For CSS, we're waiting on CSS Modules, but until then you can use this rollup plugin
And as @bengfarrell mentions, since all this is just JS right now you can totally split templates and inlined CSS into as many files as you want.
Since this is tracked in other places, I'll close this issue here. Hope the pointers help.

I've done this in a mycomponent.html.js by exporting a function that accepts the component scope:
export const template = function(scope) { return html`

${scope.somevariable}

`; }

It feels a bit weird, but I guess I like the separation (for now).
I can then use it in LitElement like so:
render() { return template(this); }
Hope that helps, if you really want to explore this

@bengfarrell @justinfagnani I think I have found an improvement to the approach above to have the HTML contents in a separate file, which while not perfect, seems fairly satisfactory (it has worked for cases I've tried so far, but have not exhaustively tried complex cases). Here is how it would look in TypeScript (with explanations in comments)
// my_element.html.ts file
import {html} from 'lit/lit.min.js'; // Or from wherever you import Lit from.

// Import the `MyElement` type (leveraging `import type` feature for clarity).
// This import is striped by TS compiler, and therefore there are no runtime circular dependencies.
import type {MyElement} from './my_element.js';

// Use the "this: ..." TS annotation to be able to use `this` within the function below
// which makes it look as if getHtml was actually part of the `MyElement` class.
export function getHtml(this: MyElement) {
  return html`

${this.someText_}

<input type="file" @change=${this.onChange_} />
`;

The file above can be easily auto-generated by a build step from a my_element.html file.
Then here is how this  can be called from my_element.ts which holds the element's definition.
// my_element.ts file
import {LitElement} from 'lit/lit.min.js'; // Or from wherever you import Lit from.

import {getCss} from './my_element.css.js'; // Can be generated from `my_element.css`
import {getHtml} from './my_element.html.js'; // Can be generated from `my_element.html`

export class MyElement extends LitElement {
  ...
  override render() {
    return getHtml.bind(this)();
  }

  // Use `protected` instead of `private` so that `getHtml()` satisfies TS visibility checks (error TS2341).
  // This is not ideal, but better than making it public.
  protected someText_: string;
  protected onChange_() {...}
}

The above allows declaring a web component in 3 separate .css, .html, .ts files, separating each such code as much as possible.
(The protected vs private workaround could be eliminated if/when TypeScript compiler supports "friend classes/functions" (https://github.com/microsoft/TypeScript/issues/7692) or supports suppressing specific errors within a file (https://github.com/microsoft/TypeScript/issues/19139)).


Add a way to re-show the cursor

When we use a spinner, a typical usage is to wrap it around some code:
final gift = Spinner(
  icon: '🏆',
  leftPrompt: (done) => '', // prompts are optional
  rightPrompt: (done) => done
      ? 'here is a trophy for being patient'
      : 'searching a thing for you',
).interact();

await fetchTheGift();

gift.done();

However, if an exception is thrown, even though the spinner is stopped, the cursor of the terminal disappears!
final candy = Spinner(
  icon: '🏆',
  leftPrompt: (done) => '', // prompts are optional
  rightPrompt: (done) => done
      ? 'here is a trophy for being patient'
      : 'searching a thing for you',
).interact();

throw Exception('Me no like candy!');

candy.done();

After a few testing, I found that the cursor would disappear if you terminate almost any interactive component. Perhaps add a top-level function that will make hidden cursor reappear?

Can confirm happens in my CLI as well

Interact v2.1 should have a reset function that lets you reset the terminal values to your default ones. Refer to this section https://github.com/frencojobs/interact#handling-exceptions.
Thanks for taking the time to open this issue.

Great will try that later

Thank you so much for your work! I tried it and can confirm that the reset() function works perfectly, but the Ctrl+C issue is not resolved. When you force quit a program, the cursor still disappears.
I think the way the Flutter team achieve this might be useful: https://github.com/flutter/flutter/blob/master/packages/flutter_tools/lib/src/base/logger.dart#L908

as @GZGavinZhao said reset() helps resetting the cursot, but somehow interactions block sigints
  var sigints = 0;
  _sigIntListener = ProcessSignal.sigint.watch().listen((event) {
    print('sigint $sigints');
    if (sigints++ >= 1) {
      exit(1);
    } else {
      _close();
    }
  });

I currently have this code, which works fine if there is currently no interactable on screen (only tried Select and Input), but if there is it does not get called

Hi. Sorry, yes I forgot some of the components consume signals. So there's no way users can handle Ctrl+C manually.
v2.1.1 made components that required user input (confirm, input, etc) handle Ctrl+C together with input. For non-input components like spinners & progress bars, I added SIGINT handlers. So, just switch to v2.1.1, no changes are needed, everything should be good :)
Thanks.


Drag and Drop functionality in Table view

Drag and drop functionality is not working properly when we have only two columns in a query.
Not able to rearrange the columns under table view when there are only two options.

@mengweieric @anirudha, can you please look at the issue.

nice!!!

depends on #733

Closing this bug as its been taken care in issue #772


AMP enabled info spamming the console

Not sure why this is happening, but wanted to report as a potential bug. (It's driving me nuts). I tried figuring out where the AMP printing code is located but no such luck. =/

Thanks for reporting. Fixed on this commit.


Add range to merged tooltip slot scope

Custom merged tooltips seem to be broken

Thank you for your contribution.
At the same time, I also realized that there are some problems in this piece.
After I merge, I may make some adjustments.

Noticed that too, I had to disable merge after all.


58 docs readme update

@csharpfritz Documentation update per your ask in comment on #58

Good stuff!  Thanks for the write-up


Jellyfin user import show no profile pictures

Description
Jellyfin users import.
No profiles pictures are imported, they are shown as broken link
Thanks
Version
1.2.0
Steps to Reproduce
No need to explain
Screenshots

Logs
No response
Platform
desktop
Device
Windows 11
Operating System
Linux
Browser
Opera GX
Additional Context
No response
Code of Conduct

[X] I agree to follow Overseerr's Code of Conduct

Did you add the external hostname? You'll have to go to settings > jellyfin and add the externalhostname

This will be fixed in 1.2.1. It seems the last PR messed it up

@Smexhy Hi. Could you test if :develop works for you? I have no means of testing base paths, could you check if it works now?

Hey, after relogging all users, their profile picture now loads perfectly fine, thank you!

Thank you so much for the feedback! I'll make 1.2.1 release tonight

:tada: This issue has been resolved in version 1.2.1 :tada:
The release is available on:

v1.2.1
GitHub release

Your semantic-release bot :package::rocket:

Just wanna add to this for anyone who finds themselves in my situation as well where they at one point decided to make their Jellyfin user a local account in Jellyseerr sign-in:
You have to log out and log in that user using their associated Jellyfin identity. Then you should see the profile picture come up fine and stay intact once you log out and go back to using your Jellyseerr account credentials again. Rinse and repeat for any affected user.

I'm having the same problem again, but the cause seems to be different. Jellyseerr tries to fetch the image with the URL https://hostname/Users/0b911f2430ad4cbc8e32a7080491f466/Images/Primary/\?tag\=45173acd8f7a867d947489373eb3af90\&quality\=90 while the right URL is https://jellyfin.azeitonas.xyz/Users/0b911f2430ad4cbc8e32a7080491f466/Images/Primary/?tag\=45173acd8f7a867d947489373eb3af90\&quality\=90. Notice there's an extra backslash before ?tag.

I'm having the same problem again, but the cause seems to be different. Jellyseerr tries to fetch the image with the URL https://hostname/Users/0b911f2430ad4cbc8e32a7080491f466/Images/Primary/\?tag\=45173acd8f7a867d947489373eb3af90\&quality\=90 while the right URL is https://hostname/Users/0b911f2430ad4cbc8e32a7080491f466/Images/Primary/?tag\=45173acd8f7a867d947489373eb3af90\&quality\=90. Notice there's an extra backslash before ?tag.

I'm having the same problem again, but the cause seems to be different. Jellyseerr tries to fetch the image with the URL https://hostname/Users/0b911f2430ad4cbc8e32a7080491f466/Images/Primary/\?tag\=45173acd8f7a867d947489373eb3af90\&quality\=90 while the right URL is https://hostname/Users/0b911f2430ad4cbc8e32a7080491f466/Images/Primary/?tag\=45173acd8f7a867d947489373eb3af90\&quality\=90. Notice there's an extra backslash before ?tag.

https://github.com/Fallenbagel/jellyseerr/blob/main/server/routes/auth.ts#L285
As you can see there is no extra backslash in the code itself. So looks like a misconfiguration issue (something somewhere is interfering possibly the reverse proxy).
Can you hop onto discord so we can troubleshoot


how to place text top-to-bottom

This is an awesome streamlit component, I plan to use it to make a cheatsheet app.
By default, title/text are placed at the center,

How to use style-sheet to change the placement to top-to-bottom and left-to-right?
Thank you!

with help of AI assistant, I am able to resolve this issue.
below is an example code:
import streamlit as st
from streamlit_card import card

st.title("Streamlit Card - demo")

images = [
    "https://cdn.pixabay.com/photo/2023/12/13/06/47/footprints-8446394_1280.jpg",
    "https://www.gettyimages.com/photos/pacific-ocean",
    "https://www.istockphoto.com/photos/ocean",
]
texts = ["This is a test card", "This is a subtext - very long ........... ............. ......", "这是一个副标题"]

res = card(
    title="Streamlit Card",
    text=texts,
    url="https://github.com/gamcoh/st-card",
    image=images[0],
    styles={
        "card": {
            "width": "300px",
            "height": "300px",
            "border-radius": "10px",
            "box-shadow": "0 0 10px rgba(0,0,0,0.5)",
            "display": "flex",
            "flex-direction": "column",
            "justify-content": "flex-start",
            "padding-top": "10px",
            "padding-left": "10px",
        },
        "title": {
            "color": "red",
            "text-align": "left",
            "width": "100%",
        },
        "text": {
            "color": "yellow",
            "text-align": "left",
            "width": "100%",
        },
        "div": {
            "display": "flex",
            "flex-direction": "column",
            "justify-content": "flex-start",
            "align-items": "flex-start",
            "padding": "20px",
        },
    },
)


Commands?

I've been trying to come up with a way to add .command() support to this library. I'm drawing a complete blank. Any ideas? :cold_sweat:
(The relevant Yargs docs: https://www.npmjs.com/package/yargs#commandcmd-desc-fn)

Perhaps the best way is to use the version which takes a function?

Yeah. I started there, but I struggled to plumb it all together into something that'll let you match some commands up to a some-type of options, or... I'm struggling to think of the interface to all this.
(I had a brainstorm with @anttih a couple of months back, but came up blank.)


The output of test_commands.sh

This PR changes the output of test_commands.sh according to #190.
Fixes #190

I would probably choose a different approach using e.g. log_verbose and log_always functions, when there would be little of output if everything works, but errors would appear every time, although maybe not is full detail.
However, that is just a matter of taste. I don't have any problem with this PR, but I would ask @matusmarhefka for an opinion, and if he is not against it, for taking over it.


Make Decal distance fade smoother

Follow-up to https://github.com/godotengine/godot/pull/57535 and https://github.com/godotengine/godot/pull/58296 (can be merged independently).
smoothstep() avoids the sudden transparency jump when entering or leaving a decal's distance fade margin distance. This in turn helps make opacity transitions less noticeable to the player, as it's less likely to catch the player's eye.
Testing project: test_decal_distance_fade.zip
Preview
Left: Before, Right: After
https://user-images.githubusercontent.com/180032/154766380-e13929cd-a9bf-438c-adf7-159c4efd19eb.mp4

Thanks!


Add tests for Consultation model's classes

Will probably have a few merge conflicts with #187, but I will fix it after Rishi's PR is merged.

Codecov Report

Merging #188 (0815929) into master (7347818) will increase coverage by 1.96%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master     #188      +/-   ##
============================================
+ Coverage     69.87%   71.84%   +1.96%
- Complexity      588      622      +34
============================================
  Files           100      100
  Lines          1932     1932
  Branches        223      223
============================================
+ Hits           1350     1388      +38
+ Misses          484      456      -28
+ Partials         98       88      -10

Impacted Files
Coverage Δ
Complexity Δ

...in/java/seedu/address/model/consultation/Type.java
81.81% <0.00%> (+9.09%)
10.00% <0.00%> (+1.00%)

...ess/model/consultation/UniqueConsultationList.java
95.45% <0.00%> (+9.09%)
23.00% <0.00%> (+3.00%)

src/main/java/seedu/address/model/person/Name.java
90.00% <0.00%> (+10.00%)
7.00% <0.00%> (+1.00%)

...java/seedu/address/model/consultation/Address.java
90.00% <0.00%> (+10.00%)
7.00% <0.00%> (+1.00%)

...seedu/address/model/consultation/Consultation.java
93.61% <0.00%> (+12.76%)
25.00% <0.00%> (+5.00%)

...ava/seedu/address/model/attendance/Attendance.java
73.91% <0.00%> (+13.04%)
9.00% <0.00%> (+2.00%)

...ain/java/seedu/address/model/consultation/Day.java
82.14% <0.00%> (+14.28%)
11.00% <0.00%> (+4.00%)

...in/java/seedu/address/model/consultation/Time.java
81.48% <0.00%> (+14.81%)
11.00% <0.00%> (+4.00%)

src/main/java/seedu/address/model/UserPrefs.java
90.62% <0.00%> (+15.62%)
14.00% <0.00%> (+3.00%)

src/main/java/seedu/address/model/tag/Tag.java
100.00% <0.00%> (+20.00%)
8.00% <0.00%> (+3.00%)

... and 2 more

Continue to review full report at Codecov.

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


Fix and improve Stripe feature specs

Fix "invalid credit card number" spec -- Stripe seems to have updated
their error messaging.
Also, add a couple more specs in the same area.
This happened once before: https://github.com/solidusio/solidus_gateway/commit/e754da5
If it keeps happening perhaps we should reconsider how we're doing these specs.
I'm guessing we probably want to backport this to previous solidus_gateway versions to keep the specs green.

:+1: thank you jordan


Get assetsPublicPath from package.json in build task

I configured my project to do an easy deploy to Github pages, adding the homepage property on package.json like this:
"homepage": "https://goncy.github.io/vue-vuex-todo/"

And editing the config/index.js to this:
assetsPublicPath: pkg.homepage || '/'

So, to deploy to github pages you only need to, install gh-pages package and create a deploy task like this:
"deploy": "yarn build && gh-pages -d dist"

I think it's pretty straightforward and i can do a pull request, what do you guys think?

Hi @goncy,
thanks for this suggestion.
However, I think this is a niche functionality for deploys like Github pages, and would only add another config options for all users of the template that they rarely need, but have to understand/learn to know what it does.
So I don't think that we should add this to the template.


FullyQualifiedName filter doesn't work after switching to Net Core 3.1

Description
After switching to new NET Core version (from 3.0 to 3.1) it is not possible to filter tests by FullyQualifiedName. We build and test our application in docker container based on mcr.microsoft.com/dotnet/core/sdk:3.1. This issue also can be reproduced locally.
Steps to reproduce
dotnet restore --runtime win-x64 .
dotnet publish --runtime win-x64 -c Release --no-restore .
dotnet test --runtime win-x64 -c Release --no-restore --no-build --filter "FullyQualifiedName~qweqwe" .

Expected behavior
All tests should be skipped. We don't have tests that correspond to provided criteria.
Actual behavior
FullyQualifiedName filter is ignored.
Diagnostic logs
Using "Microsoft.TestPlatform.Build.Tasks.VSTestTask" task from assembly "C:\Program Files\dotnet\sdk\3.1.100\Microsoft.TestPlatform.Build.dll".
Task "Microsoft.TestPlatform.Build.Tasks.VSTestTask" (TaskId:21)
  Task Parameter:TestFileFullPath=D:\Sources\project_path\Security.UnitTests\bin\Release\netcoreapp3.1\win-x64\Security.UnitTests.dll (TaskId:21)
  Task Parameter:VSTestFramework=.NETCoreApp,Version=v3.1 (TaskId:21)
  Task Parameter:VSTestPlatform=x64 (TaskId:21)
  Task Parameter:VSTestTestCaseFilter=FullyQualifiedName~qweqwe (TaskId:21)
  Task Parameter:VSTestConsolePath=C:\Program Files\dotnet\sdk\3.1.100\vstest.console.dll (TaskId:21)
  Task Parameter:VSTestVerbosity=diag (TaskId:21)
  Task Parameter:VSTestTraceDataCollectorDirectoryPath=C:\Users\username\.nuget\packages\microsoft.codecoverage\16.4.0\build\netstandard1.0\ (TaskId:21)

Environment
Logs show that "Test Execution Command Line Tool Version 16.3.0" is being used for dotnet 3.1.100
<TargetFramework>netcoreapp3.1</TargetFramework>
...
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
<PackageReference Include="NUnit" Version="3.12.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.16.0" />

PS
As temporary solution we pass extra nunit parameters (NUnit.Where) to filter tests by FQN.

Looks like this issue was fixed. FQN filter works fine after updating all related packages. Currently we use:
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
<PackageReference Include="NUnit" Version="3.12.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.16.1" />


Nodemapping ignores optional labels

In the nodemapping class cypherType is only defined by implied labels instead of impliedlabels + optional labels. This causes that optional labels cannot be used in scans for example.

Interesting observation. I guess there might be a mismatch between our ScanGraph model and these optional labels. In the ScanGraph model, each Scan keeps a set of implied labels and no labels in the data, effectively removing the need for tracking of additional labels. NodeMapping supports a slightly wider use case (for custom imports) but there might be inconsistencies between these two models.

I believe this is now covered by NodeMapping which allows passing in optionalLabels, which are read from columns in the table.


The maximum can be calculated using a Math.max() instead of doing it manually.

Codecov Report

Merging #111 (1d64f90) into master (88713a0) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##             master     #111   +/-   ##
=========================================
  Coverage     93.21%   93.21%
+ Complexity      566      565    -1
=========================================
  Files            21       21
  Lines          1209     1209
  Branches        214      213    -1
=========================================
  Hits           1127     1127
  Misses           46       46
  Partials         36       36

Impacted Files
Coverage Δ

...ain/java/org/apache/commons/cli/HelpFormatter.java
91.07% <100.00%> (ø)

Continue to review full report at Codecov.

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


Determine if Generic Virtual Functions in Kestrel can be avoided.

In microsoft.aspnetcore.hosting
Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware
has an asynchronous method Invoke()
Which is virtual generic method.    This is a hot code path and virtual generic method dispatch is not fast.   Just this one call cost .5% of the Techempower benchmark.

@vancem Where's the generic?

The call that is causing the Virtual
Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame.Microsoft.AspNetCore.Http.Features.IFeatureCollection.Get[[Microsoft.AspNetCore.Http.Features.IHttpRequestFeature, Microsoft.AspNetCore.Http.Features]]()

Here is the source code.
    public class RequestServicesContainerMiddleware
    {
       public async Task Invoke(HttpContext httpContext)
        {
            Debug.Assert(httpContext != null);

            // local cache for virtual disptach result
            var features = httpContext.Features;
            var existingFeature = features.Get<IServiceProvidersFeature>();

Another reasonably hot use of a virtual function pointer is
microsoft.aspnetcore.http!Microsoft.AspNetCore.Http.HttpContextFactory.Create(class Microsoft.AspNetCore.Http.Features.IFeatureCollection)

Which calls
Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame.Microsoft.AspNetCore.Http.Features.IFeatureCollection.Set[[Microsoft.AspNetCore.Http.Features.IFormFeature, Microsoft.AspNetCore.Http.Features]](Microsoft.AspNetCore.Http.Features.IFormFeature):

As mentioned, these add up to .5%, not huge, but worth fixing.   If the solution is not obvious, we should discuss it and possible options.

I figured it was the feature collection. This came up before. I filed a bug for this here https://github.com/aspnet/HttpAbstractions/issues/811. We should move this issue.

This is tracked in https://github.com/aspnet/HttpAbstractions/issues/811 now.


Support for a size expectation

Sadly Ruby's enumerable doesn't have a size? or length? function, so sometimes I have to write specs like this:
it("should contain 11 objects") do
  expect(data.size).to eq(11)
end

This is a bit awkward since I can do other things.
I propose a new expectation for collection objects:
it("should contain 11 objects") do
  expect(data).to total(11)
end

I think this also opens the gateway for some interesting extended matchers:
it("should contain 11 objects") do
  expect(data).to total(11).all(Net::Request::Header)
  # satisfy do |object|
  #   object.size == 11 && object.all? { item| item.kind_of?(Net::Request::Header) }
  # end
  expect(data).to total(11).some(Net::Request::Header)
  expect(data).to total(11).none(Net::Request::Header)
  expect(data).to total(11).all do |object|
    object == value
  end
end

You can eazily define a custom matcher for this:
RSpec::Matchers.define :total do |expected|
  match do |actual|
    actual.size == expected
  end
end

Although personally I'd call it have_size

There's also https://github.com/rspec/rspec-collection_matchers, which provides cardinality matchers.
IMO, the proposed total doesn't read well; based on the word "total" I'd expect it to sum up the array, but that's not what you intend.
Also, if you want to do a compound expectation, where you specify both the cardinality and an aspect that is true of all items, you can easily do that if you use the gem I linked to above or define your own cardinality matcher:
expect(data).to have(11).entries.and all be_a Net::Request::Header

The issue isn't titled "How do I do X".
On Fri, May 1, 2015 at 1:34 AM Myron Marston<EMAIL_ADDRESS>wrote:

There's also https://github.com/rspec/rspec-collection_matchers, which
provides cardinality matchers.
IMO, the proposed total doesn't read well; based on the word "total" I'd
expect it to sum up the array, but that's not what you intend.
Also, if you want to do a compound expectation, where you specify both the
cardinality and an aspect that is true of all items, you can easily do that
if you use the gem I linked to above or define your own cardinality matcher:
expect(data).to have(11).entries.and all be_a Net::Request::Header
—
Reply to this email directly or view it on GitHub
https://github.com/rspec/rspec-expectations/issues/785#issuecomment-98058192
.

I didn't know about collection_matchers, gracias.

Although this cause me to question why collection matchers have their own gem, the only official "extras" matcher gem in rspec.

We decided to extract them because we felt they were a bit too magical and didn't really aline with our recommended practises. It's not the only official "extras" gem, there's also rspec-its which was similarly extracted. See http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/

Sadly Ruby's enumerable doesn't have a size? or length? function, so sometimes I have to write specs like this…

Oh, simply use have_attributes matcher:
expect("abc").to have_attributes(size: 3) # passes
expect("abc").to have_attributes(size: (be > 2)) # passes
expect([1, 2, 3]).to have_attributes(size: 3) # passes


simplify spring boot tests setup

Description

simplify spring boot tests
Motivation and Context

Less and simple code in tests - easier to support
Types of changes

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

Checklist:

[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have added tests to cover my changes.

Great stuff! Thanks for the contribution! :tada:


Android compatibility

Hi,
Are there any plans to support Android (or cough Windows Phone).
More curiosity than an actual request.
Many thanks,
Franz.

With the new version, Android is now supported!
About Windows Phone, see this announcement: https://blogs.windows.com/buildingapps/2016/04/13/react-native-on-the-universal-windows-platform/
Once it is available in React Native itself, it should be possible to support it here.


feat: Improved the output of wash get inventory command, as outlined in issue #2398

Feature or Problem
This PR improves the output of wash get inventory command.
Related Issues
Issue #2398
Testing
The new output format has been tested locally.

Hey @ossfellow sorry for the delay! Would you mind adding a test to this PR?
I think one of the things @brooksmtownsend was really trying to get at was the fact that when we had a long component ref (ex. ghcr.io/some/repository/with/a/component/in/it:0.3.0), it would make the regular non-JSON output unreadable due to line wrapping.
It would be awesome if we had a test that was exactly that case -- just checking the lines in stdout would be enough. You could mostly copy https://github.com/wasmCloud/wasmCloud/blob/main/crates/wash-cli/tests/wash_get.rs#L75 (that's probably also where the test should go), and we could get a nice regression test for this!

Oh and BTW the fix to the integration tests should be merged soon -- so if you wouldn't mind clicking the "allow edits by maintainers" checkbox, we can rebase in one click from this side before merging!

@vados-cosmonic, I can certainly add the test and let maintainers update the PR (which I thought is the default); I'll be back at my desk in a couple of hours and will do what you've suggested.
Thanks for the test sample btw.

Hey @ossfellow sorry for the delay! Would you mind adding a test to this PR?
I think one of the things @brooksmtownsend was really trying to get at was the fact that when we had a long component ref (ex. ghcr.io/some/repository/with/a/component/in/it:0.3.0), it would make the regular non-JSON output unreadable due to line wrapping.
It would be awesome if we had a test that was exactly that case -- just checking the lines in stdout would be enough. You could mostly copy https://github.com/wasmCloud/wasmCloud/blob/main/crates/wash-cli/tests/wash_get.rs#L75 (that's probably also where the test should go), and we could get a nice regression test for this!

Hello @vados-cosmonic, based on the requirement, I have removed the component ref from the non-JSON output; so, could you please clarify if you want me to add a test for the JSON output, or any of the attributes of the non-JSON output?
Also, the option to allow maintainers edit the PR doesn't show under the list of PR participants; if this isn't due to a project rule, maybe converting the PR to draft will make it work, although I'm not sure to be honest.
Once you clarify, I'll add the test and update the PR.

Hey @ossfellow that's a good point -- so I think we might want to solve that a slightly different way... Rather than remove the ref, we might want to shorten/length constrain it (ellipses?)... And we definitely don't want it out of the JSON output, because that is probably used for machines to read and we want to provide as much information as possible (might even break some tests we have now).
Oh and if it isn't there then don't worry about it I guess! Not sure why it wouldn't show up!

@vados-cosmonic, there seems to be a difference of opinions over what should be in the table formatted output of the wash get inventory command.
While I'm not against adding the image_ref back in the output, may I ask you to speak to @brooksmtownsend and update the issue this PR is referencing, for the sake of consistency?
If it's decided to add it back in, I'll only add the file name and drop the path.
Also, please note that the json output is left intact, as the ask was for the table output.

Hey @ossfellow I see what you meant!
Oh you're right @brooksmtownsend wanted to remove the image reference completely, as it says in the issue:

with wash displaying the full image reference really just isn't quite necessary.

I think based on what's in the issue you've absolutely solved the problem, but it would be nice to have some way to make sure that the inventory command doesn't overflow again, given possibly long out put for any of those other fields...
For example I'm thinking what if I make a really long friendly name -- do things go off the rails then?
What do you think?

Also, please note that the json output is left intact, as the ask was for the table output.

Great, thank you!

Hey @vados-cosmonic, it's possible that name, or label fields could potentially get longer that the width of output window; but all the variables (i.e. what name to use, what labels to use, and output window size) are user selected, and I'm not if, on the wash cli side, we could, or even should, force anything on the user.
I think the intent of the issue Brooks created has been to minimize the chance of output line wrapping, without being prescriptive about user choices.
Nonetheless, I'm totally open to any suggestions, which could improve the user experience.

Hey @ossfellow would you mind rebasing this PR to main if it isn't already? not sure why CI is stuck...
I'll mark it "merge when ready" so that it can merge as soon as checks pass.

I did rebase it last night and the PR is showing up to date on GitHub (which as you know will show if it isn’t).
As a lost resort, if the CI remains stuck, I can close the PR and issue a new one; but hopefully we won’t get there.

Trying to get GHA to trigger.


chore(home-screen): fixes for loading states, flicker issue, and reduction of api calls

SUMMARY
This Pr is a follow up for community suggestions for home page adding loading states, css updates and reduction of three api calls that are originally called in a batch call on page load.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

TEST PLAN
Updating units tests

[ ] Has associated issue:
[ ] Changes UI
[ ] Requires DB Migration.
[ ] Confirm DB Migration upgrade and downgrade tested.
[ ] Introduces new feature or API
[ ] Removes existing feature or API

Thanks for the fixes! Does this also fix the issue with the Recents tabs where the list will continue to grow if you switch tabs back and forth?

Thanks for the fixes! Does this also fix the issue with the Recents tabs where the list will continue to grow if you switch tabs back and forth?

Yes! It does. There was a issue with the key

Fixes #11588

Codecov Report

Merging #11557 into master will decrease coverage by 5.16%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master   #11557      +/-   ##
==========================================
- Coverage   66.59%   61.42%   -5.17%
==========================================
  Files         876      420     -456
  Lines       42146    26182   -15964
  Branches     3943        0    -3943
==========================================
- Hits        28066    16082   -11984
+ Misses      13977    10100    -3877
+ Partials      103        0     -103

Flag
Coverage Δ

cypress
?

javascript
?

python
61.42% <ø> (-0.72%)
:arrow_down:

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

Impacted Files
Coverage Δ

superset/db_engines/hive.py
0.00% <0.00%> (-85.72%)
:arrow_down:

superset/db_engine_specs/hive.py
53.90% <0.00%> (-30.08%)
:arrow_down:

superset/db_engine_specs/mysql.py
79.59% <0.00%> (-12.25%)
:arrow_down:

superset/db_engine_specs/presto.py
69.76% <0.00%> (-11.88%)
:arrow_down:

superset/db_engine_specs/sqlite.py
65.62% <0.00%> (-9.38%)
:arrow_down:

superset/utils/celery.py
82.14% <0.00%> (-3.58%)
:arrow_down:

superset/examples/world_bank.py
97.10% <0.00%> (-2.90%)
:arrow_down:

superset/examples/birth_names.py
96.51% <0.00%> (-2.33%)
:arrow_down:

superset/views/database/mixins.py
80.70% <0.00%> (-1.76%)
:arrow_down:

superset/result_set.py
96.69% <0.00%> (-1.66%)
:arrow_down:

... and 450 more

Continue to review full report at Codecov.

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


Add 'X-Requested-With' header to liftVanilla

Lift checks for that header in Req.ajax_? to determine if the request is ajax.

Can we just make it Requested-With? The X- prefix is deprecated, I'm told.

I did not know that.
I don't see why we can't do that. I'll have to update Req.ajax_? as well to recognize both as jQuery still uses the 'X' version.

Er… Hang on. Source for the deprecation on this particular header? X- is deprecated for new headers, but the RFC that deprecated it ‘[m]akes no recommendation as to whether existing "X-" parameters ought to remain in use or be migrated to a format without the "X-"; this is a matter for the creators or maintainers of those parameters.’ Given that we are in no way shape or form maintainers of the parameter and the latest jQuery still uses X-Requested-With, I don't think we should be changing our usage.

Oh, I didn't realize we were doing this to connect in to some jQuery functionality.

Heh. Re-reading the ticket it's obvious I didn't read it that closely to start with. Move along... nothing to see here.

Fwiw, it's not per se jQuery functionality—X-Requested-With is at this point a de facto standard due to early use by mochiweb, jQuery, prototype, and mootools if I remember correctly. My point was more that since jQuery was one of the early adopters of it and continues to use it this way (probably to not break any older stuff), we should be wary of changing what we're doing unless we have some strong sources on community decisions to change the header.


Error out when using latest master.

With the latest commit baac332791a2910190b5c6eec3b79b72c53227d9, when I open nvim, I am seeing the following errors:

vim/_editor.lua:0: User Autocommands for "VeryLazy"..script nvim_exec2() called at User Autocommands for "VeryLazy":0../Users/hao/.local/share/nvim/lazy/cmp-nvim-ultisnips/after/plugin/cmp_nvim_ultisnips.lua: Vim(source):E5113: Er
ror while calling lua chunk: vim/_editor.lua:0: User Autocommands for "VeryLazy"..script nvim_exec2() called at User Autocommands for "VeryLazy":0../Users/hao/.local/share/nvim/lazy/cmp-nvim-ultisnips/after/plugin/cmp_nvim_ultisni
ps.lua..nvim_exec2() called at /Users/hao/.local/share/nvim/lazy/cmp-nvim-ultisnips/after/plugin/cmp_nvim_ultisnips.lua:0..function provider#python3#Call, line 1: Vim(return):E5108: Error executing lua Vim:Error invoking 'python_e
xecute' on channel 4 (python3-script-host):
Traceback (most recent call last):
File "", line 1, in
File "/Users/hao/.local/share/nvim/lazy/cmp-nvim-ultisnips/python3/ultisnips_utils.py", line 1, in
from UltiSnips import UltiSnips_Manager, vim_helper
ModuleNotFoundError: No module named 'UltiSnips'

The previous commit works without errors.

This seem to be caused by lazy-loading Ultisnips with InsertEnter event (I am using lazy.nvim to manage the plugins). If I remove this event from the plug spec, the error is gone. However, another error pops up each time when I type in insert mode:

Error detected while processing TextChangedI Autocommands for "":
E5108: Error executing lua TextChangedI Autocommands for ""..function provider#python3#Call, line 1: Vim(return):E5108: Error executing lua Vim:Error invoking 'python_eval' on channel 6 (python3-script-host):
error caught in request handler 'python_eval ['ultisnips_utils.set_filetype(markdown_inline)']':
Traceback (most recent call last):
File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.10/site-packages/pynvim/plugin/script_host.py", line 167, in python_eval
return eval(expr, self.module.dict)
File "", line 1, in
NameError: name 'markdown_inline' is not defined
stack traceback:
[C]: at 0x010074f668
[C]: in function 'pyeval'
...cmp-nvim-ultisnips/lua/cmp_nvim_ultisnips/treesitter.lua:37: in function 'set_filetype'
[string ":lua"]:1: in main chunk
stack traceback:
[C]: in function 'pyeval'
...cmp-nvim-ultisnips/lua/cmp_nvim_ultisnips/treesitter.lua:37: in function 'set_filetype'
[string ":lua"]:1: in main chunk

Thanks for reporting, I cant reproduce, could you provide which filetype that the error happens on, I appreciate the report, but I'm unable to reproduce the error.
Please help specify the file type on which the error is occurring
and try the following:

do the command UpdateRemotePlugins
use the ultisnips default setup

require("cmp_nvim_ultisnips").setup({
  filetype_source = "treesitter",
  documentation = function(snippet)
    return snippet.description .. "\n\n" .. snippet.value
  end,
})

@smjonas JFYI

The second error pops up when I am editting markdown files. I will try to reproduce.

@jdhao The error regarding set_filetype should be fixed on the latest main, please try the latest commit and report back

Thanks, the second error seem to be gone.

I added another commit that defers the import of the UltiSnips python, could you try if this resolved your lazy-loading issue?

Thanks, this seems to fix the issue of lazy-loading. I can also use the VeryLazy event from lazy.nvim for Ultisnips and cmp related plugins. This also works.


API Question: How to get all pending expenses for collective?

Is there an example or way to get all pending expenses for a collective? I'm looking through the GraphQL documentation and can't find anything for this. All I can find is expensePolicy or expensesTags. Can someone provide an example for how to get all pending expenses for a collective?
Just for a bit more context, the goal is gonna be to build a system where every so often (likely every hour) we query the API for all recent pending expenses and for each new pending expense, we will create a PR on a GitHub repository with the details of the expense. Then users will be able to vote on the expense by using the GitHub approve/request changes PR review feature. Once the bot detects that an expense meets certain criteria in terms of votes for the given type, amount, etc. It will use the Open Collective API to approve the transaction, pay it, and merge the PR. I have been able to find documentation for approving and paying a transaction (it looks like), but not on how to retrieve a list of pending transactions.

@fishcharlie thanks for sharing your use case, that's an amazing feature idea!
The expenses endpoint is not available yet on our public API, but it's a priority that should be addressed this week or next week. I'll update you on this issue once it's ready.

@fishcharlie the endpoint is now available through the root expenses query (implemented in https://github.com/opencollective/opencollective-api/pull/3839). Feel free to ask questions here or on Slack if you need more details!

@fishcharlie We got a big traffic on this endpoint and had to block some of the IPs. If you were somehow blocked, please let us know on https://slack.opencollective.com/

@Betree I haven't gotten a chance to look at this further yet. Hopefully will in the future. Thanks tho!


Single Track treat as Playlist Track via ytsarch

https://github.com/Zazalng/Puddle/commit/f9ca5cbd2dd2d9572dd3080fd1f52bf24ad7a44b this implement was foundation for playlist/queue but also end up learning that ytsearch we return as playlist result...

https://github.com/Zazalng/Puddle/commit/991121807abf85dcfde12dddda394bc553865a56 Fix problem making own solution own List of AudioTrack full customize later.


Add convenience functions for AppInstance and PluginInstance creation

In general, we're working to prune the Python Client down to the bare minimum surface area, which I think is fantastic.
But as we begin telling the Steamship story to more people, I do think that there are a few "WOW!" lines of code that will help us show, rather than tell the big idea.
One of them is the ability to say:
app = Steamship.app("zendesk-tagger", "my-support-department")
app.load_tickets()

Getting to something like the above code would require three things:

Automatic loading of steamship credentials
A "quick load-or-create AppInstance" method
Dynamically creating functions on the AppInstance based on some kind of endpoint manifest

This PR does just step 2: it adds a quick-load function so that we can write:
steamship = Steamship()
app = steamship.app("zendesk-tagger", "my-support-department")
app.post("load_tickets")

I realize this is all superfluous from a technical perspective. This PR adds no new functionality.
But that one-liner:
app = steamship.app("zendesk-tagger", "my-support-department")

I really think is attractive from a narrative perspective.
Thoughts?

Update:
Based on the conversation above (and realization we already had something similar for plugins!), I:

Updated the Engine to support creating AppInstance objects with App handles alone (rather than IDs),
Implemented it as Steamship.use
Added an additional Steamship.use_plugin for loading plugins

Why use rather than use_app?
Since we want apps to be the main point of consumption, it felt OK to have it be use rather than use_app. If this takes off, we'll be seeing a lot of Steamship.use so concision is nice.
Why add a plugin helper at all?
It seems like we still use plugins enough that it feels nice to be able to say:
   tagger = Steamship.use_plugin('oneai-tagger', 'default', ONEAI_CONFIG)

Rather than the longer PluginInstance.create(...) block.


Issue in calculate annual fees

Describe the bug

When remove characters or number from service annual price then total annual fees getting zero
When we add<PHONE_NUMBER> to a service it takes in total 1000c

Expected behavior

It should get zero in that service price and calculate other fees
It should calculate correctly

Screenshots
If applicable, add screenshots to help explain your problem.

When we add<PHONE_NUMBER> to a service it takes in total 1000c this issue Plugin Issue


Some logging, some null checks and manufacturerdata instead of byte array

Thanks for the wonderful PR.  Give me a few days to review and I'll send this to release.


StringTie2 GTF generation and isoform count matrix

Please leave your question and I will try to solve add the features to the workflow or create a new workflow.

Move to Callisto


BMS C1: LEDs Turn Off, 'No Serial Data Received' Error, and Flashing Problems

Issue:
I tried updating to the latest firmware version "v23.1-1-g55c2ea2-dirty," but encountered two issues:
The red and green LEDs switch off and get the error "A fatal error occurred: No serial data received." when attempting to flash the code and the LEDs can only be turned on using the S2 button.
Steps Taken:
I created an overlay file (as in https://libre.solar/bms-firmware/src/dev/customization.html) in the app folder with the following code:
{
chosen {
thingset,serial = &usb_serial;
};
}
I  then built and flashed the code using the "west flash" command. When attempting to monitor the board using the "west espressif monitor" command, I encountered the following output:

Additionally, when I tried to flash the code again, red and green leds turn off but there is voltage at the bat+, bat-, pack+ and pack-.

When the leds are off the "west espressif monitor"command gives this:

On exiting the espressif monitor not able to flash code again. On holding down the S2 button the leds turn back on after blinking for a few seconds.
Any guidance on resolving these issues. Specifically, I need help with:

Understanding why the code flashing is not happening and why the LEDs are turning off.

Additional Information:
Board Model:  Libre Solar BMS C1 (v0.3)
Firmware Version: v23.1-1-g55c2ea2-dirty.

Did you keep the serial monitoring on while you tried to flash (espressif monitor or CuteCom)? That's not possible, as flashing uses the same serial interface.

No the serial monitor was off when flashing the code.

Ok, that's strange and I can't reproduce it here.
It is expected that the MOSFETs stay on during flashing, as the bq chip operates independent of the MCU.
From what I understood you were finally able to flash new firmware after pressing reset, right? Does it always only work after pressing reset or was this just a single time flashing failed?

No I am still not able to flash code into the board. It seems to stop flashing when trying to change the baud rate.

Does the Espressif USB JTAG appear in lsusb?
If not, maybe something went wrong and you have to manually put the board into bootloader mode to reflash: Connect TP11 to GND and press reset or power cycle the board.

Yes it does appear in lsusb as "Espressif USB JTAG/serial debug unit".

I entered bootloader manually by grounding TP11 and pressed the reset. I was able to flash the code successfully.
On using the west espressif monitor it stops at "waiting for download".
The LED's are still not on after flashing is done.

Did you disconnect TP11 from GND again?

I'm almost out of ideas.
Did you run west update after updating to the new BMS firmware?
Did you see any compiler warnings?
Can you go back to the old firmware revision and successfully flash / use that?
Is the behavior the same on both boards?
Did you try to delete the firmware directory and get a clean workspace again following the steps in the docs?

I deleted the firmware directory and followed the steps in the documentation and reflashed the board and it worked. Thank you for the help.