Routing Timing Reports

Prompt
We noticed that the generate_routing_report function is removed in the latest OL. Is there a way we can get access to the multi_corner timing reports (like the older versions do)? We are a little bit confused about which part of the code generates the reports.

Think you added a script for that already with the ECO flow.


Add missing dep

There is a missing dep that prevents the example to start up

Hahaha  oops. I swear I added this one... you know I might've installed it with npm instead of yarn.


Transfer data to TerminusDB (Document interface) - Python tutorial

Adding tutorial on how to transfer data to TerminusDB, using Python client and document interface. This tutorial is based on dataset provided by Open Brewery.
Tasks:

[x] Choose dataset - Open Brewery dataset is available as CSV, JSON and PostgreSQL SQL.
[x] Schema creation
[x] Database creation and schema update
[x] Print headers and stats of the dataset
[x] Read dataset and transfer data to TerminusDB
[x] Written tutorial as Jupyter Notebook
[x] Add tutorial using scaffolding tool
[x] Written tutorial for scaffolding tool tutorial
[x] Add progress bar

Looks good! Great job!


Updated timeseries_dataset.py

Fixes #17410

The current example code snippet runs as-is without issue. Please explain the nature of the change.

@fchollet You were right. The example code is running fine. Closing this PR.
Thank you for looking into this.


confirm with team that the search page wireframe is finalized

need to add the modal part

Added modal wireframe: https://docs.google.com/document/d/1EqH_GT72fbsTY9rJASW0NQ9uSeQh_cwoYTqJFFpo_6M


Feature request: Memo in avm.send

Currently if a user is sending avax or any other token to another wallet address it works in the following.
curl -X POST --data '{
    "jsonrpc":"2.0",
    "id"     :5,
    "method" :"avm.send",
    "params" :{
        "username"   :"YOUR USERNAME HERE",
        "password"   :"YOUR PASSWORD HERE",
        "assetID"    :"AVAX",
        "amount"     :1000,
        "to"         :"X-avax1w4nt49gyv4e99ldqevy50l2kz55y9efghep0cs"
    }
}' -H 'content-type:application/json;' <IP_ADDRESS>:9650/ext/bc/X

What is a memo?
A memo is a message included with a transaction.
This feature would allow users communicate with each other, it also helps serves as a note or reminder for a transaction, it can also be utilize by apps in sorting payments or looking up transactions.
How it would work on gecko
curl -X POST --data '{
    "jsonrpc":"2.0",
    "id"     :5,
    "method" :"avm.send",
    "params" :{
        "username"   :"YOUR USERNAME HERE",
        "password"   :"YOUR PASSWORD HERE",
        "assetID"    :"AVAX",
        "amount"     :1000,
        "memo"       :bought coffee,
        "to"         :"X-avax1w4nt49gyv4e99ldqevy50l2kz55y9efghep0cs"
    }
}' -H 'content-type:application/json;'

I would also propose two memo types which includes :

Text (for including a message of up to 28 bytes with your transaction)
Memo ID (for the receiving party to be able to identify the sending party)
In my example i used a Text based memo type, if i used Memo ID  then it could be "memo"       :00123456, the 00123456 could be an account number the receiver of the above tx should make payment to.

Well Avalanche is the internet of finance.

done https://github.com/ava-labs/gecko/commit/ab782ba103877ee874bd661b3d551dfa88b6988d


Feature: Mark recipes as favorites

As a visitor, I want to mark recipes as favorites to have a separate list containing only these.
It will be necessary to register as a user, and to login to the account, so that the personalized list can be identified.
Also, we will need a possibility to switch between the complete list of recipes and the individual favorites. This might be done with separate menu items, tabs, or by a kind of filter.

Should we track login/logout/registration/account in a separate issue? I wonder, if we can get around the whole account management/login/logout logic and would like to discuss.

Should we track login/logout/registration/account in a separate issue? I wonder, if we can get around the whole account management/login/logout logic and would like to discuss.

I've created a new ticket (#50) for that.


Add PyRoboSim to python.yaml

Please add the following dependency to the rosdep database.
Package name:
Python package : pyrobosim
rosdep entry : python3-pyrobosim-pip
Package Upstream Source:
https://github.com/sea-bass/pyrobosim
https://github.com/sea-bass/pyrobosim_ros
Purpose of using this:
PyRoboSim has existed as a Python package with a ROS 2 wrapper for about 2 years. However, the ROS 2 wrapper lives within the source code and thus is not well-integrated into the ROS 2 ecosystem for distribution.
I am now working on breaking up the pyrobosim repo into a ROS-free package (the one on PyPi below) and its ROS 2 wrappers will be officially bloomed soon.
So, this PR handles only the Python package, and I will next break out a new pyrobosim_ros repo and bloom that.
Links to Distribution Packages
This is available on PyPi here: https://pypi.org/project/pyrobosim/

I am now working on breaking up the pyrobosim repo into a ROS-free package (the one on PyPi below) and its ROS 2 wrappers will be officially bloomed soon.

Just so you are aware, this will not be possible.  It is not possible to bloom a package that has pip-only dependencies, as our buildfarm does not allow installing from pip.
We can still merge this key in, but it will only be possible to use it in from-source builds.  Let us know how you want to proceed.

Ah, thanks for the clarification, @clalancette!
I guess I'd still like to proceed here so rosdep tells users about the missing pip install when source building the ROS package.


Allow customization of default timeout of cucumber

I would like to have the option to change the default 10s timeout define here.
Maybe have a env file that allow some settings to be customized globally and pass the file path via command line?

A big Thanks to @Collabratech for doing this


Allow overriding the automatically detected tip commit in git.git

This allows us to manually correct incorrectly identified tip commits in git.git, which can lead to incorrect, prematire closing of PRs. This happened in https://github.com/gitgitgadget/git/pull/999, for example.

So, we would be able to run this command:
/set-tip-command-in-git.git <oid>

and that would create the correct tracking? Is this unrelated to the choice of branch name (e.g. ds/add-with-sparse-index)?

No, this is not hooked up via PR comments yet. I guess we could, but then I'd like to wait with implementing that until we need it more often.


fixed sniffed nodes deserializer

Thanks for the PR @ilya-epifanov
I'm guessing we had an issue here attempting to deserialize borrowed data from the response stream? If that's the case then I wonder why our integration tests haven't picked that up 🤔


Redundant import of metpy

I don't think we need to import metpy.calc if we then import metpy on the next line...
https://github.com/cal-adapt/climakitae/blob/984d67e7950f333fc019b7b1c523fbe931b7b641/climakitae/derive_variables.py#L1

Looks like this is necessary...why metpy why!!??


Add anel_pwrctrl platform to control switches on ANEL PwrCtrl devices

Description:
Add support for ANELs platform for switches, called PwrCtrl, tested against the PwrCtrl HUT.
http://anel-elektronik.de/index.htm?src=SITE/produkte/home/home.htm
Pull request in home-assistant.io with documentation (if applicable): home-assistant/home-assistant.io#1036
Example entry for configuration.yaml (if applicable):
switches:
  - platform: pwrctrl
    port_send: 4165
    port_recv: 4166
    username: someuser
    password: changeme

Checklist:
If user exposed functionality or configuration variables are added/changed:

[x] Documentation added/updated in home-assistant.io

If code communicates with devices, web services, or a:

[x] Local tests with tox run successfully. Your PR cannot be merged unless tests pass
[x] New dependencies have been added to the REQUIREMENTS variable ([example][ex-requir]).
[x] New dependencies are only imported inside functions that use them ([example][ex-import]).
[x] New dependencies have been added to requirements_all.txt by running script/gen_requirements_all.py.
[x] New files were added to .coveragerc.

🐬


add validation on first name and last name for new membership form

In banking app => new membership form, there wasn't validation on first name and last name.
So if we set invalid names we had server error instead of an error displayed below the field.
This PR solve this by adding front-end validation on first name and last name which accepts:

all letters A-Za-z
spaces \s
dashes for composed names -
letters with accents (works thanks to deburr function)

yes this is why I added front-end validation, there was a ValidationException displaying a toast error


How to set this up in a monorepo

We're using NX as our monorepo framework, and have a couple of remix apps set up and running from within the repo.
We also use Mantine 😅
We've been running into the same issues this project is trying to solve, specifically, trying to deploy one of the apps to Cloudflare produces Buffer is not defined errors.
Since all of our dependencies are in the monorepo root package.json (that's the recommended way of working with NX), I've tried doing a few different things setting up what's described in your mantine-cloudflare readme, but unfortunately, nothing worked - still getting the Buffer error.
Would appreciate your help 🙏

@aiji42
Actually, I prepared a repo and ended up realizing this wasn't the problem.
The monorepo use case works perfectly (see here for reference if you like).
Apparently, the problem was that we were using pnpm as a package manager.
I'll close this issue and open a separate one.


Test branch

Purpose

Approach

TODOS and Open Questions

Learning

Pre-Merge Checklist
Before merging this PR, please go through the following list and take appropriate actions.

[ ] I've added appropriate record to the CHANGELOG.md
Does this PR meet or exceed the expected quality standards?

[ ] Code coverage on new code is 80% or greater
[ ] Duplications on new code is 3% or less
[ ] There are no major code smells or security issues

Does this introduce breaking changes?

[ ] If any API-related changes - okapi interfaces and permissions are reviewed/changed correspondingly
[ ] There are no breaking changes in this PR.

If there are breaking changes, please STOP and consider the following:

What other modules will these changes impact?
Do JIRAs exist to update the impacted modules?

[ ] If not, please create them
[ ] Do they contain the appropriate level of detail?  Which endpoints/schemas changed, etc.
[ ] Do they have all they appropriate links to blocked/related issues?

Are the JIRAs under active development?

[ ] If not, contact the project's PO and make sure they're aware of the urgency.

Do PRs exist for these changes?

[ ] If so, have they been approved?

Ideally all of the PRs involved in breaking changes would be merged in the same day to avoid breaking the folio-testing environment.  Communication is paramount if that is to be achieved, especially as the number of intermodule and inter-team dependencies increase.
While it's helpful for reviewers to help identify potential problems, ensuring that it's safe to merge is ultimately the responsibility of the PR assignee.

This is a very large change, but the pull-request says nothing about what it does, or why. Please explain?

This is a very large change, but the pull-request says nothing about what it does, or why. Please explain?

I'm testing the module with new dependencies, I updated it to React 18. I removed components since they are obsolete. This module is not used anywhere yet, but will soon be used for the ui-inventory and ui-plugin-find-instance modules.


Update flyway-core to 7.14.0

Updates org.flywaydb:flyway-core from 7.3.2 to 7.14.0.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.flywaydb", artifactId = "flyway-core" } ]

labels: library-update, semver-minor

Superseded by #539.


Tetsuya Yamamoto: Watch hiretablets.com

Tetsuya Yamamoto requests the watch of the watch_keyword hiretablets.com. See the Metasmoke search here and the Stack Exchange search here.

!!/approve


allow per-doc metadata to be specified at runtime

Libraries with API-driven support (like Spark) could support passing the metadata as a pair beside the document. This facilitates computational environments where things like id or the timestamp are created on the fly and are not part of the doc itself.

Related to #255

@costin Will this include the _version metadata as well?

Fixed in master. Closing the issue.

@costin I don't know if you saw my comment from above but I was wondering how to fetch the metadata while reading documents?

@mgreene For questions, please use the forum. The issue is about writing (not reading) documents (see the reference commits).
Thanks,


Add tests for MultiProcessUpdater cuda initialization check

Added test for #4717.
Also changed from ValueError to RuntimeError as it is more appropraite.

@mitmul  Do you have time to take a look on this (as it's related to #4717)? We discussed this in weekly meeting today; other team member can also do the review if you don't have time.

@kmaehashi Sorry for delay. Could you check the flake8 errors in the travis tests?

Thanks, fixed.


Remove InternalRowSet to fix Spark-3.4 build

This fixes https://github.com/NVIDIA/spark-rapids/issues/7694
Created a new version of GpuBatchScanExec for Spark 3.4. Removed shim code which were specifically made to compile for
different Spark versions for BatchScanExec.

build

build

build

Looking into CI failure

build

build

build

build

build

build


Fix/segment removal mos delete

This PR primarily contains a fix for the issue:
When the first story in a segment is floated, the segment is prompty deleted (along with the parts), then recreated.
The currently playing Part could then be removed and recreated but without the timings, which cause things like auto-next to fail.
Along with the fix, I added some snapshot checks in the tests for the mos-methods, to avoid any regressions.

Codecov Report

Merging #104 into develop will increase coverage by 0.07%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           develop     #104      +/-   ##
===========================================
+ Coverage    54.05%   54.12%   +0.07%
===========================================
  Files          100      100
  Lines         6923     6912      -11
  Branches      1122     1124       +2
===========================================
- Hits          3742     3741       -1
+ Misses        3137     3127      -10
  Partials        44       44

Impacted Files
Coverage Δ

server/api/ingest/mosDevice/ingest.ts
89.86% <0%> (-0.93%)
:arrow_down:

lib/api/peripheralDevice.ts
91.74% <0%> (-0.15%)
:arrow_down:

server/api/blueprints/context.ts
37.59% <0%> (ø)
:arrow_up:

lib/lib.ts
77.98% <0%> (+0.26%)
:arrow_up:

server/api/ingest/rundownInput.ts
90.84% <0%> (+2.84%)
:arrow_up:

server/api/ingest/api.ts
100% <0%> (+7.4%)
:arrow_up:

Continue to review full report at Codecov.

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


[core] Video stuttering with SUPPORT_PARTIALBUSY_WAIT_LOOP on Linux

Issue description
There seems to be a regression in the rcore.c WaitTime function that causes video stuttering when compiling with SUPPORT_PARTIALBUSY_WAIT_LOOP for PLATFORM_DESKTOP running under Linux (I am not sure if other platforms are affected). I have been testing different raylib version tags and this stuttering does not happen in 3.7.0, and happens in 4.0.0. The cause seems to be changes made to the WaitTime function of rcore.c (previously Wait in core.c).
This is the output of doing
git diff 3.7.0 master -- core.c rcore.c
-static void Wait(float ms)
+void WaitTime(float ms)
 {
-#if defined(PLATFORM_UWP)
-    UWPGetSleepFunc()(ms/1000);
-    return;
-#endif
-
 #if defined(SUPPORT_BUSY_WAIT_LOOP)
-    double prevTime = GetTime();
-    double nextTime = 0.0;
+    double previousTime = GetTime();
+    double currentTime = 0.0;

     // Busy wait loop
-    while ((nextTime - prevTime) < ms/1000.0f) nextTime = GetTime();
+    while ((currentTime - previousTime) < ms/1000.0f) currentTime = GetTime();
 #else
-    #if defined(SUPPORT_HALFBUSY_WAIT_LOOP)
-        #define MAX_HALFBUSY_WAIT_TIME  4
-        double destTime = GetTime() + ms/1000;
-        if (ms > MAX_HALFBUSY_WAIT_TIME) ms -= MAX_HALFBUSY_WAIT_TIME;
+    #if defined(SUPPORT_PARTIALBUSY_WAIT_LOOP)
+        double busyWait = ms*0.05;     // NOTE: We are using a busy wait of 5% of the time
+        ms -= (float)busyWait;
     #endif

+    // System halt functions
     #if defined(_WIN32)
         Sleep((unsigned int)ms);
     #endif
@@ -4571,14 +4833,80 @@ static void Wait(float ms)
         usleep(ms*1000.0f);
     #endif

-    #if defined(SUPPORT_HALFBUSY_WAIT_LOOP)
-        while (GetTime() < destTime) { }
+    #if defined(SUPPORT_PARTIALBUSY_WAIT_LOOP)
+        double previousTime = GetTime();
+        double currentTime = 0.0;
+
+        // Partial busy wait loop (only a fraction of the total wait time)
+        while ((currentTime - previousTime) < busyWait/1000.0f) currentTime = GetTime();
     #endif
 #endif
 }

I've tried changing the body of the WaitTime function to one like it was in the raylib 3.7.0 core.c Wait function, but using the function and macro names that raylib 4.0.0 uses. This seems to solve the problem. This is how WaitTime looks after reverting its behavior to the one in raylib 3.7.0:
void WaitTime(float ms)
{
#if defined(SUPPORT_BUSY_WAIT_LOOP)
    double prevTime = GetTime();
    double nextTime = 0.0;

    // Busy wait loop
    while ((nextTime - prevTime) < ms/1000.0f) nextTime = GetTime();

#else
    #if defined(SUPPORT_PARTIALBUSY_WAIT_LOOP)
        #define MAX_PARTIALBUSY_WAIT_TIME  4
        double destTime = GetTime() + ms/1000;
        if (ms > MAX_PARTIALBUSY_WAIT_TIME) ms -= MAX_PARTIALBUSY_WAIT_TIME;
    #endif

    #if defined(_WIN32)
        Sleep((unsigned int)ms);
    #endif
    #if defined(__linux__) || defined(__FreeBSD__) || defined(__EMSCRIPTEN__)
        struct timespec req = { 0 };
        time_t sec = (int)(ms/1000.0f);
        ms -= (sec*1000);
        req.tv_sec = sec;
        req.tv_nsec = ms*1000000L;

        // NOTE: Use nanosleep() on Unix platforms... usleep() it's deprecated.
        while (nanosleep(&req, &req) == -1) continue;
    #endif
    #if defined(__APPLE__)
        usleep(ms*1000.0f);
    #endif

    #if defined(SUPPORT_PARTIALBUSY_WAIT_LOOP)
        while (GetTime() < destTime) { }
    #endif
#endif
}

I used an application with moving graphics and an FPS counter made in raylib to test the behavior of each version. This application can be started with VSYNC on or off and I can also cap the framerate to 60 FPS or unlock it. The testing has been made using a monitor set to a 60 FPS refresh rate. This is what I've observed:
4.0 and 4.1-dev (master):

60FPS VSYNC ON: Stutters (every second approximately), FPS counter oscillates between 59 and 60
UNLOCKED FPS VSYNC ON: No stutter, FPS counter oscillates between 59 and 60
60FPS VSYNC OFF: Tearing, FPS counter between 59 and 60

3.7 and 4.1 with fix:

60 FPS VSYNC ON: Very occasional stutter, FPS counter at 60
UNLOCKED FPS VSYNC ON: No stutter, FPS counter between 59 and 60
60 FPS VSYNC OFF: Slow tearing, FPS counter at 60

Also, 4.0 and 4.1-dev (master) compiled with SUPPORT_BUSY_WAIT_LOOP seem to behave like 3.7 and 4.1 with fix compiled with SUPPORT_PARTIALBUSY_WAIT_LOOP.
I am opening an issue instead of doing a pull request because I am not sure if reverting the behavior of WaitTime to the one raylib had in 3.7.0 has deeper implications (one thing I noticed it that the old method consumes more CPU). In any case, I can make a pull request if you think it can be useful for saving some time on testing.
Environment
All that is explained here has been observed and tested in a machine running Kubuntu 20.04 (KDE Plasma desktop) with the desktop compositor disabled.
This is the information raylib reports for this machine on start up:
INFO: GLAD: OpenGL extensions loaded successfully
INFO: GL: Supported extensions count: 223
INFO: GL: OpenGL device information:
INFO:     > Vendor:   AMD
INFO:     > Renderer: AMD KAVERI (DRM 2.50.0, 5.4.0-107-generic, LLVM 12.0.0)
INFO:     > Version:  4.5 (Core Profile) Mesa 21.2.6
INFO:     > GLSL:     4.50
INFO: GL: DXT compressed textures supported
INFO: GL: ETC2/EAC compressed textures supported

Please let me know if you need more information.
Code Example
I have uploaded a repo to my a account with a small program that uses the simplest and most effective way I found to showcase the issue. What it does is flash a color every other frame at 60FPS, like a strobing light. That means that it may pose an epilepsy risk, so please, if you really want to use it do it with caution.
Thanks a lot.

@flashback-fx thanks for reporting. I reviewed the fix and it actually turns busyWait into 4 ms instead of using only 5% of target wait time; that's the reason it consumes more CPU but avoids stuttering, because it wastes more time actually in a busy wait loop.
Could you try increasing wait time to 20% for current implementation:
#if defined(SUPPORT_PARTIALBUSY_WAIT_LOOP)
        double busyWait = ms*0.2;     // NOTE: We are using a busy wait of 20% of the time
        ms -= (float)busyWait;
#endif

Issue could also be related to the functions calls cost... Actually, I don't know why previous implementation was changed... but I imagine there was some reason...

No answer from user. I will assume it worked.

Hello,
Sorry for not answering before, I have been very busy and did not find all the time I wanted to dedicate to this issue until now.
I experimented with changes similar to what you suggested and it did not fix the issue.
I tried to change the current WaitTime code to use busy wait times of 20%, 40% and of a fixed 4ms and the resulting behavior was the same as the one I describe in my first message for versions 4.0 and 4.1-dev.
Fortunately, I found the cause of the regression. I've created a pull request with a fix (https://github.com/raysan5/raylib/pull/2503), you will find more details in the pull request description.
Thank you.


Screenshots

This is not an actual issue, but just to keep track of how each version looked like.
After every major commit, the screenshot/GIF will be added to this thread.

Commit: ee55c6d239017c3947f9628052cb7ac8763d908f

Major Issues:

[ ] Stats panel (statsPanel) is not being rendered.
[ ] Unicode characters are not being displayed in the JButtons.
[ ] No detection of terminal stages.

Commit: d744ee91be155bb274595e5f849dacfc23e30079

Major Issues:

[ ] Reset button not functional.
[ ] Percentage change label not getting updated for each generation.

Commit: c634f2e2198b4695f010616e70e5fea1b55a0336


fix: thorchain savers deposit fees deduction

Description
The fees deduction on THORChain savers was only working on UTXOs, I made it work for every chains including IBCs, EVMs.
EVM chains needs to compose the TX with the data, meaning that we need to query the inboundAddresses and the memo so we can properly build the data and simulate the TX to get the fees
Also, if the balance is under or equal the total fees, add a 0 to the input so it will display an error!

Issue (if applicable)

closes #7588
Risk
Low

High Risk PRs Require 2 approvals

What protocols, transaction types, wallets or contract interactions might be affected by this PR?

Testing

Test every % click on savers deposit for these chains: UTXOs, IBCs, EVMs, MAX click should permit to sign the TX properly and make it successful

Engineering
n/a

Operations
n/a

[ ] :checkered_flag: My feature is behind a flag and doesn't require operations testing (yet)

Screenshots (if applicable)
RUNEPool is happy, AVAX is happy, BTC is happy, Cosmos is happy, ETH is happy
https://jam.dev/c/7805613f-6dfa-42fc-b2f3-01dc8825d146
https://viewblock.io/thorchain/tx/2AFA172E60F91BEEB180CC3C2F64496DEBAF99B0E4E2CC57041C88FC2EEFDB02

@gomesalexandre took your comment into account:
Removed the logic on input time, then:

Estimated fees at confirm time
Deducted the fees from the cryptoAmount at confirm time if non-UTXO

Works like a charm


Enhacement to Normlize Queries That are Called with sp_executesql

I have imported the ScriptDom assemblies into my GitHub project SQLMonitor.
Assembly Project path - https://github.com/imajaydwivedi/SQLMonitor/tree/master/TSQLTextNormalizer
The feature is accessible using clr function dbo.normalized_sql_text inside from with SQLServer post importing the assembly.
The function works as expected in case of normal stored procedure or statements. But, it does not recognize special syntax like sp_ExecuteSQL or sp_prepexec.
Would it be possible to include exceptional processing of sp_executesql or sp_prepexec like stored procedure?
Sample code to test -
select dbo.normalized_sql_text('exec sp_executesql ''select * from SomeTable01''',150,0)
select dbo.normalized_sql_text('exec sp_executesql ''select * from AnotherTable02''',150,0)

@imajaydwivedi thanks for asking - just so that I am clear, is your objective:

Replace whatever is passed to these special procs, as a placeholder string like foo? For example, when encountering the statement exec sp_executesql 'select * from SomeTable01 where col1 = 999', output exec sp_executesql 'foo' as you indicated in your screenshot above?
OR do you want to tokenize all literals embedded inside the dynamic SQL string to some placeholder values? For example, when encountering the statement exec sp_executesql 'select * from SomeTable01 where col1 = 999' output exec sp_executesql 'select * from SomeTable01 where col1 = 0'


Is there a version of your code keras

Hi. Is there a version of your code keras?
If you do not have the whole keras code,
can you supply the part of HorizontalMaxPool2d with keras?

@iamheidi Sorry, I have not used Keras for a long time. You can refer this repo to implement it.


Get acquainted with existing open source image processing tools

Please take a look at opencv and imagemagick and their image transformation capabilities.
imagemagick can be used to generate test data for the application.

Some additional notes:
you should be also able to generate some test data using ffmpeg (just make sure the data you convert has a proper license and can be used).
In addition, regular webcams should be able to stream raw data (at least one yuv format or one rgb format). This won't give us all the formats and resolutions we need but should be enough for a start.
To quickly get some data you can try using qv4l2. Make sure to select a raw image format (rgb or yuv, please ignore any compressed formats like mjpeg), enable saving the frames (raw button) and use the "step capture" feature to get single frames. You can generate those frames for various resolutions and this will give you enough input to start coding.


OC 3.7.4 - Error and placement

Hi,
I updated OctoberCMS to version 3.7.4 and two issues with the ListSaver now;

When I click on the ListSaver, an error comes up:

"Form behavior does not contain a field for ':field'." on line 457 of ...installation...\modules\backend\widgets\Filter.php"

The placement -> it's now right after the last filter

Hi,
Please  update to 1.0.22 for the fix and let me know if you have any other issues.

For what I stated above, it is fixed.
Thank you.


Search for Lyrics not more working with DSF Files

Steps to reproduce

Search for Lyrics
Status found
Show Lyrics: No lyrics saved

Expected behavior
It works maby 1 Year ago. Longtime I run only the wizzard with out controlling the Files.
So I have no Idea when the Problem starte
Versions

 1.7

foobar2000 version:  2.0  x86
OpenLyrics version: 1.7   I check some older versions. allways the same

Debug logs

Additional information

console-2023-10-26-10-48-05-P12976.txt

The log you uploaded shows it saving to metadata tags. Specifically the UNSYNCED LYRICS tag.
Can you be a bit more specific about what you mean by "Show Lyrics: No lyrics saved"? Do you mean it searches the internet every time?
The log you provided does not show any search for Metadata tags. Can you try adding the "Metadata tags" source to the top of your search list and see if that fixes it?

Hi Jaquesh
You have the position search for Lyrics. This show all like it works. But when you go to the position: Show Lyrics: it say: No Lyrics saved. And its troue.
Her another example with a older File. Is on unsynced Lyrics. I can see that with my DBpoweramp Edit ID Tag Tool

I have no Settings like bevor.

The log you provided does not show any search for Metadata tags. Can you try adding the "Metadata tags" source to the top of your search list and see if that fixes it?

Nothing change

I'm struggling to understand the problem you're experiencing. You say that "Show lyrics" doesn't work, but then you provide a screenshot where it clearly is working. You say that "Search for lyrics" is working, but the logs you provided show it searching QQMusic and Netease (the default providers) and not any others (in particular not Metadata tags).
You mention that you can see the tags (that openlyrics doesn't find) using dbpoweramp. Is that true when those lyrics tags were saved by openlyrics itself (such as the one shown in the log you provided)? Or are these only files that were saved previously? Does openlyrics load the tags saved in the log you uploaded?

I feel the same way. But no matter. I will now describe and document the exact error process.
Step 1: Search for lyrics with Open lyrics

Step 2: Lyrics found

Step 3: Display lyrics

Step 4: No lyrics saved

I hope the Prozess is now clear for you

I do the same with a Flac File. And with Flac the program works fine. Its only a Problem with DSF Files.

Ooooh, sorry now I understand. The problem is the *.dsf files. Right. I believe decoding for those is provided by a 3rd-party component, it's not supported natively in fb2k, correct? Do we have any evidence that said plugin supports saving to metadata tags using the usual fb2k tag-editing code? I expect it does not because openlyrics doesn't pay any attention to the format, it just uses the built-in APIs for modifying tags.
I recommend either saving to file or converting those files to another format.

OK No problem
I recommend either saving to file or converting those files to another format.
Both are not a valid option at the Moment.
Thanks for your support


Java function remote debug sometimes cannot initialized correctly

The Java function remote debug sometimes cannot initialized correctly, this occurs especially when:

The function is idled for a long time
The function is newly deployed and try to attach debugger immediately

This issue may related with the way we initialize the debug proxy here. We only send a request to get the function state, but do not care about its return value. To make things more stable, we need to make sure the function is waked up and the state returned is running, may similar with this issue: https://github.com/Microsoft/vscode-azureappservice/issues/435.

It seems not able to be reproed since the service side fixed this issue.
If anyone still encounters this, please feel free to let us konw.
Thanks.


findElementError

How to locate elements in win10 application embedded with H5 in Vue electron.

Is the element shown in inspect.exe.


Fixed wes blog 404 link

Hey, so the Wes blog leads to a 404 page. Changed it to https://wesbos.com/javascript.

@mathiasbynens the "wes bos blog" link goes here:


Interface "exports" not working in browser

Getting error due to module not being defined, no tests detected because of that error in the JS file.
Windows 8.1, IE 11 & Firefox 45.0.1, Mocha 2.4.5
Works in Mocha commandline. Also works in browser if I use BDD interface instead of exports interface.
./index.html:
<!DOCTYPE html>

<link rel="stylesheet" href="./node_modules/mocha/mocha.css" />

./test/X.js:
;(function(){"use strict"

module.exports = {
	"foo": function bar(done) {
		setTimeout(done,10)
	},
	"bar": function foo() {
		throw new Error("FAILED TEST!")
	}
}

}())

Some digging into the code and experimenting has yielded the following insights:

It's possible to add exports and module.exports before including the test JS files in the page via the script tag, and then call mocha.suite.emit("require", module.exports) after including them but before running them, in order to get the tests to work. However...
Doing this before and after the inclusion of the test files doesn't have exactly the same effect as running them through the CLI; specifically: name collision causes tests to be missed when doing it this way in the browser whereas in the CLI both suites/tests will be used even though the names appear redundant, and there's not much protection against one of the test cases messing up module or exports for everything.
I don't think there's any way (in the normal course of browser-based JS code at least) to get each included test file to have whatever it added to module.exports be sent to mocha.suite.emit("require", ...) individually except to call it after each included script and reset module.exports/exports for each test file.
However, it's pretty straightforward to get the test files themselves to take care of this and be compatible with both the CLI and the browser. Simply wrap them for compatibility with something like:

;(function(module){"use strict" // "use strict" optional
;(function(module, exports){

// SAME TEST CODE HERE

if (typeof mocha !== "undefined") { mocha.suite.emit("require", module.exports) }
}(module, module.exports))
}(typeof module !== "undefined" ? module : {exports:{}}))

It's a bit of boilerplate, but largely out of the way of the actual test code, and it saves me from having to handle similar boilerplate in the page as I'm adding or removing tests from the in-page list and from having to depend on additional tools and/or extra steps to prepare the tests and/or page. However, there are some possible alternatives that don't require changing the test scripts themselves:

Calling self.module = { exports: {} }; self.exports = self.module.exports before and mocha.suite.emit("require", module.exports) after each test's script file include in the page (advantage: still no extra tools or steps, boilerplate is smaller; disadvantage: boilerplate is not necessarily in the most convenient place, might still be some weird edge cases with module and/or exports though at least it shouldn't affect other test scripts)
Bundling the tests somehow and including the bundle in the browser instead, or something along those lines
Perhaps something involving loading the tests into the browser as modules instead of plain scripts (I don't know that any browsers have implemented this natively, but I hear there are shims)

In any case, I don't think there's a good way to make it happen just by modifications to Mocha without risk of odd behavior in edge cases. Instead, I'd like to recommend just documenting how to use the exports interface with in-browser tests, either in the section on using Mocha in a browser or in the section on the exports interface or both. If it would help, I can try writing something up and put in a pull request, although I don't know that I'll have time to actually try the bundling/module-based alternatives given that I'm not sure off the top of my head how exactly to do them and the other solution works fine for me.
Until then, hopefully this comment itself can help anyone else looking for a solution to run exports-style Mocha tests in a page in a browser.

On further study, I think this may theoretically actually be doable -- with AMD modules. Which isn't necessarily as bad as it sounds. For Node/non-browser running, if I understand correctly (haven't tested extensively yet, but I'll be back to let you know if I do run into any problems with it) they'll need to be like this:
var define = typeof define !== "undefined" ? define : function(factory){ factory(require, exports, module) }
define("myLib/test/thing", function(require, exports, module) {

// SAME TEST MODULE CODE HERE AS IN NORMAL EXPORT-STYLE TEST (except possible using only exports rather than module.exports?)

})

That's even less boilerplate than my earlier solution. It's not a full implementation of an AMD loader in Node.js (although you can find those out there), but it should be sufficient for the typical exports-based Mocha test, I would think. And then in the browser, we'd want mocha's "exports" suite setup to provide a similarly rudimentary AMD loader implementation that sends the test modules to the exports interface. It would need some criteria (preferably configurable) to tell which AMD modules are tests (in case they're pulling in other AMD modules), perhaps something like /(^|\/)test/.test(moduleId) by default, and then be able to forward the call to whatever other AMD module loader is in effect if it's not a test. But it should be pretty simple... I think...
On the other hand, whether it's a good or bad idea may depend on whether or not you want to increase mutual compatibility with another major JavaScript testing framework out there, since I recall noticing examples for that one that opened with define (though I'm not too sure of exactly how it works, for lack of extensive experience).
In any case, it's another option to consider. And, I suppose, the exports-interface browser AMD loader wouldn't necessarily need to be supplied by Mocha even; I could probably write up a small project for it. (The downside to that is it's pulled in separately rather than pulled in or not based on whether the "exports" interface is in use. I don't know what would happen if, say, when using another Mocha interface the AMD loader tried to pass a test module to mocha.suite.emit("require",...). Although maybe that would be the start of a way to get the other interfaces to provide their functions to the test modules without putting said functions in the global namespace?)

I was able to set up the AMD-modules idea as an AMD loader plugin that works quite well for me so far: https://github.com/ScottFreeCode/mocha-exports-amd


[FLINK-15804][table-api-scala] Use new type inference for implicit ScalarFunction calls in Scala

What is the purpose of the change
This updates Scala implicit calls for ScalarFunctions to use the new type inference.
It also adds support for the new type system in flatten().
The next PRs will update TableFunctions and AggregateFunctions.
Brief change log
Clean up tests that still use the old type inference for functions.
Verifying this change
This change is already covered by existing tests, such as FunctionITCase.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changed class annotated with @Public(Evolving): yes
The serializers: no
The runtime per-record code paths (performance sensitive): no
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? no
If yes, how is the feature documented? not applicable

Thanks @Airblader. I agree that the default function identifier is hard to read. But this is a followup issue see FLINK-15585.


docs: remove space for webpack-bundle-analyzer url

The url to the webpack-bundle-analyzer website had a space in it and was therefore not a valid url. Removing the space makes the url valid (and easily clickable).

Done 👍


Adding ability do handle MRI metadata to be saved into the BIDS Sidecar

@bhatiadheeraj is this still up to review? let us know when it is ready

@anibalsolon I've alerted Dheeraj to a few lingering issues while reviewing, so we can hold off for now.

@bhatiadheeraj @dlevitas I've removed ourselves as reviewers- to be re-added when the PR is good to review. Please let's try to keep reviews through the issue so others can also understand what's happening.

@bhatiadheeraj, this PR is coming along nicely, there's one lingering issue that I failed to mention during our last meeting.
One of the sequences is perf/m0scan, but when clicking on the "Edit Metadata" button, the required fields are as if it's a perf/asl sequence. This is probably due to the fact that the bids-specification asl.yaml file also includes information for not just the asl suffix, but also m0scan, see here.
Given that we removed the "IntendedFor" metadata field from perf/m0scan sequence button, perhaps we can simply exclude this functionality for perf/m0scan sequences.

@bhatiadheeraj disregard my previous message. My recent commit addresses the issue I described.
@anibalsolon feel free to review this PR when you get a chance. I ran through from a user (front-end) perspective, and was able to successfully create and download a BIDS-compliant ASL dataset. I didn't give much consideration to back-end processes, so feel to focus your review on that if you need that's appropriate.

Something for us to consider, but shouldn't prevent this PR from being merged:
Some metadata fields are optional, but become recommended (or required), depending on the value of other metadata fields. When optional metadata fields become required, they are outlined in red, which alerts the users to this change. If however, optional metadata fields become recommended, the user will be unaware. Additionally, the newly recommended metadata field won't move to the Recommended column. We should eventually address this, but it's not high priority for now, given that this won't trigger a BIDS validation error, nor does it prevent users from entering the information.

@bhatiadheeraj can you please add a box around each column in the interface. I mean the following. Currently the interface for the metadata has 3 columns: Required, Recommended and Optional. I think it would be helpful to have each column be marked by a very lightly weighted box. Similar to the ezBIDS landing page box see here.

Ready for review !

@bhatiadheeraj there's no validation to differentiate between number and array-type metadata values. For example, with perf/asl data the "PostLabelingDelay" can be either a number or array value, but if the user specifies the type as number and provides an array (or vice versa), this isn't flagged. We should alert users when this occurs.

It should be resolved now ! To see changes please refresh the page.
Thanks for pointing it out !

LGTM, I'll merge this PR


backport sortByName() to 0.9.X

Backporting PR #522 to the 0.9.x branch. This seems to have been in at one point; because the original patch for master (a different PR) was upported from 0.9.x. While testing 10.0-alpha with Grafana; the sortByName() Function did just that..function. When reverting back to the latest 0.9.x source; the function caused all of my grafana panels to go blank. Panel was calling for a function that's not in 0.9.x.
see (https://github.com/grafana/grafana/issues/690) for more details.

:+1: to merging this.

The function tests need to be backported to 0.9.x before we can add in a test for this. I also feel like its unnecessary considering that we're just calling sort/cmp.

:+1:
I backported that to my branch, but was disttracted from backporting tests, sorry...


How to bind an audio file to a video file

Hi, I'm trying to merge a video file (with no audio) with its audio file , i've tried this
`import ffmpeg
video = ffmpeg.input('video.mp4')
audio = ffmpeg.input('audio.mp4')
result = ffmpeg.output(video, audio, 'output.mp4')
ffmpeg.run(result)`
when i run it it doesn't stop and the output.mp4 file keeps getting bigger.. Any correct way to do this?

result = ffmpeg.output(video, audio, 'output.mp4', codec='copy')
This will do the work


Metastore failed to send event to control plane on startup

2023-01-20T19:49:07.301Z  INFO quickwit: version="0.4.0-nightly" commit="e2e18ae"
2023-01-20T19:49:07.310Z  INFO quickwit_config::quickwit_config::serialize: Using listen address as advertise address. advertise_address=<IP_ADDRESS>
2023-01-20T19:49:07.314Z  WARN quickwit_config::quickwit_config::serialize: Cluster ID is not set, falling back to default value. cluster_id=quickwit-default-cluster
2023-01-20T19:49:07.314Z  WARN quickwit_config::quickwit_config::serialize: Peer seed list is empty.
2023-01-20T19:49:07.314Z  INFO quickwit_cli: Loaded Quickwit config. config_uri=file:///Users/guilload/Workspace/repositories/quickwit/config/quickwit.yaml config=QuickwitConfig { cluster_id: "quickwit-default-cluster", node_id: "node-lingering-jYZT", enabled_services: {Metastore, Janitor, ControlPlane, Indexer, Searcher}, rest_listen_addr: <IP_ADDRESS>:7280, gossip_listen_addr: <IP_ADDRESS>:7280, grpc_listen_addr: <IP_ADDRESS>:7281, gossip_advertise_addr: <IP_ADDRESS>:7280, grpc_advertise_addr: <IP_ADDRESS>:7281, peer_seeds: [], data_dir_path: "/Users/guilload/Workspace/repositories/quickwit/qwdata", metastore_uri: Uri { uri: "file:///Users/guilload/Workspace/repositories/quickwit/qwdata/indexes#polling_interval=30s" }, default_index_root_uri: Uri { uri: "file:///Users/guilload/Workspace/repositories/quickwit/qwdata/indexes" }, indexer_config: IndexerConfig { enable_opentelemetry_otlp_service: true, split_store_max_num_bytes: Byte(100000000000), split_store_max_num_splits: 1000, max_concurrent_split_uploads: 12 }, searcher_config: SearcherConfig { enable_jaeger_service: true, fast_field_cache_capacity: Byte(1000000000), split_footer_cache_capacity: Byte(500000000), max_num_concurrent_split_searches: 100, max_num_concurrent_split_streams: 100 }, ingest_api_config: IngestApiConfig { max_queue_memory_usage:<PHONE_NUMBER>, max_queue_disk_usage:<PHONE_NUMBER> } }
2023-01-20T19:49:07.315Z  INFO quickwit_cluster::cluster: Joining cluster. cluster_id=quickwit-default-cluster node_id=node-lingering-jYZT enabled_services={Metastore, Janitor, ControlPlane, Indexer, Searcher} gossip_listen_addr=<IP_ADDRESS>:7280 gossip_advertise_addr=<IP_ADDRESS>:7280 grpc_advertise_addr=<IP_ADDRESS>:7281 peer_seed_addrs=
2023-01-20T19:49:07.316Z  INFO chitchat::server: initial_seed_addrs={}
2023-01-20T19:49:07.321Z  INFO quickwit_grpc_clients::balance_channel: Adding `control_plane` servers to client pool. server_addresses={<IP_ADDRESS>:7281}
2023-01-20T19:49:07.348Z  INFO quickwit_ingest_api::ingest_api_service: Ingest API partition id ingest_partition_id=ingest_partition_01GQ51VEDQDCFQ6TJR0VWT83NV
2023-01-20T19:49:07.352Z  INFO quickwit_config::index_config::serialize: Index config does not specify `index_uri`, falling back to default value. index_id=otel-trace-v0 index_uri=file:///Users/guilload/Workspace/repositories/quickwit/qwdata/indexes/otel-trace-v0
2023-01-20T19:49:07.424Z ERROR quickwit_metastore::metastore::metastore_with_control_plane_triggers: Failed to send index event to the control plane on `create-source`: `status: Unavailable, message: "error trying to connect: tcp connect error: Connection refused (os error 61)", details: [], metadata: MetadataMap { headers: {} }`.
2023-01-20T19:49:07.435Z  INFO quickwit_indexing: Starting indexer service.
2023-01-20T19:49:07.444Z  INFO quickwit_indexing::actors::ingest_api_garbage_collector: ingest-api-garbage-collect-operation
2023-01-20T19:49:07.445Z  INFO quickwit_janitor: Starting janitor service.
2023-01-20T19:49:07.446Z  INFO quickwit_janitor::actors::garbage_collector: garbage-collect-operation
2023-01-20T19:49:07.446Z  INFO quickwit_janitor::actors::garbage_collector: Garbage collecting indexes. index_ids=otel-trace-v0
2023-01-20T19:49:07.448Z  INFO quickwit_janitor::actors::delete_task_pipeline: Spawning delete tasks pipeline. index_id=otel-trace-v0 root_dir=/Users/guilload/Workspace/repositories/quickwit/qwdata/delete_task_service
2023-01-20T19:49:07.448Z  INFO quickwit_control_plane::scheduler: Apply physical indexing plan: PhysicalIndexingPlan { indexing_tasks_per_node_id: {"node-lingering-jYZT": [IndexingTask { index_id: "otel-trace-v0", source_id: "_ingest-api-source" }]} }
2023-01-20T19:49:07.448Z ERROR quickwit_control_plane::scheduler: Cannot create indexing service client for indexer, skip indexing plan. indexer_node_id=node-lingering-jYZT err=transport error

Caused by:
    0: error trying to connect: tcp connect error: Connection refused (os error 61)
    1: tcp connect error: Connection refused (os error 61)
    2: Connection refused (os error 61)

Indexers going up and down are also expected. In this case, the indexer was probably not ready yet. The control plane should retry and maybe log a warning instead?

I ran into this issue again. The issue is that nodes declare themselves ready (i.e. they have established a connection to the metastore) before actually starting their services (gRPC services and REST handlers). We need to spawn the readiness task last.

Closed via #2940.


Use alternate runtime APIs to reduce allocs / cpu

benchmark                               old ns/op     new ns/op     delta
BenchmarkLocal_StartSpanFromContext-8   1382          718           -48.05%

benchmark                               old allocs    new allocs    delta
BenchmarkLocal_StartSpanFromContext-8   6             4             -33.33%

benchmark                               old bytes     new bytes     delta
BenchmarkLocal_StartSpanFromContext-8   376           224           -40.43%

Added a small commit to the PR, to help understand performance composition. Thanks for this Stuart!

Good call - allows us to understand the relative perf of those runtime functions


Distinguish between Builder and Editor for event_origin

Fixes #10169

Please CR @javitonino
cc/ @jmartinter

This works if we want dashboard events to count as whatever tool the user is configured to be using :+1:

Yup! That's the idea 👍


feat: rebrand as lintroll

:tada: This PR is included in version 1.4.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


COL-406: add stories api rest doc and restructure the soap part of stories

Pair developed with @pluizigeEend

@Adam-Dupaski could you review this PR so we can merge it into this feature branch? We're not publishing yet, so we'll keep it in this branch


Add pudl id mapping rst docs

This PR:

Changes the name of the mapping spreadsheet from mapping_eia923_ferc1.xlsx to pudl_id_mapping.xlsx. It also removes extraneous tabs from the spreadsheet so there are only two: one for utility mapping and one for plant mapping.

Add columns to pudl_id_mapping.xlsx utility tab to identify utilities that have shown up before (using utility_id_ferc1 and utility_id_eia record identification).

Adds an RST file to the Development docs tree explaining the PUDL ID mapping process.

Review TO DO:

Mostly just build and read through the docs and make sure it all looks good/makes sense.

Code TO DO:

[ ] Using the new columns in the plant_id_pudl mapping sheet utility tab, update utility ids. This might have to be a new issue.
[x] Learn more about the utility mapping process and the different tabs. Currently, the tests are failing because they are finding a few unmapped utilities because I pointed it at a different tab on the mapping spreadsheet.
[x] Add more detail in the utility id mapping section. How to you get the utilities from the unmapped spreadsheets into the mapping spreadsheet? Are there any caveats or formulas you have to pay attention to? Do you have to manually assign utility_id_pudl?

It looks like there are some failures happening in test_unmapped_utils_ferc1 maybe because of the file name change?
It looks like you also haven't deleted some of the extra tabs in the file. I know you were thinking about that so idk if it isn't just checked in or what.

I think it might actually be because there are two new unmapped utilities?! I don't know where those guys came from....


Draft: add AWS WAF

Add AWS WAF documentation

Draft status is contingent on a successful PR to matanolabs/matano for the managed log source being accepted. I'm working on that now.


options don't break the cache

Compiling without the asString option and then compiling with the asString option produces the same object output since the result is cached.

Created a pull request for this issue.


Python debug mode not working properly

Environment data

VS Code version: 1.55.2-1
Extension version (available under the Extensions sidebar): v2021.3.680753044
OS and version: 5.11.14-arch1-1
Python version: 3.9.3-1
Type of virtual environment used: N/A
Relevant/affected Python packages and their versions: debugpy (1.2.1)
Relevant/affected Python-related VS Code extensions and their versions: ms-python.python
Value of the python.languageServer setting: Pylance

Expected behaviour
If there are breakpoints or exceptions, when run in debug mode, application should be stopped and taken to breakpoints.
Actual behaviour
When run in debug mode the application doesn't stop where it should.
Steps to reproduce:

I'm running a minimal file with no other extensions enabled

print('foo')

def bar():
    print('bar')

raise Exception('raising exception!')

bar()

I'm also using an autogenerated launch.json for the sake of simplicity

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        }
    ]
}

I set a breakpoint on the first line.

Run file in debug mode.

Logs

Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)

foo
Traceback (most recent call last):
  File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/isinyaaa/.vscode/extensions/ms-python.python-2021.3.680753044/pythonFiles/lib/python/debugpy/__main__.py", line 45, in <module>
    cli.main()
  File "/home/isinyaaa/.vscode/extensions/ms-python.python-2021.3.680753044/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 444, in main
    run()
  File "/home/isinyaaa/.vscode/extensions/ms-python.python-2021.3.680753044/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 285, in run_file
    runpy.run_path(target_as_str, run_name=compat.force_str("__main__"))
  File "/usr/lib/python3.9/runpy.py", line 268, in run_path
    return _run_module_code(code, init_globals, run_name,
  File "/usr/lib/python3.9/runpy.py", line 97, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/isinyaaa/projects/test/test.py", line 6, in <module>
    raise Exception('raising exception!')
Exception: raising exception!

same here

+1
Happens to me on 1.55.2 as well.
I also tested with latest insiders build:
Version: 1.56.0-insider
Commit: ce791d27dc9889a392f4d29abefe9c53eb0b5129
Date: 2021-04-16T11:25:09.908Z
Electron: 11.4.2
Chrome: 87.0.4280.141
Node.js: 12.18.3
V8: <IP_ADDRESS>-electron.0
OS: Linux x64 5.11.14-arch1-1
with the extension version:
v2021.3.680753044
Could it be related to the recent changes to the Breakpoints:
https://code.visualstudio.com/updates/v1_55#_debugging

Having the same issue, couldn't debug my django application.

I just realized that Python version 3.9.3 had a major bug:
https://www.python.org/downloads/release/python-393/
So I built 3.9.4 from source and tested debugging.
It now works. So it looks like the issue will be resolved as soon as 3.9.4 hits repositories...
can anyone else reproduce?

@yumasheta thanks for the heads up. I downgraded python 3.9.3-1 -> 3.9.2-1 on my Arch system and now the Python debugger in visual-studio-code-bin AUR package is working again.

@yumasheta @bulletmark can confirm as well. I built the 3.9.4 from source and it works flawlessly.

Thanks for the response for the community. This is due to a issue with python itself.


String.format ignores case on placeholder

https://github.com/godotengine/godot/commit/f8e8ac2c664a12f3af2b9bb545da193d86c75503
var rs = "Hi, {name} ... Uname}!!!? lname} ;( ".format([["name","Godette"]])
rs = rs.format([["name","Godette".to_upper()]], "U_}")
print(rs.format([["name","Godette".to_lower()]], "u_}"))

Should print
Hi, Godette ... GODETTE!!!? godette ;(
but shows
Hi, Godette ... GODETTE!!!? GODETTE ;(
Easy to fix, use "replace" instead of "replacen"
https://github.com/godotengine/godot/blob/master/core/ustring.cpp#L2804
https://github.com/godotengine/godot/blob/master/core/ustring.cpp#L2784
https://github.com/godotengine/godot/blob/master/core/ustring.cpp#L2771
Also need to have a look at the last comments in https://github.com/godotengine/godot/issues/5493

There are issues in your code snippet, it doesn't run.

I guess it was meant to be:
	var rs = "Hi, {name} ... Uname}!!!? uname} ;( ".format([["name","Godette"]])
	rs = rs.format([["name","Godette".to_upper()]], "U_}")
	print(rs.format([["name","Godette".to_lower()]], "u_}"))

Man is this string formatting convoluted and unreadable...

Since you implemented it (#7010), you're probably the best equipped dev to fix it :)


pitch_filter

Firstly, amazing work with this project!
I found pitch_filter(X, P, Ex, Ep, Exp, g); the g is initial in while() for every frame, I feel it is  somewrong

while (1) {
kiss_fft_cpx X[FREQ_SIZE], Y[FREQ_SIZE], N[FREQ_SIZE], P[WINDOW_SIZE];
float Ex[NB_BANDS], Ey[NB_BANDS], En[NB_BANDS], Ep[NB_BANDS];
float Exp[NB_BANDS];
float Ln[NB_BANDS];
float features[NB_FEATURES];
float g[NB_BANDS];
int silence = compute_frame_features(noisy, X, P, Ex, Ep, Exp, features, xn);
pitch_filter(X, P, Ex, Ep, Exp, g);
//printf("%f %d\n", noisy->last_gain, noisy->last_period);
for (i=0;i<NB_BANDS;i++) {
  g[i] = sqrt((Ey[i]+1e-3)/(Ex[i]+1e-3));
  if (g[i] > 1) g[i] = 1;
  if (silence || i > band_lp) g[i] = -1;
  if (Ey[i] < 5e-2 && Ex[i] < 5e-2) g[i] = -1;
  if (vad==0 && noise_gain==0) g[i] = -1;

}

Thank you very much for your reply so quikely!  So you mean pitch filter doesn't seem to work in trainning process?  I trained a model using your open source code, but denoise audio 's gain is less than your model. So I think pitch filter not work perfectly.


Digits out of order  (STM32F)

I'm testing this lib on platformio + VS code, using STM32F.
The code below should show 1234 on the display, but it shows the digits "1  4". Center digits do not appear
#include <TM1637.h>

TM1637 display;

const uint8_t CLK_PIN = PC13;
const uint8_t DTA_PIN = PC14;

void StartDisplay(void)
{
    display.init(CLK_PIN, DTA_PIN, 4);       // Clock pin, data pin, number digits
    display.displayClear();

    long aux = 1234;
    display.displayInt(aux);
}

Changing the code, the display shows: "3216". My display only has 4 digits.
#include <TM1637.h>

TM1637 display;

const uint8_t CLK_PIN = PC13;
const uint8_t DTA_PIN = PC14;

void StartDisplay(void)
{
    display.init(CLK_PIN, DTA_PIN, 6);       // Clock pin, data pin, number digits
    display.displayClear();

    long aux = 123456;
    display.displayInt(aux);
}

(updated your post)
I'm ill at the moment so it might take some weeks before I can dive into this issue. So a quick remark:
Never tested the library with STM32F, your fix is interesting as it might point to a cause (layout of memory ?).
Do you get the same/similar problems with float?  e.g. TM.displayFloat(3.456);

(updated your post)
I'm ill at the moment so it might take some weeks before I can dive into this issue. So a quick remark:
Never tested the library with STM32F, your fix is interesting as it might point to a cause (layout of memory ?).
Do you get the same/similar problems with float? e.g. TM.displayFloat(3.456);

Take your time. I hope you get well.
Yes, with float the same problem happens.

The problem is in
void TM1637::displayRaw(uint8_t * data, uint8_t pointPos)

As it seems hardcoded for 6 digits display (Only one tested so far).
Do you have a link to the datasheet of the 4 digit display?
So I think you should add your patch there, like this.
void TM1637::displayRaw(uint8_t * data, uint8_t pointPos)
{
  if (_digits == 4)
  {
    data[5] = data[1];
    data[4] = data[2];
  }
  ...

Then it might work for float too (please verify)

I tested it and it worked fine. Although in displayFloat(float value) there is some rounding down (3.145 is shown as "3144").

Another question: why do you send bytes 3, 4 and 5 and then 0, 1, 2, in  void TM1637::displayRaw(uint8_t * data, uint8_t pointPos) ?

I will add such a 4 digit display next time I order hardware.

I will add such a 4 digit display next time I order hardware.

Now, it works fine, for this display.
`void TM1637::displayRaw(uint8_t * data, uint8_t pointPos)
{
uint8_t b, dp;
start();
writeByte(TM1637_ADDR_AUTO);
stop();
start();
writeByte(TM1637_CMD_SET_ADDR);
for(uint8_t i = _digits - 1; i < 250; i--) // need overflow, to break out
{
dp = data[i] & 0x80;
data[i] &= 0x7f;
if(data[i] <= 17) {
b = seg[data[i]];
}
else if(data[i] <= 37) {
b = alpha_seg[data[i]-18];
}
if (i == pointPos || dp) b |= 0x80;
writeByte(b);
}
stop();
start();
writeByte(TM1637_CMD_DISPLAY | _brightness);
stop();
}`

Thanks for this code, it is pretty straightforward, If i understand correctly you write the bytes  in order 3, 2, 1, 0.
I leave this issue open until I have time (and a display) to test and mix/merge the code.

Thanks for this code, it is pretty straightforward, If i understand correctly you write the bytes in order 3, 2, 1, 0.

Yes, you're right.
This is the layout of the display I use.

FYI, I ordered a 4 segment display, so if all goes well next week I can start testing.

FYI, I ordered a 4 segment display, so if all goes well next week I can start testing.

Thanks a lot!

@diegostf
The 4 segment "clock" display is in and I have a working version.
There is redundancy in the code in displayRaw() that I want to refactor.
The ":" of the clock is the decimal point of digit 1
to be continued (after Easter)

@diegostf
Created a develop branch in which the 4 digit display is supported. Just use 4 as last parameter in init().
displayRaw() has been refactored to use a digitOrder[] array. This array can be filled wit setDIgitOrder() by the user to adjust non-supported displays. Currently this array has 8 elements to support displays up to 8 digits.
Please verify if the library now works for you.  (note a small example has been added too).

@diegostf Created a develop branch in which the 4 digit display is supported. Just use 4 as last parameter in init().
displayRaw() has been refactored to use a digitOrder[] array. This array can be filled wit setDIgitOrder() by the user to adjust non-supported displays. Currently this array has 8 elements to support displays up to 8 digits.
Please verify if the library now works for you. (note a small example has been added too).

@RobTillaart did you update this repository? I didn't find new code.

https://github.com/RobTillaart/TM1637_RT/tree/develop

@diegostf
Merged the new version into master,
if there are still (or new) related problems feel free to reopen the issue.


[v2] Add prepare to send func pr

This PR adds the "prepare to send Azure function" to the pipeline.
This Azure function takes a message off of the queue to when it is time to send a notification; checks the audience selection for that notification; based on the audience selection the function creates and places messages on the queue to send each message individually.


[GUI] Filtering users by input text for user changing pulldown in Workspace page

When there are lots of users, user changing pulldown is too long to select the intended user.
Place a input box on the top of pulldown and be able to filter users like User page.

MUI Menu has already this feature. Type keys and jump to the matched items.
https://mui.com/material-ui/react-menu/


Add ignore config to no-unknown-property rule

Context: insin/babel-plugin-react-html-attrs#4

That's a very specific use case, but I am not against adding such option.
Just a couple of things:

I'd prefer to use an ignore option instead of allow (like prop-types or jsx-pascal-case)
You are referring to your specific use case in the documentation. I think it can be confusing. Maybe just saying that you can ignore some properties is enough ?

Changed the option to ignore and made the documentation more generic, as per other rules.

Merged, thanks!


[FEATURE REQ] Filter for labels in Feature Flags

Is your feature request related to a problem? Please describe.
The feature management library azure-spring-cloud-feature-management-web (see maven dependency below) currently does not support to filter feature flags for labels.
    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>azure-spring-cloud-feature-management-web</artifactId>
        <version>2.0.1</version>
    </dependency>

We have a front end application that supports different channels and the feature flags for this application are defined channel wise. We do this by having the channel name as part of the feature flag name. To decide, if a feature is active in a channel we have to filter the feature flags if the feature flag name contains the channel name.
Current example for Feature Manager in Azure Portal:
Name                             |        Label
channel-x.feature-one   |        (No label)
channel-y.feature-one   |        (No label)
channel-z.feature-one   |        (No label)
channel-x.feature-two   |        (No label)
channel-y.feature-two   |        (No label)
channel-z.feature-two   |        (No label)
...
Describe the solution you'd like
It would be very helpful for our use case to store the channel name as a label in the configuration setting of the feature flag and extend the azure-spring-cloud-feature-management-web library to filter the feature flags for a label or a list ob labels.
Wanted example for Feature Manager in Azure Portal:
Name               |      Label
feature-one      |      channel-x
feature-one      |      channel-y
feature-one      |      channel-z
feature-two      |      channel-x
feature-two      |      channel-y
feature-two      |      channel-z
...
This way the list of features would be more clear and concise as the features with the same name would by grouped together
Describe alternatives you've considered
n.a.
Additional context
n.a.

This is supported in Spring Boot 2 in:
<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-appconfiguration-config</artifactId>
    <version>4.7.0</version>
</dependency>

and Spring Boot 3 in:

com.azure.spring
spring-cloud-azure-appconfiguration-config
5.1.0


Bump wso2is.km.version

Description
Need to bump wso2is.km.version to latest
Affected Component
APIM
Version
4.2.0-alpha
Related Issues
No response
Suggested Labels
No response

This is done with https://github.com/wso2/product-apim/pull/13157/files


Clarify input files for scripts with dependencies

In this section: https://github.com/google/wireit#input-and-output-files
It reads like I would need to specify all the inputs of a bundle script, including the files it reads. But the bundle script example only includes the config as an input. I guess that the outputs of its dependencies are automatically used as inputs, but without seeing that example this isn't how I would have tried to write a bundle script myself.

The way it actually works is this:

When we run a script, we generate a fingerprint. The fingerprint is comprised of the configuration of the script, plus the hashes of the input files, plus the fingerprints of the dependencies.

If the .wireit/fingerprint file matches the latest fingerprint, the script is fresh and we do nothing. If there is a .wireit/cache/<script>/<fingerprint> entry, then we restore those files. Failing those, we run the script.

So if A depends on B, the output of B does not actually directly affect the fingerprint of A. Only the input files of B do, because B's fingerprint is included in A's fingerprint.
This approach is somewhat conservative, meaning we err on the side of running rather than skipping. It means we do not need to assume that B has correctly declared its outputs in order to decide whether A should run. We instead just assume that if something changed that caused B to re-run, then A should re-run too, regardless of what outputs were produced.
See also https://github.com/google/wireit/issues/245 where we are discussing changing this approach to be a little less conservative, and perhaps more intuitive too.
Closing this issue.


kontena [stateful?] stack rm does not remove volumes

kontena stack install matti/gogs
# configure gogs
kontena stack rm --force gogs
kontena stack install matti/gogs
# gogs still configured (volumes were not deleted)

How did you define the volumes, or did you just specify stateful flag?

Like this https://github.com/kontena/kontena/issues/1818

I guess stack rm would then need --no-remove-volumes or something in case you want to keep it.

--keep-volumes :)

on the other hand
volumes:
  - /data

are destroyed.
not sure how kontena should behave.

I've definitely needed to remove a stack before without removing the named volumes that go with it. I think "keep" should be the default and an option like "--remove-named-volumes" would be appropriate to make it clear that it only applies to named volumes (unnamed are already destroyed which is fine by me)

Needs explicit support for stack-level volumes (#1803) to consider support for actually deleting volumes.
The current volumes: foo:/foo named volume thing is pretty much an accidential feature passed through as-is to Docker, not something that Kontena actually recognizes.

With Kontena 1.2 and explicit stack volumes, this should now work for basic local volumes. The kontena stack rm will terminate and remove the services using those volumes, allowing the kontena volume rm command to be used to destroy the actual volumes.


Updated to align with Camtrap DM, batch 2

[x] camera_angle: Indicate this is vertical: #157
[x] camera_heading/direction: Add, for horizontal orientation: #157
[x] session: Update definition to highlight temporal aspect, mention tags: #159
[x] array: Update definition to highlight spatial aspect (incl grid), mention tags: #159
[x] tags: Review definition Definition is ok
[x] add thumbnail_path: create issue: #155
[x] favourite (or highlight): new boolean for multimedia: #158
[x] observation_type: undefined -> unknown: #161
[x] observation_type: empty -> blank: #161
[x] taxonomic scope: add rank: #154
[x] taxonomic scope: add taxon_id_reference per taxon, remove at taxonomic scope level: #154

{
  "taxon_id": "3Z5",
  "scientific_name": "Rodentia",
  "rank": "class",
  "taxon_id_reference": "Catalogue of Life",
  "vernacular_names": {
    "en": "rodents",
    "nl": "knaagdieren"
  }
}

All suggested changes have been implemented.


Update the documentation with the latest changes for OS bootstrap

At a minimum, you have to add a variable "bootstrap_os" to your global variables for this to work. I would like to see if we can fix this a step further so that there are no documentation requirements or manual steps for nodes that require bootstrap.

it seems done

Missed documentation update:
https://github.com/kubernetes-incubator/kargo/blob/master/docs/coreos.md mentions coreos-bootstrap.yml which were removed some time ago.


[Idea] Reusable workflows

The current design uses two separate API requests for workflow definition and activation / instantiation. Workflows seem to be oriented towards single-use. Alternatives that seem clearer to me would be:

Use a single API request to define and schedule activation of the workflow. Workflows continue to be single-use.
Continue to define and activate workflows independently. Persist workflows in the postgres db to make them reusable / reference-able as a dependency by other workflows. Could even introduce the idea of a workflow template to make defining variants of some common workflow easy.

Curious what folks think about this? Am I missing something about the intended use pattern for Orchard?

@garden-of-delete separated activation step is mainly to keep it more align with AWS data pipeline API at this stage. There is no particular reason to separate them and we might want to revisit this later to simplify the workflow in v2


Reduce CPU usage to prevent ban

Did you get any complaints from DO?

No, but when I tried to register a new account, they banned it. I think soon they can also ban accounts with suspicious instances


Fix coverage generation

There are two problems with coverage right now.
The first is that coverage dropped significantly after upgrading to Bazel 7. Lines that should be counted are not.
The second problem, which turned up after upgrading the codecov action to v4, is that coverage uploads which seem to have been succesful do not show up on codecov. https://app.codecov.io/gh/maplibre/maplibre-native/commits
The release notes mention:

Tokenless uploading is unsupported. However, PRs made from forks to the upstream public repos will support tokenless (e.g. contributors to OS projects do not need the upstream repo's Codecov token). This doc shows instructions on how to add the Codecov token.

So not sure what is going on here.
For now I disable coverage as a required step until it is fixed.

Actually, let me revert the upgrade, there seem to be more people that are having problems.

I reported the issue here:
https://github.com/codecov/codecov-action/issues/1303


Folded code before selection area breaks column selection

Gist

I'm closing this issue. I haven't heard of any others with the issue and I cant seem to replicate


Add hidden string to authenticate method

Purpose
Use hidden string to avoid accidental printing of plaintext credentials
Fixes UML-2655
Checklist

[x] I have performed a self-review of my own code

I've fixed the PHPCs stuff in my other PR


[CI] Toward CI infrastructure as code

#4401 and #4463 brought major improvement to continuous integration (*), by adding a whole new suite of platforms and targets (especially NVIDIA GPUs). Now we have automated nightly builds for Windows and Linux platforms, and all capable of running GPU algorithms (gpu_hist) out of box. This was made possible because we self-host a CI software known as Jenkins, which allows for greater customization, such as running GPU workers (**). However, the use of self-hosted CI has brought a few endemic problems:

Managing the CI infrastructure is a lot of manual work. There are many running parts in the cloud platform (AWS) that need to be configured "just right" in order for the CI to work. It is easy to break some configuration and make the CI inoperable. Example: Security group, AMIs. Docker makes some parts of this task easier (package installation is automated), but other configuration is still manual. Even if problems are found and fixed by manual intervention, the diagnosis and fix are not documented, so the same problem may occur in the future.
"The Bus Factor". Currently, the management of self-hosted CI infrastructure (https://xgboost-ci.net) is wholly dependent on me, because a large part of the infrastructure is manually configured. That means that there's no one else who can manage the CI if I am unavailable for some reason. I'd like to be able to delegate management to trusted contributors.
~Instability in the provision of EC2 workers. Recently, quite a few tests timed out because Jenkins somehow could not allocate GPU agents in time, e.g. PR 4876, PR 4945. The cause is likely to be a problem with the EC2 plugin, since I do not see any error reported in the CloudTrail.~ I haven't seen this problem for a while. The EC2 plugin mostly works and launches new workers in response to incoming test jobs.
~Lack of financial control. Currently, there is no mechanism to control spending, and I have to manually monitor the AWS billing page to enforce the budget (***). What if someone submits a pull request containing bitcoin mining code and keeps force-pushing 12 times in a row?~ Fixed in #5884

All in all, these endemic issues waste developers' time and adds yet another obstacle to open source contributions (as if contributors didn't need another problem!). To address them, I'd like to revamp the CI as follows:

~Infrastructure as Code. All cloud configuration should be expressed as code. Then~

~CI configuration is now reproducible and fully documented.~
~Contributors can now make changes to the infrastructure (subject to approval from the PMC).~
~We can review every configuration change with a code review.~

~The CI for Apache MXNet is a good example: https://github.com/apache/incubator-mxnet-ci. It utilizes Terraform.~ I'm now skeptical of the "Infrastructure as Code" idea. The concept proves to be useful in other situations and places, but not for the XGBoost project as it is now. See my comment below.

~Custom auto-scaling logic. Instead of using the EC2 plugin in Jenkins, we should implement a custom logic for provisioning EC2 workers. We can then debug any problem in EC2 provision and fix it. Additionally, we can transparently enforce financial budget via commits and pull requests. Again, I refer to https://github.com/apache/incubator-mxnet-ci for an example.~ I decided not to pursue this route. The EC2 plugin is good enough, and has grown more stable over time. I found out that custom auto-scaler is not necessary for financial control. See #5884. Reading the autoscaler code from https://github.com/apache/incubator-mxnet-ci convinced me of the sheer complexity of provisioning EC2 workers. This is also why the EC2 plugin in Jenkins is as large as it is.

Automated management of machine images. Currently, I manually configure all Windows workers, because I cannot use Docker (****) So I spent hours installing different versions of Visual Studio and CUDA. Since the process is so tedious, I don't get to perform system updates in the Windows workers, so they get out-dated over time and become vulnerable to security holes. I'd like to automate the creation of Windows workers. See https://github.com/apache/incubator-mxnet-ci/tree/master/services/jenkins-slave-creation-windows.

(*) Here, continuous integration refers to the practice of using an automated test farm in order to validate every code change (in our case, pull requests).
(**) If GPU support was not a requirement, we could just use managed CI services such as Azure Pipelines. Unfortunately, to my knowledge, there is no managed CI solution that offers GPU workers.
(***) I have yet to compile a regular budget/spending report. Mea culpa.
(****) NVIDIA docker is unavailable for Windows: NVIDIA/nvidia-docker#429
@dmlc/xgboost-committer

Update: one of the contributors to MXNet CI, @larroy, strongly advised against the use of Terraform. It's better to use cloudtools/troposphere

I made some updates.
Recently, I've grown skeptical about the whole "infrastructure as code" idea. Tools like Terraform, Troposphere, or AWS CloudFormation may automate the setup of CI, but they also introduce a specialized abstraction layer. The XGBoost project doesn't have anyone who specializes in devops, and all the current contributors (including me) would rather write code and fix bugs than learning a whole new devops language and tools.
I went ahead and documented the detailed steps it takes to set up a functioning Jenkins CI server in hcho3/xgboost-devops. One of the touted benefit of "infrastructure as code" is documentation, and the documents in xgboost-devops will serves this goal somewhat.

I think we should still try to automate the generation of machine images. Time to pick up some Powershell. Also AWS provides EC2 Image Builder which automates the generation of custom AMIs.

Why don't you use github actions?

We are in the process of setting it up.

Now we have an automated script to setup workers: https://github.com/hcho3/xgboost-devops/blob/d4c8d42061254202ca9b9c4ec0be0c9db0624b40/worker_image_builder/windows_worker_setup.ps1

Completed in #8142


Open up port 8091

For testing I did it for the couchbase-dev project, but probably want to automate this.

Added firewall rule.  Done.


Implements Vera

This PR aims to implement Vera, which introduces trainable parameters d and b while keeps LoRA matrices A and B frozen, random, and shared across layers.
I've opted to put the Vera implementation under the Lora implementation (like IA3)
Paper: https://arxiv.org/pdf/2310.11454

@calpt Regarding the paper: from my first readings it seems like it doesn't mention any scaling via a constant alpha/r or any gating. Should I still include it in the vera implementation to make it consistent with the lora and IA3 modules? I am also assuming the com and com_inv would also need to be re-included for Vera in order to allow for integration with the LoRALayer class

@calpt Regarding the paper: from my first readings it seems like it doesn't mention any scaling via a constant alpha/r or any gating. Should I still include it in the vera implementation to make it consistent with the lora and IA3 modules? I am also assuming the com and com_inv would also need to be re-included for Vera in order to allow for integration with the LoRALayer class

yes, doesn't hurt to include these options even if not mentioned in the paper, unless this makes the implementation significantly more challenging

I'll also include a new test module to test the Vera module similar to the IA3 and the Lora test modules soon


Neo-tree source selector crashes with user provided external sources

Related: https://github.com/miversen33/netman.nvim/issues/155
When providing a "third party" source, the source selector appears to fail on loading the state of that source.
The specific error being thrown is
E5108: Error executing lua ...nvim/lazy/neo-tree.nvim/lua/neo-tree/sources/manager.lua:39: attempt to index local 'state' (a nil value)
stack traceback:
        ...nvim/lazy/neo-tree.nvim/lua/neo-tree/sources/manager.lua:39: in function 'create_state'
        ...nvim/lazy/neo-tree.nvim/lua/neo-tree/sources/manager.lua:111: in function 'get_state'
        ...re/nvim/lazy/neo-tree.nvim/lua/neo-tree/command/init.lua:79: in function 'execute'
        ...are/nvim/lazy/neo-tree.nvim/lua/neo-tree/ui/selector.lua:384: in function <...are/nvim/lazy/neo-tree.nvim/lua/neo-tree/ui/selector.lua:373>

That gibberish may not make a ton of sense so below I will attempt to explain what I am seeing and what I believe the problem is.

In order to provide a third party source, a user must specify that source in their neo-tree configuration. This is usually done as follows
require("neo-tree").setup({
    sources = {
        "path.to.custom.source", -- The third party source we care about
    }
})

Following the setup path, this module is checked here
    else
      -- fully qualified module name
      -- or just a root level module name
      is_external_ns, module = pcall(require, source)
      if is_external_ns then
        name = module.name or name
        all_sources[name] = source
      else
        log.error("Source module not found", source)
        name = nil
      end
    end
    if name then
      default_config[name] = module.default_config or default_config[name]
      table.insert(all_source_names, name)
    end
  end

The important bit to note here is how name is being populated and used later.
If not provided, name defaults to the last bit of the module path (though this is just to clarify what name will be here, it doesn't have a ton of importance).
Name default source: https://github.com/nvim-neo-tree/neo-tree.nvim/blob/0a2e518d3169aeb62d544329e6aa1a1925d1e0fd/lua/neo-tree/setup/init.lua#L515-L516
    local parts = utils.split(source, ".")
    local name = parts[#parts]

Notice that if a name is found, a configuration is loaded and stored for that source based on its name? Keep that in mind.

Moving forward to the source selector generation
---get_selector_tab_info:
-- Returns information to create a tab
---@param source_name string: name of source. should be same as names in `config.sources`
---@param source_index integer: index of source_name
---@param is_active boolean: whether this source is currently focused
---@param separator table: `{ left = .., right = .. }`: output from `get_separators()`
---@return table (see code): Note: `length`: length of whole tab (including seps), `text_length`: length of tab excluding seps
local get_selector_tab_info = function(source_name, source_index, is_active, separator)
  local config = require("neo-tree").config
  local separator_config = utils.resolve_config_option(config, "source_selector", nil)
  if separator_config == nil then
    log.warn("Cannot find source_selector config. `create_selector` abort.")
    return {}
  end
  local get_strlen = vim.api.nvim_strwidth
  local text = separator_config.tab_labels[source_name] or source_name
  local text_length = get_strlen(text)
  if separator_config.tabs_min_width ~= nil and text_length < separator_config.tabs_min_width then
    text = M.text_layout(text, separator_config.content_layout, separator_config.tabs_min_width)
    text_length = separator_config.tabs_min_width
  end
  if separator_config.tabs_max_width ~= nil and text_length > separator_config.tabs_max_width then
    text = M.text_layout(text, separator_config.content_layout, separator_config.tabs_max_width)
    text_length = separator_config.tabs_max_width
  end
  local tab_hl = is_active and separator_config.highlight_tab_active
    or separator_config.highlight_tab
  local sep_hl = is_active and separator_config.highlight_separator_active
    or separator_config.highlight_separator
  return {
    index = source_index,
    is_active = is_active,
    left = separator.left,
    right = separator.right,
    text = text,
    tab_hl = tab_hl,
    sep_hl = sep_hl,
    length = text_length + get_strlen(separator.left) + get_strlen(separator.right),
    text_length = text_length,
  }
end

So to generate the sources for the winbar, we are pulling the sources (by module path) out of the loaded neo-tree configuration. The source selection code is below
-- @v:lua@ in the tabline only supports global functions, so this is
-- the only way to add click handlers without autoloaded vimscript functions
_G.___neotree_selector_click = function(id, _, _, _)
  if id < 1 then
    return
  end
  local sources = require("neo-tree").config.sources
  local winid, source_index = calc_source_from_click_id(id)
  local state = manager.get_state_for_window(winid)
  if state == nil then
    log.warn("state not found for window ", winid, "; ignoring click")
    return
  end
  require("neo-tree.command").execute({
    source = sources[source_index],
    position = state.current_position,
    action = "focus",
  })
end

When a source is selected, we pull the source and execute a focus event on that source.
Digging down the stack a bit, while this focus event is being executed, the neo-tree source manager attempts to get the current state of the selected source (either by fetching the state or creating a new one. In either case we get the above crash so it doesn't really matter).
When the manager attempts to create the state for the first time, it passes the source name to the internal create_state function within neo-tree.sources.manager
local function create_state(tabnr, sd, winid)
  local default_config = default_configs[sd.name]
  local state = vim.deepcopy(default_config, { noref = 1 })
  state.tabnr = tabnr
  state.id = winid or tabnr
  state.dirty = true
  state.position = {
    is = { restorable = false },
  }
  state.git_base = "HEAD"
  table.insert(all_states, state)
  return state
end

The crash is happening on the third line of this function, where we attempt to index the newly created state object by deepcopying the default_configs[sd.name] object.
Ok so to wrap this back around, sd.name is the literal source path as that is what is found in require("neo-tree").config.sources. So the code is trying to fetch (in my above example) default_configs["path.to.custom.source"]. HOWEVER if you recall, the configuration for this source is actually located at default_configs["source"] as the name is assumed to be either the last item in the module path, or a name provided with the module. In either case though, we are specifically looking for the source of the module path, which is incorrect.

I do not have a "simple" way to reproduce this, however I can replicate this behavior with the aforementioned netman external source (which is how I ended up here). I will work to create a simple external source to replicate this behavior, however you can also simply download the netman plugin, add netman.ui.neo-tree as a source to neo-tree and you should be able to replicate this behavior.
I don't know the best way to address this. There are a few spots this could be addressed, however a byproduct of us using the source path for the selector is that we also get some nasty names displayed, as we are not respecting the source name

I would think we should have get_selector_tab_info use the name of the source instead of the path as the default.
Something like
-- https://github.com/nvim-neo-tree/neo-tree.nvim/blob/e865e11006c7a11f3d027eec9f56e043c252f4ce/lua/neo-tree/ui/selector.lua#L106
-- local text = separator_config.tab_labels[source_name] or source_name
local text = separator_config.tab_labels[source_name] or ???

The main issue I see with this solution is that there doesn't appear to be any sort of "mapping" that we save to indicate a "short form name" (selector name) to the selector module path. It might be worth adding the full path to the source in its config? We can then simply iterate over the available source configurations to match a config up with the source and then pull the correct name out? This might also be a solve problem elsewhere that I am not seeing, I'm not completely sure.
Thoughts? This seems like bad behavior but I could also have something misconfigured.

Ok so I have created a dummy extension that does absolutely nothing and can replicate this issue. You can find the "source" here
https://github.com/miversen33/neo-tree-dummy-extension
To use it, the below init.lua script can be used (the same what I include in the readme of the repo)
-- Minimal configuration
-- mini.lua
-- Use with the --clean -u flags. EG nvim --clean -u mini.lua
-- This config will create a temp directory and will blow away that temp directory
-- everytime this configuration is loaded. Great for simulating a new installation
-- of a plugin

-- Setting some basic vim options
vim.opt.termguicolors = true
-- If you want to play around with this, you can set the do_clean
-- variable to false. This will allow changes made to
-- underlying plugins to persist between sessions, while
-- still keeping everything in its own directory so
-- as to not affect your existing neovim installation.
--
-- Setting this to true will result in a fresh clone of
-- all modules
local do_clean = true

-- Dummy var to make the dummy extension not provide a name
-- Set this to true to make the dummy extension not provide a name
-- otherwise it will provide the name "dummy"
-- vim.g.neo_tree_dummy_extension_no_name = true

local sep = vim.loop.os_uname().sysname:lower():match('windows') and '\\' or '/' -- \ for windows, mac and linux both use \

local mod_path = string.format("%s%sclean-test%s", vim.fn.stdpath('cache'), sep, sep)
if vim.loop.fs_stat(mod_path) and do_clean then
    print("Found previous clean test setup. Cleaning it out")
    -- Clearing out the mods directory and recreating it so
    -- you have a fresh run everytime
    vim.fn.delete(mod_path, 'rf')
end

vim.fn.mkdir(mod_path, 'p')

local modules = {
    {'nvim-lua/plenary.nvim'},
    {'nvim-tree/nvim-web-devicons'},
    {'MunifTanjim/nui.nvim'},
    {'nvim-neo-tree/neo-tree.nvim', branch = "v2.x", mod = "neo-tree"},
    {'miversen33/neo-tree-dummy-extension'}
}

for _, module in ipairs(modules) do
    local repo = module[1]
    local branch = module.branch
    local module_name = repo:match('/(.*)')
    local module_path = string.format('%s%s%s', mod_path, sep, module_name)
    if not vim.loop.fs_stat(module_name) then
        -- The module doesn't exist, download it
        local cmd = {
            'git',
            'clone'
        }
        if branch then
            table.insert(cmd, '--branch')
            table.insert(cmd, branch)
        end
        table.insert(cmd, string.format('https://github.com/%s', repo))
        table.insert(cmd, module_path)
        vim.fn.system(cmd)
        local message = string.format("Downloaded %s", module_name)
        if branch then
            message = string.format("%s on branch %s", message, branch)
        end
        print(message)
    end
    vim.opt.runtimepath:append(module_path)
end

print("Finished installing plugins. Beginning Setup of plugins")

for _, module in ipairs(modules) do
    if module.mod then
        print(string.format("Loading %s", module.mod))
        local success, err = pcall(require, module.mod)
        if not success then
            print(string.format("Failed to load module %s", module.mod))
            error(err)
        end
    end
end

-- --> Do you module setups below this line <-- --

local neo_tree = require("neo-tree")

neo_tree.setup({
    source_selector = {
        winbar = true,
    },
    sources = {
        "neo-tree-dummy-extension"
    },
})

-- --> Do your module setups above this line <-- --

print("Completed minimal setup!")

To use this, open your neovim instance with the --clean -u mini.lua flag. Once it completes run
:Neotree toggle and you will see the exact same crash as indicated in this bug report.

I'd say that the right thing to do here is to make sure that an external source is always referred to by it's name and never by the path to the module. The path to the module should only ever be used in the user config sources list as a means the identify the extension to be enabled. After setup is complete, it should always be keyed/referred to by its name.
There should probably also be a separate "display name" that is provided by the extension and used in the source selector tabs.

I will see about a PR (famous last words).
I'm thinking, should I close out #479 and just include that logic in this PR? The entire PR will be broken after this change anyway and honestly I need to redo that PR as it is given the feedback that was provided and the fact that its been sitting forever lol

This is definitely an overlap. I would say you should either update that PR to include these changes or just start a new one and reference that PR to link up the discussions that have happened around this. Whatever works best for you.

Fun fact!
Turns out omitting filesystem from your sources in your user config also breaks the source selector as it assumes filesystem will exist. That is actually what is breaking in the above minimal configuration. Its the exact same error so I assumed it was the fact that my third party module was breaking it, but it is infact because the source selector is looking for the filesystem module (or rather, the neo-tree.config.default_source module, which happens to be filesystem by default).
So there are a handful of issues that need to be addressed with the source selector. I will see if I can get that issue addressed as well

@cseickel
I assume this is intentional but I wanted to check with you.
In the initial setup of neo-tree, there is a section where we load the sources
for _, source in ipairs(user_config.sources or default_config.sources) do

So in short, we are either using the user provided sources or the default sources that we have included in Neo-tree. This makes sense, but then we go on to use "filesystem" as our default source assuming it will exist. However if the user doesn't specify filesystem in their user provided configuration and we don't merge the user provided sources with the default sources, its possible that our default source doesn't exist.
This causes errors down the road, for example in neo-tree.command
---  source = string   The source to use for this action. This will default
---                    to the default_source specified in the user's config.
---                    Can be one of:
---                    "filesystem",
---                    "buffers",
---                    "git_status",
--                     "migrations"

Here we are making the assumption that the user set a default_source or that one of our default sources exist. Its absolutely possible that neither are the case, and we don't currently check for that.

Thoughts on throwing an error on Neo-tree setup if there is no valid default_source set?
For the above test, I have updated it to include the filesystem source (so that it is valid for this test)

Thoughts on throwing an error on Neo-tree setup if there is no valid default_source set?

I think that it would be a better user experience if the default source doesn't exist or is invalid, then it will be selected for you as the first source in the list of available sources.

I think that it would be a better user experience if the default source doesn't exist or is invalid, then it will be selected for you as the first source in the list of available sources.

Just to argue my position for a sec ;)
If a user is providing a list of sources to use instead of the defaults, IMO it should be fair to toss an error that they also need to provide a default source.
That said, if you do not agree, I will put a bit of logic in to "pick" a default source if we don't have one.

How about we split the difference? Pick a default source and then log a warning about it?

Works for me :)
I will include that in this PR as well since its in the general same area I am working in. I should have a PR up soon ish for review (once I get that handled)

@cseickel did you want me to close this out? Given that I added a new "feature" (attribute that sources can provide), I feel like I should document that somewhere but I don't really know where.

@miversen33 close if it's fixed! As far as documentation, there is an example source at https://github.com/nvim-neo-tree/example-source, which should probably be linked to from somewhere in the main project if it's not already.

Submitted a PR to get the doc for display_name added :)