No module named pip (Ubuntu 20.04 LTS) (IDFGH-4859)

Environment

IDF version: 4.2, 4.3, current dev branch
Operating System:     Ubuntu 20.04 LTS
Using an IDE?: Was trying with the VSCode extension, but I don't believe that's the issue.

Problem Description
Installing the IDF on Ubuntu 20.04 LTS fails. Running .install.sh fails with an error message complaining that pip is not found.
Worth noting that my system does not have Python 2 installed. Pip3 is installed, and it seems that pip is symlinked to pip3.
Steps to reproduce

Download release
Type .install.sh

Debug Logs
Downloading Toolchain for Xtensa (ESP32) based on GCC
Found xtensa-esp32-elf in /home/jarrett/.espressif/dist
Downloading Toolchain for Xtensa (ESP32-S2) based on GCC
Found xtensa-esp32s2-elf in /home/jarrett/.espressif/dist
Downloading Toolchain for ESP32 ULP coprocessor
Found esp32ulp-elf in /home/jarrett/.espressif/dist
Downloading Toolchain for ESP32-S2 ULP coprocessor
Found esp32s2ulp-elf in /home/jarrett/.espressif/dist
Downloading OpenOCD for ESP32
Found openocd-esp32 in /home/jarrett/.espressif/dist

Installing package Toolchain for Xtensa (ESP32) based on GCC
Installing tar.gz package Toolchain for Xtensa (ESP32) based on GCC
Installing package Toolchain for Xtensa (ESP32-S2) based on GCC
Installing tar.gz package Toolchain for Xtensa (ESP32-S2) based on GCC
Installing package Toolchain for ESP32 ULP coprocessor
Installing tar.gz package Toolchain for ESP32 ULP coprocessor
Installing package Toolchain for ESP32-S2 ULP coprocessor
Installing tar.gz package Toolchain for ESP32-S2 ULP coprocessor
Installing package OpenOCD for ESP32
Installing tar.gz package OpenOCD for ESP32

Installing ESP-IDF extension python packages in /home/jarrett/.espressif/python_env/idf4.2_py3.8_env/bin/python ...

/home/jarrett/.espressif/python_env/idf4.2_py3.8_env/bin/python: No module named pip
Command failed: "/home/jarrett/.espressif/python_env/idf4.2_py3.8_env/bin/python" -m pip install --no-warn-script-location  -r "/home/jarrett/.vscode/extensions/espressif.esp-idf-extension-1.0.0/requirements.txt"
/home/jarrett/.espressif/python_env/idf4.2_py3.8_env/bin/python: No module named pip
Command failed: "/home/jarrett/.espressif/python_env/idf4.2_py3.8_env/bin/python" -m pip install --no-warn-script-location  -r "/home/jarrett/.vscode/extensions/espressif.esp-idf-extension-1.0.0/requirements.txt"
/home/jarrett/.espressif/python_env/idf4.2_py3.8_env/bin/python: No module named pip

This isn't a VSCode issue as far as I can tell, manually running install.sh as recommended by this repo's docs are essentially the same:
/install.sh
Detecting the Python interpreter
Checking "python" ...
Python 3.8.5
"python" has been detected
Installing ESP-IDF tools
Installing tools: xtensa-esp32-elf, xtensa-esp32s2-elf, esp32ulp-elf, esp32s2ulp-elf, openocd-esp32
Skipping<EMAIL_ADDRESS>(already installed)
Skipping<EMAIL_ADDRESS>(already installed)
Skipping<EMAIL_ADDRESS>(already installed)
Skipping<EMAIL_ADDRESS>(already installed)
Skipping<EMAIL_ADDRESS>(already installed)
Installing Python environment and packages
Installing Python packages from /home/jarrett/esp/esp-idf/requirements.txt
/home/jarrett/.espressif/python_env/idf4.2_py3.8_env/bin/python: No module named pip
Traceback (most recent call last):
  File "/home/jarrett/esp/esp-idf/tools/idf_tools.py", line 1492, in <module>
    main(sys.argv[1:])
  File "/home/jarrett/esp/esp-idf/tools/idf_tools.py", line 1488, in main
    action_func(args)
  File "/home/jarrett/esp/esp-idf/tools/idf_tools.py", line 1215, in action_install_python_env
    subprocess.check_call(run_args, stdout=sys.stdout, stderr=sys.stderr)
  File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/home/jarrett/.espressif/python_env/idf4.2_py3.8_env/bin/python', '-m', 'pip', 'install', '--no-warn-script-location', '-r', '/home/jarrett/esp/esp-idf/requirements.txt']' returned non-zero exit status 1.

Other items if possible
I'm aware of this commit:
https://github.com/espressif/esp-idf/commit/dc70cd130474cb264a8a50d3ae79494299902209
Which solves a similar issue for Mac OS, here: https://github.com/espressif/esp-idf/issues/6532 . I manually patched my current IDF with that update, but that didn't work, and I also tried the current 4.1 dev branch. Have also tried 4.3.
Also not fixed by  #6471

Hi @JarrettR. I'm sorry for the inconvenience. Thank you for taking the time by patching your branch and providing lot of information. I'm going to reproduce this on a clear Ubuntu 20.04.
Have you installed python3-pip package after you've run install.sh the first time?
Could you please provide the output of the following command?
python --version ; python -m virtualenv /tmp/py ; rm -r /tmp/py

Could you please run also the following? Does it fix your issue?
python $IDF_PATH/tools/idf_tools.py install-python-env --reinstall

That fixed it, thank you!
For future reference, virtualenv wasn't installed on my system, so that command failed at first. After installing it, I got this:
/esp/esp-idf$ python --version ; python -m virtualenv /tmp/py ; rm -r /tmp/py
Python 3.8.5
created virtual environment CPython3.8.5.final.0-64 in 329ms
  creator CPython3Posix(dest=/tmp/py, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/jarrett/.local/share/virtualenv)
    added seed packages: pip==21.0.1, setuptools==52.0.0, wheel==0.36.2
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

And then I also tried installing the IDF again from zip. Same issue.
The install-python-env --reinstall worked, though.

Great! I'm happy that it is solved.

For future reference, virtualenv wasn't installed on my system, so that command failed at first.

That is weird. It is should have been installed automatically.
I'm adding some additional checks and the virtual environment will be reinstalled in similar cases. This will be closed with my patch.

Hi @dobairoland
I'm not sure if this is related, I got below error with master tree (v4.4-dev-744-g1cb31e50943b).
$ python -m pip install --user -r $IDF_PATH/requirements.txt -r $IDF_PATH/tools/ble/requirements.txt
ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.

@AxelLin You don't need (and cannot use) the --user argument after you've activated a virtual environment, i.e. you've sourced export.sh or other export scripts of ESP-IDF. You can just rerun the command without --user.

Hi @dobairoland
After removing "--user" argument I got below error: (I'm using Ubuntu 20.04.2 LTS)
configure: error: Package requirements (dbus-1 >= 1.8) were not met:
No package 'dbus-1' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

@AxelLin Thank you for reporting this. Could you please open a new issue for it? The person responsible for this will take care of it.
The issue is that the requirements for BLE is separated from the general requirements of ESP-IDF. This means also that the installed prerequisites of ESP-IDF won't be enough for the tools of BLE.
You can fix this by installing DBUS with apt.


Implemented the possibility to access raw JSON of responses

This pull request adds the ability for users to access the raw JSON of API responses. This is particularly useful for those working on projects with custom REST APIs, where access to the underlying data format is crucial.
By adding this functionality, developers can easily work with custom APIs and extract the data they need. It also allows for greater flexibility in handling API responses and opens up new possibilities for custom integrations.

Hey there! Thanks for checking out the package!
Now on to the topic, I think Custom Requests covers this topic and offers complete control over the request.
Could you please check that out and let me know?

Hi, in fact this is not 100% true: custom requests enable you to create new kind of requests... accessing raw json permits you to access other properties of existing classes, like Yoast! SEO metadata added to posts, without implementing a totally new kind of response...!

I understand, Thanks for the contribution. I will merge this PR. However, i have few changes planned for the library and would like to release this to pub.dev with those included.
Meanwhile, you could use this repo directly by specifying the Git URL on pubspec.yaml file.
If you need further help in this regard, let me know!

Thank you!


[SPARK-48913][BUILD][FOLLOWUP] Remove txw2 from LICENSE-binary and delete LICENSE-txw2.txt

What changes were proposed in this pull request?
This PR aims to remove txw2 from LICENSE-binary and licenses-binary/LICENSE-txw2.txt file.
Why are the changes needed?
SPARK-44790 added this dependency.

#43503

SPARK-48487 added the license file.

#46821

SPARK-48913 removed this library dependency by implementing it inside Spark. Now, we can remove the license.

#47593

Does this PR introduce any user-facing change?
No.
How was this patch tested?
Manual review.
Was this patch authored or co-authored using generative AI tooling?
No.

cc @yaooqinn

Thank you, @LuciferYang .

Thank you, @HyukjinKwon and @yaooqinn .

Since this is a removal of text which is irrelevant to CI results, let me merge this.


[Tooling] Monitor invoke tasks

What does this PR do?
This PR customizes the Invoke Task object __call__ method to log the invoke tasks call.

Motivation
The goal is to monitor the invoke tasks usage using the Log Agent to know what's being used and what's not.

Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

Reverted the use of a logger for other warnings since it's out of the scope of my PR.

/merge


WorkManager is not for exact jobs, why would you depreciate this library?

Android-Job manages AlarmManager registration automatically if job is exact.
WorkManager does not do that, so why would Android-Job be depreciated? Clearly they solve an overlapping but not completely same domain.

WorkManager does not work nearly as well and consistently as Android-job. It still has a long way to go before it will get even close.

@DvTonder Can you be a little more specific. I'm pretty sure Google would listen.

Biggest issue is with consistency of behaviour. I have an app with a number of hourly jobs.  Even with them all being scheduled from the same method, some jobs will run while others don't. Some times the workers will run for a few days as scheduled and then suddenly stop, requiring a reboot of the device.
Bottom line is I cannot trust it to provide a good user experience for the 1.5MM users of my app. I'm not risking the flood of negative reviews my app will get if I switch.
I've used android-job for years and it's been solid as a rock.

You're free to keep using it, but I'll support it less and less.

@vRallev will this library be update with latest workmanager stable release?

I'll have some time for this next week!

I'm closing this issue for now. Please bring this issue up at Google's bug tracker. Link the ticket here so that we all can star it.


Missing data?

Hi, I went to download this & noticed that game.js has 0 bytes of data. Can you please fix this? Thank you! :)

Hey, Sure. This is one of the less worked on projects. Would you want to join this organization, if so join this Discord Guild https://discord.gg/jQdFFH6 You could work with us together? For your question: sure Ill pick up work on this project soon.

It's still missing the files. No game.js, no index.html.... :(

hello?

Yes, I am working On the game. If you want to see work done, you can also work on it.

This project isn't ready yet!


What does the rearrange tasks button do

Very nervous about clicking it. Will it change the sequence of STORIES/BUGS in my backlog (I hope not)

This button just rearranges the tasks in your drop plan, it doesn't affect the backlog.

@yanivsegev   suggest we close this as it's a question, not an issue.


control_ flags should default to false

Following the principle of 'least surprise' the control flags should be false by default unless set true globally or per area by the user adding these flags in config.
The current approach can cause user surprise by turning off media players, for example, in a newly created area. Keep in mind that the new area might be created some months from now.
Expected
A user create a new area, the sensors in it are magically aggregated and available for use in automations.
The user is aware magic_areas can control some devices, and can set the relevant control_ flag true to avoid having to script this.
Actual
A user create a new area, the sensors in it are magically aggregated and available for use in automations.
The user is unaware that magic_areas will turn devices off in this new area, and does not desire this behaviour.
Possibly this takes the user a very long time to resolve if they don't know the cause.
Aggregation should be separate from control here. At a minimum it should be possible to globally turn off control and only use the aggregation magic. Defaulting false would be preferable.

That's a valid point. Will schedule this change for the next major revision as is a breaking change

Great stuff!
Depending on how long you expect until the next major release it might be worth adding optional global control_ switches before then. This would allow users to turn off the control_ globally in their HA (including for areas which yet don't exist) and would not be a breaking change for the existing config.

Adding a note to future me, this will be part of a big change where global settings will be introduced for many parameters allowing override per area.

This is coming as part of a major rework. First stage will be moving all features apart from the main presence binary_sensor to not enabled by default. See #72 for more information.
Second stage will have global options but I'm still working out on that one.

This is coming as part of a major rework. First stage will be moving all features apart from the main presence binary_sensor to not enabled by default. See #72 for more information.
Second stage will have global options but I'm still working out on that one.


function _write() issues

Notice: fwrite(): send of 6 bytes failed with errno=32 Broken pipe  in ./Client.php on line 181
$data .= "\r\n";
change to :
$data .= '\r\n';

Or not, this is better: @fwrite() , because just Notice .

Your proposed changes will not fix the error you are encountering. I assume the initial error happens because the connection has been closed.


pinger range_bearing topic bridge is broken

Describe the bug
The /wamv/pingers/pinger/range_bearing topic is not being bridged correctly. Attempting to echo it gives the following error: The message type 'ros_gz_interfaces/msg/ParamVec' is invalid
Expected behavior
I expect to see the range, bearing and elevation values associated with the pinger.
To Reproduce
List the steps to reproduce the problem:

Run 'ros2 launch vrx_gz competition.launch.py world:=acoustic_perception_task'
In a separate terminal, run 'ros2 topic echo /wamv/pingers/pinger/range_bearing'
See error: The message type 'ros_gz_interfaces/msg/ParamVec' is invalid

Note that this topic works fine on the Gazebo Sim side. I.e.
gz topic -e -t /wamv/pingers/pinger/range_bearing

gives the expected output.
System Configuration:
Tell us about your system.

OS: Ubuntu 22.04
ROS Version: ROS 2, Humble
Gazebo Version: Gazebo Sim 7.0.0
Graphics Card: [e.g. Nvidia GeForce RTX 2080
Using VRX

Caused by user error! oops.


Docker updates for eagle 0.5

This docker image is for eagle 0.5
There is still an issue where namenode process dies sometimes.
creating this PR to get the review started....

@qinzhaokun, @haoch  can u please review this ? its working fine now

@jhsenjaliya how could I quickly have a try about the docker image? some guide like building/quick starting?

Hi Hao, the process i have kept similar, I was using "docker for mac" which has some known issues.
most likely docker image building will fail at running YUM install, so you will have to change the storage-driver of docker from AUFS to overlayFS , more detail on how to do it can be found here under “Configure Docker with the overlay/overlay2 storage driver”: Configure Docker with the overlay/overlay2 storage driver
Following 2 commands should get you docker image and create container for eagle with services.
./bin/eagle-docker.sh build
./bin/eagle-docker.sh deploy

LGTM


Some confusion more than issue on OTOS Tuning

OTOS Heading Offset Tuner
copy the heading offset into line 38 of SparkFunOTOSDrive
OTOS Position Offset Tuner
copy the pose offset into line 38 of SparkFunOTOSDrive
I'm a bit confused or maybe not understanding where these values go.
The closest I come to line 38 is line 42
// RR localizer note: These units are inches and radians.
public SparkFunOTOS.Pose2D offset = new SparkFunOTOS.Pose2D(-.125, 0, Math.toRadians(89.3656));
My sensor is .125 inches left of center, it's mounted center of bot and it's not quite pointing at 90 degress.  Off just a tiny bit.
I think when I was doing the Offset tuning, I was using that number to change the 90 degrees I was using.  That is how I got to 89.3656.  So as I was driving along the wall the heading was basically staying at zero.
I have no clue where to set the OTOS Offset Tuner number.   I did the test about 10 times.  I was bouncing around between -157.85 and -157.75 so it seems consistent.  I'm just not sure what to change.

That's an issue for https://github.com/jdhs-ftc/sparkfun-otos-quickstart

Sorry, I will open a ticket in that spot.  Appreciate your help.
Kevin Vance
M:<PHONE_NUMBER>
@.***
(Using mobile mail, please ignore any typos)
On Mon, Dec 30, 2024 at 1:40 PM Ryan Brott @.***> wrote:

Closed #10 https://github.com/acmerobotics/road-runner-ftc/issues/10 as
completed.
—
Reply to this email directly, view it on GitHub
https://github.com/acmerobotics/road-runner-ftc/issues/10#event-15786648465,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BMHYHLZTP53OGKGIK5XFNE32IGOTDAVCNFSM6AAAAABULLAUICVHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJVG44DMNRUHA2DMNI
.
You are receiving this because you authored the thread.Message ID:
@.***>


Implement fail-fast support

The default for cargo test is to quit on the first failing test (well, the first failing binary). The test runner should have a way to do that as well.

Added in 4e0ab2c4dcb12102da09a308a9d411a55beb97c0.


APIM [3.1.0] Introduce configurable property to restrict the token type selection

Currently, In the store portal  when creating an application
"Reference (opaque)" option and "Self-contained (JWT)" option both listed.
It will be great if we can introduce a configurable property with in the product itself to restrict the token type.

Fix: https://github.com/wso2/carbon-apimgt/pull/8738


USB Drive Support Not Working

Calc Info
Model: TI-84 Plus CE
OS: <IP_ADDRESS>4
PROD #: 13-07-05-2200
ID: 13005-7D113
Boot Code: <IP_ADDRESS>4
Base Code: <IP_ADDRESS>4
Other Info
USB Drive: Verbatim STORE N GO USB Device (14.4 GB)
Formatted in FAT32 with windows 10 (yes i know pleb move, but i have to use windows for school :( )
I put a build of MULE CE on it. (45 KB program)
OTG Cable: Unlabeled, but seems to be this one
Reproduction Steps

Turn on calculator
Apps, 4, to enter Cesium
Click on USB Flash Drive in Cesium
Plug drive into OTG cable
Plug Cable into calculator
Nothing Happens
Unplug cable
Press CLEAR
Try the USB cable first, then the drive
Nothing happens
Remove the cable
Calculator is frozen. CLEAR does nothing, neither does any other button.

Once hung, no combination of anything will unfreeze the calculator.
Please let me know of any errors in this bug report.
Thanks! -Knights

Thanks for the report! What is the date code/model number on the back of the calculator?

Woops forgot about that!
Formatting Settings
Capacity: 14.4 GB
File System: FAT32
Allocation Unit Size: 16 kilobytes
More calc things because im dumb
Code: L-0318L

As a pro-tip, you should set the allocation unit size to 64KiB for best performance. Anyway I'll get those materials and see if I can reproduce it.

It was the drive.
Tried it with a different drive and it works perfectly.

Well probably not "perfectly" as there might be intermittent issues. I'm going to keep this topic open because I was able to reproduce this issue on another drive I have, so until I fix that I'll be working on making this more stable.

I personally think the issue is just the cheap usb drive, but there definitely are some problems so this should be kept open.

Thanks

I'm going to close this issue for now, unless @KnightsWhoSayNi0 wants to test that other drive again. I think that the usb libraries are able to better handle various drives now, so most drives should work.


Compress a trained model

Hi all,
This framework is like compress model in the training process.
But if I have a trained model, how can I compress it?

@TranThanh96  Do you know how to use the compress model, when compress process has executed?when I run the weights file, the gpu memory are still the same as before, how it comes?

Hi @TranThanh96,
There are many examples of post training quantization.  You can use the API to prune modules w/o retraining, but you will probably suffer from a big accuracy loss.  Therefore, our examples show pruning with fine-tuning.
Cheers
Neta

Hi @andyqian2015,
To find out why the GPU memory size is unchanged, you may refer to Distiller's FAQ.
Cheers,
Neta

Hi,
Closing this issue due to staleness. Feel free to reopen if there are further questions.


⚠ Nebulance has degraded performance

In f441338, Nebulance ($NBL) experienced degraded performance:

HTTP code: 200
Response time: 1770 ms

Resolved: Nebulance performance has improved in df95ca0 after 6 minutes.


Inference API using dataset

Current inference API requires the caller to provide individual inputs to the inference call. This requires handling the inputs, outputs, and file reading on the user's end.
The proposal is to create an inference interface ml::train::inference(cb) which will be called over each input of the dataset set in the model, and cb will be used to capture the output as required by the user. The default cb can write to a binary file sequentially so that it can be later read as input by nntrainer.
/** inference output handler callback function interface */
typedef int (*ml_train_output_handler_cb)(const float **output, bool last, void *user_data);

/** inference operation with the same interface as train except the extra cb argument */
int ml::train::inference(const std::vector<std::string> &values = {}, ml_train_process_output_cb cb);

Later this cb can be added to train/validation as well, if the caller wants to store the outputs.

:octocat: cibot: Thank you for posting issue #1837. The person in charge will reply soon.

Do you want to provide an inference interface for batch processing?
or Do you need this feature for training/personalizing a given neural network model?
With the conventional synchronous inference interface, we can do it in ML-inference-API.

This is equivalent to  somesrc ! tensor_converter ${options} ! queue ! tensor_filter framework=nntrainer model=${MODEL} ! appsink name=${NAME}, right?

Do you want to provide an inference interface for batch processing? or Do you need this feature for training/personalizing a given neural network model?

The current inference cc-API already supports batch processing. However, the current inference API requires the user to handle the data processing on their own. The purpose of this API is to lower the burden on the caller and let dataset in NNTrainer handle the data processing.

With the conventional synchronous inference interface, we can do it in ML-inference-API.

From the POV of burst processing (batch processing), that's a great point. Although I wonder if any gstreamer element already exists for the same (I couldn't find it)?

This is equivalent to  somesrc ! tensor_converter ${options} ! queue ! tensor_filter framework=nntrainer model=${MODEL} ! appsink name=${NAME}, right?

Yes, it would be equivalent to the above-described pipeline, where the data pre/post processing is taken care of by the somesrc/appsink in this case.

This is equivalent to  somesrc ! tensor_converter ${options} ! queue ! tensor_filter framework=nntrainer model=${MODEL} ! appsink name=${NAME}, right?

Yes, it would be equivalent to the above-described pipeline, where the data pre/post processing is taken care of by the somesrc/appsink in this case.

If this is equivalent to such an API usage, it is more desirable to be implemented in api.git for ALL tensor-filter subplugins.


Last tweaks to the tools and JS envs

Review by @gzm0

With these changes, the generated Scaladocs of the Tools and the JS Envs actually make sense :p

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2798/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/3600/
Test PASSed.

One thing I'm a bit weary of, is that we privilege ourselves to use deep internals of the linking pipeline to implement one of the jsEnvs. Maybe it would be worth leaving a comment on one (or some) of these private[scalajs] entry points saying something the like: "If you would like to implement a lazy-loading JSEnv (like RhinoJSEnv) and have reached this point, don't move your package or parts thereof to scalajs, but contact us and we'll spec and create a clean interface to do so.".
In any case, I completely agree that what we have in this PR is sufficient for the moment (i.e. no need to do fancy interfacing for lazy loading etc. at this point).

That's all.

Yes, ideally a clean interface would be needed. It will be easier to add one later, now that everything is private, when we need it.

I'm not sure whether you want me to do anything on this PR?

Nah, let's just leave it.

LGTM


Added New file named DiscountFinder.cpp

This file contains the cord for a program which is made to find the discount

Please add your name and info in README.md


Clarify deploying the stack and guardians

Currently the manual states that anyone can become a guardian by deploying the Grid stack. This is not correct. Being a guardian will encompass more than just deploying the stack.

Completed in #457.


this repo should be part of the semaphore org..

imho this repo should be part of https://github.com/ansible-semaphore
actually while creating my documentation PR I was searching for the right values of some config params and was not able to find the snap config..
moving this repo to the ansible-semaphore organisation would :

makes it easier for users/devs to find this repo
you'll have everything belonging together in one place
makes it easier to work on it when the project grows (organisation / team permissions etc)

Hey @fiftin what do you think ?

I second that, if that's the official snap repo, it should be moved to the organization

Yes, I agree.
But I have no access to the org. Only repo. I don't want to put  snapcraft.yml to the Semaphore repo because it will slow down the already very slow Snapcraft building.
I created organization https://github.com/semaphoreui which I can control. I can move this repo to it.

oh I wasn't aware of that.. really thought that you are the owner of that org - which seems not - which itself is .. well irritating at least ;)
imho I expect that all parts of semaphore you handle are under 1 org.. so even the semaphore main repo should be moved there then.
but well just my 5ct. it would help others finding stuff when they are properly located though.. in any case moving this one here to your owned org makes sense, thanks


Wrong release notes for 5.3 RC2

The current release notes at https://github.com/gradle/gradle/releases contain the following sentence:
This release candidate contains fixes for the following issues reported against 5.3 RC2:

I guess 5.3 RC1 is meant - otherwise it doesn't make any sense. 😎

Indeed, fixed, thanks!


Migrate project to go modules

Hm, not sure what is the problem, but tests fail
--- FAIL: TestElToritoValidationEntry (0.00s)
    eltorito_internal_test.go:64: Mismatched bytes, actual then expected
        01 ef 00 00 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 64 69 73 6b 66 3c d5 55 aa
        01 ef 00 00 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 64 69 73 6b 66 37 e2 55 aa

Seems the checksum is not what expected

I’ll look next week at some point.

You are right, it does fail on current master. Strange, that is. Dig in time...

No, somehow I have the checksum off. I just recalculated it manually. Opening a PR to fix that, then you can rebase.

Rebase and try now.

:+1:

Closed via #22


MIT License

Would you consider adding a permissive license - like the MIT License - to this library?
My company prefers that we don't use software provided under the Unlicensed.  Other have argued (and our lawyers at least agree enough to make it off limits) that the Unlicense causes more issues than it solves.
For example:

It's not global. It doesn't make sense outside of a commonwealth ecosystem, is explicitly illegal in some places (Germany), and of unclear legality in others (Australia)
It's inconsistent. Some of the warranty terms cannot, logically, co-exist, given the current legal ecosystem, as written, with the licensing terms.
Its applicability is unpredictable. The license is short, clearly expressing intent, at the cost of not carefully addressing common license, copy-right and warranty issues. It leaves a lot of leeway interpretation - meaning that, in the US, it will take a few trials before you can reliably know when the license is applicable, and how.

@BMillsVT Done. Changed to MIT in 2e2d4d8349b90cd800d9b34e1005fa7a46333f66
However, I'd argue that MIT is actually less permissive, because it obliges to include the license text in copies and derivative works, i.e. it works like a self-replicating virus :)

The above copyright notice and this permission notice shall be included <...>


Docs for new users: where is the HTML template?

I'm new to Preact and preact-cli and can't seem to find out how (where) to add a <script> to use a CDN-hosted library. Where's the <body> section of the HTML?
I ran preact create material myapp, but can't see where style/index.css or manifest.js are loaded from. The latter is visible if I View source while running the dev server, but I don't see how the stylesheet is loaded.
After (IMO too) much digging, it seems the underlying issue is #428. Until that's solved, can we document how to change the HTML template? Or is this an issue with @prateekbh's preact-material-boilerplate rather?

oh yes, you can copy paste this in your project for now: https://github.com/developit/preact-cli/blob/52e9843bdd0218d563df756391c6414fabf8c2c3/src/resources/template.html
then, use --template flag to point to the pasted file
e.g.: https://github.com/prateekbh/preact-material-components/blob/master/docs/package.json#L8

Any updates on making the HTML template more easily accessible? Seems like a pretty common requirement, e.g. to add meta tags to the HTML; or is there a better practice for that sort of thing?

@developit @lukeed @reznord  for more visibility

Honestly I can't remember if the next version has it included yet or not, but we can easily do it.
For now you can just do something like this:
# copy the template into "src/template.html"
$ cp node_modules/preact-cli/lib/resources/template.html src/.

Then update both watch and build commands with a --template src/template.html as @prateekbh mentioned above.


Implement import/export features

Closes #28 by introducing export, which collects all fingerprint data into a simple Vec<u8> for easy storage into a file or database.
Using such data, along with the length of the filter (from len) we can later reconstruct the filter by importing the stored data through recover.
(Some minor changes also introduced via rust-fmt)

I don't see a reason why this functionality shouldn't be part of cuckoofilter, so I'll take this over if @seiflotfy doesn't veto. 😉

Somewhat off topic: Oration looks quite interestering! Could you explain how & for what you (want to) use cuckoofilters there? From reading the linked issue, somehow for likes and dislikes?

Excellent points @florianjacob, all of which shouldn't be an issue to implement at all. May not get to it until after Christmas/New Year though.

Serde serialisation was my initial idea, but it turned out that the things that needing storage were fairly simple. Also, I wasn't sure about design choices of the crate - sometimes additional dependencies are not that welcomed without lengthy discussions. But you're right: this would be my next step regardless, so I see no reason why this shouldn't happen.
Seeing repeat(Bucket::new()).take(capacity) was in turn, something I hadn't seen before: very cool!

As for Oration: it's a commenting system, which allows users to up/downvote comments. On the frontend, a user votes - sending a post request to the backend. That request identifies the sender's IP and also sends a hash of user details. At the moment, I'm using a bloom filter to store IP details as a way to rate limit voting continuously. The issue with that is I can only really tell that a user has voted, not which way. Since you can't really delete values in a bloom filter, this isn't quite what I'd like. So having two cuckoo filters: one for upvotes, one for downvotes which could add an delete user details as needed.
That's what I hope to do at least, I haven't worked with these probabilistic data structures before - they look very impressive though.

May not get to it until after Christmas/New Year though.

Take your time! 🎄

Also, I wasn't sure about design choices of the crate - sometimes additional dependencies are not that welcomed without lengthy discussions

Not sure what design choices @seiflotfy has in mind, but I'd say serialization is quite an essential feature for a crate that provides a data structure, and serde is the generally accepted way to go. If anybody really has a problem with the dependency on serde for whatever reasons, we can still optionally hide it with a feature gate, but I guess most users will either find it usefull or don't care - in contrast to my C interface project, which would pull in cbindgen for something most users won't need, so I'm trying to hide it by default.

Oration has an interesting use case, so you're essentially saving database memory by not storing a full hashset of all user identification characteristics, but only a bloom / cuckoofilter, at the cost of having some false positives where users are denied to vote but don't have. Sadly one of the cases where one would probably prefer false negatives over false positives. But in return, dropping old values if the filter gets too small isn't that of an issue in your case.

Hi guys, sorry for the delay - life got in the way.
I've just adjusted this based on Florian's comments.

Add ExportedCuckooFilter, which derives serialisation traits via serde.
From trait for ExportedCuckooFilter, CukooFilter and Bucket. No need to do this for Fingerprint as  the slice copy needs to be done by reference. We'd be creating extra Fingerprint::empty() instances if we did this.
Clean up recover functions and privatise methods that no longer need to be public.
Extend recovery test case to include false positive checks.
Add test for serialisation.

I've used serde_derrive to generate the serialisation on the ExportCuckooFilter since that's the most straightforward method. If you want to drop that dependency I can implement those directly fairly easily.

Hello, any update on this PR?

It should be ready, just waiting for a second round review.

Will take a look
On Mon, Mar 26, 2018, 11:26 AM Tim DuBois<EMAIL_ADDRESS>wrote:

It should be ready, just waiting for a second round review.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/seiflotfy/rust-cuckoofilter/pull/29#issuecomment-376103031,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAHMTWw9wihRUDmsXel_O09k5OVEkZEbks5tiLRTgaJpZM4RLaQY
.

This now has a Changelog entry and seems sufficiently documented. :+1:

I think this should be part of 4.0
WDYT @florianjacob

@seiflotfy I agree. If you don't want something to be changed here, too, I'll merge this and my #27 and release master as 0.4.0 tomorrow morning (in ~24 hours).

go ahead :D


Apply the recursion limit to the parser instead of just to the printer.

Raphael Salas found more stack overflows involving very large symbols that
failed while the parser was trying to skip over tokens. These are fixed by
moving the recursion limiter from the printer to the parser, and updating the
printer to use the parser's limiter.
The failing cases are added as unit tests.
I'm submitting this for review while I run the fuzzer overnight.
r? @alexcrichton

Let me know if you'd like me to move the tests in v0.rs to a separate file :)

Fuzzing found a few more stack overflows. Let me fix them before merging this.

Didn't find any more fuzz bugs. I think this is good to go.

Thanks!


cv.approxPolyDP maxContour.

During testing, I encountered a case where the top-right of my page was incorrectly evaluated as being near the top-left, resulting in a near triangular poly from getCornerPoints(contour). What seems to have happened is that there was a point in the contour that was just right of the centre, yet had a bigger distance than the right-hand corner of the page (although the page was at an almost 45 degree angle in the frame, which would be unusual).
Recommend applying a cv.approxPolyDP to the maxContour prior to getCornerPoints(contour) to reduce occurrences.
      return this.getApproxPoly(maxContour);
    }

    /** refines a contour to get approximate poly
     * @param {*} contour contour to refine
     */
    getApproxPoly(contour) {
      const peri = cv.arcLength(contour, true);
      const approx = new cv.Mat();
      cv.arcLength(contour, true) * 0.02
      cv.approxPolyDP(contour, approx, 0.1 * peri, true);
      return approx;
    }

Interesting, thanks for letting me know! Could you provide the image so I can test it?

Hi,
The original is lost, but have managed to recreate.
Please excuse the messy floor :D
In the with and without images, the green dot is from cv.minAreaRect, and the blue is from averaging the corners:
function findCenterOfPoints(points) {
let sumX = 0;
let sumY = 0;
for (const point of points) {
sumX += point.x;
sumY += point.y;
}
const centerX = sumX / points.length;
const centerY = sumY / points.length;
return { x: centerX, y: centerY };
}
Also encountered raw2. This one is odd as getCornerPoints fails with the getApproxPoly on account of the bottom left being right of the center.
I suppose you could overcome this because if getApproxPoly manages to return 4 points, you can sort by X then swap on y. Something like:
if (contour.data32S.length === 8) {
let points = [];
for (let i = 0; i < 8; i+=2) {
points.push({ x: contour.data32S[i], y: contour.data32S[i+1] });
}
points.sort((a, b) => a.y - b.y); // Sort by y to separate top and bottom pairs
let topPoints = points.slice(0, 2).sort((a, b) => a.x - b.x); // Sort top pair by x
let bottomPoints = points.slice(2, 4).sort((a, b) => a.x - b.x); // Sort bottom pair by x
  return {
    topLeftCorner: topPoints[0],
    topRightCorner: topPoints[1],
    bottomLeftCorner: bottomPoints[0],
    bottomRightCorner: bottomPoints[1],
  };
}

Remember that before I switched to your script, I sometimes got more than 4 points out of getApproxPoly. Think this was down to my thresholding and lack of the blur, but this may be a more robust (but potentially slower) implementation to simplify the initial contour:
function simplifyContourToQuad(contour, epsilonStart = 0.1, epsilonAdjustment = 0.05, maxIterations = 10) {
if(contour.rows < 4)
return contour; // return original contour if less than 4 points (not a quadrilateral
let epsilon = epsilonStart;
let approx = new cv.Mat(contour);

let iterations = 0;
const peri = cv.arcLength(contour, true);

while (iterations < maxIterations) {

  if (approx.rows == 4) {
    // Found a quadrilateral
    return approx;
  }
  cv.approxPolyDP(contour, approx, epsilon * peri, true);

  if(approx.rows < 4)
    epsilon -= epsilonAdjustment; // Decrement epsilon to simplify further
  else
    epsilon += epsilonAdjustment; // Increment epsilon to add more points
    iterations++;
}

However 0.1 does seem to be fairly consistant at getting 4 points.
Tom
From: ColonelParrot @.>
Sent: 08 March 2024 23:25
To: ColonelParrot/jscanify @.>
Cc: Tom Rowland @.>; Author @.>
Subject: Re: [ColonelParrot/jscanify] cv.approxPolyDP maxContour. (Issue #25)
Interesting, thanks for letting me know! Could you provide the image so I can test it?
—
Reply to this email directly, view it on GitHubhttps://github.com/ColonelParrot/jscanify/issues/25#issuecomment-1986559861, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A664FIW6BEEIT7Y4IDKSGV3YXJCF5AVCNFSM6AAAAABEMTRNOKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOBWGU2TSOBWGE.
You are receiving this because you authored the thread.Message ID<EMAIL_ADDRESS>


test omero-server ice 36, fix systemd service files (IDR-0.3.1)

Test OMERO.server on ice35 and ice36.
ice35 uses the latest release, ice36 uses the latest dev build so the omero-user role can be tested (requires https://github.com/openmicroscopy/openmicroscopy/pull/4906). This should be changed to use the latest release once it's released.
Also includes a fix (hopefully) for https://github.com/openmicroscopy/infrastructure/issues/193

Quicks questions:

Are there any concerns from anyone re: dropping support for 5.2.x? This is only in for the testing of the repositories so I'm inclined to say it's fine. (Dropping support for running 5.2 seems inadvisable)
How does one test gh-193?

How does one test gh-193?

Reboot an omero server which uses an external postgres. If the network goes down before omero then OMERO.server will hang since it'll lose its DB connection (you should be able to tell from the console logs).

Spun up a full stack on ome101 to test. -omero server rebooted quickly with nothing apparent in the OS console:
[[32m  OK  [0m] Stopped OMERO.server.
         Stopping LSB: Bring up/down networking...
[[32m  OK  [0m] Stopped LSB: Bring up/down networking.
...


Rewrite the query to fetch an organization.

Prevents IntegrityError while trying to save an organization
with conflicting fullname but different domains.
Fixes #964

@narayanaditya95 , does this PR really fixes #964, that is, can we close #964 when we merge this PR?

@chrismedrela Yes, this PR fixes #964.
I will be creating a new PR for tests as it involves a change to travis.yml.

I will be creating a new PR for tests as it involves a change to travis.yml.

Why is a change to travis.yml necessary?

@chrismedrela
The test suite tests the project without adding pydata to the list of installed apps. I will create a new job that makes changes to the codebase necessary for including the pydata app within the project and then run the test suite. Also, it would involve marking certain tests as expected failures when run with pydata installed.
So, the current plan of action is to create three jobs on travis:

Runs the test suite without making any changes.
Merges the branch pydata-deploy and then runs the test suite.
Runs the check for missing migrations.


How to make rainbow effect?

Great plugin, could you tell me how to make a changing rainbow color effect in my scoreboard?

No possible with this plugin

Reference to #114


Maps bugfix & sidebar hover event

Fixes a typo that breaks maps on staging.
Introduces a hover event on sidebar POIs to trigger a pop-up of the matched POI item on the map.

http://gifs.joelglovier.com/thumbs-up/chuck-norris.gif


Support for DoQ

Hi, do you plan adding DoQ support ?

When NGINX releases official support for Quick/HTTP3 then I'll look at adding it to this project.

Support for QUIC and HTTP/3 protocols is available since 1.25.0. Would be great to have it in here :)


Suggestion

Some kind of return-to-town button that only becomes useable just after getting an upgrade from somewhere that is not town-so you can't softlock yourself in an upgrade cave.
Also, possibly, make every upgrade that uses water give you the water bar if you get it first? I got grenade first and couldn't progress because I had no water bar. (on Casual)

...this is actually 2 things, how do i split issues?


ipykernel deps

Current dependencies on/for this PR:

main

PR #17

PR #18   👈

PR #19

This comment was auto-generated by Graphite.


More than one eco devices

Hello,
We have an installation with several Eco devices.
One for the three-phase and HP / HC Electric meter.
Another for the metering part of city water,
another for metering water for the swimming pool.
etc ...
How to integrate several Eco-devices in the same installation of Home Assistant. Because if I ask for a new integration, he tells me that there is already a first one.
Thanks
Jonathan

Hello,
It checks if the IP addresse or hostname is already used, can you paste me the error ?

Ok I think I understand indeed:
I am using remote access for the moment via a hostname which remains the same but whose ports are different for each Eco device.
Eco device 1: ext-access.com:8001
Eco device 2: ext-access.com:8002
etc.
The same configuration for the IPX800V4 via the YAML works;)
So how can I successfully integrate my remote eco devices?
An update of your code or via YAML as for the IPX800V4?
Thanks ;)

I have to handle a couple of host and port instead of just host, I'll try to do that
(I can't do the same thing than ipx800v4 as it's an old style config, but I will figured it out)

You can do it with the 4.0.0 release https://github.com/Aohzan/ecodevices/releases/tag/4.0.0


[Diagnostics] Extend contextual failure checking to all apply expressions

Extends support for contextual failure checking from only BinaryExpr to
all of the expressions being diagnosed via FailureDiagnosis::visitApplyExpr.
Such helps to properly diagnose e.g. closures which contextually incorrect
result type or type construction and assignment to a different type.

As an extension of SR-2208 apply contextual conversion failure checking
to all of the expressions diagnosed via FailureDiagnosis::visitApplyExpr.
Resolves rdar://problem/28909024.

/cc @rudkx

This looks great!
@swift-ci please smoke test and merge

Yay, awesome!


After minting NFT, sometimes latest minted NFT don't appears in account NFT using xrpl version-2.6.0

Hi Team,
I am using xrpl npm version 2.6.0 in NodeJS to make XRPL NFT Exchange. After performing minting operation when i find accounts latest minted NFT with help of URI passed in JSON object while minting, sometimes ledger provide latest minted NFT and sometimes its undefined. And When ledger fails to provide us latest minted NFT We are not able to perform further operation.
Sometimes we thought that ledger might take sometime to updated minted NFT in accounts NFT page so we added setTimeout but no effect of that.
So Someone please help or suggest the correct process if i am doing something wrong. Thanks in advance for suggestion or any help.
I am providing code below So that if anything wrong can correct me.
I am using windows system with NodeJS version 14.17.6 and xrpl version - 2.6.0
Code is mentioned below:-
try {
const { _id, TransferFee,flag } = req.body;
const { ac, it } = req.decoded;
const getnfts = await Nft.findById(_id).select({ image: 1, _id: 0, metaDataUrl: 1 });
const request = {
txjson: {
TransactionType: "NFTokenMint",
Account: ac,
URI: getnfts.metaDataUrl ? xrpl.convertStringToHex(getnfts.metaDataUrl) : xrpl.convertStringToHex(getnfts.image),
Flags: parseInt(flag),
NFTokenTaxon: 0,
TransferFee: parseInt(TransferFee)
},
user_token: it,
};
const subscription = await Sdk.payload.createAndSubscribe(
  request,
  (event) => {
    if (event.data.signed === true) {
      return event.data;
    }
    if (event.data.signed === false) {
      return false;
    }
  }
);
const resolveData = await subscription.resolved;
if (resolveData.signed !== true) {
 console.log("error", resolveData.signed)
}

setTimeout(async()=>{
  await client.connect();
  const nftsMintedData = await client.request({ method: "account_nfts", account: ac, });
  client.disconnect();
  let myarray = nftsMintedData.result.account_nfts;
  const { URI: latesUrl } = request.txjson;
  const item = myarray.find(vl => vl.URI.includes(latesUrl));
 console.log("minted nft", item)
},6000)

} catch (error) {
console.log("error===mint====", error);
}

I don't believe response of account_nfts is in minted order.  That means you will have to keep following the marker field until you find the newly added NFToken.
Is this happening in cases where marker is not returned?  Also are you using submitAndWait?

Could you elaborate on your intention. If you are trying to find the NFTokenID of the latest mint, then using account_nfts is not the right way to retrieve the new NFT minted.
The right way to get the NFTokenID is to call tx API using the hash returned from the NFTokenMint you submitted. Then you need to use getNFTokenID to find the new NFTokenID
Currently you seem to be fetching the first page of account_nfts, however, this API does not promise that the latest NFToken minted is on the first page (account_nfts has pagination where you can use the marker from the response to find subsequent page)

Thanks both of you @ckniffen @shawnxie999 for the help.
@shawnxie999 I was going through your above mentioned process to get NFTokenID after minting NFT.
I just used this url "https://xrpl.org/websocket-api-tool.html#tx" to get txid details which i got as a response after minting process. And I got few values after hitting above mentioned url. The values i got are  "Account", "Fee", "Flags", "LastLedgerSequence", "NFTokenTaxon", "Sequence", "SigningPubKey",  "TransactionType",  "TransferFee",  "TxnSignature", "URI", "date", "hash", "inLedger", "ledger_index" and also some more values including some NFTokens.
But after this process I'm confused little bit as i couldn't get the method you mentioned above i.e. getNFTokenID in XRPL npm or in XRPL documentation.
So can you explain little bit more to get latest minted NFT, Process I'm using is mentioned in above issue description if you could write the script to find latest minted NFT then it would be great for me. I'm using NodeJS for api.

@KumarUjjwal2022 I've attached a function getNFTokenID in the script below that exercises similar logic as what I linked you, feel free to copy it into your code. Essentially this function takes in the meta field of the response, and performs calculation to find out the new NFT minted.
As for the availability of getNFTokenID in client library, I'm not too sure about this, perhaps @ckniffen could help.
  const getNFTokenID = (meta) => {
    const affectedNodes = meta.AffectedNodes.filter(
      (node) =>
        node.CreatedNode?.LedgerEntryType === "NFTokenPage" ||
        (node.ModifiedNode?.LedgerEntryType === "NFTokenPage" &&
          !!node.ModifiedNode?.PreviousFields.NFTokens)
    );

    const previousTokenIDSet = new Set(
      affectedNodes
        .flatMap((node) =>
          node.ModifiedNode?.PreviousFields?.NFTokens?.map(
            (token) => token.NFToken.NFTokenID
          )
        )
        .filter((id) => id)
    );

    const finalTokenIDs = affectedNodes
      .flatMap((node) =>
        (
          node.ModifiedNode?.FinalFields ?? node.CreatedNode?.NewFields
        )?.NFTokens?.map((token) => token.NFToken.NFTokenID)
      )
      .filter((id) => id);

    const tokenID = finalTokenIDs.find((id) => !previousTokenIDSet.has(id));

    return tokenID;
  };

  // Response  you get from `tx` response
  const txResponse = {
    result: {
      Account: "rB1ZB8H9FTxW3dMCMYDW2thuiGyL38Yx5j",
      Fee: "10",
      Flags: 8,
      LastLedgerSequence: 2286,
      NFTokenTaxon: 0,
      Sequence: 2265,
      SigningPubKey:
        "ED6B1029DDD445952E1B849A24ADF2D7C42FE53953ED36A62502C8C2B53C8FF9CF",
      TransactionType: "NFTokenMint",
      TxnSignature:
        "3727B51FAC82F98FB8ED46BF8640119DBA929B2196C09F8715160FAB163B0DF20697CC2DB6F2E2BF0688A09F39BD79F3A93DA49437F70EB6F1979842515E5C06",
      URI: "68747470733A2F2F7872706C2E6F7267",
      date: 735332044,
      hash: "43A957810A7690D82A3F834405FEEDA527BA20F45332B867A9AD71FE7F40BEC2",
      inLedger: 2267,
      ledger_index: 2267,
      meta: {
        AffectedNodes: [
          {
            ModifiedNode: {
              FinalFields: {
                Account: "rB1ZB8H9FTxW3dMCMYDW2thuiGyL38Yx5j",
                Balance: "99999990",
                Flags: 0,
                MintedNFTokens: 1,
                OwnerCount: 1,
                Sequence: 2266,
              },
              LedgerEntryType: "AccountRoot",
              LedgerIndex:
                "5187D567276B1B777FF4DE1BB7DEF0FBDB5C9BDCB9088B94EAABCAB44419B413",
              PreviousFields: {
                Balance: "100000000",
                OwnerCount: 0,
                Sequence: 2265,
              },
              PreviousTxnID:
                "5C435F48D16989F54D3429A226B777B91A77890BD546027B9EDDFC172FCFA293",
              PreviousTxnLgrSeq: 2265,
            },
          },
          {
            CreatedNode: {
              LedgerEntryType: "NFTokenPage",
              LedgerIndex:
                "7740EC601A4C7C544D079B719C9F9B12CF996A92FFFFFFFFFFFFFFFFFFFFFFFF",
              NewFields: {
                NFTokens: [
                  {
                    NFToken: {
                      NFTokenID:
                        "000800007740EC601A4C7C544D079B719C9F9B12CF996A920000099B00000000",
                      URI: "68747470733A2F2F7872706C2E6F7267",
                    },
                  },
                ],
              },
            },
          },
        ],
        TransactionIndex: 0,
        TransactionResult: "tesSUCCESS",
      },
      status: "success",
      validated: true,
    },
  };

  console.log(getNFTokenID(txResponse.result.meta));

It was added in<EMAIL_ADDRESS>so you will need to bump your version. Here is the PR https://github.com/XRPLF/xrpl.js/commit/5d34746f1241cc17d5ad08e0c1d6aa63d6743e42

Thanks

Hey Team Thanks for your help , It's like half of my issue is resolved as i could get NFTokenID as per solution you guys have provided but didn't get NFTokenID details like issuer, nft serial number etc. I tried to get details with help of nft_info api keys give in XRPL documentation i.e. https://xrpl.org/nft_info.html but it gives me error like command not found , methods not found.
I am trying to get NFTokens info in below mentioned ways:-
const txDetails = await client.request({ method: "tx", transaction: resolveData.txid, binary: false });
console.log(txDetails,"txresult")
const nftId = await GetNftID.getNFTokenID(txDetails.result.meta);
const nftsDetails = await client.request({ method: "nft_info", nft_id: nftId});

@KumarUjjwal2022  nft_info is a clio-only API. You can either run your own clio node, or connect to wss://s2-clio.ripple.com:51233 for the API

Okay thanks @shawnxie999 . I am using wss://xrplcluster.com/  to connect with ripple server.
So what should i use to get single NFToken info/details if i use above url to connect with xrpl?

@KumarUjjwal2022 Ideally you should use both servers. Clio is only read-only, which means you can't submit transactions to it.
So, you should open a seperate WS to connect to clio exclusively to get the NFT details.

Thanks @shawnxie999 . I got the details also of NFTokenID but sometimes this error i get while minting and fetching NFT details:-
NotConnectedError: Error: connect() timed out after 8000 ms. If your internet connection is working, the rippled server may be blocked or inaccessible. You can also try setting the 'connectionTimeout' option in the Client constructor.
I have given connectionTimeout also while setting connection but there is not effect of that, I actually want to know when did this error comes??
const client = new xrpl.Client(process.env.XRPL_URI, {
connectionTimeout: 8000,
});

@ckniffen do you know what's happening?

I have never seen this.

@KumarUjjwal2022 are you sure it's not an internet/firewall issue? The server should work just fine.

Not sure, that's why i asked from you guys. This error doesn't occurs always but it's random. Do we need to add some script to check internet speed and what speed does XRPL server need to perform all sort of transaction and operation?

@shawnxie999 To be honest i have been working on same network always. And i faced this issue random sometimes a day or in a week but it's not regular.

@KumarUjjwal2022 This problem was seen in the past where firewall blocks the connection. But you are experiencing it intermittently, it sounds like a internet problem but we don't really know for sure. I would try to test it on different networks when you get the chance.

@KumarUjjwal2022 which rippled servers are you using?
It would be best to run your own rippled servers.

Okay thanks @shawnxie999 . I am using wss://xrplcluster.com/ to connect with ripple server. So what should i use to get single NFToken info/details if i use above url to connect with xrpl?

@intelliot

@shawnxie999 thanks.
The recommendation to run your own rippled servers remains.
@WietseWind could it be useful to connect with @KumarUjjwal2022 (see above) to debug any potential connectivity issues?

can anyone help please. after having an offer rejected for NFT i didnt get my reserve back on over 30 rejected offers?

@TwoBigPaws133, when you create an NFToken Offer, that offer remains in the ledger until it is either accepted or canceled.  If you want to cancel your offers (and get your reserve back) here's information on the transaction that can do that: https://xrpl.org/nftokencanceloffer.html#example-nftokencanceloffer-json

I clicked on your link there was nothing in there that matches my issue?

It is impossible for a deleted account not to return your reserved XRP.
You are using Xumm (based on your screenshots). On the Xumm home screen, you can tap the Reserve to see a breakdown of your reserve. It will match the owned offers.

I checked the offer.
The offer did (as expected) release the 2 reserved XRP by clearing the owned object.
Please note this doesn't show in Xumm or explorers as +2 XRP: the reserve is never deducted from the balance with -2: it's simply 'locked'. So cancelling the offer makes the 2 XRP spendable again, but it never left your wallet, and so isn't returned: it just becomes unspendable (locked) balance. As such, the Offer cancellation transaction doesn't show +2 XRP being added.

The reason your transaction doesn't have the deleted element is because the first one already deleted it.
At delete the reserve is freed up because it removes one of your account's owned objects.

Thank you very much for all your help

This issue can be closed.

Please close. Thank you.

On 1 Nov 2023, at 22:10, Mayukha Vadari @.***> wrote:

This issue can be closed.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.


Delete Student Record Button Is Broken

On the table of students for an exam, trying to delete a student leads to a 404 because the record id seems to be missing from the URL
https://seating-staging-02a3510a1d0c.herokuapp.com/offerings/1528451/exams/final/students//delete

We need more info on this. I cant seem to reproduce it.

We create student rows when the user import student roster (from canvas or google sheet).
And then in this deletion endpoint we will search for that student to delete.
Url interpolation looks right, and it is also not possible that student has no canvas id (we have schema validation at both app layer and db layer).
I think we need to find a way to reproduce this error. Can we still access last sem's cs88 data?

I’ll add you to the fall bcourses later. I wonder if an exception was raised or not if this is the type of thing we could capture in sentry. -- Michael BallFrom my iPhonemichaelball.coOn Feb 7, 2024, at 10:38 AM, Yu Long @.***> wrote:
We need more info on this. I cant seem to reproduce it.
image.png (view on web)
We create student rows when the user import student roster (from canvas or google sheet).
And then in this deletion endpoint we will search for that student to delete.
Url interpolation looks right, and it is also not possible that student has no canvas id (we have schema validation at both app layer and db layer).
I think we need to find a way to reproduce this error. Can we still access last sem's cs88 data?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>


How to perform parallel search from 2 type of data (text and image)?

Let say I have a dataset of scanned math subject questions cropped per question and the data query as a single question picture. I want to get top-k best similar question.
So it needs to be extracted in 3 ways:

extract the text/latex using OCR
crop math graph (if any), then check the graph similarity

How to perform the search? and merge results?

hi @ilham-bintang , thanks for your interest in Jina!
I would suggest you first:

Research if there is a 3rd library OCR tool for math/latex expression extraction, and wrap this python library as a Jina Executor, checkout how to create a custom executor.
Create an Encoder to encode your text/latex and math graph into the same embedding space (not sure if there is a model designed for this purpose).
Take a look at Jina hello multimodal example in Jina core (jina/helloworld/multimodal), it share the same rational as what you're trying to do: search across different modality of data.

I'm not quite sure if I understand your question correctly, let me know if you have further qustions.

Hey @ilham-bintang ,
Can you give more details of how u want to perform the search?
What is ur index data? Images and text or just one of them? How do you expect to query the system?

Hi @bwanglzu  and @JoanFM
Yes, I want to index the image and text and perform a search from both data, then rank/weights/merge from the two results as a single list (sorted by most similar with the query).
I think I need to learn more about Jina hello multimodal for now. Anyway, thanks a lot for the explanation. Just stepping here and see the possibility if this framework could fit with my use-case


Updated identity readme

Here's a draft of the readme intended to provide an example to criticize while we think about what we want in the various identity readmes. I'd appreciate your feedback. Since the existing readme here is well out of date, I want to merge this soon and iterate on it to get it into final shape; any feedback unaddressed here can be incorporated later.
FYI @annatisch -- here's a little documentation ☺

Can one of the admins verify this patch?


Docs should clearly describe pyright interaction patterns.

Having users directed to the attrs issue tracker with pyright type-checking issues described as bugs in attrs doesn't feel great.
Originally posted by @hynek in https://github.com/python-attrs/attrs/issues/1170#issuecomment-1872498822
There are variety of issues redirected into the attrs issue tracker describing what are (essentially) issues with PEP681's description of attrs and resulting inconsistencies with pyright-based static type checking of attrs classes.
These aren't issues with attrs, which supports PEP681 and pyright on a best-effort basis. Absent an explicit dataclass-compatible namespace, these deviations are (at most) a documentation issue for attrs.

This is how documentation suggests to use the default decorator, with the example provided causing the same message to be reported for attrs 23.2.0 and pyright 1.1.351.

Originally posted by @Stealthii in https://github.com/python-attrs/attrs/issues/795#issuecomment-1961244502
Another instance of an interaction pattern that's correct runtime behavior, but actually a pyright issue.

@hynek I totally appreciate how frustrating some of these redirects from pyright can be, as you mention in the issue referenced above. I think it would be useful to expand the public-facing attrs docs to include specific examples of some pyright/attrs interaction patterns, including a description of the the intended semantics of the PEP681/pyright interaction.
Then, hopefully, redirects coming in from the pyright issue tracker can start there and be filed as doc-requests rather than attrs issues.
As the "one who opened the box" on some of this in #795 I'd happily step-up to write this if you're keen.

I've been thinking about it for a while, but I kinda didn't come up with anything how to do it. Do you already have something more concrete on your mind?

It might be useful to point out that attrs issues w/ the PEP are intentional from the part of the PEP (https://github.com/python-attrs/attrs/issues/795#issuecomment-843425238) and then talk about workarounds necessary for libraries (because those have to adapt too)? For instance, putting alias="name_without_underscore" for all fields on constructable classes.


1.2 backports 18-10-18: backport CEP GC fixes

PRs backported:
#5937
Signed-off by: Ian Vernon<EMAIL_ADDRESS>

This change is

test-me-please

test-missed-k8s

test-docs-please


Deployment Failure Reason: Web app warm up timed out

Describe the bug
I have a static nextjs app that used to work for 6-7 weeks ago but have stopped working even for the smallest change. I even reverted the branch to the exact commit that was successfully built last time and it still fails with "Deployment Failure Reason: Web app warm up timed out. Please try again later." after having being stuck in "Status: InProgress." for 10 minutes.
To Reproduce
Steps to reproduce the behavior:
Trigger build by restarting the following Github Actions job: https://github.com/dexie/dexie-cloud/actions/runs/8377209871/job/22938762204 (I can provide access to whom may look into this)
See error "Deployment Failure Reason: Web app warm up timed out. Please try again later." after having being stuck in "Status: InProgress." for 10 minutes.
Compare it with the last successful job https://github.com/dexie/dexie-cloud/actions/runs/7733486859/job/21085673246 that is based on the exact same commit.
Github workflow file (.github/workflows/azure-static-web-apps-proud-meadow-0514cdf10.yml):
I am facing the same issue as here #1440
re opening it because I am facing this a lot for my app
name: Azure Static Web Apps CI/CD

on:
  push:
    branches:
      - dxcman
  pull_request:
    types: [opened, synchronize, reopened, closed]
    branches:
      - dxcman

jobs:
  build_and_deploy_job:
    if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
    runs-on: ubuntu-latest
    name: Build and Deploy Job
    steps:
      - uses: actions/checkout@v3
        with:
          submodules: true
      - name: Build And Deploy
        id: builddeploy
        uses: Azure/static-web-apps-deploy@v1
        with:
          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_PROUD_MEADOW_0514CDF10 }}
          repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
          action: "upload"
          ###### Repository/Build Configurations - These values can be configured to match your app requirements. ######
          # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
          app_location: "/libs/dexie-cloud-manager/" # App source code path
          api_location: "" # Api source code path - optional
          output_location: "" # Built app content directory - optional
          app_build_command: "yarn build"
          api_build_command: "rm -rf ./node_modules/@next/swc-* && rm -rf ./.next/cache"
          ###### End of Repository/Build Configurations ######

  close_pull_request_job:
    if: github.event_name == 'pull_request' && github.event.action == 'closed'
    runs-on: ubuntu-latest
    name: Close Pull Request Job
    steps:
      - name: Close Pull Request
        id: closepullrequest
        uses: Azure/static-web-apps-deploy@v1
        with:
          app_location: "/libs/dexie-cloud-manager/" # App source code path
          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_PROUD_MEADOW_0514CDF10 }}
          action: "close"

I had the same issue, but once I updated the Next build to build the app with the standalone mode, the deployment started working for me.
Here are the steps that you can do.
next.config.js
const nextConfig = {
    output: "standalone"
};

package.json
    "scripts": {
        "build": "next build && cp -r .next/static .next/standalone/.next/ && cp -r public .next/standalone/"
    }

azure-pipeline.yml
                app_location: "/" # App source code path
                api_location: "" # Api source code path - optional
                output_location: "" # Built app content directory - optional
                app_build_command: "npm run build"
                api_build_command: "rm -rf ./node_modules/@next/swc-* && rm -rf ./.next/cache"

First of all thanks man for this great tip this worked like a charm

Never had an issue before this week, today it decided to start timing out on every attempt, but your fix resolved it @joechoi-git

I had the same issue, but once I updated the Next build to build the app with the standalone mode, the deployment started working for me.
Here are the steps that you can do.
next.config.js
const nextConfig = {
    output: "standalone"
};

package.json
    "scripts": {
        "build": "next build && cp -r .next/static .next/standalone/.next/ && cp -r public .next/standalone/"
    }

azure-pipeline.yml
                app_location: "/" # App source code path
                api_location: "" # Api source code path - optional
                output_location: "" # Built app content directory - optional
                app_build_command: "npm run build"
                api_build_command: "rm -rf ./node_modules/@next/swc-* && rm -rf ./.next/cache"

For me I didn't have to do anything but retrigger the deployment. That would work as well since this issue seems like a error that happens when the application size is too large and there is a server failure of some kind during deployment(since the app is too big).
With that said making it standalone does reduce the app size making it a smaller for app deployment. But then again, it might have worked because you triggered a redeployment to run the newer "standalone" version which is infact what I did in the first place(without making it standalone).

I had the same issue, but once I updated the Next build to build the app with the standalone mode, the deployment started working for me.
Here are the steps that you can do.
next.config.js
const nextConfig = {
    output: "standalone"
};

package.json
    "scripts": {
        "build": "next build && cp -r .next/static .next/standalone/.next/ && cp -r public .next/standalone/"
    }

azure-pipeline.yml
                app_location: "/" # App source code path
                api_location: "" # Api source code path - optional
                output_location: "" # Built app content directory - optional
                app_build_command: "npm run build"
                api_build_command: "rm -rf ./node_modules/@next/swc-* && rm -rf ./.next/cache"

I had a similar problem and had been looking for a solution for days. That worked for me. Thank you very much!


Add BlockAwait trait

This change adds in a trait called BlockAwait, which functions like futures::executor::block_on, but allows for a chaining style similar to .await syntax.
I wasn't positive if this would be wanted, but considering how simple it was I decided I'd just go ahead and make it.
I also wasn't completely sure on how I should limit the trait to only be implemented on Future types (and possibly how to prevent it's implementation from being overridden), but I'm open to feedback in the area if my implementation isn't the best.

Users are free to define such helpers themselves, but I would prefer that this not be provided as part of the futures crate.
See https://github.com/smol-rs/async-task/issues/16#issuecomment-1066674511 and subsequent comments for more.
Thanks anyway for the PR!


[Question] Netty 4.0.x support

Hi!
Is netty-4.0.x-compatible jar of 5.0.0-RELEASE published? I see that there is a netty-40 profile in pom.xml, but at the same time #518 states otherwise. Should the pom (also, Travis config etc) be updated? Since Java 9 compatibility requires netty 4.1, that's probably a dead end anyway. But due to the fact that shading is no longer an option, it's pretty constraining :(

Don't expect netty 4.0 support for Lettuce 5.
The profile you're seeing originates in code from the master branch which contains the 4.5.x development line. Code on the 5.x branches do not have a netty 4.0 profile anymore.
It's correct that we dropped netty 4.0 support with Lettuce 5.0 to get remove our compatibility code and drop netty 4.0 constraints.


RPO

[Enter feedback here]
The documentation ( FAQ Azure VM Backup )  states that the RPO is 1 day. However the schedule can be set to every 4 hours so I would assume that the minimum RPO is 4 hours.

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 88beaa58-adf5-28ef-5510-01ace6923eef
Version Independent ID: 02b2de6f-ba0a-d9dc-fd4f-c0c4d3a46107
Content: FAQ - Backing up Azure VMs - Azure Backup
Content Source: articles/backup/backup-azure-vm-backup-faq.yml
Service: backup
GitHub Login: @jyothisuri
Microsoft Alias: jsuri

@kurtnolf Thank you for posting your question. I will check on this and get back to you shortly.

@kurtnolf With the standard policy, the min RPO is still 1 day, unless you have migrated to Enhanced policy. RTO would become shorter after we have introduced multiple daily backups under enhanced backup policy. Most probably we will need to update the FAQ - https://learn.microsoft.com/en-us/azure/backup/backup-azure-vm-backup-faq#what-s-the-minimum-rpo-and-rto-for-vm-backups-in-azure-backup
We will discuss with PM next week and update the as appropriately as possible.


[Feature] Use Windows 10 graphics capture to record

Hello, I have used ScreenToGif for several years.  Record a window is always a bad hurt. These days I'm playing the Windows 10 graphics capture and I notice ScreenToGif can use it to record the window.
I implemented the basic function, it works well on my machine.
But I need bits of help such as icon, localization and test on old Windows version.

It's a good feature, Just the user experience could be improved.
Perhaps this feature can be inserted inside the screen recorders?
Anyway, there's a bug. The first frame recorded always has a different size than the rest. Different sized frames are currently not supported by the editor and encoder.

@NickeManarin
Strange bug, I will have a look tomorrow.
I don't think it should be inserted inside the screen recorders because they should have a different UI. (I still use the old style screen recorder:blush:).
By the way, I will continue to implement the pause function. But I think it will take few days, there is too little information about graphics capture and busy these days in real.

Found the problem.
GraphicsCaptureItem.Size means the window content size + border + out shadow.
Direct3D11CaptureFrame.ContentSize means the window content size + border.
And the code fixed now. All the frames size equals GraphicsCaptureItem.Size.

The pause function is implemented now. The next should be discarded.

My feedback as a long-time ScreenToGif user regarding @NickeManarin comments to user experience:
I like this feature. I just tested it locally on my machine and capturing windows is much easier with it.
I would consider it as an alternative to the screen recorder, just like the whiteboard recorder, and I can see, why it is placed in the startup window. At the same time, I do feel like there is a weird relationship between this new feature and the "snap to window" function of the screen recorder. I think this feature is superior to the "snap to window" and I don't see, why I would ever want to "snap", if I instead could "system capture" it.
Regardless, I dare to disagree with @NickeManarin 😓 and would say, playing it in the screen recorder window would feel weird, since it behaves radically different from the other area selectors, as the others always allow me to adjust the area afterward and the system capture would be fixed and "sticky" (meaning it moves with the window). For me, this is a different recording method and thus belongs on the startup. Users are used to selecting "how" they record in the startup.
@h82258652 It's sad that this PR became stale. I would have loved to have this all these years. Kudos for the idea and the work you put in. Hope this PR is revived someday 😀

I hope to see this become a reality too


feat: add protocol upgrade step

Close vegaprotocol/devops-infra#1552 .
Related PR
https://github.com/vegaprotocol/vega/issues/6184
TODOs

[X] Merge devopsscripts change: https://github.com/vegaprotocol/devopsscripts/pull/84
[x] Merge vegatools change: https://github.com/vegaprotocol/vegatools/pull/205
[x] Uncomment run-tests and build docker steps

We are just waiting for confirmation from @ze97286 that it's fine to merge :)


[Core] Check input for NaNs

Description
If any of the inputs contains NaNs with available_mask = 1 they will be used for training and can be propagated to the predictions or produce failures in training. We should check that the target, exogenous and static features don't have any NaNs for the rows where available_mask = 1 and provide an informative error message.
Use case
This will help saving time when trying to train models on invalid inputs, since it will fail before starting the training process.

@quest-bot stash 100

@quest-bot embark

Fixed by #894


'change' event not fired for  tag

I added a 'change' event handler for the <select> tag. When the user selects from the Bootstrap-select element, the source <select> is also changed, but the 'change' event is not fired.

See guidelines for contributing. Any chance you can link me to a demo or jsfiddle? Have you been able to reproduce this with a reduced test case?

Here's a fiddle: http://jsfiddle.net/10basetom/0m6abfhy/
I have unhidden the native select element. If you change the select element, then both event handlers are called. However, if you change the Bootstrap-select element, then only the jQuery event handler is called (the 'change' event registered using addEventListener() is never fired).
One fix would be to replace that.$element.change(); on line 1046 with this:
that.$element[0].dispatchEvent(new Event('change'));
Now the 'change' event is properly fired regardless of whether you use jQuery or vanilla JS to register it, as demonstrated here: http://jsfiddle.net/10basetom/21wfkmdL/
Note that the new Event() constructor is not supported in IE, so if you want IE support then you can create the event the old-fashioned way.

Yeah, that's true. I also meet the same problem with jquery-validation plugin.
Here is the fiddle: http://jsfiddle.net/tpe1wLyc/2/
Steps of reproducing:

don't select anything and click the submit button
jquery validation shows the error message
change the native select and blur the error message dismissed
change the bootstrap select and blur error message is still there

So I guess the problem is caused by bootstrap-select doesn't fire the 'change' event ( properly ).
Please consider IE8 when fix this bug.
Thanks you very much.


Switch to regular context menu ?

Hello ! First of all thank you for your package ! It's a very nice one !
I'm killing myself to find a way to switch between a custom context menu using your package and the standard right click menu ... Is there a simple way to do it ? Thanks :)

Hello, if you want to destroy the context menu (go back to the standard menu), then just use the "destroy" method.
Example :
var contextMenu = $('#node')
  .nuContextMenu({
    // Options
  });

// Then destroy the menu, reverting to the standard menu
contextMenu.nuContextMenu('destroy');

Mmm this is so weird because I've already tried this in your demo.html and nothing happens :(

Okay, I figured out the problem. It should be working now.

Thanks ;)
Very good job, very reactive ! I tried to fix myself but was lost ...

Thank you.
The problem was that when I added support for dynamically created elements, I forgot to change the destroy method. Lol

ahah :+1:


updated cover page on dapr ebook

replaced new cover page for dapr ebook

Duplicate of https://github.com/dotnet/docs/pull/22873


State management: prototype granular stores

Our current state management package suffers from unnecessary derived store updates, which has numerous downstream performance impacts. It's described in "Problem 1" of https://github.com/rilldata/rill/issues/3960.
Rather than one monolithic store to hold dashboard state, we could split this up into more granular stores. We will prototype this approach for the filters state to assess its performance and ergonomics.

Calling this one done in favor of #4308 and #4309


model definition

I would like to fit a fully specified model. In lme I would write this as:
f = "choice ~ 1 + stimulus*reward + (1+stimulus*reward|subject_id)"`

In formulae this gives the following error:
import formulae as fm
fm.model_description(f)

    891                 return NotImplemented
    892         else:
--> 893             raise ValueError("LHS of group specific term cannot have more than one term.")
    894
    895     def __repr__(self):

The following does seem to work:
f = "choice ~ 1 + stimulus*reward + (1|subject_id) + (stimulus|subject_id) + (reward|subject_id) + (stimulus:reward|subject_id)"
fm.model_description(f)

Is this the syntax for a fully specified model in formulae? Output:
ModelTerms(
  ResponseTerm(
    Term(
      name= choice
      variable= choice
      kind= None
    )
  ),
  InterceptTerm(),
  Term(
    name= stimulus
    variable= stimulus
    kind= None
  ),
  Term(
    name= reward
    variable= reward
    kind= None
  ),
  InteractionTerm(
    name= stimulus:reward
    variables= {'stimulus', 'reward'}
  ),
  GroupSpecTerm(
    expr= InterceptTerm(),
    factor= Term(
      name= subject_id
      variable= subject_id
      kind= None
    )
  ),
  GroupSpecTerm(
    expr= Term(
      name= stimulus
      variable= stimulus
      kind= None
    ),
    factor= Term(
      name= subject_id
      variable= subject_id
      kind= None
    )
  ),
  GroupSpecTerm(
    expr= Term(
      name= reward
      variable= reward
      kind= None
    ),
    factor= Term(
      name= subject_id
      variable= subject_id
      kind= None
    )
  ),
  GroupSpecTerm(
    expr= InteractionTerm(
      name= stimulus:reward
      variables= {'stimulus', 'reward'}
    ),
    factor= Term(
      name= subject_id
      variable= subject_id
      kind= None
    )
  )
)

Ah, fitting the model, does not work and gives:
formula = "choice ~ 1 + stimulus*reward + (1|subject_id) + (stimulus|subject_id) + (reward|subject_id) + (stimulus:reward|subject_id)"
model_fitted = model.fit(formula=formula, family="bernoulli", draws=2000, target_accept=0.8)

    676                 string += f"{self.expr.name}|"
    677         else:
--> 678             raise ValueError("Invalid LHS expression for group specific term")
    679
    680         if isinstance(self.factor, Term):

ValueError: Invalid LHS expression for group specific term

Hi @jwdegee, thanks for opening this issue!
This problem should be partially solved if you install it from master branch now. The following example works on my computer
import bambi as bmb
import numpy as np
import pandas as pd

np.random.seed(1234)

data = pd.DataFrame({
    "choice": np.random.normal(size=20),
    "stimulus": np.concatenate(
            (
                np.repeat("A", 5),
                np.repeat("B", 5),
                np.repeat("A", 5),
                np.repeat("B", 5),
            )
        ),
    "reward": np.concatenate(
            (
                np.repeat("A", 5),
                np.repeat("A", 5),
                np.repeat("B", 5),
                np.repeat("B", 5),
            )
        ),
    "subject_id": np.arange(20)
})

f = "choice ~ stimulus * reward + (stimulus|subject_id) + (reward|subject_id) + (stimulus:reward|subject_id)"
model = bmb.Model(data)
fitted = model.fit(f)

Just note that it is not necessary to add the "1" before the common and group-specific terms since the intercept is added by default.
It is still not possible to use the * operator within group-specific terms, that's why I had to write the three terms separately. I'm going to track that issue in #11.
Just let me know if you need more help with this :)

This should work with f = "choice ~ stimulus * reward + (stimulus*reward|subject_id)" now since #12.
Please feel free to let me know if you have any problems with this on your side :+1:

That works! Thanks for the super fast fix and amazing package!

@jwdegee you may want to reinstall either from master or pip. I've found some bugs with the encoding when using categoric group-specific terms and they are fixed now.

ok will do thanks!