Add update command

Allowing to bump dependencies in one's scala project.
Ideally, it would support the same kind of magic as scala-steward, with scalafix rules for some version bumps, updating the names of some dependencies when needed, etc.

This should be handled in #1791, closing this ticket


action: enable nydus-snapshotter image to support multi-arch

This commit is to build and release ghcr.io/containerd/nydus-snapshotter for multiple platforms (below) by leveraging GHA's QEMU/buildx funtionalities.

amd64
arm64
s390x
ppc64le

The workflow was verified and the image is available at https://github.com/BbolroC/nydus-snapshotter/pkgs/container/nydus-snapshotter/179477460?tag=enable-multi-arch-image.
Fixes: #583
Signed-off-by: Hyounggyu Choi<EMAIL_ADDRESS>

@BbolroC Thanks for the PR!

@BbolroC Let's release v0.13.9 once merged.

@BbolroC :( It seems have a wrap line problem when handle latest and tag:
https://github.com/containerd/nydus-snapshotter/actions/runs/8325473739/job/22779362791


Transformation job  Size exceeds Integer.MAX_VALUE

Hello ,
While i am running the transformation job rdd at TransformationJob.scala:92 using the submit.sh i got this error :
ERROR Executor: Exception in task 37460.0 in stage 1.0 (TID 37464) java.lang.IllegalArgumentException: Size exceeds Integer.MAX_VALUE
I'm running Cassandra 3.11 and Spark 2.2.2 under Scala 2.11.8 in Ubuntu 18.04 Server.
Any clue?

I'm seeing the same issue with a similar setup. Tried with different job sizes (here https://github.com/graphsense/graphsense-transformation/blob/a778f2a1b44e207dfa0f3059caef657d4a015279/src/main/scala/at/ac/ait/TransformationJob.scala#L80) even with very large numbers (100,000) but still got the same problem.
This project is great btw!

I have this in my submit script:
--conf spark.sql.shuffle.partitions=500
--conf spark.default.parallelism=500

this should be solved with the most recent Spark version


feat: support unix sockets

This was obsoleted by #380. Thank you for the contribution, and I'm sorry we couldn't get this one merged!


Disable TestXMLDocument.test_xpath which crashes sometimes in CI

Test Case 'TestXMLDocument.test_xpath' started at 2019-03-29 17:27:41.139

0% tests passed, 1 tests failed out of 1

Total Test time (real) =  23.90 sec

The following tests FAILED:
	  1 - TestFoundation (SEGFAULT)

https://bugs.swift.org/browse/SR-10098

@swift-ci please test

@millenomi this test appears to be crashing non-deterministically in CI, so I'm disabling it.


Circular inheritance crashes editor

Operating system or device - Godot version: Ubuntu 16.04 running Godot 2.1.3
Issue description:
When two scripts inherit each other on a extends statement and you try to save the second one, the editor crashes. Running Godot on a terminal doesn't output any errors.
Steps to reproduce:

Create two GDScripts: test1.gd and test2.gd
Open test1.gd and make it inherit "res://test2.gd" (the rest of the file doesn't matter at all)
Save test1.gd
Open test2.gd and make it inherit "res://test1.gd".
When you try to save test2.gd, the editor closes. This happens when using both the shortcut (Ctrl+S) and the File menu.

Link to minimal example project:
Not needed, easy to reproduce.

Was it supposed to not crash? lol
But anyway it would be good to at least to prevent circular inheritance by emitting a warning

there is a check for preload, but i guess never made this check..
On Tue, Jul 11, 2017 at 2:49 PM, Henrique Campos<EMAIL_ADDRESS>wrote:

Was it supposed to not crash? lol
But anyway it would be good to at least to prevent circular inheritance by
emitting a warning
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/issues/9609#issuecomment-314521210,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AF-Z20rQjEWcJW9cySSYxkHemGCVY2Hgks5sM7WngaJpZM4OUhLH
.

Yeah for preload it shots a recursive warning indeed

Yeah for preload it shots a recursive warning indeed

Yeah it would be nice if it at least warned you and didn't let you save.

Still relevant in master

The crash itself seems to be a stack overflow arising from GDScript::_update_exports in gdscript.cpp recursively calling itself (gdscript.cpp:477).

This is likely fixed on master, as #22673 was.
As this this issue is pretty old, I am closing it as supposed fixed. But feel free to comment here if this exact issue still happens. See, #26119 for the current known state.

This seems still reproducible in the current master branch (5ddce7a).
Both circular inheritance (A extends B and B extends A) and self inheritance (A extends A) trigger a segfault.
Test project: test_recursive_inheritance.zip
Doesn't crash initially, change the extends line in MyNode2D.gd to one of the commented out options to reproduce the bugs.

Testing the various scenarios:

Self-inheritance (MyNode2D.gd has extends "res://MyNode2D.gd")

Doesn't crash right away when writing this code, the parser doesn't seem to complain.
Saving the project raises parse error:
SCRIPT ERROR: GDScript::reload: Parse Error: Script isn't fully loaded (cyclic preload?): res://MyNode2D.gd
   At: res://MyNode2D.gd:2.
ERROR: reload: Method/Function Failed, returning: ERR_PARSE_ERROR
   At: modules/gdscript/gdscript.cpp:576.

If you then close the editor, and try to reopen the project, it segfaults:
Thread 11 "godot-git" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffe806b700 (LWP 20646)]
0x0000000003881214 in Variant::reference (this=0x0, p_variant=...) at core/variant.cpp:911
911     void Variant::reference(const Variant &p_variant) {
(gdb) bt
#0  0x0000000003881214 in Variant::reference (this=0x0, p_variant=...) at core/variant.cpp:911
#1  0x0000000003888544 in Variant::operator= (this=0x7fffa827d240, p_variant=...) at core/variant.cpp:2532
#2  0x00000000015bacab in GDScriptTokenizerText::_make_newline (this=0x7fffa827d0f0, p_indentation=0, p_tabs=0) at modules/gdscript/gdscript_tokenizer.cpp:457
#3  0x00000000015bb78a in GDScriptTokenizerText::_advance (this=0x7fffa827d0f0) at modules/gdscript/gdscript_tokenizer.cpp:566
#4  0x00000000015bf200 in GDScriptTokenizerText::advance (this=0x7fffa827d0f0, p_amount=1) at modules/gdscript/gdscript_tokenizer.cpp:1187
#5  0x000000000158193c in GDScriptParser::_parse_newline (this=0x7fffe802df80) at modules/gdscript/gdscript_parser.cpp:3411
#6  0x000000000158227f in GDScriptParser::_parse_class (this=0x7fffe802df80, p_class=0x7fffa8276a80) at modules/gdscript/gdscript_parser.cpp:3526
#7  0x00000000015a94f9 in GDScriptParser::_parse (this=0x7fffe802df80, p_base_path=...) at modules/gdscript/gdscript_parser.cpp:8442
#8  0x00000000015a9c21 in GDScriptParser::parse (this=0x7fffe802df80, p_code=..., p_base_path=..., p_just_validate=true, p_self_path=..., p_for_completion=false, r_safe_lines=0x0, p_dependencies_only=true)
    at modules/gdscript/gdscript_parser.cpp:8550
#9  0x00000000014ee67d in GDScriptLanguage::get_global_class_name (this=0x59e0660, p_path=..., r_base_type=0x7fffe806a7b8, r_icon_path=0x0) at modules/gdscript/gdscript.cpp:1855
#10 0x00000000014ee901 in GDScriptLanguage::get_global_class_name (this=0x59e0660, p_path=..., r_base_type=0x7fffe806a7b8, r_icon_path=0x0) at modules/gdscript/gdscript.cpp:1875
#11 0x00000000014ee901 in GDScriptLanguage::get_global_class_name (this=0x59e0660, p_path=..., r_base_type=0x7fffe806a7b8, r_icon_path=0x0) at modules/gdscript/gdscript.cpp:1875
#12 0x00000000014ee901 in GDScriptLanguage::get_global_class_name (this=0x59e0660, p_path=..., r_base_type=0x7fffe806a7b8, r_icon_path=0x0) at modules/gdscript/gdscript.cpp:1875

<snip>

#283 0x00000000014ee901 in GDScriptLanguage::get_global_class_name (this=0x59e0660, p_path=..., r_base_type=0x7fffe806a7b8, r_icon_path=0x0) at modules/gdscript/gdscript.cpp:1875
#284 0x00000000014ee901 in GDScriptLanguage::get_global_class_name (this=0x59e0660, p_path=..., r_base_type=0x7fffe806a7b8, r_icon_path=0x0) at modules/gdscript/gdscript.cpp:1875
#285 0x00000000014ee901 in GDScriptLanguage::get_global_class_name (this=0x59e0660, p_path=..., r_base_type=0x7fffe806a7b8, r_icon_path=0x7fffe806a7b0) at modules/gdscript/gdscript.cpp:1875
#286 0x00000000020b5b63 in EditorFileSystem::_get_global_script_class (this=0x73986b0, p_type=..., p_path=..., r_extends=0x7fffa8003c10, r_icon_path=0x7fffa8003c18) at editor/editor_file_system.cpp:1401
#287 0x00000000020b131a in EditorFileSystem::_scan_new_dir (this=0x73986b0, p_dir=0x7fffa8001ad0, da=0x7fffa80028e0, p_progress=...) at editor/editor_file_system.cpp:824
#288 0x00000000020ad622 in EditorFileSystem::_scan_filesystem (this=0x73986b0) at editor/editor_file_system.cpp:307
#289 0x00000000020adcc2 in EditorFileSystem::_thread_func (_userdata=0x73986b0) at editor/editor_file_system.cpp:339
#290 0x0000000001f10b45 in ThreadPosix::thread_callback (userdata=0xad3e3a0) at drivers/unix/thread_posix.cpp:74
#291 0x00007ffff7c4604c in start_thread () from /lib64/libpthread.so.0
#292 0x00007ffff788e56f in clone () from /lib64/libc.so.6

Circular inheritance (MyNode2D.gd has extends "res://MyOtherNode2D.gd", MyOtherNode2D.gd has extends "res://MyNode2D.gd")

After changing the extends line, the editor crashes either when the parser tries to reload the script after the edit, or if you save it manually right after the change. The stacktrace below is from saving the scene:
Thread 1 "godot-git" received signal SIGSEGV, Segmentation fault.
0x00000000014e6758 in GDScript::_update_exports (this=<error reading variable: Cannot access memory at address 0x7fffff7fef88>) at modules/gdscript/gdscript.cpp:393
393	bool GDScript::_update_exports() {
#0  0x00000000014e6758 in GDScript::_update_exports (this=<error reading variable: Cannot access memory at address 0x7fffff7fef88>) at modules/gdscript/gdscript.cpp:393
#1  0x00000000014e7258 in GDScript::_update_exports (this=0x74cb910) at modules/gdscript/gdscript.cpp:490
#2  0x00000000014e7258 in GDScript::_update_exports (this=0xa0b5590) at modules/gdscript/gdscript.cpp:490
#3  0x00000000014e7258 in GDScript::_update_exports (this=0x74cb910) at modules/gdscript/gdscript.cpp:490
#4  0x00000000014e7258 in GDScript::_update_exports (this=0xa0b5590) at modules/gdscript/gdscript.cpp:490
#5  0x00000000014e7258 in GDScript::_update_exports (this=0x74cb910) at modules/gdscript/gdscript.cpp:490

<snip>

#12162 0x00000000014e7258 in GDScript::_update_exports (this=0xa0b5590) at modules/gdscript/gdscript.cpp:490
#12163 0x00000000014e7258 in GDScript::_update_exports (this=0x74cb910) at modules/gdscript/gdscript.cpp:490
#12164 0x00000000014e7258 in GDScript::_update_exports (this=0xa0b5590) at modules/gdscript/gdscript.cpp:490
#12165 0x00000000014e7258 in GDScript::_update_exports (this=0x74cb910) at modules/gdscript/gdscript.cpp:490
#12166 0x00000000014e7258 in GDScript::_update_exports (this=0xa0b5590) at modules/gdscript/gdscript.cpp:490
#12167 0x00000000014e7599 in GDScript::update_exports (this=0xa0b5590) at modules/gdscript/gdscript.cpp:518
#12168 0x00000000026167b6 in ScriptTextEditor::apply_code (this=0xad6bc40) at editor/plugins/script_text_editor.cpp:135
#12169 0x00000000025f6d63 in ScriptEditor::apply_scripts (this=0x8ebd590) at editor/plugins/script_editor_plugin.cpp:2242
#12170 0x0000000002607aa5 in ScriptEditorPlugin::apply_changes (this=0x5648530) at editor/plugins/script_editor_plugin.cpp:3533
#12171 0x0000000002051917 in EditorData::apply_changes_in_editors (this=0x61e25f8) at editor/editor_data.cpp:416
#12172 0x000000000211d31b in EditorNode::_save_scene (this=0x61e1e70, p_file=..., idx=-1) at editor/editor_node.cpp:1194
#12173 0x000000000211c716 in EditorNode::_save_scene_with_preview (this=0x61e1e70, p_file=..., p_idx=-1) at editor/editor_node.cpp:1095
#12174 0x000000000212408a in EditorNode::_menu_option_confirm (this=0x61e1e70, p_option=3, p_confirmed=false) at editor/editor_node.cpp:2079
#12175 0x000000000211934b in EditorNode::_menu_option (this=0x61e1e70, p_option=3) at editor/editor_node.cpp:786
#12176 0x00000000014d8fa2 in MethodBind1<int>::call (this=0xa1bb720, p_object=0x61e1e70, p_args=0x7fffffffbe50, p_arg_count=1, r_error=...) at ./core/method_bind.gen.inc:775
#12177 0x0000000003810d23 in Object::call (this=0x61e1e70, p_method=..., p_args=0x7fffffffbe50, p_argcount=1, r_error=...) at core/object.cpp:921
#12178 0x0000000003812926 in Object::emit_signal (this=0x6866270, p_name=..., p_args=0x7fffffffbe50, p_argcount=1) at core/object.cpp:1218
#12179 0x0000000003812fb3 in Object::emit_signal (this=0x6866270, p_name=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=...) at core/object.cpp:1274
#12180 0x0000000002bd0dee in PopupMenu::activate_item (this=0x6866270, p_item=6) at scene/gui/popup_menu.cpp:1157
#12181 0x0000000002bd084a in PopupMenu::activate_item_by_event (this=0x6866270, p_event=..., p_for_global_only=false) at scene/gui/popup_menu.cpp:1090
#12182 0x0000000002bb4186 in MenuButton::_unhandled_key_input (this=0x6865d80, p_event=...) at scene/gui/menu_button.cpp:47
#12183 0x0000000002271272 in MethodBind1<Ref<InputEvent> >::call (this=0x5a64530, p_object=0x6865d80, p_args=0x7fffffffc228, p_arg_count=1, r_error=...) at ./core/method_bind.gen.inc:775
#12184 0x0000000003810281 in Object::call_multilevel (this=0x6865d80, p_method=..., p_args=0x7fffffffc228, p_argcount=1) at core/object.cpp:763
#12185 0x0000000002a7bf01 in SceneTree::_call_input_pause (this=0x5e61940, p_group=..., p_method=..., p_input=...) at scene/main/scene_tree.cpp:941
#12186 0x0000000002aaa512 in Viewport::unhandled_input (this=0x60788b0, p_event=...) at scene/main/viewport.cpp:2801
#12187 0x0000000002aa3398 in Viewport::_vp_unhandled_input (this=0x60788b0, p_ev=...) at scene/main/viewport.cpp:1436
#12188 0x00000000016ef518 in MethodBind1<Ref<InputEvent> const&>::call (this=0x5a00cf0, p_object=0x60788b0, p_args=0x7fffffffc4f0, p_arg_count=1, r_error=...) at ./core/method_bind.gen.inc:775
#12189 0x0000000003810d23 in Object::call (this=0x60788b0, p_method=..., p_args=0x7fffffffc4f0, p_argcount=1, r_error=...) at core/object.cpp:921
#12190 0x000000000381091e in Object::call (this=0x60788b0, p_name=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=...) at core/object.cpp:847
#12191 0x0000000002a78646 in SceneTree::call_group_flags (this=0x5e61940, p_call_flags=2, p_group=..., p_function=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=...) at scene/main/scene_tree.cpp:275
#12192 0x0000000002a79549 in SceneTree::input_event (this=0x5e61940, p_event=...) at scene/main/scene_tree.cpp:447
#12193 0x000000000144573e in InputDefault::_parse_input_event_impl (this=0x54d6120, p_event=..., p_is_emulated=false) at main/input_default.cpp:442
#12194 0x00000000014445ec in InputDefault::parse_input_event (this=0x54d6120, p_event=...) at main/input_default.cpp:259
#12195 0x00000000014468bc in InputDefault::flush_accumulated_events (this=0x54d6120) at main/input_default.cpp:678
#12196 0x00000000014310c4 in OS_X11::process_xevents (this=0x7fffffffcf70) at platform/x11/os_x11.cpp:2692
#12197 0x0000000001434439 in OS_X11::run (this=0x7fffffffcf70) at platform/x11/os_x11.cpp:3256
#12198 0x00000000014248dc in main (argc=2, argv=0x7fffffffd738) at platform/x11/godot_x11.cpp:56

No problem when reloading the project as the save crashed, so the modifications are not saved to the file. If you do the changes outside Godot, you get a backtrace similar to the self inheritance case when opening the broken script:
Thread 11 "godot-git" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffe8323700 (LWP 17933)]
0x0000000001424b22 in CowData<wchar_t>::_get_refcount (this=0x0) at ./core/cowdata.h:61
61              _FORCE_INLINE_ uint32_t *_get_refcount() const {
(gdb) bt
#0  0x0000000001424b22 in CowData<wchar_t>::_get_refcount (this=0x0) at ./core/cowdata.h:61
#1  0x0000000001424adb in CowData<wchar_t>::_unref (this=0x7fffa824f9d8, p_data=0x7fffa8250120) at ./core/cowdata.h:196
#2  0x00000000014249fe in CowData<wchar_t>::~CowData (this=0x7fffa824f9d8, __in_chrg=<optimized out>) at ./core/cowdata.h:370
#3  0x00000000014249b2 in String::~String (this=0x7fffa824f9d8, __in_chrg=<optimized out>) at ./core/ustring.h:126
#4  0x0000000003881e14 in Variant::clear (this=0x7fffa824f9d0) at core/variant.cpp:1082
#5  0x000000000388123f in Variant::reference (this=0x7fffa824f9d0, p_variant=...) at core/variant.cpp:920
#6  0x0000000003888544 in Variant::operator= (this=0x7fffa824f9d0, p_variant=...) at core/variant.cpp:2532
#7  0x00000000015bacab in GDScriptTokenizerText::_make_newline (this=0x7fffa824f880, p_indentation=0, p_tabs=0) at modules/gdscript/gdscript_tokenizer.cpp:457
#8  0x00000000015bb78a in GDScriptTokenizerText::_advance (this=0x7fffa824f880) at modules/gdscript/gdscript_tokenizer.cpp:566
#9  0x00000000015bf200 in GDScriptTokenizerText::advance (this=0x7fffa824f880, p_amount=1) at modules/gdscript/gdscript_tokenizer.cpp:1187
#10 0x000000000158193c in GDScriptParser::_parse_newline (this=0x7fffe82e6260) at modules/gdscript/gdscript_parser.cpp:3411
#11 0x000000000158227f in GDScriptParser::_parse_class (this=0x7fffe82e6260, p_class=0x7fffa824feb0) at modules/gdscript/gdscript_parser.cpp:3526
#12 0x00000000015a94f9 in GDScriptParser::_parse (this=0x7fffe82e6260, p_base_path=...) at modules/gdscript/gdscript_parser.cpp:8442
#13 0x00000000015a9c21 in GDScriptParser::parse (this=0x7fffe82e6260, p_code=..., p_base_path=..., p_just_validate=true, p_self_path=..., p_for_completion=false, r_safe_lines=0x0, p_dependencies_only=true)
    at modules/gdscript/gdscript_parser.cpp:8550
#14 0x00000000014ee67d in GDScriptLanguage::get_global_class_name (this=0x59df500, p_path=..., r_base_type=0x7fffe8322a98, r_icon_path=0x0) at modules/gdscript/gdscript.cpp:1855
#15 0x00000000014ee901 in GDScriptLanguage::get_global_class_name (this=0x59df500, p_path=..., r_base_type=0x7fffe8322a98, r_icon_path=0x0) at modules/gdscript/gdscript.cpp:1875
#16 0x00000000014ee901 in GDScriptLanguage::get_global_class_name (this=0x59df500, p_path=..., r_base_type=0x7fffe8322a98, r_icon_path=0x0) at modules/gdscript/gdscript.cpp:1875

<snip>

#286 0x00000000014ee901 in GDScriptLanguage::get_global_class_name (this=0x59df500, p_path=..., r_base_type=0x7fffe8322a98, r_icon_path=0x0) at modules/gdscript/gdscript.cpp:1875
#287 0x00000000014ee901 in GDScriptLanguage::get_global_class_name (this=0x59df500, p_path=..., r_base_type=0x7fffe8322a98, r_icon_path=0x0) at modules/gdscript/gdscript.cpp:1875
#288 0x00000000014ee901 in GDScriptLanguage::get_global_class_name (this=0x59df500, p_path=..., r_base_type=0x7fffe8322a98, r_icon_path=0x0) at modules/gdscript/gdscript.cpp:1875
#289 0x00000000014ee901 in GDScriptLanguage::get_global_class_name (this=0x59df500, p_path=..., r_base_type=0x7fffe8322a98, r_icon_path=0x0) at modules/gdscript/gdscript.cpp:1875
#290 0x00000000014ee901 in GDScriptLanguage::get_global_class_name (this=0x59df500, p_path=..., r_base_type=0x7fffe8322a98, r_icon_path=0x7fffe8322a90) at modules/gdscript/gdscript.cpp:1875
#291 0x00000000020b5b63 in EditorFileSystem::_get_global_script_class (this=0x720f2d0, p_type=..., p_path=..., r_extends=0x7fffa80091e0, r_icon_path=0x7fffa80091e8) at editor/editor_file_system.cpp:1401
#292 0x00000000020b1fa1 in EditorFileSystem::_scan_fs_changes (this=0x720f2d0, p_dir=0x7951a70, p_progress=...) at editor/editor_file_system.cpp:922
#293 0x00000000020b2e73 in EditorFileSystem::_thread_func_sources (_userdata=0x720f2d0) at editor/editor_file_system.cpp:1050
#294 0x0000000001f10b45 in ThreadPosix::thread_callback (userdata=0xab14fd0) at drivers/unix/thread_posix.cpp:74
#295 0x00007ffff7c4604c in start_thread () from /lib64/libpthread.so.0
#296 0x00007ffff788e56f in clone () from /lib64/libc.so.6

Self-inheritance with class_name (MyNode2D.gd has extends MyNode2D and class_name MyNode2D)

After making this change, the parser raises this error when reloading the script:
ERROR: _update_exports: Path extending itself in  res://MyNode2D.gd
   At: modules/gdscript/gdscript.cpp:458.

Saving the script/scene then triggers a segfault:
Thread 1 "godot-git" received signal SIGSEGV, Segmentation fault.
0x00000000014f6eca in Ref<GDScriptNativeClass>::is_valid (this=<error reading variable: Cannot access memory at address 0x7fffff7feff8>) at ./core/reference.h:269
269             inline bool is_valid() const { return reference != NULL; }
(gdb) bt
#0  0x00000000014f6eca in Ref<GDScriptNativeClass>::is_valid (this=<error reading variable: Cannot access memory at address 0x7fffff7feff8>) at ./core/reference.h:269te
#1  0x00000000014e54fc in GDScript::get_instance_base_type (this=0xa0bf430) at modules/gdscript/gdscript.cpp:200
#2  0x00000000014e55aa in GDScript::get_instance_base_type (this=0xa0bf430) at modules/gdscript/gdscript.cpp:203
#3  0x00000000014e55aa in GDScript::get_instance_base_type (this=0xa0bf430) at modules/gdscript/gdscript.cpp:203

<snip>

#261437 0x00000000014e55aa in GDScript::get_instance_base_type (this=0xa0bf430) at modules/gdscript/gdscript.cpp:203
#261438 0x00000000014e55aa in GDScript::get_instance_base_type (this=0xa0bf430) at modules/gdscript/gdscript.cpp:203
#261439 0x00000000014e55aa in GDScript::get_instance_base_type (this=0xa0bf430) at modules/gdscript/gdscript.cpp:203
#261440 0x00000000014e55aa in GDScript::get_instance_base_type (this=0xa0bf430) at modules/gdscript/gdscript.cpp:203
#261441 0x00000000014e55aa in GDScript::get_instance_base_type (this=0xa0bf430) at modules/gdscript/gdscript.cpp:203
#261442 0x000000000159220e in GDScriptParser::_determine_inheritance (this=0x7fffffff9cf0, p_class=0xafec2c0, p_recursive=true) at modules/gdscript/gdscript_parser.cpp:5439
#261443 0x00000000015a9623 in GDScriptParser::_parse (this=0x7fffffff9cf0, p_base_path=...) at modules/gdscript/gdscript_parser.cpp:8457
#261444 0x00000000015a9c21 in GDScriptParser::parse (this=0x7fffffff9cf0, p_code=..., p_base_path=..., p_just_validate=true, p_self_path=..., p_for_completion=false, r_safe_lines=0x0, p_dependencies_only=false) at modules/gdscript/gdscript_parser.cpp:8550
#261445 0x000000000151c4bb in GDScriptLanguage::validate (this=0x59e01f0, p_script=..., r_line_error=@0x7fffffff9f8c: -1, r_col_error=@0x7fffffff9f88: 181862304, r_test_error=..., p_path=..., r_functions=0x7fffffff9f78, r_warnings=0x0, r_safe_lines=0x0) at modules/gdscript/gdscript_editor.cpp:126
#261446 0x0000000002616601 in ScriptTextEditor::get_functions (this=0xad6ffa0) at editor/plugins/script_text_editor.cpp:117
#261447 0x00000000025f1fb4 in ScriptEditor::_update_members_overview (this=0x8ec2a10) at editor/plugins/script_editor_plugin.cpp:1682
#261448 0x00000000025f4017 in ScriptEditor::_update_script_names (this=0x8ec2a10) at editor/plugins/script_editor_plugin.cpp:1936
#261449 0x00000000025eab68 in ScriptEditor::_res_saved_callback (this=0x8ec2a10, p_res=...) at editor/plugins/script_editor_plugin.cpp:832
#261450 0x0000000001762f68 in MethodBind1<Ref<Resource> const&>::call (this=0x5ed0030, p_object=0x8ec2a10, p_args=0x7fffffffa880, p_arg_count=1, r_error=...) at ./core/method_bind.gen.inc:775
#261451 0x0000000003810d23 in Object::call (this=0x8ec2a10, p_method=..., p_args=0x7fffffffa880, p_argcount=1, r_error=...) at core/object.cpp:921
#261452 0x0000000003812926 in Object::emit_signal (this=0x61e3090, p_name=..., p_args=0x7fffffffa880, p_argcount=1) at core/object.cpp:1218
#261453 0x0000000003812fb3 in Object::emit_signal (this=0x61e3090, p_name=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=...) at core/object.cpp:1274
#261454 0x0000000002117f6d in EditorNode::save_resource_in_path (this=0x61e3090, p_resource=..., p_path=...) at editor/editor_node.cpp:704
#261455 0x00000000021181e8 in EditorNode::save_resource (this=0x61e3090, p_resource=...) at editor/editor_node.cpp:711
#261456 0x00000000025f6bf4 in ScriptEditor::save_all_scripts (this=0x8ec2a10) at editor/plugins/script_editor_plugin.cpp:2227
#261457 0x0000000002607a83 in ScriptEditorPlugin::save_external_data (this=0x5648590) at editor/plugins/script_editor_plugin.cpp:3528
#261458 0x00000000020518bf in EditorData::save_editor_external_data (this=0x61e3818) at editor/editor_data.cpp:408
#261459 0x000000000211d6cc in EditorNode::_save_scene (this=0x61e3090, p_file=..., idx=-1) at editor/editor_node.cpp:1240
#261460 0x000000000211c716 in EditorNode::_save_scene_with_preview (this=0x61e3090, p_file=..., p_idx=-1) at editor/editor_node.cpp:1095
#261461 0x000000000212408a in EditorNode::_menu_option_confirm (this=0x61e3090, p_option=3, p_confirmed=false) at editor/editor_node.cpp:2079
#261462 0x000000000211934b in EditorNode::_menu_option (this=0x61e3090, p_option=3) at editor/editor_node.cpp:786
#261463 0x00000000014d8fa2 in MethodBind1<int>::call (this=0x71462e0, p_object=0x61e3090, p_args=0x7fffffffbe50, p_arg_count=1, r_error=...) at ./core/method_bind.gen.inc:775
#261464 0x0000000003810d23 in Object::call (this=0x61e3090, p_method=..., p_args=0x7fffffffbe50, p_argcount=1, r_error=...) at core/object.cpp:921
#261465 0x0000000003812926 in Object::emit_signal (this=0x6868fa0, p_name=..., p_args=0x7fffffffbe50, p_argcount=1) at core/object.cpp:1218
#261466 0x0000000003812fb3 in Object::emit_signal (this=0x6868fa0, p_name=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=...) at core/object.cpp:1274
#261467 0x0000000002bd0dee in PopupMenu::activate_item (this=0x6868fa0, p_item=6) at scene/gui/popup_menu.cpp:1157
#261468 0x0000000002bd084a in PopupMenu::activate_item_by_event (this=0x6868fa0, p_event=..., p_for_global_only=false) at scene/gui/popup_menu.cpp:1090
#261469 0x0000000002bb4186 in MenuButton::_unhandled_key_input (this=0x6868ab0, p_event=...) at scene/gui/menu_button.cpp:47
#261470 0x0000000002271272 in MethodBind1<Ref<InputEvent> >::call (this=0x5a64ff0, p_object=0x6868ab0, p_args=0x7fffffffc228, p_arg_count=1, r_error=...) at ./core/method_bind.gen.inc:775
#261471 0x0000000003810281 in Object::call_multilevel (this=0x6868ab0, p_method=..., p_args=0x7fffffffc228, p_argcount=1) at core/object.cpp:763
#261472 0x0000000002a7bf01 in SceneTree::_call_input_pause (this=0x5e623f0, p_group=..., p_method=..., p_input=...) at scene/main/scene_tree.cpp:941
#261473 0x0000000002aaa512 in Viewport::unhandled_input (this=0x607b020, p_event=...) at scene/main/viewport.cpp:2801
#261474 0x0000000002aa3398 in Viewport::_vp_unhandled_input (this=0x607b020, p_ev=...) at scene/main/viewport.cpp:1436
#261475 0x00000000016ef518 in MethodBind1<Ref<InputEvent> const&>::call (this=0x5a01760, p_object=0x607b020, p_args=0x7fffffffc4f0, p_arg_count=1, r_error=...) at ./core/method_bind.gen.inc:775
#261476 0x0000000003810d23 in Object::call (this=0x607b020, p_method=..., p_args=0x7fffffffc4f0, p_argcount=1, r_error=...) at core/object.cpp:921
#261477 0x000000000381091e in Object::call (this=0x607b020, p_name=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=...) at core/object.cpp:847
#261478 0x0000000002a78646 in SceneTree::call_group_flags (this=0x5e623f0, p_call_flags=2, p_group=..., p_function=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=...) at scene/main/scene_tree.cpp:275
#261479 0x0000000002a79549 in SceneTree::input_event (this=0x5e623f0, p_event=...) at scene/main/scene_tree.cpp:447
#261480 0x000000000144573e in InputDefault::_parse_input_event_impl (this=0x54d6120, p_event=..., p_is_emulated=false) at main/input_default.cpp:442
#261481 0x00000000014445ec in InputDefault::parse_input_event (this=0x54d6120, p_event=...) at main/input_default.cpp:259
#261482 0x00000000014468bc in InputDefault::flush_accumulated_events (this=0x54d6120) at main/input_default.cpp:678
#261483 0x00000000014310c4 in OS_X11::process_xevents (this=0x7fffffffcf70) at platform/x11/os_x11.cpp:2692
#261484 0x0000000001434439 in OS_X11::run (this=0x7fffffffcf70) at platform/x11/os_x11.cpp:3256
#261485 0x00000000014248dc in main (argc=2, argv=0x7fffffffd738) at platform/x11/godot_x11.cpp:56

The save does work, so the script is broken. Subsequent loading of the project does not crash, but throws errors (as expected):
ERROR: load: Resource: 'res://MyNode2D.gd' is already being loaded. Cyclic reference?
   At: core/io/resource_loader.cpp:355.
SCRIPT ERROR: GDScript::reload: Parse Error: The class "MyNode2D" couldn't be fully loaded (script error or cyclic dependency).
   At: res://MyNode2D.gd:2.
ERROR: reload: Method/Function Failed, returning: ERR_PARSE_ERROR
   At: modules/gdscript/gdscript.cpp:576.
ERROR: _update_exports: Path extending itself in  res://MyNode2D.gd
   At: modules/gdscript/gdscript.cpp:458.
SCRIPT ERROR: GDScript::reload: Parse Error: Script isn't fully loaded (cyclic preload?): res://MyNode2D.gd
   At: res://MyOtherNode2D.gd:1.
ERROR: reload: Method/Function Failed, returning: ERR_PARSE_ERROR
   At: modules/gdscript/gdscript.cpp:576.
ERROR: add_global_class: Cyclic inheritance in script class.
   At: core/script_language.cpp:221.
ERROR: add_global_class: Cyclic inheritance in script class.
   At: core/script_language.cpp:221.

This part was likely fixed by #32643.
It's worth noting that the error is reported on MyNode2D.gd:2, which is a comment. The actual error should be on line 7 as everything before is commented out, but there seems to be a debugger issue here.

Circular inheritance with class_name (MyNode2D.gd has extends MyOtherNode2D and class_name MyNode2D, MyOtherNode2D.gd has extends MyNode2D and class_name MyOtherNode2D)

Same issue as for circular inheritance using extends "res://MyOtherNode2D.gd, it crashes both when validating the script when the script editor's timer times out after the edit, or when saving.
Here's the stacktrace for the former:
Thread 1 "godot-git" received signal SIGSEGV, Segmentation fault.
0x00000000014e6758 in GDScript::_update_exports (this=<error reading variable: Cannot access memory at address 0x7fffff7fefa8>) at modules/gdscript/gdscript.cpp:393
393     bool GDScript::_update_exports() {
#0  0x00000000014e6758 in GDScript::_update_exports (this=<error reading variable: Cannot access memory at address 0x7fffff7fefa8>) at modules/gdscript/gdscript.cpp:393
#1  0x00000000014e7258 in GDScript::_update_exports (this=0x6fe96c0) at modules/gdscript/gdscript.cpp:490
#2  0x00000000014e7258 in GDScript::_update_exports (this=0xa0bf6d0) at modules/gdscript/gdscript.cpp:490
#3  0x00000000014e7258 in GDScript::_update_exports (this=0x6fe96c0) at modules/gdscript/gdscript.cpp:490
#4  0x00000000014e7258 in GDScript::_update_exports (this=0xa0bf6d0) at modules/gdscript/gdscript.cpp:490

<snip>

#12170 0x00000000014e7258 in GDScript::_update_exports (this=0xa0bd9a0) at modules/gdscript/gdscript.cpp:490
#12171 0x00000000014e7258 in GDScript::_update_exports (this=0x6fe9320) at modules/gdscript/gdscript.cpp:490
#12172 0x00000000014e7258 in GDScript::_update_exports (this=0xa0bd9a0) at modules/gdscript/gdscript.cpp:490
#12173 0x00000000014e7599 in GDScript::update_exports (this=0xa0bd9a0) at modules/gdscript/gdscript.cpp:518
#12174 0x000000000261ba19 in ScriptTextEditor::_validate_script (this=0xad72840) at editor/plugins/script_text_editor.cpp:580
#12175 0x00000000014cb068 in MethodBind0::call (this=0xae0a7d0, p_object=0xad72840, p_args=0x7fffffffc3c0, p_arg_count=0, r_error=...) at ./core/method_bind.gen.inc:59
#12176 0x0000000003810d23 in Object::call (this=0xad72840, p_method=..., p_args=0x7fffffffc3c0, p_argcount=0, r_error=...) at core/object.cpp:921
#12177 0x0000000003812926 in Object::emit_signal (this=0xad732c0, p_name=..., p_args=0x7fffffffc3c0, p_argcount=0) at core/object.cpp:1218
#12178 0x0000000003812fb3 in Object::emit_signal (this=0xad732c0, p_name=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=...) at core/object.cpp:1274
#12179 0x00000000028aa36a in CodeTextEditor::_text_changed_idle_timeout (this=0xad732c0) at editor/code_editor.cpp:1484
#12180 0x00000000014cb068 in MethodBind0::call (this=0x9333c90, p_object=0xad732c0, p_args=0x7fffffffc7e0, p_arg_count=0, r_error=...) at ./core/method_bind.gen.inc:59
#12181 0x0000000003810d23 in Object::call (this=0xad732c0, p_method=..., p_args=0x7fffffffc7e0, p_argcount=0, r_error=...) at core/object.cpp:921
#12182 0x0000000003812926 in Object::emit_signal (this=0xad8d8b0, p_name=..., p_args=0x7fffffffc7e0, p_argcount=0) at core/object.cpp:1218
#12183 0x0000000003812fb3 in Object::emit_signal (this=0xad8d8b0, p_name=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=...) at core/object.cpp:1274
#12184 0x0000000002a9940d in Timer::_notification (this=0xad8d8b0, p_what=25) at scene/main/timer.cpp:61
#12185 0x0000000002a9b9be in Timer::_notificationv (this=0xad8d8b0, p_notification=25, p_reversed=false) at scene/main/timer.h:38
#12186 0x0000000003810e40 in Object::notification (this=0xad8d8b0, p_notification=25, p_reversed=false) at core/object.cpp:931
#12187 0x0000000002a7c13a in SceneTree::_notify_group_pause (this=0x5e61f00, p_group=..., p_notification=25) at scene/main/scene_tree.cpp:981
#12188 0x0000000002a79e63 in SceneTree::idle (this=0x5e61f00, p_time=0.0504299998) at scene/main/scene_tree.cpp:526
#12189 0x0000000001463d52 in Main::iteration () at main/main.cpp:1980
#12190 0x0000000001434451 in OS_X11::run (this=0x7fffffffcf70) at platform/x11/os_x11.cpp:3260
#12191 0x00000000014248dc in main (argc=2, argv=0x7fffffffd738) at platform/x11/godot_x11.cpp:56

It crashes the same if MyNode2D.gd uses extends MyOtherNode2D while MyOtherNode2D.gd would use the script path with extends "res://MyNode2D.gd".


Using Client Credentials flow from a public client (web browser, mobile app, desktop app) creates a cybersecurity vulnerability

re: https://github.com/commercetools/commercetools-sdk-typescript/blob/master/examples/react-vite/src/lib/ClientBuilder.ts
The client credentials flow is a confidential client flow, yet it is being used in a public client. This creates a security vulnerability by exposing the client secret to anyone who cares to read the source code. The client secret doesn't expire - it can only be replaced administratively.
The client credentials flow is intended for use by server applications authenticating themselves to a protected resource.
I strongly recommend that commercetools implement an appropriate authentication flow for public client applications. The current recommendation is the Authorisation Code Flow with PKCE (ref: https://auth0.com/docs/get-started/authentication-and-authorization-flow/which-oauth-2-0-flow-should-i-use).

Hi @mikehans
The SDK is not recommended to be used on it own, it should be integrated into an application that is already managing environment/secrets properly.
Some suggestion is to use the SDK behind a proxy, a server or a frontend reading its data of being served by a server.
Using the SDK on a plain javascript build is not recommended.

Hi @ajimae
I'm glad to hear you say that. However, you have frontend examples that do exactly this.


Current build setup prevents using bundled openssl when building from source via npm

So, we pass "--with-libssl-prefix" when we call libssh2 configure, but if that is not already built, it fails and falls back to system. This means all our work to get that back to link our version isn't working properly at the moment. We need a way to call libssh2 configure after we build openssl when we build from source.

Relevant, as the workaround no longer works cleanly either >.<
https://github.com/Homebrew/brew/pull/612

@implausible This is fixed now yeah?


Documentation for custom date field to trigger a campaign

Documentation for PR: https://github.com/mautic/mautic/pull/2592

:+1:


Issue with backwards compatibility with original slick slider

Hello, I am trying to replace slick slider 1.8.0 in a project and so far it seems the JS is 100% backwards compatible so great job there! But the HTML is not.  What is up with that? Is there any accessibility reasoning behind this? I am wondering if I should rewrite the accessible-slick JS and remove this logic, but if it will break some accessibility then I won't...
With slick slider:

text

becomes

text

With accessible slick:

text

becomes

text

Additionally, the original item gets inline styles for width and display. The width was there even in slick-slider, but it was set on the .slick-slide. Why are these inline styles set on the child item, like why force the div to be display: inline-block and not just leave it as block?

I have found out that this behavior is the result of the slidesPerRow logic. This piece of code nests the original HTML inside two extra div containerers. See source code below...
For some reason my old slick 1.8.0 has this exact same code, but it doesn't trigger, never, ever. It always behaves as if the slidesPerRow options was set to 0...
I didn't even know this was a supported option until today and because I am trying to make the upgrade backwards compatible I have decided to change the default slidesPerRow value from 1 to 0 which will result in the behavior that we are used to in our project. I will close this and leave it here in case anyone else runs into this in the future.
for(a = 0; a < numOfSlides; a++){
    var slide = document.createElement('div'); //first extra div
    for(b = 0; b < _.options.rows; b++) {
        var row = document.createElement('div'); //second extra div
        for(c = 0; c < _.options.slidesPerRow; c++) {
            var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));
            if (originalSlides.get(target)) {
                row.appendChild(originalSlides.get(target));
            }
        }
        slide.appendChild(row);
    }
    newSlides.appendChild(slide);
}

_.$slider.empty().append(newSlides);

_.$slider.children().children().children()
    .css({
        'width':(100 / _.options.slidesPerRow) + '%', //the extra width inline css
        'display': 'inline-block' //the extra display inline css
    });


Prerender caching non existent urls

I'm using the prerender.io service in my angular/node app and have implemented it successfully but I'm getting url cached that do not exist, as in, when I click on the url in the list, it just redirects me to the root url of my website.

The last url is non-existent and shouldn't be cached at all.
How can I fix this?

Please send an email to<EMAIL_ADDRESS>so we can help you with this. Looks like the crawlers are crawling incorrect URLs and you should use our prerender-satus-code meta tag to return a 404 status code to the crawlers instead of a status code 200. Send us an email and we'll help!
Closing this issue since it doesn't have anything to do with the open source prerender server.


New plugin setup dialog

I know this in not the right place for this, but I couldn't find another way to provide some feedback.
Could we have an option to disable the "Automatic tracking mode is on. Time spent: xxx" in the status bar?
It's really annoying and honestly doesn't provide any useful information while working, at least for me.
I would venture in a PR, but I know very little about the structure of those plugins. I've been compiling my own version to have the plugin without the bar, lol
Thank you for reading this, and obviously for this amazing plugin.

@pokono thank you for your feedback! I created an issue https://youtrack.jetbrains.com/issue/JT-65250 to investigate it.
For any further bug reports please use https://youtrack.jetbrains.com.


[dv/dpi] improvements to tcp_server receive loop

The server thread now breaks out of the receive loop if there's no room in the input buffer instead of spinning inside tcp_buffer_put_byte(). This avoids a deadlock where the jtagdpi thread is blocked on a full output buffer, but the server thread is spinning waiting for the jtagdpi thread to make room in the input buffer.
It also treats a failure to receive any data (after a positive FD_ISSET on the read_fds) as a client disconnect.

@msfschaffner I'm not sure what protocol is, should I assign this to you for merge? Thanks for the help.


Manually closing streams - keeps server busy?

Following this:
https://github.com/tgriesser/knex/wiki/Manually-Closing-Streams
What happens is - after a stream was ended prematurely, due to a request being aborted - the next request arrives just fine, opens a stream, and no data arrives. Even if we wait for long minutes.
If we restart the server then it streams immediately.
So my guess is knex.js isn't handling manual abortion correctly?
I'm using it with MySql

Hi there, @danielgindi! Could you please provide an example of how do you close stream?
It seems to me, that correct way of closing stream is something like this (eg. koa2)
export const districtCenters = async (ctx) => {
  const stream = ctx.knex
    .withSchema('datasets')
    .select('*')
    .from('district_centers')
    .stream();

  ctx.req.on('close', stream.end.bind(stream));

  ctx.body = stream
    .pipe(transformStream(prop('feature')))
    .pipe(stringifyFeatureCollection());
};

stream.end will end the stream... like in the example https://github.com/tgriesser/knex/wiki/Manually-Closing-Streams


Feature request: Allow to search archived notes as well

Let me start by thanking you for this workflow, it's really awesome!
In Bear, I currently use a tag called "archive" as opposed to using the archive functionality in Bear itself. As a feature request, I'd like the ability to have the workflow search archived notes as well. Personally, I can see two options:

Remove note.ZARCHIVED = 0 from the queries to always search archived notes
Add a variable that determines whether to search archived notes or not

I'd be happy to help out and contribute :)

Option 2 seems reasonable to me, though it is more work. It reminds me that I want to put query size (the LIMIT value in the SQL queries) into a variable as well.
I'm tempted to consider Option 1 but I can imagine that people would want archived notes not to show up.
That said, this also strikes me as a pretty unusual use case. May I ask why you want to archive notes but also search them? Wouldn't archiving them imply you want them separated from your usual workflow (which is the rationality for the current note.ZARCHIVED = 0 condition)?

I'm tempted to consider Option 1 but I can imagine that people would want archived notes not to show up.

Agreed, I can absolutely understand that not everyone wants to see their archived notes all the time

Wouldn't archiving them imply you want them separated from your usual workflow (which is the rational for the current note.ZARCHIVED = 0 condition)?

Yes, which leads me to a third option. Have a separate query which allows to search for archived notes.

May I ask why you want to archive notes but also search them?

Sure! I use Bear as my "second brain", structured using PARA (Projects, Areas, Resources, Archives). When my projects are done, I move them to an "archives" tag. While that arguably solves the use case as well, I want to get them more out of sight so I'm not distracted by them. In certain scenarios, like starting new projects or needing something specific, I revisit my archive.

Interesting. I think a special keyword rather than a wholly new type of query may be more useful as a third option. That way we wouldn't need entirely new versions of bn, bs, and bcs`.
That said, assuming this page is an accurate explanation of PARA, I think I already implicitly use this system myself.
The difference is that I structure all of my Projects and Archive to exist inside the Things app, which I find much more natural for organizing tasks and projects that need archiving. Conveniently, projects and tasks are automatically archived as soon as they are marked completed.
I tend to see Resources and Areas as evergreen. I see knowledge as monotonically increasing and accumulating more can only be a good thing. Anything that becomes obsolete can be updated or combined with other notes, which tools like tag searching and the bcs keyword are meant to facilitate. These are the types of notes I store in Bear, where they live forever and are searchable using this workflow. I didn't even know the archive feature existed because it is a feature I never sought out and would never consider using.


Kotlin Port of this Library with Generics and Fixes

This library is great. It has most of the fields and customization of the Eureka form builder for Swift. I created a Kotlin port of this library using the fork from shaymargolis. I mainly created this port to learn the differences between Java and Kotlin.
Let me know if you require additional credit for this fantastic library!
https://github.com/TheJuki/KFormMaster

Thanks a lot, great job! I had a plan to create a Kotlin version of it, but I couldn't manage the time for it. And the credit is fine too!


StringStyle attributes should contain the transform

I have a case where I'm creating a StringStyle, retrieving it's attributes, and caching those for later manual construction of an NSAttributedString. The StringStyle in question has a custom transform set.
Expected:
attributes dictionary contains a value for BonMotTransformationsAttributeName key, which can be used to apply the desired transform to strings manually
Actual:
There is no representation of the StringStyle's transform in its attributes dictionary

Also, it looks like transformer is internal on Transform, so they can't be applied manually.


changing dash to horizon

changing dash references to horizon and updating horizon git repo location and branch

lgtm, Passes the build test - http://jenkins.rcb.me/job/diablo-merge-prop/25/console


Support REVISION migration for properties becoming nullable

This is a revision. I want to prioritize this one from #140 to check there aren't any issues around column placement
ALTER TABLE ADD COLUMN customer_id_new string null;
INSERT INTO customer_id_new SELECT from customer_id;
ALTER TABLE DROP COLUMN customer_id;
ALTER TABLE RENAME COLUMN customer_id_new TO customer_id
END TRANSACTION;

@chuwy - this is in the wrong repo now - can you migrate over to https://github.com/snowplow/iglu please?
Could you also spend 30 mins and move over anything else which is no longer relevant?

Migrated to https://github.com/snowplow/iglu/issues/238


Minor changes to the ValidatingTextBox

Add property DefaultErrorMessage.
Some dever is not use English ,so if their user input is Error and the dever not set the ErrorMessage that will show the English.And if the dever want show all the ErrorMessage as the same String,they should set all the Rule.

Remove ValidatingTextBox.UpdateRemainingCharacters duplicated code
remove lastest this.remainingCharacters.Visibility = this.MaxLength > 0 ? Visibility.Visible : Visibility.Collapsed;  The above has judge the MaxLength ,and if it's 0,the Visibility will Collapsed

@lindexi thank you so much for the contribution!


Matrix inverse

This issue is an extension of https://github.com/pygfx/pylinalg/pull/90.
Recently, I upgraded numpy from version 1.26.4 to 2.2.1, and encountered the np.linalg.LinAlgError (singular matrix) exception when scaling was set to 0. Due to the changes in https://github.com/pygfx/pylinalg/pull/90, I realized that this is indeed the expected behavior, and we need to handle it accordingly.
However, I suddenly realized that with numpy 1.26.4, even with the changes from https://github.com/pygfx/pylinalg/pull/90, this exception was not raised. This is because in version 1.26.4, we were using np.linalg.pinv to compute the pseudo-inverse, which still returns an approximate inverse matrix even when the matrix is singular.
However, rendering engines typically do not use pseudo-inverses:

The pseudo-inverse is not an exact inverse; it is merely an approximation. For transformation matrices in rendering engines, what we generally need is an exact inverse matrix, and the pseudo-inverse does not meet this requirement. Additionally, using the pseudo-inverse in some cases might lead to numerical instability and unpredictable results.

From a theoretical standpoint, the complexity of computing the pseudo-inverse is much higher than that of computing the inverse matrix. For transformation matrices, this overhead is unnecessary.

I checked the code history, and the reason we used pinv was to

“avoid high CPU usage (see issue #763).”

It seems that there were some bugs with np.linalg.inv in numpy 1.X versions, but even so, pinv is not the most appropriate choice. For numpy 1.X, I believe we can replace it with a pure Python implementation of inv.
I referred to the implementation in three.js and wrote a pure Python version of the matrix inverse, and performed some tests.

Test Script
import timeit
import numpy as np

import pylinalg as la

m = la.mat_compose(np.array([1, 2, 3]), np.array([0, 0, 0, 1]), np.array([1, 1, 1]))

def _mat_inv(m):
    out = np.empty((4, 4), dtype=np.float32)
    me = m.flat

    n11 = me[0]
    n21 = me[4]
    n31 = me[8]
    n41 = me[12]
    n12 = me[1]
    n22 = me[5]
    n32 = me[9]
    n42 = me[13]
    n13 = me[2]
    n23 = me[6]
    n33 = me[10]
    n43 = me[14]
    n14 = me[3]
    n24 = me[7]
    n34 = me[11]
    n44 = me[15]

    t11 = (
        n23 * n34 * n42
        - n24 * n33 * n42
        + n24 * n32 * n43
        - n22 * n34 * n43
        - n23 * n32 * n44
        + n22 * n33 * n44
    )
    t12 = (
        n14 * n33 * n42
        - n13 * n34 * n42
        - n14 * n32 * n43
        + n12 * n34 * n43
        + n13 * n32 * n44
        - n12 * n33 * n44
    )
    t13 = (
        n13 * n24 * n42
        - n14 * n23 * n42
        + n14 * n22 * n43
        - n12 * n24 * n43
        - n13 * n22 * n44
        + n12 * n23 * n44
    )
    t14 = (
        n14 * n23 * n32
        - n13 * n24 * n32
        - n14 * n22 * n33
        + n12 * n24 * n33
        + n13 * n22 * n34
        - n12 * n23 * n34
    )

    det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14

    if det == 0:
        return out

    det_inv = 1 / det

    te = out.flat
    te[0] = t11 * det_inv
    te[4] = (
        n24 * n33 * n41
        - n23 * n34 * n41
        - n24 * n31 * n43
        + n21 * n34 * n43
        + n23 * n31 * n44
        - n21 * n33 * n44
    ) * det_inv
    te[8] = (
        n22 * n34 * n41
        - n24 * n32 * n41
        + n24 * n31 * n42
        - n21 * n34 * n42
        - n22 * n31 * n44
        + n21 * n32 * n44
    ) * det_inv
    te[12] = (
        n23 * n32 * n41
        - n22 * n33 * n41
        - n23 * n31 * n42
        + n21 * n33 * n42
        + n22 * n31 * n43
        - n21 * n32 * n43
    ) * det_inv

    te[1] = t12 * det_inv
    te[5] = (
        n13 * n34 * n41
        - n14 * n33 * n41
        + n14 * n31 * n43
        - n11 * n34 * n43
        - n13 * n31 * n44
        + n11 * n33 * n44
    ) * det_inv
    te[9] = (
        n14 * n32 * n41
        - n12 * n34 * n41
        - n14 * n31 * n42
        + n11 * n34 * n42
        + n12 * n31 * n44
        - n11 * n32 * n44
    ) * det_inv
    te[13] = (
        n12 * n33 * n41
        - n13 * n32 * n41
        + n13 * n31 * n42
        - n11 * n33 * n42
        - n12 * n31 * n43
        + n11 * n32 * n43
    ) * det_inv

    te[2] = t13 * det_inv
    te[6] = (
        n14 * n23 * n41
        - n13 * n24 * n41
        - n14 * n21 * n43
        + n11 * n24 * n43
        + n13 * n21 * n44
        - n11 * n23 * n44
    ) * det_inv
    te[10] = (
        n12 * n24 * n41
        - n14 * n22 * n41
        + n14 * n21 * n42
        - n11 * n24 * n42
        - n12 * n21 * n44
        + n11 * n22 * n44
    ) * det_inv
    te[14] = (
        n13 * n22 * n41
        - n12 * n23 * n41
        - n13 * n21 * n42
        + n11 * n23 * n42
        + n12 * n21 * n43
        - n11 * n22 * n43
    ) * det_inv

    te[3] = t14 * det_inv
    te[7] = (
        n13 * n24 * n31
        - n14 * n23 * n31
        + n14 * n21 * n33
        - n11 * n24 * n33
        - n13 * n21 * n34
        + n11 * n23 * n34
    ) * det_inv
    te[11] = (
        n14 * n22 * n31
        - n12 * n24 * n31
        - n14 * n21 * n32
        + n11 * n24 * n32
        + n12 * n21 * n34
        - n11 * n22 * n34
    ) * det_inv
    te[15] = (
        n12 * n23 * n31
        - n13 * n22 * n31
        + n13 * n21 * n32
        - n11 * n23 * n32
        - n12 * n21 * n33
        + n11 * n22 * n33
    ) * det_inv

    return out

def test_np_inv():
    return np.linalg.inv(m)

def test_np_pinv():
    return np.linalg.pinv(m)

def test_inv():
    return _mat_inv(m)

print("inv", np.linalg.inv(m))
print("pinv", np.linalg.pinv(m))
print("python inv", _mat_inv(m))

time = timeit.timeit(test_np_inv, number=100000)
print(f"np.linalg.inv, time: {time} seconds")

time = timeit.timeit(test_np_pinv, number=100000)
print(f"np.linalg.pinv time: {time} seconds")

time = timeit.timeit(test_inv, number=100000)
print(f"_mat_inv, time: {time} seconds")

Outputs:

For numpy 1.26.4:

inv [[ 1.  0.  0. -1.]
 [ 0.  1.  0. -2.]
 [ 0.  0.  1. -3.]
 [ 0.  0.  0.  1.]]
pinv [[ 1.00000000e+00 -4.62029910e-16  3.19485066e-16 -1.00000000e+00]
 [-5.29094592e-17  1.00000000e+00  7.74666651e-16 -2.00000000e+00]
 [-4.95543739e-17 -1.74588509e-15  1.00000000e+00 -3.00000000e+00]
 [-1.14551985e-16  6.42717943e-16 -4.56019187e-17  1.00000000e+00]]
python inv [[ 1.  0.  0. -1.]
 [ 0.  1.  0. -2.]
 [ 0.  0.  1. -3.]
 [ 0.  0.  0.  1.]]
np.linalg.inv, time: 1.6844719999935478 seconds
np.linalg.pinv time: 1.4958708999911323 seconds
_mat_inv, time: 1.189121100003831 seconds

The performance of np.linalg.inv and np.linalg.pinv seems similar (although, in terms of computational complexity, pinv should have a higher cost than inv, so the inv implementation in numpy 1.26.4 may have some issues). Both are slower than the pure Python implementation.

For numpy 2.2.1:

inv [[ 1.  0.  0. -1.]
 [ 0.  1.  0. -2.]
 [ 0.  0.  1. -3.]
 [ 0.  0.  0.  1.]]
pinv [[ 1.00000000e+00 -4.62029910e-16  3.19485066e-16 -1.00000000e+00]
 [-5.29094592e-17  1.00000000e+00  7.74666651e-16 -2.00000000e+00]
 [-4.95543739e-17 -1.74588509e-15  1.00000000e+00 -3.00000000e+00]
 [-1.14551985e-16  6.42717943e-16 -4.56019187e-17  1.00000000e+00]]
python inv [[ 1.  0.  0. -1.]
 [ 0.  1.  0. -2.]
 [ 0.  0.  1. -3.]
 [ 0.  0.  0.  1.]]
np.linalg.inv, time: 0.33592380001209676 seconds
np.linalg.pinv time: 1.5744645999511704 seconds
_mat_inv, time: 1.2034183000214398 seconds

The performance of np.linalg.inv is significantly better than np.linalg.pinv, which is the expected behavior.
Additionally, the test results also show that the output of pinv is not numerically stable.

At this point, I think it would be better to move this code over to pylinalg as mat_inverse. Here's my suggested boilerplate:
The method keyword argument is there to opt out of the automatic implementation selection. This also makes it possible to unit test both options.
def mat_inverse(matrix, /, *, method="auto", dtype=None, out=None) -> np.ndarray:
    if method == "auto" and int(np.__version__.split(".")[0]) >= 2:
        method = "numpy"
    else:
        method = "manual"
    fn = {
        "numpy": np.linalg.inv,
        "manual": _mat_inv,  # Avoid cpu's spinning at 300%, see issue #763
    }[method]

    matrix = np.asarray(matrix)
    if out is None:
        out = np.empty_like(matrix, dtype=dtype)
    try:
        out[:] = fn(matrix)
    except np.linalg.LinAlgError:
        out[:] = 0
    return out


p-value for SVM results

The result of the SVM should be assessed for "statistically significance".

Using a permutation strategy, need to check if done correctly and what is a accurate number of permutations, in comparison to the maximum= Nanimal (Nanimal-1)/2

We will use at least 240 permutation. code is ready


Convenience script needs to specify linux-gnu rather than linux

Since there may be a linux-musl option in the future, the linux binary uses linux-gnu as its OS name. Thus, the convenience script needs to use it as well.

Closed by https://github.com/nickgerace/bovine/commit/7fd9eac58ea8472eb107d4d330d2b38cbd737236


axios plugin

Can anyone point the problem here .. axios does not fetch the token in every request like it supposed to do.
there is my plugin/interceptors.js

and there is how i added id in the config file

Hi @aymenpeak
The interceptors.js plugin is not called when your import axios from 'axios'.
Here an example:
plugins/axios.js
import axios from 'axios'
import store from '~store'

let instance = axios.create()

if (process.BROWSER_BUILD) {
  const swal = require('sweetalert2')
  instance.interceptors.request.use(
    (config) => {
      if (store.getters.authToken) {
        config.headers.common['Authorization'] = `Bearer ${store.getters.authToken}`
      }
      return config
    },
    (error) => Promise.reject(error)
  )
  instance.interceptors.response.use(
    response => response,
    (error) => {
      if (error.response.status >= 500) {
        swal({
          type: 'error',
          title: 'Oops...',
          html: 'Something went wrong! Please try again.'
        })
      } else if (error.response.status === 401 && store.getters.authUser) {
        swal({
          title: 'Session Expired!',
          html: 'Please log in again to continue.',
          allowOutsideClick: false
        })
        .then(() => store.dispatch('logout'))
        .catch(swal.noop)
      }
      return Promise.reject(error)
    }
  )
}

export default instance

Then, in your components, you need to import axios like this: import axios from '~plugins/axios'
Also, think to add axios in the vendor bundle:
nuxt.config.js
module.exports = {
  build: {
    vendor: ['axios']
  }
}

hi , but I can set interceptors without instance .
like this demo a random header Authorization

but in my production , I also use instance setting interceptors  and collect my http request , just like @Atinux .

thanx for answering but my problem is that i get the token from server successfully but when i used in an other action in the store returns undefined.
there is my login function

the action saveToken works perfectually but inside fetchUser the state.token is undefined knowing that when i log te state.token in the end of saveToken it return my token correctly.
.I think its a matter of synchronization.
Sorry i know its out of nuxt.js but i really need helps ...

if you can build a simple project with problem you want to resolve on github
( include API server will be better )
that will be easier test or resolve your problem .
thanks.

there is my store file

and there is the types

You should not use state from the variable but directly from your fetchUser method:
fetchUser ({ state, commit }) {
  console.log(state)
  // ...
}

yeah my bad buts there is no change , when i call a getter in my axios plugin its always undefined

line 11
...

i solved the problems by adding a test on the cookies.get() in my store file , turn out when she returns undefined that undefined never be overwrited

I use the vuex store Modules, but I can't get
import store from '~store'

I have try
import store from '~/store/user'

but I can't use store's method
I only want get user/token and use dispatch method
what should I do?

@OrangeXC this one of the breaking changes in the version 1.0.0-alpha.4 .
now u have access to the store and the router in the middlewares and plugins like this
export default ({app: {router}, store}) => {
// here the store and the router are available
}

@aymenpeak Thank you, I solved it, I think "@nuxtjs/axios" is a better way to solve auth problem.

@OrangeXC how to deal with
const instance = axios.create({
  baseURL: process.env.baseUrl,
  timeout: 20000
})

instance.interceptors.request.use(config) => {
...

export default instance

where to import store and how?

@Atinux how to deal with your first example to pass the store to the new nuxt version, which is {store} notation?

how to use store state with this  interceptors @Atinux

@Caoyiii if you use axios-module you can easly access store from the interceptors:
export default function ({ $axios, app, store }) {
  $axios.onRequest(config => {
    //do something with the store
    console.log(store.state.someValue)
  })
}

Hi,
what should i do?
function  verifyCode ({app, commit}, data) {
    let post =  querystring.stringify(data);

    return  this.$axios.$post('/login/otp', post)
                    .then(
                        data => {
                            Cookie.set('token', data.data.user.token);

                            console.log(this.$store)
                            this.dispatch('profile/getUserDetails',{},{root: true, credentials : true});
                        },
                    );
}

when calling the getUserDetails,
the token from cookie is null.
on the ~/plugis/axios
import Cookie from 'js-cookie';
export default function ({ $axios, redirect }) {
    let __token = Cookie.get("token");
    axios.defaults.headers.common.Authorize = __token;

....


Default context logic for deployWorkspaceProject

Related to #425.
This PR primarily involves work to wrap up the getDefaultContextValues portion of the deployWorkspaceProject command.  The supporting work involved the following changes:

Add three new ACA/VS Code deploy settings (.vscode/settings.json).  We will be using these as re-deploy settings.
Refactor settingUtils (made some additional changes since I was already making changes to the file)
Refactor some of the createAcr steps so that they play well with the express deploy process (mostly updates to AcrListStep)

General behavior for the defaulting logic is as follows:

Check the workspace settings for existing resources to deploy to, if they exist, leverage them
If resources do not exist or settings don't exist, leave the context values undefined and later we will assign new resource names using DefaultResourcesNameStep (which was already added in the second of the PRs).

Note: This PR also has the side effect of impacting the Update Container App Image... deploy path because they both leverage AcrListStep.  It now includes a + Create quick pick when required to build an image using an ACR.

Closing in favor of smaller PRs


Optimise runtime lock performance

Scope & Purpose
Optimise runtime lock performance

[ ] :hankey: Bugfix
[ ] :pizza: New feature
[X] :fire: Performance improvement
[ ] :hammer: Refactoring/simplification

Checklist

[ ] Tests

[ ] Regression tests
[ ] C++ Unit tests
[ ] integration tests
[ ] resilience tests

[ ] :book: CHANGELOG entry made
[ ] :books: documentation written (release notes, API changes, ...)
[ ] Backports

[x] Backport for 3.11: https://github.com/arangodb/arangodb/pull/19317
[x] Backport for 3.10: https://github.com/arangodb/arangodb/pull/19319
[ ] Backport for 3.9: (Please link PR)

Related Information
(Please reference tickets / specification / other PRs etc)

[ ] Docs PR:
[ ] Enterprise PR:
[ ] GitHub issue / Jira ticket:
[ ] Design document:

@MBkkt Yes, we need a RWLock that favors writers over readers. That's why we use our own implementation.


A Website for the Rocker Project?

Hey @eddelbuettel ,
I put together a sketch for a Rocker website, curious what you think.  The wiki is good, but doesn't seem super discoverable for new users, so I often end up pointing to other sites for someone trying to get started and was thinking we may as well have our own.
If we go with a website, I was thinking about registering a domain-name for the purpose. What do you think of https://rocker-project.org?
Cheers,

I like it and already made a commit :)

Nice, thanks!  If no objections, I'll go and register rocker-project.org then?  rocker.org seemed too vague and is probably taken.

Yes, and I was contemplating asking for a subdomain within r-project.org but that us too presumptious.

All good, and ready to be closed.


Include link to package in email sent to package owners

When someone contacts the author of a package, an email is sent from NuGet.org to the package owners. The email looks something like this:

It would be super useful to include a link to the package on the NuGet.org gallery in the email because that's my next step 100% of the time to investigate the issue. (And, unfortunately NuGet.org search doesn't always lead me directly to the package I'm looking for, but that's a discussion for another day.)
I'd like something like this:

Should be easy fix but helpful. We did similar enhancements recently to the “Add owner” mails.
/cc: @skofman1


Sorry about that.


close #883 - fix element overlapping on mobile devices

Simple css fix to prevent overlapping in chromium based browsers.
Currently "completed" badge and review button are floats. This PR changes display of their parent to flex-column on small devices (smaller than md bootsrap breakpoint of 768px). Desktop layout should be the same.
Before:

After:

Vercel

Instead of creating whitespace to allow mobile to view the full badge, is it possible to shrink the badge on the mobile version to just the icon?

Updated:

Desktop css should be pretty much the same
On mobile devices "completed" button becomes smaller green check
On very small devices lesson images are hidden


Store every LDP resource in its own named graph

Until now, SemApps has always created LDP resources "on the fly" by looking at triples with the corresponding subject. This created limitation, since these resources could not include triples that were not directly related to the resource. To be Solid compliant, we need to store every RDF document in its own named graph. This was not possible as long as we kept the Fuseki WAC dependency, but it will be possible with Fuseki (without WAC extension) and with NextGraph.

Create new DocumentService

This will be called by the ldp.resource.create action.
Create action:

For Fuseki: since named graphs don't need to be explicitely created, simply return a generated UUID

Niko said we could also use NextGraph to generate UUID, to ease then transition to NextGraph. But this would require to keep a "blob" of the document, to be used when we really want to create the NextGraph document.

For NextGraph: on create, call NextGraph API and return the UUID that is generated. We will also need to pass the HTTPS URI to NextGraph API when creating the document (see this comment).

Refactor LdpService

GET: The slug is the UUID of the NextGraph document
POST: We call the DocumentService, which returns a UUID. We then use this UUID as the resource slug.

Refactor MirrorService

The MirrorService use a custom named graph to store mirrored data. We did this because, in the idea of the MirrorService, all data were public so did not need ACL checks. The WAC extension did not check permissions on this graph.
If we stop using this WAC extension, we can store these mirrored resources as any other resources, that is, in their own named graph.
Since the URIs of mirrored resources is that of an external server, we cannot use a did: URI for them. So we will keep the full URI. If they are attached to a LDP container, we will use the document DID as a predicate (like any other LDP resource), and then return the resource starting with https://

Migrate all existing resources

NextGraph UUIDs are cryptographic keys. This means the UUIDs generated by SemApps are not compatible. All URIs will need to be re-generated.
The migration will thus be different if the new triplestore is Fuseki or NextGraph:

For Fuseki, we need to go through all the resources, move them to their own named graph with the same https:// URI.
For NextGraph, we will need to create a document for each LDP resource (with the DocumentService), rename the resource with returned UUID and store it on this new document. Then we must go through the triplestore and rename all references.
All links after a NextGraph will be broken. We could set redirects, but for ActivityPods, since we don't have so many Pod providers for now, we will probably just ensure that all cached informations are deleted.

Notes regarding NextGraph:

Unlike Fuseki, NextGraph requires named graphs to be created explicitely.
When created, a named graph includes some initial triples (?)
The named graph name will be the UUID (starting with did:ng:)
In NextGraph triple store, the LDP resources URIs will also start with did:ng:. It will be up to the TripleStoreService (or LdpService ?) to convert them to https:// URIs.
To be compatible with future NextGraph apps, it is better if the URI of the resource is the same as the URI of the named graph.
By default, the triplestore is configured to do a "UNION GRAPH", which means it will look for all data on all graph. We can of course look for a single graph with the appropriate query.
NextGraph offer features for caching, that are similar to the MirrorService, but which use a different mechanism. We will see in the future if we can take advantage of that.

I agree, but how can we apply WAC rules using the sparql endpoint of semapps middleware?

It won't be possible anymore, unless someone improve the Fuseki WAC extension in such a way that named graphs are persisted (Niko said it was possible, but he doesn't have time for this).


Decorators do not recognize class inheritance

Hello, I'm using TypeScript version 2.1.6. It looks like class decorators don't handle class type properly.
This code emits error, while ChildClass is inherited from Base and should not be any problems with it's casting to a parent class.
declare class Base {}

function decorator(inputClass: typeof Base): typeof Base {
  return inputClass;
}

@decorator
class ChildClass extends Base {
  public foo() {}
}

Compilation error:

Unable to resolve signature of class decorator when called as an expression.
Type 'typeof Base' is not assignable to type 'typeof ChildClass'.
Type 'Base' is not assignable to type 'ChildClass'.
Property 'foo' is missing in type 'Base'.

The return value of a decorators becomes the declaration. think of this as const ChildClass = decorator(class childClass extends Base {...});. In that sense decorators can not change the type.
Your decroator function says it always returns Base constructor, even if you pass it a Child constructor.
I think what you want is to use generics:
function decorator<T extends typeof Base>(inputClass: T): T {
  return inputClass;
}

No, initially I faced with a problem to use Redux with TypeScript.
react-redux lib contains decorator @connect which always applied to a class that inherited from React.Component, like
@connect()
class MyComponent extends React.Component<Props, State> {
   ...
}

In most cases MyComponent has its own methods, so class signature differs from a base class.
So in current realisation there's no way to use this decorator in a manner it was designed.
More details on original issue (https://github.com/Microsoft/TypeScript/issues/9365). The problem of inheritance was mentioned there but not accented.
Current type-definition of the decorator briefly:
type ComponentClass<P> = React.ComponentClass<P>;

interface ComponentDecorator<TOriginalProps, TOwnProps> {
    (component: ComponentClass<TOriginalProps> | StatelessComponent<TOriginalProps>): ComponentClass<TOwnProps>;
}

export declare function connect<TStateProps, TDispatchProps, TOwnProps>(
    mapStateToProps: FuncOrSelf<MapStateToProps<TStateProps, TOwnProps>>,
    mapDispatchToProps?: FuncOrSelf<MapDispatchToPropsFunction<TDispatchProps, TOwnProps> | MapDispatchToPropsObject>
): ComponentDecorator<TStateProps & TDispatchProps, TOwnProps>;

So finally its input and output are React.ComponentClass<P>, that is the base class of the target class, which leads to compilation error

Ok, I see.
Well, but I need to express more complex case, something like
class Base<T> {
}

interface IBaseCtr<T> {
  new(): Base<T>;
}

function wrapper<TOut extends IBaseCtr<number>, TIn extends IBaseCtr<string>>(ctr: TIn): TOut {
  return class Wrapper extends Base<number> {
    inner: Base<string> = new ctr();
  }
}

@wrapper
class Child extends Base<string> {
  foo() {}
}

So, I need to convert one class to another while both of them inherits from same generic class with different generic parameter. But this code also fails to compile.
Actually there are problems with react-redux @connect decorator, kind of https://github.com/Microsoft/TypeScript/issues/9365
Also it's strange that code below compiles fine
declare class Base {}

function decorator(inputClass: typeof Base): typeof Base {
  return inputClass;
}

class ChildClass extends Base {
  public foo() {}
}

decorator(ChildClass)

@decorator and decorator(...) express the same thing but type-checked differently, which is quite strange

@decorator and decorator(...) express the same thing but type-checked differently, which is quite strange

This is strange indeed, and makes hard to use decorators for defining "HOC"s in React


Include InputStream.hpp directly in SoundFileReaderMp3.cpp

instead of indirect inclusion through MemoryInputStream.hpp
Thank you for respecting my OCD.

SFMLBuildMaster: Build this please.


Show an error when trying to use unsupported baudrate

I had bad times trying to figure out why baudrate I use (500000) is not working with my device while it was working well with other modbus clients. With use of logic analyzer, it turned out mbusd used the default baudrate as 500000 was not supported. I think it would be worth to report an error to the user that he selected (via -s) an unsupported baudrate rather than silently revert to the default one (19200).
0 in ttyspeed is now treated as a marker of default baudrate which is then replaced with the default baudrate in tty_transpeed function. default clause just reports an error that unsupported baudrate was selected.

Thanks for PRs!

Also please note ad58141.


⚠ Bofrost.lu has degraded performance

In 1bd88af, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2011 ms

Resolved: Bofrost.lu performance has improved in 9308c4a after 2 hours, 27 minutes.


Feature Suggestion

It'll be great to have a button you can click that will highlight the entire layout in live preview (say, show all the div containers). It will be a huge help when designing the layout. Right now you can only see the divs one at a time when you click the relevant code.

You actually can do this. If you use the edit multiple lines feature you will be able to see multiple elements selected. Will it do it automatically, no but you can still go through manually that way. For Mac it is command and click, pc should be control or alt and click


strange error message on build

doesn't seem to be hurting anuything but I wonder what it is
Error in exists(cacheKey, where = .rs.WorkingDataEnv, inherits = FALSE) :
  invalid first argument
Error in assign(cacheKey, frame, .rs.CachedDataEnv) :
  attempt to use zero-length variable name
``

@Mateo9569 - do you get the same thing after running.  no rush as seems to be harmless

rmarkdown::render_site(output_format = 'bookdown::gitbook',
encoding = 'UTF-8')

No I have not gotten that error message after running

This might help: https://github.com/rstudio/rstudio/issues/13188

totally. i actually found that link then forgot! don't want to mess with any updates right before the report is due. Thanks!


refactor: use ExecutorParams::info in join related executors

I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?
This is part of the executor info consistency work https://github.com/risingwavelabs/risingwave/issues/13292.
Summary:

Directly use params.info in Lookup, DynamicFilter, HashJoin executors.

Checklist

[ ] I have written necessary rustdoc comments
[ ] I have added necessary unit tests and integration tests
[ ] I have added fuzzing tests or opened an issue to track them. (Optional, recommended for new SQL features #7934).
[ ] My PR contains breaking changes. (If it deprecates some features, please create a tracking issue to remove them in the future).
[x] All checks passed in ./risedev check (or alias, ./risedev c)
[ ] My PR changes performance-critical code. (Please run macro/micro-benchmarks and show the results.)

[ ] My PR contains critical fixes that are necessary to be merged into the latest release. (Please check out the details)

Documentation

[ ] My PR needs documentation updates. (Please use the Release note section below to summarize the impact on users)

Release note
If this PR includes changes that directly affect users or other significant modifications relevant to the community, kindly draft a release note to provide a concise summary of these changes. Please prioritize highlighting the impact these changes will have on users.

Seems like using ExecutorParams::info's schema broke some backwards compat tests for hash join. Could you PTAL?
https://github.com/risingwavelabs/risingwave/pull/13467 reproduced here.


On-the-fly linting?

I'm not sure how elm-make handles this, but the linter plugin for sublime text can lint on-the-fly, so I feel Atom should be able to do this too.
It's specially nice when using hot-swapping to know of errors in your code before you save a file.

Hi,
I did a proof of concept here: https://github.com/halohalospecial/linter-elm-make/tree/lintonfly (lintonfly branch)
Since elm-make requires a file as input, the workaround is to create a temporary file containing the current text in the editor.  I think this is also the approach taken by the Sublime plugin.
Let me know if it works for you.  Cheers!


Require to support other go version like go1.15rc1

https://github.com/henrylee2cn/ameda/blob/bdca2308b623ed0dadcd244eb6bb657443d381c4/value.go#L172
go1.15rc1 is also a vaild go version

ok


Camera prior focal length

I have some cameras with accurate prior focal lengths. I tried to use --BundleAdjustment.optimize_intrinsics 0 argument to keep intrinsics constant. This really works for BA part.
However, I find out that the view_graph_calibration part will always change focal lengths. For has_prior_focal_length param in Camera struct is always set to false. Will there be any options to configure this later?

OK I found that ViewGraphCalibration should be skipped if I already have accurate prior focals.

Update: add --skip_view_graph_calibration 1 param will also skip rotation averaging indeed, so don't do this. Set prior_focal_length=1 in database.db instead


Fix ngen worker entrypoint handling of CPU count

Fixing entrypoint script to properly account for MPI hosts that have more than a single CPU when generating the -n argument passed to mpirun, as currently the number of processes started is the number of hosts.

Found something else related that needs to be tweaked in the image, so making this a draft for the moment.

Found something else that also needs related modification.


Add Procivis One

Add Procivis One wallet and agent (product page).
Also tries to improve the "add wallet" dialog - it linked to a different repo and fixes the company URL capitalisation.

But the signoff is missing.
@svenstucki, can you sign off your commits.

@samuelmr Thanks - rebased and sign off added.
We'll be releasing our apps soon, will have a look at the app store fields then as well (if still missing) ;).


when no path is specified in router-link, no user friendly error is thrown

when no path is specified in router-link, no user friendly error is thrown which creates problem in debuggin actually what is wrong.
<route-to >
						<a class="button is-secondary">
							Connect to wallet
						</a>
					</route-to>

when clicked on link, getting this error in console -

fixed in v - 1.0.3


Support for Promises for functions with callbacks

It would be useful to add support for Promises for the functions with callbacks (ie. query.exec, scan.exec, etc)

It does.
Here's an example:
var query = Something.query('id').eq('abc123');
query.exec()
.then(function (things) {
  ...
})
.catch(function (err) {
 ...
});

Oh cool, I'll need to reflect that in the typescript definition


Patch 1

fixes pyodbc error with multi statements and adds some singlestore specific macros

approved

i didnt really mean to create this pull request. now not sure how to delete it.


Invisible button for Accept terms & conditions in dashboard generate account

Description
The button used to accept terms and conditions is not in the right place, as a normal human user expect.
it should be check boxes as most of the regular applications.
Steps to reproduce
1- go to https://dashboard.grid.tf/
2- click generate account
3- will be directed to the terms and condition page
4- you will take some time clicking everywhere and the already checked boxes, until you recognize that the accept button the down at the end of the page.
Current status

Expected

Blocked on the change behavior of iframe form the terms and conditions.

We should be able to fetch markdown related to T&C page and show it in vuetify-dialog and only enable accept action if scroll reaches it's end

Issue update
Work in progress
The implementation logic will be in https://github.com/threefoldtech/tfgrid-sdk-ts/pull/2373, but I'll pause work on it until I fix this more urgent issue https://github.com/threefoldtech/tfgrid-sdk-ts/issues/2368.

Issue Update
Work Done
The UI transformation involved parsing the Markdown content and embedding it within a v-dialog. This change not only provides a more visually appealing display but also ensures a smoother interaction with the terms and conditions.
A notable addition is the dynamic behavior of the Accept Terms and Conditions button. It is now disabled by default and becomes active only when the user scrolls to the end of the dialog.

Issue update
Work done
Added Go Back button to close the dialog

verified on devnet
version : d2d2622

The buttons are now more clear.
tried their functionality and working fine. ( either going back or accepting the terms)
https://app.testlodge.com/a/26076/projects/40893/suites/234374?expand_section=422331#case_4150401

tried the button in light mode it is so unclear and confusing.

Issue update
Work done:

Changed the white color of 'Go Back' button to dark in light mode and light in dark mode

Verified, Devnet d2a2d6b.
color are changed in both mode.


Add descriptions and types to variables

to: @airbnb/binaryalert-maintainers
cc:
size: small
resolves #166
Background
It is a Terraform best practice to use descriptions and types for variables. This PR ensures that we respect that.
Changes

Descriptions and types added to Terraform variables.tf

Testing
N/A

Coverage remained the same at 90.52% when pulling a947245bcd8d87a68080b27a51d99ff6b84ed5e9 on jdheyburn:variables_improvements into a9c0f06affc35e1f8e45bb77f835b92350c68a0b on airbnb:master.


Issue PIX-647 - Refactor "Manage Context Menu Items" into component

Fixes PIX-647 and #139

Drag and drop item is not working.
Undo recent changes functionality is broken.

I'm getting some warnings when running lint:

All working properly now


Adaptive sampling?

This code has been extremely useful. Do you have any suggestions on how to modify this code for adaptive sampling, where the radius varies smoothly across the hypercube, or for the case where one wants more nodes along one or more of the spatial dimensions?
On a side note, if I want to distribute this code with my library, what's the best way to do so? Can I include your header in my library, or should I ask people to get the header from you? I want to do this right :)

Glad you found a good solution! From your forked repo you should be able to create a 'Pull Request' back into my repo. I will need to add a list of contributors! :)

I now also have a version that works with variable radii by taking a functor (sort of) from the programmer. I will fold all this in via the pull request mechanism.

Sorry for late response, I'm quite busy at the moment. I'd be happy to review your pull request when you feel ready.


Welcome to the first activity

Welcome @bonniec
I'm the friendly GitHub Teacher Bot and I am here to help you get started using GitHub.
What is this?
Right now, you're looking at an issue. An issue is similar to a discussion thread you might see in a forum and it is designed to hold conversations related to this repository. A repository is the container that holds everything related to your software project.
Let's get started
I'm here to walk you through some simple changes to this repository. When we are finished, you will know how to manage issues and make changes using the GitHub workflow.
Add a Label
Let me know you are ready to get started by adding the Ready to go label on the right. If you need help, check out the instructions below.

On the right side of the issue, click Label.
Click the label named Ready to go to associate it with this issue.

:tada: Way to go!
Labels are used to organize issues (like this one) and pull requests. You can customize the labels in your repository to meet the needs of your project and team.
Let your team know you are on it
We also ensure issues and pull requests are actionable by assigning them to a member of the project team. Go ahead and assign this issue to yourself by clicking assign yourself under Assignees.

:+1: It's All Yours
Great work! To keep ourselves accountable, we always like to have at least one assignee for every open issue and pull request. Notice that GitHub made a note of when the issue was assigned to you. If the assignee changes, GitHub will make a note of that, too.
GitHub Flow
Next let's make a basic change to the README in this repository. To make a change, you will follow your organization's preferred workflow.

After you have reviewed the workflow, go ahead and get started by creating a branch.
Create a Branch
To create a branch:

Click on the Code tab, then the master dropdown.
Type readme-update branch name.
Press Enter.

You're on a roll @bonniec. Now that you created a branch, you can begin making changes to the README.md file to make this repository your own! Edit the URL in the README.md file to point to your copy of the game. The URL should be: https://githubschool.github.io/game-time-bonniec
To make changes to the file:

Navigate to the Code tab and click the README file
At the top of the file, click the pencil icon to open the web editor
Change the text
Scroll to the bottom of the screen and enter a commit message
Choose the option to commit directly to your branch
Click Commit changes

For more detailed instructions, check out this help documentation on editing files in the browser.

Oh no!
@bonniec It looks like you might be stuck.

It's been over 24 hours since your last interaction. If you're stuck, here are some things that might help:

Ping @teacherbot with a specific question
Check out this video
Ping the GitHub Training team member on call

Note: :robot: The video and information provided when they ping teacherbot changes as they go through the course and encounter delays between activities.

Great work @bonniec! I see you made a commit on the branch.
Create a Pull Request
Now that you have edited a file, you will create a Pull Request to show your proposed changes to your team.

Click the Code tab and look for a banner at the top with a button that reads Compare and pull request
Add a descriptive title and describe your changes in the Pull Request
Click Create pull request

Step by step instructions for creating a pull request can be found here. In the meantime, I'm going to head over to the Pull Request tab and wait for you there.


No file found '/manifest.json' (?)

Logger it showing:
Logger: hacs.repository.integration.GregoryDosh.Home-Assistant-DreamScreen-Service
First occured: 10:42:45 AM (2 occurences)
Last logged: 10:42:51 AM

No file found '/manifest.json'

I'm not sure why. Best I can suspect is it's looking at "root" /manifest.json not relative "./" manifest.json.
Installed via HACS Version: 0.22.1
HA: 1.106.3

Thanks for reporting this. Same happens on my site.

fixed in https://github.com/GregoryDosh/Home-Assistant-DreamScreen-Service/commit/4c672c3c8e22ee246cc7e74190895b785754275c
BREAKING CHANGE FOR ALL NON HACS USER


Have NPCs speak as themselves in script output

Can we use the Roll20 as feature for GMs to speak as some NPC or other, to improve chat output when scripts are used on behalf of NPCs?


docs(changelog): drop wrong entries

About this change—what it does

drops wrong entries from the changelog
these changes are a part of the v3 release, please see the v3 branch:
https://github.com/aiven/terraform-provider-aiven/tree/v3

Why this way

to have proper changelog

lgtm


fixed modulated_circle() to work as advertised

The doc for this module suggested a list of pairs, the default argument was a list of 1 number, and what would actually work was list of triples.
This patch fixes the module to accept list of either pairs or triples, updates the doc accordingly, and gives an accepted default argument.

The regression failure is not this PR's fault, but my fault, which was fixed externally to this PR.


 That way we could also first check if the center is not an air block so we have less floating lakes.

Another picture from the dev survival server:


NullReferenceException from deleting action sets.

Hi,
I've come across a couple of error from deleting the default provided action sets using the the steamVR Input inspector. (default, buggybuddy, platformer) I'm not sure if I should be doing this at this current SteamVR beta update or if I did it wrong. I'm currently using Unity 2018.2.12f1 and SteamVR Beta<PHONE_NUMBER>). I apologise for the console spam in advance now.
The following are the errors on my console:
Valve.VR.SteamVR_Behaviour_Pose.OnEnable () (at Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs:105)

NullReferenceException: Object reference not set to an instance of an object
Valve.VR.SteamVR_Behaviour_Pose.OnEnable () (at Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs:105)

NullReferenceException: Object reference not set to an instance of an object
Valve.VR.SteamVR_Behaviour_Pose.CheckDeviceIndex () (at Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs:73)
Valve.VR.SteamVR_Behaviour_Pose.Start () (at Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs:51)

NullReferenceException: Object reference not set to an instance of an object
Valve.VR.SteamVR_Behaviour_Pose.CheckDeviceIndex () (at Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs:73)
Valve.VR.SteamVR_Behaviour_Pose.Start () (at Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs:51)

This one is a error that persists every update
NullReferenceException: Object reference not set to an instance of an object
Valve.VR.SteamVR_Behaviour_Pose.UpdateHistoryBuffer () (at Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs:138)
Valve.VR.SteamVR_Behaviour_Pose.SteamVR_Input_OnPosesUpdated (Boolean obj) (at Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs:151)
Valve.VR.SteamVR_Input.UpdatePoseActions (Boolean skipStateAndEventUpdates) (at Assets/SteamVR/Input/SteamVR_Input.cs:422)
Valve.VR.SteamVR_Input.UpdateVisualActions (Boolean skipStateAndEventUpdates) (at Assets/SteamVR/Input/SteamVR_Input.cs:400)
Valve.VR.SteamVR_Input.OnPreCull () (at Assets/SteamVR/Input/SteamVR_Input.cs:385)
Valve.VR.SteamVR_Behaviour.PreCull () (at Assets/SteamVR/Scripts/SteamVR_Behaviour.cs:203)
Valve.VR.SteamVR_Behaviour.OnBeforeRender () (at Assets/SteamVR/Scripts/SteamVR_Behaviour.cs:173)
UnityEngine.BeforeRenderHelper.Invoke () (at C:/buildslave/unity/build/Runtime/Export/BeforeRenderHelper.cs:105)
UnityEngine.Application.InvokeOnBeforeRender () (at C:/buildslave/unity/build/Runtime/Export/Application.cs:322)

NullReferenceException: Object reference not set to an instance of an object
Valve.VR.SteamVR_Behaviour_Pose.OnDisable () (at Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs:112)

NullReferenceException: Object reference not set to an instance of an object
Valve.VR.SteamVR_Behaviour_Pose.OnDisable () (at Assets/SteamVR/Input/SteamVR_Behaviour_Pose.cs:112)

This is what Actions.json looks like:
{
  "actions": [
    {
      "name": "/actions/ProjectName/in/GrabClimb",
      "type": "boolean",
      "requirement": "mandatory"
    },
    {
      "name": "/actions/ProjectName/in/ButtonSelect",
      "type": "boolean"
    },
    {
      "name": "/actions/ProjectName/out/HapticFeedback",
      "type": "vibration"
    }
  ],
  "action_sets": [
    {
      "name": "/actions/ProjectName",
      "usage": "single"
    }
  ],
  "default_bindings": [
    {
      "controller_type": "vive_controller",
      "binding_url": "bindings_vive_controller.json"
    },
    {
      "controller_type": "oculus_touch",
      "binding_url": "bindings_oculus_touch.json"
    },
    {
      "controller_type": "knuckles",
      "binding_url": "bindings_knuckles.json"
    },
    {
      "controller_type": "holographic_controller",
      "binding_url": "bindings_holographic_controller.json"
    }
  ],
  "localization": [
    {
      "language_tag": "en_US",
      "/actions/TestAction/in/GrabClimb": "Grab Climbing",
      "/actions/TestAction/in/ButtonSelect": "UI Button Select",
      "/actions/TestAction/out/HapticFeedback": "Controller Vibration"
    }
  ]
}

I've deleted the localisation of the deleted action sets too, but adding them back in gives the same results.
Thanks for your help!

Is it mandatory to keep the default action sets at the moment?

Looks like you've got a pose behaviour component that is trying to get data from a pose action but you have no pose actions in your manifest. I'd recommend adding a pose action (they make it so you can track your controllers)

Ah I see now, the [CameraRig] prefab has SteamVR_Behaviour_Pose on it by default on the hands.
Thanks for your help again!


Swap from deprecated node-sass to sass

node-sass is deprecated in favor of sass.
Furthermore, node-sass had platform binding issues, such as not being able to run on linux machines with node versions greater than 16, which is annoying for users looking to use modern node features on libre operating systems.

Would be great if you could merge it...
Impossible to use node-sass on M1 ><


⚠ Bofrost.nl has degraded performance

In 2a0d3f0, Bofrost.nl (https://www.bofrost.nl) experienced degraded performance:

HTTP code: 200
Response time: 991 ms

Resolved: Bofrost.nl performance has improved in ac8545a.


Ferret crashes when directly comparing a variable attribute (e.g. units) to a string

Reported by andrew wittenberg on 4 Dec 2014 20:36 UTC
Defining an intermediate variable is a workaround, but the crash should be avoided.
 	NOAA/PMEL TMAP
 	FERRET v6.93
 	Linux 2.6.32-504.el6.x86_64 64-bit - 11/13/14
 	 4-Dec-14 15:31

yes? let/unit="m" a = 1
yes? let b = a.units
yes? list b eq "m"        !this works
             VARIABLE : B EQ "m"
             X        : 1
          1.000
yes? list a.units eq "m"  !but this crashes Ferret
STOP  bad op err

Migrated-From: http://dunkel.pmel.noaa.gov/trac/ferret/ticket/2220

Comment by andrew.wittenberg on 4 Dec 2014 20:49 UTC
Here is a related crash:
 	NOAA/PMEL TMAP
 	FERRET v6.93
 	Linux 2.6.32-504.el6.x86_64 64-bit - 11/13/14
 	 4-Dec-14 15:42

yes? let/unit="m" a = 1
yes? list is_element_of_str(a.units,{"m","a"})
STOP gcf_get_axis_srcs

And another one -- which is worse, in that even the intermediate variable doesn't work:
 	NOAA/PMEL TMAP
 	FERRET v6.93
 	Linux 2.6.32-504.el6.x86_64 64-bit - 11/13/14
 	 4-Dec-14 15:41

yes? let/unit="m" a = 1
yes? let b = a.units
yes? list is_element_of_str(b,{"m","a"})
**ERROR Ferret crash; signal = 11

Comment by ansley.b.manke on 4 Dec 2014 22:20 UTC
There seems to be a difference in behavior with user-defined variables vs variables from datsets, where defining an intermediate variable works, but not the expression var.att:
yes? use levitus_climatology
yes? sh att temp
     attributes for dataset: /home/users/tmap/ferret/linux/fer_dsets/data/levitus_climatology.cdf
 TEMP.missing_value = -1.E+10
 TEMP._FillValue = -1.E+10
 TEMP.long_name = TEMPERATURE
 TEMP.history = From levitus_climatology
 TEMP.units = DEG C

yes? let a = temp.units
yes? list is_element_of_str (a,{"Kelvin", "Celsius", "DEG C"})
             VARIABLE : IS_ELEMENT_OF_STR (A,{"Kelvin", "Celsius", "DEG C"})
             FILENAME : levitus_climatology.cdf
             FILEPATH : /home/users/tmap/ferret/linux/fer_dsets/data/
             X        : 1
          1.000

yes? list is_element_of_str (temp.long_name,{"tmp", "temp", "TEMPERATURE"})
STOP gcf_get_axis_srcs

Comment by ansley.b.manke on 9 Dec 2014 18:45 UTC
When an expression that is a varname.attname is sent to a grid-changing function (which many of the string functions are), the variable's grid was not being computed.
This is fixed in init_uvar, is_do_gc_fcn, is_uvar_grid.

Comment by andrew.wittenberg on 11 Dec 2014 17:11 UTC
Almost there... the examples in my comment:1 are fixed.  But the original example still gives errors (though now thankfully not a crash):
 	NOAA/PMEL TMAP
 	FERRET v6.931 (beta)
 	Linux 2.6.32-504.1.3.el6.x86_64 64-bit - 12/10/14
 	11-Dec-14 12:08

yes? let/unit="m" a = 1
yes? let b = a.units
yes? list b eq "m"
             VARIABLE : B EQ "m"
             X        : 1
          1.000
yes? list a.units eq "m"  !but gives errors
 **ERROR: attribute undefined or invalid attribute name: A.UNITS EQ "m"
          attribute UNITS EQ "m" not found for variable a
 **ERROR: variable unknown or not in data set: A.UNITS EQ "m"

Seems like a parsing problem following the period (".").
Downgrading the priority a bit, since this no longer crashes Ferret.

Comment by andrew.wittenberg on 27 Jan 2017 19:12 UTC
This seems to be fixed in v7.031b (dated 1/26/17).


REPLAY-1727: Base64 Caching Mechanism

What does this PR do?
Adds an LRUCache for base64 strings - cache base64 strings against drawable hashcodes.
Evict all items in the LRUCache every time we change views.
Motivation
Without a caching mechanism we create and garbage collect an excessive number of bitmaps.
Additional Notes
This PR contains a revert commit of the revert of imagebuttonmapper (iow it adds base64 functionality back into develop)
Review checklist (to be filled by reviewers)

[ ] Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
[ ] Make sure you discussed the feature or bugfix with the maintaining team in an Issue
[ ] Make sure each commit and the PR mention the Issue number (cf the CONTRIBUTING doc)

Codecov Report

Merging #1534 (e8ebe4a) into develop (e2a8c6c) will increase coverage by 0.06%.
The diff coverage is 100.00%.

@@             Coverage Diff             @@
##           develop    #1534      +/-   ##
===========================================
+ Coverage    83.39%   83.45%   +0.06%
===========================================
  Files          438      439       +1
  Lines        14853    14875      +22
  Branches      2237     2240       +3
===========================================
+ Hits         12386    12413      +27
+ Misses        1878     1874       -4
+ Partials       589      588       -1

Impacted Files
Coverage Δ

...adog/android/sessionreplay/SessionReplayPrivacy.kt
100.00% <100.00%> (ø)

...nreplay/internal/async/RecordedDataQueueHandler.kt
89.39% <100.00%> (+0.87%)
:arrow_up:

...nreplay/internal/recorder/base64/Base64LRUCache.kt
100.00% <100.00%> (ø)

...eplay/internal/recorder/base64/Base64Serializer.kt
91.23% <100.00%> (+1.43%)
:arrow_up:

... and 14 files with indirect coverage changes