Change Test Folder

Apologies if this exists somewhere but I did not see it, nor did I find on the Wiki.
Please add the ability to specify the root folder for test scripts. I have several project where the tests are located in folders called
my_project_tests
another_project_tests
this lets me keep things separated and organized.
Ideally this would be a modifiable somewhere in the Project Settings.

This exists but it is a bit hidden anyway in here: https://github.com/CodeDarigan/WAT/tree/master/addons/WAT/Settings
You load up the config resource, pass in the test folder path and then overwrite the original config source. I should probably make an quick access point somewhere for it (like a settings button in the runner that
opens the file in the inspector immediately)
There is also an option to include sub-folders (so you could do tests/project_a, tests/project_b). I can't remember if master can do this recursively though using subfolders of subfolders (ie tests/project_a/unit, tests/project_a/integration, tests/project_b/unit, test/project_b/integration)

I would prefer not to have a tests folder if I can, but if that is the only way I am fine with it too.
Looking at the location of the config.tres I dont see how I can modify that in my project? Well, I guess I can but as soon as I import a new version it will overwrite my changes.
I think Project Settings are the way to go here.  Have it look for something like
WAT/TESTROOT or something like that.
The UI/Runner would look at these before doing anything.
I guess another option would have the ability to create my own WAT.cfg file where I can put settings for the runner as well. This might come in handy when you add the ability to run headless.
This is a really nice asset you have here. I was drawn to it for the same reasons you created it. I like the idea of running tests in the IDE, not by having to build and run a godot project.
If you are curious why I want to be able to do all this customization, it is because I use a project manager system for my games where I like to keep everything clean and organized.
https://gitlab.com/godot-stuff/gs-project-manager
Keep up the great work.

I would prefer not to have a tests folder if I can, but if that is the only way I am fine with it too.

I don't understand what you mean by this? Where do you store your tests if not in a folder? Unless you mean you don't want a folder named tests but something else instead that you point?

Looking at the location of the config.tres I dont see how I can modify that in my project? Well, I guess I can but as soon as I import a new version it will overwrite my changes.

You mean once you import a new version of WAT the config that exists there will overwrite what you had? I didn't consider this before (because for me they are one and the same).

I would prefer not to have a tests folder if I can, but if that is the only way I am fine with it too.

I don't understand what you mean by this? Where do you store your tests if not in a folder? Unless you mean you don't want a folder named tests but something else instead that you point?

Correct -- I dont want a folder named "tests" -- as an example one of my project has a test folder called "doa_tests"

Looking at the location of the config.tres I dont see how I can modify that in my project? Well, I guess I can but as soon as I import a new version it will overwrite my changes.

You mean once you import a new version of WAT the config that exists there will overwrite what you had? I didn't consider this before (because for me they are one and the same).

Right, which is why I would suggest you allow developer to add a WAT.tres or WAT.cfg in the res:// folder -- have your process look for that first, and then use the one in the addons as a fallback

You have the ability to rename the main test folder in the settings at the moment (and I'll add it to the prompt that exists when you load the plugin too.
Do you want multiple top level folders like res://something_tests & res://something_else_tests?

You have the ability to rename the main test folder in the settings at the moment (and I'll add it to the prompt that exists when you load the plugin too.

thanks

Do you want multiple top level folders like res://something_tests & res://something_else_tests?

i think that would be a nice to have, for me as long as I can specify the root and then have it run through all sub folder under that I am good


In iPhone, stateful dialog does not work properly.

I have developed a following of stateful Bot, it is operating test in Web Chat Connector.
Test of this Bot is available at the following URL.
https://microsoft-apiapp937554448978497cb48a05cb30f2eb14.azurewebsites.net/
NOTE: In this Bot, use the Japanese.
My Bot, in the following Web browser, will work properly.

PC Win 10 --- Edge, IE 11, Chrome
Android Smart Phone --- Chrome

But, My Bot, in the following Web browser, does not work properly.

Apple iPhone 6s/7 --- Safari, Chrome

The following screen capture is a case to work properly.

However, in the Web browser of the iPhone, it will not be as in the above screen capture.
It seems like the state of the conversation is not maintained.
Why in the Web browser of the iPhone, stateful conversation, it will not work properly?

The state is maintained on the state server, so perhaps the web page client has a bug. Can you share an example of the bug?

Yes, I can share
Operation in Safari on my iPhone is the following screen capture.

In the iPhone's Web browser, stateful conversation, does not work properly.
Perhaps, it would be a bug in the Web Chat Connector.

Apple seems to be policy to reject the application you are using a cookie.
In iPhone, cookie is will often disappear, is because of that, it cut off the session.
The iPhone, as an alternative of the cookie, there is a hand to use the Safari of local storage.
Safari of local storage is SQLite that can be used in javascript.
In the case of a request from the iPhone, I think in Web Chat Conector is not to save the Conversation ID to Safari of local storage.
In addition, iOS version of Chrome, as the UserAgent, is that of to disguise the Safari.
For this reason, in Chrome, it will appear the same defect as the Safari.
My reasoning is over.

@danmarshall is this something we can fix or we need to live with?

I'm checking the "Web chat preview" box on the Web Chat configuration page.
But it does not work on Safari.

I have also reproduced the same issue with my own bot on my iphone 6 but only with Safari, it works just fine if I use Chrome.

Using the Web Chat Preview I am able to chat in Safari on a Mac, and on an iPhone. Can you publish the link to your web chat?

@danmarshall - im seeing the same. I have a simple menu setup whereby starting a new session prompts for a selection. No matter what is selected from the menu, the same start menu is reloaded. This does not occur in Chrome (i.e. the menu session continues), but fails in Safari (desktop and ios).
Ive recorded a quick screen grab here of the issue: https://dl.dropboxusercontent.com/u/39437082/safari-session.mov
Please let me know if there is anything I can do to assist with debugging, this is quite a serious issue for us.

@haganbt looks like you are using the v1 webchat control - can you try using the Preview version?

Thanks @danmarshall - daft question, where do I find the preview version? Im using this: https://docs.botframework.com/en-us/support/embed-chat-control2/

@haganbt looks like that document should be updated :)
At the end of step 1 you will see a "use preview" checkbox.

Wonderful, confirmed fixed in Safari @dandriscoll. The preview control looks much lighter also, so kudos on the optimizations.
Appreciate the quick support.

@ToshiAtKuroneko can you verify this behavior in the new version of the webchat control?

@ajayp can you send a link to your bot's webchat?

I will try Preview Version on December 17th in Japan time.
Please wait a little more.

@danmarshall I checked "Enable Preview" and tested Web Chat on my iPhone 7.
(1) Chrome: It worked correctly.
(2) Safari: It worked correctly.
The problem of Web Chat on my Phone has been solved.
Thank you very much.
However, why is the newline code ignored, is this a specification?

@danmarshall - Apologies, I was on vacation, I just tested this and it is now working on my iPhone 6 using both Safari and Chrome after I checked "Enable Preview"

@danmarshall  This bug was fixed in the Preview version. Please close it.


Question: Use neovim command as formatter command

Hi
I have a command supported by tsserver, :OrganizeImports, and I'd like to have this run for all javascript/typescript files.
Is there any way to have a custom formatter formatters.[name].command reference a neovim command to run instead of a binary to execute?
Would be cool if so!

Lua functions are technically supported as a formatter, but I go into some of the limitations in this comment https://github.com/stevearc/conform.nvim/issues/186#issuecomment-1804199512
Commands are even worse than functions, because they have no return value and (if they are async) we have no way of detecting when they are done. My recommendation would be to either set up a separate autocmd, or to run it manually when needed.

Super helpful, thank you!


A11y_30days_Welcome to 30 Days of Learning_Reflow: In Reflow resolution “Menu hamburger” button is not accessible by “Enter” & “Space” key

"Check out Accessibility Insights! - Identify accessibility bugs before check-in and make bug fixing faster and easier."
GitHub Tags:
#A11yTCS;#A11yMAS;#A11ySev3;#30days;#P3_30days_Dec22;#A11yWCAG2.1;#WCAG1.4.10;#DesktopWeb;#Win11;#ChromiumEdge
Environment Details:
Application Name: 30days
#URL: https://microsoft.github.io/30daysof/
Windows Version: Win11
Chromium Edge Version: 110.0.1556.0 (Official build) dev (64-bit)
Pre-Requisite:
To apply Reflow resolution, follow the below steps:

Open DevTools in new window by press F12.
Adjust the application browser window size to 320256 pixels using mouse (Change the browser zoom levels accordingly up to 200% to adjust the window pixels to 320256).
Refresh the page.

Repro Steps:

Hit the URL: https://microsoft.github.io/30daysof/
Home page will open then tab to "Menu Hamburger" button present in header section.
Observe in Reflow resolution “Menu Hamburger” button is not accessible by “Enter” & “Space” key

Actual:
In Reflow resolution “Menu Hamburger” button is not accessible by “Enter” & “Space” key.
Note – This issue is also observed in 200% resize
Expected:
In Reflow resolution “Menu Hamburger” button should be accessible by “Enter” & “Space” key.
User Impact:
Low vision user will face difficulty while accessing “Menu Hamburger” button.
Attachment:
209560677-1ca72026-c6bb-4719-96b4-1dde0ff81457.webm

@Ashutoshsahoo164  I tried this on a macOS machine with Microsoft Edge and the Space button worked (if held down, the menu slides over) but not Enter. Do both need to be active?

Hi @nitya Please try on Windows Machine . We need any one of them to be worked either "Enter" or "Space"

As per the above comments , closing this bug.


4张卡为什么没有并发推理

是否已有关于该错误的issue或讨论？ | Is there an existing issue / discussion for this?

[X] 我已经搜索过已有的issues和讨论 | I have searched the existing issues / discussions

该问题是否在FAQ中有解答？ | Is there an existing answer for this in FAQ?

[X] 我已经搜索过FAQ | I have searched FAQ

当前行为 | Current Behavior
目前是多用户使用，同步推理，使用体验差
期望行为 | Expected Behavior
多卡并发推理
复现方法 | Steps To Reproduce
No response
运行环境 | Environment
- OS:
- Python:
- Transformers:
- PyTorch:
- CUDA (`python -c 'import torch; print(torch.version.cuda)'`):

备注 | Anything else?
No response

what framework are you using?

what framework are you using?

用的 qwen GitHub 官方的脚本

which one?

which one?

docker_web_demo.sh

The web_demo.py script serves as a demonstrative tool and is explicitly not intended for deployment in a production environment due to its inherent lack of production-grade capabilities. Despite being capable of managing multiple concurrent requests, it doesn't process them simultaneously, instead utilizing a queue mechanism implemented by gradio. In terms of GPU utilization, when handling each request, the transformers library employs a basic model parallelism approach for multi-GPU inference, meaning that only a single GPU is actively engaged at any given moment.
For deploying a solution in a production setting, this repository does not cater to those requirements, and such tasks should be managed by your IT professionals. As an alternative, consider projects like FastChat combined with vLLM. This setup allows for parallel execution of multiple requests if your GPU has adequate memory and leverages tensor parallelism, thus maximizing resource utilization by engaging all GPUs concurrently.


Suggestion: Change AMS ammo behavior

I recently tested the "release" version of the mod, and one of the first things I noticed was just how op the ams is. It uses nuggets as ammo, ok not too bad, sets one up and fires a missile at it, realizes it has a range of 100 blocks horizontally and 200 vertically. Ok thats op. My suggestion is to add a config option so players can choose what should be the ammo, by use of unlocalized names so we can also use modded blocks, that way we can choose something more expensive, as a nuggest is as cheap as dirt. I also feel that the AMS should have greatly reduced range unless it is either 1) Powered by RF, EU or MJ where you can specify the range (to a limit) and it uses more energy/tick the larger the range or 2) Add in upgrades to the AMS that let you do things like faster shooting, larger range, more ammo slots ect.

we do plan on having power support down the road. and as far as the ammo goes that is up to @DarkGuardsman.

The current AMS turret is more or less just a temp solution. As people were constantly asking for a way to shoot down missiles. There are plans to do ammo, power, upgrades, and other restrictions. Including a need to add radar in order to make the AMS see the missile in time. As for the 100 block range, this is not that bad as the 1.6.4 version had a 300 block range.
As well the AMS will be removed when I finish the sentry gun mod. Which will add 20+ different AntiMissile turrets including low-tech versions that barrel work and high-tech versions that always work. As well missiles will be getting upgrades down the road to bypass AMS systems more often. For example an ender engine to teleport, radar absorption hall to reduce detection, radar distribution to confuse AMS, and other upgrades.

Those plans sound amazing, seems like you already have the long road all planned so Ill close this


How do i make global skripts?

Ok so basically i want it so when a player join it broadcasts to the whole network to anyone with a certian permission that that staff joined i know how to use the effects and everything and how to do the code but where do i put the .sk file? I tried putting inside  PROXY\PLUGINS\SKUNGEE\SKRIPTS
and restsarting multiple times but nothing!

#47


Read parquet lists plain

This PR adds support to read one-level ListArray, non-dict encoded from parquet:

[x] List<X> nullable, required, and required items
[x] List<Primitive>
[x] List<Binary>
[x] List<Boolean>

Both v1 and v2, compressed and not compressed.
In particular, the following are tested against pyarrow:
[
    pa.field("list_int64", pa.list_(pa.int64())),
    pa.field("list_int64_required", pa.list_(pa.field("item", pa.int64(), False))),
    pa.field(
        "list_int64_required_required",
        pa.list_(pa.field("item", pa.int64(), False)),
        False,
    ),
    pa.field("list_int16", pa.list_(pa.int16())), # a non-native parquet type
    pa.field("list_bool", pa.list_(pa.bool_())),
    pa.field("list_utf8", pa.list_(pa.utf8())),
]

I am merging this. A relevant note: the design used here makes this reading almost as fast as reading a non-nested type. The major difference is that the reading of the validity cannot be memcopied directly because the bitpacked of more than one def level does not have the same representation as arrow's validity (bitmaps with the first slot being represented by the LSB).


Backlog 16049 table

JIRA

https://jira.jahia.org/browse/BACKLOG-16049
Description
First level moonstone table integration. Look at readme in ContentListTable for deployment instructions. Will work with latest moonstone which will incorporate branch MOON-297.

I noticed that we're missing the data-cm-role tags in some of the cells/row. Wondering if we'd need to add that here.

Oh, yes we should add it where we can. I'll take a look.


Add new model for FC-ERP + beta evs

sorry, opened pull request to upstream by mistake!

Were you intending to just keep this to your own repo for now? This is much cleaner and more documented than my regular research code :wink:


[Bug] "Item" Mechanic doesn't work for Potions

The "Item" mechanic cannot currently spawn in specific potions as it appears to still require a numerical data value, which Minecraft no longer supports as they have switched to purely word-based data values.
From the Editor:

Note
This isn't an issue purely related to the Editor.
Opening the file outside of the Editor and inputting the correct data value for modern Minecraft manually (Which is required as the Editor doesn't accept anything other than a number) doesn't appear to make it function, so there is an issue with the core mechanic itself.
Attempting to use the old numerical data values from earlier versions of Minecraft also doesn't produce any results, just to cover that base.

I confirmed that there is no longer a way to give a potion with the id changes minecraft did in 1.13

This has been added in the latest dev build.


How to integrate with Amazon/Chase credit card?

We have an Amazon credit card that is used exclusively at Amazon.  I'm not sure how to integrate this with the amazon-ynab-sync tool.  If I set up a new cash account for the sync, it'll duplicate my charges I think with the ones showing up from the Amazon card.  Is there a way to do this?  I'd love to be able to categorize the charges on the card... right now I just lump them into a single "household" category.

In case anyone comes across this issue:
I have used this utility to categorize Amazon purchases alongside a linked credit card account (Chase/Amazon or otherwise) with Amazon charges. The following description is detailed & long, but in practice the process is very quick and natural.

Start with a linked credit card account C with Amazon charges.

Categorize all Amazon charges on C as 'sync Amazon' (or similar)
Get the total amount X$ of those charges; either:

Select all of those transactions and see the total in the top right
Look in the budget at the net activity of 'sync Amazon'

Add an unlinked credit card account A to use with this tool.

Run amazon-ynab-sync with A as the YNAB account name
Categorize the Amazon items as relevant to your budget

Add an unlinked tracking asset account T

Add a pair of 'psuedo' transactions in T that net to 0$:

Inflow of X$: payee 'Charges on Credit Card'; category 'sync Amazon'
Outflow of X$: payee 'Payment: A'

At this point you should see that:

T has a 0$ balance
budget category 'sync Amazon' has 0$ assigned/activity/available
A has a near 0$ balance (small discrepancies will occur due to item transaction date vs charge posting date)
Any categories with a negative available amount still show as credit overspend as expected

Next:

Assign amounts to your budget categories, totaling Y$.

This results in A having Y$ available for 'payment'

Move the A payment amount Y$ to C

This represents the money assigned to the Amazon items being available for Y$ payment to C

At this point the Amazon item transactions have been substituted in for the Amazon charge transactions and can be accounted/budgeted for with zero net effect to any of: Income; Spending; Activity per category.
To maintain this:

repeat the steps and adjust/update the pseudo transactions in T and move payment from A to C
each month add a new pair of pseudo transactions in the tracking account.

When reviewing, verify that category 'sync Amazon' activity is 0$ and that the balance of T is 0$; if they aren't, adjust the pseudo transactions as needed to correct that.
Note: The above can be adapted to more than one credit card and more than one Amazon account, without adding more tracking accounts or categories.


Fixes #2507 - UnixPB : Fedora Compatible Playbooks

Checklist

[X] commit message has one of the standard prefixes
[ ] faq.md updated if appropriate
[ ] other documentation is changed or added (if applicable)
[ ] playbook changes run through VPC or QPC (if you have access)
[ ] for inventory.yml changes, bastillion/nagios/jenkins updated accordingly

It's still giving an error about the C++ library versions as a result of using having /usr/local/gcc/lib64 in the LD_LIBRARY_PATH on this platform which means the system cmake is picking up what it considers to be a backlevel one. However since we don't have so much of an interest in OpenJ9 now and Fedora isn't one of our primary build distributions I'm ok with this being merged for now, and we can look in the future at seeing if we can make it work. It appears fine for all hotspot/temurin builds:
12:16:31 /usr/bin/cmake: /usr/local/gcc/lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /usr/bin/cmake)
12:16:31 /usr/bin/cmake: /usr/local/gcc/lib64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /usr/bin/cmake)
12:16:31 /usr/bin/cmake: /usr/local/gcc/lib64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /lib64/libjsoncpp.so.24)
12:16:31 /usr/bin/cmake: /usr/local/gcc/lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /lib64/libjsoncpp.so.24)
12:16:31 gmake[3]: *** [/home/vagrant/openjdk-build/workspace/build/src/closed/OpenJ9.gmk:434: /home/vagrant/openjdk-build/workspace/build/src/build/linux-x86_64-normal-server-release/vm/cmake.stamp] Error 1
12:16:31 gmake[2]: *** [/home/vagrant/openjdk-build/workspace/build/src/closed/custom/Main.gmk:51: j9vm-build] Error 2
12:16:31 gmake[2]: *** Waiting for unfinished jobs....


Changes to Hierarcy?

Question?
Are there changes to the ActivityContent interface hierarchy that we want to make?

Stale


16:51:30.538 [trace] Executing silently Code (idle) = import os as _VSCODE_os\nimport sys as _VSCODE_sys\nimport builtins as _VSCODE_builtins\nif _VSCODE_o
16:51:30.553 [trace] Executing silently Code (completed) = import os as _VSCODE_os\nimport sys as _VSCODE_sys\nimport builtins as _VSCODE_builtins\nif _VSCODE_o with 1 output(s)
16:51:30.558 [debug] Remote Interpreter for Pylance for Notebook URI "/tmp/jupyter_repro/test.ipynb" is /weka-jd/prod/platform_team/system_env/py38-202207_0/bin/python
16:53:14.738 [debug] Handle Execution of Cells 0 for /tmp/jupyter_repro/test.ipynb
16:53:14.739 [trace] Execute Notebook /tmp/jupyter_repro/test.ipynb. Step 1
16:53:14.739 [trace] Connect to Kernel /tmp/jupyter_repro/test.ipynb. Step 2
16:53:14.739 [trace] Connected to Kernel /tmp/jupyter_repro/test.ipynb. Step 3
16:53:14.739 [trace] executeCell 0. Step 4
16:53:14.740 [trace] Cell Index:0 sent to kernel
16:53:14.747 [trace] Start cell 0 execution @<PHONE_NUMBER>747 (clear output)
16:53:14.748 [debug] Kernel acknowledged execution of cell 0 @<PHONE_NUMBER>747
16:53:14.750 [trace] Cell 0 completed in 0.003s (start:<PHONE_NUMBER>747, end:<PHONE_NUMBER>750)
16:53:14.750 [trace] Cell 0 executed successfully
16:54:08.970 [debug] Disposing kernel associated with /tmp/jupyter_repro/test.ipynb, isClosed=true
16:54:08.970 [info] Dispose Kernel '/tmp/jupyter_repro/test.ipynb' associated with '/tmp/jupyter_repro/test.ipynb'
16:54:08.970 [debug] Cancel pending cells
16:54:08.971 [trace] Shutdown session - current session, called from
     	at GD.shutdownImplementation (/weka-jd/prod/containers/~/work/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2024.10.2024100902/dist/extension.node.js:282:34055)
    	at GD.dispose (/weka-jd/prod/containers/~/work/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2024.10.2024100902/dist/extension.node.js:282:33046)
    	at Is (/weka-jd/prod/containers/~/work/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2024.10.2024100902/dist/extension.node.js:115:867)
    	at e (/weka-jd/prod/containers/~/work/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2024.10.2024100902/dist/extension.node.js:285:31789)
    	at o_.dispose (/weka-jd/prod/containers/~/work/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2024.10.2024100902/dist/extension.node.js:285:32034)
    	at hy.disposeOldKernel (/weka-jd/prod/containers/~/work/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2024.10.2024100902/dist/extension.node.js:285:23341)
    	at hy.<anonymous> (/weka-jd/prod/containers/~/work/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2024.10.2024100902/dist/extension.node.js:285:21548)
16:54:08.971 [debug] shutdownSession 0abff176-ac20-4f82-9f3f-a07ce81462b8, 0abff176-ac20-4f82-9f3f-a07ce81462b8 - start
16:54:08.971 [debug] Session cannot be shutdown 0abff176-ac20-4f82-9f3f-a07ce81462b8
16:54:08.971 [trace] Disposing Jupyter Lab Helper
16:54:08.971 [trace] SessionManager - dispose contents manager
16:54:08.971 [trace] ShutdownSessionAndConnection - dispose session manager
16:54:08.973 [trace] Shutdown session -- complete
16:54:08.973 [debug] shutdownSession 0abff176-ac20-4f82-9f3f-a07ce81462b8, 0abff176-ac20-4f82-9f3f-a07ce81462b8 - shutdown complete
16:54:08.973 [debug] Kernel got disposed, hence there is no longer a kernel associated with /tmp/jupyter_repro/test.ipynb
16:54:08.978 [debug] Notebook document /tmp/jupyter_repro/test.ipynb got closed
16:54:08.978 [debug] Cancel executions after closing notebook /tmp/jupyter_repro/test.ipynb
16:54:08.978 [debug] Cancel pending cells
16:54:08.978 [debug] Cancel executions after closing notebook /tmp/jupyter_repro/test.ipynb
16:54:08.978 [debug] Cancel pending cells
16:54:08.978 [debug] Cancel executions after closing notebook /tmp/jupyter_repro/test.ipynb
16:54:08.980 [trace] Finished disposing Jupyter Lab Helper
16:54:10.973 [debug] Start refreshing Kernel Picker<PHONE_NUMBER>973)
16:54:11.146 [trace] Disposing Jupyter Lab Helper
16:54:11.146 [trace] SessionManager - dispose contents manager
16:54:11.146 [trace] ShutdownSessionAndConnection - dispose session manager
16:54:11.146 [trace] Finished disposing Jupyter Lab Helper
16:54:11.146 [trace] UniversalRemoteKernelFinder: Writing 13 remote kernel connection metadata to cache
16:54:11.152 [debug] End refreshing Kernel Picker<PHONE_NUMBER>973)

Replay Log (Window):
<details>

<summary>Replay Log (Jupyter): </summary>

16:51:21.186 [trace] Widget Message: Source for IPyWidget jupyterlab-plotly found in remote @ https://hub.example.cn/~/work/nbextensions/jupyterlab-plotly/index.
16:51:21.186 [trace] Widget Message: Registering IPyWidget jupyterlab-plotly found in https://hub.example.cn/~/work/nbextensions/jupyterlab-plotly/index.
16:51:21.186 [trace] Widget Message: Received IPyWidget scripts [{"moduleName":"jupyter-datawidgets","scriptUri":"https://hub.example.cn/~/work/nbextensions/jupyter-datawidgets/index","source":"remote"}]
16:51:21.186 [trace] Widget Message: Source for IPyWidget jupyter-datawidgets found in remote @ https://hub.example.cn/~/work/nbextensions/jupyter-datawidgets/index.
16:51:21.186 [trace] Widget Message: Registering IPyWidget jupyter-datawidgets found in https://hub.example.cn/~/work/nbextensions/jupyter-datawidgets/index.
16:51:21.186 [trace] Widget Message: Received IPyWidget scripts [{"moduleName":"catboost-widget","scriptUri":"https://hub.example.cn/~/work/nbextensions/catboost-widget/index","source":"remote"}]
16:51:21.186 [trace] Widget Message: Source for IPyWidget catboost-widget found in remote @ https://hub.example.cn/~/work/nbextensions/catboost-widget/index.
16:51:21.186 [trace] Widget Message: Registering IPyWidget catboost-widget found in https://hub.example.cn/~/work/nbextensions/catboost-widget/index.
16:51:21.186 [trace] Widget Message: Received IPyWidget scripts [{"moduleName":"jupyter-matplotlib","scriptUri":"https://hub.example.cn/~/work/nbextensions/jupyter-matplotlib/index","source":"remote"}]
16:51:21.186 [trace] Widget Message: Source for IPyWidget jupyter-matplotlib found in remote @ https://hub.example.cn/~/work/nbextensions/jupyter-matplotlib/index.
16:51:21.186 [trace] Widget Message: Registering IPyWidget jupyter-matplotlib found in https://hub.example.cn/~/work/nbextensions/jupyter-matplotlib/index.
16:51:21.835 [error] Widget Error: Failed to access CDN https://unpkg.com/ after 0 attempt(s), AbortError: signal is aborted without reason
16:51:21.835 [error] Widget Error: Failed to access CDN<EMAIL_ADDRESS>after 0 attempt(s), AbortError: signal is aborted without reason
16:51:22.123 [debug] Handle Execution of Cells 0 for /tmp/jupyter_repro/test.ipynb
16:51:22.124 [trace] Execute Notebook /tmp/jupyter_repro/test.ipynb. Step 1
16:51:22.124 [trace] Connect to Kernel /tmp/jupyter_repro/test.ipynb. Step 2
16:51:22.124 [trace] Connected to Kernel /tmp/jupyter_repro/test.ipynb. Step 3
16:51:22.125 [trace] executeCell 0. Step 4
16:51:22.126 [trace] Cell Index:0 sent to kernel
16:51:22.134 [trace] Start cell 0 execution @<PHONE_NUMBER>133 (clear output)
16:51:22.134 [debug] Kernel acknowledged execution of cell 0 @<PHONE_NUMBER>133
16:51:22.138 [trace] Cell 0 completed in 0.004s (start:<PHONE_NUMBER>133, end:<PHONE_NUMBER>137)
16:51:22.138 [trace] Cell 0 executed successfully
16:51:24.082 [debug] Handle Execution of Cells 1 for /tmp/jupyter_repro/test.ipynb
16:51:24.082 [trace] Execute Notebook /tmp/jupyter_repro/test.ipynb. Step 1
16:51:24.082 [trace] Connect to Kernel /tmp/jupyter_repro/test.ipynb. Step 2
16:51:24.082 [trace] Connected to Kernel /tmp/jupyter_repro/test.ipynb. Step 3
16:51:24.082 [trace] executeCell 1. Step 4
16:51:24.082 [trace] Cell Index:1 sent to kernel
16:51:24.087 [trace] Start cell 1 execution @<PHONE_NUMBER>087 (clear output)
16:51:24.087 [debug] Kernel acknowledged execution of cell 1 @<PHONE_NUMBER>087
16:51:24.091 [trace] Cell 1 completed in 0.004s (start:<PHONE_NUMBER>087, end:<PHONE_NUMBER>091)
16:51:24.091 [trace] Cell 1 executed successfully
16:51:30.538 [trace] Executing silently Code (idle) = import os as _VSCODE_os\nimport sys as _VSCODE_sys\nimport builtins as _VSCODE_builtins\nif _VSCODE_o
16:51:30.553 [trace] Executing silently Code (completed) = import os as _VSCODE_os\nimport sys as _VSCODE_sys\nimport builtins as _VSCODE_builtins\nif VSCODE_o with 1 output(s)
16:51:30.558 [debug] Remote Interpreter for Pylance for Notebook URI "/tmp/jupyter_repro/test.ipynb" is /weka-jd/prod/platform_team/system_env/py38-202207_0/bin/python
16:53:14.738 [debug] Handle Execution of Cells 0 for /tmp/jupyter_repro/test.ipynb
16:53:14.739 [trace] Execute Notebook /tmp/jupyter_repro/test.ipynb. Step 1
16:53:14.739 [trace] Connect to Kernel /tmp/jupyter_repro/test.ipynb. Step 2
16:53:14.739 [trace] Connected to Kernel /tmp/jupyter_repro/test.ipynb. Step 3
16:53:14.739 [trace] executeCell 0. Step 4
16:53:14.740 [trace] Cell Index:0 sent to kernel
16:53:14.747 [trace] Start cell 0 execution @<PHONE_NUMBER>747 (clear output)
16:53:14.748 [debug] Kernel acknowledged execution of cell 0 @<PHONE_NUMBER>747
16:53:14.750 [trace] Cell 0 completed in 0.003s (start:<PHONE_NUMBER>747, end:<PHONE_NUMBER>750)
16:53:14.750 [trace] Cell 0 executed successfully
16:54:08.970 [debug] Disposing kernel associated with /tmp/jupyter_repro/test.ipynb, isClosed=true
16:54:08.970 [info] Dispose Kernel '/tmp/jupyter_repro/test.ipynb' associated with '/tmp/jupyter_repro/test.ipynb'
16:54:08.970 [debug] Cancel pending cells
16:54:08.971 [trace] Shutdown session - current session, called from
at GD.shutdownImplementation (/weka-jd/prod/containers/~/work/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2024.10.2024100902/dist/extension.node.js:282:34055)
at GD.dispose (/weka-jd/prod/containers/~/work/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2024.10.2024100902/dist/extension.node.js:282:33046)
at Is (/weka-jd/prod/containers/~/work/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2024.10.2024100902/dist/extension.node.js:115:867)
at e (/weka-jd/prod/containers/~/work/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2024.10.2024100902/dist/extension.node.js:285:31789)
at o.dispose (/weka-jd/prod/containers/~/work/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2024.10.2024100902/dist/extension.node.js:285:32034)
at hy.disposeOldKernel (/weka-jd/prod/containers/~/work/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2024.10.2024100902/dist/extension.node.js:285:23341)
at hy. (/weka-jd/prod/containers/~/work/.vscode-server-insiders/extensions/ms-toolsai.jupyter-2024.10.2024100902/dist/extension.node.js:285:21548)
16:54:08.971 [debug] shutdownSession 0abff176-ac20-4f82-9f3f-a07ce81462b8, 0abff176-ac20-4f82-9f3f-a07ce81462b8 - start
16:54:08.971 [debug] Session cannot be shutdown 0abff176-ac20-4f82-9f3f-a07ce81462b8
16:54:08.971 [trace] Disposing Jupyter Lab Helper
16:54:08.971 [trace] SessionManager - dispose contents manager
16:54:08.971 [trace] ShutdownSessionAndConnection - dispose session manager
16:54:08.973 [trace] Shutdown session -- complete
16:54:08.973 [debug] shutdownSession 0abff176-ac20-4f82-9f3f-a07ce81462b8, 0abff176-ac20-4f82-9f3f-a07ce81462b8 - shutdown complete
16:54:08.973 [debug] Kernel got disposed, hence there is no longer a kernel associated with /tmp/jupyter_repro/test.ipynb
16:54:08.978 [debug] Notebook document /tmp/jupyter_repro/test.ipynb got closed
16:54:08.978 [debug] Cancel executions after closing notebook /tmp/jupyter_repro/test.ipynb
16:54:08.978 [debug] Cancel pending cells
16:54:08.978 [debug] Cancel executions after closing notebook /tmp/jupyter_repro/test.ipynb
16:54:08.978 [debug] Cancel pending cells
16:54:08.978 [debug] Cancel executions after closing notebook /tmp/jupyter_repro/test.ipynb
16:54:08.980 [trace] Finished disposing Jupyter Lab Helper
16:54:10.973 [debug] Start refreshing Kernel Picker<PHONE_NUMBER>973)
16:54:11.146 [trace] Disposing Jupyter Lab Helper
16:54:11.146 [trace] SessionManager - dispose contents manager
16:54:11.146 [trace] ShutdownSessionAndConnection - dispose session manager
16:54:11.146 [trace] Finished disposing Jupyter Lab Helper
16:54:11.146 [trace] UniversalRemoteKernelFinder: Writing 13 remote kernel connection metadata to cache
16:54:11.152 [debug] End refreshing Kernel Picker<PHONE_NUMBER>973)

</details>

@Konano - it would be great to have the notebook log as well.
It looks like you are on a remote connection when this is happening?
Is auto-save turned on?

Thanks for your response. And yes, I was using the jupyter notebook on the
remote server and the auto-save was turned on. Though this case didn’t
occur if I turn off the auto-save mode, I still wonder why it would affect
the kernel.
I’m looking forward to your early reply!
On Fri, 11 Oct 2024 at 00:28, Aaron Munger @.***> wrote:

@Konano https://github.com/Konano - it would be great to have the
notebook log as well.
It looks like you are on a remote connection when this is happening?
Is auto-save turned on?
—
Reply to this email directly, view it on GitHub
https://github.com/microsoft/vscode-jupyter/issues/15716#issuecomment-2405560621,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A5JQIWQWWD2USUV4OXAQTMDZ22TJDAVCNFSM6AAAAABIIWRTKKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMBVGU3DANRSGE
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

It would be great to have the notebook log as well.

Replay Log (Notebook):
2024-10-11 11:22:44.999 [debug] [KernelDetection] start extension activation for jupyter-notebook
2024-10-11 11:22:45.001 [debug] [BacklayerWebview] vscode-remote://ssh-remote%2Bwork/tmp/jupyter_repro/test.ipynb (1cbd76c8-a49c-4056-9d67-d51b940195b4) - Creating backlayer webview for notebook
2024-10-11 11:22:45.007 [debug] [NotebookEditorWidget] warmup vscode-remote://ssh-remote%2Bwork/tmp/jupyter_repro/test.ipynb
2024-10-11 11:22:45.137 [debug] [NotebookEditorWidget] warmup - webview resolved
2024-10-11 11:22:45.140 [debug] [NotebookEditorWidget] warmup - viewport warmed up
2024-10-11 11:22:45.142 [debug] [NotebookEditorWidget] warmup - list view model attached, set to visible
2024-10-11 11:22:45.238 [debug] [BacklayerWebview] vscode-remote://ssh-remote%2Bwork/tmp/jupyter_repro/test.ipynb (1cbd76c8-a49c-4056-9d67-d51b940195b4) - [renderer vscode.builtin-renderer] - Start loading renderer
2024-10-11 11:22:45.574 [debug] [BacklayerWebview] vscode-remote://ssh-remote%2Bwork/tmp/jupyter_repro/test.ipynb (1cbd76c8-a49c-4056-9d67-d51b940195b4) - [renderer vscode.builtin-renderer] - Imported renderer {
    "duration": "14.5ms"
}
2024-10-11 11:22:45.574 [debug] [BacklayerWebview] vscode-remote://ssh-remote%2Bwork/tmp/jupyter_repro/test.ipynb (1cbd76c8-a49c-4056-9d67-d51b940195b4) - [renderer vscode.builtin-renderer] - Activated renderer {
    "duration": "15.299999713897705ms"
}
2024-10-11 11:22:45.575 [debug] [BacklayerWebview] vscode-remote://ssh-remote%2Bwork/tmp/jupyter_repro/test.ipynb (1cbd76c8-a49c-4056-9d67-d51b940195b4) - [renderer vscode.builtin-renderer] - Activating dependant renderers {
    "dependents": "jupyter-notebook-built-in-renderer-hooks"
}
2024-10-11 11:22:45.575 [debug] [BacklayerWebview] vscode-remote://ssh-remote%2Bwork/tmp/jupyter_repro/test.ipynb (1cbd76c8-a49c-4056-9d67-d51b940195b4) - [renderer jupyter-notebook-built-in-renderer-hooks] - Start loading renderer
2024-10-11 11:22:45.586 [debug] [BacklayerWebview] vscode-remote://ssh-remote%2Bwork/tmp/jupyter_repro/test.ipynb (1cbd76c8-a49c-4056-9d67-d51b940195b4) - [renderer jupyter-notebook-built-in-renderer-hooks] - Imported renderer {
    "duration": "11.900000095367432ms"
}
2024-10-11 11:22:45.587 [debug] [BacklayerWebview] vscode-remote://ssh-remote%2Bwork/tmp/jupyter_repro/test.ipynb (1cbd76c8-a49c-4056-9d67-d51b940195b4) - [renderer jupyter-notebook-built-in-renderer-hooks] - Activated renderer {
    "duration": "12.099999904632568ms"
}
2024-10-11 11:22:45.594 [debug] [BacklayerWebview] vscode-remote://ssh-remote%2Bwork/tmp/jupyter_repro/test.ipynb (1cbd76c8-a49c-4056-9d67-d51b940195b4) - [renderer vscode.builtin-renderer] - Rendered output item {
    "id": "a236ae45-ab37-4ecf-bfbe-7506a2387be9",
    "duration": "7.300000190734863ms"
}
2024-10-11 11:22:45.594 [debug] [BacklayerWebview] vscode-remote://ssh-remote%2Bwork/tmp/jupyter_repro/test.ipynb (1cbd76c8-a49c-4056-9d67-d51b940195b4) - [renderer vscode.builtin-renderer] - Rendered output item {
    "id": "33558510-afa2-4eea-97dd-6c045526fbaf",
    "duration": "1ms"
}
2024-10-11 11:22:55.430 [debug] [KernelDetection] finish extension activation for jupyter-notebook
2024-10-11 11:22:55.575 [debug] [History] getMatchingKernels: 1 kernels available for /tmp/jupyter_repro/test.ipynb. Selected: 202207[3.8] (test.ipynb). Suggested: 202207[3.8] (test.ipynb)
2024-10-11 11:22:55.576 [debug] [History] mru: 2 kernels in history, 1 registered already.
2024-10-11 11:22:56.768 [debug] [History] getMatchingKernels: 18 kernels available for /tmp/jupyter_repro/test.ipynb. Selected: 202207[3.8] (test.ipynb). Suggested: undefined
2024-10-11 11:22:56.768 [debug] [History] mru: 2 kernels in history, 2 registered already.
2024-10-11 11:22:56.768 [debug] [History] getMatchingKernels: 18 kernels available for /tmp/jupyter_repro/test.ipynb. Selected: 202207[3.8] (test.ipynb). Suggested: undefined
2024-10-11 11:22:56.768 [debug] [History] mru: 2 kernels in history, 2 registered already.
2024-10-11 11:22:56.962 [debug] [History] getMatchingKernels: 18 kernels available for /tmp/jupyter_repro/test.ipynb. Selected: 202207[3.8] (test.ipynb). Suggested: undefined
2024-10-11 11:22:56.962 [debug] [History] mru: 2 kernels in history, 2 registered already.
2024-10-11 11:22:56.962 [debug] [History] getMatchingKernels: 18 kernels available for /tmp/jupyter_repro/test.ipynb. Selected: 202207[3.8] (test.ipynb). Suggested: undefined
2024-10-11 11:22:56.963 [debug] [History] mru: 2 kernels in history, 2 registered already.
2024-10-11 11:22:59.133 [debug] [Execution] [0]
2024-10-11 11:22:59.138 [debug] [History] getMatchingKernels: 18 kernels available for /tmp/jupyter_repro/test.ipynb. Selected: 202207[3.8] (test.ipynb). Suggested: undefined
2024-10-11 11:22:59.138 [debug] [History] mru: 2 kernels in history, 2 registered already.
2024-10-11 11:22:59.191 [debug] [Execution] Completed executions [0]
2024-10-11 11:22:59.207 [debug] [BacklayerWebview] vscode-remote://ssh-remote%2Bwork/tmp/jupyter_repro/test.ipynb (1cbd76c8-a49c-4056-9d67-d51b940195b4) - [renderer vscode.builtin-renderer] - Rendered output item {
    "id": "33558510-afa2-4eea-97dd-6c045526fbaf",
    "duration": "0.9000000953674316ms"
}
2024-10-11 11:22:59.256 [debug] [History] getMatchingKernels: 18 kernels available for /tmp/jupyter_repro/test.ipynb. Selected: 202207[3.8] (test.ipynb). Suggested: undefined
2024-10-11 11:22:59.256 [debug] [History] mru: 2 kernels in history, 2 registered already.
2024-10-11 11:23:02.199 [debug] [Execution] [1]
2024-10-11 11:23:02.203 [debug] [History] getMatchingKernels: 18 kernels available for /tmp/jupyter_repro/test.ipynb. Selected: 202207[3.8] (test.ipynb). Suggested: undefined
2024-10-11 11:23:02.203 [debug] [History] mru: 2 kernels in history, 2 registered already.
2024-10-11 11:23:02.239 [debug] [Execution] Completed executions [1]
2024-10-11 11:23:02.262 [debug] [BacklayerWebview] vscode-remote://ssh-remote%2Bwork/tmp/jupyter_repro/test.ipynb (1cbd76c8-a49c-4056-9d67-d51b940195b4) - [renderer vscode.builtin-renderer] - Rendered output item {
    "id": "a236ae45-ab37-4ecf-bfbe-7506a2387be9",
    "duration": "0.5999999046325684ms"
}
2024-10-11 11:23:02.317 [debug] [History] getMatchingKernels: 18 kernels available for /tmp/jupyter_repro/test.ipynb. Selected: 202207[3.8] (test.ipynb). Suggested: undefined
2024-10-11 11:23:02.318 [debug] [History] mru: 2 kernels in history, 2 registered already.
2024-10-11 11:25:45.606 [debug] [History] getMatchingKernels: 18 kernels available for /tmp/jupyter_repro/test.ipynb. Selected: 202207[3.8] (test.ipynb). Suggested: undefined
2024-10-11 11:25:45.607 [debug] [History] mru: 2 kernels in history, 2 registered already.
2024-10-11 11:25:47.703 [debug] [History] getMatchingKernels: 18 kernels available for /tmp/jupyter_repro/test.ipynb. Selected: 202207[3.8] (test.ipynb). Suggested: undefined
2024-10-11 11:25:47.703 [debug] [History] mru: 2 kernels in history, 2 registered already.
2024-10-11 11:25:47.703 [debug] [History] getMatchingKernels: 18 kernels available for /tmp/jupyter_repro/test.ipynb. Selected: 202207[3.8] (test.ipynb). Suggested: undefined
2024-10-11 11:25:47.703 [debug] [History] mru: 2 kernels in history, 2 registered already.

It looks like you are on a remote connection when this is happening?

Yes, by "Remote SSH".

Is auto-save turned on?


Make rmw_zenoh compatible with zenoh_plugin_dds

zenoh_plugin_dds adds a /rt prefix to every ROS2 topic in Zenoh.
This change adds the same prefix to rmw_zenoh.
This way nodes using rmw_zenoh may communicate with nodes running a DDS based ROS2 backend with the zenoh-bridge-dds in the middle.
We tested this change with the following configuration:

a node running on Linux with the CycloneDDS backend
zenoh-bridge-dds
zenoh-router
and an Android app using rmw_zenoh connecting to the router in client mode.

Actually that's not zenoh_plugin_dds that adds /rt prefix to ROS2 topics, that's ROS2 itself when mapping ROS topic names to DDS topic names, as specified here:

https://design.ros2.org/articles/topic_and_service_names.html#mapping-of-ros-2-topic-and-service-names-to-dds-concepts

See also some examples of mapping here:

https://github.com/eclipse-zenoh/zenoh-plugin-dds#mapping-ros2-names-to-zenoh-resources

As you can see, /rt is not the only prefix. If you also want to have ROS services, actions and parameters to be interoperable with a ROS2+DDS system via the zenoh_plugin_dds, the other prefixes will also have to be addressed.
But in a "pure" ROS+zenoh system (without DDS), the services, actions and parameters would benefit to use zenoh's get+queryable rather than a pub/sub mechanism based on several topics for requests/replies.

We are actually working on another PR to change the service and parameter implementation in rmw_zenoh to work with DDS as well. We don't use actions, so that is not a high priority for us right now.
If you say that from a Zenoh perspective the get + queryable would be a better solution, wouldn't it be better to make this conversion in the zenoh_plugin_dds?
Based on our tests, rmw_zenoh provides a very nice way to integrate Android or other external mobile devices with a ROS2 based ecosystem without the added complexity of a DDS backend.

We are actually working on another PR to change the service and parameter implementation in rmw_zenoh to work with DDS as well. We don't use actions, so that is not a high priority for us right now.

That's great! Thanks!

If you say that from a Zenoh perspective the get + queryable would be a better solution, wouldn't it be better to make this conversion in the zenoh_plugin_dds?

The main goal of this plugin is to be generic for any DDS application, not only ROS2. And DDS doesn't natively support the request/reply pattern.
But my question was more on the purpose of rmw_zenoh:

do we want it to be interoperable with DDS-based rmw nodes ?
do we want it to leverage the zenoh specificities, but loosing interop with DDS ? Or developing a specific ROS2 bridge for interop ?
do we want both to be possible ?

That's open questions to me. Maybe @kydos has some opinions on this.

Based on our tests, rmw_zenoh provides a very nice way to integrate Android or other external mobile devices with a ROS2 based ecosystem without the added complexity of a DDS backend.

That's a cool use case! Moreover if you do this over the internet with one or more zenoh routers between Android and the robot!  Can't wait to see a demo 😃

I don't think that it is a good idea to force rmw_zenoh to match what zenoh_plugin_dds spits out when it's being used with a ROS 2 system. That would be unnecessarily constraining rmw_zenoh to match how ROS 2 makes use of DDS, and effectively exposing ROS 2 internals. I think it is better to let rmw_zenoh be its own thing and provide what ROS 2 needs in the best way for Zenoh.
If someone wants to have a zenoh-powered ROS 2 node and a DDS-powered ROS 2 node talk to each other, then writing a bridge specifically for that would be better in my opinion.

Here my perspective:

But my question was more on the purpose of rmw_zenoh:

do we want it to be interoperable with DDS-based rmw nodes ?

Ideally yes and through the zenoh-plugin-dds.

do we want it to leverage the zenoh specificities, but loosing interop with DDS ? Or developing a specific ROS2 bridge for interop ?

We can mitigate some of the mismatch via the bridge. For instance queries for DDS-based robots could be replied by the bridge... In any case short term I'd say that the more interesting exercise is to have an RMW that fully exploits zenoh to gain scalability, performance and to ease some of the use cases we know are problematic with DDS-based RMW.

do we want both to be possible ?

As I said above, for me the first goal should be to leverage zenoh at it maximum. Because (1) changing RMW is as simple as changing  an environment variable and (2) for those cases in which this is not possible we can leverage the bridge.

Thank you @kydos @JEnoch and @gbiggs for sharing your perspective.

@JEnoch , here my perspective:

But my question was more on the purpose of rmw_zenoh:

do we want it to be interoperable with DDS-based rmw nodes ?

Ideally yes and through the zenoh-plugin-dds.

So you would rather accept patches that change how the zenoh-plugin-dds maps to Zenoh?

do we want it to leverage the zenoh specificities, but loosing interop with DDS ? Or developing a specific ROS2 bridge for interop ?

We can mitigate some of the mismatch via the bridge. For instance queries for DDS-based robots could be replied by the bridge... In any case short term I'd say that the more interesting exercise is to have an RMW that fully exploits zenoh to gain scalability, performance and to ease some of the use cases we know are problematic with DDS-based RMW.

do we want both to be possible ?

As I said above, for me the first goal should be to leverage zenoh at it maximum. Because (1) changing RMW is as simple as changing an environment variable and (2) for those cases in which this is not possible we can leverage the bridge.

For us replacing CycloneDDS with rmw_zenoh in its current form is not a viable option:

rmw_zenoh is still experimental (I know it is an easy fix in the README :) )
Even if it is technically easy to do the switch, a substantial amount of testing (and most probably fixing) is required to make sure it actually works for every use case in the whole system.
Choosing an RMW implementation is a critical decision. We spent literally months trying to fix all the problems with FastRTPs, before CycloneDDS was available, and practically solved all our issues.

On the other hand, we have a requirement to connect over a routed network to our system from mobile devices (Android, iOS). One option is to just create a custom REST API and call it a day. But for the long term, exposing a subset of the ROS2 APIs we already have is a much better solution. Using the DDS bridge + a full blown DDS implementation on mobile devices is essentially out of the question. But here, because the external connection is not critical, it is much easier to argue the case for Zenoh and rmw_zenoh.
We already talked about this a couple months back: I think the current rmw_zenoh implementation is a good interim solution, but I think the right way forward would be reimplementing it in Rust.
That new implementation could be very well optimized (without even going through the zenoh-c layer or using CDR for serialization) for maximum performance; at the same time it would leverage the safety features of the Rust language. Even better: that implementation could be designed in a way that supports different modes of communication: "compatibility" for using with the DDS bridge and optimized when rmw_zenoh is used exclusively.
This is the reason why I think it would be more important for the current rmw_zenoh implementation to be compatible with the DDS bridge than aim for maximum performance.
What do you think?

As I said above, for me the first goal should be to leverage zenoh at it maximum. Because (1) changing RMW is as simple as changing an environment variable and (2) for those cases in which this is not possible we can leverage the bridge.

For us replacing CycloneDDS with rmw_zenoh in its current form is not a viable option:

rmw_zenoh is still experimental (I know it is an easy fix in the README :) )

:-)

Even if it is technically easy to do the switch, a substantial amount of testing (and most probably fixing) is required to make sure it actually works for every use case in the whole system.
Choosing an RMW implementation is a critical decision. We spent literally months trying to fix all the problems with FastRTPs, before CycloneDDS was available, and practically solved all our issues.

I am glad that Cyclone DDS solved all the issues.

On the other hand, we have a requirement to connect over a routed network to our system from mobile devices (Android, iOS). One option is to just create a custom REST API and call it a day. But for the long term, exposing a subset of the ROS2 APIs we already have is a much better solution. Using the DDS bridge + a full blown DDS implementation on mobile devices is essentially out of the question. But here, because the external connection is not critical, it is much easier to argue the case for Zenoh and rmw_zenoh.

Makes complete sense and based in our experience this is the most common use case we see in the short term.

We already talked about this a couple months back: I think the current rmw_zenoh implementation is a good interim solution, but I think the right way forward would be reimplementing it in Rust.

That new implementation could be very well optimized (without even going through the zenoh-c layer or using CDR for serialization) for maximum performance; at the same time it would leverage the safety features of the Rust language. Even better: that implementation could be designed in a way that supports different modes of communication: "compatibility" for using with the DDS bridge and optimized when rmw_zenoh is used exclusively.

+1

This is the reason why I think it would be more important for the current rmw_zenoh implementation to be compatible with the DDS bridge than aim for maximum performance.
What do you think?

Makes sense and as mentioned above is in line with the short term use cases we are seeing.

So I think we all agree 😄
To summarize:

The main purpose of rmw_zenoh (whether in Rust, C++ or Python) is to leverage as much as possible the benefits of zenoh. This should be the "default mode".
Optionally (via a Rust feature or any compile-time option) rmw_zenoh could switch to a "DDS-compatible" mode where it "mimics" a ROS2 DDS-based system, but using zenoh pub/sub. This would make it interoperable with a ROS2 DDS-based system via the zenoh-plugin-dds in its current version.
The interop between a ROS2 zenoh-based system and a ROS2 DDS-based system could be achieved with a an extension of the zenoh-plugin-dds that would bridge the usage of zenoh by rmw_zenoh (default mode) with a ROS2 DDS-based system.

@kisg if you have no objection, can you update your PR to make the addition of rt/ prefix optional with a compile-time config ?
Out of curiosity, why didn't you consider to directly develop zenoh application (without RMW layer) for Android, similarly than explained in this blog ?

@kisg if you have no objection, can you update your PR to make the addition of rt/ prefix optional with a compile-time config ?
Sure, we will update the PR, thank you.

Out of curiosity, why didn't you consider to directly develop zenoh application (without RMW layer) for Android, similarly than explained in this blog ?

The reason is that we already have an API implemented on top of ROS2, and our goal is to use that API on every platform regardless of the backend implementation. This API is reusing ROS2 types defined in IDL, but it is actually a bit more constrained than the ROS2 API, e.g. it requires the user to always use fixed size messages allocated by the API to work well with ROS2's LoanedMessage abstraction to support shared memory based backends. The API also abstracts other ROS2 specifics, e.g. the QoS settings and the exact topic where the messages would be sent.
We see it as a big benefit that we can replace the backend of our API implementation by switching to a different ROS2 RMW. (And that we don't have to implement these backends ourselves... :) )
That said, I am very much interested in using Zenoh as the ROS2 backend for the whole system in the future.


perf: optimize for constant arguments in tail call optimization

Consider:
  public func find<K, V>(
    map : AssocList<K, V>,
    key : K,
    equal : (K, K) -> Bool
  ) : ?V {
    switch (map) {
      case (?((hd_k, hd_v), tl)) {
        if (equal(key, hd_k)) {
          ?hd_v
        } else {
          find(map, key, equal)
        }
      };
      case (null) { null }
    }
  };

This is tail recursive and should be optimized to a loop by moc. However, arguments key and equal don't change on recursive calls/loop iterations and should only be set once, not on every iteration. I suspect we don't do that optimization.

@kentosugama might be an interesting optimization to consider doing

Will look at this once I get to IR level / motoko specific opts. Going to look at WASM level opts first

Btw, the tail calls proposal for Wasm is now at stage 4, which means it's completed and merely needs to be merged into the main spec. I hope this can happen in the next few weeks.


quoted keywords formally supported, includes a test for a semicolon

omg, terrible merge.
Let me start this again


Add a "commands" tool

This tool performs a post-order traversal of the build graph, starting
from a list of targets specified on the command line, and for each
build statement encountered, prints the evaluated command line.
Use cases include:

Generating input for a tool which needs to know the full command line
for every command invoked during a build.  Many static analysis
and indexing tools require this information.

Generating a build script which does not depend on Ninja.
For example, such a script could be used by Ninja to bootstrap
itself.

This looks good.  Can you rebase/merge?

Done.


[$250] Android - Chat - Emoji list in the emoji picker is misaligned

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 1.4.25-2
Reproducible in staging?: Y
Reproducible in production?: N
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
Action Performed:
Precondition: User account has a few emojis in the emoji recently used history

Go to any chat
Open emoji picker

Expected Result:
Emoji list in the emoji picker is aligned properly
Actual Result:
Emoji list in the emoji picker is misaligned
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Screenshots/Videos
Add any screenshot/video evidence

https://github.com/Expensify/App/assets/78819774/55e64faa-cb81-4164-8943-70257fa15df9
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0142f3abb24fd4c0ef
Upwork Job ID:<PHONE_NUMBER>813213184
Last Price Increase: 2024-01-15

@lanitochka17 @kavimuru  is this reliable report across android devices?

I'm failing to reproduce in Android native.

@lanitochka17 @kavimuru @mvtglobally Can you please retest again/ add better reproduction steps if still repro under some specific ocnditions? thanks

@mountiny Issue is still reproducible on the latest build v.1.4.25-7 with a new account. There is no specific conditions.
Samsung Galaxy Note 10+ / Android 12
https://github.com/Expensify/App/assets/78819774/f0b594af-e420-4b4b-a960-9a8efe872531

https://github.com/Expensify/App/assets/78819774/2d7297fe-e246-4e40-91b4-8f2e37b2950e

I tested with the account<EMAIL_ADDRESS>(same account used here) in staging in Android native, and couldn't reproduce:

I'm guessing that this can only be reproduced in very specific devices like: Samsung Galaxy Note 10+ / Android 12

@lanitochka17 can you update the op with the specific device and os version?
Ideally we can know how common this is, if its an outlier we can close but i think we should try to confirm that somehow
@mvtglobally could your team please check this on various android devices and versions?

@lanitochka17 can you update the op with the specific device and os version?
Ideally we can know how common this is, if its an outlier we can close but i think we should try to confirm that somehow
@mvtglobally could your team please check this on various android devices and versions?

I tried in v1.4.25-9:

@samilabud which phone or simulator did you use to reproduce this?

I use this:

But everything seems to be related to small resolutions.

Reproduced with Pixel 7 Pro simulator:

@mountiny we have two different devices where we can reproduce this, do you know where do we draw the line of donothing vs fix? @samilabud found a way to fix it here, maybe we should go with that and leave a comment in the fix so it doesn't get removed

@aldo-expensify I think if the solution is simple then we can go ahead, from the proposal it seems quite simple as this makes the app look quite bad when it occurs to the user
I would say we do nothing if the solution would be some really bad/ complicated workaround

Just dropping this here to see whatever fix for this ends up fixing this other issue reported recently.

@samilabud Thanks for the proposal. I have few questions

when the resolution is small the Header and Emojis are too close and the header is mixed with the emojis and get misaligned

Why this seem only to happen on Android? I tried doing the same on mWeb and changing the resolution did not have any effect

Right now we are using exactly the same windowWidth that comes from the hook useWindowDimensions but we are adding a horizontal padding to the container that makes the estimated calculation erroneous, this causes the strange behavior to occur

In that case shouldn't omitting contentContainerStyle fix the bug?

@samilabud Thanks for the proposal. I have few questions

when the resolution is small the Header and Emojis are too close and the header is mixed with the emojis and get misaligned

Why this seem only to happen on Android? I tried doing the same on mWeb and changing the resolution did not have any effect

Right now we are using exactly the same windowWidth that comes from the hook useWindowDimensions but we are adding a horizontal padding to the container that makes the estimated calculation erroneous, this causes the strange behavior to occur

In that case shouldn't omitting contentContainerStyle fix the bug?

Hey, thanks for checking out, as far I can see this is not happening in web becase we are using different render function for each one, this is for android and this is for web.
Regarding to the second question that was my first attempt, but it seems that for the FlashList component we need exactly the same size than the estimated one:
https://github.com/Expensify/App/blob/1bcccc6669fddc41597980ca97fa1cb4350efb54/src/components/EmojiPicker/EmojiPickerMenu/BaseEmojiPickerMenu.js#L136-L137

@samilabud Although your solution works, I still don't understand why it works. We are probably fixing one resolution and breaking another. I think we are missing something here. Perhaps this is a bug in FlashList?

as far I can see this is not happening in web becase we are using different render function for each one

Even if we render the same components still not able to reproduce on mWeb

but it seems that for the FlashList component we need exactly the same size than the estimated one

I don't think that's the case. I can even go with paddingHorizontal: 80 and get it to work

@samilabud Although your solution works, I still don't understand why it works. We are probably fixing one resolution and breaking another. I think we are missing something here. Perhaps this is a bug in FlashList?

as far I can see this is not happening in web becase we are using different render function for each one

Even if we render the same components still not able to reproduce on mWeb

but it seems that for the FlashList component we need exactly the same size than the estimated one

I don't think that's the case. I can even go with paddingHorizontal: 80 and get it to work

Got it I'm going to try to reproduce it on the web, but yesterday when I was doing another proposal I saw the same happening in a IPad when switching from landscape to portrait.
BTW I was looking deeper I saw in the official documentation the next explanation of the parameter numColumns maybe it will make more sense to you for my current solution:
Multiple columns can only be rendered with horizontal={false} and will zig-zag like a flexWrap layout. Items should all be the same height - masonry layouts are not supported.

@samilabud Thanks. Let's continue the investigation here 🔍 Also if possible try to reproduce the bug on any IOS device that have same resolution as Pixel 7 Pro or Galaxy Note 10+ (if there is any)

@samilabud Thanks. Let's continue the investigation here 🔍 Also if possible try to reproduce the bug on any IOS device that have same resolution as Pixel 7 Pro or Galaxy Note 10+ (if there is any)

I have tried in Iphone 15 (2556 x 1179 Pixel) and Iphone SE (1334 x 750 pixels) it is reproducible in both:
https://github.com/Expensify/App/assets/5216036/96f34f72-4952-473a-9afa-04ee13a18617
https://github.com/Expensify/App/assets/5216036/c57fc49a-d371-4921-ad19-0296f55b56d4
However to resolve the bug in this platform we had to increase one point (to what I said in my proposal) the margin top in emojiHeaderContainer:
https://github.com/Expensify/App/blob/eb47b90a81f4c898a6aba728fe9abbeddfa82f2f/src/styles/index.ts#L1902-L1907
I mean it works with:
emojiHeaderContainer: {
            backgroundColor: theme.componentBG,
            display: 'flex',
            height: CONST.EMOJI_PICKER_HEADER_HEIGHT,
            justifyContent: 'center',
            marginTop: 2,
        }

@samilabud Increasing the margin does not make any sense. The fact that we needed to add 1px on some devices and 2px on others indicates that this is only a workaround that somehow fixes the bug.

@samilabud Increasing the margin does not make any sense. The fact that we needed to add 1px on some devices and 2px on others indicates that this is only a workaround that somehow fixes the bug.

Got it thanks 👍

Not overdue. Still looking for proposals

Not overdue. Still looking for proposals

Will not be fixed with PR https://github.com/Expensify/App/pull/34581?

@dragnoir I don't see how that PR is related to this issue

Still looking for proposals...

Not overdue. Still looking for proposals

Still looking for proposals.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Emoji icons are not aligned as it should be.
What is the root cause of that problem?
The issue is with this prop
https://github.com/Expensify/App/blob/aadf04769b5fe181c5c01dea1f30c1e4b02bb3e2/src/components/EmojiPicker/EmojiPickerMenu/BaseEmojiPickerMenu.js#L137
The width value is set with a wrong value,<PHONE_NUMBER>2727275 when I tested
To test this root cause, just remove estimatedListSize prop and the issue will disappear.
What changes do you think we should make in order to solve the problem?
We need to set the width inside estimatedListSize to a round value,
const  roundedWindowWidth  =  Math.floor(windowWidth);

<FlashList
  estimatedListSize={{height:  flattenListWrapperStyle.height, width: roundedWindowWidth}}
/>

and to make this work perfectly, we set the width to the set of the parent view
<View  style={[listWrapperStyle, { width: roundedWindowWidth }]}>
<FlashList
  ref={forwardedRef}

This will not only fix the issue but also fix the lagging on the UI.
Note: the code above is a quick demo, for sure we need to add the isSmallScreenWidth condition. More dfetails can be handleld throw PR.
What alternative solutions did you explore? (Optional)
A better solution is to pass the height and the width to estimatedListSize od the FlatList component throw a parent component. Using useWindowDimensions inside BaseEmojiPickerMenu will just force more re-rendering. We alredy calculated the window dimention on parent component.

@dragnoir Thanks for the proposal. Your RCA is correct. The solution looks good to me 👍
🎀 👀 🎀 C+ reviewed
Link to proposal

Not Internal. We have an agreed proposal

I'm not being able to reproduce this anymore in Pixel 7 Pro:
main

staging:

Can someone confirm if this is still reproducible?

@aldo-expensify Try on native not web

@s77rt you are right, reproduced in native. Assigning @dragnoir then.

@dragnoir 👋 , when do you think you can create a PR with the fix?

PR ready https://github.com/Expensify/App/pull/36674

Payment will be automatically handled?

@s77rt when do you think payment will be released? Seem automation not working here!

@dragnoir Right, Melvin been away for a while. I think this is due payment now cc @JmillsExpensify

@JmillsExpensify friendly reminder :)

@aldo-expensify Please remove the Reviewing label and move this to Daily

@aldo-expensify the job is removed from upwork and I have not been paid. Can you pls check!

I don't think I have access, @JmillsExpensify should be able to check

Please reach out to me via DM when the payment automation fail. I'm on hundreds of issues, so it's real hard to get to these in a timeline manner when that failure happens.

Payment summary:

Contributor: @dragnoir $250
Contributor+: @s77rt

Offer sent to contributor and C+ has been paid out.

Thanks! All contributors paid via Upwork.


Study Building Page UI

I found the study building page UI very non-initutive and difficult to use.
The tabs frustrated me a lot. I would prefer a sidebar or header bar with separate pages that move me through each of the steps. It would help create a more concrete step for each process. I have about 3 notes about how much I hate the tab layout after working with the page for a little over 3 hours.
I think I would have found it easier if each page had one action and only one action. The workflow (as I see it) is as follows:

Build study --> Static study landing page
Upload sample template
Upload prep template
Link files to prep template
Demultiplexing and QC (aka Preprocessing)
Annotation and Alignment (aka Processing)

It would be great if the progress bar could somehow indicate the status of each of these steps. So, if I leave the page and log in, I know that I already have a sample template and prep template that are accepted, but that my data is still preprocessing... or something. A visual queue would help me go to the right page on repeat visits.
I don't think that I could use this on my own, without help documentation. I'm not sure that if I attended a workshop and saw this demo'd that I'd be able to go home and replicate it. And, I'm not sure that even if I accomplished the first two tasks I'd be willing to continue using this system. That's how difficult I find the tabs.

@cuttlefishh, @RNAer, @amnona may have other feedback.

Closing as the new GUI has been deployed. Please add individual issues for new features. Thanks!


Having problem updating to 1.0.0 and using datepicker - get a javascript error

I recently upgraded from 0.97.5 to 1.0.0 and have one problem I'm not sure how to fix it.
(My target system is isolated, so I cannot copy/paste the 400+ lines of HTML here.  I know it's a problem, but I'll do my best.)
javascript:  $('.datepicker').datepicker();
HTML (using Thymeleaf and Materialize):

mydate

The error is:
TypeError: this.el.insertAdjacentElement is not a function (materialize.js:3199:9)
open() (materialize.js:3199)
open() (materialize.js:9556)
_handleInputClick() (materialize.js:9426)
I'm stuck with Firefox 45.9.0.
Does this look familiar to anyone?

The only way to avoid the error is to add the
1.12.1 - jquery-ui.js
1.12.1 - jquery-ui.css
But this isn't as nice as the one demonstrated on https://materializecss.com/pickers.html .
One thing I'm wrestling with is that I'm using the webjars version, so I get the feeling it's something missing there, but I don't know what it is.

When I add the ui js and css, it really messes up the tabs.  So I can say that some materialize stuff is happening, but not the datepicker and time picker are not.


net: dns: add 10ms delay when rescheduling query timeout handler

Query timeout handler is rescheduled if DNS context mutex is locked. So
far there was no timeout used, which means that work is simply put at
the end of system workqueue. This solves cases when mutex is locked by
any higher priority cooperative threads.
If however mutex was locked in application code within lower priority
thread (which is very likely) and query timeout has expired in the
meantime, then system workqueue is busy looping by calling query timeout
handler and trying to acquire DNS context lock.
Reschedule query timeout handler with 10ms delay, so that all
threads, including those with lower priorities, have a chance to move
forward and release DNS context lock.

@mniestroj Nice catch, thank you.  I've updated`` the Best Practices section in #34466 to describe this situation.


Fixes #392, detach for statically provisioned volumes.

Testing:

Deployed a pod with statically provisioned volume, created using vmkfstools -c 256M /vmfs/volumes/sharedVmfs-1/volumes/myDisk1.vmdk
Deleted pod
Made sure that the disk gets detached from the node where pod was running

Log messages:
{"log":"I1206 23:04:47.475452 1 virtualmachine.go:373] Found VirtualDisk backing with filename "[sharedVmfs-1] volumes/myDisk1.vmdk" for diskPath "[sharedVmfs-1] volumes/myDisk1"\n","stream":"stderr","time":"2017-12-06T23:04:47.48103635Z"}
{"log":"I1206 23:04:47.475517 1 vsphere.go:846] DiskIsAttached result: %!q(bool=true) and error: %!q(\u003cnil\u003e), for volume: "[sharedVmfs-1] volumes/myDisk1"\n","stream":"stderr","time":"2017-12-06T23:04:47.481092095Z"}

LGTM


Add methods for including external source GUID and Name

Tests are are not changed. Let me know how can we work on it.

Looks good so far, appart from the few comments. I wouldn't merge it to data-engine branch until the tests are updated, because otherwise it will not compile anymore.
Also, not sure if you've done some dev tests with the initial_load payload, maybe I can help with that once it is ready to be merged into data-engine branch.

Cool thanks. I will make the changes today.


add properties to include tsig keys for master and slave zones

add properties to include tsig keys for master and slave zones

Thanks for the PR! I don't know how I overlooked these :-)


Add better label support for GPU usage

Added better label support for GPU usage. On linux with glxinfo you get the GPU (<TYPE>) <PERCENT> info. If glxinfo does not exist it just goes back to GPU and if the usage is "unknown" then you get GPU unknown, like what used to exist before I pushed the glxinfo change show it shows up like others are used to.

@Nybkox wanted to throw this in once I had some time.

lgtm


[Bug] typescrtipt error of IBarChartSpec

Version
1.0.0-beta.2
Link to Minimal Reproduction
no need
Steps to Reproduce
typescript error
Current Behavior
export interface IBarChartSpec extends ICartesianChartSpec, IChartExtendsSeriesSpec<IBarSeriesSpec> {
  type: 'bar';
  /** 系列配置 */
  series?: IBarSeriesSpec[];
}

Expected Behavior
xField and yField can be specified in series
Environment
- OS:
- Browser:
- Framework:

Any additional comments?
No response

fixed in this pr: https://github.com/VisActor/VChart/pull/1766/files


Pre trained weights

Folks awesome job with being able to do real time segmentation with shufflenet 2.
Do you mind sharing the pretrained weights

Thanks, @startupgurukul. Pretrained weights are coming soon.

Checkpoints for cityscapes data set is available under the release section now.

Looking forward, btw thank you for choosing TF, nothing against pytorch but it's just that TF is deployment friendly with tflite and tf.js


Add Hotkeys for Navigating CommitList

Those familiar with vim-keybindings will like the default shortcut keys.  The arrow keys still work, and the keyboard shortcuts are configurable of course.

I created an issue I have to checkout the linux build problem: https://github.com/Murmele/Gittyup/issues/722

@Murmele
Thanks for looking into those build system issues!  Let me know if I can help. I have a little experience with building stuff on linux, but I'm unfamiliar with how this CI/pipeline stuff works on GitHub.
I added a commit that adds navigation hotkeys to the DiffView for moving up/down by a half-page.


Run unit tests on Windows without upgrading Go

Description of Changes

Run unit tests on Windows without upgrading Go
Run unit tests on Windows without race flag, to avoid having to install gcc

Please check that the PR fulfills these requirements

[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)
[ ] Add a changelog entry (for non-trivial bug fixes / features)
[ ] CI passes

Log Files
Logs / Second
CPU Average (%)
Memory Average (MB)

1
1000
3.1553319
26.513739

1
5000
6.224247
32.79957

1
10000
10.551955
42.892105

1
50000
39.398087
118.434265

1
100000
70.15683
167.9736

10
100
4.7759547
29.197737

10
500
7.9484577
34.751213

10
1000
12.465878
43.013603

10
5000
47.10448
99.98343

10
10000
83.57097
170.8839

Latest default version of Windows on Circle ships with Golang 12.x, which can't support our unit tests.


Report format should not include full-path

sbomqs score --filepath ~/Downloads/bomber.cyclonedx.json --reportFormat json
{
  "run_id": "e2c649b0-b33a-4e60-b973-d98bc9b5182c",
  "timestamp": "2023-03-16T22:22:07Z",
  "creation_info": {
    "name": "sbomqs",
    "version": "v0.0.10",
    "scoring_engine_version": "4"
  },
  "files": [
    {
      "file_name": "/Users/spathak/Downloads/bomber.cyclonedx.json",
      "spec": "spdx",
      "spec_version": "SPDX-2.3",

Expected Behavior
The file_name should only include name of the file
Actual Behavior
The file_name includes an entire path to the file (/Users/spathak/ etc).

As discussed internally, this change will confused the user if bom.json is present in multiple directories. We have decided to leave it as is.


turn on PBC for bonded terms

It has been noted that contacts are not periodic. While this is ok for most purposes, there will be cases where the molecule approaches the boundary and the contacts will need to be treated periodically.

this has been resolved in the git version


What problem is this trying to solve?

I don't mean for this title/header to come off as combative. I just ran across this concept of plus codes in its non-programming context (via the plus codes home page).
As a programmer, this makes sense to me. We are all used to new paradigms, methodologies, and technologies popping up all the time.
But it seems to me that open-location is trying to get this to be a success with the larger public.  Is that correct?
If so, it seems its success is as likely as that of the language Esperanto.  Some things in the real world are simply ingrained and understood, regardless of their efficiency.  Is open-location / plus-codes useful outside of the tech world?  How do folks imagine it being used?  If it is only useful for coding / technology, how is it expected to be used?
I like the idea... it just seems doomed to me, so I'm hoping I'm missing something.

I apologize for submitting this question as an "issue", but there was no mention in the documentation as to how / why the technology should be used.

@drinckes in case he has anything to add
Hello!
Thanks for the question and for explaining where you're coming from. You are correct in that plus codes are intended for general public usage. The website actually explains a lot of the benefits:
"A plus code is like a street address for people or places that don't have one.
Plus codes give addresses to everyone, everywhere, allowing them to receive deliveries, access emergency services, register to vote, and are already improving peoples' lives."
More on the "Benefits" tab.

Some things in the real world are simply ingrained and understood, regardless of their efficiency.

I'm not sure what "things" you're referring to here, but plus codes are essentially solving the usability issues of latitude/longitude. A lot of the world doesn't have street addresses, which makes a lot of tasks really difficult (like delivering mail). You could directly use lat/long, but try getting someone to memorize it.
 We worked with Addressing the Unaddressed to map out slums in Kolkata. The country of Cape Verde used plus codes to deliver in-home mail for the first time.
The goal of plus codes was always to solve real-world problems due to lack of street addressing. Let me know if you have any other questions on its usage - happy to elaborate!

Hi @lazarillo - it's amazing the places where there are no street addresses, and the problems this causes.
Even within the US you have large rural areas without addresses, and this causes all kinds of problems, including management of voter registrations and boundary changes, deliveries, emergency service responses. In other countries lack of addresses fuels tax fraud and evasion, reducing the ability of governments to develop their economies.
Here's a another video illustrating the issue in rural US.

@drinckes @zongweil Thanks for your responses! I guess I had trouble imagining that there are places so poor and/or secluded that they do not have addresses, yet so technologically savvy that they would adopt this very novel means of providing a location.  Sounds like I lack imagination.  😏

@lazarillo Here's another potential use-case for this concept:
Last year a change was made to North Dakota elections laws to require that a voter's address be included on their ID for them to be eligible to vote. Native Americans living on a reservation were disproportionately impacted by this change since the largely European-originated concept of a street address wasn't something that their tribal IDs accounted for.
I don't suppose that state and tribal governments would be especially likely to start accepting or using plus codes as substitutes for classic street addresses on IDs, but they couldn't exactly start doing that anyway if plus codes didn't exist yet.


Better handling for non-QWERTY keyboards

Fixes #151 (or tries to, at least...)
As per the discussion in that issue and on Discord, this PR changes Key to represent key position rather than key meaning, and introduces several new APIs to complement this:

KeyLabel represents keys based on their labelling in the current keyboard layout (similar to how Key worked before). It implements Display, to make it easy to use in a game's UI (and as a bit of a hint that you should probably be using this type rather than Key in user-facing scenarios).
input::get_key_with_label finds the physical key that has a particular label in the current keyboard layout.

Example use case: mapping a config file to input bindings

input::get_key_label returns the layout-specific label for a given physical key.

Example use case: displaying button prompts in game

I would have liked to add a label field to Event::KeyPressed and Event::KeyReleased as well, but that would be a breaking change, so I'll do it as part of 0.7.
why tho
Currently, all Tetra games are broken out of the box if the player has a non-QWERTY keyboard layout. This is much more common than I realized (e.g. France and Belgium use AZERTY as standard)!
You can get around this by asking the player to change their layout, or by allowing them to configure input bindings themselves, but it's not a good initial impression - especially if you're in a game jam scenario, where people are likely to just move onto another game rather than spend ages trying to get yours to work.
This feels like the nicest solution to me, because it gives decent behaviour without any extra effort on the developer's part (i.e. the game work on all keyboards, but UI prompts might be incorrect), while giving them the tools to make a really polished implementation via KeyLabel.

I haven't tried it yet, but from reading your description and the code, this looks like a sensible API to me. 👍

Nobody's told me this is a totally crazy idea yet, so 🚀


Weather Information

FR8

Goal: FR8 Provides Weather information for the app

Description: The app will Allows users to access weather information from their given location of their garden. This will factor into notifications based upon their location from conditions of rain, snow, dry spells, heat, etc.

Origin: Idea was mentioned in conversation on 9/13/2022

Version: 1.0

Date: 09/18/2022

Priority: 1.0

Completed by TylerW and Blaine


CreateItemAsync hangs sending over 10K+ requests to Cosmos DB

Describe the bug
I am using Microsoft.Azure.Cosmos <IP_ADDRESS>-preview.
When inserting an entity using CreateItemAsync method, the method will hang and not insert the item. It will instead send thousands of identical requests:
GET https://instance-westeurope.documents.azure.com/dbs/NR4fAA==/colls/NR4fANrZuGI=/pkranges HTTP/1.1
x-ms-max-item-count: -1
A-IM: Incremental Feed
If-None-Match: "17521"
x-ms-date: Tue, 30 Apr 2019 10:48:37 GMT
Authorization: token
Cache-Control: no-cache
User-Agent: Windows/10.0.16299 cosmos-netstandard-sdk/3.0.0
x-ms-version: 2018-06-18
Accept: application/json
Host: instance-westeurope.documents.azure.com

This behaviour does not happen always, but quite frequently. When it does not happen, the insert goes through without a problem. When it does occur, it will send at least 11,000 of those requests. I gave up after that.
To Reproduce
We use this method to insert an item:
public async Task<TEntity> InsertAsync(TEntity entity)
{
	var requestOptions = new CosmosItemRequestOptions
	{
		ConsistencyLevel = ConsistencyLevel.Strong
	};
	var partitionKey = entity.Id.ToString();
	var response = await _container.Items.CreateItemAsync(partitionKey, entity, requestOptions);
	return response.Resource;
}

Expected behavior
Insert an item without any issues.
Actual behavior
Sometimes hangs, sending lots of unrelated requests.
Environment summary
SDK Version: <IP_ADDRESS>-preview
OS Version (e.g. Windows, Linux, MacOSX): Windows
Additional context

I wasn't able to repro sadly. I left a loop doing exactly what you showed (insert) against a Strong account. Creation succeeded every time, during 40 minutes.
When you invoke InsertAsync in your code, are you always awaiting it or calling Wait() or Result?

@ealsur We await all async calls.
I was able to narrow down what affects the behaviour - it has something to do with proxy settings.
This never happens on our deployed systems: AKS node -> Cosmos DB PaaS as they do not use a proxy.
We get this behaviour when running integration tests against Cosmos DB from our laptops on the corporate network.
I changed Internet Options and found this:
No proxy: creates item instantly as expected
Proxy PAC file: hangs
Local Fiddler proxy: hangs (and Fiddler logs why)
In the past we had problems with calling other PaaS services and getting 407 errors due to our proxy configuration. It may be the case that we need to configure something on our end, but I confirmed with our IT department that traffic to *.documents.azure.com is supposed to bypass proxy server anyway.
But the behaviour is not a 407 proxy auth required - it just hangs sending those requests.
Does that help at all in trying to narrow down what may be causing it?

Tried with Fiddler, as that is the only scenario I can repro on my side, but it works as expected:

@ealsur I will try to build the SDK and try to repro on my end - maybe it will tell me how the code gets into that state.


Update move player feature to support relative positions

PR related to #200

Relative positions with width 1000 and height 600
No need to revert y-axis
Modify the original position

Codecov Report

Merging #243 (9b8ccc3) into master (850023d) will decrease coverage by 0.09%.
The diff coverage is 0.00%.

@@             Coverage Diff              @@
##             master     #243      +/-   ##
============================================
- Coverage     71.15%   71.06%   -0.10%
  Complexity      927      927
============================================
  Files           145      145
  Lines          3065     3069       +4
  Branches        366      366
============================================
  Hits           2181     2181
- Misses          769      773       +4
  Partials        115      115

Impacted Files
Coverage Δ

...main/java/seedu/address/model/strategy/Player.java
0.00% <ø> (ø)

src/main/java/seedu/address/ui/StrategyPanel.java
0.00% <0.00%> (ø)

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


Modal dialog not showing when placed behind angular router-outlet

Describe the bug
We are using a modal dialog, which is shown via the data-modal-toggle, which is working fine as long as the component is not loaded via the angular router-outlet.
To Reproduce
Steps to reproduce the behavior:

Create Angular App (v14)
Add Flowbite
Add routes
Add a <router-outlet></router-outlet>
Create a component which holds the modal dialog
Place the modal dialog component on a component, which is loaded via the router-outlet
Press the Toggle Modal button -> nothing is shown.
When the modal dialog component is placed outside the <router-outlet> everything is working fine.

Expected behavior
After pressing the toggle modal button the modal dialog should been shown.
Desktop (please complete the following information):

OS: Windows 11
Browser: Chrome
Version: 107

Additional context
Source Code of the Modal Dialog Component, Tailwind config and Angular config.

<button
  class="block text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"
  type="button"
  data-modal-toggle="default-modal"
>
  Toggle modal
</button>

          Terms of Service

        <button
          type="button"
          class="text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-gray-600 dark:hover:text-white"
          data-modal-toggle="default-modal"
        >
          <svg
            class="w-5 h-5"
            fill="currentColor"
            viewBox="0 0 20 20"
            xmlns="http://www.w3.org/2000/svg"
          >
            <path
              fill-rule="evenodd"
              d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z"
              clip-rule="evenodd"
            ></path>
          </svg>
        </button>

          With less than a month to go before the European Union enacts new
          consumer privacy laws for its citizens, companies around the world are
          updating their terms of service agreements to comply.

          The European Union’s General Data Protection Regulation (G.D.P.R.)
          goes into effect on May 25 and is meant to ensure a common set of data
          rights in the European Union. It requires organizations to notify
          users as soon as possible of high-risk data breaches that could
          personally affect them.

        <button
          data-modal-toggle="default-modal"
          type="button"
          class="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"
        >
          I accept
        </button>
        <button
          data-modal-toggle="default-modal"
          type="button"
          class="text-gray-500 bg-white hover:bg-gray-100 focus:ring-4 focus:ring-gray-300 rounded-lg border border-gray-200 text-sm font-medium px-5 py-2.5 hover:text-gray-900 focus:z-10 dark:bg-gray-700 dark:text-gray-300 dark:border-gray-500 dark:hover:text-white dark:hover:bg-gray-600"
        >
          Decline
        </button>

Tailwind Config:
/** @type {import('tailwindcss').Config} */
module.exports = {
  content: ["./src/**/*.{html,ts}"],
  theme: {
    extend: {},
  },
  plugins: [require("@themesberg/flowbite/plugin")],
};

angular.json
"styles": [
  "src/styles.scss",
<EMAIL_ADDRESS>],
"scripts": [
<EMAIL_ADDRESS>]

Hey @DonkeyKongJr,
Please check out our new Angular, Tailwind CSS and Flowbite guide.
This should now work - there's even a starter project using router-outlet.
Cheers,
Zoltan

Hey @zoltanszogyenyi ,
I have a similar problem or well it seems, what happens is that the js works correctly for me, but when I change the route and then return to the same one and click on the button that should open a modal it does not work.
Any solution?

@Kevin04C this is my solution
I had this problem, but it was the buttons to close the modal. When I navigate to another route where there is a modal and click on the trigger, it does not close with the default modal buttons.
What I did was like this:
This is part of the component

        <button
          type="button"
          class="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"
          (click)="modalFlowbite.hide()"
        >
          I accept
        </button>
        <button
          type="button"
          class="ms-3 text-gray-500 bg-white hover:bg-gray-100 focus:ring-4 focus:outline-none focus:ring-blue-300 rounded-lg border border-gray-200 text-sm font-medium px-5 py-2.5 hover:text-gray-900 focus:z-10 dark:bg-gray-700 dark:text-gray-300 dark:border-gray-500 dark:hover:text-white dark:hover:bg-gray-600 dark:focus:ring-gray-600"
          (click)="modalFlowbite.hide()"
        >
          Decline
        </button>

To open the modal

Inside my .ts component
export class DetailsTenantComponent implements AfterViewInit {
  @ViewChild('modal') modal!: ElementRef<HTMLElement>;
  modalFlowbite!: Modal;
  ...

  setModalData(msg: TMessage) {
    this.modalFlowbite.show();
  }
}

The easy way I found to do this is just initialize every time your router sent and event
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { initFlowbite } from 'flowbite';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
})
export class AppComponent implements OnInit {
  constructor(private readonly router: Router) {
    this.router.events.subscribe(() => {
      initFlowbite();
    });
  }

  ngOnInit(): void {
    initFlowbite();
  }
}

isn't the better way, but works...

 constructor(private readonly router: Router) {
    this.router.events.subscribe(() => {
      initFlowbite();
    });
  }

work!!!! thanks!


Recall  reproduce

Hi thanks for your amazing work, the performance  is absolutely impressive. just one question, I am trying to reproduce the result of Recall rate, but find there is no code for it? any plan to release this part of code? your reply is very appreciate.

Hey @babyporgrammer,
Thanks for taking an interest in our work. I might have misunderstood your question about the recall rate, but I'll try my best to answer.

I am trying to reproduce the result of Recall rate, but find there is no code for it?

Though our demos do not have the code for reproducing recalls (because their purpose is only to do global feature extraction), we have the code for estimating recalls in our scripts like in dino_v2_vlad (which is our main AnyLoc-VLAD-DINOv2 method)
https://github.com/AnyLoc/AnyLoc/blob/2ae462dbce05a2741fe8d075a1313488804e29a3/scripts/dino_v2_vlad.py#L371-L376
The function get_top_k_recall can be found in utilities.py of the main repository (not the demo folder).
Let me know if I was able to answer your query.

@TheProjectsGuy Maybe you should add a Benchmarking sub-section to the main README?

@TheProjectsGuy The scripts folder needs to be updated. It takes a lot of work to try out the best AnyLoc method.
Could you make a benchmarking folder with bash scripts for the best-performing variant of AnyLoc-DINOv2 (Different ViT architectures) and AnyLoc-DINO?
Also, people can select the ViT architecture and dataset through args.


Dependency updates for storybook

Description
This has the following dependency updates:

storybook/addons from 6.2.3 to 6.2.5
storybook/react from 6.2.3 to 6.2.5
storybook/addon-links from 6.2.2 to 6.2.5
storybook/addon-a11y from 6.2.3 to 6.2.5
storybook/addon-essentials from 6.2.2 to 6.2.5
storybook/addon-knobs from 6.2.2 to 6.2.5

Code Review Verification Steps

[ ] If the change is risky, it has been tested in experimental before merging.
[ ] Code follows the guidelines for Logging
[ ] The requirements listed in Querying the Database Safely have been satisfied.
Any new migrations/schema changes:

[ ] Follow our guidelines for zero-downtime deploys (see Zero-Downtime Deploys)
[ ] Have been communicated to #g-database
[ ] Secure migrations have been tested following the instructions in our docs

[ ] There are no aXe warnings for UI.
[ ] This works in Supported Browsers and their phone views (Chrome, Firefox, IE, Edge).
[ ] Tested in the Experimental environment (for changes to containers, app startup, or connection to data stores)
[ ] User facing changes have been reviewed by design.
[ ] Request review from a member of a different team.
[ ] Have the Jira acceptance criteria been met for this change?

Warnings

:warning:
Please add the JIRA issue key to the PR title (e.g. MB-123)

  Generated by :no_entry_sign: dangerJS against 351a8d9b3cdfc3ec078dc00261a5e7434abbeb87


ktlint CLI no longer can properly configure Intellij

Using ktlint CLI tool (0.34.2) installed on MacOS (10.14.6) via brew install ktlint:
Previously, according to the readme, you could run:

ktlint --apply-to-idea-project

and it would cause IntelliJ to "... produce 100% ktlint-compatible code." (quoted from ktlint project readme).  This would happen (on a Mac) when pressing Ctrl+Option+O to reorganize imports, and was working fine up til now.
However, since upgrading from 0.33 to  0.34.2, the optimize imports (^+/+O) cannot fix this issue:

 Imports must be ordered in lexicographic order without any empty lines in-between

Without this, upgrading to 0.34.2 would be more painful than desired...
NOTE:  The CLI command ktlint -F still works, of course, but it isn't directly tied into this IDE.

Thanks for the report! Closing as a dupe of https://github.com/pinterest/ktlint/issues/527; feel free to re-open if you disagree.


Fixes for v0.5

This fixes tests on v0.5. Fixes #9

Current coverage is 95.95% (diff: 100%)

Merging #10 into master will decrease coverage by 0.49%

@@             master        #10   diff @@
==========================================
  Files             2          2
  Lines           169        173     +4
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits            163        166     +3
- Misses            6          7     +1
  Partials          0          0

Powered by Codecov. Last update 67afa1e...eefd26f


Client Side Encryption: Add documentations and improve implementation

Packages impacted by this PR
@azure/cosmos
Issues associated with this PR
Describe the problem that is addressed by this PR
This PR adds documentation, adds relevant tags to classes and properties.
What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen?
Are there test cases added in this PR? (If not, why?)
Provide a list of related PRs (if any)
Command used to generate this PR:**(Applicable only to SDK release request PRs)
Checklists

[ ] Added impacted package name to the issue description
[ ] Does this PR needs any fixes in the SDK Generator?** (If so, create an Issue in the Autorest/typescript repository and link it here)
[ ] Added a changelog (if necessary)

/azp run js - cosmosdb - ci