--query-driver not having any effect

Hi, I'm trying to set up clangd with vscode, I've installed the extension and it has downloaded latest clangd. However, due to having only MinGW installed at the moment, I would like to use its header files with clangd.
I am trying to only write a small program, a C++ program (a small assignment), so I am using compile_flags.txt.
Contents are only -Wall.
I am running clangd with --query-driver=C:\Compilers\MinGW\bin\gcc.exe and --log=verbose.
I hoped that since I set the query driver clangd would pick up the relevant folders from gcc, I checked with gcc executable standalone from clean shell and it picked them up.
Looked at the QueryDriverDatabase.cpp for my version, here, and referencing with the clangd output, I only get the message that default clangd driver is not whitelisted, but no messages pertaining to gcc executable I passed as query driver.
If I am doing something wrong, please let me know. Posted an issue just in case this was a bug :).
The contents of the file are only a placeholder, but this file grades.cpp:
#include <string>

int main()
{
    int x = 0;
    return 0;
}

gives me 'string' file not found error (as well as unused variable x, that was just checking if compile_flags.txt worked :) )
Logs
clangd_log.txt
System information
Output of clangd --version: clangd version 10.0.0 (https://github.com/llvm/llvm-project d32170dbd5b0d54436537b6b75beaf44324e0c28)
Editor/LSP plugin: Visual Studio Code, llvm-vs-code-extensions.vscode-clangd 0.1.7
Operating system: Windows 10 Pro x64 version 2004, OS build 19041.508

--query-driver option on itself just specifies an allowed list of drivers to execute. The real driver paths are deduced from compile commands. Unfortunately compile_flags.txt has no way to specify the driver path, hence you need a compile_commands.json file, specifying C:\Compilers\MinGW\bin\gcc.exe as the driver for it to take effect.
Once it works you should see a log that looks like: System include extractor: successfully executed.

Ahhh, I see. I'll close the issue then, as it seems like this pretty much sums it up.
Thanks!

Does it mean that if we don't specify query-driver, there won't be any limitation?

no, it means clangd won't execute any drivers since an empty glob can't match any driver path.

Here is several case, could you check if my understanding is right?

No compile_commands.json, no query_driver option given, so clangd is not expected working?
Generate compile_commands.json via cmake but no query_driver option given, so cland will use compile specified in compile_commands.json, right?
No compile_commands.json but query_driver specified( clang for example), so at least clangd would work all right at least in term of c++ std library(#include <vector>), right?

Thanks for your reply!

To review:

The purpose of compile_commands.json is to provide clangd with include paths and other compiler flags (such as -D SYMBOL) needed to the files in the project. In practice this is needed for most real-world projects, but one can imagine a simple project (where, for example, all #include directives are expressed using paths relative to the current file, such that no -I flags are necessary) where it is not.
The purpose of --query-driver is to allow clangd to query another compiler driver for its built-in include paths. This is only necessary in cases where the build compiler uses different built-in include paths than clang (specifically, the clang from the same package as clangd) does -- usually, cross-compilation setups (e.g. build compiler targets embedded environment), but could be some others (e.g. mingw on windows).
--query-driver requires compile_commands.json, and the argument needs to match (more specifically, it needs to b e a glob which accepts) the compiler from compile_commands.json.

So, to answer your questions:

* No `compile_commands.json`, no query_driver option given, so clangd is not expected working?

Clangd will not query the compiler for its built-in include paths, but will use its own built-in include paths.
Clangd will not use any project-specific flags.
Whether or not the result "works" will depend on the project.

* Generate `compile_commands.json` via cmake but no query_driver option given, so cland will use compile specified in `compile_commands.json`, right?

Clangd will use the compile flags from the compile_commands.json, and its own built-in includes.

* No `compile_commands.json` but query_driver specified( `clang` for example), so at least clangd would work all right at least in term of c++ std library(`#include <vector>`), right?

This will be the same as the first scenario (clangd will use its own built-in include paths). To get clangd to query the built-in include paths of a different compiler, --query-driver needs to be used together with compile_commands.json.

Thanks for your detailed reply! I have one extra puzzles:
If i haven't installed clang, where does  the built-in include paths of clangd come from?   For example, i have gcc installed, but i don't generate a compile_commands.json file.

If i haven't installed clang, where does the built-in include paths of clangd come from?

I think they are compiled into the libclangDriver.so (or dll) library that ships with clangd and which clangd loads.
If you have a clang executable in the same directory as clangd, then running a command like:
echo | clang -x c++ -E -v -

should get clang to print them.

Thanks again for your help! My final understanding is that clangd will find include path(gcc or clang) via some library, and query-driver is some what rubbish

Yes, --query-driver is only needed in cases where the built-in include paths are not what you want for some reason (for example, they point to a standard library installation that's not present on your system, or one that's wrong for the target you're compiling for in a corss-compilation scenario).

To review:

The purpose of compile_commands.json is to provide clangd with include paths and other compiler flags (such as -D SYMBOL) needed to the files in the project. In practice this is needed for most real-world projects, but one can imagine a simple project (where, for example, all #include directives are expressed using paths relative to the current file, such that no -I flags are necessary) where it is not.
The purpose of --query-driver is to allow clangd to query another compiler driver for its built-in include paths. This is only necessary in cases where the build compiler uses different built-in include paths than clang (specifically, the clang from the same package as clangd) does -- usually, cross-compilation setups (e.g. build compiler targets embedded environment), but could be some others (e.g. mingw on windows).
--query-driver requires compile_commands.json, and the argument needs to match (more specifically, it needs to b e a glob which accepts) the compiler from compile_commands.json.

So, to answer your questions:

No compile_commands.json, no query_driver option given, so clangd is not expected working?

Clangd will not query the compiler for its built-in include paths, but will use its own built-in include paths.
Clangd will not use any project-specific flags.
Whether or not the result "works" will depend on the project.

Generate compile_commands.json via cmake but no query_driver option given, so cland will use compile specified in compile_commands.json, right?

Clangd will use the compile flags from the compile_commands.json, and its own built-in includes.

No compile_commands.json but query_driver specified( clang for example), so at least clangd would work all right at least in term of c++ std library(#include <vector>), right?

This will be the same as the first scenario (clangd will use its own built-in include paths). To get clangd to query the built-in include paths of a different compiler, --query-driver needs to be used together with compile_commands.json.

How to prevent clangd use it built-in lirary. Cause my include path should be in mingw64/include according to the compile_commands.json. However, the clangd gave me the headers from msvc.

How to prevent clangd use it built-in lirary. Cause my include path should be in mingw64/include according to the compile_commands.json. However, the clangd gave me the headers from msvc.

Using --query-driver as discussed above should cause clangd to use the built-in includes of your build compiler (e.g. mingw) rather than its own.

How to prevent clangd use it built-in lirary. Cause my include path should be in mingw64/include according to the compile_commands.json. However, the clangd gave me the headers from msvc.

Using --query-driver as discussed above should cause clangd to use the built-in includes of your build compiler (e.g. mingw) rather than its own.

For the love of God, could ANYONE from clangd dev team already write a reasonable documentation with all these small details?

We have a fair amount of coverage of this topic at https://clangd.llvm.org/guides/system-headers.
There is always room for further improvement / clarification. Clangd is an open-source project, anyone can propose a documentation (or other kind of) patch.

I did want to clarify something I said earlier in this thread:

If i haven't installed clang, where does the built-in include paths of clangd come from?

I think they are compiled into the libclangDriver.so (or dll) library that ships with clangd and which clangd loads.

This made it sound like the paths are hard-coded into libclangDriver, which I don't think is the case. Rather, I believe libclangDriver contains some logic for locating the built-in include paths relative to the path of the driver, and also taking into account the target.
This is discussed in more detail in https://clangd.llvm.org/guides/system-headers#heuristic-search-for-system-headers.

How to prevent clangd use it built-in lirary. Cause my include path should be in mingw64/include according to the compile_commands.json. However, the clangd gave me the headers from msvc.

Using --query-driver as discussed above should cause clangd to use the built-in includes of your build compiler (e.g. mingw) rather than its own.

OK. I've found the solution. use  --target=x86_64-w64-windows-gnu to specify the mingw library.

My two cents is that I was able to use --query-driver successfully after carefully reading the explanations of @HighCommander4 nad @kadircet . But boy could the documentation @ https://releases.llvm.org/10.0.0/tools/clang/tools/extra/docs/clangd/Configuration.html see improvements :-)
Anyway, my use case is the ESP-IDF embedded development toolkit and its esp32 family of toolchains, for example the c++ compiler of the esp32 toolchain usually lives at:
$HOME/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++
You may have  CMake project spitting out a super-precise compile_commands.json that references this very compiler:
...
{
  "directory": "/home/REDACTED/REDACTED/build/esp-idf/xtensa",
  "command": "/home/REDACTED/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -I/home/REDACTED/REDACTED/build/config -I/opt/esp-idf/components/xtensa/include -I/opt/esp-idf/components/xtensa/esp32/include -I/opt/esp-idf/components/newlib/platform_include -I/opt/esp-idf/components/freertos/FreeRTOS-Kernel/include -I/opt/esp-idf/components/freertos/esp_additions/include/freertos -I/opt/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -I/opt/esp-idf/components/freertos/esp_additions/include -I/opt/esp-idf/components/esp_hw_support/include -I/opt/esp-idf/components/esp_hw_support/include/soc -I/opt/esp-idf/components/esp_hw_support/include/soc/esp32 -I/opt/esp-idf/components/esp_hw_support/port/esp32/. -I/opt/esp-idf/components/esp_hw_support/port/esp32/private_include -I/opt/esp-idf/components/heap/include -I/opt/esp-idf/components/log/include -I/opt/esp-idf/components/soc/include -I/opt/esp-idf/components/soc/esp32/. -I/opt/esp-idf/components/soc/esp32/include -I/opt/esp-idf/components/hal/esp32/include -I/opt/esp-idf/components/hal/include -I/opt/esp-idf/components/hal/platform_port/include -I/opt/esp-idf/components/esp_rom/include -I/opt/esp-idf/components/esp_rom/include/esp32 -I/opt/esp-idf/components/esp_rom/esp32 -I/opt/esp-idf/components/esp_common/include -I/opt/esp-idf/components/esp_system/include -I/opt/esp-idf/components/esp_system/port/soc -I/opt/esp-idf/components/esp_system/port/include/private -mlong-calls -Wno-frame-address  -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fmacro-prefix-map=/home/REDACTED/REDACTED=. -fmacro-prefix-map=/opt/esp-idf=/IDF -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -DconfigENABLE_FREERTOS_DEBUG_OCDAWARE=1 -std=gnu17 -Wno-old-style-declaration -D_GNU_SOURCE -DIDF_VER=\\\"HEAD-HASH-NOTFOUND\\\" -DESP_PLATFORM -D_POSIX_READER_WRITER_LOCKS -o CMakeFiles/__idf_xtensa.dir/eri.c.obj -c /opt/esp-idf/components/xtensa/eri.c",
  "file": "/opt/esp-idf/components/xtensa/eri.c",
  "output": "esp-idf/xtensa/CMakeFiles/__idf_xtensa.dir/eri.c.obj"
},

You'd think it is enough, but it's not, and that's where -query-driver comes in.  Eventually, one of these includees will look for a machine/endian.h which is located relative to a system include that only the xtensa-esp32-elf-g++ compiler knows about.  So you must whitelist the compiler by passing a suitable glob to -query-driver.   I just passed "lazy" glob "**" which worked fine, starting clangd from Emacs (eglot client) with
clangd --query-driver=**

EDIT: After typing this I realized that this is still not enough.  See the -mlong-calls argument there?  I had to change it manually from -mlongcalls across the whole compile_commands.json.  The compilation line itself seems fine. AFAIK the xtensa-esp32-elf-gcc in question groks -mlongcalls, but clangd doesnt.  It reports this:
clang [drv_unknown_argument_with_suggestion]: Unknown argument '-mlongcalls'; did you mean '-mlong-calls'?

Maybe this is not related to --query-driver at all and there is a separate option to fix this.  I'll investigate.

But boy could the documentation @ https://releases.llvm.org/10.0.0/tools/clang/tools/extra/docs/clangd/Configuration.html see improvements :-)

That documentation is for llvm 10.0, which was 6 releases ago.
The corresponding link for the latest release, llvm 16.0 (https://releases.llvm.org/16.0.0/tools/clang/tools/extra/docs/clangd/Configuration.html) redirects to the clangd website (https://clangd.llvm.org/), where we have more detailed documentation, including of --query-driver at https://clangd.llvm.org/guides/system-headers#query-driver.
Further improvements to the documentation, or suggestions for how to make it more discoverable, are always welcome.

That documentation is for llvm 10.0, which was 6 releases ago.

Whoops sorry. In my defense that's what Google turned up for "Clangd query-driver".
The new documentation seems much better at first sight, though there are still a couple of points i don't understand, abs and others that maybe be improved, such as how to be able to tell that querying is kicking in and exactly how. But I'll come back later with more notes after more experiments.
Thanks very much for the correction and Clangd in general.

Using --query-driver as discussed above should cause clangd to use the built-in includes of your build compiler (e.g. mingw) rather than its own.

I'm not seeing this behavior with clangd version 13.0.1:
clangd --query-driver=/opt/rh/devtoolset-11/root/usr/bin/g++ --check=/home/user/project/source.hpp
---
Compile command from CDB is: /opt/rh/devtoolset-11/root/usr/bin/c++ --driver-mode=g++ <flags from compile_commands.json> -resource-dir=/opt/rh/llvm-toolset-13.0/root/usr/lib64/clang/13.0.1 -- /home/user/project/source.hpp
---
internal (cc1) args are: -cc1 -triple x86_64-redhat-linux-gnu -fsyntax-only -disable-free -disable-llvm-verifier -discard-value-names -main-file-name LWM2MListener.hpp -mrelocation-model static -mframe-pointer=all -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -tune-cpu generic -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fcoverage-compilation-dir=/home/user/project/build -resource-dir /opt/rh/llvm-toolset-13.0/root/usr/lib64/clang/13.0.1 <flags from compile_commands.json> -internal-isystem /opt/rh/llvm-toolset-13.0/root/usr/lib64/clang/13.0.1/include -internal-isystem /usr/local/include -internal-externc-isystem /include -internal-externc-isystem /usr/include <more from compile_commands.json> -fdebug-compilation-dir=/home/user/project/build -ferror-limit 19 -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -x c++-header /home/user/project/source.hpp

i don't see any indication anywhere that clangd is accessing the headers in /opt/rh/devtoolset-11

Using --query-driver as discussed above should cause clangd to use the built-in includes of your build compiler (e.g. mingw) rather than its own.

I'm not seeing this behavior with clangd version 13.0.1:
clangd --query-driver=/opt/rh/devtoolset-11/root/usr/bin/g++ --check=/home/user/project/source.hpp
---
Compile command from CDB is: /opt/rh/devtoolset-11/root/usr/bin/c++ --driver-mode=g++ <flags from compile_commands.json> -resource-dir=/opt/rh/llvm-toolset-13.0/root/usr/lib64/clang/13.0.1 -- /home/user/project/source.hpp
---
internal (cc1) args are: -cc1 -triple x86_64-redhat-linux-gnu -fsyntax-only -disable-free -disable-llvm-verifier -discard-value-names -main-file-name LWM2MListener.hpp -mrelocation-model static -mframe-pointer=all -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -tune-cpu generic -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fcoverage-compilation-dir=/home/user/project/build -resource-dir /opt/rh/llvm-toolset-13.0/root/usr/lib64/clang/13.0.1 <flags from compile_commands.json> -internal-isystem /opt/rh/llvm-toolset-13.0/root/usr/lib64/clang/13.0.1/include -internal-isystem /usr/local/include -internal-externc-isystem /include -internal-externc-isystem /usr/include <more from compile_commands.json> -fdebug-compilation-dir=/home/user/project/build -ferror-limit 19 -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -x c++-header /home/user/project/source.hpp

i don't see any indication anywhere that clangd is accessing the headers in /opt/rh/devtoolset-11

Try --query-driver=/opt/rh/devtoolset-11/root/usr/bin/c++; it needs to match the argv[0] of the compile command.

Try --query-driver=/opt/rh/devtoolset-11/root/usr/bin/c++; it needs to match the argv[0] of the compile command.

that was it. thanks!

I have one more use-case. I'm currently working on the project which is being built in a specially configured container. The build/compile_commands.json is being generated during the build. The GNU C compiler is being used to compile the sources, but because the includes are more or less different inside vs outside of the container, the clangd can't find/parse all the inclusions. I even copied the headers from the container, but I doesn't see a way how to make the clangd to search within them. The --query-driver option looks useless in such a case because the compilers' paths are the same inside and outside of the container. I tried to play with -isysroot option, but it gives nothing.
So, it would be nice if someone give me the right direction to achieve the goal.


[T2A2][T11-A1]Shailesh Nahata

Ready for review

This PR should be against nus-cs2103-AY1617S1 :-)
Closing...


Send info about function values to the IDE

Based on language server API discussion, analysis while working on bug 6903 and request for changes in #6939 I am proposing following path forward:
ProgramExecutionSupport.scala needs to do following when composing sendExpressionUpdate:

when the value.getType is Standard.Builtins.Main.Function
accompany the information with a MethodPointer to the function definition
use (value.value : runtime.Function).getSchema() to obtain hasPreApplied array and send it to the IDE somehow

This fixes problems with partially applied constructors and functions and lets the IDE know what arguments have already been applied sooner when Function value arrives. The IDE however needs to process this additional information somehow.

The #6939 is already doing what you are proposing:
https://github.com/enso-org/enso/blob/c9999b1149e8cf87784ac886bcae340d93c5e713/engine/runtime-instrument-id-execution/src/main/java/org/enso/interpreter/instrument/IdExecutionInstrument.java#L328-L330

(line 328) When the value is a function
(line 329) Accompany the information with a MethodPointer (it is represented as a FunctionCallInfo)
(line 330) use function.getSchema() to obtain hasPreApplied array. The FunctionCallInfo constructor does exactly this:
https://github.com/enso-org/enso/blob/c9999b1149e8cf87784ac886bcae340d93c5e713/engine/runtime/src/main/java/org/enso/interpreter/instrument/IdExecutionService.java#L318-L328

The #6939 is already doing what you are proposing:

Kind of, but not exactly:

It is great to see we can convert a result instanceof Function into correct data that the IDE needs
I still see  if (constructorCalls.contains(nodeId) in #6939 and that is superfluous

Each result instanceof Function shall be sent to the IDE as FunctionCallInfo and it doesn't matter where it is originating from - whether it is a result of applying a constructor or calling a function. Such detailed information about the result instanceof Function has to be delivered as soon as possible without forcing the IDE to perform any textual edits. Particularly interesting test case is:
fn = Text.trim where=Location.End
fn

Will the code currently proposed in #6939 deliver FunctionCallInfo information about fn to the IDE?

This issue was addressed in #6867 by sending the list of not applied arguments together with the method pointer. #6939 is a follow-up to that PR and is only supposed to send the correct arguments in case of constructor calls.

One more example that illustrates the problem with value vs. executed function:

The program "hides" the Text.trim function inside of Pair and then obtains it as Pair.second later. It is still the same Text.trim function - e.g. the IDE shall offer list of not yet applied arguments. It should offer where and what, in my opinion.

This case shall continue to work the same way it works now:

Think about ... operator:

Summary of the discussion with @Frizi and @JaroslavTulach
IDE needs additional information to display the placeholders for the arguments of partially applied functions.

When the return value is a function, the Payload of ExpressionUpdate should provide additional MethodCall information (MethodPointer + argument infos)
In case of the complex expression  Pair.Value 1 2

When the Pair.Value subexpression is annotated, it returns an ExpressionUpdate with a function return type and a payload containing the method call information of the returned function


fix: IOU - Disabled tag is greyed in list but disabled category is shown bold in list.

Details

Fixed Issues
$ https://github.com/Expensify/App/issues/36485
PROPOSAL: https://github.com/Expensify/App/issues/36485#issuecomment-1943884263
Tests

Launch app as employee
Create a manual request > Enter amount > Select employee workspace chat
Enter merchant > Select any category > Create request
In admin account, disable the category used to create above expense
In employee account, in Workspace chat, open the newly created request to open details page.
Open category edit page by clicking on the category
Verify disabled category is visible
Search for the category and verify disabled category is appears in the search result with the checkmark
Change category to any other option > Search for the changed category
Verify category is appears in the search result with the checkmark

[x] Verify that no errors appear in the JS console

Offline tests

Launch app as employee
Create a manual request > Enter amount > Select employee workspace chat
Enter merchant > Select any category > Create request
In admin account, disable the category used to create above expense
In employee account, in Workspace chat, open the newly created request to open details page.
Open category edit page by clicking on the category
Verify disabled category is visible
Search for the category and verify disabled category is appears in the search result with the checkmark
Change category to any other option > Search for the changed category
Verify category is appears in the search result with the checkmark

QA Steps

Launch app as employee
Create a manual request > Enter amount > Select employee workspace chat
Enter merchant > Select any category > Create request
In admin account, disable the category used to create above expense
In employee account, in Workspace chat, open the newly created request to open details page.
Open category edit page by clicking on the category
Verify disabled category is visible
Search for the category and verify disabled category is appears in the search result with the checkmark
Change category to any other option > Search for the changed category
Verify category is appears in the search result with the checkmark

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native
https://github.com/Expensify/App/assets/85894871/ddcbe525-ea93-47cf-bc3f-55d8898cdbc7

Android: mWeb Chrome
https://github.com/Expensify/App/assets/85894871/0792b4a6-0434-41f0-be40-8fb9abc30730

iOS: Native
https://github.com/Expensify/App/assets/85894871/28745c33-98bf-4955-bfef-7fe1d3bd3a79

iOS: mWeb Safari
https://github.com/Expensify/App/assets/85894871/0c54c7a1-0123-41bf-a05e-bf063e138df9

MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/85894871/88cecc41-6b55-4182-b067-ac4c6951ee75

MacOS: Desktop
https://github.com/Expensify/App/assets/85894871/6dac9460-7907-445d-8a5b-cd29fb73a281

Not sure what is the best approach here. @dangrous Can you take a look at this.
I am leaning towards modifying SelectionList to show items greyed when they are disabled. But it will affect whole app and change its design slightly

Yeah I think we should probably grey it out, it isn't super clear if it's only the cursor style. We should just do a set of testing to see if there's anywhere else it shows up greyed out unexpectedly - I think overall it's a clearer UI, though.

@Krishna2323 Can you resolve conflicts

Thank you, I will update our next options acordingly

Hrm I might bring in @Expensify/design to confirm what the expected UX for disabled categories/tags is. @alitoshmatov / @Krishna2323 can you clarify what currently happens (without any changes made here) to make sure it's correct?
And then yeah I think we can roll in that new issue you found.

Currently, you have money request and specific category and tag is selected for this. If you disabled that selected category and/or tag from OD and in ND open categories or tag in money request disabled tags appear as normal(previously they were grayed out and mouse was disabled).
Note: Not disabling cursor kinda makes sense, since you can just click on that category or tag to unselect it without selecting new item

Is this in any way related to this convo we recently had in Slack about disabled categories?
Basically disabled categories (or tags) that are currently selected should look disabled, still have the checkmark, and the user should be able to interact with it only to remove the selection. Once the selection has been removed, I don't think the disabled category (or tag) would show up in the list anymore. Does that sound right @shawnborton?

For comparison
Then:

Now:

Basically disabled categories (or tags) that are currently selected should look disabled, still have the checkmark, and the user should be able to interact with it only to remove the selection. Once the selection has been removed, I don't think the disabled category (or tag) would show up in the list anymore. Does that sound right @shawnborton?

That makes sense to me, though I guess we'd still show the selected BG color on the row too right?

though I guess we'd still show the selected BG color on the row too right?

Yeah I think we would.

Are you clear on how to move forward @alitoshmatov ? Let us know and if not we can figure out how to clarify!

Hm, yeah, I think we should probably update both. Do you mind posting in the issue and we can involve the BZ team in any update on pricing?

Commented on the issue, @Krishna2323 can you please keep this PR moving along, another issue is held on it.  Thx

@Krishna2323 Can you check recording below, disabled tag is not showing even if it was selected
https://github.com/Expensify/App/assets/59907218/48534bef-d6b1-460f-b57f-1de324a607e0

Reviewer Checklist

[x] I have verified the author checklist is complete (all boxes are checked off).
[x] I verified the correct issue is linked in the ### Fixed Issues section above
[x] I verified testing steps are clear and they cover the changes made in this PR

[x] I verified the steps for local testing are in the Tests section
[x] I verified the steps for Staging and/or Production testing are in the QA steps section
[x] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I checked that screenshots or videos are included for tests on all platforms
[x] I included screenshots or videos for tests on all platforms
[x] I verified tests pass on all platforms & I tested again on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[x] I verified proper code patterns were followed (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I verified that this PR follows the guidelines as stated in the Review Guidelines
[x] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native
https://github.com/Expensify/App/assets/59907218/a082e30a-7008-4427-b260-f242921d6439

Android: mWeb Chrome

iOS: Native
https://github.com/Expensify/App/assets/59907218/799e5786-c811-4c73-864c-7033f667ec19

iOS: mWeb Safari
https://github.com/Expensify/App/assets/59907218/ee5cf09a-a074-41c7-9971-4b12f961fb9a

MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/59907218/4c497254-5502-4d1a-8c16-5c1d089fb721

MacOS: Desktop
https://github.com/Expensify/App/assets/59907218/af5176a1-7562-437e-959d-2fa46d5de8ae

Cool! That makes sense to me.

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/dangrous in version: 1.4.72-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


No way to re-enter previous name/variable-scoped context

As far as I can tell, there is no way to re-enter the same name_scope or variable_scope (once closed) without the name being "unique-ified."
The example in the docs shows how to re-enter the original scope from within a nested scope - but not when context is closed.
Perhaps this could be solved by enabling access to the scope reference as tf.Variable.scope ?
Current hack-y workaround is to manually specify variable name as "{}/name".format(previous_scope_name)

It is actually possible to re-enter a closed variable scope, as in the example below.
with tf.variable_scope('test') as vscope: pass
with tf.variable_scope(vs) as vscope_:
     assert vscope.name == vscope_.name

However, the re-entered variable scope does not copy the reuse status of the original one.

@gaohuazuo hmmm that assert statement returns True (as long as you are consistent about vscope vs vs); however...
with tf.variable_scope('foo') as vs:
    x = tf.Variable([1])
with tf.variable_scope(vs) as vs_:
    assert vs.name == vs_.name
    y = tf.Variable([1])
x.name
>>> u'foo/Variable:0'
y.name
>>> u'foo_1/Variable:0'

with corresponding non-overlapping name-scopes in tensorboard. This is not changed by passing reuse = True.

Anyway, if possible I think it would be useful to be able to access name-scope of a given variable....without writing a (simple but) hacky regex. The current approach I am using to build layers in a more functional manner does not lend itself to the workflow described above.

@ebrevdo: @meereeum's example with y.name == 'foo_1/Variable:0' looks like a bug.  Could you take a look?

Have you tried saving the scope object and reopening it later?
with tf.variable_scope(...) as vs:
...
Later:
with tf.variable_scope(vs):
...

I'm working on a CL/PR that at least adds the name scope to variable scope. Will report back here once that's in.

A recent CL correcting this is now live on master. It includes a unit test that re-enters a variable scope and the original name scope this variable scope was created in (by using the new .original_name_scope property). See here: variable_scope_test. Closing this now, please re-open or make a new issue if you find more problems!


319 marshaling maps

Restructured the functions so they're easier to use
I was missing a check for maps of structs that required custom calls to their FilterJSON functions

Example Struct Code:
// Note: The methods are on the base struct, not a pointer to it.
// Go only checks in one direction for a MarshalJSON / UnmarshalJSON function.

// Called when calling json.Marshal(struct)
func (o MyStruct) MarshalJSON() ([]byte, error) {
    exclude := map[string]bool{}
    // exclude := map[string]bool{"Account.EthAddress": true} will filter EthAddress from Account field
    return marshal.ToJSON(o, exclude)
 }

func (o MyStruct) JSONFilter(exclude map[string]bool) (res map[string]interface{}, err error) {
    // This is called by marshal.ToJSON and used to reformat the struct if needed.
    // Do any fancy stuff you need to do here: change a map to a slice, reformat the struct, etc.
    // Anything you add to exclude will ALWAYS be added when this struct is marshaled
	return marshal.JSONFilter(o, exclude)
}

// Example of using specialNames
MyStruct struct {
    *models.EthAccount
    Balance int `json:"current_balance,omitempty"`
}

func (o MyStruct) UnmarshalJSON(data []byte) error {
    specialNames := map[string]string{
    	"current_balance": "Balance",
	}
    return marshal.UnmarshalWrapper(o, data, specialNames)
 }

P.S. I thought we could just build it out of vendor/.../sqlboiler but I don't see main.go in there :thinking:

We can tag builds and make the Gopkg.toml ask for the tag rather than the master branch.
Dep might be pruning some files if you don't see them. You can toggle that off in the toml file, like I did for the go-ethereum libraries.

You can toggle that off in the toml file, like I did for the go-ethereum libraries.

:smiley_cat: :clap:
I think that's what we need! :)
Then we just need to make sure we use the vendor sqlboiler binary ... maybe build it into app? so we can
cd app
./sqlboiler --wipe postgres
Would that work or is the basedir (template dir) relative to the binary?


[bug] ios xcode build Archive: Command PhaseScriptExecution failed with a nonzero exit code

Describe the bug
After updating the tauri version recently, the build on xcode failed and PhaseScriptExecution occurred, and every yarn tauri ios build would overwrite the "signing&capabilities" I manually set. This may be a different issue, but it all comes from updating the tauri version. The last successful build was rc.1, and my xcode version is 15.4. I think there is a lack of certificate configuration matching xode in "tauri. ios. conf. json"
Reproduction
No response
Expected behavior
No response
Full tauri info output
[✔] Environment
    - OS: Mac OS 14.5.0 arm64 (X64)
    ✔ Xcode Command Line Tools: installed
    ✔ rustc: 1.77.0 (aedd173a2 2024-03-17)
    ✔ cargo: 1.77.0 (3fe68eabf 2024-02-29)
    ✔ rustup: 1.27.0 (bbb9276d2 2024-03-08)
    ✔ Rust toolchain: stable-aarch64-apple-darwin (default)
    - node: 18.20.4
    - pnpm: 8.10.5
    - yarn: 1.22.17
    - npm: 8.19.4

[-] Packages
    - tauri 🦀: 2.0.0-rc.8
    - tauri-build 🦀: 2.0.0-rc.7
    - wry 🦀: 0.41.0
    - tao 🦀: 0.29.1
    - @tauri-apps/api : 2.0.0-rc.4
    - @tauri-apps/cli : 2.0.0-rc.8

Stack trace
yarn run v1.22.17
$ tauri ios xcode-script -v --platform iOS --sdk-root /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.5.sdk --framework-search-paths '/Users/lindongchen/Library/Developer/Xcode/DerivedData/ztm-ggjzuydginvgnvapqbjuhckazfxh/Build/Products/debug-iphoneos  "."' --header-search-paths '/Users/lindongchen/Library/Developer/Xcode/DerivedData/ztm-ggjzuydginvgnvapqbjuhckazfxh/Build/Products/debug-iphoneos/include ' --gcc-preprocessor-definitions ' DEBUG=1' --configuration debug arm64
    Debug [jsonrpsee-client] Connecting to target: Target { host: "<IP_ADDRESS>", host_header: "<IP_ADDRESS>:59087", _mode: Plain, path_and_query: "/", basic_auth: None }
    Debug [jsonrpsee-client] Failed to connect to sockaddr: <IP_ADDRESS>:59087
    Debug [jsonrpsee-client] Connecting to target: Target { host: "<IP_ADDRESS>", host_header: "<IP_ADDRESS>:59087", _mode: Plain, path_and_query: "/", basic_auth: None }
    Debug [jsonrpsee-client] Connecting to target: Target { host: "<IP_ADDRESS>", host_header: "<IP_ADDRESS>:59087", _mode: Plain, path_and_query: "/", basic_auth: None }
    Debug [jsonrpsee-client] Connecting to target: Target { host: "<IP_ADDRESS>", host_header: "<IP_ADDRESS>:59087", _mode: Plain, path_and_query: "/", basic_auth: None }
    Debug [jsonrpsee-client] Connecting to target: Target { host: "<IP_ADDRESS>", host_header: "<IP_ADDRESS>:59087", _mode: Plain, path_and_query: "/", basic_auth: None }
thread '<unnamed>' panicked at crates/tauri-cli/src/mobile/mod.rs:243:6:
failed to read CLI options: Error when opening the TCP socket: Connection refused (os error 61)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
error Command failed with signal "SIGABRT".
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
**Command PhaseScriptExecution failed with a nonzero exit code**

Additional context
No response

the same error

can you share a reproduction example? I can fix the "CLI is overwriting the manual signing" but for the rest i need more information. What's the error message?


Add Support for SBOM Diff

It would be useful for the tool to be able to compare two SBOM and generate a diff report.
This would be handy for reviewing upgrades quickly, especially if the output can (optionally?) be in a "terse" format.
The diff report is something that could then be attached to a PR as evidence.
Use case: I have maven projects that use dropwizard-BOM POM import in dependencyManagent.  Thus, a commit that tweaks nothing at all except the dropwizard version can have a big impact on dependencies and transitive dependencies...  all of which would be revealed in an SBOM  diff.

For initial implementation I'm thinking something like this...
cyclonedx-cli diff components --from-file software-v1.0.xml --to-file software-v1.1.xml

-<EMAIL_ADDRESS>+<EMAIL_ADDRESS>
Other use cases might include checking for changes in dependency licenses.
Maybe something like this...
cyclonedx-cli diff licenses --from-file software-v1.0.xml --to-file software-v1.1.xml

+ GPL-3.0-or-later

And this feature, especially the license diff, might be well served by a fail on changes parameter.
Thinking something like this running as part of a "license check" for PRs...
cyclonedx-cli diff licenses --from-file previous-release.xml --to-file current-build.xml --fail-on-changes

+ GPL-3.0-or-later

Another thought, maybe this should focus more on new things.
i.e. --new-supplier, --new-component, --new-component-version, --new-license options?

Depending on how the output is formatted, a simple component diff could also be used to identify new components....right?
All of the options identified are useful.  I think that usage will depend on the situation.  For instance, when working on a development branch of a project, one would want to know all about license diffs.  When comparing a BOM from (say) an "Integration Environment" with what is running in "Production Environment", then I would very much want to know all about component diffs.  How out of date is production?

Initial support for component version diffs is available in v0.9.0


fix(bindNodeCallback): properly set context of input function

Description:
Set context of input function to context of output function, so that
context can be controlled at call time and underlying observable is
not available in input function
Related issue (if exists):
Detailed description in another pr, where situation is basically identical:
https://github.com/ReactiveX/rxjs/pull/2319

Coverage increased (+0.0003%) to 97.689% when pulling b4b70c68486811e66bc77f938831028ab653425e on Podlas29:bind-node-callback-this into faabd3eaa4e7328bdd503f331dbdf9d1aa80c83b on ReactiveX:master.


Name not valid error

Getting the following error on executing the binary after successful build.
[2024-02-06 07:13:15.731] [error] locale::facet::_S_create_c_locale name not valid

@amad-haseeb: Are you using the latest code?

Yes, cloned the repo about an hour ago.
Since the git clone --recursive git@github.com:iamazeem/spdlog-vs-zlog.git was not working, so used the links in .gitmodules to clone the repos.

@amad-haseeb: Are you using the latest code?

Please reclone it with the HTTPS URL. Fixed under #2.
LMK if you face the same issue again.
IIRC, the locale issue has already been fixed.

Please reclone it with the HTTPS URL. Fixed under #2. LMK if you face the same issue again. IIRC, the locale issue has already been fixed.

Issue persist even after re-cloning.

What's your OS and compiler version?

compiler: g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
OS:
Description:	Ubuntu 22.04.3 LTS
Release:	22.04
Codename:	jammy

Looks like a language configuration issue on your machine.
See https://stackoverflow.com/a/19114298/7670262.
Apparently, running this command should fix your issue:
sudo locale-gen en_US en_US.UTF-8

Looks like a language configuration issue on your machine. See https://stackoverflow.com/a/19114298/7670262.
Apparently, running this command should fix your issue:
sudo locale-gen en_US en_US.UTF-8

Got this error sudo: locale-gen: command not found on executing this command.
Binary compiled successfully after installing locales and then executing the above command.
Thanks.


proposal -- add colorbrewer palettes as a color option for points, polygons and lines

add colorbrewer schemes to color:
layers:
    counties:
        polygon:
            color: OrRd[2]

https://github.com/axismaps/colorbrewer/
hex is here, for reference:
https://github.com/google/palette.js/blob/master/palette.js#L931

This is interesting. We would probably first prototype it via import-able building blocks and/or in Tangram Play before deciding if it made sense to include in the core. There have also been requests to be able to use D3's existing modules for palette/scale generation, so some general thought about the best way to enable this type of thing is in order.


ORIGIN.md

Create an origin story. Inspired by @machikoyasuda

@machikoyasuda feedback please: https://github.com/jdorfman/awesome-json-datasets/blob/8bf49dc4a927afdef5eb79dfdf876ad39adf0f4d/ORIGIN.md


Config parameters for training vocos with 22.05 kHz

Hi!
If it is possible to train vocos with 22.05 kHz I would like to see config parameters, because my attempt has failed.
I have the following config:
# pytorch_lightning==1.8.6
seed_everything: 4444

data:
  class_path: vocos.dataset.VocosDataModule
  init_args:
    train_params:
      filelist_path: /home/yehor/Work/github/vocos/tetiana-dataset/filelist.train
      sampling_rate: 22050
      num_samples: 15053
      batch_size: 16
      num_workers: 8

    val_params:
      filelist_path: /home/yehor/Work/github/vocos/tetiana-dataset/filelist.val
      sampling_rate: 22050
      num_samples: 44453
      batch_size: 16
      num_workers: 8

model:
  class_path: vocos.experiment.VocosExp
  init_args:
    sample_rate: 22050
    initial_learning_rate: 2e-4
    mel_loss_coeff: 45
    mrd_loss_coeff: 0.1
    num_warmup_steps: 0 # Optimizers warmup steps
    pretrain_mel_steps: 0  # 0 means GAN objective from the first iteration

    # automatic evaluation
    evaluate_utmos: false
    evaluate_pesq: false
    evaluate_periodicty: false

    feature_extractor:
      class_path: vocos.feature_extractors.MelSpectrogramFeatures
      init_args:
        sample_rate: 22050
        n_fft: 1024
        hop_length: 256
        n_mels: 80
        padding: center

    backbone:
      class_path: vocos.models.VocosBackbone
      init_args:
        input_channels: 80
        dim: 512
        intermediate_dim: 1536
        num_layers: 8

    head:
      class_path: vocos.heads.ISTFTHead
      init_args:
        dim: 512
        n_fft: 1024
        hop_length: 256
        padding: center

trainer:
  logger:
    class_path: pytorch_lightning.loggers.TensorBoardLogger
    init_args:
      save_dir: logs/
  callbacks:
    - class_path: pytorch_lightning.callbacks.LearningRateMonitor
    - class_path: pytorch_lightning.callbacks.ModelSummary
      init_args:
        max_depth: 2
    - class_path: pytorch_lightning.callbacks.ModelCheckpoint
      init_args:
        monitor: val_loss
        filename: vocos_checkpoint_{epoch}_{step}_{val_loss:.4f}
        save_top_k: 3
        save_last: true
    - class_path: vocos.helpers.GradNormCallback

  # Lightning calculates max_steps across all optimizer steps (rather than number of batches)
  # This equals to 1M steps per generator and 1M per discriminator
  max_steps: 2000000
  # You might want to limit val batches when evaluating all the metrics, as they are time-consuming
  limit_val_batches: 100
  accelerator: gpu
  strategy: ddp
  devices: [0]
  log_every_n_steps: 100

Fails with the following error:
  File "/home/yehor/Work/github/vocos/vocos/experiment.py", line 142, in training_step
    loss_fm_mp = self.feat_matching_loss(fmap_r=fmap_rs_mp, fmap_g=fmap_gs_mp) / len(fmap_rs_mp)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/yehor/Tools/anaconda3/envs/vocos/lib/python3.11/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
    return forward_call(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/yehor/Work/github/vocos/vocos/loss.py", line 112, in forward
    loss += torch.mean(torch.abs(rl - gl))
                                 ~~~^~~~
RuntimeError: The size of tensor a (837) must match the size of tensor b (825) at non-singleton dimension 2

Okay... I figured out that it is because num_samples values, but how to calculate them exactly?

I see, it's because duration of files, not because of num_samples values. Removed files which are less 1 sec and more than 15 sec.

Here is my script to filter our bad files:
import librosa

TRAIN = '/home/yehor/Work/github/vocos/tetiana-dataset/filelist.train'
VAL = '/home/yehor/Work/github/vocos/tetiana-dataset/filelist.val'

TRAIN_FIXED = '/home/yehor/Work/github/vocos/tetiana-dataset/filelist_fixed.train'
VAL_FIXED = '/home/yehor/Work/github/vocos/tetiana-dataset/filelist_fixed.val'

SR = 22050

MIN_DURATION = 1
MAX_DURATION = 15

with open(TRAIN) as f:
    filelist = f.read().splitlines()
    for audio_path in filelist:
        dur = librosa.get_duration(filename=audio_path, sr=SR)
        if dur < MAX_DURATION and dur > MIN_DURATION:
            with open(TRAIN_FIXED, 'a') as f:
                f.write(audio_path + '\n')

with open(VAL) as f:
    filelist = f.read().splitlines()
    for audio_path in filelist:
        dur = librosa.get_duration(filename=audio_path, sr=SR)
        if dur < MAX_DURATION and dur > MIN_DURATION:
            with open(VAL_FIXED, 'a') as f:
                f.write(audio_path + '\n')


OUT training empty

I tried to train ocropus with synthetic data and with html corrections.
In both case the OUT always is empty with ' ' varying the length.
What I doing wrong?
 Typically the first ~100 steps will lead to empty output, but then it should start to recognize spaces and after ~250 steps also some characters (e.g. e, a, n) and so on.

Thanks for the quick reply @zuphilip  I tried with this: ./ocropus-rtrain -o firstModel linegen//.bin.png

Please try first
./run-rtrain

to see whether training with the test data (images and ground truth data) is working. Afterwards, we can continue to look at your data.

Ok @zuphilip I started ./run-rtrain now it's necessary to wait some hours. There are some parameter to improve this process? Because it's too slow.
 It's correct?

This seems that you learned this one line perfectly. So far so good. In general you want to learn a lot of different lines. And training can take some time.

Good news! My rtrain still running but the ./run-train no.  Stopped with the stack below.
What's the best way to train? Because I generated a simple tree lines with linegen.
---Stack
oops, got FloatingPointError overflow encountered in exp
Traceback (most recent call last):
File "./ocropus-rtrain", line 296, in
network = load_lstm(last_save)
File "./ocropus-rtrain", line 182, in load_lstm
network = ocrolib.load_object(last_save)
File "/home/ubuntu/ocropy/source/ocrolib/common.py", line 436, in load_object
fname = ocropus_find_file(fname)
File "/home/ubuntu/ocropy/source/ocrolib/common.py", line 639, in ocropus_find_file
full = os.path.join(prefix, basename, fname)
File "/usr/lib/python2.7/posixpath.py", line 68, in join
if b.startswith('/'):
AttributeError: 'NoneType' object has no attribute 'startswith'

Hy,
Something is very wrong on my setup or I made serious mistake about the training process. My training generate 41 pyrnn.gz files but the recognition doesn't work on the contrary was worse than the english recognize.
In some case the pyrnn.gz generate this output
File "./ocropus-rpred", line 264, in safe_process1
return process1(arg)
File "./ocropus-rpred", line 220, in process1
ocrolib.write_text(base+".txt",pred)
File "/home/ubuntu/ocropy/source/ocrolib/common.py", line 107, in write_text
if not nonl and text[-1]!='\n':
IndexError: string index out of range


Feature: Magnet download

Appreciate to add magnet download feature. tqsm

hi @tombak2011, you can add (paste) magnet links to the Add-Torrent window, is this what you mean? There is a field 'Torrent URL' where you can add it


Contextual tabs: fix issue with two task panes getting displayed

Q
A

Bug fix?
yes

New feature?
no

New sample?
no

Related issues?
no

What's in this Pull Request?
Fixes a bug in the contextual tabs sample where if the task pane is displayed, and you select the "Show task pane" button on the "Table Data" contextual tab, you end up with the same task pane displayed twice.
With this fix it only ever shows the 1 task pane.
Solution is to not reference an id or URL location in the JSON (which sends an intent to launch a different task pane rather than default.)

Hi @aafvstam, this PR fixes the issue you saw where two task panes get displayed, instead of the single one.


Changes in documentation

In reference to issue #8
Unfortunately, I wasn't able to summarize the mentioned theories to my satisfaction, will try to do so at a later date

🎉 Thanks for your interest in contributing to Primality
Hello @AkshayaKulasekaran!
I just reviewed the request, it looks good!
There seem to be a minor issue in the provided links, as they do not correspond to the correct source.
For example, the third quote references the OEIS Foundation but the url redirects to Wikipedia.
I suggest the provided link to each of the citations comes from each of the following websites respectively:

For the first source: https://dl.acm.org/
For the second source: https://www.ams.org/
For the third source: https://oeis.org/

If you have trouble finding the correct sources, you can let me know by removing the hyperlinks and adding this change to your fork. If that is the case, I will move foward with the request and the correct sources shall be added on a later date.
Thank you!

Heya @nbcl!
So sorry for the delay, I've redone the links in THEORY.md
Also, @thisisjaymehta, that's actually the mark-up for ordered lists, so yeah... 😅

Bullets should say 1,2 and 3 instead of 1,1 and 1 in Theory Subsection
Check out the rich text, it should be a bit clearer

Ah, one more thing... the modified links redirect to the general website, while the previous ones redirect to the specific papers/ info about those papers. Just pointing that out, in case that wasn't what you wanted.

Hello @AkshayaKulasekaran!
I think there was a small misunderstandment, my apologies.
When I suggested, for example, https://www.ams.org/ as a source, I didn't mean that exact site, I meant the source document hosted on that specific site.
A correct citation should look similar tohttps://www.ams.org/documents/source.pdf, where source.pdf represents the document you are trying to cite.
Again, if you encounter problems finding the specific sources, I would suggest to remove the hyperlinks so we can move forward with the request! This being the case, the exact sources shall be added on a later date.
Thank you!

@nbcl, I was able to find the links, I've updated them accordingly


Admin Dashboard Reports - Downloads Section (Generate Reports)

Part of https://github.com/opencollective/opencollective/issues/4300
Design file: Figma

Front-end

[ ] Add period filter PeriodFilter
[ ] Add filter by collective (use CollectivePicker.js)
[ ] Add filter that allow to download contributors info for a hosts

API

[ ] Use the new CSV REST endpoint (https://github.com/opencollective/opencollective-api/pull/6576)
[ ] Check if CSV service supports filtering by collectives, implement if needed
[ ] Add query to download contributors information for hosts. We need to discuss which information is needed in the report? 🤔
[ ] The above contributors query should be filterable by account

Notes: It was decided that we will implement reports for the transactions section for the moment. Also maybe we’ll skip this section MVP; https://docs.google.com/document/d/1RwC8agICM9CL0IBM9-dtpO2fGPxGKSy5z4hUDdyV-B8/edit

@Betree : I wasn't exactly sure on some points on this one,

We may want to remove the override the filters section for this issue for now since we are only focusing on reports for the transactions section. Does that make sense?

Our notes suggest a REST endpoint for the CSV report; https://docs.google.com/document/d/1RwC8agICM9CL0IBM9-dtpO2fGPxGKSy5z4hUDdyV-B8/edit. But my thinking is that we call the REST endpoint via the getTransactionsCsv method introduced in https://github.com/opencollective/opencollective-api/pull/6576. Maybe it's too much implementation details for now; but just want to clarify. 😄


Is there any any reason why cannot make request for v10 ?

Issue summary
After upgrade gem to v10, got multiple issues to access data.  I implemented the new model to use "CustomSessionStorage" but not called. Some example use "session = ShopifyAPI::Auth::SessionLoader.load_current_session(headers, cookies, is_online)" It seams SessionLoader is not implemented. Got error uninitialized constant ShopifyAPI::Auth::SessionLoader.
what should go into: headers, cookies, is_online ?
Specifications

shopify_api version: v10
Shopify API version used (example: 2020-07):

There is no Class defining ShopifyAPI::Auth::SessionLoader in the lib folder.
It seems to be available only on the docs.


PYI013 emitted on empty class with documentation

When an otherwise empty class contains documentation, ruff identifies it as non-empty and emits PYI013:
$ cat empty.py
class ArrayArrayCodec:
    ...
$
$ ruff check --isolated --select=PYI013 empty.py
All checks passed!
$
$ cat nonempty.py
class ArrayArrayCodec:
    """Base class."""
    ...
$
$ ruff check --isolated --select=PYI013 nonempty.py
file.py:3:5: PYI013 [*] Non-empty class body must not contain `...`
  |
1 | class ArrayArrayCodec:
2 |     """Base class."""
3 |     ...
  |     ^^^ PYI013
  |
  = help: Remove unnecessary `...`

Found 1 error.
[*] 1 fixable with the `--fix` option.
$

List of keywords you searched for before creating this issue. Write them down here so that others can find this issue more easily and help provide feedback.
"PYI013"
A minimal code snippet that reproduces the bug.class ArrayArrayCodec:
"""Base class."""
    ...

The command you invoked (e.g., ruff /path/to/file.py --fix), ideally including the --isolated flag.
ruff check --isolated --select=PYI013 nonempty.py
The current Ruff settings (any relevant sections from your pyproject.toml).
None
The current Ruff version (ruff --version).
ruff 0.6.4

Hi, thanks for the issue! This behaviour looks correct to me, however. The ellipsis in your class body is redundant; your class could be written more simply as:
class ArrayArrayCodec:
   """Base class."""

It's true that the Python interpreter. accepts the docstring as actual class content and ... is therefore not needed. I guess I'll have to disable that rule as maintainers prefer seem to prefer explicit ... even with a docstring.


Unexpected mask value of new file

Alluxio Version:
2.4.1-1
Describe the bug
When I create a new file (called A) in a directory (called B), mask of A should be the default mask of B. After checked code I found that mask of new file is calculated by default mask of B AND group mode of B. I think it should inherit straightly from B or
be computed from default mask of B AND user mode of B.
To Reproduce

alluxio fs mkdir test
alluxio fs setfacl -R -d -m 'group:test_group:r-x' /test
alluxio fs setfacl -d -m 'group:test_group:r-x' /test
alluxio fs setfacl -d -m 'mask::rwx' /test
alluxio fs mkdir /test/new_dir or alluxio fs touch /test/new_file
alluxio fs getfacl /test/*
Now the mask of new file or dir is 'r-x'. Can't be written by user

Expected behavior
If I set default mask of B,  mask of file or directory created in B should also the default mask of B. Or every time I create a file or directory, I need to setfacl again.
Urgency
Not very urgent, I modified code in local already and it works fine in our environment.

Will close it for now, feel free to reopen it and contact us if this is still valid.


chargeDuration counts and counts even when not loading

Describe the bug
MQTT loadpoints/1/chargeDuration counts and counts even when not loading.
It will reset to 0 and start counting correctly if car starts loading but does count whatever when there's no car loading going on.
Hint: I auto-restart evcc at midnight @ 00:00:01 and chargeDuration seconds converted to human readable is always the current time, so I think chargeDuration are the seconds since start time of evcc until real loading of a car starts.
This is nothing new with 0.105.2 or 0.105.1 or 0.105.0 or so, its so for a long long time but today I found time to report it :)
Steps to reproduce
evcc restart and watch MQTT loadpoints/1/chargeDuration
Configuration details
network:
  schema: http
  host: raspberry-pi-4b.fritz.box
  port: 7070

interval: 10s

sponsortoken: foobar

log: info
levels:
  cache: error
  core: info
  lp-1: info
  ev: info

meters:
- type: template
  template: varta-energiespeicher-battery-only
  usage: grid
  host: <IP_ADDRESS>
  port: 502
  name: grid
- type: template
  template: varta-energiespeicher-battery-only
  usage: battery
  host: <IP_ADDRESS>
  port: 502
  name: battery
- type: template
  template: sma-inverter
  usage: pv
  host: <IP_ADDRESS>
  password: bla
  name: pv

chargers:
- type: template
  template: openwb
  host: <IP_ADDRESS>
  name: wallbox

vehicles:
- type: template
  template: hyundai
  title: Hyundai KONA
  user<EMAIL_ADDRESS>  password: not4yourEYES
  vin: bla
  capacity: 64
  language: de
  name: ev
  minSoC: 21
  targetSoC: 80
  phases: 0
  cache: 10m

loadpoints:
- title: Garage
  charger: wallbox
  mode: off
  resetOnDisconnect: false
  soc:
    poll:
      mode: always
      interval: 60m
    estimate: true
  phases: 0
  enable:
    delay: 60s
    threshold: -500
  disable:
    delay: 120s
    threshold: 100
  guardDuration: 5m
  minCurrent: 6
  maxCurrent: 16

site:
  title: Mein Zuhause
  meters:
    grid: grid
    pvs:
    - pv
    batteries:
    - battery
  residualPower: 100
  bufferSoC: 99
  prioritySoC: 90

mqtt:
  broker: localhost:1883
  topic: evcc

Log details
not needed
What type of operating system are you running?
Linux
Version
0.105.2

Duplikat: https://github.com/evcc-io/evcc/issues/3981


Move documentation build out of Github Actions and into Read The Docs

Make sure the settings_private.py file exists. If not, simply copy the template version
into place.
Remove doc build steps from Github Actions workflow

This is in preparation for shifting documentation builds to Read The Docs.  See #151

If you are interested in a preview, below is the documentation hosted on read the docs, generated from my fork: https://food-pantry-inventory.readthedocs.io/en/docbuild/
When we're ready to hook it up from the official repo I'll delete my RTD project and we should be good to go.


Custom DragLayer in IE 11 - dragging results in constant toggling between copy and pointer cursors

I implemented a custom drag layer for a Kan Ban board using the example:
http://react-dnd.github.io/react-dnd/examples-drag-around-custom-drag-layer.html
In IE11 I have noticed that the cursor constantly toggles between the copy and pointer cursor when dragging an object. This occurs in the demo example as well. I was just curious if this is a known issue, as I looked through the existing issues to see if anyone else had noticed this before and couldn't find any references.

Seeing the same in Edge

@dizard2001 - I have experienced similar problems with IE; we chose to fallback and not have any custom drag previews for IE.

Any update on the topic? Still having this issue in IE.

One of the symptoms I've found associated with this is that monitor.isOver() immediately toggles from true to false which I think is due to the custom drag layer rendering (if I remove the layer, it stays true as long as you're over the same component). This perhaps suggests it is an issue of react-dnd, unless IE is making it impossible to track for some reason?


SAP - Ignore already deleted lease

When we try and release a lease, we might get an object not found
exception meaning that the lease doesn't exist.  So there is no need
to release something that doesn't exist.

Ok so it looks like there is a discrepancy between the read and write handles on how they handle the broken lease.
The read handle reraises when the lease is gone, but the write handle doesn't?
I'll make them both the same.   with a finally clause and a re-raise.

fwiw, the unit tests passes in py36


Update

Can you update to v13?

For compatibility issues, I cannot update this repo directly, but I'll do that in another repo.

I'll let you know when it's created and ready for release on NPM.


Improve readability of the table format

If you compare a cube pandas data frame with a table pandas data frame, you will notice that the table format is not that streamlined as it still contains the original columns and column names like:

Zeit_Code and Zeit_Label, but Zeit_Code should be only one value (always the same), Zeit_Label, too, only Zeit itself changes
the same for Merkmale, so 1_Merkmal_Label and 1_Auspraegung_Code are the metadata for the actual value in 1_Auspraegung_Label

That means the we can often combine Laben and Code to something more readable and use it as the column name for the actual value!
So the four columns

2_Merkmal_Code
2_Merkmal_Label
2_Auspraegung_Code
2_Auspraegung_Label

NAT
Nationalität
NATD
Deutsche

can probably combined to a single column with "Nationalität" (2_Merkmal_Label) as header and "Deutsche" (2_Auspraegung_Label) as value, only keeping the values and completely getting rid of the codes as the codes can be retrieved much more concise in form of metadata
This was already done for the cubes so maybe we can reuse code from there

Offer a parameter raw=False that allows the user to choose between the transformed, more readable format and the original raw format


ListTileTheme: lack of proprieties

Use case

ListTileTheme has no all of proprieties of ListTile, for example it has no visualDensity ,isThreeLine, mouseCursor , ...
Proposal

Make ListTileTheme more powerful by adding more props

I feel it too.

cc @shihaohong

This might be related to the pending work for improving theming: https://github.com/flutter/flutter/issues/31247.

mouseCursor is added in one of my previous PR and new PR would add visualDensity in the theme
isThreeLine is not suitable for the theme as it depends on the subtitle, not all ListTile would be expected to have subtitle.


Fitting MARS with time series data

So the dataset I use gets updated daily to contain new data. I then run MARS on the resulting data. Obviously with only one extra data point the chances of the model being very different day on day are small. Is there away to use the prevopus model ad an initial guess to speed up computation?
Cheers

I should have said "Is there a way to use the previously fitted model as an initial guess for the model with one more data point" in order to speed up computation.

@Fish-Soup No, not currently.  An option would be to just redo the pruning pass and linear fit with the new data, but not the forward pass.  That means your knot locations would not change, but coefficients and pruning might.  This would not be expected to give as good a fit as starting from scratch, however.

How much time would this save? Is this something I can just do accessing some of the private methods in the Earth object?
I suppose I could fit and see if the R^2 increases by more than some tolerance and if it does re-compute with the full forward pass etc.
I am open to any other suggestions for solving the issue, essentially i think the fact that i am predicting the future and that the sensitivity of gas/power demand may change in the future.  I wanted to asses how big an impact this is by successively fitting the model with the data it would have had at hand for a given prediction point. However the successive fitting is just far to slow. I  have a few approaches for predicting the future (2 MARS with different parameters) and an analytic formula and i would really like to compare them. Do you think it might be any faster to successively fit MARS within the module itself? e.g. i provide a mapping of fit to predict data and get MARS to fit and predict within the code. I would have to do less loops in python which does slow it down. I'm thinking though its the actual fitting of the model which is taking up most of the slow down.
The other thought I had was somehow on the short term modelling how the model evolves with more data. i suppose i could fit a MARS model on the difference between two mars models fitted with successively more data.  This would still be time consuming but in this case i thought i might pickle MARS models as they are generated and read them into the file. Not sure if you have any ideas of a better approach?

@Fish-Soup The Earth class has methods forward_pass,  pruning_pass, and linear_fit, which allow you to separate fitting into its different stages.  How much time skipping the forward pass saves is dependent on your data, but I would guess about a 2x speed up.
I don't fully understand your situation, so I could be off here.  Both of your ideas--doing partial refits and modeling differences--seem potentially workable in practice.  However, if you really want to compare the methodologies, you are putting MARS at a disadvantage by doing these things, since the fit will not necessarily be as good.  If I'm correct in understanding that the goal is comparing the methodologies, then, if it's feasible, I would recommend simply using more computer time.  You could fit multiple MARS models simultaneously on different machines, for example using EC2, and then compare them, or just wait longer.  I don't know, though, how feasible this is in your situation.

Do you think it might be any faster to successively fit MARS within the module itself? e.g. i provide a mapping of fit to predict data and get MARS to fit and predict within the code. I would have to do less loops in python which does slow it down. I'm thinking though its the actual fitting of the model which is taking up most of the slow down.

I'm not sure I understand this part.

It appears in my attempt to be to the point i was just unclear. :)
I am trying to simulated Gas/Electricity Demand
So I've set up my code to be able to run several approaches on different sets of data. I have currently 2 versions of MARS with different Xdata and one analytic formula that is provided by the grid. My code currently takes a weighted average of these three attempts that minimized the imbalance cost (which is proportional to the absolute error). I order to fairly get these weights I need to back test in the same way as i will receive data in the future. For the market I'm working in currently there is a two week delay between delivering gas/electricity and receiving the allocation (which informs my y value). As such in order to get my weights i need to produce a set of predictions which have access to all the data two weeks and older. As I have to run the forecast daily re-modelling and calculating all these yvalues takes far to long. It is true i could save them down and only calculate new yvals but i am hesitant to do this as the model is still a work in progress and if I change something I don't want to have to go back and re-calculate all the historic yvals. I suppose i was hoping ideally that like some regularization methods e.g like Elastic Net, you can give the fit an initial guess. This way each day when I iterate I add one more day of data to the model, and use the old model as an initial guess. I assume the model would only change marginally. It appears this is not really possible with MARS as it uses step-wise regression rather than an regularization parameter.  I thought maybe I could run the forward pass once a week.  and otherwise just run pruning or maybe even just the fit?
I appreciate that doing any of the above puts MARS at a disadvantage, but currently I'm left with applying the weights using in sample testing which is not ideal either. I've tried using fast MARS and its still to slow as i have to run the model about 500 times per customer ( i have about 500 days of data).
My comment you didn't understand was that i wondered if some of what i was trying to achieve would be better done withing the MARS algorithm itself, as it could be written in cython/c? I imagine time series forecasting like i am doing is a fairly common need. In order to facilitate what this i imagined i might provide maybe a dictionary with a list in the values where the key of the dict is some model ID, and the values are the indexes of the data values that can be fit on it. then in the predict step you might pass a dict that specified which model to use to predict each set of data. I suppose you could use this for other in and out of sample testing.
I suppose i just hoped doing this inside the algorithm might be faster.

also good shout on E2C will look into that

@Fish-Soup I understand now.  Yes, because of the stepwise nature of MARS, there is no existing method to adjust a fitted model to new training data.  If you really need to do hundreds or thousands of model fits, it's going to take a lot of computer time.  You might think about whether you can avoid all that model fitting.  The various approximations you mentioned may be workable, or you may be able to make other assumptions or approximations.  Depending on which features of py-earth you need and whether you want to use R, you could also try the R earth package, which is significantly faster (about 5x the speed, last time I checked).

Thanks for the help, I didn't realize that the R version was faster. I would personally rather stick in python as my intention is to try use some neural network techniques from scikitlearn at some point. I think what i will probably do is save down old model's and their fits so I don't have to regenerate them. But i may come back to this, when the models are a little more developed. I think maybe its taking MARS longer to fit power than gas as the relationships with available data are less clear, with gas i may be able to use the approach i wanted to. I'm also hoping to get access to a server at work so i would have better leverage which may help get rid of lots of these faults.

My current idea is that every time I get new data I try to predict it using a previously run model. If the error is less than the median in sample error i will assume the new data point would not alter the fit. If it was poorly predicted I would refit the model.
Any draw backs to this approach?

My current idea is that every time I get new data I try to predict it using a previously run model. If the error is less than the median in sample error i will assume the new data point would not alter the fit. If it was poorly predicted I would refit the model.
Any draw backs to this approach?

@Fish-Soup The only issue I see is that you need to make sure you accumulate all new data points and use them all when you do the refit.  Otherwise, you'll create substantial bias toward these larger residual cases.  I'm guessing this is what you mean.  You'll still have a little bias from this approach, but if your initial data set is sufficiently large then I doubt it matters.  On the other hand, a non-biased batch approach, say just refitting once a month or something, might be just as good in practice.  If you have timestamps on your data points, you could run simulations to determine the performance of these strategies.

Yeah I will refit with all available data at any time I decide to refit. having now also put into practice  MARS Elastic Net I think I can basically fit it once to get an overfit MARS model and the elastic bet hyper parameters then refit the elastic bet bit every time. this should be fast. I can then periodicly or refit the rest only when the above limit are reached.


Transition stalls on a Windows machine

When Raphael did test creating a video with the SDK on a windows computer, he observed the video to stall
https://github.com/Vikit-ai/sdk/assets/57375289/4bc8a417-27ff-43e3-b9b9-760a3f023c93

using dev containers on Windows is the way to go


cluster support in redisson

According to the readme why redis cluster is not supported in redisson?
https://github.com/bucket4j/bucket4j#redis-back-ends

Hello,
Just had no time to test. Looks that all works fine with Redisson+RedisCluster. Docs has been updated.


Custom plane

Can we create a custom horizontal plane at certain height??? if yes then how.? if not then i request the team to make this a feature request.

Yes it is, I have told you how but I will go more deeper .
You make a flat cube like this:
val modelRenderable = ShapeFactory.makeCube(
Vector3(1f, .0001f, 1f),
Vector3.zero(), material
)
Then you asign that model to your node (child of anchorNode):
this.renderable = modelRenderable
and finally, set your desired height to the plane:
this.localPosition.y = value
I put all this code in the init of my objectNode who extends (BaseTransformableNode)
hope that will help you

yeaqh thanks ive solved it..