ci: Skip aarch64 builds except for new releases

These builds are extremely slow due to needing to rely on emulation, and we can't adequately test them due to the emulation not providing all syscalls that we require. There's little point to wasting time building something that we can't test for every push to a PR branch, so we'll defer building these until the time a release is cut.

Codecov Report
Patch and project coverage have no change.

Comparison is base (7f4d56b) 90.34% compared to head (6c4ce08) 90.34%.

:exclamation: Current head 6c4ce08 differs from pull request most recent head 6b3c44c. Consider uploading reports for the commit 6b3c44c to get more accurate results

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #115   +/-   ##
=======================================
  Coverage   90.34%   90.34%
=======================================
  Files          47       47
  Lines        5480     5480
  Branches      863      863
=======================================
  Hits         4951     4951
  Misses        529      529

Flag
Coverage Δ

cpp
75.18% <ø> (ø)

python_and_cython
99.97% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Test, test, test

:sparkles: Needs tests :100:

:boom: https://github.com/jlord/sheetdown/pull/19


Supporting Checkbox for ChoiceGroup

Is there an existing issue for this?

[X] I have searched the existing issues

Is your feature request related to a problem? Please describe the problem.
I am using  BitUI Component ChoiceGroup for showing options which are shown as single selection using RadioButtons
In some cases I would like to use Checkbox for multiple selection, supporting Checkbox inside ChoiceGroup would be great
Describe the solution you'd like
ChoiceGroup to support Checkbox for multiple selection of items
Additional context
No response

Thanks for contacting us. We're investigating this issue.
We'll let you know if it's possible to work on this issue.

The issue is accepted and planned. Resolving it will start ASAP.

not relevant anymore


missing execute_ssh in line 104

If use the action without the copy_stack_file, the action get an error:
/docker-entrypoint.sh: line 104: docker-compose: not found
I think is missing the command execute_ssh in the line 104

can you share your configs

This is my config
name: CI Docker

on:
  push:
    branches: [master]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v1
        with:
          fetch-depth: 1

      - name: Start Docker Deployment
        uses: wshihadeh/docker-deployment-action@v1
        with:
          remote_docker_host: ${{ secrets.DOCKER_HOST }}
          ssh_private_key: ${{ secrets.DOCKER_SSH_PRIVATE_KEY }}
          ssh_public_key: ${{ secrets.DOCKER_SSH_PUBLIC_KEY }}
          deployment_mode: docker-compose
          # copy_stack_file: true
          deploy_path: /root/deployment-test
          stack_file_name: docker-compose.yml
          args: up -d

can you change this like uses: wshihadeh/docker-deployment-action@v1 to uses: wshihadeh/docker-deployment-action@master and try again ?


Swift

Adds Swift 3.0 version of objc stuff.
@ianbarber please review

Merging since @morganchen12 has no power here.


protoc

can we enable discussions on this repo?
how do I generate a .proto file from protopuf?  or vice versa?  suggestions?

can we enable discussions on this repo?

Sure! It is enabled now.

how do I generate a .proto file from protopuf? or vice versa? suggestions?

It may be complicated to translate c++ type definitions of protopuf messages to .proto message definitions,
since c++ type system is complex and you may need libClang to parsing and analyzing semantics of C++ code.
But translating .proto message definitions to protopuf c++ types is more easy,
since the proto language is descriptive and simple,  and you can write a protoc plug-in or use some parser generaters to parse .proto and then generate some corresponding c++ code.
I actually planned to write a translator to convert from .proto to protopuf c++ type definitions, but I don't have time to move forward with this work at the moment.
Ideas and suggestions are always welcome!

Makes sense, thanks @PragmaTwice !
This is a beautiful header lib, wish protobuf had been implemented this way in the first place, lol.
Thanks!


cli, lang: Prefix all feature flags with anchor-

Anchor allows configuring programs via some feature flags

no-entrypoint
no-idl
cpi

These features should be prefixed with anchor- for clarity.

When doing this we should also hide some of the generated modules (e.g. accounts, instructions, and client_accounts_*) behind feature flags, since they are only used in specific cases (like when using rust clients).


InteractBlockEvent.Primary gets called repeatedly on air click, even after releasing the button

As the title says, the 'Primary' variant of the event gets called indefinitely, unless you interact with a block, or interact with the air with the right button.

@mentlerd I cannot reproduce this. Remove all plugins/mods except for sponge and test again.

I have forgot to mention that this happens when I cancel the event. In this case the method handling this event exits prematurely, so lastAnimTick will never get changed.
I think this part of code should run even if the event got cancelled

The same happens to me. Very strange.


Fix bug transitions from invalid checks

This PR fixes a bug from invalid checks initialized with zero.
Let us assume a trie for a pattern (0x01). We will obtain the following BASE&CHECK when CHECK values are initialized with zero.
 TRIE: [0] -0x01-> [1]

 BASE: [0, MAX]
CHECK: [0,   1]

In this case, an invalid transition [0] -0x00-> [0] is allowed because CHECK[0] == 0x00. This is a bug.
This PR suggests a simple solution using 0xFF for the invalid CHECK value because trie-match allows only string literal patterns in UTF-8, and 0xFF will be never used.

@kampersanda I am considering supporting byte-strings as well as strings, so I do not want to use the INVALID character.
Instead of defining an invalid character, how about disallowing the use of 0 as a base value?
I think the essence of the problem is that base=0, which should have been used, is not properly recorded as a used value.

I think it is necessary to insert 0 into the following HashSet.
https://github.com/daac-tools/trie-match/blob/b1b096957fba3232a6b2decf178f175b997d2fd2/src/trie.rs#L90

@vbkaisetsu

I am considering supporting byte-strings as well as strings, so I do not want to use the INVALID character.

I understand.

Instead of defining an invalid character, how about disallowing the use of 0 as a base value?
I think the essence of the problem is that base=0, which should have been used, is not properly recorded as a used value.

That is not enough. We can create other instances of this bug. For example, the following instance has a bug for base = 3.

We have an alternative solution that, in postprocessing, sets all unused check values to possible labels from unused base values. For example, in the above image, setting check[3] := 2 can solve such a bug transition because base = 1 is unused and that transition will never occur.
Actually, I initially intended to solve the problem in this manner. You can see the actual code at https://github.com/daac-tools/trie-match/pull/11/commits/6def4d2260c2ecb723ce08ffe7e33157f0fa4399.
However, this code is not still enough. This solution must guarantee that unused values can be found. (i.e., unreachable!() in the code.) Unfortunately, such unfortunate instances can easily be created, as follows.

In this case, we cannot find unused base values for check[3].
To employ this solution, we need an additional trick that prohibits the use of base values such that base % 4 == 3. (In practice, 4 -> 256 and 3 -> 255 for byte strings.)
This is my alternative solution. What do you think?

@kampersanda When the element is check=0, we need to consider whether the element is actually used or not, but I think it works as expected in both cases.

If the element is used: The base value is unique, so there is no accidental transition to that element.
If the element is not used:

base=i32::MAX, so no further transitions are made.
value=wildcard_idx, so the behavior is the same as when the trie does not accept the input.

@vbkaisetsu That's true. I understand that reserving base=0 is enough for this problem. I'll update this PR in that manner.

Thank you


#16749 add complex values inline editing

Limitations:

As most functionality of array editing works strangely in MongoDB.
Editing multidimensional arrays produces an error because we need to have the ability to store internal arrays inside of JDBCCollection, and for now we don't have that.

Changes in one of the subfields sets the entire array to NULL


feat(BUX-291): adjust tx recording to BEEF requirements

Motivation
We need to modify the synchronization and broadcasting mechanisms to align with BEEF payment requirements. Additionally, we seek greater control over the flow of sending and receiving transactions to facilitate future maintenance and development.
Solution

Implement strategies for recording transactions
Separate business logic from the persistence logic. Please note that this results in some redundant code, which should be improved in the future. However, for the purposes of this PR, I've opted to leave it as is to limit the scope

Pull Request Checklist

[x] 📖 I created my PR using provided  : CODE_STANDARDS
[x] 📖 I have read the short Code of Conduct: CODE_OF_CONDUCT
[x] 🏠 I tested my changes locally.
[x] ✅ I have provided tests for my changes.
[x] 📝 I have used conventional commits.
[x] 📗 I have updated any related documentation.
[x] 💾 PR was issued based on the Github or Jira issue.

General comment regarding TODOs/questions left as comments:
First category of TODOs
I would segregate the TODOs into ones you didn't find answers to but are key to closing this shuffle. Then team members could help you investigate.
For example:
https://github.com/BuxOrg/bux/pull/450/files#diff-e28c902ea80bcbe696ef6a0172e5c5cf443846c446de2830367cd36e192da4b0R124
Second category of TODOs
The second category of TODOs are those that we will not currently resolve but do not block the pull request merge.
In this case, I would create a task in Jira that contains the appropriate subtasks associated with the specific problem.
I don't mind leaving the TODOs as they are:
// TODO: BUX-XXX check if we can ommit broadcasting here

Docs:
I would definitely go here:
https://github.com/bitcoin-sv/bux-docs/tree/main/transactions
and check if we can update current docs.
The most important thing for me is transaction flow diagram.


Deprecates ResponsiveTimeText

WHAT
Marks ResponsiveTimeText as deprecated and removes usage in Horologist.
WHY
The recommended behavior for ResponsiveTimeText now aligns with the default behavior for regular TimeText, so it is no longer necessary to maintain this component - developers should use TimeText instead.
HOW
Mark Composable as deprecated and remove usages.
Checklist :clipboard:

[x] Add explicit visibility modifier and explicit return types for public declarations
[x] Run spotless check
[x] Run tests
[x] Update metalava's signature text files

@garanj has this been backported or is that only from some Wear Compose version onwards?

Hold off, discussion over 2dp/4dp

@kul3r4  I think we should backport the 2dp to 0.6.x, but avoid deprecation. Does that work?


Improve listener interface to reduce common parsing overheaders

Proposed solution for https://github.com/twitter/hpack/issues/27
Store header names and values as Strings to avoid listeners creating them every time
Allow header entries to be annotated with parsed values to allow for higher-level optimizations
Broaden header listener interface to accommodate above
Add benchmarks

Will take a look in more detail -- I like the idea of being able to cache object representations. Not sure about hardcoding header names. I feel like we may be able to have the user cache them as well via the listener interface.
Sent from my iPhone

On Oct 27, 2015, at 5:12 PM, Louis Ryan<EMAIL_ADDRESS>wrote:
Proposed solution for #27
Store header names and values as Strings to avoid listeners creating them every time
Allow header entries to be annotated with parsed values to allow for higher-level optimizations
Broaden header listener interface to accommodate above
Add benchmarks
You can view, comment on, or merge this pull request online at:
https://github.com/twitter/hpack/pull/28
Commit Summary
Canonicalize the strings produced for header names and values to avoid wasteful string creation
File Changes
M hpack/src/main/java/com/twitter/hpack/Decoder.java (56)
M hpack/src/main/java/com/twitter/hpack/Encoder.java (2)
A hpack/src/main/java/com/twitter/hpack/ExtendedHeaderListener.java (30)
M hpack/src/main/java/com/twitter/hpack/HeaderField.java (27)
M hpack/src/main/java/com/twitter/hpack/StaticTable.java (32)
M hpack/src/test/java/com/twitter/hpack/DecoderTest.java (18)
M hpack/src/test/java/com/twitter/hpack/TestCase.java (2)
M hpack/src/test/java/com/twitter/hpack/TestHeaderListener.java     (8)
M microbench/src/main/java/com/twitter/hpack/microbench/DecoderBenchmark.java (101)
Patch Links:
https://github.com/twitter/hpack/pull/28.patch
https://github.com/twitter/hpack/pull/28.diff
—
Reply to this email directly or view it on GitHub.

Jeff - I've tidied up the static table and construction patterns to make them easier to read.
I haven't done anything yet about annotating names. That's next

@louiscryan thanks for taking this on!

OK. Ready for another round PTAL
I also think it makes sense to retire the old listener interface but I don't know what you've conveyed to folks about API stability

Will try to get to this tomorrow -- as for API compatibility i'm ok with breaking it and publishing 1.1.0 -- there aren't that many consumers.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


DMCA Takedown Notice Guide Drafting Suggestions

This issue is about the "Guide to Submitting a DMCA Takedown Notice" and (arguably) confusing drafting language.
The Problem As drafted, GitHub's policy makes it seem as though anyone submitting a DMCA complaint is held to a higher-than-stautory notice requirement by asking for the inclusion of the affirmative statement: "I have read and understand GitHub's Guide to Filing a DMCA Notice." A plain reading of 17 U.S.C § 512 contains no additional requirement for having read the GitHub DMCA Takedown Policy. Whether or not it allows for additional requirements is not an argument I'm making because I strongly believe the guides and template takedown notice provided by GitHub, as a whole, to be useful to the community. However, I'd like to explain the problem with one aspect of the way they are currently drafted.
Under the Guide, it is alluded to the possibility that not including this statement will adversely impact the response time to a DMCA Takedown Notice that is submitted. To be clear, I am not calling into question GitHub's overall compliance, or willingness to comply, with the DMCA process as may be required by law. However, I do think it is unclear and arguably misleading that a copyright owner or authorized representative who does not comply with GitHub's DMCA Takedown Policy, but maintains full compliance with the requirements of the statute, would potentially face an extended period of time before their otherwise proper DMCA Takedown Notice is handled by GitHub. At the very least, it may cause additional time of unnecessary research or review of the GitHub policy by a copyright owner or authorized representative (such has their legal counsel) before engaging in an otherwise notice submission process that is well understood by them through education or experience of their own.
The Solution I would propose changing this section of the Guide's header from being "Your Complaint Must ..." to instead reading as "Your Complaint Should ..." as well as removing the sentence "But we'll know that you haven't read these guidelines and may ask you to go back and do so." under the first item listed in this section of the Guide.
An alternative to completely striking the last sentence would be to modify it as follows: "But we'll know that you haven't read these guidelines and may ask you to go back and do so in the event we receive an incomplete request."
Thanks for reading and considering this suggestion!

Hey, Franklin,
You raise some good points. However, I'm puzzled by your comment here:

Under the Guide, it is alluded to the possibility that not including this statement will adversely impact the response time to a DMCA Takedown Notice that is submitted.

I'm not sure where you're getting this impression from our Guidelines. As I read through the Guidelines, I don't see any reference to any adverse effect that leaving this statement out will have on the processing of a takedown request. To the contrary, we do state quite clearly that:

We won't refuse to process an otherwise complete complaint if you don't include this statement. But we'll know that you haven't read these guidelines and may ask you to go back and do so.

We ask for an indication that filers have read our guidelines, because the vast majority of DMCA takedown requests we receive come from notice senders who don't have a legal background and generally don't have much experience filing takedown requests. We need them to read our policies and procedures so they are giving us all of the information we require. We try to make it as easy for them as possible, but if we find material deficiencies in a takedown request that show us that a user hasn't read our guidelines, we may send the user back to read through the document.
We won't be able to change "Must" to "Should." There is only one element on that list that is optional under the statute and relevant case law, and that is the reference to the Guidelines; it would only be confusing to our users to have two separate lists. However, we'll take a look and consider adding the "in the event we receive an incomplete request" clarification, or similar language.

Thanks for the detailed response and consideration of clarifying the sentence in the Guide!
To quickly clarify and move on, I thought it beneficial for GitHub to know that, from one person's perspective, the phrasing of "But we'll know that you haven't read these guidelines and may ask you to go back and do so." leaves open the possibility of arbitrarily requiring the statement if it isn't included by a filer. Again, I am not questioning GitHub's policy for handling valid takedown requests by any stretch of the imagination. However, as I pointed out, it does unnecessarily cause someone that may otherwise understand how to submit a compliant takedown notice to stop and think about whether this additional requirement is truly necessary or not.

Understood. No, we are not arbitrary, and we don't consider it a requirement. As the guideline indicates, we will process a fully-compliant DMCA takedown request that does not include the statement, but we'll look at a way to make that more clear.
Thanks!


Add a way to manually disable the node

By dropping a file into /var/run the node can be manually removed from
the cluster. This enables a simple way to remove a node from the cluster
for maintenance.
This change has been merged into the percona repo which is upstream for
the clustercheck script.

I can has merge plz.

/var/run or /var/tmp?
I assume you mean this where you've done the same thing - why is it /var/tmp and not /var/run?
https://github.com/olafz/percona-clustercheck/commit/7d2f29a94d2c9d627f4487454bb850f47d5edd6c

Sorry it should have said /var/tmp in the comment. It should match the merge to the Percona repo.


DicomWebDataSource: Add support for dynamic config values via config hook

#3361
Expose showStudyList as a layout option: Disable rendering of the return button per layout config (valid for data sources not supporting the worklist)
noWorklistButton mode option: Disable rendering of the mode button in the expanded worklist item
New DicomWebDataSourceonConfiguration option: Currently only available for DicomWebDataSource. This option allows interception of the data source configuration for dynamic values or configuration options dependent on URL params or query params e.g.:

  {
    friendlyName: 'GCP DICOMWeb Server',
    namespace<EMAIL_ADDRESS>    sourceName: 'gcpdicomweb',
    configuration: {
      name: 'gcpdicomweb',
      qidoSupportsIncludeField: false,
      imageRendering: 'wadors',
      thumbnailRendering: 'wadors',
      enableStudyLazyLoad: true,
      supportsFuzzyMatching: false,
      supportsWildcard: false,
      singlepart: 'bulkdata,video,pdf',
      useBulkDataURI: false,
      onConfiguration: (dicomWebConfig, options) => {
        const { params } = options;
        const { project, location, dataset, dicomStore } = params;
        const pathUrl = `https://healthcare.googleapis.com/v1/projects/${project}/locations/${location}/datasets/${dataset}/dicomStores/${dicomStore}/dicomWeb`;
        return {
          ...dicomWebConfig,
          wadoRoot: pathUrl,
          qidoRoot: pathUrl,
          wadoUri: pathUrl,
          wadoUriRoot: pathUrl,
        };
      },
    },
  },

Thanks for the updates.
Thank you for fixing /local, I tested it and it looks good.
The end-to-end tests are still failing, please have a look.
I also tried your branch with the local DICOM json demo (https://docs.ohif.org/configuration/datasources/dicom-json/#local-demo) and it had the following error and it did not display the study. I tried master and it works fine.

Thanks, I'll do that

Apparently now that we have wrapped the mode with datasource there are multiple unnecessary xhr for the study list

@igoroctaviano Apparently now that we have wrapped the mode with datasource there are multiple unnecessary xhr for the study list
https://deploy-preview-3427--ohif-dev.netlify.app/viewer?StudyInstanceUIDs=2.16.840.1.114362.1.11972228.22789312658.616067305.306.2

Thanks for cathing this. I'll step back with this implementation and think about doing something else. I think the wrapper should be a root wrapper (every route should automatically be a child of it). Looks like there's too much stuff going on under the hood, maybe the wrapper was not meant to be why I'm using it for.

Thanks for cathing this. I'll step back with this implementation and think about doing something else. I think the wrapper should be a root wrapper (every route should automatically be a child of it). Looks like there's too much stuff going on under the hood, maybe the wrapper was not meant to be used like I did.

@igoroctaviano
I did not think of mentioning this earlier, but I have some code that is destined to be used for the Google Cloud API data source whereby a datasource can be added dynamically (i.e. A data source's configuration is created on the fly and then it is added as a new/separate data source). This is similar to what this PR is trying to do except that instead of altering an existing data source, a new one is created. One could think of editing an existing as simply creating a new one. Furthermore, the code I have allows for the active data source to be set/changed on the fly.
Thoughts? Would that satisfy what this PR is trying to do in essence?

Thanks for cathing this. I'll step back with this implementation and think about doing something else. I think the wrapper should be a root wrapper (every route should automatically be a child of it). Looks like there's too much stuff going on under the hood, maybe the wrapper was not meant to be used like I did.

@igoroctaviano
I did not think of mentioning this earlier, but I have some code that is destined to be used for the Google Cloud API data source whereby a datasource can be added dynamically (i.e. A data source's configuration is created on the fly and then it is added as a new/separate data source). This is similar to what this PR is trying to do except that instead of altering an existing data source, a new one is created. One could think of editing an existing as simply creating a new one. Furthermore, the code I have allows for the active data source to be set/changed on the fly.
Thoughts? Would that satisfy what this PR is trying to do in essence?

I do have a new data source specifically for GCP in another branch and it works fine. I thought of having this solution here in the open source because I thought that maybe other people might leverage this dynamic config for dicomweb. If you guys think its better to just have people creating their own custom data source I'm cool closing this PR 👍

Do we need to close this after the recent merge by @jbocce


.Net 6 Blazor not using CustomAuthStateProvider

Hi,
I can't seem to get C# Blazor (.Net 6) to work.
It doesn't seem to use CustomAuthStateProvider so .User.Identity.IsAuthenticated always returns false.
if I change AuthenticationStateProvider in AuthService.cs to CustomAuthStateProvider, it can authenticate but then the pages can't detect it so returns unauthenticated.
builder.Services.AddScoped<AuthenticationStateProvider, CustomAuthStateProvider>(
    provider => new CustomAuthStateProvider(
        provider.GetRequiredService<ILocalStorageService>(),
        provider.GetRequiredService<Supabase.Client>(),
        provider.GetRequiredService<ILogger<CustomAuthStateProvider>>()
    )
);

@rhuanbarros could you give your thoughts?

Services were in the wrong order in the program.cs

I got here too late. 🥲

@rhuanbarros could you give your thoughts?

I got here too late. 🥲

Ha! No worries - thanks for being here!


add the key to the agent only once so passphrase is only once needed

When using a ssh-key with a passphrase the loop in RetryGetConfig always creates new agents and always add the key-file to the agent. This forces one to always enter the passphrase in every loop iteration. This PR fixes this by creating the ssh configuration once and using this configuration for the whole loop. So a passphrase must be entered only once.

Thanks for the contribution! Leaving ssh-agent changes to @kris-nova to test, as she had some problems in the past with it, so we want to make sure everything is working.

As there is this comment in the code:
// We don't need to check a key first, because SSH can support multiple auth implementations
// So here we just add BOTH a key based auth, and an arbitrary agent. Please don't touch this
// without talking to @kris-nova first OR unless something is just completely fucked

i first will ask before i try to modify the code again: i'm not really happy with the current code, because it always reads the private key and adds it as an AuthMethod  to the ssh configuration. But in my case (and i think in many people's case) the system agent would already contain the private key. So the entering of the passphrase (at least once after this PR) is not needed.
i would try to change the code, so that the system uses the system agent and if it does not work, it uses the public key (without the .pub  extension) and adds this as an AuthMethod  to the ssh config.
to answer to the code comment: @kris-nova, no nothing is completely fucked, but it is really annoying to always enter the passphrase of my key although it is loaded in my agent :-). this PR solves the problem, that i have to enter the passphrase in every loop of the RetryGetConfig but it would be nicer to never enter it when it is not needed.

i first will ask before i try to modify the code again: i'm not really happy with the current code, because it always reads the private key and adds it as an AuthMethod to the ssh configuration. But in my case (and i think in many people's case) the system agent would already contain the private key. So the entering of the passphrase (at least once after this PR) is not needed.

I've this problem as well. As of the #542, I'm always getting asked for password to type in several times. However, the old code is not working for everybody, so we had to get rid of it.
This could look easy, but is actually a very complex topic due to various SSH keyring implementations.
We're trying to encourage contributors to contribute to the project, give ideas and open PRs, but when working on complex topics, it's recommended to talk to other contributors and maintainers.
If this code works for @kris-nova, I guess it's safe to merge it. The issue is very annoying, and this should fix it for most users.
I can ask Kris to take a look into that one on the developer call, and to talk about the problem, if we have some time. We already have a lot of stuff in the backlog, but I hope we'll be able to get everything sorted out.

Typing in your password every time is completely fucked...
Thanks for the PR :heart:


windowSize for useInfiniteQuery

as discussed on twitter, as a potentially different api to replace refetchPages.
@arnaudbzn

Overview
useInfiniteQuery supports a new windowSize option.
windowSize defines the number of pages to store in the query data.
The objective is to keep only a "window" of pages in memory and fetch pages outside this window when needed (bi-directional).
Example:
An infinite scroll that can generate +50 pages: Refetching to whole list will sequentially trigger 50 network calls.
By setting windowSize to 5, only 5 pages are refetched and kept in memory.
Moving outside the window (both directions are supported) will remove a page from the memory to keep the number of pages fixed and the new page is fetched as usual and added to the end or the start of the pages array according to the direction.
Functional specs
windowSize has no effect if its value is undefined or equals 0
When the total number of pages is lower than windowSize the behavior is the same as without windowSize
When number of pages is equal to windowSize a call to:

fetchNextPage will remove the first page and add a new page at the end of the pages array.
fetchPreviousPage will remove the last page and insert a new page at the start of the pages array.

Requirements

the infinite list must be bi-directional: getPreviousPageParam must be defined

Other DX impacts
The developer has to keep in mind that the number data pages is limited to thewindowSize when using:

getQueryData
setQueryData (e.g: Optimistic UI)
persistQueryClient

Implementation specs
In infiniteQueryBehavior class:
buildNewPages can be updated to use a new LimitedLengthArray util class (or a set of functions) to manage newPageParams and pages array by applying the window logic if needed.

sounds lovely ❤ . Maybe we should discuss the name windowSize, I'm not sure it reflects what we're doing. With windowing, I would associate a perf optimization for rendering where we would only return the amount of requested pages to the user, but still cache them all.
But what we're actually doing is throwing away cached results, and I think we should make that clear. Something like maxCacheSize or maxPages / maxCachedPages maybe?
Another thing: Should we also stick to that maxSize when setQueryData is called with more than that? I don't think so as we wouldn't know which pages to discard. That means that it's possible to get more pages into the cache via setQueryData, but I guess that's fine...

Quick tests done with the suggested implementation look promising with only the following code changes to buildNewPages.
I can create a PR for this WIP or I can share it somewhere else so you can experience the prototype.
In the meatime a quick demo here
        const windowSize = 3
        const newPageParamsWindow = new LimitedLengthArray(windowSize, newPageParams)

        const buildNewPages = (
          pages: unknown[],
          param: unknown,
          page: unknown,
          previous?: boolean,
        ) => {
          const pagesWindow = new LimitedLengthArray(windowSize, pages)
          if(previous) {
            newPageParamsWindow.addItemToStart(param)
            pagesWindow.addItemToStart(page)
          } else {
            newPageParamsWindow.addItemToEnd(param)
            pagesWindow.addItemToEnd(page)
          }
          return pagesWindow.getItems()

          // OLD CODE
          // newPageParams = previous
          //   ? [param, ...newPageParams]
          //   : [...newPageParams, param]
          // return previous ? [page, ...pages] : [...pages, page]
        }

But what we're actually doing is throwing away cached results, and I think we should make that clear. Something like maxCacheSize or maxPages / maxCachedPages maybe?

maxPages sounds great

Another thing: Should we also stick to that maxSize when setQueryData is called with more than that? I don't think so as we wouldn't know which pages to discard. That means that it's possible to get more pages into the cache via setQueryData, but I guess that's fine...

Agreed, it should be fine.

Prototype EDIT
To support refetch, the following code should be added too in buildNewPages
        // Refetch pages
        else {
          newPageParams = []
          // NEW CODE
          newPageParamsWindow = new LimitedLengthArray(windowSize, newPageParams)

@TkDodo Preliminary testing of the prototype looks good. If you agree, I can prepare a PR including tests (I will do the docs later when the solution is validated and stabilized)

Just to be sure: please use the v5 branch as base

Is there a workaround for v4, where I could achieve the same thing as maxPages? Thanks a lot for all your work on this lib btw


Use partialCached in some cases.

@regisphilibert  do you have some time maybe to tweak this even more?

I'll take a look tomorrow!

How should I proceed? Is there a way to check this branch in my own fork?

Yup. Just fork the repo and check out this branch :) Or feel free to start from scratch, this patch was done very quickly

I'm going to close this since it's been a while and there are conflicts which I cannot resolve. Thanks for the patches, and if you think this can help us significantly, please do submit another PR :)


Missing query string for url in bundle task

react-native 0.11.0 requires new query string to the url containing the bundle.
Currently getting this error when running bundle:
   Error: Error validating module options: child "platform" fails because ["platform" is required]
       at /.../react-native/packager/react-packager/src/lib/declareOpts.js:60:13
       at /.../react-native/packager/react-packager/src/Server/index.js:161:20
       at tryCallOne (/.../react-native/node_modules/promise/lib/core.js:37:12)
       at /.../react-native/node_modules/promise/lib/core.js:103:15
       at flush (/.../react-native/node_modules/promise/node_modules/asap/raw.js:50:29)
       at doNTCallback0 (node.js:408:9)
       at process._tickCallback (node.js:337:13)
   Error creating bundle... undefined

However changing
var url = 'http://localhost:' + opts.port + '/index.ios.bundle';

to
var url = 'http://localhost:' + opts.port + '/index.ios.bundle?platform=ios&dev=false'

makes the bundle succeed.

Changing ./ios/MyApp/AppDelegate.m:34 to
jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=false"];

worked for me

Closed via #100, #102


 I have tried Avatar, Body Pose and both were too awesome so I'm going to try hands to see if it is less awesome to the point where I can handle it without getting the cops called on me for being so stoked. Any help with this issue would be appreciated.

Ha, this one gave me a chuckle! Try out the face tracking with the VTuber repository as well!

any chance you are planning on making the full body avatar have finger tracking combined with pose?


Eliminate Thundering Herd problem via queueing successive calls

Create a map that ties keys to all current requests for that signature. When checking whether to run a method or not we check if its key exists in the map, then either add the callback onto the list, or create an empty list for that key. This will eliminate multiple requests progressing passed the cache and hitting the bare_method when made in quick succession, instead allowing only a single instance to make the call to the bare_method then passing the result back to each waiting callback.
This will eliminate the potential Thundering Herd Problem experienced when several calls are made in quick succession (ie before the first call finishes).
Jeffrey Henley

From @medwards20x6:

the purpose of souvenir is to de-duplicate slow remote calls in favor of fast local cache.  Right now it does this successfully if the duplicate requests are separated by an amount of time greater than the round-trip time to satisfy the first call - if the requests arrive sooner/faster than that the remote calls are not de-duped.

I like this rationale and, in light of it, I can see why this functionality could make sense in souvenir. My concern is that handling this edge case may make the codebase significantly more complicated. There's surely a balance to be struck there, but a major increase in complexity for handling edge cases is often an indication that something is off.
There are some issues with the proposed implementation, though. I'll add some comments on specific lines of code, but the major things:

The function call is still always made! I'm not just being snarky about a superficial issue, though: how does souvenir know whether a function call is pending, so that it can skip calling the underlying function? It could check the length of the pending callback list, but I doubt that's the cleanest solution. In any case, the function call shouldn't be made when there is one pending.

Having an in-memory list of pending callbacks won't completely solve the problem in a load-balanced web application. Imagine a page is loaded that makes several HTTP requests, and those requests get distributed to different servers. We could still end up with as many calls to the underlying function as there are servers behind the load balancer. Granted, this is an improvement.

This should be tested thoroughly. In my opinion, this is a subtle enough change in a small enough codebase, that it would be valuable to write the tests before the code.

GitHub won't let me comment on lines that are unmodified, but lines 55-66 (the callback for cache_provider.get) are untouched and need to be updated to respect the pending call (if one exists). In the current code, there are situations where callbacks will be invoked twice, and situations where many more function calls may be made than intended.

Create some Unit Tests for the newly added functionality.

Thanks for making those last few updates @konradkurze. @jbergknoff any other thoughts, or is this good to merge?
Minor version increment, since it doesn't introduce breaking API changes?

I like the new test case description except for the "external request", which doesn't relate directly to Souvenir's functionality. Maybe change "so only one external request is made" to "so the underlying function is called only once".
Aside from that, I am happy with everything that's here. I still think another test case (for what happens to the thundering herd when there's an error) would be helpful. If you guys don't see the value in that, then I am okay with skipping it.

An error test case sounds valuable to me.

Added error case, and found a path that would swallow callbacks, so I fixed that.

Nice, tests are awesome sometimes. Thanks!


Update runserver.py

Description:
Modified the default behavior of the runserver command to automatically bind to the host machine's IP address instead of the default <IP_ADDRESS> loopback address. This change allows the Django development server to be accessed by devices on the same network, enhancing accessibility for testing and development.
Details:

Added code to dynamically determine the host machine's IP address using socket.gethostname() and socket.gethostbyname(hostname).
In case of an exception (e.g., if the host machine is not connected to a network), falls back to the default address <IP_ADDRESS>.

Impact:

Running python manage.py runserver now defaults to the host machine's IP address, making the development server accessible to devices within the same network.
Developers can still specify a different address/port if needed, but the default behavior enhances ease of access for testing on multiple devices.

Please stop sending the same patch. This is not an acceptable change.


Fix typo

Signed-off-by: Masataka Mizukoshi<EMAIL_ADDRESS>Fixed typo in Enumerate function.

I can't find a reference for ingester being more valid over ingestor, both are not dictionary words and both forms appear to be used in the industry.  Closing this PR.


Add unbound to the list of dnscrypt servers

My dnscrypt server patch made it into unbound master with https://github.com/NLnetLabs/unbound/commit/1ec4af38b8af63d2525ee999bf02a9d1ac31c79c . It may be better to wait for the next release cut to update the index page, but I figured I would get this PR up in the meantime.

Of course!


Request: option to increase space between list items

If possible, it would be nice to be able to adjust the space between list items. Particularly with busy lists, being able to increase the space between each bulleted item would be fantastic. Thanks!

This is now available using Style Settings


Using pubsub query with big values results in an int64 overflow

Bug Report
Setup
CometBFT version (use cometbft version or git rev-parse --verify HEAD if installed from source): should be latest
Have you tried the latest version: no
ABCI app (name for built-in, URL for self-written if it's publicly available): Rebus
Environment:

OS (e.g. from /etc/os-release): Ubuntu
Install tools:
Others:

node command runtime flags:
Config

What happened?
I am building a tool to subscribe to transactions and messages I need. Internally I use Query /libs/pubsub/query/query.go to filter out messages I do not need. One of my goals is to use values comparison (for example, as in this filter: delegate.amount > 10000000, to filter out MsgDelegate messages with amount less than 10m native tokens). It works okay with small values, but on chains with a different denom exponent (namely, Rebus, with exponent 18, and probably Evmos (haven't tested it with it, but it should result in a similar error)), when trying to subscribe to that filter, it would result in the following error:
7:52PM ERR Error querying for events err="failed to match against query message.action = '/cosmos.staking.v1beta1.MsgDelegate' AND delegate.amount ><PHONE_NUMBER>0000000000: got strconv.ParseInt: parsing \"10000000000000000000\": value out of range while trying to parse<PHONE_NUMBER>0000000000 as int64 (should never happen if the grammar is correct)" module=pubsub server=node

And if you do the same in app (try to create a filter from the following string and use query.Matches() on it, it would result in the error in this app.
What did you expect to happen?
Conversion is done without any errors.
How to reproduce it

Start a Rebus node (or any other node that has denom exponent 18 or bigger)
Subscribe via Tendermint Websockets to the updates on the following filter: message.action = '/cosmos.staking.v1beta1.MsgDelegate' AND delegate.amount ><PHONE_NUMBER>0000000000
Check logs and see errors if such transactions would occur, get a message like the one above per each.

Logs
See above

dump_consensus_state output

Anything else we need to know
This is a copy of https://github.com/tendermint/tendermint/issues/9978 which was closed as stale but apparently never fixed.

@freak12techno could you please clarify which version(s) of CometBFT you're using? This will help in deciding the version(s) of CometBFT to target with a fix.

@thanethomson I haven't tested this with CometBFT but tested it with Tendermint with a Rebus node, its Tendermint version is apparently v0.34.22.
Additionally I asked CometBFT devs in Discord and they confirmed this is indeed still an issue with the latest versions.

Just checking the file libs/pubsub/query/query.go. Looks like this file was completely revamped last year (around Sep/2022)
The main branch doesn't have the logic that is causing this error. I was looking for this text (should never happen if the grammar is correct) in the code and couldn't find it in the main branch.
https://github.com/cometbft/cometbft/blob/main/libs/pubsub/query/query.go
But looking at CometBFT v0.37 release, it seems the code it's still there, and this line seems to be the one causing it. https://github.com/cometbft/cometbft/blob/43c5ad8fea1054a6b804609a58e3da645fce4a4e/libs/pubsub/query/query.go#L155
The problem is that this amount is greater than Int64 so it will error. You can see an example here: https://go.dev/play/p/f29w2MO1c5u
This might even cause issues because if you look at the example above, the strconv.ParseInt function returns a value, err and if the code doesn't check for err the value is assigned the int64 max value which can lead to unintended consequences (but the code handles err so it's fine here).
The solution to handle these large denoms (10^18) would be to use a library that can handle Big Integers (BigInt). The cosmos-sdk uses a library that can handle these integers with 256 bits https://pkg.go.dev/cosmossdk.io/math#pkg-overview, Maybe use something like https://pkg.go.dev/cosmossdk.io/math#NewIntFromString that returns an Int (which is a wrapped BigInt).

To add my two cents here: having values that exceed 2^64 is quite a common usecase, as we have quite a few chains with denom exponent as 18 (few examples I know: Rebus, Evmos).
As cosmos-sdk uses BigInt internally, I think the best way to solve it is to use BigInt in CometBFT as well, what do you think?

But this is probably needed if you are doing some arithmetic with these numbers, and the library would help with that.

There's also an issue when CometBFT itself isn't able to determine whether the event matches the filter someone subscribed to. I also had it in my own app, where I used Query internally, but it happens also on the node itself when checking if event matches the filter, it doesn't do any conversions there to work with numbers except for determining if it's matching the filter.

@freak12techno , can you confirm which version of CometBFT you are using?

Oh sorry, don't know how I missed that. Yes that is in line with what we are expecting, 0.37.x and earlier versions all parse non-float numbers as int64. Thanks for the quick feedback :)

@freak12techno this should be fixed now with #798 for 0.34.x and #771 for v0.37.x and should be out in the next release of these versions.


[Build/YAML.swift] Improve quote

When I build SwiftPM itself, the following changes are occurred by executing the quote method  in the Build/YAML.swift.
Before the change:

<swift-build.module>
<swift-test.module>
<swift-build.exe>
<swift-test.exe>

After the change:

"<swift-build.module>"
"<swift-test.module>"
"<swift-build.exe>"
"<swift-test.exe>"

It seems no problems so far, but I don't think it's expected behavior.
So, I added a guard statement.
I'm sorry if I got the wrong idea.
===
For your information:

Here is SwiftPM `debug.yaml` diff.
```diff
6c6
<   main: [, , , , , , , , , "", "", , , , "", "", ]
---
>   main: [, , , , , , , , , , , , , , , , ]
181c181
<     outputs: ["", "/Users/.../swiftpm/.build/debug/swiftbuild.build/--doctor.swift.o", "/Users/.../swiftpm/.build/debug/swiftbuild.build/--init.swift.o", /Users/.../swiftpm/.build/debug/swiftbuild.build/Error.swift.o, /Users/.../swiftpm/.build/debug/swiftbuild.build/main.swift.o, /Users/.../swiftpm/.build/debug/swiftbuild.build/usage.swift.o, /Users/.../swiftpm/.build/debug/swiftbuild.build/UserToolchain.swift.o, /Users/.../swiftpm/.build/debug/swiftbuild.build/xp.swift.o]
---
>     outputs: [, "/Users/.../swiftpm/.build/debug/swiftbuild.build/--doctor.swift.o", "/Users/.../swiftpm/.build/debug/swiftbuild.build/--init.swift.o", /Users/.../swiftpm/.build/debug/swiftbuild.build/Error.swift.o, /Users/.../swiftpm/.build/debug/swiftbuild.build/main.swift.o, /Users/.../swiftpm/.build/debug/swiftbuild.build/usage.swift.o, /Users/.../swiftpm/.build/debug/swiftbuild.build/UserToolchain.swift.o, /Users/.../swiftpm/.build/debug/swiftbuild.build/xp.swift.o]
199c199
<     outputs: ["", /Users/.../swiftpm/.build/debug/swifttest.build/Error.swift.o, /Users/.../swiftpm/.build/debug/swifttest.build/main.swift.o, /Users/.../swiftpm/.build/debug/swifttest.build/test.swift.o, /Users/.../swiftpm/.build/debug/swifttest.build/usage.swift.o]
---
>     outputs: [, /Users/.../swiftpm/.build/debug/swifttest.build/Error.swift.o, /Users/.../swiftpm/.build/debug/swifttest.build/main.swift.o, /Users/.../swiftpm/.build/debug/swifttest.build/test.swift.o, /Users/.../swiftpm/.build/debug/swifttest.build/usage.swift.o]
445c445
<     outputs: ["", "/Users/.../swiftpm/.build/debug/swift-build"]
---
>     outputs: [, "/Users/.../swiftpm/.build/debug/swift-build"]
452c452
<     outputs: ["", "/Users/.../swiftpm/.build/debug/swift-test"]
---
>     outputs: [, "/Users/.../swiftpm/.build/debug/swift-test"]
```

Is there a bug this fixes?

No, there isn't.
I have concern about the difference between <...> and "<...>".
(e.g. <Build.module>, <Get.module>, "<swift-build.module>", "<swift-test.module>")
If you expect that, this pull request is not necessary.
If not, I think it has a potential for unexpect behaivior, even if no problems so far.
Because we must consider the difference.
I think it is better to standardize the format.
main: [<Build.module>, <Get.module>, <libc.module>, <ManifestParser.module>, <Multitool.module>, <OptionsParser.module>, <PackageDescription.module>, <PackageType.module>, <POSIX.module>, "<swift-build.module>", "<swift-test.module>", <Transmute.module>, < Utility.module>, <Xcodeproj.module>, "<swift-build.exe>", "<swift-test.exe>", <PackageDescription.dylib>]

The presence of the dash triggers the quoting, probably we don't need quotes here. The desire was to make the format more readable. But I'll do whatever @ddunbar wants.

Obviated by 2d55da40


Skill tree comparision: difference per attribute not shown

The differences in attributes between two skill trees are not shown if compared via "Skill tree comparision" (works in the latest release).

Hmm, I thought @sectoidfodder had fixed that

Woops, just opened my own bug report for this w/o checking old ones.
I don't remember editing MainWindow.xaml myself, but it's being caused by missing a use of AttributeToTextBlockConverter.  Dunno when that happened.


Cannot find the declaration of element 'nifty'

Hi there,
I wanted to start using Nifty-GUI in my jmonkey 3.0 project, though I cant get it to work.
Right now I have the following code:

When I put it on Design, it says:
Line -1 col :-1 : cvc-elt.1: Cannot find the declaration of element 'nifty'.,verticalAlignment=CENTER,verticalTextPosition=CENTER]
How can I fix it?
Thanks

Hello! It seems that you have syntax errors in your xml or is there some problem in github formatting? By the way if you want to try an other way to edit your nifty gui visually try my editor here: http://niftyeditor.it/ . I hope you enjoy it! :smile:

Yes, Cris is right. You probably have a syntax error in your XML file that makes it not valid to the nifty.xsd. Can you provide the complete XML file for us to check?
Another cause might be your editor/ide that doesn't know about the nifty.xsd. In that case you'll need to find the nifty.xsd from the nifty.jar of the Nifty version you're using and tell your editor/ide to use it to validate your nifty xml file. Otherwise you might get the same error which basically tells you that it doesn't know about the nifty type and therefore it appears to be invalid.
Unfortunately the namespace URL used to be a link to a webpage on the old nifty-gui website that explains all of that XSD validation but after the website has been hacked I've not yet repaired/ported that part to the new website :disappointed:

Same issue as @Cafnio  but I tried two xsd versions:
1. <nifty xmlns="http://nifty-gui.lessvoid.com/nifty-gui" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://nifty-gui.lessvoid.com/nifty-gui http://nifty-gui.lessvoid.com/nifty-gui">

2. <nifty xmlns="http://nifty-gui.sourceforge.net/nifty-1.3.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://nifty-gui.sourceforge.net/nifty-1.3.xsd http://nifty-gui.sourceforge.net/nifty-1.3.xsd">

I used generated files in jme3 and issue pop-up in SDK editor "Cannot find the declaration of element 'nifty' ". Also retriver output in jme sdk report that retrived location nifty-gui.sourceforge.net not found. On app run in jme sdk, app show nifty start screen but every action (mouse click) end up with error report in output window.

jme as jMonkeyEngine

In packed jar nifty.jar in jme libs directory I found nifty-1.3.xsd but adding that jar into project crashed jme after app run in jme sdk.
I dont know how xsd schemas works. Just use them in project.
also downloaded nifty editor 0.59 to examine generated xml but there is no xsd declaration line.
Here is my file generated in jme SDK and partialy copied from jme source code pages. Generated GUI is as expected. But with errors about xsd and NiftyMethodInvoker.
<?xml version="1.0" encoding="UTF-8"?>

 <nifty xmlns="http://nifty-gui.sourceforge.net/nifty-1.3.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://nifty-gui.sourceforge.net/nifty-1.3.xsd http://nifty-gui.sourceforge.net/nifty-1.3.xsd">

    <useStyles filename="nifty-default-styles.xml" />
  <useControls filename="nifty-default-controls.xml" />
  <screen id="start" controller="mygame.ScreenState" >
    <layer id="background" childLayout="center">
      <image filename="Interface/start-background.png"></image>
    </layer>
    <layer id="foreground" childLayout="vertical">
      <panel id="panel_top" height="25%" width="75%" align="center" childLayout="center">
        <text text="My Cool Game" font="Interface/Fonts/Default.fnt" width="100%" height="100%" />
      </panel>
      <panel id="panel_mid" height="50%" width="75%" align="center" childLayout="center">
        <text text="Here goes some text describing the game and the rules and stuff. Incidentally, the text is quite long and needs to wrap at the end of lines. ..." font="Interface/Fonts/Default.fnt" width="100%" height="100%" wrap="true" />
      </panel>
      <panel id="panel_bottom" height="25%" width="75%" align="center" childLayout="horizontal" >
        <panel id="panel_bottom_left" height="50%" width="50%" valign="center" childLayout="center">
          <control name="button" label="Start" id="StartButton" align="center" valign="center" visibleToMouse="true" >

              <interact onClick="startGame(hud)"/>
          </control>
        </panel>
        <panel id="panel_bottom_right" height="50%" width="50%" valign="center" childLayout="center">
          <control name="button" label="Quit" id="QuitButton" align="center" valign="center" visibleToMouse="true" >

              <interact onClick="quitGame()"/>
          </control>
        </panel>
      </panel>
    </layer>
  </screen>
  <screen id="hud" controller="mygame.ScreenState">
    <layer id="background" childLayout="center">
      <image filename="Interface/hud-frame.png"></image>
    </layer>
    <layer id="foreground" childLayout="horizontal">
      <panel id="panel_left" width="80%" height="100%" childLayout="vertical" ></panel>
      <panel id="panel_right" width="20%" height="100%" childLayout="vertical">
        <panel id="panel_top_right1" width="100%" height="15%" childLayout="center">
          <control name="label" color="#000" text="123" width="100%" height="100%" />
        </panel>
        <panel id="panel_top_right2" width="100%" height="15%" childLayout="center">
          <image filename="Interface/face1.png" valign="center" align="center" height="50%" width="30%" ></image>
        </panel>
        <panel id="panel_bot_right" width="100%" height="70%" valign="center" ></panel>
      </panel>
    </layer>
  </screen>
</nifty>

How can I get proper nifty-gui xsd ?

Found alternative/temporary solution!
Unpacked nifty-gui.jar and copy nifty-1.3.xsd in my local apache. I used local IP <IP_ADDRESS> and then pulled out  xsd with (my working example):
<nifty xmlns="http://<IP_ADDRESS>/nifty-gui/nifty-1.3.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://<IP_ADDRESS>/nifty-gui/nifty-1.3.xsd http://<IP_ADDRESS>/nifty-gui/nifty-1.3.xsd">

Now I can see downloaded xsd in JME project directory under project/nbproject/private/retriver/<IP_ADDRESS>/nifty-gui and no more error "Cannot find the declaration of element 'nifty' "
Under same project for url http://nifty-gui.lessvoid.com/nifty-gui there is file with content:

<title>Nifty GUI - Blog moved to a new site</title>
<meta http-equiv="refresh" content="0; url=http://void256.github.io/nifty-gui/" />

	The Nifty GUI Blog moved to a new site:

http://void256.github.io/nifty-gui/

and that last location return 404 code. Which means no so needed xsd.
This solution is temporary so my work may continue.
Waiting for any other solutions.

You found a clever solution :smile: . I think that you also point out that what problem is, the xsd is no more online. I don't know why it cause the exception in the editor tough. Are you using JME 3.1 alpha? If it's not you are using the old integrated editor. About my nifty editor try using the 0.6 version (it's exactly the same as the one integrated in JME 3.1 alpha ). I've just tried it and it's seems to not complain about the xsd.
P.S. the 0.6 version is available in my githup repo.

I use JME 3.0, wanted stable SDK for fast introduction into game programming. Almost everything  about JME on their pages is for 3.0 version. Have two PCs, one ubuntu 12 LTS, another ubuntu 14 LTS. Same errors on both.  Your point taken, must go forward although JME  3.1 is in alpha.
... Downloaded NIfty editor 0.6
Thanks

You could stay with 3.0 if you will use edit the gui using the stand alone editor. It has a pretty decent integration with IDE (actually with whatever ide you are using). It's not well documented unfortunately :disappointed: sorry for that. Basically the steps too produce a working gui is:

Create a new gui file in JME IDE.
Open Nifty-Editor and open the file ( File-->Open )
Set Asset Folder in Nifty-Editor to JME asset folder.  Add images controls etc.. ( you can also add style and custom controls via File menu )
Then use the gui in your Game :smile:

Everything works now. 1. xsd file is on rich localy, 2. Use JME3.0
Also use Nifty-editor as You instructed. Xml opens in NE0.6 but some tags missing after opening file.
Used xml that I posted few posts above.
What is missing ?
in panel id="panel_top" and in panel id="panel_mid" text tag missing, and tag
<interact onClick="startGame(hud)"/>

is missing.
If I do nothing some tags are missing from original xml.
Suggestions ?

Unfortunately that's a bug or better it's a not implemented feature :smile: . The editor should only skips that elements and save them after, but now it doesn't sorry. :cry:

So @void256 is the hosting location for the XSD no longer valid?

Isn't the XSD embedded into one of the jar files?

I've recovered the following text from one of the old website backups. This text was available under http://nifty-gui.lessvoid.com/nifty-gui and is now available there as a plain-text file again.
Here is the text:
Hi there, seems like you're looking for the Nifty GUI XML-schema (XSD) file.
Well, the good news is, you've come to the kinda right place ;)

Starting with Nifty 1.4 the correct XSD will always be included in your nifty.jar.
To access it, you can simply unjar it (jar -xf nifty.jar) and find it in the file "nifty.xsd".
The reason for this and why the XSD is not directly available for download is to
allow us to make changes to the XSD more easily.

The latest version of the XSD is always availabe at github of course. So if you just
want to take a look you can do so here (Nifty 1.4 XSD at github):

https://github.com/void256/nifty-gui/blob/1.4/nifty-core/src/main/resources/nifty.xsd

But make sure that the XSD matches the Nifty version you use. It's probably a good
idea to just use the "nifty.xsd" that ships with your Nifty version to be sure.
You know, the one you can find in the "nifty.jar".

Best regards,
void

In short, a XML namespace is usually a URI but it is not required by XML-Schema that an actual file exists at that URI (although sometimes it is).
The correct and current namespace for 1.4.x Nifty is http://nifty-gui.lessvoid.com/nifty-gui. All the other namespaces are old and not supported anymore (or require the corresponding old Nifty version).
JME probably shipped Nifty 1.3 for a long time which would explain the old namespace in the examples there or the code that was generated by the SDK. Current JME should come with Nifty 1.4 but I've not verified it right now.
I'll close this issue now. Feel free to re-open it if necessary!

Oh and btw: http://nifty-gui.lessvoid.com/ now forwards to the correct URL as well: http://void256.github.io/blog/


Fix spurious gui e2e dropdown test failures

Pull Request Description
In GUI E2E widgets.spec.ts, be more specific about which tested dropdowns should be visible. Since the tested node actually receives two dropdowns, the test could fail by detecting both and expecting only one. Since we already have a very specific selector for the dropdown we are testing, use it instead of fresh global locator.
Checklist
Please ensure that the following checklist has been satisfied before submitting the PR:

[x] The documentation has been updated, if necessary.
[x] Screenshots/screencasts have been attached, if there are any visual changes. For interactive or animated visual changes, a screencast is preferred.
[x] All code follows the
Scala,
Java,
and
Rust
style guides. In case you are using a language not listed above, follow the Rust style guide.
All code has been tested:

[x] Unit tests have been written where possible.
[x] If GUI codebase was changed, the GUI was tested when built using ./run ide build.

Thank you very much for fixing this issue :)

Seems like it is still failing in a similar way as before:
 INFO ide_ci::program::command: npmℹ   1) widgets.spec.ts:147:1 › Selection widgets in Data.read node ───────────────────────────────────
 INFO ide_ci::program::command: npmℹ
 INFO ide_ci::program::command: npmℹ     Error: expect.toBeVisible: Error: strict mode violation: locator('.GraphNode').filter({ has: locator('.binding').and(getByText('data', { exact: true })) }).locator('.DropdownWidget') resolved to 2 elements:
 INFO ide_ci::program::command: npmℹ         1)
…
 aka locator('div').filter({ hasText: /^Choose file…File 1File 2$/ })
 INFO ide_ci::program::command: npmℹ         2)
…
 aka locator('div').filter({ hasText: /^IgnoreReport_WarningReport_Error$/ })
 INFO ide_ci::program::command: npmℹ
 INFO ide_ci::program::command: npmℹ     Call log:
 INFO ide_ci::program::command: npmℹ       - expect.toBeVisible with timeout 5000ms
 INFO ide_ci::program::command: npmℹ       - waiting for locator('.GraphNode').filter({ has: locator('.binding').and(getByText('data', { exact: true })) }).locator('.DropdownWidget')
 INFO ide_ci::program::command: npmℹ
 INFO ide_ci::program::command: npmℹ
 INFO ide_ci::program::command: npmℹ       31 |
 INFO ide_ci::program::command: npmℹ       32 |   async expectVisible(): Promise<void> {
 INFO ide_ci::program::command: npmℹ     > 33 |     await expect(this.dropDown).toBeVisible()
 INFO ide_ci::program::command: npmℹ          |                                 ^
 INFO ide_ci::program::command: npmℹ       34 |   }
 INFO ide_ci::program::command: npmℹ       35 |
 INFO ide_ci::program::command: npmℹ       36 |   async expectNotVisible(): Promise<void> {
 INFO ide_ci::program::command: npmℹ
 INFO ide_ci::program::command: npmℹ         at DropDownLocator.expectVisible (/runner/_work/enso/enso/app/gui2/e2e/widgets.spec.ts:33:33)
 INFO ide_ci::program::command: npmℹ         at DropDownLocator.expectVisibleWithOptions (/runner/_work/enso/enso/app/gui2/e2e/widgets.spec.ts:21:16)
 INFO ide_ci::program::command: npmℹ         at /runner/_work/enso/enso/app/gui2/e2e/widgets.spec.ts:192:18


[5.9.0] Remove /usr/bin/../lib/ from directories passed to linker to look up libraries for target triple

Cherrypick of #6824
Explanation: This host-specific toolchain directory was added years ago in #2035 to the list of library directories, but it can cause problems when cross-compiling.
Scope: Right now, nothing is placed in this directory, so remove it before it can cause problems.
Issue: #6767
Risk: low, as nothing relies on it yet
Testing: Passed all CI and I've removed it for my native Android builds of the toolchain for the last four months, without a problem.
Reviewer: @neonichu

Wondering what the impact would be if we only got this change in the non-macOS 5.9.0 toolchains, it may be too late for the macOS one at this point. cc @tomerd

I think main + 5.9 branch is sufficient to mitigate any risk (give it some baking time)


Improve user search controller

Using getEntityManager on the Connection object is deprecated, so I replaced that by booting an instance of the EntityManager instead.

Updated PR to import classes.


can't get .pth and .ckpt models working

The MDX23C...ckpt type models seem to give me error
    self.primary_stem_name = self.model_data["primary_stem"]
KeyError: 'primary_stem'

And all the HP_...pth uvr models seem to give me a RuntimeError: Invalid buffer size: 3.94 GB
The .onnx models are working fine.
I am running on a intel i9  2.4Ghz MacBook Pro with 32GB RAM.
I can use other cli tools to run the uvr HP_ models just fine, so not sure why this runner can't.
Any suggestions?
Here are some full logs if they help:
MDX23:
(.venv) ➜  PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 ./.venv/bin/python -m sandbox.separator
2024-07-20 10:34:07,540 - INFO - separator - Separator version 0.14.3 instantiating with output_dir: None, output_format: WAV
2024-07-20 10:34:07,540 - INFO - separator - Operating System: Darwin Darwin Kernel Version 23.5.0: Wed May  1 20:09:52 PDT 2024; root:xnu-10063.121.3~5/RELEASE_X86_64
2024-07-20 10:34:07,540 - INFO - separator - System: Darwin Node: xxxs-MacBook-Pro-2.local Release: 23.5.0 Machine: x86_64 Proc: i386
2024-07-20 10:34:07,540 - INFO - separator - Python Version: 3.10.14
2024-07-20 10:34:07,857 - INFO - separator - FFmpeg installed: ffmpeg version 7.0 Copyright (c) 2000-2024 the FFmpeg developers
2024-07-20 10:34:07,858 - DEBUG - separator - Python package: onnxruntime-gpu not installed
2024-07-20 10:34:07,858 - DEBUG - separator - Python package: onnxruntime-silicon not installed
2024-07-20 10:34:07,859 - INFO - separator - ONNX Runtime CPU package installed with version: 1.18.1
2024-07-20 10:34:07,881 - INFO - separator - Apple Silicon MPS/CoreML is available in Torch, setting Torch device to MPS
2024-07-20 10:34:07,881 - INFO - separator - ONNXruntime has CoreMLExecutionProvider available, enabling acceleration
2024-07-20 10:34:07,881 - INFO - separator - Loading model MDX23C-8KFFT-InstVoc_HQ.ckpt...
2024-07-20 10:34:07,881 - DEBUG - separator - Model path set to /assets/separation/MDX23C-8KFFT-InstVoc_HQ.ckpt
2024-07-20 10:34:07,881 - DEBUG - separator - Calculating MD5 hash for model file to identify model parameters from UVR data...
2024-07-20 10:34:07,881 - DEBUG - separator - Calculating hash of model file /assets/separation/MDX23C-8KFFT-InstVoc_HQ.ckpt
2024-07-20 10:34:07,903 - DEBUG - separator - Model /assets/separation/MDX23C-8KFFT-InstVoc_HQ.ckpt has hash 99b6ceaae542265a3b6d657bf9fde79f
2024-07-20 10:34:07,903 - DEBUG - separator - VR model data path set to /assets/separation/vr_model_data.json
2024-07-20 10:34:07,903 - DEBUG - separator - MDX model data path set to /assets/separation/mdx_model_data.json
2024-07-20 10:34:07,903 - DEBUG - separator - Loading MDX and VR model parameters from UVR model data files...
2024-07-20 10:34:07,905 - DEBUG - separator - Model data loaded: {'config_yaml': 'model_2_stem_full_band_8k.yaml'}
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File<EMAIL_ADDRESS>line 86, in _run_code
    exec(code, run_globals)
  File "/sandbox/separator.py", line 73, in <module>
    separator.load_model(
  File "/.venv/lib/python3.10/site-packages/audio_separator/separator/separator.py", line 523, in load_model
    self.model_instance = MDXSeparator(common_config=common_params, arch_config=self.arch_specific_params["MDX"])
  File "/.venv/lib/python3.10/site-packages/audio_separator/separator/architectures/mdx_separator.py", line 22, in __init__
    super().__init__(config=common_config)
  File "/.venv/lib/python3.10/site-packages/audio_separator/separator/common_separator.py", line 83, in __init__
    self.primary_stem_name = self.model_data["primary_stem"]
KeyError: 'primary_stem'

UVR HP:
(.venv) ➜  PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 ./.venv/bin/python -m sandbox.separator
2024-07-20 10:28:31,793 - INFO - separator - Separator version 0.14.3 instantiating with output_dir: None, output_format: WAV
2024-07-20 10:28:31,793 - INFO - separator - Operating System: Darwin Darwin Kernel Version 23.5.0: Wed May  1 20:09:52 PDT 2024; root:xnu-10063.121.3~5/RELEASE_X86_64
2024-07-20 10:28:31,793 - INFO - separator - System: Darwin Node: xxxs-MacBook-Pro-2.local Release: 23.5.0 Machine: x86_64 Proc: i386
2024-07-20 10:28:31,793 - INFO - separator - Python Version: 3.10.14
2024-07-20 10:28:31,926 - INFO - separator - FFmpeg installed: ffmpeg version 7.0 Copyright (c) 2000-2024 the FFmpeg developers
2024-07-20 10:28:31,927 - DEBUG - separator - Python package: onnxruntime-gpu not installed
2024-07-20 10:28:31,927 - DEBUG - separator - Python package: onnxruntime-silicon not installed
2024-07-20 10:28:31,928 - INFO - separator - ONNX Runtime CPU package installed with version: 1.18.1
2024-07-20 10:28:31,949 - INFO - separator - Apple Silicon MPS/CoreML is available in Torch, setting Torch device to MPS
2024-07-20 10:28:31,949 - INFO - separator - ONNXruntime has CoreMLExecutionProvider available, enabling acceleration
2024-07-20 10:28:31,949 - INFO - separator - Loading model 2_HP-UVR.pth...
2024-07-20 10:28:31,949 - DEBUG - separator - Model path set to /assets/separation/2_HP-UVR.pth
2024-07-20 10:28:31,950 - DEBUG - separator - Calculating MD5 hash for model file to identify model parameters from UVR data...
2024-07-20 10:28:31,950 - DEBUG - separator - Calculating hash of model file /assets/separation/2_HP-UVR.pth
2024-07-20 10:28:31,971 - DEBUG - separator - Model /assets/separation/2_HP-UVR.pth has hash 941f3f7f0b0341f12087aacdfef644b1
2024-07-20 10:28:31,971 - DEBUG - separator - VR model data path set to /assets/separation/vr_model_data.json
2024-07-20 10:28:31,971 - DEBUG - separator - MDX model data path set to /assets/separation/mdx_model_data.json
2024-07-20 10:28:31,971 - DEBUG - separator - Loading MDX and VR model parameters from UVR model data files...
2024-07-20 10:28:31,972 - DEBUG - separator - Model data loaded: {'vr_model_param': '4band_v2', 'primary_stem': 'Instrumental'}
2024-07-20 10:28:31,972 - DEBUG - common_separator - Common params: model_name=2_HP-UVR, model_path=/assets/separation/2_HP-UVR.pth
2024-07-20 10:28:31,973 - DEBUG - common_separator - Common params: primary_stem_output_path=None, secondary_stem_output_path=None
2024-07-20 10:28:31,973 - DEBUG - common_separator - Common params: output_dir=None, output_format=WAV
2024-07-20 10:28:31,973 - DEBUG - common_separator - Common params: normalization_threshold=0.9
2024-07-20 10:28:31,973 - DEBUG - common_separator - Common params: enable_denoise=False, output_single_stem=None
2024-07-20 10:28:31,973 - DEBUG - common_separator - Common params: invert_using_spec=False, sample_rate=44100
2024-07-20 10:28:31,973 - DEBUG - common_separator - Common params: primary_stem_name=Instrumental, secondary_stem_name=Vocals
2024-07-20 10:28:31,973 - DEBUG - common_separator - Common params: is_karaoke=False, is_bv_model=False, bv_model_rebalance=0
2024-07-20 10:28:31,973 - DEBUG - vr_separator - Model data: {'vr_model_param': '4band_v2', 'primary_stem': 'Instrumental'}
2024-07-20 10:28:31,974 - DEBUG - vr_separator - Model params: {'bins': 672, 'unstable_bins': 8, 'reduction_bins': 637, 'band': {1: {'sr': 7350, 'hl': 80, 'n_fft': 640, 'crop_start': 0, 'crop_stop': 85, 'lpf_start': 25, 'lpf_stop': 53, 'res_type': 'polyphase'}, 2: {'sr': 7350, 'hl': 80, 'n_fft': 320, 'crop_start': 4, 'crop_stop': 87, 'hpf_start': 25, 'hpf_stop': 12, 'lpf_start': 31, 'lpf_stop': 62, 'res_type': 'polyphase'}, 3: {'sr': 14700, 'hl': 160, 'n_fft': 512, 'crop_start': 17, 'crop_stop': 216, 'hpf_start': 48, 'hpf_stop': 24, 'lpf_start': 139, 'lpf_stop': 210, 'res_type': 'polyphase'}, 4: {'sr': 44100, 'hl': 480, 'n_fft': 960, 'crop_start': 78, 'crop_stop': 383, 'hpf_start': 130, 'hpf_stop': 86, 'res_type': 'kaiser_fast'}}, 'sr': 44100, 'pre_filter_start': 668, 'pre_filter_stop': 672, 'mid_side': False, 'mid_side_b': False, 'mid_side_b2': False, 'stereo_w': False, 'stereo_n': False, 'reverse': False}
2024-07-20 10:28:31,974 - DEBUG - vr_separator - VR arch params: enable_tta=False, enable_post_process=False, post_process_threshold=0.2
2024-07-20 10:28:31,974 - DEBUG - vr_separator - VR arch params: batch_size=16, window_size=512
2024-07-20 10:28:31,974 - DEBUG - vr_separator - VR arch params: high_end_process=False, aggression=5
2024-07-20 10:28:31,974 - DEBUG - vr_separator - VR arch params: is_vr_51_model=False, model_samplerate=44100, model_capacity=(32, 128)
2024-07-20 10:28:31,974 - INFO - vr_separator - VR Separator initialisation complete
2024-07-20 10:28:31,974 - DEBUG - separator - Loading model completed.
2024-07-20 10:28:31,974 - INFO - separator - Load model duration: 00:00:00
2024-07-20 10:28:31,974 - INFO - separator - Starting separation process for audio_file_path: /sandbox/downloads/dl.mp3
2024-07-20 10:28:31,974 - DEBUG - separator - Normalization threshold set to 0.9, waveform will lowered to this max amplitude to avoid clipping.
2024-07-20 10:28:31,974 - DEBUG - separator - Denoising disabled, model will only be run once. This is twice as fast, but may result in noisier output audio.
2024-07-20 10:28:31,974 - DEBUG - vr_separator - Starting inference...
2024-07-20 10:28:31,974 - DEBUG - vr_separator - Model size determined: 123812, NN architecture size: 123812
2024-07-20 10:28:31,974 - DEBUG - vr_separator - Determining model capacity...
2024-07-20 10:28:32,532 - DEBUG - vr_separator - Model loaded and moved to device.
2024-07-20 10:28:32,532 - DEBUG - vr_separator - loading_mix iteraring through 4 bands
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00,  1.49it/s]
2024-07-20 10:28:36,673 - DEBUG - vr_separator - inference_vr appending to X_dataset for each of 90 patches
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████| 90/90 [00:00<00:00, 494740.97it/s]
2024-07-20 10:28:36,673 - DEBUG - vr_separator - inference_vr iterating through 5 batches, batch_size = 16
  0%|                                                                                | 0/6 [00:24<?, ?it/s]
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File<EMAIL_ADDRESS>line 86, in _run_code
    exec(code, run_globals)
  File "/sandbox/separator.py", line 87, in <module>
    output_files = separator.separate(input_path)
  File "lib/python3.10/site-packages/audio_separator/separator/separator.py", line 559, in separate
    output_files = self.model_instance.separate(audio_file_path)
  File "lib/python3.10/site-packages/audio_separator/separator/architectures/vr_separator.py", line 150, in separate
    y_spec, v_spec = self.inference_vr(self.loading_mix(), self.torch_device, self.aggressiveness)
  File "lib/python3.10/site-packages/audio_separator/separator/architectures/vr_separator.py", line 305, in inference_vr
    mask = _execute(X_mag_pad, roi_size)
  File "lib/python3.10/site-packages/audio_separator/separator/architectures/vr_separator.py", line 272, in _execute
    pred = self.model_run.predict_mask(X_batch)
  File "lib/python3.10/site-packages/audio_separator/separator/uvr_lib_v5/vr_network/nets.py", line 169, in predict_mask
    mask = self.forward(input_tensor)
  File "lib/python3.10/site-packages/audio_separator/separator/uvr_lib_v5/vr_network/nets.py", line 148, in forward
    hidden_state = self.stg3_full_band_net(self.stg3_bridge(hidden_state))
  File "lib/python3.10/site-packages/audio_separator/separator/uvr_lib_v5/vr_network/nets.py", line 62, in __call__
    hidden_state = self.dec1(hidden_state, encoder_output1)
  File "lib/python3.10/site-packages/audio_separator/separator/uvr_lib_v5/vr_network/layers.py", line 183, in __call__
    input_tensor = torch.cat([input_tensor, skip], dim=1)  # Concatenate input_tensor and skip_connection along the channel dimension.
RuntimeError: Invalid buffer size: 3.94 GB

How did you install it? You're using a version from a year ago with more bugs than the latest version 😅
Separator version 0.14.3 instantiating

oh bugger, I added this to my requirements txt:
audio-separator[cpu]; sys_platform == 'darwin'
audio-separator[gpu]; sys_platform != 'darwin'

and did a pip install. let figure out why its getting an old version.. sorry :)

audio-separator[cpu]>=0.17.5; sys_platform == 'darwin'
audio-separator[gpu]>=0.17.5; sys_platform != 'darwin'

seems to have fixed it. this allows me tp use Mac locally and CUDA on modal

0.17.5 definitely working a lot better.
MDX23C now works and results are good thanks!
Sadly still having issues with the VR Architecture models:
PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 ./.venv/bin/python -m sandbox.separator
2024-07-20 18:23:13,812 - INFO - separator - Separator version 0.17.5 instantiating with output_dir: None, output_format: WAV
2024-07-20 18:23:13,812 - INFO - separator - Output directory not specified. Using current working directory.
2024-07-20 18:23:13,812 - INFO - separator - Operating System: Darwin Darwin Kernel Version 23.5.0: Wed May  1 20:09:52 PDT 2024; root:xnu-10063.121.3~5/RELEASE_X86_64
2024-07-20 18:23:13,822 - INFO - separator - System: Darwin Node: xxxs-MacBook-Pro-2.local Release: 23.5.0 Machine: x86_64 Proc: i386
2024-07-20 18:23:13,822 - INFO - separator - Python Version: 3.10.14
2024-07-20 18:23:13,822 - INFO - separator - PyTorch Version: 2.2.2
2024-07-20 18:23:13,939 - INFO - separator - FFmpeg installed: ffmpeg version 7.0 Copyright (c) 2000-2024 the FFmpeg developers
2024-07-20 18:23:13,941 - INFO - separator - ONNX Runtime CPU package installed with version: 1.18.1
2024-07-20 18:23:13,958 - INFO - separator - Apple Silicon MPS/CoreML is available in Torch, setting Torch device to MPS
2024-07-20 18:23:13,958 - INFO - separator - ONNXruntime has CoreMLExecutionProvider available, enabling acceleration
2024-07-20 18:23:13,958 - INFO - separator - Loading model 3_HP-Vocal-UVR.pth...
2024-07-20 18:23:14,824 - INFO - vr_separator - VR Separator initialisation complete
2024-07-20 18:23:14,825 - INFO - separator - Load model duration: 00:00:00
2024-07-20 18:23:14,825 - INFO - separator - Starting separation process for audio_file_path: /sandbox/downloads/dl.mp3
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:04<00:00,  1.07s/it]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████| 84/84 [00:00<00:00, 635959.45it/s]
  0%|                                                                                | 0/6 [00:22<?, ?it/s]
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File<EMAIL_ADDRESS>line 86, in _run_code
    exec(code, run_globals)
  File "/sandbox/separator.py", line 141, in <module>
    output_files = separator.separate(input_path)
  File "/.venv/lib/python3.10/site-packages/audio_separator/separator/separator.py", line 704, in separate
    output_files = self.model_instance.separate(audio_file_path)
  File "/.venv/lib/python3.10/site-packages/audio_separator/separator/architectures/vr_separator.py", line 150, in separate
    y_spec, v_spec = self.inference_vr(self.loading_mix(), self.torch_device, self.aggressiveness)
  File "/.venv/lib/python3.10/site-packages/audio_separator/separator/architectures/vr_separator.py", line 324, in inference_vr
    mask = _execute(X_mag_pad, roi_size)
  File "/.venv/lib/python3.10/site-packages/audio_separator/separator/architectures/vr_separator.py", line 291, in _execute
    pred = self.model_run.predict_mask(X_batch)
  File "/.venv/lib/python3.10/site-packages/audio_separator/separator/uvr_lib_v5/vr_network/nets.py", line 169, in predict_mask
    mask = self.forward(input_tensor)
  File "/.venv/lib/python3.10/site-packages/audio_separator/separator/uvr_lib_v5/vr_network/nets.py", line 148, in forward
    hidden_state = self.stg3_full_band_net(self.stg3_bridge(hidden_state))
  File "/.venv/lib/python3.10/site-packages/audio_separator/separator/uvr_lib_v5/vr_network/nets.py", line 62, in __call__
    hidden_state = self.dec1(hidden_state, encoder_output1)
  File "/.venv/lib/python3.10/site-packages/audio_separator/separator/uvr_lib_v5/vr_network/layers.py", line 179, in __call__
    input_tensor = F.interpolate(input_tensor, scale_factor=2, mode="bilinear", align_corners=True)
  File "/.venv/lib/python3.10/site-packages/torch/nn/functional.py", line 4038, in interpolate
    return torch._C._nn.upsample_bilinear2d(input, output_size, align_corners, scale_factors)
RuntimeError: Invalid buffer size: 3.00 GB

Also with the roformer models I get this:
PYTORCH_ENABLE_MPS_FALLBACK=1 PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 ./.venv/bin/python -m sandbox.separator
2024-07-20 18:29:58,351 - INFO - separator - Separator version 0.17.5 instantiating with output_dir: None, output_format: WAV
2024-07-20 18:29:58,351 - INFO - separator - Output directory not specified. Using current working directory.
2024-07-20 18:29:58,351 - INFO - separator - Operating System: Darwin Darwin Kernel Version 23.5.0: Wed May  1 20:09:52 PDT 2024; root:xnu-10063.121.3~5/RELEASE_X86_64
2024-07-20 18:29:58,362 - INFO - separator - System: Darwin Node: xxxs-MacBook-Pro-2.local Release: 23.5.0 Machine: x86_64 Proc: i386
2024-07-20 18:29:58,362 - INFO - separator - Python Version: 3.10.14
2024-07-20 18:29:58,362 - INFO - separator - PyTorch Version: 2.2.2
2024-07-20 18:29:58,715 - INFO - separator - FFmpeg installed: ffmpeg version 7.0 Copyright (c) 2000-2024 the FFmpeg developers
2024-07-20 18:29:58,717 - INFO - separator - ONNX Runtime CPU package installed with version: 1.18.1
2024-07-20 18:29:58,738 - INFO - separator - Apple Silicon MPS/CoreML is available in Torch, setting Torch device to MPS
2024-07-20 18:29:58,738 - INFO - separator - ONNXruntime has CoreMLExecutionProvider available, enabling acceleration
2024-07-20 18:29:58,738 - INFO - separator - Loading model model_mel_band_roformer_ep_3005_sdr_11.4360.ckpt...
2024-07-20 18:30:04,131 - INFO - mdxc_separator - MDXC Separator initialisation complete
2024-07-20 18:30:04,133 - INFO - separator - Load model duration: 00:00:05
2024-07-20 18:30:04,134 - INFO - separator - Starting separation process for audio_file_path: sandbox/downloads/dl.mp3
  0%|                                                                                | 0/32 [00:26<?, ?it/s]
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File<EMAIL_ADDRESS>line 86, in _run_code
    exec(code, run_globals)
  File "sandbox/separator.py", line 141, in <module>
    output_files = separator.separate(input_path)
  File ".venv/lib/python3.10/site-packages/audio_separator/separator/separator.py", line 704, in separate
    output_files = self.model_instance.separate(audio_file_path)
  File ".venv/lib/python3.10/site-packages/audio_separator/separator/architectures/mdxc_separator.py", line 134, in separate
    source = self.demix(mix=mix)
  File ".venv/lib/python3.10/site-packages/audio_separator/separator/architectures/mdxc_separator.py", line 248, in demix
    x = self.model_run(part.unsqueeze(0))[0]
  File ".venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
  File ".venv/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1520, in _call_impl
    return forward_call(*args, **kwargs)
  File ".venv/lib/python3.10/site-packages/audio_separator/separator/uvr_lib_v5/mel_band_roformer.py", line 462, in forward
    masks.cpu() if x_is_mps else masks).to(device)
RuntimeError: Unsupported type byte size: ComplexFloat

guessing Intel Macbook no good for this?

Hmm, I don't have an intel mac to test on, but this is a bit confusing to me 🤔
Apple Silicon MPS/CoreML is available in Torch, setting Torch device to MPS
That doesn't make sense to me, as I thought it was only Apple Silicon macs which supported the Apple MPS GPU acceleration: https://developer.apple.com/documentation/metalperformanceshaders
Here's the code where that is checked for in audio-separator:
https://github.com/nomadkaraoke/python-audio-separator/blob/main/audio_separator/separator/separator.py#L225
it then calls this function which is where the torch device is set to use MPS:
https://github.com/nomadkaraoke/python-audio-separator/blob/main/audio_separator/separator/separator.py#L251
I'd appreciate if you could test changing that to stop it from configuring MPS (forcing it to use your CPU only for inferencing) - e.g. this change:
https://github.com/nomadkaraoke/python-audio-separator/pull/91/files
If that works and makes all models inference without error for you, then we need to improve the way we detect support for Apple MPS in audio-separator to ensure it doesn't try to use it on Intel Macs!

That seems to have done it yes.
Maybe the issue is PyTorch  not classifying my MacBook properly as having a low power GPU - it has a Radeon PRO 5300M (4GB) which would explain the buffer size issue.
https://github.com/pytorch/pytorch/blob/8571007017b61d793c406142bad6baeda331d00d/aten/src/ATen/mps/MPSDevice.mm#L31

Gotcha, thank you for confirming!
I've just released audio-separator version 0.17.6 with a fix for this - basically I'm just detecting the processor type and only enabling MPS if it's ARM.
I think PyTorch doesn't really support MPS properly on Intel Mac GPUs unfortunately, so this is probably the best option for now so things at least work out of the box for folks like you, even if that means ignoring your GPU unfortunately.

Lovely will upgrade to it.
Also, some UVR models (5_HP, 6_HP & UVR-BVE) are just giving me empty sound files and Demucs models complain about a missing _tkinter module. Tried a brew install python-tk but no luck.

I think those VR models are a known issue I'm afraid, I'd love for the BVE one in particular to work in audio-separator but it doesn't and I haven't prioritized trying to figure out why yet:
https://github.com/nomadkaraoke/python-audio-separator/issues/45
Not sure about the demucs issue, does it actually fail? If so, please share debug logs as I've used the htdemucs_6s.yaml model a bunch without issues!

Demucs doesn't seem to start:
2024-07-20 23:42:45,855 - INFO - separator - Separator version 0.17.5 instantiating with output_dir: None, output_format: WAV
2024-07-20 23:42:45,855 - INFO - separator - Output directory not specified. Using current working directory.
2024-07-20 23:42:45,855 - INFO - separator - Operating System: Darwin Darwin Kernel Version 23.5.0: Wed May  1 20:09:52 PDT 2024; root:xnu-10063.121.3~5/RELEASE_X86_64
2024-07-20 23:42:45,864 - INFO - separator - System: Darwin Node: xxx-MacBook-Pro-2.local Release: 23.5.0 Machine: x86_64 Proc: i386
2024-07-20 23:42:45,865 - INFO - separator - Python Version: 3.10.14
2024-07-20 23:42:45,865 - INFO - separator - PyTorch Version: 2.2.2
2024-07-20 23:42:51,950 - INFO - separator - FFmpeg installed: ffmpeg version 7.0.1 Copyright (c) 2000-2024 the FFmpeg developers
2024-07-20 23:42:51,951 - INFO - separator - ONNX Runtime CPU package installed with version: 1.18.1
2024-07-20 23:42:51,951 - INFO - separator - No hardware acceleration could be configured, running in CPU mode
2024-07-20 23:42:51,952 - INFO - separator - Loading model htdemucs_6s.yaml...
Traceback (most recent call last):
  File<EMAIL_ADDRESS>line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File<EMAIL_ADDRESS>line 86, in _run_code
    exec(code, run_globals)
  File "sandbox/separator.py", line 126, in <module>
    separator.load_model(
  File ".venv/lib/python3.10/site-packages/audio_separator/separator/separator.py", line 673, in load_model
    module = importlib.import_module(f"audio_separator.separator.architectures.{module_name}")
  File<EMAIL_ADDRESS>line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File ".venv/lib/python3.10/site-packages/audio_separator/separator/architectures/demucs_separator.py", line 7, in <module>
    from audio_separator.separator.uvr_lib_v5.demucs.apply import apply_model, demucs_segments
  File ".venv/lib/python3.10/site-packages/audio_separator/separator/uvr_lib_v5/demucs/apply.py", line 19, in <module>
    import tkinter as tk
  File<EMAIL_ADDRESS>line 37, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'

Huh, that's very strange, for two reasons:

I don't really understand why it works for me but not you, I can only assume there's a difference between the way the python versions we have were compiled (which does make sense cos I'm on ARM and you're on i386 but doesn't really explain why the python package on homebrew would have tkinter compiled for one CPU architecture but not another... You can test whether your python install has tkinter or not with python -m tkinter btw.
Tkinter is the standard Python interface to the Tk GUI toolkit, which should only be relevant for GUI applications... which audio-separator strictly is not :) It shouldn't be relevant for this project in any way. Apparently the demucs inferencing code I copied from UVR had completely unused Tkinter imports in it 🙃

So anyway, I released another new version, audio-separator version 0.18.3 which removes those references and should fix demucs for you 🙏

Demucs working on new version 0.18.3!


CSharp plugin

Hi there, please advise, how can I develop a GRPC plugin that handles the transmission of request ID through c# generated code ?

To be honest, I am not sure I understand the question, can you elaborate.
Also, this is not an issue, so I'll close it. For gRPC related usage question, use our user forum https://groups.google.com/forum/#!forum/grpc-io or ask on stackoverflow.com


added code to finish assignment-3

What changes are you trying to make? (e.g. Adding or removing code, refactoring existing code, adding reports)
Answered questions and added code to accomplish assignment.
What did you learn from the changes you have made?
Applies SHAP to obtain local and global explanation, Interprets shap values
Was there another approach you were thinking about making? If so, what approach(es) were you thinking of?
Were there any challenges? If so, what issue(s) did you face? How did you overcome it?
How were these changes tested?
Tested on VS code
A reference to a related issue in your repository (if applicable)
Checklist

[ ] I can confirm that my changes are working as intended

A3 complete


add o365sen.net

Seoul Metropolitan Office for Education (서울특별시교육청), gives an account with Microsoft Office 365 subscription to students who applied for it. This domain is not only for a school, it's for students in Seoul, Korea.
Link for Seoul Metropolitan Office for Education <-- This page may not support English.

I have added the Korean name of Seoul Metropolitan Office for Education (서울특별시교육청) to the file.

I have added the Korean name of Seoul Metropolitan Office for Education (서울특별시교육청) to the file.

@yeonho1 Are the students who have email addresses in this domain also able to get an email address in their university? Why do they apply for the email address in this domain?

@yeonho1 Are the students who have email addresses in this domain also able to get an email address in their university? Why do they apply for the email address in this domain?

With email addresses in this domain, students can use Microsoft Office 365 without any cost. Also, students with these email addresses may not be able to get an email address in their school, if their school doesn't provide an email address for students.

With email addresses in this domain, students can use Microsoft Office 365 without any cost. Also, students with these email addresses may not be able to get an email address in their school, if their school doesn't provide an email address for students.

@yeonho1 Thank you for the clarification. I am sorry, I have to close this request without merging. We do not include umbrella domains to this repository. We assessed possible risk of abusing this domain because of its too broad availability, and think that the risk is higher than we can accept.
If you do not have an email which your school provided you with, please apply for free educational license with an official document which proves that you are a student. You can do it using "OFFICIAL DOCUMENT" tab at https://www.jetbrains.com/shop/eform/students.
Thank you for the understanding!

@yeonho1 Thank you for the clarification. I am sorry, I have to close this request without merging. We do not include umbrella domains to this repository. We assessed possible risk of abusing this domain because of its too broad availability, and think that the risk is higher than we can accept.
If you do not have an email which your school provided you with, please apply for free educational license with an official document which proves that you are a student. You can do it using "OFFICIAL DOCUMENT" tab at https://www.jetbrains.com/shop/eform/students.
Thank you for the understanding!

@philipto As I mentioned 2 years ago, the mail services are provided by our government, not school.
If you got some request from Korean students, please remember that the domain could be government's domain and approve it.
@yeonho1 This PR should be approved. Please reopen it if you still need this domain.


G1 high level api only works for damping and standing mode

Hi I tried running python3 ./example/g1/high_level/g1_loco_client_example.py eth0 but it only works for standing and damping mode, could you check whether this works on your end? Thanks

add self.Start() before this line https://github.com/unitreerobotics/unitree_sdk2_python/blob/c52f48b0b55f29dbc6ed3f67303bbd25732dc069/unitree_sdk2py/g1/loco/g1_loco_client.py#L96

add self.Start() before this line
https://github.com/unitreerobotics/unitree_sdk2_python/blob/c52f48b0b55f29dbc6ed3f67303bbd25732dc069/unitree_sdk2py/g1/loco/g1_loco_client.py#L96

did you get the Squat() and StandUp() commands running fine?
For me the robot goes into unbalanced and falls when these methods are called.


JAVA-806: Session leak using connect() with wrong keyspace name

This is a pull request against 2.0 that reuses the commit by @fbaro + additional unit test.

Hello @fbaro thank you for your contribution! Your fix could be applied to 2.0 as well so I went ahead and created #371 and am going to close this one, but your commit has been preserved. Thanks!

Looks good to me! :+1:


Enhancement - HTML Geolocation API #10 - attempt

Hope you don't mind - I had a bit of time give this a crack this week. Added a button MyLocationIcon from mui to the search bar. Clicking this  should get the users postcode from https://api.postcodes.io with the position from the getCurrentPosition function in geo.js - there's a small new function in geo.js getCurrentPostcode() and some extra work gone in to the useEffect hook in PostcodeSearch.js. I found it a bit fiddly to get async api calls to update the state with react hooks.
Hopefully it's ok, but it might need tidying up a bit and some more testing.

Great! Thanks for this. Will take a look over the weekend and pull in.

Oh, and just to note, will merge now but unfortunately the branch is not all automated yet! So will publish later today.