Serious Bluetooth regression in version 3

I've been using version 2 for several months now, using bluetooth on both Mac and Windows and bluetooth worked pretty much ok, some issues from time to time but nothing major.
I just upgraded to version 3 here, and have serious bluetooth issues, managed to get it working so that it barely work on the Mac but not at all on windows.
Currently in order to connect to the Mac, every time I turn on the keyboard I have to remove all devices on the Mac and then repair. It appears that every time the keyboard starts up it has a new id, so a new keyboard appears on the bluetooth preferences list, so I have to force removing all devices (just the adv360 is not enough) and reconnect.
On windows it just won't connect, the operation fails immediately.
This makes this version totally unusable.
BTW - in order to get it working in the first place I had to reset the keyboard both with the settings that clear the flash and the reset-settings for version 3 (from the bottom of the page at https://kinesis-ergo.com/support/kb360pro/)
I'm not very familiar with zmk code base, but I think I've seen there were changes made to the ble module that haven't been merged to the code base used here, maybe that's the cause for these issues.

All changes from ZMK were merged in when the V3 update was performed.
https://github.com/KinesisCorporation/Adv360-Pro-ZMK/blob/2d369451ae2a1326f64c37221802e1f4079b590a/config/boards/arm/adv360/adv360_left_defconfig#L52-L57
These lines alter the bluetooth configuration with the goal of improving the bluetooth experience for some mac users who were experiencing issues. Looking at your config repo you have some very odd configuration things going on, have you tried using the factory V3 files to see if there's any change in behaviour?

https://github.com/yanshay/Adv360-Pro-ZMK/blob/main/config/west.yml Your west.yml references a version of V2 firmware, not a version of v3 firmware. V3 firmware is derived from this branch https://github.com/ReFil/zmk/tree/adv360-z3.2

https://github.com/yanshay/Adv360-Pro-ZMK/blob/main/config/west.yml Your west.yml references a version of V2 firmware, not a version of v3 firmware. V3 firmware is derived from this branch https://github.com/ReFil/zmk/tree/adv360-z3.2

I'm using a local repo clone, not the one on Github before I switch to it, so what you see on Github is not the one I'm using. I use podman locally to build and it points to your z3.2 branch.

All changes from ZMK were merged in when the V3 update was performed.
https://github.com/KinesisCorporation/Adv360-Pro-ZMK/blob/2d369451ae2a1326f64c37221802e1f4079b590a/config/boards/arm/adv360/adv360_left_defconfig#L52-L57
These lines alter the bluetooth configuration with the goal of improving the bluetooth experience for some mac users who were experiencing issues. Looking at your config repo you have some very odd configuration things going on, have you tried using the factory V3 files to see if there's any change in behaviour?

I'm referring to changes in the file /app/src/ble.c - current file on zmk main differs from the one in your branch. As I said, I don't know the codebase and only suspect the ble.c has to do with bluetooth.

There have been changes to ZMK main ble.c since the V3 update, at the time of the update they were the same. Please try the factory V3 firmware available here: https://kinesis-ergo.com/download/advantage360-professional-factory-default-7-6-23/ and the V3 settings reset available here: https://kinesis-ergo.com/download/advantage360-professional-factory-default-7-6-23/

There have been changes to ZMK main ble.c since the V3 update, at the time of the update they were the same. Please try the factory V3 firmware available here: https://kinesis-ergo.com/download/advantage360-professional-factory-default-7-6-23/ and the V3 settings reset available here: https://kinesis-ergo.com/download/advantage360-professional-factory-default-7-6-23/

You provided the same link twice, can you provide the correct setting reset link to make sure I try the proper one?

My apologies, here is the link https://kinesis-ergo.com/download/adv360-pro-settings-reset-version-3-0/

I tried with the above files, I reset both sides, then installed the firmware and same behavior. In short - exact same behavior.
After I remove all devices on the Mac I can connect the keyboard and it works.
Then I turn keyboard off and turn on, it blinks slowly and doesn't connect. It appears on the bluetooth settings of the Mac as a new device to connect to but fails to connect when pressing the button to connect. To get it connected I have to remove all devices on the mac (just this one is not enough, need to use the advanced remove all devices) and need to press the BL reset keyboard sequence to get it blinking fast. Only then it connect again.
I can see the hex 12 digits code on the Mac of the devices, every time it turns on and off (both if previously it was successfully connected or not) there is a new code. My other bluetooth keyboard keeps the same code all the time no matter what I do so I guess that's causing the issue, it just doesn't persist the code across sessions.
And on my windows machine it just doesn't connect, windows sees it and when I press to connect it quickly respond with 'try connecting your device again'
All these issues don't happen with the the v2 version (well, at least didn't until I tried to upgrade), will need to switch back soon and will know for sure.

The code changing behaviour you're describing is Bluetooth LE privacy. This is a feature apple explicitly requires in their accessory device specifications. It can be disabled by removing the lines I previously mentioned from adv360_left_defconfig.
During testing of v3.0 i was unable to replicate the behaviour you describe on windows or Mac, what computers and Macos version are you using?

Is this a new requirement from apple? The other keyboard I mentioned that doesn't change its code is an apple magic keyboard.
I also don't see these lines in the 2.0 configuration file, so maybe that's indeed the issue.
Do I need to remove all lines? Or just the privacy one change to 'n'?
I'm using MacBook Pro 2018, still with BigSur, and Windows 10 on my PC.

It's been a requirement recently, although i do not know if it tracks back to big sur, remove only the privacy line and try again
major updates will often change the encryption keys on the keyboard, for the windows issue are you trying to pair to the keyboard or connect? you need to remove the pairing in windows and re-pair

I removed the CONFIG_BT_PRIVACY=y  line and now bluetooth works properly. So probably this doesn't work well with BigSur.
As for the windows machine, I don't see there the advantage keyboard, what I do is 'add' device, it scans and shows me devices and the pairing doesn't work. I restarted the machine to see there are no leftovers in memory. It's an external bluetooth dongle that worked with version 2 but don't know what vendor exactly.
Could it be one of the other lines?

unlikely but you can try. the other 5 lines work as one block, you have to remov them all.

I had some unstable connectivity issues with the Mac, some key-presses were delayed, some just didn't arrive. I removed those 5 other lines and things improved considerably. I still see cases where there is a miss but rare enough to think it might be me and not the bluetooth connectivity. Is there anywhere that documents those settings for non BT experts? couldn't find a clear explanation anywhere.
Also, it doesn't work with my windows machine. Any way on windows to verify it doesn't have any memory of old bluetooth pairing somewhere?

What Bluetooth adapter are you using on your windows pc? Make sure it is running the latest drivers

The bluetooth adapter on my Windows is called 'soomfon', it's using Realtek drivers. I updated the drivers and it still doesn't connect. Any ideas what I can check?
As for the Mac, from time to time the bluetooth connectivity becomes very poor. Not as regular as with those 5 lines above, but it still happens and then I have to connect to USB to be able to work. I think (though not sure) it's happening after some time of not using the keyboard, maybe due to it going to sleep?
Would it help to play with those BT settings in those 5 lines I removed? I found various references on the web to those parameters in other contexts with very different values, but don't understand what they mean.

The top line simply enables overriding of the settings, the next 4 are the actual parameters. We used the apple values available on page 193 of this document https://developer.apple.com/accessories/Accessory-Design-Guidelines.pdf
I dont know where you'd start with changing those values as they have a huge range but could severely degrade the experience if set incorrectly. What sort of connectivity issues are you encountering? is it lockops?

I experience mostly:

Delays - I press a key and it takes time until it takes effect, sometime up to what seems like 1/2 a second. And not a single key, when that happens it happens quite frequently to the point I can't work with the keyboard.
Events don't arrive, sometimes the key, sometimes the release of the key (and then it autorepeats forever). Also, when it happens it happens many times, not just once.
Bluetooth connects/disconnects - I see that when I keep the bluetooth preferences window open and I see the keyboard flips between connected/disconnected. If I wait (could be 10-15 seconds) it usually ends up back to be connected.

When it happens I connect to USB (I can do that quickly) and that behavior disappears. So it doesn't like like keyboard SW or laptop hickups, feels like connectivity. And on USB it never happens.
And other bluetooth devices at the same time are completely stable and function perfectly.

The top line simply enables overriding of the settings, the next 4 are the actual parameters. We used the apple values available on page 193 of this document https://developer.apple.com/accessories/Accessory-Design-Guidelines.pdf

This is dated 2022, is there such a document from earlier years? My laptop is 2018, maybe they changed chipsets/sw and there were other values for older HW? Like we've noticed that that privacy parameter completely failed the connection probably because my OS/Laptop are older?

CONFIG_BT_PERIPHERAL_PREF_TIMEOUT=600
CONFIG_BT_PERIPHERAL_PREF_MIN_INT=12
CONFIG_BT_PERIPHERAL_PREF_MAX_INT=24
CONFIG_BT_PERIPHERAL_PREF_LATENCY=30

From the document:

Peripheral Latency of up to 30 connection intervals

Seems like above setting is at the max latency allowed

Supervision Timeout from 2 seconds to 6 seconds.

Is that the 600 above? what units are those?

Interval Min of at least 15 ms.

Isn't the relevant number above 12 and it's less than the minimum?

Interval Min is a multiple of 15 ms.

And it isn't a multiple of 15?

Interval Max * (Peripheral Latency + 1) of 2 seconds or less.
Supervision Timeout greater than Interval Max * (Peripheral Latency + 1) * 3.

?

The delay and lockup issue could also be connected to this fix https://github.com/zmkfirmware/zmk/commit/9a963abfc8b27c6fdfb5b6b4b38e5905d6a360a7 which has yet to be merged into the adv360 branch but is on the list of things to do

I have the same behavior here with repeating keys, even when I use my Macbook keyboard while the 360 is connected.  Any idea when this could be pulled from the zmk repo?

There's now a beta firmware with that change merged. It would be greatly appreciated if yyou could try it and give feedback https://kinesis-ergo.com/support/kb360pro/#firmware-updates

There's now a beta firmware with that change merged. It would be greatly appreciated if yyou could try it and give feedback https://kinesis-ergo.com/support/kb360pro/#firmware-updates

Do you have a link to your branch with that commit merged?

I have the same behavior here with repeating keys, even when I use my Macbook keyboard while the 360 is connected.  Any idea when this could be pulled from the zmk repo?

@jasselin my solution atm is just to implement a feature that allows you disconnect the keyboard from macbook's bluetooth menu when that happens. Not perfect, but works for me in most cases.
Ref: https://github.com/ReFil/zmk/pull/7

There's now a beta firmware with that change merged. It would be greatly appreciated if yyou could try it and give feedback https://kinesis-ergo.com/support/kb360pro/#firmware-updates

@ReFil Do you have a link to your branch with that commit merged?

Sorry I dont as of yet, it's just a test branch on my laptop. I can push it if needs be

There's now a beta firmware with that change merged. It would be greatly appreciated if yyou could try it and give feedback https://kinesis-ergo.com/support/kb360pro/#firmware-updates

@ReFil Do you have a link to your branch with that commit merged?

Sorry I dont as of yet, it's just a test branch on my laptop. I can push it if needs be

That would be great, so I can also test it with my own configurations. Thanks!

https://github.com/zmkfirmware/zmk/issues/1900 This could possibly be connected

There's now a beta firmware with that change merged. It would be greatly appreciated if yyou could try it and give feedback https://kinesis-ergo.com/support/kb360pro/#firmware-updates

@ReFil Do you have a link to your branch with that commit merged?

Sorry I dont as of yet, it's just a test branch on my laptop. I can push it if needs be

That would be great, so I can also test it with my own configurations. Thanks!

Same here.
BTW - I witness more and more BT related issues making the keyboard unusable with BT for long time.

There's now a beta firmware with that change merged. It would be greatly appreciated if yyou could try it and give feedback https://kinesis-ergo.com/support/kb360pro/#firmware-updates

@ReFil Do you have a link to your branch with that commit merged?

Sorry I dont as of yet, it's just a test branch on my laptop. I can push it if needs be

@ReFil any updates?

https://github.com/ReFil/zmk/tree/adv360-z3.2-beta
apologies for the delay

https://github.com/ReFil/zmk/tree/adv360-z3.2-beta
apologies for the delay

I switched to this branch with my own keymaps modifications and also merged additional logics I made to handle the BLE disconnection from host computer. After around 1h of usage I don't observe the repeating keys issue as before. Also typing on the MacBook internal keyboard no longer gives me a laggy feeling anymore.
I will follow up when I observe any new issues from this version. But so far it's a great improvement for me. Many thanks for the work :)

Still working better?

Still working better?

Yes :) Tested on my both MacBooks (2021, Intel and 2023, M2).

I experience this issue as well, although the main manifestation is when I take my laptop (2021 M1 MacBook Pro, macOS 13.5) away from my desk (and Adv360) and into another room. My laptop keyboard will become unusable due to dropped, repeated, laggy keys (as described above) unless I turn off bluetooth or the Adv360 itself.
@cvcore's patch helps in that it lets you disconnect the keyboard from the bluetooth menu without turning off bluetooth entirely, but neither it nor the updated version of zmk the branch is based on fix the underlying issue. If anything the performance seems a little worse on the ReFil:adv360-z3.2-beta branch that it does the stable adv360-z3.2 one? But thank you to both @cvcore and @ReFil for working on this!
In general, the bluetooth performance for my Adv360 has been significantly worse that the other keyboard I have that also runs zmk, and I (poorly) soldered that one together myself so if anything it should be the other way around. It's not bad enough to make the Adv360 unusable, but it's annoying. And the difference between using the Adv360 over bluetooth vs over USB with bluetooth disabled is like night and day.

I experience this issue as well, although the main manifestation is when I take my laptop (2021 M1 MacBook Pro, macOS 13.5) away from my desk (and Adv360) and into another room. My laptop keyboard will become unusable due to dropped, repeated, laggy keys (as described above) unless I turn off bluetooth or the Adv360 itself.
@cvcore's patch helps in that it lets you disconnect the keyboard from the bluetooth menu without turning off bluetooth entirely, but neither it nor the updated version of zmk the branch is based on fix the underlying issue. If anything the performance seems a little worse on the ReFil:adv360-z3.2-beta branch that it does the stable adv360-z3.2 one? But thank you to both @cvcore and @ReFil for working on this!
In general, the bluetooth performance for my Adv360 has been significantly worse that the other keyboard I have that also runs zmk, and I (poorly) soldered that one together myself so if anything it should be the other way around. The bluetooth performance is not bad enough to make the Adv360 unusable for me, but it's quite annoying sometimes. And the difference between using the Adv360 over bluetooth vs over USB with bluetooth disabled is like night and day.

Please re-flash with today's release, test again and report back. We have tested physically separating the Adv360 from a 2023 MacBook Pro running 13.5.1 by walking it far enough away that the Mac and 360 become disconnected. The laptop keyboard works fine while the separated and re-uniting the keyboard Mac has the 360 keyboard working fine as well.

I'm also having trouble with repeating keys after upgrading to v3.0. I did not have the issue on v2.0. I'm running a Surface Laptop Studio on Win11. I tried using the changed my west.yml file to read revision: adv360-z3.2-beta, but i keep getting a "Process completed with exit code 1." error after I commit changes and attempt a Build action.
what did I do wrong?
https://github.com/eugene8080/Adv360-Pro-ZMK/blob/V3.0/config/west.yml

Hi, theree was a bug in the online build process that has since been fixed, you should be able to build your firmwares now, apologies for the inconvenience

Please re-flash with today's release, test again and report back. We have tested physically separating the Adv360 from a 2023 MacBook Pro running 13.5.1 by walking it far enough away that the Mac and 360 become disconnected. The laptop keyboard works fine while the separated and re-uniting the keyboard Mac has the 360 keyboard working fine as well.

Hi @KinesisCorporation , today I got some time to test the v10-23-23 firmware downloaded from https://kinesis-ergo.com/support/kb360pro/#firmware-updates. I followed exactly the instructions when flashing the firmware. Unfortunately, the test result is not satisfying.
I tested by typing two paragraphs of text from https://official-typing-test.com/test/10test.html and made this screen recording. The repeating keys issue happened for me 3 times within a time frame of 5 minutes (as can be seen in 0:54, 1:59, 3:04).
For a fair comparison, I've also used a HHKB-BT keyboard paired to the same macbook via Bluetooth and typed for 5 minutes on the same website. There were no repeating keys observed. So the Bluetooth connectivity shouldn't be an issue.
Some more hardware info to help debug:

Laptop: MacBook Air M2, 2022 Model Mac14,2
OS: macOS Ventura 13.0
Bluetooth: Chip BCM_4387
ADV360 has RSSI of -64 dBm when connected (in comparison my HHKB-BT has -45 dBm)

Since this issue is impacting many users already, I'm hoping for a systematic approach to identify the root cause of the issue before releasing a newer version. It's a great piece of hardware and I hope the software as well :)

Is the ReFil:adv360-z3.2-beta still the best branch for bluetooth updates? I noticed the main branch now refers to ReFil:adv360-z3.2-2

@cvcore
We should probably open new "issues" that are laser focused on one specific "bug". The latest update was targeting improvements in syncing between the left and right module, and stability of connection with the PC.
Please start a new issue pertaining to your repeating keys and we'll look to get to the root cause of that. Thanks!

Please start a new issue pertaining to your repeating keys and we'll look to get to the root cause of that. Thanks!

When I had repeating keys issues those definitely were driven by BT issues. I've also had other symptoms. I'm not sure you want to fill this repo here with all BT symptoms one by one when they definitely feel like all driven by BT issues.
Anyway, the interference BT issues on my end seem to be much better since I opened this issue. The main thing I've done was to move Logitech wireless dongle further from my laptop and keyboard using a USB extension coord. I think the Advantage Pro is prone to BT interference from Logitech, maybe low transmittion or reception power. I saw someone else on this issue also wrote he had such issues. Other BT devices I have didn't have those issues, only the Advantage Pro had.
I also updated to the latest branch a few days ago, I think that improved on the disconnect issues which took place once in a while, I did not have that since I made the update.

Yes, the 3.2-2 branch uses the current latest updates. It implements the repeating key fix here: https://github.com/zmkfirmware/zmk/commit/9a963abfc8b27c6fdfb5b6b4b38e5905d6a360a7 as well as a host of other improvements. The 3.2-beta branch is currently equal with 3.2-2 however is subject to frequent, often breaking changes so unless you're willing to be on the bleeding edge it's recommended you use 3.2-2

I thought the repeating keys issue went away after using adv360-z3.2-beta, but it came back again.
When I flashed the v2.0 firmware, I have no repeating keys issue at all.
Where can I find the old v2.0 files on Github so I can make changes to the keymap and use 2.0 until 3.0 becomes usable on my computer?
===============================================
Everything I have tried for v3.0 firmware has resulted in repeating keys.
I haved tried:
turning off my Logitech mouse (@yanshay)
disconnecting the logitech wifi dongle
turning off bluetooh on my phone and computer before turning on the adv360
For the Settings reset, i have used:
settings-reset.uf2 released 2023-10-30
settings-reset-v1.0.uf2, settings-reset-v2.0.uf2, settings-reset-v3.0.uf2 in sequence
Firmware I have now tested:
Adv360 Pro Factory Default Branch 3.0 (v10-23-23)
Adv360 Pro Factory Default Branch 3.0 (v7-6-23)
adv360-z3.2-2
adv360-z3.2-beta
Keyboard: Kinesis Advantage360 Pro
Computer: Surface Laptop Studio, 11th Gen Intel(R) Core(TM) i7-11370H @ 3.30GHz
Bluetooth: Intel Wifi-6 AX200 160MHz
OS: Windows 11 Home 22H2

@yanshay just following up, have you encountered further issues since updating and making those setup changes?

@yanshay just following up, have you encountered further issues since updating and making those setup changes?

It's much better and completely usable so far on BT.
I think I did notice a few cases where when turning on the keyboards (left then right) it doesn't work and the right side blinks error, but turning off and on again both gets it to work, so not a big deal for me. It then stays connected w/o noticeable issued.

For the left right connection try leaving the left on for a few seconds before turning the right on, since the 10/20/23 update having the left on for a bit (Once the leds come online it should be good) before turning the right on should help. If you're happy with the performance as is are you ok to close this issue out?

@cvcore please try this change that another macos user reported helped their situation significantly https://github.com/KinesisCorporation/Adv360-Pro-ZMK/issues/262#issuecomment-1793689158

Sorry to take this off topic but I found this thread while trying to troubleshoot why I couldn't connect via Bluetooth to an Android tablet.  The tablet would pair, but then wouldn't connect in any way.  I tried commenting out the CONFIG_BT_PRIVACY=y line as suggested above and it completely resolved the issue for me.

For the left right connection try leaving the left on for a few seconds before turning the right on, since the 10/20/23 update having the left on for a bit (Once the leds come online it should be good) before turning the right on should help. If you're happy with the performance as is are you ok to close this issue out?

Yes, I'm ok with closing this issue. Thanks for resolving this.

@lodi In the newest update privacy has been disabled by default and so you shouldn't have any issues with it any more. Thanks for documenting your experience getting it working on Android


"Code Analysis in progress" forever (never starts?)

Python Language Server <IP_ADDRESS> (freshly deleted and reinstalled)
Python Extension version 2019.5.18678
VS Code 1.35.0
Linux RHEL 7
Code analysis never seems to properly finish? I have turned logging to Trace. The server starts, the Outline is created for whatever code is opened, but floating over any definition the float over text is just "Code Analysis in Progress" without end.
The only thing of note in the Python Ouput log just says Analysis of <whatever.whatever>(Library) Queued with no additional messages at any time no matter how long I wait. Go To Definition ability never loads.
The status bar, which used to show the (large but eventually decreasing to zero) number of files being analyzed, etc., now never says anything about analysis status. I feel like a few weeks ago it would show thousands/hundreds of files being analyzed, the number would gradually decrease, and then stop after a minute or two.
This no-definition-analysis behavior happens regardless of my "python.analysis.openFilesOnly" setting.
If I switch to Jedi, it quickly analyzes sufficiently to find definitions, so the issue goes away with Jedi. But, then I run into the Gitlens/Jedi outline symbols error, and have to turn off Gitlens. Any ideas?

After stopping/starting vscode multiple times, it finally analyzed the files.

I'm getting the same behaviour -- no analysis happening:
Microsoft Python Language Server version <IP_ADDRESS>
VS Code 1.35.0
Python Extension Version: 2019.5.18875
Ubuntu 19.04
Switching back to Jedi for now so I can keep working :disappointed:

Same here, with a trace log I am seeing:
Starting Microsoft Python language server.
[Info  - 9:29:33 AM] Analysis cache path: /home/florian/.cache/Microsoft/Python Language Server
##########Linting Output - flake8##########
[Info  - 9:29:33 AM] GetCurrentSearchPaths /home/florian/sources/ara/.venv/bin/python
[Info  - 9:29:33 AM] Python search paths:
[Info  - 9:29:33 AM]     /usr/lib/python3.7
[Info  - 9:29:33 AM]     /usr/lib/python3.7/lib-dynload
[Info  - 9:29:33 AM]     /home/florian/sources/ara/.venv/lib/python3.7/site-packages
[Info  - 9:29:33 AM]     /home/florian/sources/ara
[Info  - 9:29:33 AM] Configuration search paths:
[Info  - 9:29:35 AM] Microsoft Python Language Server version <IP_ADDRESS>
[Info  - 9:29:35 AM] Initializing for /home/florian/sources/ara/.venv/bin/python
Opening document file:///home/florian/sources/ara/ara/api/serializers.py
Analysis of ara.api.serializers(Library) queued
Opening document file:///home/florian/sources/ara/ara/api/models.py
Analysis of ara.api.models(Library) queued
##########Linting Output - flake8##########
Opening document file:///home/florian/sources/ara/ara/api/auth.py
Analysis of ara.api.auth(Library) queued
##########Linting Output - flake8##########

Analysis is only queued.
Microsoft Python Language Server version <IP_ADDRESS>
VS Code 1.35.1
Python Extension Version: 2019.5.18875
Debian unstable

I think it should be noted that hovering over a symbol only returns "Code analysis is in progress" (I googled this and the only result was the source code).

Seeing similar output. Could there be something with installed packages (another user in the issue referenced above mentioned seeing this in Conda (https://github.com/microsoft/vscode-docs/issues/2741#issuecomment-501416916):

this happens only when the selected interpreter is the one provided by conda

Here's what I've got installed in my environment (created through Poetry):

pip list
poetry run pip list
Package            Version
------------------ --------
appdirs            1.4.3
aspy.yaml          1.3.0
astroid            2.2.5
atomicwrites       1.3.0
attrs              19.1.0
black              19.3b0
blinker            1.4
certifi            2019.3.9
cfgv               2.0.0
chardet            3.0.4
Click              7.0
entrypoints        0.3
flake8             3.7.7
Flask              1.0.3
gunicorn           19.9.0
identify           1.4.3
idna               2.8
importlib-metadata 0.17
isort              4.3.20
itsdangerous       1.1.0
Jinja2             2.10.1
json-logging       0.0.11
jsonschema         3.0.1
lazy-object-proxy  1.4.1
maestro-python     0.1.5
MarkupSafe         1.1.1
mccabe             0.6.1
more-itertools     7.0.0
nodeenv            1.3.3
pendulum           2.0.4
pip                19.0.3
pluggy             0.12.0
pre-commit         1.16.1
py                 1.8.0
pycodestyle        2.5.0
pyflakes           2.1.1
pylint             2.3.1
pyrsistent         0.15.2
pytest             3.10.1
pytest-mock        1.10.4
python-dateutil    2.8.0
pytzdata           2019.1
PyYAML             5.1
requests           2.22.0
responses          0.10.6
sentry-sdk         0.7.14
setuptools         40.8.0
six                1.12.0
toml               0.10.0
typed-ast          1.3.5
urllib3            1.25.3
virtualenv         16.6.0
Werkzeug           0.15.4
wrapt              1.11.1
xmltodict          0.12.0
zipp               0.5.1

I think it should be noted that hovering over a symbol only returns "Code analysis is in progress" (I googled this and the only result was the source code).

Yep -this was the behavior that prompted me to open the issue!

If there's a repo that reproduces this, that'd be great. A copy of a trace log which shows the analysis stopping could be useful, too. https://github.com/microsoft/python-language-server/blob/master/TROUBLESHOOTING.md#filing-an-issue

@jakebailey I sadly cannot provide the repo to reproduce, but the logs I posted in https://github.com/microsoft/python-language-server/issues/1175#issuecomment-502002175 are all the logs I get with trace enabled :/ I do not think it ever starts at all.

Ah, my bad, I missed the trace lines in that output (distracted by the pylint text).

Not sure if it is of any help, but this is a backtrace of the language server:
#0  futex_wait_cancelable (private=0, expected=0, futex_word=0x13a2fd4) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x13a2f80, cond=0x13a2fa8) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x13a2fa8, mutex=0x13a2f80) at pthread_cond_wait.c:655
#3  0x00007f32d5602c12 in CorUnix::CPalSynchronizationManager::ThreadNativeWait(CorUnix::_ThreadNativeWaitData*, unsigned int, CorUnix::ThreadWakeupReason*, unsigned int*) ()
   from /home/florian/.vscode/extensions/ms-python.python-2019.5.18875/languageServer.0.2.96/libcoreclr.so
#4  0x00007f32d56027f4 in CorUnix::CPalSynchronizationManager::BlockThread(CorUnix::CPalThread*, unsigned int, bool, bool, CorUnix::ThreadWakeupReason*, unsigned int*) ()
   from /home/florian/.vscode/extensions/ms-python.python-2019.5.18875/languageServer.0.2.96/libcoreclr.so
#5  0x00007f32d56071c4 in CorUnix::InternalWaitForMultipleObjectsEx(CorUnix::CPalThread*, unsigned int, void* const*, int, unsigned int, int, int) ()
   from /home/florian/.vscode/extensions/ms-python.python-2019.5.18875/languageServer.0.2.96/libcoreclr.so
#6  0x00007f32d5607541 in WaitForMultipleObjectsEx () from /home/florian/.vscode/extensions/ms-python.python-2019.5.18875/languageServer.0.2.96/libcoreclr.so
#7  0x00007f32d5269d61 in Thread::DoAppropriateWaitWorker(int, void**, int, unsigned int, WaitMode) ()
   from /home/florian/.vscode/extensions/ms-python.python-2019.5.18875/languageServer.0.2.96/libcoreclr.so
#8  0x00007f32d5264ba0 in Thread::DoAppropriateWait(int, void**, int, unsigned int, WaitMode, PendingSync*) ()
   from /home/florian/.vscode/extensions/ms-python.python-2019.5.18875/languageServer.0.2.96/libcoreclr.so
#9  0x00007f32d52b6980 in WaitHandleNative::CorWaitOneNative(SafeHandle*, int, bool, bool) () from /home/florian/.vscode/extensions/ms-python.python-2019.5.18875/languageServer.0.2.96/libcoreclr.so

According to strace it never leaves this wait.

Unfortunately that doesn't help too much due to the CLR stuff (the LS is in C# so it runs within the CLR), other than knowing that there's some deadlock. Getting a real trace of where it's stopped would be something we'd do in VS, but that's of course not as simple to emulate on Linux (probably doable with vsdbg but I haven't used it).
One thing to try is the daily build to see if it's gone away in a few fixes since 0.2.96, by setting:
"python.analysis.downloadChannel": "daily"

Unfortunately that doesn't help too much due to the CLR stuff (the LS is in C# so it runs within the CLR), other than knowing that there's some deadlock. Getting a real trace of where it's stopped would be something we'd do in VS, but that's of course not as simple to emulate on Linux (probably doable with vsdbg but I haven't used it).
One thing to try is the daily build to see if it's gone away in a few fixes since 0.2.96, by setting:
"python.analysis.downloadChannel": "daily"

The daily download is not helping me, just tried it.
Happy to try vsdbg to get you a better trace, if someone can point me to some example

@jakebailey Got you a reproducer: https://github.com/apollo13/vscode-bug -- Please follow the instructions in README.md. If anyone else could confirm that this sequence also generates a hanging analysis…

Note: For me analysis starts working once I do not run pip install -e . in the above example repo.

Thanks, I can reproduce it and have a fix. This is related to #1209, as well as https://github.com/microsoft/python-language-server/issues/537#issuecomment-502806667.

Oh interesting, re #537, I am using .pth files too...

If you're using any sort of editable installs/setup.py develop, definitely (even if someone doesn't know it).
We use the interpreter to get info about what is library code and what isn't. pth files make things more complicated because the interpreter will report that a given path is something it has. Setting extraPaths as in https://github.com/microsoft/python-language-server/blob/master/TROUBLESHOOTING.md#unresolved-import-warnings will then let you specify which roots are yours. In this case, the workspace root should always be treated as user code. Installing the workspace root wasn't a case that I had found/considered in #1169 (as nobody had presented such a situation until now).

hmm, I don't think I have used an editable install? I just needed to add several directories to my python path to aide in unit test discovery, and .pth files seemed easier than adding things to an environmental variable. Most of my packages are from conda.
But my structure is like:
my_code->
    folder1
    folder2
    folder3

and I have made my_code what I open as a folder in my workspace, and folder1, etc. are all added to my path with .pth files in my personal site-packages dir. Is that not what I should be doing? Will that stop working with your PR?

It won't stop working, but as per https://github.com/microsoft/python-language-server/blob/master/TROUBLESHOOTING.md#unresolved-import-warnings if you're not going to be importing things relative to your open workspace (i.e. if you have folder1/a/b and are importing a.b and not folder1.a.b), then you're going to need to do something like this for now:
"python.autoComplete.extraPaths": [
	"./folder1",
	"./folder2",
	"./folder3"
]

And the LS will then treat those as places where code can be imported from.

Coming up with a better solution that isn't purely configuration is something on my list (which I will file an issue for), but at the moment adding a configuration item to tell the LS how your project is laid out is how we can handle these more complicated projects. Most users don't encounter this, since they're not using pth files, editable installs, interesting folder structures, etc.

A build with the fix is in progress and will be available in daily within the hour. I think this will be fixed then (and eventually when we push to stable for everyone), but I'll be happy to open this back up if it ends up not working in your specific scenario.

To be clear, I expect the hang to go away (even if imports don't work as per the troublehsooting docs), because there won't be some odd library root that's the entire workspace screwing up the dependency graph. We build a big graph for resolving imports (that can handle multiple roots and all of the different import flavors in python), and my expectation is that mis-classifying the workspace root broke other, only partially related things.

Thanks. FWIW, just setting python.autoComplete.extraPaths right now for me eliminated the endless analysis on floating-over a function name that prompted me to open the issue. But I will also test once the daily build is pushed.

v0.3.13 and above contain my PR, if you could test and see.

I have 0.3.15. My workspace interpreter path no longer has the workspace path. However it wasn't moved to the user search path and the package in the root of my workspace is still not resolvable.
[Info  - 4:56:51 PM] GetCurrentSearchPaths /Users/{user}/.pyenv/versions/3.7.2/bin/python
[Info  - 4:56:51 PM] Interpreter search paths:
[Info  - 4:56:51 PM]     /private/var/folders/9q/mshp41rj5419tdv0ftt4bz380000gn/T/wbsqjziz.hqp
[Info  - 4:56:51 PM]     /Users/{user}/.pyenv/versions/3.7.2/lib/python3.7
[Info  - 4:56:51 PM]     /Users/{user}/.pyenv/versions/3.7.2/lib/python3.7/lib-dynload
[Info  - 4:56:51 PM]     /Users/{user}/.local/lib/python3.7/site-packages
[Info  - 4:56:51 PM]     /Users/{user}/.pyenv/versions/3.7.2/lib/python3.7/site-packages
[Info  - 4:56:51 PM] User search paths:
[Info  - 4:56:51 PM]     /Users/{user}/Documents/Code/pymod_stress_test/lib
[Info  - 4:56:51 PM]     /Users/{user}/Documents/Code/pymod_stress_test/mod_tests
[Info  - 4:56:52 PM] Microsoft Python Language Server version <IP_ADDRESS>

Hmm, the fix wasn't supposed to move it down; the workspace root is always a search path even if it's not shown. Is the hang gone? Is it an import that goes unresolved, or something else? Do you have an example or updated repro? (Since I know you reported #537)

I am also on

Microsoft Python Language Server version <IP_ADDRESS>
now and it works fine again. Thanks!

Ok, that's fair. The hang has been gone since I moved the ./lib and ./mod_tests to the extraPaths setting.
I found the issue. The package I wanted to resolve was mod_tests which is in my extraPaths. When I removed it from my extraPaths it became resolvable again. It seems that you have to decide whether to have a directory as an extraPath or a resolvable package. Sorry for the mix-up, in python both are allowable.

Interesting, I figured we'd allow both. Do you mean you had something like:
mod_tests
    + a
        + b
            + __init__.py

And added mod_tests to extraPaths to do import a.b, but also want import mod_tests.a.b to work?

That is exactly what I was looking for. I wanted to keep general utility functions in mod_tests and also have the ability to import sub_tests directly as sort of plugins.

Hmm, I still have an issue. My workspace is like this:
    folder1
    folder2
    folder3

with all folder1 -> folder3 added to my python path with .pth files for each. I also added all of them to the extra paths settings. They all show up as part of "user search paths" in the python log.
I also added to my workspace another folder, let's call it "astrowonk_code" which has other python files I want to be able to import from jupyter (thus why it has .pth file pointing to it)
my_code->
    folder1
    folder2
    folder3
astrowonk_code/stuff.py

Nothing in astrowonk_code is getting analyzed. the path shows up in "interpreter paths" but the outlines aren't getting created nor are any float over definitions working.
But astrowonk_code does get partially analyzed if I put it also in extra_paths (though the python log still shows it only under "interpreter search paths.") except it still shows "Analysis in progress.." over every definition tool tip. eventually there is just nothing when floating over functions. (The outline sometimes gets made? seems inconsistent.)
So most of my code the analysis is working properly, but not all. Looks like I'm on <IP_ADDRESS> of the LS.

We only consider code within the workspace to be user code. Everything specified in extraPaths is split into what is and isn't in the workspace, then placed accordingly. My impression was that my_code was your workspace, so astrowonk_code is outside of it.
If it's library code, then many features will not operate within the module, though the outline should always appear (symbol collection is separate).
As for the hang, it's a bit difficult for me to make any judgement without seeing the trace log output, specifically the path list. The issue I had fixed was that the whole workspace was being marked as "interpreter", so I'd need another example that I can run that would have the hang.

@jakebailey I am on macOS, running

VS code Version 1.35.1 (1.35.1)
Microsoft Python Language Server version <IP_ADDRESS>

I am using a virtual environment, with a Mac Ports interpreter. I keep experiencing the same problem, and a perpetual "Code Analysis in Progress..." What's the right information to report to be helpful?
I looked for .pth files (which I did not know of previously) and realized that some packages in my virtual environment use some:
/Users/jlumbroso/.local//share/virtualenvs/codePost-api-python-_uTOs40F/lib/python3.7/site-packages/pytest-cov.pth
/Users/jlumbroso/.local//share/virtualenvs/codePost-api-python-_uTOs40F/lib/python3.7/site-packages/easy-install.pth

Maybe this is expected, but I guess I am surprised that this affects the server entirely, even on examples that seem wholly unrelated, such as:
# VS code Version 1.35.1 (1.35.1)
# Microsoft Python Language Server version <IP_ADDRESS>
class Person(object):
    def say(self, msg:str):
        print(msg)

def f() -> Person:
    return Person()

a = f()
b = Person()

# Neither a. nor b. provide "say" as an option.

I have tried to reproduce the conditions of this problem without success. Here is what I did:
- I setup a blank environment with the same Pipfile (including the `mypack = {path = ".",editable = true}` line).
- I created the venv with pipenv, and used it as target interpret.
- I created a bogus `mypack` package with an empty `__init__.py`  file.
- I created the `example.py` file above. This time the code analysis worked.
I am not sure, besides the actual content of the code in mypack what is missing from the above protocol compared to my  original context.
By the way, I followed the instructions here to reinstall the most recent version and got the same above reinstalled, making me wonder if I should use the beta version:
Starting Microsoft Python language server.
Downloading https://pvsc.azureedge.net/python-language-server-stable/Python-Language-Server-osx-x<IP_ADDRESS>.nupkg

The Pipfile I was considering today was:
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
pytest = ">=4.4"
pytest-cov = ">=2.6"
coveralls = "*"
tox = "*"
PyYAML = "*"
pylint = "*"
pytest-subtests = "*"

[packages]
requests = "*"
PyYAML = "*"
urllib3 = "*"
currentPack = {path = ".",editable = true}

[requires]
python_version = "3.7"

Any help much appreciated!!

I am trying the beta channel, and it seems to address the current problem I was reporting.

I am still facing this issue on 3.8.5

@QuantumStatic Same, actually, although I love VS Code, I ended up just switching to PyCharm for all Python-only projects, which seems (for now) to have a more reliable, consistent Python intelligent support in my experience: https://www.jetbrains.com/pycharm/

@jlumbroso There is much customisations available but, if they don't fix it I'll have to shift 😔. I did start a new issue hoping it to get some traction.

We are not as actively maintaining this project as we have previously; you're advised to try out Pylance, which we are actively developing: https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance microsoft/python-language-server#2096

Yes I downloaded Pylance I really liked it. There are some syntax highlighting issues but nonetheless, it's great.


Modules\JsHttpClient.js not copied to targetFolder

Yes you are right, I have missed out on this file when bundling the JS. I have fixed this and released a new version v0.6.2


Plugin is instantiated once by each mixin

Describe the bug

Each mixin creates its own instance of the plugin, preventing the use of class member storage to share information.
How to reproduce it
#include "falcosecurity/sdk.h"

#include <iostream>

using _et = falcosecurity::event_type;
constexpr auto PPME_SYSCALL_OPEN_E = (_et)2;
constexpr auto PPME_SYSCALL_OPEN_X = (_et)3;
constexpr auto PPME_SYSCALL_OPENAT_E = (_et)102;
constexpr auto PPME_SYSCALL_OPENAT_X = (_et)103;
constexpr auto PPME_SYSCALL_OPENAT_2_E = (_et)306;
constexpr auto PPME_SYSCALL_OPENAT_2_X = (_et)307;
constexpr auto PPME_SYSCALL_OPENAT2_E = (_et)326;
constexpr auto PPME_SYSCALL_OPENAT2_X = (_et)327;
constexpr auto PPME_SYSCALL_OPEN_BY_HANDLE_AT_E = (_et)336;
constexpr auto PPME_SYSCALL_OPEN_BY_HANDLE_AT_X = (_et)337;

class EventSource {
public:
    virtual ~EventSource() noexcept = default;

    falcosecurity::result_code next_event(falcosecurity::event_writer& evt)
    {
        return falcosecurity::_internal::SS_PLUGIN_TIMEOUT;
    }
};

class Plugin {
public:
    virtual ~Plugin() noexcept = default;

    uint32_t get_id()
    {
        return 999;
    }

    std::string get_name()
    {
        return "test";
    }

    std::string get_version()
    {
        return "0.1.0";
    }

    std::string get_description()
    {
        return "test";
    }

    std::string get_contact()
    {
        return<EMAIL_ADDRESS>    }

    falcosecurity::init_schema get_init_schema()
    {
        return { falcosecurity::_internal::SS_PLUGIN_SCHEMA_NONE, "" };
    }

    std::string get_event_source()
    {
        return "test";
    }

    bool init(falcosecurity::init_input& in)
    {
        return true;
    }

    void destroy()
    {
    }

    std::vector<falcosecurity::event_type> get_parse_event_types()
    {
        return {
            PPME_SYSCALL_OPEN_E,
            PPME_SYSCALL_OPEN_X,
            PPME_SYSCALL_OPENAT_E,
            PPME_SYSCALL_OPENAT_X,
            PPME_SYSCALL_OPENAT_2_E,
            PPME_SYSCALL_OPENAT_2_X,
            PPME_SYSCALL_OPENAT2_E,
            PPME_SYSCALL_OPENAT2_X,
            PPME_SYSCALL_OPEN_BY_HANDLE_AT_E,
            PPME_SYSCALL_OPEN_BY_HANDLE_AT_X,
        };
    }

    // (optional)
    std::vector<std::string> get_parse_event_sources() { return { "syscall" }; }

    bool parse_event(const falcosecurity::parse_event_input& in)
    {
        std::clog << "parse: " << (void*)this << std::endl;
        return true;
    }

    std::unique_ptr<EventSource> open(const std::string& params)
    {
        std::clog << "open: " << (void*)this << std::endl;
        return std::make_unique<EventSource>();
    }
};

FALCOSECURITY_PLUGIN(Plugin);
FALCOSECURITY_PLUGIN_EVENT_SOURCING(Plugin, EventSource);
FALCOSECURITY_PLUGIN_EVENT_PARSING(Plugin);

Expected behaviour
I expect for both the open: 0x[...] and parse: 0x[...] lines in the screenshot below to contain a pointer to the same instance.
Screenshots

Environment

Falco version:

Fri Aug 18 18:57:45 2023: Falco version: 0.35.1 (x86_64)
Fri Aug 18 18:57:45 2023: Falco initialized with configuration file: /etc/falco/falco.yaml
Falco version: 0.35.1
Libs version:  0.11.3
Plugin API:    3.0.0
Engine:        17
Driver:
  API version:    4.0.0
  Schema version: 2.0.0
  Default driver: 5.0.1+driver

System info:

Fri Aug 18 18:58:54 2023: Falco version: 0.35.1 (x86_64)
Fri Aug 18 18:58:54 2023: Falco initialized with configuration file: /etc/falco/falco.yaml
Fri Aug 18 18:58:54 2023: Loading rules from file /etc/falco/falco_rules.yaml
Fri Aug 18 18:58:54 2023: Loading rules from file /etc/falco/falco_rules.local.yaml
{
  "machine": "x86_64",
  "nodename": "chatonhub",
  "release": "6.1.44-1-MANJARO",
  "sysname": "Linux",
  "version": "#1 SMP PREEMPT_DYNAMIC Wed Aug  9 09:02:26 UTC 2023"
}

Cloud provider or hardware configuration:
i9-10850k
64 GB of RAM DDR4@3200
1TB NVMe SSD on PCIe Gen 3
OS:

NAME="Manjaro Linux"
PRETTY_NAME="Manjaro Linux"
ID=manjaro
ID_LIKE=arch
BUILD_ID=rolling
ANSI_COLOR="32;1;24;144;200"
HOME_URL="https://manjaro.org/"
DOCUMENTATION_URL="https://wiki.manjaro.org/"
SUPPORT_URL="https://forum.manjaro.org/"
BUG_REPORT_URL="https://docs.manjaro.org/reporting-bugs/"
PRIVACY_POLICY_URL="https://manjaro.org/privacy-policy/"
LOGO=manjarolinux

Kernel:

Linux chatonhub 6.1.44-1-MANJARO #1 SMP PREEMPT_DYNAMIC Wed Aug  9 09:02:26 UTC 2023 x86_64 GNU/Linux

Installation method:

From binary releases directly from the Falco website.
Configuration copied to /etc and binaries copied to /usr/local, everything with root owner and group.
Additional context

After more work with the Falco SDK, I will close this issue as this is not a problem with the SDK, but Falco itself as I've had the same behaviour where plugin_init was called twice, once for each plugin capability using Zig and plugin_types.h and plugin_api.h directly.
I've worked around the problem by reference counting a global plugin instance, which will work if we do not consider the fact that a plugin could be initialized with 2 different configuration values.  In that case, a map of the hash of the config to reference counted plugins might work.


Allow code to be wrapped

This might also be able to be resolved by returning a promise #2
Example:
async function goodOlWrapper(sub) {
  return randomBunny(sub, 'new', res => {
     console.log(res.url)
     return res.url;
    }
  )
}

Is fixed by #2


Fixed #27516 -- Made test client's response.json() cache the parsed JSON

Ticket

My only concern is that the new test is adding additional test coverage rather than acting as a regression test. There might be little advantage to two commits here, but typically we expand test coverage in a separate commit from other behavior changes. Let me know your philosophy on that.

I changed the test to use assertIs - now it acts like a regression test.


az policy set-definition create is missing metadata argument

Describe the bug
az policy set-definition create is missing the metadata argument. This is necessary to provide, among else, the category information.
This is similar to #5798
Environment summary
Install Method (e.g. pip, interactive script, apt-get, Docker, MSI, edge build) / CLI version (az --version) / OS version / Shell Type (e.g. bash, cmd.exe, Bash on Windows)
azure-cli                         2.0.74

command-modules-nspkg              2.0.3
core                              2.0.74
nspkg                              3.0.4
telemetry                          1.0.3

Extensions:
aks-preview                        0.4.5
azure-devops                      0.13.0

Python location '/usr/local/Cellar/azure-cli/2.0.74/libexec/bin/python'
Extensions directory '/Users/bengelens/.azure/cliextensions'

Python (Darwin) 3.7.4 (default, Sep  7 2019, 18:27:02)
[Clang 10.0.1 (clang-1<IP_ADDRESS>)

How is the status of this issue?


syncplay: 1.6.2 -> 1.6.3

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/syncplay/versions.
meta.description for syncplay is: '"Free software that synchronises media players"'.
Release on GitHub
Compare changes on GitHub

Checks done (click to expand)

built on NixOS
/bin/sh passed the binary check.
1 of 1 passed binary check by having a zero exit code.
0 of 1 passed binary check by having the new version present in output.
found 1.6.3 with grep in /nix/store/g788l936am6k72d7jjg171dqk37zhr3d-syncplay-1.6.3
directory tree listing: https://gist.github.com/fd72b6aeeab43f738f3f4801e4a6de79
du listing: https://gist.github.com/6676d0b5a0487f14bfad5aa00c930772

Rebuild report (if merged into master) (click to expand)

3 total rebuild path(s)
1 package rebuild(s)
1 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
0 x86_64-darwin rebuild(s)
1 aarch64-linux rebuild(s)
First fifty rebuilds by attrpath
syncplay

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/g788l936am6k72d7jjg171dqk37zhr3d-syncplay-1.6.3 \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
Or, build yourself:
nix-build -A syncplay https://github.com/r-ryantm/nixpkgs/archive/f2c48a79cd79a5a7ef95a4b8abb0e137c6c646f5.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/g788l936am6k72d7jjg171dqk37zhr3d-syncplay-1.6.3
ls -la /nix/store/g788l936am6k72d7jjg171dqk37zhr3d-syncplay-1.6.3/bin

cc @enzime for testing.

Built this locally, tested the executables and it works :)


Font Template Presets

Feature description
Font presets are made available to the user so they can more easily add consistent and good looking text elements.

Do not alter or remove anything below. The following sections will be managed by moderators only.
Acceptance criteria

Implementation brief

QA testing instructions

Demo

Changelog entry

As discussed in https://github.com/google/web-stories-wp/pull/266 . I have some questions where these presents are stored / defined. It seems likely the these will need to be stored in WP as a custom post type, as these present can be user defined.

Closing this as we have #353


[Feature]: Master does snapshot optimization

What this PR does / why we need it:

Optimize raft snapshot in master.
Expose the rocksdb close interface.

The Benchmark Code:
const volForSnapshot = "snapshtVol"

const volForSnapshotCount = 300

func BenchmarkSnapshot(b *testing.B) {
	var err error
	// perpare status
	req := &createVolReq{
		name:             "",
		owner:            "cfs",
		size:             1,
		mpCount:          1,
		dpReplicaNum:     3,
		capacity:         300,
		followerRead:     false,
		authenticate:     false,
		crossZone:        false,
		normalZonesFirst: false,
		zoneName:         testZone2,
		description:      "",
		qosLimitArgs:     &qosArgs{},
	}
	for i := 0; i != volForSnapshotCount; i++ {
		req.name = fmt.Sprintf("%v_%v", volForSnapshot, i)
		server.cluster.createVol(req)
	}
	time.Sleep(5 * time.Second)
	mdSnapshot, err := server.cluster.fsm.Snapshot()
	if err != nil {
		b.Error(err)
		return
	}
	b.Logf("snapshot apply index[%v]\n", mdSnapshot.ApplyIndex())
	s := &Server{}

	var dbStore *raftstore.RocksDBStore
	dbStore, err = raftstore.NewRocksDBStore("/tmp/cubefs/raft3", LRUCacheSize, WriteBufferSize)
	if err != nil {
		b.Fatalf("init rocks db store fail cause: %v", err)
	}
	defer dbStore.Close()
	fsm := &MetadataFsm{
		rs:    server.fsm.rs,
		store: dbStore,
	}
	fsm.registerApplySnapshotHandler(func() {
		fsm.restore()
	})
	s.fsm = fsm
	peers := make([]rproto.Peer, 0, len(server.config.peers))
	for _, peer := range server.config.peers {
		peers = append(peers, peer.Peer)
	}
	b.StopTimer()
	b.ResetTimer()
	b.StartTimer()
	if err = fsm.ApplySnapshot(peers, mdSnapshot); err != nil {
		b.Error(err)
		return
	}
	b.StopTimer()
	if fsm.applied != mdSnapshot.ApplyIndex() {
		b.Errorf("applied not equal,applied[%v],snapshot applied[%v]\n", fsm.applied, mdSnapshot.ApplyIndex())
		return
	}
	mdSnapshot.Close()
}

Before:
1000000000	         0.2425 ns/op	       0 B/op	       0 allocs/op
--- BENCH: BenchmarkSnapshot-12
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
	... [output truncated]
PASS

The full log could be found in here.
After:
1000000000	         0.1297 ns/op	       0 B/op	       0 allocs/op
--- BENCH: BenchmarkSnapshot-12
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
    master_manager_test.go:97: snapshot apply index[17517]
	... [output truncated]
PASS

The full log could be found in here.
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged):
fixes #1916
Special notes for your reviewer:

Please contract me if this pull request have passed your review, then I will rebase and rearrange commit points.
This scheme has bad performance when the status is small.

Release note:

The way using tmpdb to optimize applysnapshot is what we about to do, but as you mentioned, "This scheme has bad performance when the status is small", so might as well keep the old way of deleting entries in this situation, and let a threshold to dicide which way to go? On the other hand, real product enviroment would have lots of entries. So looks good to me.

Hello @wuchunhuan.
Although it has bad performance in a small status, but the time of execution is acceptable.
Maybe I didn't explain the small status correctly.
Small status means that the amount of data originally stored in is small.
And if we count the count of rocksdb entires, we may cause all data to be loaded into memory.
So I may not agree with the scheme of counting the number of items first.

Please don't merge.
I will rebase and rearrange commit points later.

Hello @leonrayang and @wuchunhuan.
This pull request is ready for merge now.


Relationship between central domain and tenant db

First sorry for my English, I need to make the relationship between the central user table and tenant db table,
This Model is related with central database table
class Employer extends Authenticatable
{
    use Notifiable, HasRoles;

    protected $guard = 'employer';

    protected $connection = 'mysql';

    protected $table = 'employer';

    public function invoices()
    {
        return $this->hasMany(Invoices::class,'user_id');
    }

But this Model is related with tenant database table
class Ivoices extends Model
{
    protected $table = 'invoices';

}

How can I make a relationship between models

Anyone can help me please?

Eloquent is not made for cross-database relationships.


fix: prevent guest user from modifying metrics

SUMMARY

Improve the security manager so that guest users can't change the metrics being requested from a chart; only the metrics stored with the chart can be requested.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

N/A
TESTING INSTRUCTIONS

Added unit tests.
ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Required feature flags:
[ ] Changes UI
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[ ] Introduces new feature or API
[ ] Removes existing feature or API

Hey, super glad this got prioritized. I've just pulled this change in on top of a fork of 3.0.2, so if there have been any changes in particular that would change the following please let me know, but we have seen two issues:

For big number charts, we primarily have been using saved metrics. When using them, we are seeing this error out:

February 06, 2024 at 10:53 (UTC-6:00)
File "/app/superset/security/manager.py", line 1927, in raise_for_access
94b81be5bee24fc985dd3ce245f9cc46
superset_app

February 06, 2024 at 10:53 (UTC-6:00)
if form_data.get("metrics", []) != stored_chart.params_dict["metrics"]:
94b81be5bee24fc985dd3ce245f9cc46
superset_app

February 06, 2024 at 10:53 (UTC-6:00)
KeyError: 'metrics'
94b81be5bee24fc985dd3ce245f9cc46
superset_app

February 06, 2024 at 10:53 (UTC-6:00)
2024-02-06 16:53:41,586:ERROR:superset.views.base:'metrics'
94b81be5bee24fc985dd3ce245f9cc46
superset_app

February 06, 2024 at 10:53 (UTC-6:00)
Traceback (most recent call last):
94b81be5bee24fc985dd3ce245f9cc46
superset_app

February 06, 2024 at 10:53 (UTC-6:00)
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1823, in full_dispatch_request
94b81be5bee24fc985dd3ce245f9cc46
superset_app

Which tells me that we might want this line:
if form_data.get("metrics", []) != stored_chart.params_dict["metrics"]

to be
if form_data.get("metrics", []) != stored_chart.params_dict.get(["metrics"], [])

We don't see this error when not using saved metrics. Changing to the .get() call also appears to fix the issue.

For some charts (it seems primarily/only mixed charts), this line is getting hit and denying access to charts even when the guest user hasn't actually changed anything:

                query.metrics != stored_chart.params_dict["metrics"]
                for query in query_context.queries
                )```

For some reason, it seems the metrics from stored_chart will only contain one of the two metrics from the mixed chart.

I'd like to test this locally and may if I get more time, but I've been bumping into an incredible amount of weird configuration errors. If I'm able to test this in other ways I'll update here.


Add update watch to InstanceManagerController

This PR modifies the InstanceManagerController such that instead of depending wholly on the resync interval of the Kubernetes SharedInformers to retrieve information from the InstanceManager and update Instances accordingly, it now uses live updates from the new Watches implemented in longhorn/longhorn-instance-manager#35.
There are two methods that the InstanceManagerController will use to reconcile the state of its Instances:

The InstanceManagerController automatically queues the InstanceManagers on its Node based on the resyncPeriod of the SharedInformers. This will perform a simple List call against the InstanceManager and update the Instance map to match the exact contents of what was returned from that call.
There is now an InstanceManagerWatch struct that is created as the InstanceManager enters Running state, which will wrap the Watch methods from the gRPC client. This will wait for updates over the gRPC stream and use this information to update the exact Instance on the InstanceManager accordingly.

A few additional changes have been made as a result of our new Watch logic:

The resyncPeriod for the InstanceManagerController Informers is now back at the default of 30 seconds, seeing as how it is no longer the primary method of updating the Instance information.
Since the Watchers depend on the gRPC endpoint responding properly, a LivenessProbe has been added to the Spec for the InstanceManager Pods to automatically Fail the Pod and recover accordingly if it cannot receive gRPC updates.

This PR implements a Watch on the longhorn-manager end as requested in longhorn/longhorn#631.

Rebased to the latest version of instancemanager.
Fixed an issue with an incorrect path to the grpc_health_probe on the new LivenessCheck.
Modified the watch logic to use a new ManagerWatch interface for handling the lifestyle of the Watch calls to the gRPC APIs.

Modified pollProcesses to only run specifically the EngineManagerClient or the ProcessManagerClient.


enhance(workspace): 'Fix It' button in warning toaster for duplicate note id

This PR aims to add a Fix It button in duplicate note id warning toaster. Fix It button runs the doctor regenerate note id command underneath the hood.
This PR also increases the range of no frontmatter error from 0 to line 8.

Telemetry:
Adds a property state: "resolved" for an existing workspace event: DuplicateNoteFound
Dendron Extended PR Checklist

NOTE: the links don't work. you'll need to go into the wiki and use lookup to find the note until we fix some issues in the markdown export

Code
Basics

[x] code should follow Code Conventions
[x] circular dependency check: make sure your code is not introducing new circular dependencies in plugin-core.  See Avoiding Circular Dependencies.
[x] sticking to existing conventions instead of creating new ones

eg: if configuration for utilities are already in one module or package, add future utilities there as well

Extended

General

[x] check whether code be simplified
[x] check if similar function already exist in the codebase. if so, can it be re-used?
[x] check if this change adversely impact performance

Operations

[x] when shipping this change, will it just work or will it introduce additional operational overhead due to complicated interface or known bugs?

Architecture

[ ] check if code is introducing changes on a foundational class or interface. if so, call for design review if needed

eg: making changes to DNode

Instrumentation
Basics

[x] if you are adding analytics related changes, make sure the Telemetry docs are updated

Extended

[~] can we track the performance of this change to know if it is successful?

eg: see usage for export pod

Tests
Basics

[x] Write Tests
[ ] Confirm existing tests pass
[x] Confirm manual testing
[x] Common cases tested
[ ] 1-2 Edge cases tested
[ ] If your tests changes an existing snapshot, snapshots have been updated

Extended
NA
Docs
NA
Close the Loop
Extended
NA

left a comment regarding engine state

@hikchoi are there any more outstanding issues in this pr?

left a comment regarding engine state

@hikchoi are there any more outstanding issues in this pr?

Nope. my comment was on the possible reason the test weren't working correctly (synced with @Harshita-mindfire separately). I have no other outstanding comments on the PR itself


k4dirstat: 3.2.2 -> 3.3.0

Motivation for this change
Refresh the tree after deleting a file (#38) and preparations for the next major Qt & KDE versions.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 137255 run on x86_64-linux 1

1 package built:

k4dirstat

Result of nixpkgs-review pr 137255 run on x86_64-linux 1

1 package built:

k4dirstat

Result of nixpkgs-review pr 137255 at 2b9626ef run on x86_64-linux 1

1 package built successfully:

k4dirstat

2 suggestions:

warning: unused-argument
Unused argument: kdoctools.
Near pkgs/applications/misc/k4dirstat/default.nix:4:3:
  |
4 | , kdoctools
  |   ^

warning: unclear-gpl
gpl2 is a deprecated license, please check if project uses gpl2Plus or gpl2Only and change meta.license accordingly.
Near pkgs/applications/misc/k4dirstat/default.nix:37:5:
   |
37 |     license = licenses.gpl2;
   |     ^


xgb.load() error in R while the JSON model file path containing Chinese

I've got an error while using xgb.load() to load a JSON model file which was saved by xgb.save().
Like this:
Error in xgb.Booster.handle(modelfile = modelfile)
I found that if the model file path did not contain Chinese characters and it will work perfect!
The version of xgboost package is <IP_ADDRESS>.
By the way, if I use xgb.save() with the extension 'model' and load the model file, it also works.
Hoping this issue will be fixed in the future release.

It seems to be a R-specific issue.

Nope, it works fine on my system (ubuntu 22.04) with R 4.1.2. Maybe it's the system locale configuration.

I've tried it on 2 different computers running Windows 10 and 11 with R 4.1.2,
but I've still got the same error.

The issue is specific to Windows. When opening files with Windows, we need to build std::filesystem::u8path object (to represent a UTF-8 string) and pass it to std::ifstream. See https://gitlab.com/inkscape/inkscape/-/merge_requests/3784.


Test/updating migration tests

Description of changes

Issue #, if available

Description of how you validated changes
Checklist

[ ] PR description included
[ ] yarn test passes
[ ] Tests are changed or added
[ ] Relevant documentation is changed or added (and PR referenced)
[ ] New AWS SDK calls or CloudFormation actions have been added to relevant test and service IAM policies
[ ] Pull request labels are added

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Codecov Report

:exclamation: No coverage uploaded for pull request base (feat/replace-lambda-callouts@f63eab0). Click here to learn what that means.
The diff coverage is n/a.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@                       Coverage Diff                       @@
##             feat/replace-lambda-callouts   #12855   +/-   ##
===============================================================
  Coverage                                ?   48.65%
===============================================================
  Files                                   ?      843
  Lines                                   ?    38210
  Branches                                ?     7822
===============================================================
  Hits                                    ?    18590
  Misses                                  ?    18027
  Partials                                ?     1593

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Cow: Watch +1-813-799-3357

Cow requests the watch of the watch_number +1-813-799-3357. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

Approved by Jeff Schaller in Charcoal HQ


Dynamic Refactor Sprint

Problem: Some of the old dynamic code is a little janky.
Solution: Refactor that bad boy
Description:
Crank as much as you can out at next Sunday's GM, then we'll do a rapid-fire PR review and merge it in to reduce the :chungus: amount of conflicts that will probably occur. Below is a draft checklist of things that we might want to consider refactoring. Note that this is not all-encompassing nor prioritized, so something on here might be lower priority than something I forgot to include.
Incomplete checklist:

[ ] Types

[x] Question type enum
[x] Question component similar props - MyContinue, MyInput, etc. have shared props
[ ] FormAnswer type
[ ] In general, making strings strings and numbers numbers instead of having parseInt and toString everywhere

[ ] DynamicPOC/DynamicForm

[ ] Uncoupling currentQuestion and currentAnswer as much as possible
[ ] Making handleNext, handleBack, etc clearer to read (and abstracting out duplicated code)
[ ] If not addressed in #45, abstracting QuestionLayout out of each specific question type since the layout stays consistent

Question component similar props - MyContinue, MyInput, etc. have shared props
-- these are relatively different enough, checking off but no changes

We couldn't get rid of the wrapper for FormAnswer, as this caused very confusing and so far unsolved aur naur bugs with the input question, where upon going back, it tries to populate the text field with an object rather than the previous text/actual answer
something due to field from formik, but there's very little documentation on it and it's not worth any additional dev time for such a minor change (for now.... perhaps)


Do I need to add 'use' for every file when I use a proc macro hack?

This is a small reproduction project:  https://github.com/Jasperav/importprocmacro (try to run main and it gives a compile time error).
I have a proc macro, called query. To use it, I need to put this inside every file to make it work:
use proc_macro_hack::proc_macro_hack;
[proc_macro_hack]
use b_query::query;

I was wondering, is there a way I can 'global' import 'query' for all of my files? There is something like #[macro_use] but that didn't help me. I don't want the 'use'  everywhere in my code, just in my main.rs.

Fixed in 0.5.17.

Never mind, that ends up hitting "macro-expanded `#[macro_use]`s may not shadow existing macros (see RFC 1560)" in some cases so I've yanked it for now. A workaround is to add your own:
#[macro_use]
extern crate b_query as _;

in the crate root.

Thanks, the workaround is working!


Fix regexes

The escape chars in the install log regex configmap led to it being unparseable, so all attempts to parse install logs are presently failing in stage and prod.
Also added the cluster platform and imageset to the metric labels to help us identify when it's a failing 4.7 nightly on gcp, which is where all our failures seem to be right now.
/assign @suhanime
/cc @akhil-rane

Fixed the commit containing something for the previous one. Thanks!

/lgtm


Datagrid filter "jumps" down when it changed in Server-driven mode

Select one ...  (check one with "x")
[x] bug
[ ] feature request
[ ] enhancement

Expected behavior
Filter stays on it's place.
Actual behavior
Filter jumps to the bottom of the grid while data is loading and returns back when loading is over.
Reproduction of behavior
Clarity's own documentation page exhibits this behavior.
https://vmware.github.io/clarity/documentation/datagrid

Scroll to Server-driven grid
Open any filter and start typing

Environment details

Angular version: 2.0.X

Clarity version:

OS and version:

Browser: latest Chrome

This should be fixed by #710.


NuimoBluetoothController.connect(): we should probably clear the device cache before connecting to the device

See: http://stackoverflow.com/questions/22596951/how-to-programmatically-force-bluetooth-low-energy-service-discovery-on-android

Added in https://github.com/getsenic/nuimo-android/commit/9627121b582c912f6bb44e09f360ea818d2c5cd2


Please add douyu.com

*.douyu.com
*.douyucdn.cn

Fixed.
Note that *.cn domains has already been added to white list.

@jamewhite Hi, you ignored douyu.com

Seems to be fixed, closed.


fixed the issue "Show a grid of people in the community page instead of a list"

I have modified the Person.js and people.js files.

@SyedZawwarAhmed closing this as it doesn't comply anymore with the new structure. Thanks for the PR 🙂


optionally include type information so that it can be traversed dynamically

It would allow implementing something like get<T>(&self, &[&str]) -> Result<T>.

Could you tell me more about what sort of functionality you're looking for? This sounds like it might be related to schemas, a feature I will be exploring after the big 0.3 release.
Schemas are planned to be portable documents that describe the members and layouts of derived types. They are primarily intended to provide foreign type support, but can also be used to perform type reflection of the kind you described. For just type reflection though, there are alternatives that could provide the functionality without needing such a heavyweight feature.

Could you tell me more about what sort of functionality you're looking for? This sounds like it might be related to schemas, a feature I will be exploring after the big 0.3 release.
Schemas are planned to be portable documents that describe the members and layouts of derived types. They are primarily intended to provide foreign type support, but can also be used to perform type reflection of the kind you described. For just type reflection though, there are alternatives that could provide the functionality without needing such a heavyweight feature.

I did a small experiment for an authentified queries of content addressed data. The requestor knows the blake3 hash of the data and it's schema, and uses this information to compute the byte slice where the data is located. The responder extracts a byte slice from the data together with a proof that it is part of the data. This can be done efficiently for blake3 using [1] because blake3 itself is computed recursively as a merkle trie of byte chunks, which sends serializes and sends some parts of the internal hasher state to the requestor. Schemas or reflection would help in constructing the query to send to the responder.

[0] https://github.com/ipfs-rust/random-access-block/blob/master/src/lib.rs
[1] https://docs.rs/bao/0.10.1/bao/index.html

I did a small experiment for an authentified queries of content addressed data. The requestor knows the blake3 hash of the data and it's schema, and uses this information to compute the byte slice where the data is located. The responder extracts a byte slice from the data together with a proof that it is part of the data. This can be done efficiently for blake3 using [1] because blake3 itself is computed recursively as a merkle trie of byte chunks, which sends serializes and sends some parts of the internal hasher state to the requestor. Schemas or reflection would help in constructing the query to send to the responder.

[0] https://github.com/ipfs-rust/random-access-block/blob/master/src/lib.rs
[1] https://docs.rs/bao/0.10.1/bao/index.html

Got it, thanks for clarification with a code example. I think that this use case could easily be supported with schemas. After thinking about it some more, schemas may be through a separate crate and rkyv may have a feature flag for support (similarly to validation through bytecheck). The end result will likely be an extra derive getting passed via #[archive(derive(...))]. Once I get that off the ground I'll ping this issue.
I would also suggest ArchiveWriter as an alternative to ArchiveBuffer for your use case. 🙂 Thanks for using rkyv!

Got it, thanks for clarification with a code example. I think that this use case could easily be supported with schemas. After thinking about it some more, schemas may be through a separate crate and rkyv may have a feature flag for support (similarly to validation through bytecheck). The end result will likely be an extra derive getting passed via #[archive(derive(...))]. Once I get that off the ground I'll ping this issue.
I would also suggest ArchiveWriter as an alternative to ArchiveBuffer for your use case. 🙂 Thanks for using rkyv!


Teleport character to locations

Changed positions & Quadtree AABB.

Hey!!
Thanks for the good work. As we have a constantly changing level and we will be migrating all the debug window stuff to the gameplay layer of the project, I'm closing this pr for now. If it turns out we still need this in the engine side, we can reopen this PR again.


Designed nav and store page

run project and here to see it
nav bar is on every where top

add a footer


Error in Command Stream

Getting this error spam my console when trying to use live streams it's also causing lag
[tls @ 0x298a540] The specified session has been invalidated for some reason.
[https @ 0x30540a0] No trailing CRLF found in HTTP header.

We haven't fully implemented streams properly yet. Try using a more up to date version of ffmpeg.


Suggestions

When I try to do pip install -r requirements.txt I have this error and I can't put Egyscan to work:
Defaulting to user installation because normal site-packages is not writeable
DEPRECATION: Loading egg at /usr/local/lib/python3.11/dist-packages/holehe-1.61-py3.11.egg is deprecated. pip 24.3 will enforce this behaviour change. A possible replacement is to use pip for package installation.. Discussion can be found at https://github.com/pypa/pip/issues/12330
DEPRECATION: Loading egg at /usr/local/lib/python3.11/dist-packages/zoomeye-2.2.0-py3.11.egg is deprecated. pip 24.3 will enforce this behaviour change. A possible replacement is to use pip for package installation.. Discussion can be found at https://github.com/pypa/pip/issues/12330
Collecting logging (from -r requirements.txt (line 2))
Using cached logging-<IP_ADDRESS>.tar.gz (96 kB)
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [24 lines of output]
Traceback (most recent call last):
File "", line 2, in
File "", line 14, in
File "/home/dario/.local/lib/python3.11/site-packages/setuptools/init.py", line 7, in
import _distutils_hack.override  # noqa: F401
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/dario/.local/lib/python3.11/site-packages/_distutils_hack/override.py", line 1, in
import('_distutils_hack').do_override()
File "/home/dario/.local/lib/python3.11/site-packages/_distutils_hack/init.py", line 77, in do_override
ensure_local_distutils()
File "/home/dario/.local/lib/python3.11/site-packages/_distutils_hack/init.py", line 63, in ensure_local_distutils
core = importlib.import_module('distutils.core')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/dario/.local/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 22, in
from .dist import Distribution
File "/home/dario/.local/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 12, in
import logging
File "/tmp/pip-install-ewo9t077/logging_e96f27c6c6144857bc0530dd7c0c1174/logging/init.py", line 618
raise NotImplementedError, 'emit must be implemented '
^
SyntaxError: invalid syntax
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

download logging library manually via pypip website
and install it via
python setup.py install
after extracting the zip file content


[CRP] [GPS] Novatel up and running

Description: take over and integrate novatel driver into CRP (as subrepo), publish ego odometry topic.
AC:

subrepo added
add launch file to publish the right topic
test with docker (measurement stored in common drive)
system spec doc updated

Effort plan: 0.8SP
Prio 1

A test docker with the  and  packages was built and ran successfully on the jetson. The docker was started with the following arguments:
docker run -it --rm --network host novatel:latest

Added novatel driver as a submodule and created a launcher package to have a launcher while leaving the driver repository untouched.

Created a wrapper package for nova submodule to separate the launcher (novatel_gps_launcher). The CRP docker has been tested with the novatel driver in leaf (on jetson) with success. The docker should be started like this:
docker run -it --rm --network host --ipc host --pid host crp_arm64:latest
Also added installation of some useful tools to the docker like net-tools and mcap for recording bags.

Documentation has been updated with the purpose, usage and launch parameters of the novatel launcher.


Java: isAndroid() shouldn't cause Exceptions to be created

Is your feature request related to a problem?
com.google.crypto.tink.subtle.SubtleUtil#isAndroid causes a lot of Exceptions to be created during runtime when not running on android, since it is called for every invocation of AesGcmJce.encrypt.
Describe the solution you'd like
The method should check if it is running on android without throwing and catching an Exception. Possible solutions:

Check a system property
-- https://stackoverflow.com/questions/4519556/how-to-determine-if-my-app-is-running-on-android
-- https://developer.android.com/reference/java/lang/System#getProperties()
In case that is not reliable enough: Define an optional custom System Property which can be set to avoid the Class lookup.
Only perform the lookup once on startup

Ah thanks. I'll fix this.