Libcrux optimize decap

In addition to Karthik's API improvements, this PR contains a few more goodies on top, notably:

generating code for all three variants of kyber, but in separate files
putting all of the shared code in a header where everything is marked as static inline
updated config.yaml for all of the above
addition of a few well-chosen type declarations to generate prettier C code

I think this would be worth merging now.
PR on the hacl-packages side forthcoming

This required quite a few changes in upstream Eurydice to support generating all variants all at once, but these have now been merged.

Looks like CI is failing all over the place.


BLE Adapter unauthorised in Docker Container

I am running node red in a docker container and when I start I get the following:
1 Dec 17:28:45 - [info] Starting flows
1 Dec 17:28:45 - [info] Started flows
noble warning: adapter state unauthorized, please run as root or with sudo
or see README for information on running without root/sudo:
https://github.com/sandeepmistry/noble#running-on-linux
1 Dec 17:28:45 - [info] [BLE scanner:1810f4b7.a85c7b] BLE state: unauthorized
1 Dec 17:28:46 - [info] [bmp180:BMP180 @ 0x77] BMP180 @ 0x77 ready.
1 Dec 17:28:46 - [info] Server now running at http://<IP_ADDRESS>:1880/
1 Dec 17:29:44 - [error] [BLE scanner:1810f4b7.a85c7b] Error scanning for devices: Error: Could not start scanning, state is unauthorized (not poweredOn)
I have tried to follow the running as user advice on the page but it does not work inside the container.
The Docker run command looks like this:
docker run -it --privileged -v node_red_data:/data --device /dev/i2c-1 --net=host --restart="always" --group-add 998 --name nodered nodered/node-red:1.2.0-10-arm32v6
Any help would be appreciated

I’ve solved forcing user “root” on the container instead of “node red” but I want to run the process without root account

Same issue for me without docker, even with the setcap command on node binary and node-pi binary (I have installed node-red with the raspberry bash script recommended)

May you forward the issue to @abandonware noble until upstream gives feedback at:
https://github.com/noble/noble/issues/656


Issue with infinite streaming errors DEADLINE_EXCEEDED after 1 minute

Hello,
I am having an issue with the infiniteStreaming.js example where after 1 minute of execution it errors with DEADLINE_EXCEEDED.  See screenshot below.  Since I had difficulties using the Sox microphone on Windows, I changed the infiniteStreaming.js code to stream a local WAV file to the Google engine.  The transcription from Google works great but only for 1 minute.  You can see in the console window that I display the start time and the time when it errors which is 1 min.

Here is the modified infiniteStreaming.js code, I simply commented out the recorder code and replaced it with fs.createReadStream

For the audio input file I created a new WAV file using the /resources/commercial_mono.wav file and repeated it several times to get 22 minutes of audio.
Any help would be greatly appreciated.
Thanks,
Dean
longaudiosample.zip

@callmehiphop I know you were helping folks earlier with a similar question related to long-lived requests on PubSub, is there a configuration setting that @dweberlj should be setting (or is this potentially a bug we should be addressing?)

@bcoe sounds like @dweberlj is hitting the pre-configured deadline, it would be great if gax allowed us to opt out of setting a deadline entirely, but since that isn't an option I think the best solution here would be to manually increase the deadline.
const stream = client.streamingRecognize(request, {
  timeout: 60000 * 5 // or longer if necessary..
});

I just ran into this issue today also. Given that the limit was changed to 5 mins for v1p1beta1 on June 18/2019 (see https://cloud.google.com/speech-to-text/docs/release-notes), is there a reason to not just change the value in the config file to 300000 (5 mins in milliseconds)?
I manually changed my local file and I can confirm that the infiniteStreaming.js example works as expected with that one change.

Those files are generated so any manual edits we make will just get reverted, we would need some one on the API team to chime in here.
I think we just need to make an amendment or two to the sample to make sure that the stream doesn't timeout like this.

I also confirmed that the streaming timeout limit is 5 min (305 seconds).  See below error message and stack dump.  I agree that the infiniteStreaming example should be amended to automatically restart the stream on the timeout, and ideally have the streamingRecognize() API modified to support long / unlimited streams.

As @callmehiphop suggested:

const stream = client.streamingRecognize(request, {
  timeout: 60000 * 5 // or longer if necessary..
});

Unfortunately, this didn't work out for me. Amending the original infiniteStreaming.js with this small change still gets me DEADLINE_EXCEEDED.

@callmehiphop I tried the same and it didn't work.
The only way to get past 1 minute is to update the @google-cloud\speech\src\v1p1beta1\speech_client_config.json timeout_millis values to (60000*5) for 5 minutes.
This is highly inadvisable and was only done to validate the limits in a test scenario.  I believe the only fix is up to the Google API team at this point.  Any suggestions would be greatly appreciated.

@callmehiphop @alexander-fenster @xiaozhenliu-gg5, I wonder if this might actually be a change in behavior when we moved from grpc to @grpc/grpc-js.
I believe the idea of the infinite streaming example is that, in application code, it times out requests before the gRPC timeout is raised, and then resumes where it's left off?
I think it might be worth confirming that this pattern works well with the existing gRPC transport libraries.

see: https://github.com/googleapis/nodejs-speech/issues/458

This issue may no longer be relevant so I am closing it. Please reopen if needed.


bump 3dt

add diagnostics job progress
https://github.com/dcos/3dt/pull/65

add 3dt config file and user input validation
https://github.com/dcos/3dt/pull/67

:ship:


[Internal Review][CL][GaugeDistribute] add functional test distributing coins using CLgauges

Closes: #XXX
What is the purpose of the change
TestFunctionalConcentratedLiquidityGaugeDistribute is a functional test that covers more complex scenarios relating to distributing incentives throught gauges
at the end of each epoch
we expect these events to occour at the end of each epoch.

mint and distribute coins according to the configuration
distribution happens proportional to the gauge weight in the record
moduleAccount holds the funds and handles distribution

Testing strategy:

Initialize variables.
Setup CL pool and gauge (gauge automatically gets created at the end of CL pool creation).
Update the gauge by adding rewards (should happen at end of each epoch).
get updated gauges and distribute the rewards that was added.
Check that incentive has been correctly created and gauge has been correctly updated.

Testing and Verifying
added functional test
Documentation and Release Note
n/a
Where is the change documented?
n/a

thank you @mattverse for the review!
holding off on this until we merge https://github.com/osmosis-labs/osmosis/pull/5459, so that we can functional test internal and external gauge

closing this in favor of https://github.com/osmosis-labs/osmosis/pull/5500


Problem installing flutter

Hello i have a big issue installing flutter i have the latest flutter version and it is Dart VM version: 2.6.0 "macos_x64" with macOs Catalina on mac book pro. The error is... ./flutter/.pub-cache/hosted/pub.dartlang.org/build_resolvers-1.0.6/lib/src/resolver.dart:9:8: Error: Error when reading '../flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-0.36.4/lib/src/dart/analysis/driver.dart': No such file or directory
import 'package:analyzer/src/dart/analysis/driver.dart' show AnalysisDriver;

I recommend asking about this in the Flutter repository.

Flutter packages Dart (and pub-cache) a little differently.  Please open the issue there if you are still having problems.  Thanks!


Add agent shell

This is a mere skeleton of the agent command

Authentication issue here. seems like its coming from OnTask. here are the possible issues that I formulated:

Not sure if the endpoint does not require session authentication instead of token authentication while I am providing a bearer token, the server may expect a session-based login, especially if it's a local development server with Django's default settings.
OnTask expects the token to be used with the Bearer schema. Although this is a common standard, some APIs may use a different method.
The token has the right permissions to access the /table/3/pmerge/  endpoint. The token might be valid but might not have the scope required for the requested operation.

INFO:root:Authenticated with Canvas successfully!
Starting to fetch data for course 396, quiz 391
Finished fetching data.
ERROR:root:Failed to merge OnTask table: 401, {"detail":"Authentication credentials were not provided."}
ERROR:root:Failed to update the OnTask table with data from Canvas.
INFO:root:Request to http://<IP_ADDRESS>:8000/table/3/merge with headers {'accept': 'application/json', 'Authorization': 'Bearer 96ceb3b04c66be6b1ba60aca9e7ac09fcc153509'} returned 401
ERROR:root:Error fetching OnTask data: 401, Response: {"detail":"Authentication credentials were not provided."}
ERROR:root:Error fetching OnTask data: 401, {"detail":"Authentication credentials were not provided."}
INFO:root:Data has changed. Proceeding with OnTask update.
ERROR:root:Failed to merge OnTask table: 401, {"detail":"Authentication credentials were not provided."}
ERROR:root:OnTask table update failed.
Agent operation completed.


sodium 0.5.3 incompatible

Mod Name
sodium
Mod Homepage
https://modrinth.com/mod/sodium/version/mc1.20.1-0.5.3
Describe the bug
crashes game
Steps to reproduce
No response
Logs
https://gist.github.com/Emil2010/1fbb0515553eb61233a6bf32f37c4c27
Additional context
No response

duplicate of https://github.com/Sinytra/Connector/issues/71

no, this is newer version of sodium

Sodium is not compatible, sorry. See the linked issue for details.


Element doesn't seem to work without --layout-fullbleed and --layout-vertical.

I tried using the element in my own app but had difficulty.  I bisected against the demo and found that if I don't add
:host {
  @apply(--layout-fullbleed);
  @apply(--layout-vertical);
}

to my element's CSS, the swipeable content doesn't display.  But if I add both of them, then it works great.  It would be great to either remove this requirement (i.e. by building it in somehow) or else document it more clearly.

this is because it sets position: relative on the pages, which removes them from the layout by default. the flex layout in this case just blows up the container element to fill the viewport at the expense of causing it to scroll internally which I think is extremely annoying and conflicts with the outer scrolling the polymer header requires to work properly. I'm trying to figure out a better way.
http://stackoverflow.com/questions/5369954/why-is-my-divs-height-zero
maybe use floating instead of abs positioning: http://stackoverflow.com/questions/13545947/position-absolute-and-parent-height


Better exceptions can be thrown by Vipr generated C# proxies

In a number of the call patterns, for example in CopyToSectionGroupAsync(String) (or any actions/functions), there's a Uri check that is followed by throwing a naked exception:
            Uri myUri = this.GetUrl();

            if (myUri == (Uri) null)

             throw new Exception("cannot find entity");
Could we throw a better exception than this? The expected catch block I'd have to write to catch and handle this exception would feel silly if I have to catch an Exception and then dispatch on the message.

Thanks for adding these issues Sridhar!!!
😃🎉💥

On May 12, 2015, at 3:14 PM, Sridhar Periyasamy<EMAIL_ADDRESS>wrote:
In a number of the call patterns, for example in CopyToSectionGroupAsync(String) (or any actions/functions), there's a Uri check that is followed by throwing a naked exception:
Uri myUri = this.GetUrl();
        if (myUri == (Uri) null)

         throw new Exception("cannot find entity");

Could we throw a better exception than this? The expected catch block I'd have to write to catch and handle this exception would feel silly if I have to catch an Exception and then dispatch on the message.
—
Reply to this email directly or view it on GitHub.


Is it possible to change the target location?

The target location by default is /Users/<your_user>/.cache/huggingface/hub/models--google--t5-v1_1-xxl/blobs
but is it actuallt possible to change it with arg parse?
Thanks!

it's the location in which huggingface saves its downloaded models. it has nothing to do with this repository and code, and it's also like the top hit when you google "huggingface + cache"
https://huggingface.co/docs/datasets/en/cache


fix: check that idp is like iss for allowed users

Did you opt for not implementing tests in the template? 😊
my tests: https://github.com/Intility/fastapi-azure-auth/blob/disallow_guest_users/tests/test_guest_user.py

Adding a test project to the template is a separate issue and should probably be done in another pr

Did you opt for not implementing tests in the template? 😊
my tests: https://github.com/Intility/fastapi-azure-auth/blob/disallow_guest_users/tests/test_guest_user.py

@h3rmanj I was wondering whether we should incorporate tests into the template. If the answer is yes, do you suggest creating a new project or simply a folder labeled 'tests'?

When we add it the structure should be something like;
src/[path/to/project]
tests/[path/to/project].Tests.[Integration|Unit]


[detect_parking-8] process has died [pid 19766, exit code 1, cmd /home/user11/catkin_ws/src/turtlebot3_autorace_2020/turtlebot3_autorace_parking/turtlebot3_autorace_parking_detect/nodes/detect_parking /detect/image_input:=/camera/image_compensated /detect/image_input/compressed:=/camera/image_compensated/compressed /detect/scan:=/scan /detect/image_output:=/detect/image_parking /detect/image_output/compressed:=/detect/image_parking/compressed __name:=detect_parking __log:=/home/user11/.ros/log/a39aa3ce-3523-11eb-80e3-e0d4e8f1883a/detect_parking-8.log]. log file: /home/user11/.ros/log/a39aa3ce-3523-11eb-80e3-e0d4e8f1883a/detect_parking-8*.log

請問為什麼原本執行成功,後面反而會發生這問題

Hello, I have the same problem, have you managed to find the solution

?

[image: image.png]
BENBEY-I @.***> 於 2022年6月3日 週五 下午3:54寫道：

Hello, I have the same problem, have you managed to find the solution
[image: Screenshot from 2022-06-02 18-02-07]
https://user-images.githubusercontent.com/105348283/171812531-873f5f4b-1222-4328-b2ec-8163e2e33a6a.png
?
—
Reply to this email directly, view it on GitHub
https://github.com/ROBOTIS-GIT/turtlebot3_autorace/issues/51#issuecomment-1145694737,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AR7QQVQ3GANBUHBTTE3PQSDVNG22HANCNFSM4UMBPKMA
.
You are receiving this because you authored the thread.Message ID:
@.***>

hi, i think the openCV wasn't installed,
this solved it
pip3 install opencv-contrib-python
pip3 install opencv-python
you can see the original answer I got in ROS ANSWER


Think about authorization system and ways to abide by rules of external systems (e.g. LMS and course membership)

It is very common for a university using Tobira to also have an LMS. In many cases, the LMS stores data like course membership (what student is signed up for which courses and what permissions they have within that course). The visibility of videos is tied to that data, e.g. some videos are only visible to users in that course. There are sometimes other factors deciding visibility, like scheduled videos (only being visible in a specific time period). Or videos that can only be seen after answering some quiz questions.
The LMS can of course perform arbitrary logic to decide whether a user is allowed to see a video. How to make the Opencast file-serving abide to that decision is currently discussed here. And of course, we can also talk about arbitrary external systems, not just LMS.
A common request is that Tobira copies that exact authorization scheme, i.e.: users can access a video if and only if the LMS would also have allowed that user to access it. Doing that is far from trivial!
What follows is some abstract rambling.

Encoding authorization logic in systems
As documented, Tobira does authorization exactly as Opencast does it: to check whether user U can perform action A on element E, we check whether the ACL for action A on element E overlaps the roles of user U (i.e. if there are any roles in common). Let's call this system the "role-overlap-system". The ACLs come from Opencast and the user roles from the Tobira auth integration (that the university provides).
Let's take a somewhat simple example: visibility based on course membership. For example, Stud.IP modifies Opencast events to add roles such as ROLE_COURSE_123_Learner for videos that all students from course 123 are allowed to watch. ROLE_COURSE_123_Instructor for those that only instructors of that course are allowed to watch. It does that in order to use LTI (setting the correct user roles) and let Opencast do the authorization. In case of Tobira, the auth integration could ask Stud.IP what courses a user is part of, and then pass the corresponding ROLE_COURSE* roles to Tobira. Tobira then just does the overlap check and everything works.
Note what we did here: we encoded the "course membership" logic inside the role-overlap-system. But of course that system is somewhat limited and and not all possible logic can be represented by it. The example "visible after answering a quiz question" probably also counts as encodable, as answering the question could just give the user an additional role ROLE_CLEVER_GIRL and the video could just have that role in its ACL.
But the "only make video visible in time period" example: the role-overlap-system is not powerful enough to encode that logic. Well, you might say: some system can just add/remove roles to the video's ACL at fixed points in time. Sure, there is sync delay here, but that's also the case for  "course membership" and "question answered". However, the timing example is still distinct IMO:

It's truly a new factor at play here. The passing of time does not intrinsically change anything about user roles nor about the event.
This is also shown by the fact that that external system needs to remember all roles it removed, in order to re-add them to the ACL later again.
Finally, if the external system goes down, this breaks down. In the course-membership and question-answered examples, if the external system LMS goes down, the course-membership and question-answered state cannot change! Thus, Tobira just evaluating its role-overlap-system is still completely correct.

If you'd argue that the timing-example is encodable in the role-overlap-system, then in fact everything is. Because your external system can just evaluate arbitrary logic, give every user just a single unique role, and populate videos' ACLs by all user roles that are allowed to see it. And do that every second to also cover the time aspect.
Why Tobira need's a system that can be evaluated locally
Being disappointed in the limitations of Tobira's system, one might say: why doesn't Tobira ask the external system every time it needs to answer an authorization question? Via API for example? The LMS would get the user and video ID and just replies "yes" or "no".
Because of speed essentially. Tobira needs to answer authorization questions a lot. Just visit its start page and for every video in every series on that page, Tobira needs to know whether the current user is allowed to see it. Asking the LMS every time (even using batching) would cause lots of stress on the LMS system and would notably increase delay and decrease responsiveness of Tobira. But it gets worse! Two examples:

When searching in Tobira, we use MeiliSearch. Of course, only search results that the user is allowed to see are shown. So we again, need to evaluate authorization for lots of videos, on every key stroke. But worse: we really want Meili to perform the authorization check for us! Our search page wants to show N items, so we request that many items from Meili. If we then filter for visibility in our backend code, we might end up with fewer than N items. So we have to request more from Meili again, potentially many many times.
The same with "my videos": a paginated long list of all videos that the user has write access to. Here, too, we don't want to evaluate the visibility in the backend code, but in the database directly.

In both cases we manage to make Meili/Postgres perform the check for us by using filter functionality they offer. In both cases it is absolutely infeasible to contact an external service to answer the authorization question. Also note that we are limited by what Postgres/Meili can do! Postgres is pretty powerful but for Meili, we are already constructing a query with as many "OR" terms as user roles, which seems a bit hacky. Some logic is just not expressible in Meilis query language. Technically we are not restricted by Meili/Postgres as we can still perform the check in the backend if it's fast enough. That would still be undesirable and slower due to the pagination issues mentioned.
Also remember that from the very beginning, a requirement of Tobira was to keep working even when all other system (except the file server) are down.
This should also make it clear why the solution we will come up with here won't work for Tobira.
So for Tobira to work fast and well, we need to be able to encode the authorization logic in a system that can ideally be evaluated by Meili and Postgres. Or at the very least locally in the backend. Further, it's probably useful to demand that the visibility question can be answered by only: data associated with user in question, data associated with the resource (e.g. video) in question, and some global factors. I.e. it does not depend on other resources or other users. Speaking very loosely, we want to only store O(|users| + |resources|) and not O(|users| * |resources|).
Use a more powerful system?
As said above, we are somewhat limited by Postgres and Meili. But we could still offer a more powerful system, e.g. by adding the time component. We could just decide a particular metadata field on events can be used to specify time periods in which the video is visible. While that would make our code more complicated, it's still possible to implement that. (Meili has no now(), but calling now() in backend code and passing it to Meili is absolutely good enough.)
Ideally (IMO), such a change should also happen in Opencast then, to keep Tobira's and Opencast's system the same.
Whether we should make the system more powerful depends on how many people are interested in it. At least the ETH mentioned time-based visibility a few times.

Oh and one other authorization feature often requested: protect videos with password. That's also not properly encodable inside the role-overlap-system. But here again, I think it would be beneficial if this information was encoded in the event itself, i.e. Opencast knowing about it.


Graceful reconnect when server closes the connection

Check to make sure socket is still open before attempting to read from it. This prevents the client from dumping fread() errors until the timeout is reached and the client reconnects.
Upon reconnection, the server will back up a few seconds and re-transmit some products so nothing should be missed.
I believe this also is a quick and dirty fix for #2 submitted by @theonemcdonald.

Thank you @kirkmawa !


Incorrect handle offset when moving column on Safari

On Safari, the handle to move columns has an offset, which increases the more you have horizontally scrolled (so not really visible when the table has not many columns)
The changes proposed compute differently the initial position of the handle for Safari only.

Leaving aside the question of whether this is the right approach (@c0bra would comment on that) I can say that we'd expect the commit history to be squashed before merging - it needs to be a single commit with a commit message that follows the standards in the contributing guide.

@PaulL1 @Cadrach I'd prefer that these commits be rebased into 1 so it's a clean merge.
Also, Cadrach you can rework your conditional to save a call to getBoundingClientRect() like so:
var elmLeft;
if (gridUtil.detectBrowser() === 'safari') {
  //Correction for Safari getBoundingClientRect,
  //which does not correctly compute when there is an horizontal scroll
  elmLeft = $elm[0].offsetLeft + $elm[0].offsetWidth - $elm[0].getBoundingClientRect().width;
}
else {
  elmLeft = $elm[0].getBoundingClientRect().left;
}

@c0bra Ok, I have implemented the rework. I have never done a rebase, can you give me some directions on how to proceed?

Rebase done (first time for me so please tell me if something is not correct)


Modulo (%) operator not supported anymore for Index since 0.15

In 0.14:
In [1]: pd.__version__
Out[1]: '0.14.1'

In [2]: intidx = pd.Index(range(10))

In [3]: intidx % 2
Out[3]: Int64Index([0, 1, 0, 1, 0, 1, 0, 1, 0, 1], dtype='int64')

now:
In [1]: pd.__version__
Out[1]: '0.15.2'

In [2]: intidx = pd.Index(range(10))

In [3]: intidx % 2
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-de0ac1282c31> in <module>()
----> 1 intidx % 2

TypeError: unsupported operand type(s) for %: 'Int64Index' and 'int'

changeover from ndarray did it.
really what should happen is NumericIndex get these special methods thru core/ops.py (like Series does now).

@jreback I've been looking into this, and into your suggestion, but the thing is that core/ops.py imports pandas.index, so NumericIndex cannot directly get these specials methods from ops.
I'll start with a simple PR with just the definition of NumericIndex.__mod__. That should do it.

this is quite straightforward, just update pandas/core/index.py/Index/_add_numeric_methods
the imports are not an issue

Straightforward indeed, thx!

closed by #12012


PublicKey.toString() inconsistent between key types

Meant to put this on a branch, but committed directly to main. Luckily, I created a test in the same commit so I think its fine: https://github.com/hashgraph/hedera-sdk-js/commit/fb4d375a153d274cc2a598f7d45e968bd30d2b8d


Borderline impossible to test

Poor design decisions in the repo makes it hard to write tests

Current singleton is a nightmare to test
A lot of commands make API calls (possibly https://github.com/manastech/webmock.cr)
Lots of places exit to return early which makes testing hard
Getting output and asserting on it is hard (see exit in point above)
Probably more

Likely want to see how https://github.com/crystal-lang/shards does testing

Closed with https://github.com/DanielGilchrist/tanda_cli/pull/146


renamed files meta_* to carl_*

Should we use a consistent naming pattern?
e.g., carl_.py or carl__env.py
Or fine for now?

I think we should. With or without env, what's your vote? I have a slight preference for without

I will use without


Cannot update package from private index

I have a pipfile, where i have added url to a private package repository. The package is updated and i wish to update in my local machine. But when i issue update command, the lock fails. Each time, I have to  delete and rebuild the lock, which in effect updates all other packages. This issue is not seen if I tend to update public packages.
>>> pipenv update my-private-package --index privateindex --verbose
Building requirements...
Resolving dependencies...
INFO:pipenv.patched.pip._internal.resolution.resolvelib.reporter:Reporter.starting()
INFO:pipenv.patched.pip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('my-private-package'), None)
CRITICAL:pipenv.patched.pip._internal.resolution.resolvelib.factory:Cannot install my-private-package because these package versions have conflicting dependencies.
INFO:pipenv.patched.pip._internal.resolution.resolvelib.factory:
The conflict is caused by:
    The user requested my-private-package
    The user requested (constraint) my-private-package
To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict
Traceback (most recent call last):
  File "/opt/homebrew/Cellar/pipenv/2023.11.15/libexec/lib/python3.12/site-packages/pipenv/patched/pip/_vendor/resolvelib/resolvers.py", line 397, in resolve
    self._add_to_criteria(self.state.criteria, r, parent=None)
  File "/opt/homebrew/Cellar/pipenv/2023.11.15/libexec/lib/python3.12/site-packages/pipenv/patched/pip/_vendor/resolvelib/resolvers.py", line 174, in _add_to_criteria
    raise RequirementsConflicted(criterion)
pipenv.patched.pip._vendor.resolvelib.resolvers.RequirementsConflicted: Requirements conflict: SpecifierRequirement('my-private-package')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/opt/homebrew/Cellar/pipenv/2023.11.15/libexec/lib/python3.12/site-packages/pipenv/patched/pip/_internal/resolution/resolvelib/resolver.py", line 95, in resolve
    result = self._result = resolver.resolve(
                            ^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/pipenv/2023.11.15/libexec/lib/python3.12/site-packages/pipenv/patched/pip/_vendor/resolvelib/resolvers.py", line 546, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/pipenv/2023.11.15/libexec/lib/python3.12/site-packages/pipenv/patched/pip/_vendor/resolvelib/resolvers.py", line 399, in resolve
    raise ResolutionImpossible(e.criterion.information)
pipenv.patched.pip._vendor.resolvelib.resolvers.ResolutionImpossible: [RequirementInformation(requirement=SpecifierRequirement('my-private-package'), parent=None)]
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/opt/homebrew/Cellar/pipenv/2023.11.15/libexec/lib/python3.12/site-packages/pipenv/utils/resolver.py", line 440, in resolve
    results = resolver.resolve(constraints, check_supported_wheels=False)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/pipenv/2023.11.15/libexec/lib/python3.12/site-packages/pipenv/patched/pip/_internal/resolution/resolvelib/resolver.py", line 104, in resolve
    raise error from e
pipenv.patched.pip._internal.exceptions.DistributionNotFound: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/opt/homebrew/Cellar/pipenv/2023.11.15/libexec/lib/python3.12/site-packages/pipenv/resolver.py", line 675, in <module>
    main()
  File "/opt/homebrew/Cellar/pipenv/2023.11.15/libexec/lib/python3.12/site-packages/pipenv/resolver.py", line 661, in main
    _main(
  File "/opt/homebrew/Cellar/pipenv/2023.11.15/libexec/lib/python3.12/site-packages/pipenv/resolver.py", line 645, in _main
    resolve_packages(
  File "/opt/homebrew/Cellar/pipenv/2023.11.15/libexec/lib/python3.12/site-packages/pipenv/resolver.py", line 612, in resolve_packages
    results, resolver = resolve(
                        ^^^^^^^^
  File "/opt/homebrew/Cellar/pipenv/2023.11.15/libexec/lib/python3.12/site-packages/pipenv/resolver.py", line 592, in resolve
    return resolve_deps(
           ^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/pipenv/2023.11.15/libexec/lib/python3.12/site-packages/pipenv/utils/resolver.py", line 908, in resolve_deps
    results, hashes, internal_resolver = actually_resolve_deps(
                                         ^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/pipenv/2023.11.15/libexec/lib/python3.12/site-packages/pipenv/utils/resolver.py", line 681, in actually_resolve_deps
    resolver.resolve()
  File "/opt/homebrew/Cellar/pipenv/2023.11.15/libexec/lib/python3.12/site-packages/pipenv/utils/resolver.py", line 442, in resolve
    raise ResolutionFailure(message=str(e))
pipenv.exceptions.ResolutionFailure: ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts
✘ Locking Failed!

This is my pipfile. (other packages are hidden)
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[[source]]
url = "${SECRET_URL}"
verify_ssl = true
name = "privateindex"

[packages]
....
my-private-package = {version = "*", index = "privateindex"}

[dev-packages]
...

[requires]
python_version = "3.11"

Same situation and problem here. Have to resort to a full lock (which works fine) and resetting every chunk except what I wanted to update.

Ah interesting, your issues relate to update/upgrade code path and not full lock.   We'll have to look into this further, but for me I fly out for work tomorrow so I won't have immediate time.

Please recheck with 2024.3.0


AA0228 Wrong Warning "The local method 'My-Event' is declared but never used."

Describe the bug
I get the warning

The local method 'My-Event' is declared but never used.

from the CodeCop although the method is used. I guess is does not get this right because of the quotes.
To Reproduce
pageextension 50100 CustomerListExt extends "Customer List"
{
    trigger OnOpenPage();
    begin
        "My-Event"(Rec);
    end;

    [IntegrationEvent(true, false)]
    local procedure "My-Event"(Customer: Record Customer)
    begin
    end;
}

Hi @qutreson, when will this get fixed?

Hi @DanielGoehler, I can reproduce this issue, but I cannot provide any ETA on when this will be addressed. As a mitigation, you can use rulesets to suppress this diagnostic in general or directives in order to suppress this specific instance

Hi @qutreson, when will this get fixed?

@PaulIvan can you provide an ETA on this fix?

related to "quoting" causing bugs:

https://github.com/microsoft/AL/issues/6207
https://github.com/microsoft/AL/issues/6662

Thanks for reporting this issue. Sorry we haven’t completed it yet, but we’ve had to prioritize elsewhere. We’re planning to give the CodeCop engine and its rules an overhaul in a future major release. Thanks for your patience.
Going forward we will not track progress on CodeCop issues here on GitHub. Hence, we are closing this issue.


Step out of organisation as guest page not providing the right information

The page says to go to "View account" and then to "Azure Portal". First "View account" does not exist only "My microsoft account" and that does not have a "Azure Portal". I am reporting this because I can't access Microsoft Teams anymore because I am still a guest in a team and that gives an error but I am unable to leave it.

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

ID: b448cfd0-b673-7d04-047b-71aa62bebc27
Version Independent ID: 75118bff-94de-c9f9-7666-d2a6f4253b11
Content: Leave an organization as a guest user - Azure Active Directory
Content Source: articles/active-directory/external-identities/leave-the-organization.md
Service: active-directory
Sub-service: b2b
GitHub Login: @msmimart
Microsoft Alias: mimart

@blauwepiet
Thanks for your feedback! We will investigate and update as appropriate.

@blauwepiet you need to go to portal.azure.com and select it from there.

Then you can select "Organizations" from the side bar.

Hope this helps! If you have further questions feel free to let me know or create a pull request.


Update previous PHP versions with Visual C++ installer dependencies

Following up on lukesampson/scoop#763 and lukesampson/scoop#766, this updates the previous PHP versions to use installers for their Visual C++ dependency, rather than direct downloading of DLLs.
(Sorry for the barrage of pull requests, just trying to get all this cleaned up)

Mixed up the repos while writing the commit message for https://github.com/ScoopInstaller/Versions/commit/b3618f3e9b2121b52ba67ba4c556ce47e0c27996
Actual issue https://github.com/ScoopInstaller/PHP/issues/8


Multicolor series on a polar chart

Demo: http://jsfiddle.net/av87r7uo/157/
Plugin should check if axes are radial and change paths accordingly.

Multicolor series module needs to be loaded after highcharts-more module is loaded.
Demo: http://jsfiddle.net/av87r7uo/163/
Related to Highcharts-#5293. When the issue will be fixed in Highcharts, the order of loading scripts should does not matter.


Add a notice calling for beta testers for the Pro API

@alan How's that?

Love this!

Looks good to me! What are your thoughts @greysteil ?

@greysteil was quicker than me!
FYI @petehamilton


How do I plot the success rate in tensorboard? [question]

I successfully implemented tensorboard in the code and now i want to log the success rate.

I'm working with the robotics environment.

Hello,
Please fill the issue template completely, a lot of context is missing...
But you have probably the answer in the documentation

I used the TensorboardCallback but I dont know how to get the value of the FetchReach-v1 environment without resetting it.
value = np.random.random()
        summary = tf.Summary(value=[tf.Summary.Value(tag='random_value', simple_value=value)])
        self.locals['writer'].add_summary(summary, self.num_timesteps)
        return True

How do I get the "done" value without resetting the environment?

I used the TensorboardCallback but I dont know how to get the value of the FetchReach-v1 environment without resetting it.

Again, some context is missing. I assume you are using HER. In that case, we already log the success rate using the logger. (it is available in the callback using self.logger) You can display that value using the "legacy" integration (cf doc).
A better method would be to use an EvalCallback and compute the success rate there.

Thank you very much 👍

Hello, I think I have the same problem. I'm also using HER, but I did not quite understand @araffin 's answer. How do I get the "done" value from the EvalCallback?

@DinisMoreira I am not sure why you would want to get "done" value from EvalCallback. EvalCallback itself does the evaluation after every Nth number of steps, and you do not need to worry about other things if it is evaluation performance you want.

Sorry, I'm still new to ML and navigating my way through. My end goal was to plot additional values in tensorboard, like some kind of "average success rate" from the last 100 episodes. I was trying yo make a Custom callback but I'm having some trouble regarding how to find out from the custom callback if the episode was successful or not

I recommend migrating to stable-baselines3 which has better support for setups like this (and more documentation on logging things to tensorboard). I have not used tensorboard myself, but it should already have "average reward" curve which tells you about the success rate.

I recommend migrating to stable-baselines3 which has better support for setups like this (and more documentation on logging things to tensorboard). I have not used tensorboard myself, but it should already have "average reward" curve which tells you about the success rate.

like some kind of "average success rate" from the last 100 episodes. I

This is done in SB3, both for training and EvalCallback: https://github.com/DLR-RM/stable-baselines3/blob/a038044d11d7d5e4676c512c1561e9d3d33d6713/stable_baselines3/common/callbacks.py#L415

Thank you so much!


Catch the incomplete/partial file download, when the internet connection is turned OFF in half way of downloading

I have tried to download the multiple image files from web server and it works fine. But, During downloading the images, i just turn off the internet connection and it doesn't showing the error. Instead, Partial/incomplete file is downloaded.
How could we catch these type of error?


Language server string autocomplete place undesired quotes

Godot version:
3.3
OS/device including version:
Ubuntu
Issue description:
When autocompleting strings, the language server puts undesired quotes.
Steps to reproduce:
See video
https://user-images.githubusercontent.com/1168582/116951932-b1376400-ac5f-11eb-9eb5-a3d940c7ef32.mp4
Minimal reproduction project:
Any GD script file

Same for built-in functions autocompletion:

I looked into this back in September 2020 after it was posted as an issue on the VS Code plugin repo. I didn't get very far with fixing it myself but my comment (though possibly somewhat out of date by now) might still provide some useful context for anyone looking to fix this bug https://github.com/godotengine/godot-vscode-plugin/issues/142#issuecomment-699625127

Can confirm using v3.5.stable.arch_linux and visual studio code (oss).

Can anyone point to the commit that apparently fixes this in 4.0?
I'm still experiencing this in the 3.x branch (ca823e16e423eb6917ee4752603785795c54fd51).

Can anyone point to the commit that apparently fixes this in 4.0?

I don't know. You could test the various 4.0 alphas and betas to check when this was fixed.

Still an issue in 4.0.2.stable I would like to help if there is still no solution

Alright, after doing some digging, I fixed the problem locally by changing
https://github.com/godotengine/godot/blob/e0e93ce094d19d132f34aa5c92e892524a8125c9/modules/gdscript/gdscript_editor.cpp#L2511
to
opt = opt.unquote();

I am very new to Godot (as in, I encountered this bug while following a crash course tutorial and it annoyed me enough to try to contribute) but I can't wrap my head around why "quote_style" needs to be added in this context.
I recognize that my solution isn't the kosher solution, but I am sure the ideal way to fix this issue is to update the lsp::CompletionItem fields label and insertText separately.
https://user-images.githubusercontent.com/58610593/234535106-23feb08b-d7d7-4128-9c98-712acae0ad71.mp4

I have a potential fix for this issue:
https://github.com/godotengine/godot/assets/86135470/d9a01487-a5d6-4e5d-8172-62c8a9e9ea73
I'm new to Godot and C++, but after poking around the code base a bit, I was able to get it working by making two changes:

CompletionParams has a new context member. It provided an implementation for load() to include that data, but not one for to_json(). So context was missing from the JSON and there's already code in GDScriptTextDocument::resolve() that depends on that. I added context to the JSON so it can be used in resolve() in this commit.
Now that resolve() has the context, the current bug can be fixed. If the completion was triggered with a single or double quote,  then there's already a quote (or a pair of quotes) in the external editor. The auto-complete suggestion should be returned without quotes. Here's the commit with the change.

Both changes are in language server classes, so this change should not break the built-in editor. I did a quick test to confirm that still returns quotes.
Again, I'm new to Godot and C++, so if I'm overlooking something obvious, please let me know and I'll try to fix it.

This issue still happens in certain situations
2023-12-16 19-41-00.webm

i've had this issue like a gremlin really so long is it not still found? every now and again the editor autotypes everything quotes and i have to reboot... i'm now in v4.2.1!

@RichardEllicott Please continue the discussion in https://github.com/godotengine/godot/issues/86488.


[BUG - Release] Tales of Arise: Failed to find GUObjectArray, FName::FName, crash when using custom AOBs

Branch or Release
v3.0.1
Game and Engine Version
Tales of Arise 2023-12 update, UE 4.20
Describe the bug
Log file fills up with scan attempts, seems to keep failing with Failed to find GUObjectArray & Failed to find FName::FName(wchar_t*)
Game launches but UE4SS isn't active.
I tried creating LUA files to find those signatures, but with these I get a fatal error, and UE4SS.log mentions that Lua script 'FName_Constructor.lua' did not return a valid address for FName::FName.
In the game EXE it looks like most FName uses are calling straight into some internal ctor that has 6 arguments, pattern below should be matching a 3 arg (thisptr / char* / flags) func, which then just calls into the 6 arg func - seems to match both char* and wchar_t* versions, not really sure why it's not working here.
FName_Constructor.lua:
function Register()
    return "40 53 48 83 EC 30 48 8B D9 48 85 D2 74 ?? 45 8B C8 C7 44 24 28 FF FF FF FF"
end

function OnMatchFound(MatchAddress)
    return MatchAddress
end

GUObjectArray.lua:
function Register()
    return "CC 4C 8B C9 4C 8D 15 ?? ?? ?? ?? 4C 89 11 45 84 C0"
end

function OnMatchFound(MatchAddress)
    local LeaInstr = MatchAddress + 0x4
    local NextInstr = LeaInstr + 0x7
    local Offset = LeaInstr + 0x3
    local AddressLoaded = NextInstr + DerefToInt32(Offset)
    return AddressLoaded
end

You should share the log file.
It's normal that there's lots of spam about AOBs not being found, it's continuously scanning an reporting the status.
You need to look at the very bottom of the file to see if FName::FName and GUObjectArray were eventually found.

Seems to go up to attempt 193 but then times out :(
UE4SS.log

I think this has to do with BPModLoaderMod.
Can you set BPModLoaderMod to 0 in mods.txt and see if the problem goes away ?

Do you have a .dmp file in the same directory that has UE4SS.log ?

No luck changing mods.txt, no dmp file either - I can get VS to create one but it ends up at 4GB+ :/

The size of the dmp file is fine if you can upload it somewhere other than GitHub because GitHub probably doesn't allow files that large to be uploaded in an issue.
It's large because it contains the full memory of the program, and that can help immensely when debugging.
If you can't upload it anywhere, there should be an option somewhere to not dump the full memory, something like "Minidump" vs "Minidump with heap" and that should bring the size down enough to be uploaded directly to GitHub.

Oh I just noticed there is a UE4Minidump created in games appdata folder, seems to show the same call stack as above:
TalesOfAriseMinidump.zip
Pretty small though, if that's missing anything let me know and I'll try making it with VS instead.

Oh I just noticed there is a UE4Minidump created in games appdata folder, loading it in VS seems to show same call stack as above (once I point it to the UE4SS.dll/pdb, this was with zDEV-UE4SS_v3.0.1.zip): TalesOfAriseMinidump.zip Pretty small though, if that's missing anything let me know and I'll try making it with VS instead.

Typically a .dmp file only needs UE4SS.dll/pdb and it will load properly but with these UE4Minidump files won't load properly for me, there are always missing call-stack frames because of missing binary files, the entire call-stack is hidden.
Try make one with VS.
If you want to save time (if your internet is bad) you can try a small one (no memory/heap dump) first so that I can see if it will have the same problem as the UE4Minidump.

Ah too bad, well this time VS dump came in at 1GB, hopefully can be of more use: https://www.mediafire.com/file/1f11io9wcmmnqg1/Tales_of_Arise_withHeap.7z/file

According to your dump, the parameters passed to HookedLoadMap are incorrect or corrupt or something.
Can you check if this version of UE4SS works ? https://github.com/UE4SS-RE/RE-UE4SS/releases/download/experimental/zDEV-UE4SS_v2.5.2-594-gc053439.zip
You'll need to either copy the BPModLoaderMod as well from that zip or turn that mod off.

Steam ver seems to start up fine with that build + the LUAs, and UE4SS is active, without the LUAs it fails to find GUObject/FName as before.
With game pass it doesn't fatal error any more, but UE4SS doesn't load in, log has a pretty weird error:
[18:34:00] PS Scan attempt 1
[18:34:00] [PS] Reading image
[18:34:00] [PS] Starting scan
[18:34:00] [PS] Scan finished in 237.7745ms
[18:34:00] [PS] Found GUObjectArray: 0x7ff7b265fb30
[18:34:00] [PS] Found GMalloc: 0x7ff7b2cde580
[18:34:00] [PS] Found FName::ToString: 0x7ff7b019f4c0
[18:34:00] [PS] Found FName::FName(wchar_t*): 0x7ff7ae842330
[18:34:00] [PS] Found StaticConstructObject_Internal: 0x7ff7aea4e780
[18:34:00] [PS] Found FText::FText(FString&&): 0x7ff7ae76c1f0
[18:34:00] PS scan successful
[18:34:00] Running first pass of Lua override scans
[18:34:00] Lua Scan attempt 1
[18:34:00] Fatal Error: [SinglePassScanner::start_scan] Could not merge containers. Either there were not containers to merge or there was an internal error.

The LoadMap function is a virtual function in UEngine, and it's likely that the vtable in this game is different than the default vtable for 4.20, and since we use the UEngine vtable to locate LoadMap, we're likely finding the wrong function.
Can you check if UE4SS detects 4.20 as the version on its own without setting it in the ini file ?
If it doesn't, that might be the problem and manually setting it to 4.20 should fix it.
If it does, then you'll most likely have to reverse engineer the vtable for UEngine and supply a VTableLayout.ini file with a fixed vtable for UEngine.
It might be worth it to look at what the ASM for LoadMap looks like in default 4.20 first and compare it to whatever UE4SS thinks is LoadMap to confirm that it finds the wrong function.
That file can be found in https://github.com/UE4SS-RE/RE-UE4SS/tree/main/assets/VTableLayoutTemplates and you'll need to choose the version closest to your game and then rename the file to VTableLayout.ini and put it next to UE4SS.dll.
Also it looks like we're missing UEngine in our VTableLayout files.
That means we'll have to regenerate with UVTD and update the files at the link above and this might take a while because I'm not able to do it currently so someone else might have to do it.

Actually, I figured out how to generate the files and they are available here for now: https://github.com/UE4SS-RE/RE-UE4SS/tree/vtabletemplate-update-missing-5.1/assets/VTableLayoutTemplates

With Steam it seems to detect as 4.20 without adding that to INI, but with game pass that scan seems to fail and I had to add to INI instead.
Thanks for the tip with VTableLayout and the updated INI, just tried adding a single func above LoadMap there and seems like Steam ver is loading in fine with 3.0.1 now 🐱
I can't be sure where they might have added the extra func though, do you know if there's likely to be other funcs used from the vtable too which might break, or is it only really used for getting LoadMap?

I can't be sure where they might have added the extra func though, do you know if there's likely to be other funcs used from the vtable too which might break, or is it only really used for getting LoadMap?

We only use the UEngine vtable for LoadMap currently.
We know from your testing that there's one extra function somewhere either in the UEngine vtable or the UObject vtable and since we use the UObject vtable to find ProcessEvent and nothing else appears to be broken, we can be fairly sure that it's the UEngine vtable that's been changed.
The only way to narrow down exactly where in the vtable they added a new function is to look at each and every function before LoadMap and see if they match the ASM of what the function is supposed to be, but considering what I just said above, it would be a waste to do this now.

Oh and in case you're wondering why the other build that I linked works, it's because it's an older version from before we added support for LoadMap hooking.

An alternative fix if you don't need access to LoadMap (meaning BP mods won't load) is to set HookLoadMap to 0 in UE4SS-settings.ini.
It's not in the file right now but you can just add HookLoadMap = 0 under the [Hooks] section.


Is it possible to export the annotations done with SAM in YOLO format?

Actions before raising this issue

[X] I searched the existing issues and did not find anything similar.
[X] I read/searched the docs

Steps to Reproduce

I have installed SAM in CVAT and annotate the images as can it be seen in the following picture as an example.

After annotating all the images, I want to obtain the bounding box produced by the mask obtained by the SAM AI Tool.

Therefore, we have decided to export the annotations of the task in YOLO format.

Expected Behavior
It was expected that the downloaded .txt files would contain, for each image, the corresponding bounding boxes of the annotated objects. However, all the .txt file associated for the images are empty.
In the following picture, it can be seen that all .txt files are empty. The selected .txt file is the one that should contain the bounding box information for the tram, as presented in the "Steps to Reproduce" section.

Possible Solution
I have been reading about this issue and may be the problem  is that SAM does not allow to export the annotations directly in YOLO format. Therefore, should I need to use an intermediate code to get the bounding boxes of the mask?
Context
No response
Environment
No response

@frl93
SAM produces masks, polygons. YOLO does not support masks/polygons => files are empty.
There is not implicit cast when exporting annotations. So, right now it is not possible to get YOLO annotations from SAM out of the box.
But you can export another format and convert it to YOLO with a script. There is a patch to support bounding boxes output from SAM in CVAT, but I didn't have time yet to finish it #6665

Hi @bsekachev!
After reading about the issue, I have seen that the only way to obtain the bounding boxes is to follow your advice. Thus, I have to get the mask obtained through SAM and then, use and script to obtain the bouding box.
However, this proceses has a big trouble that I don`t know how to solve it. I am going to present the issue through three different examples and may be somebody can help me.
Example 1: I have just a mask in the picture. Therefore, I can Identify the contour and get the bounding box for that element

Example 2: I have different masks in the picture which are from different categories. Thanks to the colours and the well difined contour of each image, I am able to obtain not only which is the bounding box, but also which is the category for that mask.

Example 3:  I have different masks in the picture which are from different categories. In this case masks of same or different categories are overlapped in the image. Therefore, I am not able to assign a bounding box for each of the elements in the image.

Hi once again @bsekachev.
I have been checking both possibilities. As you can see in the following pictures, for CVAT works fine, but not for COCO. Do you know which is the reason?
CVAT format works as you have said. Do you know any application, tool or script that changes from CVAT format and returns the bounding boxes in YOLO format?

COCO format does not have any information about the bounding box

It is true that in CVAT format the "ID" for the picture is 13, whereas in the COCO format is 14. However, you can check that the name of the picture is the same.

You are right @bsekachev . The bounding box annotation for each image that contains at least one object apprears after the images list.
The last question is: Does exist any code which makes possible to change from  CVAT or COCO formats to the desired YOLO format?

I am not sure about such code. I believe you may find ready COCO parser

Thanks for you advice @bsekachev. I have been analysing different scripts to transform CVAT or COCO format into YOLO format, but I have realized that there is a problem or may be I am no table to understand properly the exported information from CVAT application.
If you checked our previous comments, you will see that the bounding boxes coordinates for CVAT and COCO formats are the same.  However, I have been checking different web pages and I concluded that the way for expressing the bounding box coordinates is different.
For CVAT format, I have examined these web pages, where it is explained that CVAT format follows this bounding box coordinates annotation (x_top_left, y_top_left, x_bottom_right, y_bottom_right). https://ms-neerajkrishna.medium.com/sure-the-labelling-is-done-with-the-cvat-tool-and-the-annotations-are-exported-to-the-xml-format-998af628e6ee#:~:text=Each box object has a,y_top_left%2C x_bottom_right%2C y_bottom_right]. and https://github.com/wingedrasengan927/pytorch-tutorials/blob/master/Object Detection/data/annotations.xml.
For COCO format, I have examined these web pages, where it is explained that COCO format follows this bounding box coordinates annotation (x_min, y_min, width, height). https://albumentations.ai/docs/getting_started/bounding_boxes_augmentation/#:~:text=In coco %2C a bounding box,height of the bounding box.
Therefore, if the annotation of the bounding boxes coordinates is different in CVAT and COCO formats, how is it possible to appear same numbers in the exportations files? Are the bounding boxes annotations correct in CVAT or in COCO format?

you can export it as COCO format, and then use this script to convert COCO into YOLO.

you can export it as COCO format, and then use this script to convert COCO into YOLO.

which script exactly you mean please

you can export it as COCO format, and then use this script to convert COCO into YOLO.

which script in the link you mean exactly. do you have an example please?


Added User Guide and Tooltip

Resolved Issue No. https://github.com/Neel-07/Temperature-Converter/issues/11
Enhancements:

Added Tour Guide
Added Tooltip on Input Fields

@amitesh-183, do add a screenshot showcasing the section.

@amitesh-183, do add a screenshot showcasing the section.


2 tests failed. diff:diff across DST (2246.17) diff:diff across DST (2246.19)

Client info
Date String   : Mon Apr 18 2016 10:25:03 GMT+0300 (Jerusalem Daylight Time)
Locale String : 4/18/2016, 10:25:03 AM
Offset        : -120
User Agent    : Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36

====
diff:diff across DST (2246.17)
month diff across DST, lower bound
// Expected true
// Actual   false
false === true

====
diff:diff across DST (2246.19)
year diff across DST, lower bound
// Expected true
// Actual   false
false === true

Tracked by #3021


$(AspNetCoreVersion) not updated after preview7 install

When doing a clean checkout, after I installed preview7, I get the following error when building BlazzingPizza.Client project because $(AspNetCoreVersion) looks to still be pointing to preview6 (from VS Solution Explorer Dependencies).

obj\Debug\netstandard2.0\Razor\Shared\ConfigurePizzaDialog.razor.g.cs(126,21): error CS1061: 'RenderTreeBuilder' does not contain a definition for 'SetUpdatesAttributeName' and no accessible extension method 'SetUpdatesAttributeName' accepting a first argument of type 'RenderTreeBuilder' could be found (are you missing a using directive or an assembly reference?)

dotnet --list-sdks:
2.1.700 [C:\Program Files\dotnet\sdk]
2.1.701 [C:\Program Files\dotnet\sdk]
2.1.800 [C:\Program Files\dotnet\sdk]
2.1.801 [C:\Program Files\dotnet\sdk]
3.0.100-preview7-012821 [C:\Program Files\dotnet\sdk]
Had to explicitly specify the version number instead of using $(AspNetCoreVersion) in the .csproj to make the project build successfully:
From:
 <ItemGroup>     <PackageReference Include="Microsoft.AspNetCore.Blazor" Version="$(AspNetCoreVersion)" />     <PackageReference Include="Microsoft.AspNetCore.Blazor.Build" Version="$(AspNetCoreVersion)" PrivateAssets="all" />       </ItemGroup>
To:
<ItemGroup>      <PackageReference Include="Microsoft.AspNetCore.Blazor" Version="3.0.0-preview7.19365.7" />      <PackageReference Include="Microsoft.AspNetCore.Blazor.Build" Version="3.0.0-preview7.19365.7" PrivateAssets="all" />        </ItemGroup>

Nice catch! Solved my issues.

This  also solved my issue that manifested as an error:
EXEC : error : Could not load type 'System.Text.Json.Serialization.JsonSerializerOptions' from assembly 'System.Text.Json, Version=<IP_ADDRESS>,
It seems that $(AspNetCoreVersion) should be controlled through Directory.Build.props in the root of this repo. However it is unclear to me which versions should be put there.
Setting it to "3.0.0-preview7.19365.7" result in yet another build failure.


Presentation Submission Blob Decoding

Add language talking about how to decode JWTs, Base64, etc. upon their encounter within the Presentation Submission. Is this normative or non-normative, and why?

Dupe of https://github.com/decentralized-identity/presentation-exchange/issues/15


PG::ConnectionBad: connection is closed after upgrading to rails 5.2

I have update rails version of my project form 4.2 to 5.2. Now I am getting following error on some of my tests randomly.
Counters::DefectDistributionContext execute group by defect should group counters by defect        Failure/Error: DatabaseCleaner[:active_record].clean_with(:truncation)
   `ActiveRecord::StatementInvalid:
     PG::ConnectionBad: connection is closed: TRUNCATE TABLE "public"."alerts", "public"."gv_sub_equipments", "public"."machine_part_changes", "public"."settings", "public"."article_attachments", "public"."systematic_reject_machines", "public"."furnaces", "public"."attachments", "public"."defect_translations", "public"."gv_equipment_families", "public"."gv_equipments", "public"."gv_squads", "public"."article_check_specification_tolerances", "public"."gv_area_equipments", "public"."gv_areas", "public"."machine_downtimes", "public"."machine_groups", "public"."article_machine_part_settings", "public"."checks", "public"."comments", "public"."counters", "public"."customers", "public"."defect_groups", "public"."defects", "public"."delayed_jobs", "public"."job_specifications", "public"."machine_part_change_reasons", "public"."machine_part_translations", "public"."machine_parts", "public"."machine_type_group_machine_types", "public"."machine_type_groups", "public"."machine_types", "public"."messages", "public"."check_specification_priorities", "public"."check_specification_responsibility_areas", "public"."responsibility_areas", "public"."check_specification_machine_types", "public"."gv_components", "public"."gv_entries", "public"."gv_stop_reasons", "public"."gv_sub_equipment_components", "public"."jobs", "public"."lab_recipe_versions", "public"."lab_recipes", "public"."lines", "public"."mold_sets", "public"."check_groups", "public"."check_specifications", "public"."articles", "public"."packing_schemes", "public"."rails_admin_settings", "public"."check_batches", "public"."reasons", "public"."rejects", "public"."roles", "public"."shift_definitions", "public"."shifts", "public"."system_log_entries", "public"."task_status_changes", "public"."tasks", "public"."tresholds", "public"."user_responsibility_areas", "public"."users", "public"."users_roles", "public"."workstations", "public"."machines", "public"."systematic_rejects" RESTART IDENTITY CASCADE`

What should I do to fix this?

Well try setting reaping_frequency: 0 for the test DB in database.yml (DON'T do this for Rails < 5.2 or you will see very degraded performance due to the reaper running on a loop). I think it might have the same cause as https://github.com/DatabaseCleaner/database_cleaner/issues/564

@Dantemss Thank you so much for this fix! Saved my life!


UI: don't allow to add an empty ldap forest entry

The LDAP hostname has to be set -- we cannot be adding a new forest
entry without an LDAP hostname to the set of existing LDAP hosts.
https://bugzilla.redhat.com/show_bug.cgi?id=1177015

Verified fix.


Switch to Miniforge and drop Mambaforge

Description
CI runs are failing on the main branch and on recent PRs due to problems with setting miniconda up, this PR should fix the problem.
More descriptions here: https://conda-forge.org/news/2024/07/29/sunsetting-mambaforge/
Changes made

Bumped to actions/checkout@v4 and setup/miniconda@v3
Switched to Miniforge since the installer is identical

Additional information
I feel adding a Dependabot file for GitHub Actions, and pinning the actions to their hashes would make sense as well, even if we set the update schedule to monthly.

This is a maintenance PR and not user-facing, so I'll go ahead and merge, thanks!


TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/31717

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/66840


[RTL] Rewrite remove_paragraph code.

Fixes https://github.com/godotengine/godot/issues/85096

Thanks!


KeyCloak Upgrade (7.3 -> 7.4)

Test and upgrade to RH SSO v7.4: https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.4/html-single/release_notes/index

Security advisory out for keycloak/RH SSO:
https://access.redhat.com/errata/RHSA-2020:2814
https://access.redhat.com/errata/RHSA-2020:2816

@ShellyXueHan once your internal testing is done, a friendly reminder to include IDIM as it relates to configs for new clients


Proposal: useNavigationEffect() hook

In addition to useNavigationEvents(handler), I propose two useNavigationEffect(handler)hooks, that look and feel similar to the official react useEffect(handler):
useNavigationEffectInsideTransition(() => {
    console.log('screen component did focus');
    return function cleanup() {
      console.log('screen component will blur');
    };
  });

and
useNavigationEffectOutsideTransition(() => {
    console.log('screen component will focus');
    return function cleanup() {
      console.log('screen component did blur');
    };
  });

As with the useEffect(handler) hook, the return of a cleanup function is optional.
To be honest the main problem is naming the two hooks to clarify if the effect is called inside the transitions or outside. Any alternative naming proposals are appreciated.
In my opinion these hooks would be much more intuitive, since people will be familiar with the useEffect(handler) hook.
Are there any common use cases that require the combination of
willFocus & willBlur or didFocus & didBlur
instead of
willFocus & didBlur or didFocus & willBlur?
What are your thoughts on this?

We have a useFocusEffect hook in React Navigation 5 which I think is similar to what's proposed here: https://reactnavigation.org/docs/en/next/use-focus-effect.html
The hooks mentioned for event listeners are quite different imo, and solve a different use case. The use cases for useFocusEffect are more about managing subscriptions (such as adding a listener for back button, connecting to socket only when the screen is active etc.) rather than doing a one-off task on an event.
While this use case can be achieved with events (similar to how same thing as useEffect can be done with lifecycle events), they aren't the right primitive for this use case. To achieve similar behaviour of running something on focus, then cleaning up on blur/unmount, the user will need to keep a reference to to the subscription, make sure the effect re-runs when a dependency changes etc, which is cumbersome.

useFocusEffect is being implemented here: https://github.com/react-navigation/hooks/pull/43 and it's going to be quite similar to the same hook on v5, to ensure smooth library upgrade.
In my app I'm using something like this also to ensure not showing some expensive comps until transition completes, does this makes sense to you ?
export const useIsFocusedLazy = () => {
  const isFocused = useIsFocused();
  const [isFocusedLazy, setFocusedLazy] = useState(isFocused);
  useEffect(() => {
    let cancelled = false;
    if (isFocused) {
      InteractionManager.runAfterInteractions(() => {
        if (!cancelled) {
          setFocusedLazy(true);
        }
      });
    } else {
      InteractionManager.runAfterInteractions(() => {
        if (!cancelled) {
          setFocusedLazy(false);
        }
      });
    }
    return () => {
      cancelled = true;
    };
  }, [isFocused]);

  return isFocusedLazy;
};

You can cancel the InteractionManager directly without having a cancelled property.
export const useIsFocusedLazy = () => {
  const isFocused = useIsFocused();
  const [isFocusedLazy, setFocusedLazy] = useState(isFocused);

  useEffect(() => {
    const delayedCallback = InteractionManager.runAfterInteractions(() => {
      setFocusedLazy(isFocused);
    });

    return delayedCallback.cancel;
  }, [isFocused]);

  return isFocusedLazy;
};

IMO no need to keep it in the core.

Ah thanks, totally missed that, last time I read the types I thought it was returning a promise

https://github.com/react-navigation/hooks#usefocuseffectcallback


IGAPP-602: Setup basic ts project web

This pull request belongs to an issue on our bugtracker.
You can find it there by looking for an issue with the key which is mentioned in the title of this pull request.
It starts with the keyword IGAPP.

I already copied the www package so the fonts mentioned in index.ejs could be found without any issues
I could not import the build config yet, as the files do not compile on this branch. I think it makes sense to first do IGAPP-597 before adding them to the webpack.config.js

Before I start reviewing this, should we base this on main?

Hmm. Not Sure about that as it seems the build config files already have a *.ts ending, but don't compile. This would definitely create issue with the ci. Or did you mean changing the base branch to Main without any change from web-ts-init?

I think the latter, otherwise reviewing is quite hard if you don't remember what we were doing on the conference already here.

I think the latter, otherwise reviewing is quite hard if you don't remember what we were doing on the conference already here.

Should web-ts-init also be merged? Should we open a PR for it?

I'd just review it together as web-ts-init is really WIP and not finished (or rather: finished by this branch/PR). So I think we should just review and merge it together in this PR.

Some files have been autogenerated by create-react-app I guess. Should I remove them or keep them for now?

Some files have been autogenerated by create-react-app (README.md, App.css, ...) I guess. Should I remove them or keep them for now?
Furthermore I recommend checking this branch out and clicking around. A lot of the changes still encompass the www folder

I think you could remove those files, less to review for us and less changes at a later point.

:tada: :tada:


Update PostCSS to 6.x

Fixed #30

This project still gets 30k weekly downloads. I think we should start merging things like this, just to keep the project up to date.

I will release bump to PostCSS 7 when I will get npm access


Update esp_http_client.c (IDFGH-6083)

When the location field contains data, the "Location:" header from a redirect is simply appended to its end.
This results in concatenated URLs like http://www.blabla.com?anythinghttp://the.redirected.url/and_so_on
That's bad. Is it safe to erase the location field in advance? In my code, this works just fine.
I'm just not sure of side effects.

@winzkigermany Sorry for late reply. Could you please help verify following change.
--- a/components/esp_http_client/esp_http_client.c
+++ b/components/esp_http_client/esp_http_client.c
@@ -203,7 +203,23 @@ static int http_on_status(http_parser *parser, const char *at, size_t length)
 static int http_on_header_event(esp_http_client_handle_t client)
 {
     if (client->current_header_key != NULL && client->current_header_value != NULL) {
+        if (strcasecmp(client->current_header_key, "Location") == 0) {
+            if (client->location) {
+                free(client->location);
+                client->location = NULL;
+            }
+            client->location = strdup(client->current_header_value);
+        } else if (strcasecmp(client->current_header_key, "Transfer-Encoding") == 0
+               && memcmp(client->current_header_value, "chunked", strlen(client->current_header_value)) == 0) {
+            client->response->is_chunked = true;
+        } else if (strcasecmp(client->current_header_key, "WWW-Authenticate") == 0) {
+            if (client->auth_header) {
+                free(client->auth_header);
+                client->auth_header = NULL;
+            }
+            client->auth_header = strdup(client->current_header_value);
+        }
         ESP_LOGD(TAG, "HEADER=%s:%s", client->current_header_key, client->current_header_value);
         client->event.header_key = client->current_header_key;
         client->event.header_value = client->current_header_value;
         http_dispatch_event(client, HTTP_EVENT_ON_HEADER, NULL, 0);
@@ -230,14 +246,6 @@ static int http_on_header_value(http_parser *parser, const char *at, size_t leng
     if (client->current_header_key == NULL) {
         return 0;
     }
-    if (strcasecmp(client->current_header_key, "Location") == 0) {
-        http_utils_append_string(&client->location, at, length);
-    } else if (strcasecmp(client->current_header_key, "Transfer-Encoding") == 0
-               && memcmp(at, "chunked", length) == 0) {
-        client->response->is_chunked = true;
-    } else if (strcasecmp(client->current_header_key, "WWW-Authenticate") == 0) {
-        http_utils_append_string(&client->auth_header, at, length);
-    }
     http_utils_append_string(&client->current_header_value, at, length);
     return 0;
 }

@winzkigermany Thanks for your contribution, would you please share if any updates regarding https://github.com/espressif/esp-idf/pull/7764#issuecomment-957042928? Thanks.

This issue is fixed with PR #8564. Closing this PR.


[Bug] 使用自定义视频数据集进行微调

Checklist

[X] 1. I have searched related issues but cannot get the expected help.
[X] 2. The bug has not been fixed in the latest version.
[ ] 3. Please note that if the bug-related issue you submitted lacks corresponding environment info and a minimal reproducible demo, it will be challenging for us to reproduce and resolve the issue, reducing the likelihood of receiving feedback.

Describe the bug
internvl_chat_finetune.py微调代码中，在视频读取的时候，由于没有petrel_client，实际上传入的tcs_loader是None
Reproduction
如下。推理代码用的decord的VideoReader抽帧，为什么在这里不继续使用了呢？
图1

图2

图3

图4

Environment
123

Error traceback
No response

I also encountered the same problem...


None X button

Hi!
I use this library, but i don't see X icon to close CustomPrompt.

+1 same probleme


Implement CatalogMetadata API to expose FBC content

Implemented the new CatalogMetadata API to consolidate the Package/BundleMetadata APIs to a single CatalogMetadata API, that contains the schemas in it's spec field.

Package/BundleMetadata APIs remain unaffected in this PR so as to not break operator-controller

Issue: https://github.com/operator-framework/catalogd/issues/38

/hold
will be modifying this PR to be behind a feature gate

/hold remove

/unhold


Added iPass 2.7.1 recipe.

After making all changes to the cask:

[x] brew cask audit --download {{cask_file}} is error-free.
[x] brew cask style --fix {{cask_file}} reports no offenses.
[x] The commit message includes the cask’s name and version.

Additionally, if adding a new cask:

[x] Named the cask according to the token reference.
[x] brew cask install {{cask_file}} worked successfully.
[x] brew cask uninstall {{cask_file}} worked successfully.
[x] Checked there are no open pull requests for the same cask.
[x] Checked the cask was not already refused in closed issues.
[x] Checked the cask is submitted to the correct repo.

This had been removed but it seems to be working now. https://github.com/caskroom/homebrew-cask/pull/35330


Checkpoint loading issues

There are two issues:

For both the BLSTM and XSA checkpoints, the parameter shape suggests they were trained with 2 labels. However, the original paper suggests silence should be its own category, so there should be at least 3 labels. The example txt file Hexin provided only contains 0 and 1. Right now, we use 0 to denote silence, 1 Hindi and 2 for English. Were the models trained only on the speech portions? Should we discard all the 0 labels?

When I load the XSA checkpoint, I encountered the error that some parameters are missing. python train_xsa_e2e.py --savedir "/home/hidyhan" --train "./train.txt" --test "./test.txt" --seed 42 --device 0 --batch 64 --epochs 30 --dim 23 --lang 2 --model my_xsa_model --lr 0.0001 --maxlength 666 --lambda_p 0.5 --testonly True --model_ckpt "Transformer_89.0304_5.4848.ckpt" Current device: cuda:0 Traceback (most recent call last): File "train_xsa_e2e.py", line 177, in <module>   main() File "train_xsa_e2e.py", line 123, in main   model.load_state_dict(torch.load(args.model_ckpt, map_location='cuda:0')) File "/home/hidyhan/anaconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1051, in load_state_dict   raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format( RuntimeError: Error(s) in loading state_dict for X_Transformer_E2E_LID:   Missing key(s) in state_dict: "fc5.weight", "fc5.bias", "bn5.running_mean", "bn5.running_var", "fc6.weight", "fc6.bias", "bn6.running_mean", "bn6.running_var", "fc7.weight", "fc7.bias".    Unexpected key(s) in state_dict: "fc1.weight", "fc1.bias", "bn_fc1.running_mean", "bn_fc1.running_var", "bn_fc1.num_batches_tracked", "fc2.weight", "fc2.bias", "bn_fc2.running_mean", "bn_fc2.running_var", "bn_fc2.num_batches_tracked", "fc3.weight", "fc3.bias", "pos_encoding.pe".
(need to comment out strict=False param on line 123 in train_xsa_e2e.py to reproduce the issue)

I also added the testing commands in README.

It seems that you are using the code forked from my Github but not the one I sent to you. I renamed some of the layers so the errors are "missing keys". You may figure this out by replacing your model.py with the one I sent to you.


Support for custom RequestQueue

Currently the RequestQueue object is created by the apify library (Apify.openRequestQueue()) & if we pass a custom implementation of RequestQueue to Crawler, apify throws error, due to type check instead of just having a null check: https://github.com/apifytech/apify-js/blob/53ac1f6af46568b8571704093dc6f2beeb578b2a/src/crawlers/basic_crawler.js#L202

Can you remove these type checks to support custom RequestQueue implementation?

Also, even though RequestQueue typings is available, it is not available at runtime to extend or create an instance, since this is not exported here. We could still use it however by importing "apify/build/request_queue".

Can either of the above suggested solutions be supported?

Sure, I can't see anything wrong with having it extensible. We will be refactoring our type checks soon(ish) so we'll keep that in mind. Is the current workaround with apify/build/request_queue sufficient for the time being?

Thanks @mnmkng , importing apify/build/request_queue works fine. (typings dont work though for this). I can submit a PR to only do null check  on Request Queue & expose requestQueue in https://github.com/apifytech/apify-js/blob/53ac1f6af46568b8571704093dc6f2beeb578b2a/src/main.js#L81

Thanks for the offer, but please go ahead with the workaround for now. Long time ago we had a good reason not to expose RequestQueue and check the type. Need to check why we did that and if the reason is still valid.

We changed the way we do validations in the next release 0.22.0 which is now in beta. Providing a custom RequestQueue and RequestList will be possible, as long as the overriding implementations provide all the required methods. Basically we changed prototype validation to duck typing.


tools: Refactor CI to use argh

Objective
The CI tool currently parses input manually. This has worked fine, but makes it just a bit more difficult to maintain and extend. Additionally, it provides no usage help for devs wanting to run the tool locally.
It would be better if parsing was handled by a dedicated CLI library like clap or argh.
Solution
Use argh to parse command line input for CI.
argh was chosen over clap and other tools due to being more lightweight and already existing in our dependency tree.
Using argh, the usage notes are generated automatically:
$ cargo run -p ci --quiet -- --help
Usage: ci [--keep-going] [<command>] [<args>]

The CI command line tool for Bevy.

Options:
  --keep-going      continue running commands even if one fails
  --help            display usage information

Commands:
  lints             Alias for running the `format` and `clippy` subcommands.
  doc               Alias for running the `doc-test` and `doc-check`
                    subcommands.
  compile           Alias for running the `compile-fail`, `bench-check`,
                    `example-check`, `compile-check`, and `test-check`
                    subcommands.
  format            Check code formatting.
  clippy            Check for clippy warnings and errors.
  test              Runs all tests (except for doc tests).
  test-check        Checks that all tests compile.
  doc-check         Checks that all docs compile.
  doc-test          Runs all doc tests.
  compile-check     Checks that the project compiles.
  cfg-check         Checks that the project compiles using the nightly compiler
                    with cfg checks enabled.
  compile-fail      Runs the compile-fail tests.
  bench-check       Checks that the benches compile.
  example-check     Checks that the examples compile.

This PR makes each subcommand more modular, allowing them to be called from other subcommands. This also makes it much easier to extract them out of main.rs and into their own dedicated modules.
Additionally, this PR improves failure output:
$ cargo run -p ci -- lints
...
One or more CI commands failed:
format: Please run 'cargo fmt --all' to format your code.

Including when run with the --keep-going flag:
$ cargo run -p ci -- --keep-going lints
...
One or more CI commands failed:
- format: Please run 'cargo fmt --all' to format your code.
- clippy: Please fix clippy errors in output above.

Future Work
There are a lot of other things we could possibly clean up. I chose to try and keep the API surface as unchanged as I could (for this PR at least).
For example, now that each subcommand is an actual command, we can specify custom arguments for each.
The format subcommand could include a --check (making the default fun cargo fmt as normal). Or the compile-fail subcommand could include --ecs, --reflect, and --macros flags for specifying which set of compile fail tests to run.
The --keep-going flag could be split so that it doesn't do double-duty where it also enables --no-fail-fast for certain commands. Or at least make it more explicit via renaming or using alternative flags.

Changelog

Improved the CI CLI tool

Now includes usage info with the --help option!

[Internal] Cleaned up and refactored the tools/ci crate using the argh crate

Migration Guide
The CI tool no longer supports running multiple subcommands in a single call.  My one complaint is that I don't like how keep_going is duplicated across every single subcommand and the main CI struct.

Agreed! I only kept it like this to minimize the breakage introduced in this particular PR. Ideally, we wouldn't have to do this.

Only accept --keep-going before subcommands, removing it as a field from the subcommand structs. I prefer this, since all commands appear to support --no-fail-fast.*

I think I prefer this as well. It allows each command to specify its own options like --no-fail-fast, which are both more explicit and localized to the actual command being run.
And from a quick search in the code base, I couldn't see anywhere where --keep-going is actually being used, so it's probably fine to do something like this.
I think such a change might be better for a followup PR so that it gets more focus and doesn't block this change. Thoughts on that? Or should I include the change now?

And from a quick search in the code base, I couldn't see anywhere where --keep-going is actually being used, so it's probably fine to do something like this.
I think such a change might be better for a followup PR so that it gets more focus and doesn't block this change. Thoughts on that? Or should I include the change now?

I think it is fine to do this in the same PR, since your already changing it so multiple subcommands need to be run separately. (Unfortunately I'm a bad example, since I end up just skipping ci and running Clippy and rustfmt directly. Maybe ask a maintainer what their workflow is?)
I believe there was some talk about using the --keep-going flag in Github Actions, but I don't know if it was actually added. Ripgrep doesn't show anything.

I think it is fine to do this in the same PR, since your already changing it so multiple subcommands need to be run separately.

Went ahead and removed the hidden --keep-going flags!

The Clippy check is the only subcommand in the code that does not check for --keep-going. I think this is a mistake, since Clippy inherits all options from cargo check, which does support --no-fail-fast.

I was looking into this as well and from what I can tell (running cargo check --help anyways), it doesn't seem like cargo check supports --no-fail-fast. It actually looks like only cargo test might support this flag. I wonder if we should also remove the places that use it unnecessarily?


/osio/launch and /osio/import should receive the spaceId

Instead of receiving the spacePath, the backend should receive the spaceId and perform the necessary lookup to get the space path. This is because the ID is needed to invoke other services
Needed for #209

@jyasveer is it possible to perform this change?


Extend API

Fixes https://github.com/rikhuijzer/SIRUS.jl/issues/44
Fixes https://github.com/rikhuijzer/SIRUS.jl/issues/66

I'm bringing over extract another time because now the code has been cleaned up:

"Estimate the importance of a rule."
function _rule_importance(weight::Number, rule::Rule)
    # TODO: THIS SHOULD USE THE GAP SIZE FUNCTION.
    importance = 0.0
    thens = rule.then::Vector{Float64}
    otherwises = rule.otherwise::Vector{Float64}
    @assert length(thens) == length(otherwises)
    n_classes = length(thens)
    for (then, otherwise) in zip(thens, otherwises)
        importance += weight * abs(then - otherwise)
    end
    return importance / n_classes
end

"""
    feature_importance(
        models::Union{StableRules, Vector{StableRules}},
        feature_name::AbstractString
    )

Estimate the importance of the given `feature_name`.
The aim is to satisfy the following property, so that the features can be
ordered by importance:

> Given two features A and B, if A has more effect on the outcome, then
> feature_importance(model, A) > feature_importance(model, B).

!!! note
    This function provides only an importance _estimate_ because the effect on
    the outcome depends on the data, and because it doesn't take into account
    that a feature can have a lower effect if it is in a clause together with
    another subclause.
"""
function feature_importance(
        model::StableRules,
        feature_name::String
    )
    importance = 0.0
    for (i, rule) in enumerate(model.rules)
        for subclause::SubClause in _subclauses(rule)
            if _feature_name(subclause)::String == feature_name
                weight = model.weights[i]
                importance += _rule_importance(weight, rule)
            end
        end
    end
    return importance
end

function feature_importance(model::StableRules, feature_name::AbstractString)
    return feature_importance(model, string(feature_name)::String)
end

function feature_importance(
        models::Vector{<:StableRules},
        feature_name::String
    )
    importance = 0.0
    for model in models
        importance += feature_importance(model, feature_name)
    end
    return importance / length(models)
end

function feature_importance(models::Vector{<:StableRules}, feature_name::AbstractString)
    return feature_importance(models, string(feature_name)::String)
end

"""
    feature_importances(
        models::Union{StableRules, Vector{StableRules}}
        feature_names
    )::Vector{NamedTuple{(:feature_name, :importance), Tuple{String, Float64}}}

Return the feature names and importances, sorted by feature importance in descending order.
"""
function feature_importances(
        models::Union{StableRules, Vector{StableRules}},
        feature_names::Vector{String}
    )::Vector{NamedTuple{(:feature_name, :importance), Tuple{String, Float64}}}
    @assert length(unique(feature_names)) == length(feature_names)
    importances = map(feature_names) do feature_name
        importance = feature_importance(models, feature_name)
        (; feature_name, importance)
    end
    alg = Helpers.STABLE_SORT_ALG
    return sort(importances; alg, by=last, rev=true)
end

function feature_importances(
        models::Union{StableRules, Vector{StableRules}},
        feature_names
    )::Vector{NamedTuple{(:feature_name, :importance), Tuple{String, Float64}}}
    return feature_importances(models, string.(feature_names))
end

function _haberman_data()
    df = haberman()
    X = MLJBase.table(MLJBase.matrix(df[:, Not(:survival)]))
    y = categorical(df.survival)
    (X, y)
end

X, y = _haberman_data()

mach = let
    classifier = StableRulesClassifier(; q=3, max_depth=1, max_rules=8, n_trees=1000, rng=_rng())
    mach = machine(classifier, X, y)
    fit!(mach; force=true)
end

# TODO MAKE THIS MODEL MANUALLY TO NOT DEPEND ON THE FITTED MODEL

model = mach.fitresult::StableRules
# StableRules model with 8 rules:
#  if X[i, :x3] < 8.0 then 0.084 else 0.03 +
#  if X[i, :x3] < 14.0 then 0.147 else 0.098 +
#  if X[i, :x3] < 2.0 then 0.073 else 0.047 +
#  if X[i, :x3] < 4.0 then 0.079 else 0.048 +
#  if X[i, :x3] < 1.0 then 0.076 else 0.06 +
#  if X[i, :x2] < 1959.0 then 0.006 else 0.008 +
#  if X[i, :x1] < 38.0 then 0.029 else 0.024 +
#  if X[i, :x1] < 42.0 then 0.052 else 0.043
# and 2 classes: [0, 1].
# Note: showing only the probability for class 1 since class 0 has probability 1 - p.

importance = feature_importance(model, "x1")
# Based on the numbers above.
expected = ((0.029 - 0.024) + (0.052 - 0.043))
@test importance ≈ expected atol=0.01

@test feature_importance([model, model], "x1") ≈ expected atol=0.01
@test only(feature_importances(model, ["x1"])).importance ≈ expected atol=0.01


Mediainfo gets stuck because of bad fallback code for udta mov atoms

Whenever mediainfo encounters an unknown udta user data type it will fallback to parsing the content of the user data as a list of strings using the File_Mpeg4::moov_udta_xxxxmethod. This seems ill advised seeing as the Quicktime reference pages explicitly says to ignore unknown user data types (https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html)
However, assuming that this string fallback is wanted, it should at least not get stuck when interpreting something which is not a string as if it was a string. Further more, even if the user data actually is a list of strings it only parses the first string correctly.
I first observed the behavior of mediainfo getting stuck on one of our customers files. However I'm not free to distribute this file so I had to make my own files that reproduce the issue. In order to make my own flavor of custom metadata I actually had to patch ffmpeg since it natively only allows me to write a "meta" user data type. I've attached to files to this PR.
The following file will make mediainfo get stuck because it if the udta is treated as a string it ends up with a trailing non-zero byte:
unknown_bad_udta.mp4
The following file has an unknown udta user type which is two subsequent strings. Mediainfo will not get stuck, but if it is run with --Details=1 it will be clear that it was not able to parse either of the strings.
unknown_string_udta.mp4
The files in questions was created by ffmpeg by applying the following patch to the n4.4.3 tag of ffmpeg:
diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 8a06de2fd2..820b5ba426 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -82,6 +82,8 @@ static const AVOption options[] = {
     { "prefer_icc", "If writing colr atom prioritise usage of ICC profile if it exists in stream packet side data", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_PREFER_ICC}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
     { "write_gama", "Write deprecated gama atom", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_WRITE_GAMA}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
     { "use_metadata_tags", "Use mdta atom for metadata.", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_USE_MDTA}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
+    { "write_unknown_string_udta", "Write a mdta used to reproduce wrong string parsing in mediainfo", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_WRITE_UNKNOWN_STRING_MDTA}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
+    { "write_unknown_bad_udta", "Write a udta for reproducing a bug that makes mediainfo get stuck.", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_WRITE_UNKNOWN_BAD_MDTA}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
     { "skip_trailer", "Skip writing the mfra/tfra/mfro trailer for fragmented files", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_SKIP_TRAILER}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
     { "negative_cts_offsets", "Use negative CTS offsets (reducing the need for edit lists)", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MOV_FLAG_NEGATIVE_CTS_OFFSETS}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "movflags" },
     FF_RTP_FLAG_OPTS(MOVMuxContext, rtp_flags),
@@ -3878,18 +3880,35 @@ static int mov_write_meta_tag(AVIOContext *pb, MOVMuxContext *mov,
 {
     int size = 0;
     int64_t pos = avio_tell(pb);
-    avio_wb32(pb, 0); /* size */
-    ffio_wfourcc(pb, "meta");
     avio_wb32(pb, 0);
-    if (mov->flags & FF_MOV_FLAG_USE_MDTA) {
-        mov_write_mdta_hdlr_tag(pb, mov, s);
-        mov_write_mdta_keys_tag(pb, mov, s);
-        mov_write_mdta_ilst_tag(pb, mov, s);
-    }
-    else {
-        /* iTunes metadata tag */
-        mov_write_itunes_hdlr_tag(pb, mov, s);
-        mov_write_ilst_tag(pb, mov, s);
+    if (mov->flags & FF_MOV_FLAG_WRITE_UNKNOWN_STRING_MDTA) {
+      const char* string1 = "I am a string user data";
+      const char* string2 = "I am a following string user data";
+      ffio_wfourcc(pb, "unks");
+      avio_wb32(pb, strlen(string1));
+      avio_write(pb, string1, strlen(string1));
+      avio_wb32(pb, strlen(string2));
+      avio_write(pb, string2, strlen(string2));
+    } else if (mov->flags & FF_MOV_FLAG_WRITE_UNKNOWN_BAD_MDTA) {
+      const char* bad = "I am bad user data.";
+      ffio_wfourcc(pb, "unkb");
+      avio_wb32(pb, strlen(bad));
+      avio_write(pb, bad, strlen(bad));
+      // Write one trailing non-zero byte. This will get mediainfo stuck
+      // in an infinite loop
+      avio_w8(pb, 42);
+    } else {
+      ffio_wfourcc(pb, "meta");
+      avio_wb32(pb, 0);
+      if (mov->flags & FF_MOV_FLAG_USE_MDTA) {
+          mov_write_mdta_hdlr_tag(pb, mov, s);
+          mov_write_mdta_keys_tag(pb, mov, s);
+          mov_write_mdta_ilst_tag(pb, mov, s);
+      }
+      else {
+          mov_write_itunes_hdlr_tag(pb, mov, s);
+          mov_write_ilst_tag(pb, mov, s);
+      }
     }
     size = update_size(pb, pos);
     return size;
diff --git a/libavformat/movenc.h b/libavformat/movenc.h
index cdbc4074c3..07a470cdc3 100644
--- a/libavformat/movenc.h
+++ b/libavformat/movenc.h
@@ -263,6 +263,8 @@ typedef struct MOVMuxContext {
 #define FF_MOV_FLAG_SKIP_SIDX             (1 << 21)
 #define FF_MOV_FLAG_CMAF                  (1 << 22)
 #define FF_MOV_FLAG_PREFER_ICC            (1 << 23)
+#define FF_MOV_FLAG_WRITE_UNKNOWN_STRING_MDTA   (1 << 24)
+#define FF_MOV_FLAG_WRITE_UNKNOWN_BAD_MDTA      (1 << 25)

 int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt);

The files was created by running the following ffmpeg commands:
ffmpeg -y -f lavfi -i testsrc=duration=1:size=320x200:rate=1 -movflags write_unknown_bad_udta -metadata foo=bar unknown_bad_udta.mp4
ffmpeg -y -f lavfi -i testsrc=duration=1:size=320x200:rate=1 -movflags write_unknown_string_udta -metadata foo=bar unknown_string_udta.mp4

Also, the file from the customer had a user data type of "NCDT" which seems to be documented here: https://exiftool.org/TagNames/Nikon.html#NCDT
The best fix for this particular file is of course to implement NCDT support, but I think it is more important that mediainfo does not get stuck when encountering unknown user data types.

This seems ill advised seeing as the Quicktime reference pages explicitly says to ignore unknown user data types

In theory, I agree with this assertion.
In practice MediaInfo wants to have as much tip as possible about what is present in their file, even if MediaInfo does not know about some tags, so the current implementation.

it should at least not get stuck when interpreting something which is not a string as if it was a string.

Definitely.

The following file will make mediainfo get stuck

I can't make MediaInfo 22.12 freeze with your file, win or linux.

Also, the file from the customer had a user data type of "NCDT"

When we have free time (not soon :( ).

but I think it is more important that mediainfo does not get stuck when encountering unknown user data types.

Yes.
I checked your patch proposal, it unfortunately does not catch all the fields from my test files and also wrongly catch some tags which are not tags, and I don't like the test in the loop (the check of 16 or 32 bit is intended to be once, as it should not change inside a tag).
Following your proposal, I adapted the current code and tried (as the file you provided does not freeze, difficult to be sure), to avoid any infinite loop, please test this branch and let me know if it resolves freezes with your file and if you find a possibility of infinite loop.

@JeromeMartinez  Thank you for the quick response on this one
I tested again and I see now that it does not appear to get stuck when using the URL directly. You have to download the file and run mediainfo towards the local file for the code path to be activated. I can reproduce it with the mediainfo shipped with Fedora 36 (v22.12). If you have docker available this should be a standalone command to reproduce the issue:
docker run -it fedora:36 bash -c "dnf install -y mediainfo wget && echo 'downloading file ...' && wget https://user-images.githubusercontent.com/114919425/218735436-9478e25e-8711-45a8-acda-267913843785.mp4 && echo 'running mediainfo' && mediainfo 218735436-9478e25e-8711-45a8-acda-267913843785.mp4 && echo 'mediainfo completed'"

This is just for my own curiosity of course as your counter suggestion branch solves problem for both my generated files and the customer file.
Thanks again for the help on this one