can't add character in state on ke 1.7

can't add character in state on ke 1.7
I'm trying to add a character to the state. to fix the delay after changing the character
But it can't.

wrong not in stage.hx
go in PlayState


add documentation about storage-initializer userid for istio-cni

What this PR does / why we need it:
Follow-up for https://github.com/kserve/kserve/pull/2853 to document the new behaviour on OpenShift.
Which issue(s) this PR fixes
Type of changes
Please delete options that are not relevant.

Documentation update

Feature/Issue validation/testing:

Logs

Please confirm that if this PR changes any image versions, then that's the sole change this PR makes.

Checklist:

[X] Have you added unit/e2e tests that prove your fix is effective or that this feature works?
[X] Has code been commented, particularly in hard-to-understand areas?
[X] Have you made corresponding changes to the documentation?

Release note:
NONE

@yuzisun , @skonto documentation for OpenShift updated. OK like this?

/lgtm
/approve


Correct README dependency?

I'm pretty new to Phoenix and Elixir, but on phoenix 1.3.0-rc and elixir 1.5.1 I had to add {:ueberauth_spotify, "~> 0.0.1", hex: :ueberauth_spotify_oauth} as specified on hex.pm for this package. Does that make sense? Aside from that it worked great for me, and I appreciated your extending of the base ueberauth instructions!

That is correct. Would you want to submit a PR to update the README?

👍


[$250] [Search v2.1] 'Hold' Button Appears for Held Expense Offline

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

Version Number:  v9.0.14-2
Reproducible in staging?: Y
Reproducible in production?: Y
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Logs: https://stackoverflow.com/c/expensify/questions/4856
Issue reported by: Applause-Internal team
Action Performed:

FAB > Start chat > Select email
Click the plus sign > Submit expenses
Add amount > Click Next > Submit
Go to Search > Click on submitted expense checkbox > Make it offline
Click on View > Click header > Click Hold and add reason
Make it online
Click on the selected chevron > Notice the hold expense button is present

Expected Result:
After holding the expense offline and translating it to online, the hold button should not appear in the dropdown.
Actual Result:
When submitting an expense, making it offline, unholding from the expense details, and making it online, the hold button still appears in the dropdown of the selected expense.
Workaround:
Unknown
Platforms:

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

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

Screenshots/Videos
https://github.com/user-attachments/assets/6a36caa8-2493-4674-9c75-5198b7cb30a2

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~014948c9722918372c
Upwork Job ID:<PHONE_NUMBER>482635930
Last Price Increase: 2024-09-09
Automatic offers:

jjcoffee | Reviewer | 103899490
cretadn22 | Contributor | 103899492

Issue OwnerCurrent Issue Owner: @

We think this issue might be related to the #collect project.

Thanks for the proposal @cretadn22!

Eliminate !isOffline from both shouldShowHoldOption and shouldShowUnholdOption (perhaps from both shouldShowDeleteOption)

I don't think this would give us the result we're looking for here as it would change the behaviour so that we can use the Hold option whilst offline on the search screen, which has been deliberately disabled in https://github.com/Expensify/App/pull/45712 (see Offline Tests section).
It looks like there might be a broader problem here as I get the same behaviour without going offline, so these repro steps work for me:

Go to Search
Click on View for any outstanding expense > Click header > Click Hold and add reason
Select checkbox next to the same expense
Tap the bulk actions chevron, and note that the hold expense button is present

Looks like HoldMoneyRequestOnSearch returns Onyx data that updates the canHold: false value for the transaction (as part of the snapshot_ key, whereas HoldRequest doesn't do this. I think this may need a BE fix @kevinksullivan.

@kevinksullivan Are you able to confirm if we want to allow holding expenses whilst offline from the search view? It was deliberately disabled in https://github.com/Expensify/App/pull/45712 so I'm assuming there's no BE support for bulk holding expenses.

Friendly bump @kevinksullivan :bow:

Friendly bump on this @kevinksullivan :pray:

sorry for the delay, updated!

Still looking for an internal volunteer.

This is a pretty confusing issue to parse from what's written in the OP. Would be good to spruce in the triage before moving on to confirm it makes sense.
You can't take the bulk search actions to Delete or Hold offline, so them being missing from the dropdown menu when offline is expected: https://github.com/Expensify/App/issues/46890#issuecomment-2277392698
The video in the OP doesn't show the Hold option available, so that's not the "problem" reported:

The expected results:

After holding the expense offline and translating it to online, the hold button should not appear in the dropdown.

No idea what we mean by "translating it to online" here.
The actual results:

When submitting an expense, making it offline, unholding from the expense details, and making it online, the hold button still appears in the dropdown of the selected expense.

Is this a typo or something, because after unholding you would expect to see hold? 🤔
Anyway, trying to piece this together. Is this a better reflection of the bug we're talking about here?
Steps:

Submit an expense
Go to the search page
Go offline
Click the expense row to open it in the RHP
Click the expense header > Hold the expense from the details page
Go online
Select the expense you held in the table on the search page
Observe the Hold button is displayed in the bulk action menu for an expense that's already held.

Expected results:
Held expenses on the Search page when selected should show Unhold in the bulk action menu.
Actual results:
Held expenses on the Search page when selected show Hold in the bulk action menu.
https://github.com/user-attachments/assets/da7f0aa2-a1c5-4c75-9ae0-6be910dfdf66
(CC: @luacmartins @robertjchen for vis).

Just to resurface what I posted here; going offline isn't necessary to reproduce the issue. It's as simple as:

Go to Search
Click on View for any outstanding expense > Click header > Click Hold and add reason
Select checkbox next to the same expense
Tap the bulk actions chevron, and note that the hold expense button is present

I think we might need to look at both on the frontend to filter out the hold action.

Hmm I think there would still be a difficulty there in deciding which is the source of truth, since the bulk action HoldMoneyRequestOnSearch only updates the snapshot_ Onyx data, not the transaction.comment. I guess we can force an update of the snapshot data from the FE though, so agree that this could be made external again. cc @kevinksullivan

Just to resurface what I posted https://github.com/Expensify/App/issues/46524#issuecomment-2265245960; going offline isn't necessary to reproduce the issue.

Ha, good point. Even simpler than the current OP.

I guess we can force an update of the snapshot data from the FE though, so agree that this could be made external again

This what you're looking for here, @luacmartins? If so, let's put External back on this issue.

This what you're looking for here, @luacmartins? If so, let's put External back on this issue.

This is the only way that I can think of 🤔 That being said, it's not ideal since it'd trigger multiple API calls. Maybe the solution is to get rid of the canHold and canUnhold keys and use the full "live" Onyx data, i.e. transaction.comment along with policy and report data to decide what actions to take. I think that'd require a larger discussion with the team since it changes some fundamentals of the Search design.

Maybe the solution is to get rid of the canHold and canUnhold keys and use the full "live" Onyx data, i.e. transaction.comment along with policy and report data to decide what actions to take

I'm partial to this approach as well- multiple API calls really isn't ideal, but may be the simplest? The alternative that "changes some fundamentals of the Search design" sounds quite significant? 🤔
What's the main downside with the multiple API calls? It does break 1:1:1 and will result in performance issues, but anything else that we should take into account?

I guess another solution might be for the expense detail's hold button to call HoldMoneyRequestOnSearch (i.e. what the bulk action calls) only when search is in the central pane. That way both the snapshot and the transaction get updated in the BE response and there's no extra API call to worry about.

Oh that's an interesting solution. Can we test it to make sure it works as expected?

Asking on Slack to see if anyone wants to flesh out a proposal using that solution. Otherwise I'll try to get to it soon!

We will need to make a few additional changes to ensure everything functions correctly

@cretadn22 Thanks! Could you elaborate on this a bit more? I think we'd like to make sure it's the right approach before moving on to the PR.

I noticed that when we refresh the page, the Hold button changes to Unhold.  I think this is the expected behavior.
Or should  it update to Unhold automatically without needing to refresh the page? if this is the cause we can trigger a re-render when we press the Hold from the expense header.
https://github.com/user-attachments/assets/4144c169-539d-4252-9090-042bfc427dd5

I noticed that when we refresh the page, the Hold button changes to Unhold.

@Shahidullah-Muffakir That happens because on refreshing we call the Search endpoint again, which will populate the snapshot key with the updated data. We want this to happen without a refresh.

@luacmartins I'm assigning you to keep eyes on the proposals here for the secondary review!

@cretadn22 Friendly bump on this :pray:

Thanks, that's better! I'm happy to go with @cretadn22's updated proposal.
:ribbon::eyes::ribbon: C+ reviewed

@cretadn22 From what I recall the data in the transaction is updated by HoldMoneyRequestOnSearch so it should be fine to rely on the transaction data. Or am I misunderstanding?

Looping in a BZ member to handle payment as I'm going OOO

The HoldMoneyRequestOnSearch function only modifies the snapshot key and does not affect the reportAction or transaction keys

Huh weird, I'm pretty sure it was updating both keys before! @luacmartins are you able to check if there's been a BE change to HoldMoneyRequestOnSearch's response?

Is it acceptable to use the snapshot key in the ReportDetailPage if ReportDetailPage is opened from SearchPage?

Hmm this sounds a bit hacky to me, but the only other idea I have is to just optimistically update the transaction data (and revert it in the failureData). The real transaction data would get loaded anyway either on refresh or navigating away and back, so seems like it would be fine to do.

Huh weird, I'm pretty sure it was updating both keys before! @luacmartins are you able to check if there's been a BE change to HoldMoneyRequestOnSearch's response?

I can't see any updates to the logic in that command.

the only other idea I have is to just optimistically update the transaction data (and revert it in the failureData). The real transaction data would get loaded anyway either on refresh or navigating away and back

@cretadn22 Do you have any thoughts on this approach?

Do we agree with the current approach here. If yes, I’ll aim to finish the PR shortly.

@cretadn22 It might be helpful if you outline any concerns that you have about the current approach and/or any alternatives that you think might be better or be less convoluted. Personally, it's a bit hard to judge the approach on the PR as it is since there are still outstanding issues.

That seems fine with me, but I agree with @jjcoffee that it might be good to outline any concerns or alternatives

Quick update based on this comment - we're going to try a new approach (updating snapshot optimistically when holding from the transaction detail view), to see if it will make things simpler.

⚠ Automation failed here -> this should be on [HOLD for Payment 2024-10-07] according to today’s production deploy from https://github.com/Expensify/App/pull/49605#issuecomment-2384303237.
cc @CortneyOfstad

Sorry for the delay here! Getting payment sorted now!

Payment Summary
@jjcoffee — paid $250 via Upwork
@cretadn22 — paid $250 via Upwork


nixos-artwork: fix gnome not adding nixos wallpapers to list of backgrounds

Description of changes
Since Gnome 42 the default NixOS backgrounds have been missing from the list of backgrounds in the settings menu making them unable to be chosen if another background is set.
The XML was taken from https://help.gnome.org/admin/system-admin-guide/stable/backgrounds-extra.html.en and is mostly equivalent to the XML from Gnome's backgrounds.

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

This looks about right. I had a similar change in the queue but did not merge it yet because I wanted to have it part of the background package like you do. Only, I have not figured out what to do about the dual colour scheme background when backgrounds are individually packaged.

Thanks.


Chrome reported an error that Manifest version 2 is deprecated

Manifest version 2 is deprecated, and support will be removed in 2023. See https://developer.chrome.com/blog/mv2-transition/ for more details.

same here in Vivalda 5.7.2921.60 (Stable channel) （64 位）


Connect to PostgresSQL using SSH connection in Azure Data Studio

How can I connect to PostgresSQL using SSH connection?
I can't find any SSH settings when creating a new connection in Azure Data Studio

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

ID: d38cb432-16c9-c7f7-d79b-18c9a640d271
Version Independent ID: 9abf3190-1bc3-bc8a-016e-612dad3964ab
Content: Quickstart: Connect and query PostgreSQL - Azure Data Studio
Content Source: docs/azure-data-studio/quickstart-postgres.md
Product: azure-data-studio
Technology: azure-data-studio
GitHub Login: @sunilagarwal
Microsoft Alias: sunila

@daubac402 -- thank you for your question.  Please consider these resources:

SQL Server on Microsoft Q&A
DBA Stack Exchange
Stack Overflow

@sunilagarwal -- please look into this potential documentation issue.

@daubac402
First, thanks for being patient with us on waiting for a reply.
One thing to note is that the PostgreSQL extension is still in "preview."
However, I personally added an Issue to the azuredatastudio repo Postgresql extension to add that feature before the extension goes GA.
thanks for your patience.

We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion, and we will reopen the issue. To see what the community is wanting, please visit the Azure Data Studio repo


fix: do not re-escape cookies collected from fetch calls during SSR

Fixes #11687. We want cookies set by APIs called by fetch during SSR loads to be carried over as-is into the browser. We do this by telling set-cookie-parser to not attempt to URL decode the cookies set in the external API, and then telling cookie to not URL encode the cookie as it's constructing the outgoing header.
This appeared to work in my manual tests, but I was struggling with Playwright and haven't written formal tests yet. I'll try to do so in the morning.

Please don't delete this checklist! Before submitting the PR, please make sure you do the following:

[x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
[x] This message body should clearly illustrate what problems it solves.
[x] Ideally, include a test that fails without this PR but passes with it.

Tests

[x] Run the tests with pnpm test and lint the project with pnpm lint and pnpm check

Changesets

[x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running pnpm changeset and following the prompts. Changesets that add features should be minor and those that fix bugs should be patch. Please prefix changeset messages with feat:, fix:, or chore:.

Edits

[x] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed.

Finally got around to pushing a test. This test fails on main as the cookie value ends up being %22foo%22 instead of "foo". Note that the test also skips the fetch during the client-side load, as this would overwrite the (previously incorrect) value from SSR with a correct value from the browser's fetch.


fix: check window type in provider

When using the context with SSR, the window check will crash, so it needed to be updated to check the typeof instead of casting it to a boolean.
Also the previous build somehow didn't contain at all the if condition line, so I rebuilt the project.
I didn't know how you are working with versions so I haven't made a version bump, also I think it's better to remove the package-lock if yarn is used as the main package manager for this project.
Please let me know if you want me to bump the version or remove the package-lock.
resolves: #34

@mfrachet If I may ask, is there a reason to keep the build files checked in git?

Thanks for this! I'm going to publish a new version in the morning tomorrow 😊
Concerning the build files, it was at a time where I experienced with github as a way to manage the project dependencies. I will put it in the gitignore before releasing 😊


Cannot use 'in' operator to search for 'emph' in undefined

TypeError: Cannot use 'in' operator to search for 'emph' in undefined
    at V3 (https://moon.nisfeb.com/apps/grid/assets/index.e809d107.js:161:337465)
    at s0e (https://moon.nisfeb.com/apps/grid/assets/index.e809d107.js:180:31958)
    at https://moon.nisfeb.com/apps/grid/assets/index.e809d107.js:180:32765
    at Array.forEach (<anonymous>)
    at https://moon.nisfeb.com/apps/grid/assets/index.e809d107.js:180:32753
    at O$ (https://moon.nisfeb.com/apps/grid/assets/index.e809d107.js:62:6698)
    at e.unstable_runWithPriority (https://moon.nisfeb.com/apps/grid/assets/index.e809d107.js:47:3927)
    at jc (https://moon.nisfeb.com/apps/grid/assets/index.e809d107.js:58:38631)
    at Hu (https://moon.nisfeb.com/apps/grid/assets/index.e809d107.js:62:6162)
    at https://moon.nisfeb.com/apps/grid/assets/index.e809d107.js:62:6074

We spoke out of band, it turns out he was synced to ~wannec. I'm not able to reproduce this issue with a dev moon synced to wannec, but will keep an eye out. He is going to sync his ship to ~mister-dister-dozzod-dozzod, should clear it up (if it doesn't he'll ping me).


ARROW-13117: [R] Retain schema in new Expressions

This also resolves ARROW-13119: [R] Set empty schema in scalar Expressions

@ursabot please benchmark lang=R


feat(datepicker): add animation to calendar popup

Adds an animation when opening and closing the datepicker's calendar.
For reference:

It would be very cool if the sheet would do also a opening along the x-axis like here.

@TheRedD0t that's what I was going for initially (the menu has a similar animation), but it looks weird when the animation doesn't originate from the place where the user clicked.

@crisbeto Yeah I just realized that this would be a "Don't" according to the guidelines.
https://material.io/guidelines/motion/choreography.html#choreography-creation

Just realized, since this adds an Angular animation to a component that previously didn't have one, it may be a breaking change.
@jelbourn should this be part of a patch, minor, or major?

I chatted w/ @StephenFluin and he agreed that adding an animation to a component that didn't have one before would be considered a breaking change since users would have to add BrowserAnimationsModule if they didn't have it (however unlikely it is that someone is using datepicker and not some other component that has animations already). I think this one may have to wait for 6.0

@jelbourn for 6.0 we might want to consider adding a no-op animation to anything that's supposed to have animations but we haven't got to it yet. That way we can do it at some point without it being breaking

Unless something changes in Angular, we won't be able to do that; both animations modules import BrowserModule, which Angular only allows to be imported once.

@jelbourn By no-op animation I don't mean the NoopAnimationModule, just an animation that does nothing, e.g. state('noop', style({})). This way it would have the BrowserAnimationsModule dependency and we could later make the animation do useful things without it being a breaking change


Incorrect result in integration with Apache Superset

When Virtuoso SQLAlchemy dialect was plugged into Apache Superset and filter conditions are set inside Superset for an Virtuoso-based dataset, application of the filter results in the error "name 'IRI_ID_Literal' is not defined":

That error occurs in all cases:

a filter is set inside a dataset or a chart
a filter is set in a dashboard

The same error happens for all variants of the access to Virtuoso:

native relational table
saved SQL query
saved SPARQL query.

A complete trace from Superset follows:
name 'IRI_ID_Literal' is not defined
2024-01-28 12:03:39 Traceback (most recent call last):
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1823, in full_dispatch_request
2024-01-28 12:03:39     rv = self.dispatch_request()
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1799, in dispatch_request
2024-01-28 12:03:39     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/flask_appbuilder/security/decorators.py", line 95, in wraps
2024-01-28 12:03:39     return f(self, *args, **kwargs)
2024-01-28 12:03:39   File "/app/superset/views/base_api.py", line 127, in wraps
2024-01-28 12:03:39     raise ex
2024-01-28 12:03:39   File "/app/superset/views/base_api.py", line 121, in wraps
2024-01-28 12:03:39     duration, response = time_function(f, self, *args, **kwargs)
2024-01-28 12:03:39   File "/app/superset/utils/core.py", line 1526, in time_function
2024-01-28 12:03:39     response = func(*args, **kwargs)
2024-01-28 12:03:39   File "/app/superset/utils/log.py", line 255, in wrapper
2024-01-28 12:03:39     value = f(*args, **kwargs)
2024-01-28 12:03:39   File "/app/superset/charts/data/api.py", line 256, in data
2024-01-28 12:03:39     return self._get_data_response(
2024-01-28 12:03:39   File "/app/superset/charts/data/api.py", line 415, in _get_data_response
2024-01-28 12:03:39     result = command.run(force_cached=force_cached)
2024-01-28 12:03:39   File "/app/superset/charts/data/commands/get_data_command.py", line 45, in run
2024-01-28 12:03:39     payload = self._query_context.get_payload(
2024-01-28 12:03:39   File "/app/superset/common/query_context.py", line 100, in get_payload
2024-01-28 12:03:39     return self._processor.get_payload(cache_query_context, force_cached)
2024-01-28 12:03:39   File "/app/superset/common/query_context_processor.py", line 590, in get_payload
2024-01-28 12:03:39     query_results = [
2024-01-28 12:03:39   File "/app/superset/common/query_context_processor.py", line 591, in
2024-01-28 12:03:39     get_query_results(
2024-01-28 12:03:39   File "/app/superset/common/query_actions.py", line 225, in get_query_results
2024-01-28 12:03:39     return result_func(query_context, query_obj, force_cached)
2024-01-28 12:03:39   File "/app/superset/common/query_actions.py", line 103, in _get_full
2024-01-28 12:03:39     payload = query_context.get_df_payload(query_obj, force_cached=force_cached)
2024-01-28 12:03:39   File "/app/superset/common/query_context.py", line 121, in get_df_payload
2024-01-28 12:03:39     return self._processor.get_df_payload(
2024-01-28 12:03:39   File "/app/superset/common/query_context_processor.py", line 159, in get_df_payload
2024-01-28 12:03:39     query_result = self.get_query_result(query_obj)
2024-01-28 12:03:39   File "/app/superset/common/query_context_processor.py", line 237, in get_query_result
2024-01-28 12:03:39     result = query_context.datasource.query(query_object.to_dict())
2024-01-28 12:03:39   File "/app/superset/connectors/sqla/models.py", line 1180, in query
2024-01-28 12:03:39     query_str_ext = self.get_query_str_extended(query_obj)
2024-01-28 12:03:39   File "/app/superset/connectors/sqla/models.py", line 843, in get_query_str_extended
2024-01-28 12:03:39     sql = self.database.compile_sqla_query(sqlaq.sqla_query)
2024-01-28 12:03:39   File "/app/superset/models/core.py", line 629, in compile_sqla_query
2024-01-28 12:03:39     sql = str(qry.compile(engine, compile_kwargs={"literal_binds": True}))
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 494, in compile
2024-01-28 12:03:39     return self._compiler(dialect, **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 558, in _compiler
2024-01-28 12:03:39     return dialect.statement_compiler(dialect, self, **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 776, in init
2024-01-28 12:03:39     Compiled.init(self, dialect, statement, **kwargs)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 451, in init
2024-01-28 12:03:39     self.string = self.process(self.statement, **compile_kwargs)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 486, in process
2024-01-28 12:03:39     return obj._compiler_dispatch(self, **kwargs)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/visitors.py", line 82, in _compiler_dispatch
2024-01-28 12:03:39     return meth(self, **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 3405, in visit_select
2024-01-28 12:03:39     text = self._compose_select_body(
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 3563, in _compose_select_body
2024-01-28 12:03:39     t = self._generate_delimited_and_list(
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 1702, in _generate_delimited_and_list
2024-01-28 12:03:39     return clauses[0]._compiler_dispatch(self, **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/visitors.py", line 82, in compiler_dispatch
2024-01-28 12:03:39     return meth(self, **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/virtuoso/alchemy.py", line 212, in visit_binary
2024-01-28 12:03:39     return super(VirtuosoSQLCompiler, self).visit_binary(binary, **kwargs)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 2192, in visit_binary
2024-01-28 12:03:39     return disp(binary, operator, **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/virtuoso/alchemy.py", line 202, in visit_in_op_binary
2024-01-28 12:03:39     return self._generate_generic_binary(binary, " IN ", **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 2258, in _generate_generic_binary
2024-01-28 12:03:39     + binary.right._compiler_dispatch(
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/visitors.py", line 82, in _compiler_dispatch
2024-01-28 12:03:39     return meth(self, **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 2438, in visit_bindparam
2024-01-28 12:03:39     ret = self.render_literal_bindparam(
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 2534, in render_literal_bindparam
2024-01-28 12:03:39     to_update, replacement_expr = leep(bindparam, value)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 2091, in _literal_execute_expanding_parameter_literal_binds
2024-01-28 12:03:39     replacement_expression = ", ".join(
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 2092, in
2024-01-28 12:03:39     self.render_literal_value(value, parameter.type)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/virtuoso/alchemy.py", line 215, in render_literal_value
2024-01-28 12:03:39     if isinstance(value, IRI_ID_Literal):
2024-01-28 12:03:39 NameError: name 'IRI_ID_Literal' is not defined
2024-01-28 12:03:39 2024-01-28 12:03:39,327:ERROR:superset.views.base:name 'IRI_ID_Literal' is not defined
2024-01-28 12:03:39 Traceback (most recent call last):
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1823, in full_dispatch_request
2024-01-28 12:03:39     rv = self.dispatch_request()
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1799, in dispatch_request
2024-01-28 12:03:39     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/flask_appbuilder/security/decorators.py", line 95, in wraps
2024-01-28 12:03:39     return f(self, *args, **kwargs)
2024-01-28 12:03:39   File "/app/superset/views/base_api.py", line 127, in wraps
2024-01-28 12:03:39     raise ex
2024-01-28 12:03:39   File "/app/superset/views/base_api.py", line 121, in wraps
2024-01-28 12:03:39     duration, response = time_function(f, self, *args, **kwargs)
2024-01-28 12:03:39   File "/app/superset/utils/core.py", line 1526, in time_function
2024-01-28 12:03:39     response = func(*args, **kwargs)
2024-01-28 12:03:39   File "/app/superset/utils/log.py", line 255, in wrapper
2024-01-28 12:03:39     value = f(*args, **kwargs)
2024-01-28 12:03:39   File "/app/superset/charts/data/api.py", line 256, in data
2024-01-28 12:03:39     return self._get_data_response(
2024-01-28 12:03:39   File "/app/superset/charts/data/api.py", line 415, in _get_data_response
2024-01-28 12:03:39     result = command.run(force_cached=force_cached)
2024-01-28 12:03:39   File "/app/superset/charts/data/commands/get_data_command.py", line 45, in run
2024-01-28 12:03:39     payload = self._query_context.get_payload(
2024-01-28 12:03:39   File "/app/superset/common/query_context.py", line 100, in get_payload
2024-01-28 12:03:39     return self._processor.get_payload(cache_query_context, force_cached)
2024-01-28 12:03:39   File "/app/superset/common/query_context_processor.py", line 590, in get_payload
2024-01-28 12:03:39     query_results = [
2024-01-28 12:03:39   File "/app/superset/common/query_context_processor.py", line 591, in
2024-01-28 12:03:39     get_query_results(
2024-01-28 12:03:39   File "/app/superset/common/query_actions.py", line 225, in get_query_results
2024-01-28 12:03:39     return result_func(query_context, query_obj, force_cached)
2024-01-28 12:03:39   File "/app/superset/common/query_actions.py", line 103, in _get_full
2024-01-28 12:03:39     payload = query_context.get_df_payload(query_obj, force_cached=force_cached)
2024-01-28 12:03:39   File "/app/superset/common/query_context.py", line 121, in get_df_payload
2024-01-28 12:03:39     return self._processor.get_df_payload(
2024-01-28 12:03:39   File "/app/superset/common/query_context_processor.py", line 159, in get_df_payload
2024-01-28 12:03:39     query_result = self.get_query_result(query_obj)
2024-01-28 12:03:39   File "/app/superset/common/query_context_processor.py", line 237, in get_query_result
2024-01-28 12:03:39     result = query_context.datasource.query(query_object.to_dict())
2024-01-28 12:03:39   File "/app/superset/connectors/sqla/models.py", line 1180, in query
2024-01-28 12:03:39     query_str_ext = self.get_query_str_extended(query_obj)
2024-01-28 12:03:39   File "/app/superset/connectors/sqla/models.py", line 843, in get_query_str_extended
2024-01-28 12:03:39     sql = self.database.compile_sqla_query(sqlaq.sqla_query)
2024-01-28 12:03:39   File "/app/superset/models/core.py", line 629, in compile_sqla_query
2024-01-28 12:03:39     sql = str(qry.compile(engine, compile_kwargs={"literal_binds": True}))
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 494, in compile
2024-01-28 12:03:39     return self._compiler(dialect, **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 558, in _compiler
2024-01-28 12:03:39     return dialect.statement_compiler(dialect, self, **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 776, in init
2024-01-28 12:03:39     Compiled.init(self, dialect, statement, **kwargs)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 451, in init
2024-01-28 12:03:39     self.string = self.process(self.statement, **compile_kwargs)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 486, in process
2024-01-28 12:03:39     return obj._compiler_dispatch(self, **kwargs)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/visitors.py", line 82, in _compiler_dispatch
2024-01-28 12:03:39     return meth(self, **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 3405, in visit_select
2024-01-28 12:03:39     text = self._compose_select_body(
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 3563, in _compose_select_body
2024-01-28 12:03:39     t = self._generate_delimited_and_list(
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 1702, in _generate_delimited_and_list
2024-01-28 12:03:39     return clauses[0]._compiler_dispatch(self, **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/visitors.py", line 82, in compiler_dispatch
2024-01-28 12:03:39     return meth(self, **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/virtuoso/alchemy.py", line 212, in visit_binary
2024-01-28 12:03:39     return super(VirtuosoSQLCompiler, self).visit_binary(binary, **kwargs)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 2192, in visit_binary
2024-01-28 12:03:39     return disp(binary, operator, **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/virtuoso/alchemy.py", line 202, in visit_in_op_binary
2024-01-28 12:03:39     return self._generate_generic_binary(binary, " IN ", **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 2258, in _generate_generic_binary
2024-01-28 12:03:39     + binary.right._compiler_dispatch(
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/visitors.py", line 82, in _compiler_dispatch
2024-01-28 12:03:39     return meth(self, **kw)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 2438, in visit_bindparam
2024-01-28 12:03:39     ret = self.render_literal_bindparam(
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 2534, in render_literal_bindparam
2024-01-28 12:03:39     to_update, replacement_expr = leep(bindparam, value)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 2091, in _literal_execute_expanding_parameter_literal_binds
2024-01-28 12:03:39     replacement_expression = ", ".join(
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/compiler.py", line 2092, in
2024-01-28 12:03:39     self.render_literal_value(value, parameter.type)
2024-01-28 12:03:39   File "/usr/local/lib/python3.9/site-packages/virtuoso/alchemy.py", line 215, in render_literal_value
2024-01-28 12:03:39     if isinstance(value, IRI_ID_Literal):
2024-01-28 12:03:39 NameError: name 'IRI_ID_Literal' is not defined

Did you try to execute SPARQL queries or what ?

Yes, pure SPARQL queries in Superset SQL lab work fairly well.
SQL queries without any filters also work as expected.
The problem happens only when Superset adds some additional parts to the query.

Ok, I will try to check

Fixed.
You need install:

latest version of Virtuoso-SQLAlchemy - it was fixed
install Apache Superset from https://github.com/OpenLinkSoftware/superset/releases/download/4.0.1.virtuoso/apache-superset-4.0.1.virtuoso.tar.gz   (source https://github.com/OpenLinkSoftware/superset/tree/4.0.1.virtuoso )
The updated installed is included engine spec for Virtuoso.
You could install it via:

pip install https://github.com/OpenLinkSoftware/superset/releases/download/4.0.1.virtuoso/apache-superset-4.0.1.virtuoso.tar.gz

@smalinin , thank you for resolving that issue.
I made an attempt to build the docker images of the updated package of Superset, however I have got the build error.
WARNING in ./src/utils/textUtils.ts 21:11-44
Module not found: Error: Can't resolve '../../../superset_text' in '/app/superset-frontend/src/utils'
Could you please describe the sequence of actions you did to test the modified version ?

Thank you for quick fixing.
In the result Saved queries work well in Superset.
However the tables (DataSources) from Virtuoso can not be processed correctly.
If a table (or a view) is selected for the Superset Chart, the following error is displayed:

Could you please fix that small issue.


camerad fails to start when trying to use webcam with openpilot on Ubuntu

Describe the bug
Following the steps in the webcam readme and running NOSENSOR=1 USE_WEBCAM=1 system/manager/manager.py appears to work.  UI loads and all green in console:
(openpilot) mike@MIKEZLAP:~/openpilot$ NOSENSOR=1 USE_WEBCAM=1 system/manager/manager.py
system/loggerd/bootlog.cc: bootlog to /home/mike/.comma/media/0/realdata/boot/00000001--cad91c878d
missing public key: /home/mike/.comma/persist/comma/id_rsa.pub
selfdrive/ui/qt/network/wifi_manager.cc: DBus call error: "The name org.freedesktop.NetworkManager was not provided by any .service files"
selfdrive/ui/qt/network/wifi_manager.cc: DBus call error: "The name org.freedesktop.NetworkManager was not provided by any .service files"
MESA: error: ZINK: failed to choose pdev
glx: failed to create drisw screen
logmessaged ui pandad deleter hardwared statsd
logmessaged ui pandad deleter hardwared statsd
logmessaged ui pandad deleter hardwared statsd

but then results in the following when pressing the Driver Camera Preview button in the UI (red camerad and dmonitoringmodeld in console):
logmessaged ui pandad deleter hardwared statsd
logmessaged ui pandad deleter hardwared statsd
Process camerad:
Traceback (most recent call last):
  File "/home/mike/.local/share/uv/python/cpython-3.12.0-linux-x86_64-gnu/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/home/mike/.local/share/uv/python/cpython-3.12.0-linux-x86_64-gnu/lib/python3.12/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/mike/openpilot/openpilot/system/manager/process.py", line 56, in nativelauncher
    os.execvp(pargs[0], pargs)
  File "<frozen os>", line 580, in execvp
  File "<frozen os>", line 603, in _execvpe
FileNotFoundError: [Errno 2] No such file or directory
camerad logmessaged dmonitoringmodeld ui pandad deleter dmonitoringd hardwared statsd
selfdrive.modeld.dmonitoringmodeld: common/clutil.cc:79: cl_context cl_create_context(cl_device_id): Assertion `_ret&& err == CL_SUCCESS' failed.
camerad logmessaged dmonitoringmodeld ui pandad deleter dmonitoringd hardwared statsd
camerad logmessaged dmonitoringmodeld ui pandad deleter dmonitoringd hardwared statsd
camerad logmessaged dmonitoringmodeld ui pandad deleter dmonitoringd hardwared statsd

OS Version
Ubuntu 24.04
openpilot version or commit
57fc4f79d16c132d526a66d603fd9100804569d1
Additional info

The webcam readme references system/camerad/cameras/camera_webcam.cc which no longer exists.
others appear to be experiencing the same issue

https://discord.com/channels/469524606043160576/524594418628558878/1285247575246503937
https://discord.com/channels/469524606043160576/524594418628558878/1283916435575410688
https://discord.com/channels/469524606043160576/524594418628558878/1269416272555147294
https://discord.com/channels/469524606043160576/524594418628558878/1250604552827306115

I would not expect this to work easily on WSL2, because host-attached USB devices are not passed through to WSL like they might be for traditional hypervisors like VMware Workstation. There's some workarounds with USB-over-IP, but setting it up is an extremely manual process that I'm not sure anyone has attempted with openpilot, and I'm not sure how well it would work with high-bandwidth devices like cameras.
All that said, I'm leaving this bug open because webcam does look legitimately broken on baremetal Ubuntu. I was able to reproduce the described issue. I instrumented process.py to tell me what it was executing:
diff --git a/system/manager/process.py b/system/manager/process.py
index 0e9c9b980..31a54a1b3 100644
--- a/system/manager/process.py
+++ b/system/manager/process.py
@@ -53,6 +53,7 @@ def nativelauncher(pargs: list[str], cwd: str, name: str) -> None:

   # exec the process
   os.chdir(cwd)
+  print(f"{cwd=} {pargs}")
   os.execvp(pargs[0], pargs)

Which obtained the following result:
(openpilot) jyoung@jy-workstation-ubuntu:~/openpilot$ USE_WEBCAM=1 NOSENSOR=1 system/manager/manager.py
system/loggerd/bootlog.cc: bootlog to /home/jyoung/.comma/media/0/realdata/boot/00000008--b1121cf470
system/manager/process.py: needs update
missing public key: /home/jyoung/.comma/persist/comma/id_rsa.pub
cwd='/home/jyoung/openpilot/selfdrive/ui' ['./ui']
logmessaged ui pandad deleter hardwared statsd
logmessaged ui pandad deleter hardwared statsd
logmessaged ui pandad deleter hardwared statsd
logmessaged ui pandad deleter hardwared statsd
logmessaged ui pandad deleter hardwared statsd
logmessaged ui pandad deleter hardwared statsd
cwd='/home/jyoung/openpilot/system/camerad' ['./camerad']
Process camerad:
Traceback (most recent call last):
  File "/home/jyoung/.local/share/uv/python/cpython-3.12.0-linux-x86_64-gnu/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/home/jyoung/.local/share/uv/python/cpython-3.12.0-linux-x86_64-gnu/lib/python3.12/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/jyoung/openpilot/openpilot/system/manager/process.py", line 57, in nativelauncher
    os.execvp(pargs[0], pargs)
  File "<frozen os>", line 580, in execvp
  File "<frozen os>", line 603, in _execvpe
FileNotFoundError: [Errno 2] No such file or directory
cwd='/home/jyoung/openpilot/selfdrive/modeld' ['./dmonitoringmodeld']
camerad logmessaged dmonitoringmodeld ui pandad deleter dmonitoringd hardwared statsd
camerad logmessaged dmonitoringmodeld ui pandad deleter dmonitoringd hardwared statsd

The error comes from trying to start system/camerad/camerad which does not build on larch64 (Linux on PC), we should be trying to launch tools/webcam/camerad.py. Or perhaps start_camerad.sh? It's not immediately clear to me how this is supposed to work. This might be fallout from some of the selfdrive -> system migrations a while back.
TL;DR: Don't use WSL2, but this is a real bug anyway.

Thanks @jyoung8607 for digging in!  Indeed getting USB cameras working on WSL2 was a big pain.  It involved both:

a 3rd party Windows USB sharing software (usbipd) and
rebuilding the WSL2 Linux Kernel (good instructions here)

Keep me posted if you make any more progress, I'll time-box poking around at this and if I can't get it going by the evening I'll find another issue to pick up.

I come across the same issue，which can be solved by running  tools/webcam/start_camerad.sh first.  In the bash script, the right number for the environment variables of each camera should be specified.
Pay attention to the problem  that the index  number of /dev/video  may change each time the camera is plugged.

I had noticed that, specifically the BLOCK export it does to prevent manager from starting the normal camerad, but hadn't had a chance to test.
@MikeBusuttil: Give that a try, and if you find a working path, feel free to file PRs against the README or anything else necessary to make this easier for new users.

Tried it on 2 machines with different failures.
Ubuntu 24.04 on old Dell i5 Laptop:
(openpilot) willow@willow-Latitude-E5450:~/openpilot$ tools/webcam/start_camerad.sh
Traceback (most recent call last):
  File "/home/willow/openpilot/tools/webcam/camerad.py", line 74, in <module>
    main()
  File "/home/willow/openpilot/tools/webcam/camerad.py", line 69, in main
    camerad = Camerad()
              ^^^^^^^^^
  File "/home/willow/openpilot/tools/webcam/camerad.py", line 33, in __init__
    self.vipc_server.create_buffers(c.stream_type, 20, False, cam.W, cam.H)
  File "msgq_repo/msgq/visionipc/visionipc_pyx.pyx", line 65, in msgq.visionipc.visionipc_pyx.VisionIpcServer.create_buffers
    def create_buffers(self, VisionStreamType tp, size_t num_buffers, size_t width, size_t height):
TypeError: create_buffers() takes exactly 4 positional arguments (5 given)
terminate called after throwing an instance of 'std::system_error'
  what():  Invalid argument
tools/webcam/start_camerad.sh: line 14:  3803 Aborted                 (core dumped) $DIR/camerad.py

which is what I'd expect given the create_buffers interface
void VisionIpcServer::create_buffers(VisionStreamType type, size_t num_buffers, size_t width, size_t height){

so I removed the 3rd argument from the offending line to make it now
self.vipc_server.create_buffers(c.stream_type, 20, cam.W, cam.H)

which results in
(openpilot) willow@willow-Latitude-E5450:~/openpilot$ tools/webcam/start_camerad.sh
Traceback (most recent call last):
  File "/home/willow/openpilot/tools/webcam/camerad.py", line 74, in <module>
    main()
  File "/home/willow/openpilot/tools/webcam/camerad.py", line 69, in main
    camerad = Camerad()
              ^^^^^^^^^
  File "/home/willow/openpilot/tools/webcam/camerad.py", line 28, in __init__
    cam = Camera(c.msg_name, c.stream_type, c.cam_id)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/willow/openpilot/openpilot/tools/webcam/camera.py", line 13, in __init__
    self.container = av.open("/dev/video0")
                     ^^^^^^^^^^^^^^^^^^^^^^
  File "av/container/core.pyx", line 420, in av.container.core.open
  File "av/container/core.pyx", line 266, in av.container.core.Container.__cinit__
  File "av/container/core.pyx", line 286, in av.container.core.Container.err_check
  File "av/error.pyx", line 326, in av.error.err_check
av.error.OSError: [Errno 16] Device or resource busy: '/dev/video0'
terminate called after throwing an instance of 'std::system_error'
  what():  Invalid argument
tools/webcam/start_camerad.sh: line 14:  3586 Aborted                 (core dumped) $DIR/camerad.py

But /dev/video0 of course works just fine elsewhere (ie. in cheese) so I'm stuck there for now.
WSL Ubuntu 24.04 on Dell XPS 17
I can't get dmonitoringmodeld to run
selfdrive.modeld.dmonitoringmodeld: common/clutil.cc:79: cl_context cl_create_context(cl_device_id): Assertion `_ret&& err == CL_SUCCESS' failed.

despite having my environment setup properly (I thought)

leaving me stuck on that machine as well.
Will continue poking at 🤞

Good stuff @jyoung8607 💪
Here's the draft PR to squash this bug: #34215
Will ping you when it's ready to rock

We've made a lot of progress here but it looks like there may be more roadblocks on the path to full webcam support.  It looks like the C3X camera resolution is hard-coded into dmonitoringmodeld

It's working!! 😃

great work whoever got the final fix in last week 💪 (Harold, Adeeb, Yassine, Maxine, ZwX ?)


Support aliases

I have a vue project using webpack aliases, but the tool seems to error when trying to find files imported using them.
I have @ set up as an alias to src/, but I get errors like this:
Neither<EMAIL_ADDRESS>nor '@/components/profile/Avatar.js(x)' or '@/components/profile/Avatar/index.js(x)' or '@/components/profile/Avatar/index.ts(x)' could be found in '...[username].../src/components/profile'

Would it be possible for this to follow webpack aliases?

@ymhr
I have added the feature to allow for aliases. Currently however it's only possible via the script.
Can you try creating a script like so and try it?
import { generateVeturFiles } from '@vue-intellisense/scripts'

const inputPath = 'string'
const outputPath =  'string'
const options = { recursive: true, alias: {} }

generateVeturFiles(
  inputPath,
  outputPath,
  options
)

and pass the aliases as object.
try that and let me know!

@ymhr
I have added the feature to allow for aliases. Currently however it's only possible via the script.
Can you try creating a script like so and try it?
import { generateVeturFiles } from '@vue-intellisense/scripts'

const inputPath = 'string'
const outputPath =  'string'
const options = { recursive: true, alias: {} }

generateVeturFiles(
  inputPath,
  outputPath,
  options
)

and pass the aliases as object.
try that and let me know!

closing because of inactivity

@ymhr proper alias support released in 0.3.0. thanks to @boydaihungst
please check readme or cli manual!


subscriptions: Update existing sub-row in sub settings on sub-events.

Issue:

Login to Iago

Open different browser, login to AARON

Open subscription settings page, click on "Subscribed" tab in AARON

Subscribe AARON to any public stream from Iago login

Stream doesn't appear under "Subscribed" tab in AARON

reload the page or open the modal again will show the stream.

This PR fixes this issue. So the stream will appear under "Subscribed" tab immediately after subscribed. Although this issue is rarely going to encounter by users, fixing this issue will help developers during testing.
GIFs or Screenshots:

Nice work, merged, thanks @YJDave!


Add documentaton for dataset README.md files

Hi,
the dataset README files have special headers.
Somehow a documenation of the allowed values and tags is missing.
Could you add that?
Just to give some concrete questions that should be answered imo:

which values can be passted to multilinguality?
what should be passed to language_creators?
which values should licenses have? What do I say when it is a custom license? Should I add a link?
how should I choose size_categories ? What are valid ranges?
what are valid task_categories?

Thanks
Philip

Hi ! We are using the datasets-tagging app to select the tags to add.
We are also adding the full list of tags in #2107
This covers multilinguality, language_creators, licenses, size_categories and task_categories.
In general if you want to add a tag that doesn't exist (for example for a custom license) you must make it start with other- and then a custom tag name.

@lhoestq hmm - ok thanks for the answer.
To be honest I am not sure if this issue can be closed now.
I just wanted to point out that this should either be documented or linked in the documentation.
If you feel like it is (will be) please just close this.

We're still working on the validation+documentation in this.
Feel free to keep this issue open till we've added them

@lhoestq what is the status on this? Did you add documentation?

Hi ! There's the tagging app at https://huggingface.co/datasets/tagging/ that you can use.
It shows the list of all the tags you can use.
It is based on all the tag sets defined in this folder:
https://github.com/huggingface/datasets/tree/master/src/datasets/utils/resources

@lhoestq is there something like this form Models?

I don't think so. Feel free to take a look at the tags of other models (example here). But we should definitely have some docs or an app to write the tags. Feel free to open an issue in the transformers repo or in the huggingface_hub repo so we can discuss this

When modifying a README file, the Hub now displays a special UI with allowed values (see https://huggingface.co/docs/datasets/main/en/upload_dataset#create-a-dataset-card).


Scroll to top after an attempted transaction

Resolves
Issue #216

The send page only scrolls on a failed transaction. Nothing happens when a transaction is successful.

an implementation to resolve #227 is preferred.


[WIP] Detect when operator scope is not the whole cluster

Fixes https://github.com/jaegertracing/jaeger-operator/issues/823
@jpkrohling  WDYT?
With this maybe we can fix https://github.com/jaegertracing/jaeger-operator/issues/791 too.

btw i applied your change, https://github.com/jaegertracing/jaeger-operator/issues/791 error is still there

@christine-gong  I haven't validate that case, but  I mean I can do it using the same method I used here.

This PR won't fix that, but might serve as base. Once this logic is applied, we can store the outcome in viper. From there, it should be ready to accomplish what I mentioned as a comment there: https://github.com/jaegertracing/jaeger-operator/issues/791#issuecomment-559433530


Kitematic friendliness of Dockerfiles

Make the dockers (especially VectorTileServer Docker #5) user-friendly (Volumes, exported ports, logs in the stdout)...
The same for #3 (copy planet to Volume).

Copy sample data outside of the container so people have something.

In my opinion this has been resolved.

Correct. We have just fixed the vector tile opening via TileJSON from tileserver-mapnik into MapBox Studio Classic, ensured that OGC WMTS runs in QGIS and the whole docker is usable also behind on HTTPS.

We have just fixed the vector tile opening via TileJSON from tileserver-mapnik into MapBox Studio Classic

Wow nice!! So the TMS/XYZ issue has been resolved?

Yes. See: https://github.com/klokantech/tileserver-mapnik/issues/8


Native Builder 3.1.0 release notes

Still adding some more things

This app was meant to come out with 8.5, but has been delayed by a day or two. I will merge a day or two after 8.5


Error with input: missing values

Project Robyn
I am trying to do a case study with Robyn.
Describe issue
This is the error message I get
Error in check_nas(dt_input) :
Dataset dt_input has missing values. These values must be removed or fixed for the model to properly run

print(InputCollect)
Error in print(InputCollect) : object 'InputCollect' not found

Is this because I don't provide any organic_vars as input? Which are the mandatory parameters needed for robyn_inputs() and which are optional? The demo file from Robyn works fine. It seems like the problem is with my data. Though I have tried to input minimal data to see if I can isolate the source of the error, I've been unsuccessful so far.
Provide dummy data & model configuration
InputCollect <- robyn_inputs(
  dt_input = budget.df
  ,dt_holidays = dt_prophet_holidays
  ,date_var = "Date" # date format must be "2020-01-01"
  ,dep_var = "Revenue" # there should be only one dependent variable
  ,dep_var_type = "revenue" # "revenue" or "conversion"
  ,prophet_vars = c("trend", "season", "holiday", "weekday") # "trend","season", "weekday" & "holiday"
  ,prophet_signs = c("default", "default", "default", "default")
  ,prophet_country = "US"# input one country. dt_prophet_holidays includes 59 countries by default
  ,context_vars = c("Paid.Promo") # e.g. competitors, discount, unemployment etc
  ,paid_media_spends = c("gs_S","gsh_S", "fbp_S")
  ,paid_media_vars = c("gs_S","gsh_S", "fbp_S")
  ,paid_media_signs = c("positive", "positive", "positive")
  #,organic_vars = NULL # marketing activity without media spend
  ,factor_vars = c("Paid.Promo") # specify which variables in context_vars or organic_vars are factorial
  ,window_start = "2021-09-01"
  ,window_end = "2022-02-28"
  ,adstock = "geometric" # geometric, weibull_cdf or weibull_pdf.
  ,iterations = 2000
  ,intercept_sign = "non-negative"
  ,nevergrad_algo = "TwoPointsDE"
  ,trials = 5
)
print(InputCollect)

The data file I am using: https://file.io/BprbRB0WRBZM
budget <- openxlsx::read.xlsx("~/budget.xlsx", 1, detectDates = TRUE)
budget.df = data.frame(budget)

Environment & Robyn version
I am running R 4.1.2 and the latest Robyn version.

Hi @Aanai
It seems the file you shared has been deleted so I can't check.
Try running sum(is.na(budget.df)). If it's >0 then you have missing values in your data frame. You should deal with those first before running robyn_inputs(). Once none of you inputs set have NAs, you'll be able to run robyn_inputs() without errors.

Hi @laresbernardo
The output sum(is.na(budget.df)) is >0
Please find the file here. I have na values in the Paid.Promo column which I use as a context_var and I also specify it is a factor_var. But so does the events column in the dt_simulated_weekly used in the demo. What is the difference?
Secondly, even if I comment out the context_vars and factor_vars, I still get the same error. None of the other entries in the dataframe (besides Paid.Promo) have missing values. What am I missing?

Hey @Aanai. Now I was able to download the file. Thanks!

Try setting the 2 values that are missing like this: budget.df$Paid.Promo[is.na(budget.df$Paid.Promo)] <- "na". Once you fix those 2 missing values you'll be good to go.
Checking at sum(is.na(dt_simulated_weekly)), is 0. There are "na" values, but no "NA" (missing) values.
Also, note that iterations, intercept_sign, nevergrad_algo, and trials are now robyn_run() parameters since version 3.5.0.
Following these comments, I was able to run robyn_inputs() and create the InputsCollect object:

> print(InputCollect)
Total Observations: 424 (days)
Input Table Columns (7):
  Date: Date
  Dependent: Revenue [revenue]
  Paid Media: gs_S, gsh_S, fbp_S
  Paid Media Spend: gs_S, gsh_S, fbp_S
  Context: Paid.Promo
  Organic:
  Prophet (Auto-generated): trend, season, holiday, weekday on US
  Unused: Spend

Date Range: 2021-01-01:2022-02-28
Model Window: 2021-09-01:2022-02-28 (181 days)
With Calibration: FALSE
Custom parameters: None

Adstock: geometric
Hyper-parameters: Not set yet


[RuntimeException] SplFileInfo::getMTime()

after seeing that my raspi 1b might me too slow for koel I am trying to run this on my laptop for testing and stuff.
This error is quite similar to #285 but as that's closed and wont help me most probably because it aint hebrew I'll open a new issue.
I always get
[RuntimeException]
SplFileInfo::getMTime(): stat failed for T:\path\to\file

T: is just my second harddrive where my music resides.
where the file has some unicode stuff.
for me it triggered for exmaple on ☆ and ～ (a fullwidth version of ~)
but the weirdes thing is that I dont get anything in my error file. I can produce errors myself (already tested with a small test file) so it cant be the permissions.
my environment:
node 4.4.5 with npm 2.15.5
composer 1.1.1
koel pulled yesterday, so it's pretty fresh
PHP 7.0.7 x86 Thread safe
Windows 8.1 x64
I checked PHP and mbstring is enabled in the ini so even that cannot be an obstacle.

Maybe relevant: https://github.com/laravel/framework/issues/5221

I dont really know. this says something about the sessions but the issue seems with the unicode (especially because it gets through when I rename it.

Don't think this is a Koel issue per se.

I found a simple way around this issue, modify the mtime variable with some gibberish in App/Models/File.php L70 like so,
    public function __construct($path, $getID3 = null)
    {
        $this->splFileInfo = $path instanceof SplFileInfo ? $path : new SplFileInfo($path);
        $this->setGetID3($getID3);
        $this->mtime = '12345';
        $this->path = $this->splFileInfo->getPathname();
        $this->hash = self::getHash($this->path);
        $this->song = Song::find($this->hash);
    }

It took me a while to figure this out, but in fact all the other components do not experience any issues with Unicode including getID3 or any of the other splFileInfo variables.
Of course this workaround only works if you don't care to run a force sync every time you do a scan.
@phanan Do you know of any other way to get the modified time so I can give it a test to see if it will work with Unicode?

Can you try filemtime($this->path) after the $this->path = $this->splFileInfo->getPathname(); line?

Same error.

To think out of the box, what about using some widows library to this info and tie it to a if Windows.

Of course this workaround only works if you don't care to run a force sync every time you do a scan.

At the very least this should be in a try/catch block:
try {
    $this->mtime = $this->splFileInfo->getMTime();
} catch (\Exception $e) {
    $this->mtime = '12345';
}

At least that way you're only force syncing the files that have special Unicode characters in them.

@JosephSilber's idea is exactly what I would do.

While the scan does not fail now, it still skips it as being invalid.
I will try to research more ideas for this.

Can you check the $e variable? I can't reproduce this issue, so this was more or less a blind fix.

Is this what you are looking for?
[2016-08-12 01:36:25] production.DEBUG: RuntimeException: SplFileInfo::getMTime(): stat failed for C:\Benny Freidman 3\?.mp3 in C:\wamp64\www\Beta\koel\app\Models\File.php:75
Stack trace:
#0 C:\wamp64\www\Beta\koel\app\Models\File.php(75): SplFileInfo->getMTime()
#1 C:\wamp64\www\Beta\koel\app\Services\Media.php(76): App\Models\File->__construct(Object(Symfony\Component\Finder\SplFileInfo), Object(getID3))
#2 C:\wamp64\www\Beta\koel\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php(227): App\Services\Media->sync('C:\\Benny Freidm...', Array, false, Object(App\Console\Commands\SyncMedia))
#3 C:\wamp64\www\Beta\koel\app\Console\Commands\SyncMedia.php(67): Illuminate\Support\Facades\Facade::__callStatic('sync', Array)
#4 C:\wamp64\www\Beta\koel\app\Console\Commands\SyncMedia.php(47): App\Console\Commands\SyncMedia->syncAll()
#5 [internal function]: App\Console\Commands\SyncMedia->handle()
#6 C:\wamp64\www\Beta\koel\vendor\laravel\framework\src\Illuminate\Container\Container.php(507): call_user_func_array(Array, Array)
#7 C:\wamp64\www\Beta\koel\vendor\laravel\framework\src\Illuminate\Console\Command.php(169): Illuminate\Container\Container->call(Array)
#8 C:\wamp64\www\Beta\koel\vendor\symfony\console\Command\Command.php(256): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#9 C:\wamp64\www\Beta\koel\vendor\laravel\framework\src\Illuminate\Console\Command.php(155): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 C:\wamp64\www\Beta\koel\vendor\symfony\console\Application.php(791): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#11 C:\wamp64\www\Beta\koel\vendor\symfony\console\Application.php(186): Symfony\Component\Console\Application->doRunCommand(Object(App\Console\Commands\SyncMedia), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#12 C:\wamp64\www\Beta\koel\vendor\symfony\console\Application.php(117): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#13 C:\wamp64\www\Beta\koel\vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php(107): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#14 C:\wamp64\www\Beta\koel\artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#15 {main}


feat(aws): Deploy defined secrets and add secret access policies.

@HomelessDinosaur just some tests failing

Codecov Report

Merging #109 (6e4f65f) into develop (f5bc739) will decrease coverage by 0.69%.
The diff coverage is 20.00%.

@@             Coverage Diff             @@
##           develop     #109      +/-   ##
===========================================
- Coverage    38.13%   37.44%   -0.70%
===========================================
  Files           40       40
  Lines         2845     2823      -22
===========================================
- Hits          1085     1057      -28
- Misses        1657     1664       +7
+ Partials       103      102       -1

Flag
Coverage Δ

unittests
37.44% <20.00%> (-0.70%)
:arrow_down:

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

Impacted Files
Coverage Δ

pkg/provider/pulumi/aws/lambda.go
71.15% <ø> (-3.32%)
:arrow_down:

pkg/provider/pulumi/aws/policy.go
58.33% <0.00%> (-2.25%)
:arrow_down:

pkg/provider/pulumi/aws/aws.go
64.57% <27.27%> (-1.94%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update f5bc739...6e4f65f. Read the comment docs.


License headers fixed or added using mvn license:format

Ah, it is failing because Travis relies in maven central only. Let me fix it.

These directories and files should be ignored, because they are auto-generated.

gradle
gradlew
gradlew.bat
*.properties — not in the repository, but are generated after building a project.

Should I fix checkstyle warnings in your branch somehow or just merge and fix afterwards?

Another two nits.

Should the licence header be followed by an empty line like there?
Should I use mvn -s .travis.maven.settings.xml verify locally as well?

These directories and files should be ignored, because they are auto-generated.
gradle gradlew gradlew.bat *.properties — not in the repository, but are generated after building a project.

Hm... some of them were in git even before my changes. Let me try to remove them.

Should the licence header be followed by an empty line?

If mvn license:format did without an empty line, I'd say that's correct.

Should I use mvn -s .travis.maven.settings.xml verify locally as well?

Yes, you can, but when thinking of it again, it downloads a lot of maven stuff that is not necessary for the license plugin  and checkstyle. Let me try to find a more sparse form of the mvn command.

Hm... some of them were in git even before my changes. Let me try to remove them.

I meant ignored by checking plugins.

Hm... some of them were in git even before my changes. Let me try to remove them.
I meant ignored by checking plugins.

OK, I excluded them from license checks https://github.com/ppalaga/android-client/commit/edac4f7b5b197dca948d13b9160211391e36b36e I hope the list is complete

The last commit is a result of bulk Source > Format operation in Eclipse. Not sure if this will suit Android Studio. Feel free to criticize or propose something else. Anyway, Checkstyle is passing like that. https://github.com/hawkular/android-client/commit/13c52e0538d73b6cf39521756a43ebd4587fdcba

Should I use mvn -s .travis.maven.settings.xml verify locally as well?

I changed to mvn license:check checkstyle:check However, I am not 100% sure it saved any bandwith.

@ppalaga Is the .travis.maven.settings.xml really necessary though? Seems like it just adds repositories and the hawkular-parent is available at Central. Isn’t it better to move these declarations to the parent POM directly?

@ming13 yes, .travis.maven.settings.xml makes sense, because hawkular-parent reaches maven central within 24hrs from the release to JBoss Nexus and I typically upgrade parent in consuming projects just after releasing to nexus.

@ppalaga, thanks for your work!


Use RobotModel joint limits and support acceleration (and maybe jerk) constraints

Add joint position, velocity and acceleration limits.

@sea-bass @sjahr I remember that you had shown way to get these limits from RobotModel. Can you comment with necessary links for the sake of documentation and implementation.
Current options include

Reading it from the URDF/SRDF directly
VariableBounds within robot_model::JointModel class

Any other option I may be missing, or correction in the existing?

You can extract them from the robot model as in here: https://github.com/moveit/moveit2/blob/489d99617932a453057c03134e04e68092b8a189/moveit_ros/moveit_servo/src/utils/common.cpp#L390


Fix BiblioSpec to read MaxQuant files with UTF-8 byte order mark

fixed BiblioSpec to read MaxQuant msms.txt files with UTF-8 byte order mark

Whew, glad debug build caught that one. Might have made for some really confusing Undefined Behavior bugs.


feat: add support for the Mill build tool

This PR adds in support for the Mill build tool by utilizing
https://github.com/ckipp01/mill-scip. It's a pretty thin wrapper. You
can find more details about mill-scip in the repo but the general
workflow is:

It's an external Mill plugin that gathers everything needed to do a
compile via Mill, but then adds some extra plugins/scalacOptions to
ensure semanticDB gets produced
Once produced it uses scip-java as a library to actually produce the
scip file.

The plugin isn't actually a dependency here which ensures we don't have
any cyclical dependency on anything, but rather just utilizes the
--import functionality of Mill and external plugins. I'll leave a
couple more comments on various parts of the PR.
Test plan
There is a test for the Mill integration

Sorry for the noise, created this on my main so closing in favor of #477


Move logout button from settings to top navbar

Closing because combining this with addition of profile deletion button.


Tower API couldn't be called for workflow submission

I have a pipeline and have run it successfully many times before. I always use Nextflow Tower in other to monitor my pipeline. However, today I got an error engaging to Tower API, which couldn't be called when running the pipeline.
N E X T F L O W  ~  version 23.04.2
Launching `nana/main.nf` [clever_meninsky] DSL2 - revision: a818d67225
Unexpected response for request https://api.tower.nf/trace/create?workspaceId=155308103402063

I suppose that could be the maintenance of Nextflow Tower, hope to get some notice.

Today, when I rerun pipeline for comapny, I also meet this errors🥺

@Truongphi20 @minhtrung1997 was the error persistent or was it only happening sometimes? Did you try executing any other pipelines to see if the error is pipeline specific or more systemic in nature? Also it would be good to know if you tried to execute the pipeline from tower UI after it failed from CLI? And if so was the execution successful in that case?

I definitely confirmed that it happens every time the pipeline is started. I only run it on CLI

Use GUI, also failed:

Tower agent gets stuck at API

By the way, 3h later, it work :+1:

Now, It also works for me too. 👍

Now, It also works for me too. 👍

Closing; not directly related to Tower CLI and seems a transient connectivity issue that was somehow solved.


Add caption in BISON TRISO example

closes #120

Job VTB Documentation on 626b976 wanted to post the following:
View the site here
This comment will be updated on new commits.


feat(cloudfront): Ensure Cloudfront distributions have origin failover configured

Context
This check ensures that Amazon CloudFront distributions have origin failover configured to enhance availability.
This PR uses code from PR-4867.
Description
The check verifies that CloudFront distributions use an origin group with multiple origins (2 at least). Origin failover helps maintain high availability by redirecting traffic to a secondary origin if the primary origin fails.
Checklist

Are there new checks included in this PR? Yes

If so, do we need to update permissions for the provider? I do not think so

[x] Review if the code is being covered by tests.
[x] Review if code is being documented following this specification https://github.com/google/styleguide/blob/gh-pages/pyguide.md#38-comments-and-docstrings

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

After conducting a more extensive research, I discovered that while CloudFront distributions can have more than two origins, only two can be configured simultaneously. The new logic leverages this restriction to set a boolean, resulting in a more streamlined, simple, yet effective service structure and check logic.


change type of workflow column in layers table

[ ] I added an entry to CHANGELOG.md if knowledge of this change could be valuable to users.

Here is a brief summary of what I did:

 JSON-Spalten als Postgres-Typen abbilden: Workflow-Spalte in Layers


Weirdly hard to install a simple pure-python plugin

In the process of testing the napari 0.5.4rc3 macOS bundle, I tried to install affinder. Conda is still going so I'm making this issue asynchronously while that's going. It's unclear whether it's going to finish. 😂 But anyway, here's the list of affinder dependencies:
https://github.com/conda-forge/affinder-feedstock/blob/c16758e7b4cde7303aba68096c216a75e4b7fca5/recipe/meta.yaml#L25-L31
These are all things that should be satisfied a priori by the bundle, I believe? But the solve takes forever, then fails:
Starting '/Users/jni/Library/napari-0.5.4rc3/bin/conda' with args ['install', '-y', '--prefix', '/Users/jni/Library/napari-0.5.4rc3/envs/napari-0.5.4rc3', '--override-channels', '-c', 'conda-forge', 'affinder==0.4.0']
Retrieving notices: ...working...
done

Collecting package metadata (repodata.json): ...working...
done

Solving environment: ...working...
unsuccessful initial attempt using frozen solve. Retrying with flexible solve.

Solving environment: ...working...

Found conflicts! Looking for incompatible packages.

I await the result of the conflicts analysis and will update here when it's completed.
Is it easy to inspect what the package specification is for the bundle?

Full log:
https://gist.github.com/jni/99a123459b3737ffeabca8571a25a014

Why we use conda, not mamba in bundle?

(Seems like that should be a different issue @Czaki ;)

Is it easy to inspect what the package specification is for the bundle?

👆 and I asked this so I could check whether mamba/micromamba would give different results here. btw afaik conda now uses libmamba to solve so the solve should not yield different results. I don't know whether I'm right about this though.

(Seems like that should be a different issue @Czaki ;)

My solution for such problem in the past was to switch from conda to mamba (and now I will think about try pixi).

Hm, those logs are coming from the classic solver. Unclear why...
Can you paste the output of /Users/jni/Library/napari-0.5.4rc3/bin/conda info and /Users/jni/Library/napari-0.5.4rc3/bin/conda config --show-sources?

/Users/jni/Library/napari-0.5.4rc3/bin/conda info

     active environment : /Users/jni/micromamba/envs/all
    active env location : /Users/jni/micromamba/envs/all
            shell level : 1
       user config file : /Users/jni/.condarc
 populated config files : /Users/jni/Library/napari-0.5.4rc3/.condarc
                          /Users/jni/.condarc
          conda version : 23.9.0
    conda-build version : not installed
         python version : 3.9.20.final.0
       virtual packages : __archspec=1=m1
                          __osx=14.5=0
                          __unix=0=0
       base environment : /Users/jni/Library/napari-0.5.4rc3  (writable)
      conda av data dir : /Users/jni/Library/napari-0.5.4rc3/etc/conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/napari/osx-arm64
                          https://conda.anaconda.org/napari/noarch
                          https://conda.anaconda.org/conda-forge/osx-arm64
                          https://conda.anaconda.org/conda-forge/noarch
          package cache : /Users/jni/Library/napari-0.5.4rc3/pkgs
                          /Users/jni/.conda/pkgs
       envs directories : /Users/jni/Library/napari-0.5.4rc3/envs
                          /Users/jni/.conda/envs
               platform : osx-arm64
             user-agent : conda/23.9.0 requests/2.32.3 CPython/3.9.20 Darwin/23.5.0 OSX/14.5
                UID:GID : 501:20
             netrc file : None
           offline mode : False

/Users/jni/Library/napari-0.5.4rc3/bin/conda config --show-sources

==> /Users/jni/Library/napari-0.5.4rc3/.condarc <==
auto_update_conda: False
notify_outdated_conda: False
env_prompt: [napari]({default_env})
channel_priority: strict
channels:
  - napari
  - conda-forge
repodata_fns:
  - repodata.json

==> /Users/jni/.condarc <==
channels:
  - conda-forge

/Users/jni/Library/napari-0.5.4rc3/bin/conda list -p /Users/jni/Library/napari-0.5.4rc3

# packages in environment at /Users/jni/Library/napari-0.5.4rc3:
#
# Name                    Version                   Build  Channel
archspec                  0.2.3              pyhd8ed1ab_0    conda-forge
boltons                   24.0.0             pyhd8ed1ab_0    conda-forge
brotli-python             1.1.0            py39hfa9831e_2    conda-forge
bzip2                     1.0.8                h99b78c6_7    conda-forge
c-ares                    1.33.1               hd74edd7_0    conda-forge
ca-certificates           2024.8.30            hf0a4a13_0    conda-forge
certifi                   2024.8.30          pyhd8ed1ab_0    conda-forge
cffi                      1.17.1           py39h7f933ea_0    conda-forge
charset-normalizer        3.3.2              pyhd8ed1ab_0    conda-forge
colorama                  0.4.6              pyhd8ed1ab_0    conda-forge
conda                     23.9.0           py39h2804cbe_2    conda-forge
conda-package-handling    2.3.0              pyh7900ff3_0    conda-forge
conda-package-streaming   0.10.0             pyhd8ed1ab_0    conda-forge
cpp-expected              1.1.0                hffc8910_0    conda-forge
cryptography              43.0.1           py39hc182a1d_0    conda-forge
fmt                       11.0.2               h420ef59_0    conda-forge
h2                        4.1.0              pyhd8ed1ab_0    conda-forge
hpack                     4.0.0              pyh9f0ad1d_0    conda-forge
hyperframe                6.0.1              pyhd8ed1ab_0    conda-forge
icu                       75.1                 hfee45f7_0    conda-forge
idna                      3.10               pyhd8ed1ab_0    conda-forge
jsonpatch                 1.33               pyhd8ed1ab_0    conda-forge
jsonpointer               3.0.0            py39h2804cbe_1    conda-forge
krb5                      1.21.3               h237132a_0    conda-forge
libarchive                3.7.4                h83d404f_0    conda-forge
libcurl                   8.9.1                hfd8ffcc_0    conda-forge
libcxx                    19.1.0               ha82da77_0    conda-forge
libedit                   3.1.20191231         hc8eb9b7_2    conda-forge
libev                     4.33                 h93a5062_2    conda-forge
libffi                    3.4.2                h3422bc3_5    conda-forge
libiconv                  1.17                 h0d3ecfb_2    conda-forge
libmamba                  2.0.0                h66a2e1b_1    conda-forge
libnghttp2                1.58.0               ha4dd798_1    conda-forge
libsolv                   0.7.30               h6c9b7f8_0    conda-forge
libsqlite                 3.46.1               hc14010f_0    conda-forge
libssh2                   1.11.0               h7a5bd25_0    conda-forge
libxml2                   2.12.7               h01dff8b_4    conda-forge
libzlib                   1.3.1                hfb2fe0b_1    conda-forge
lz4-c                     1.9.4                hb7217d7_0    conda-forge
lzo                       2.10              h93a5062_1001    conda-forge
mamba                     2.0.0                h6425b9e_1    conda-forge
ncurses                   6.5                  h7bae524_1    conda-forge
nlohmann_json             3.11.3               h00cdb27_1    conda-forge
openssl                   3.3.2                h8359307_0    conda-forge
packaging                 24.1               pyhd8ed1ab_0    conda-forge
pip                       24.2               pyh8b19718_1    conda-forge
pluggy                    1.5.0              pyhd8ed1ab_0    conda-forge
pycosat                   0.6.6            py39h0f82c59_0    conda-forge
pycparser                 2.22               pyhd8ed1ab_0    conda-forge
pyopenssl                 24.2.1             pyhd8ed1ab_2    conda-forge
pysocks                   1.7.1              pyha2e5f31_6    conda-forge
python                    3.9.20          h9e33284_0_cpython    conda-forge
python_abi                3.9                      5_cp39    conda-forge
readline                  8.2                  h92ec313_1    conda-forge
reproc                    14.2.4.post0         h93a5062_1    conda-forge
reproc-cpp                14.2.4.post0         h965bd2d_1    conda-forge
requests                  2.32.3             pyhd8ed1ab_0    conda-forge
ruamel.yaml               0.17.40          py39h17cfd9d_0    conda-forge
ruamel.yaml.clib          0.2.8            py39h17cfd9d_0    conda-forge
setuptools                75.1.0             pyhd8ed1ab_0    conda-forge
simdjson                  3.10.1               h7b3277c_0    conda-forge
spdlog                    1.14.1               h6d8af72_1    conda-forge
tk                        8.6.13               h5083fa2_1    conda-forge
tqdm                      4.66.5             pyhd8ed1ab_0    conda-forge
tzdata                    2024a                h8827d51_1    conda-forge
urllib3                   2.2.3              pyhd8ed1ab_0    conda-forge
wheel                     0.44.0             pyhd8ed1ab_0    conda-forge
xz                        5.2.6                h57fd34a_0    conda-forge
yaml-cpp                  0.8.0                h13dd4ca_0    conda-forge
zstandard                 0.23.0           py39hcf1bb16_1    conda-forge
zstd                      1.5.6                hb46c0d2_0    conda-forge

I think I know why: the base env in the installer is being solved with mamba 2.0, which is incompatible with conda-libmamba-solver, so we are getting an old conda (23.9), which is the latest that didn't depend on conda-libmamba-solver by default. The solver chooses to drop conda-libmamba-solver to optimize for mamba 2.0. This should be fixable in napari/packaging. Will submit a PR now.
Additionally, we are not finding mamba under condabin/ because 2.0 only puts it under bin/. Adding a PR for that in mamba-feedstock: https://github.com/conda-forge/mamba-feedstock/pull/251

https://github.com/napari/packaging/pull/187 is the fix, ready for review. You can see the conda list output now in the CI logs too, which confirms conda-libmamba-solver is installed and in use.

affinder uses python 3.10 as minimum and bundle 3.9?

That's a separate issue, I think. We can of course bump it up, but let's collect feedback about it first.
@jni, the packaging fix is up. What to do next:

Rename the installers in the releases page to something else, like -broken suffix or something.
Rerun the Bundle * CI jobs for the rc3 tag
Test the new installers
Delete the -broken ones

I have added 0.5.4rc4 to create ne release

@jaimergp  let's definitely bump Python though, 3.9 is ancient! I'd go for 3.11 or 3.12 these days.


[core] Automate cherry-pick of PRs from next -> master

As @oliviertassinari suggested, this PR adds a GitHub Action to automate cherry-picking PRs from next to master (see Olivier's comment to see how it works). The code is an exact copy from MUI X (thanks @MBilalShafi !).
cc @danilo-leal

Awesome first PR! 🤝

Nice 👌


High CPU usage and degradation over time

First of all thanks for the great plugin, been using it for years.
Description
It seems that with the latest versions and with the addition of Signs, CPU usage is significant and keeps increasing over time.
Running nvim-scrollview with
require("scrollview").setup({
  -- excluded_filetypes = {'nerdtree'},
  current_only = false,
  winblend = 50,
  base = "right",
  signs_on_startup = {
    "conflicts",
    "cursor",
    "diagnostics",
    "marks",
    "search",
    "spell",
    "textwidth",
    "trail",
  },
})

results in significant initial CPU usage (16.3%):

The problem is that the CPU usage will also increase over time. Here it is after 10 min at idle (35.2%):

and after 20 min (45.6%):

Without any signs, aka:
require("scrollview").setup({
  -- excluded_filetypes = {'nerdtree'},
  current_only = false,
  winblend = 50,
  base = "right",
  signs_on_startup = {
  },
})

The CPU usage remains relatively stable over time. Here it is without signs at 15min (11.7%):

Comparatively, here is the same nvim configuration with nvim-scrollview uninstalled after 24 hours (1.3%):

CPU usage here is low and does not increase over time.

It took me a while to find out that the problem was coming from nvim-scrollview. The initial sign was after profiling Neovim using profile.nvim and obtaining the following profile:
profile.zip
Which can be analyzed using chrome://tracing or https://ui.perfetto.dev/
Using the profile, we can see that even for a short amount of time of Neovim being open:

get_sign_eligible_windows is called quite a bit and for significant duration.
Additional Info
nvim version: NVIM v0.10.0-dev-552+g08db61b19
nvim-scrollview version: 251c5b9

Thanks for the detailed analysis and reporting the issue @jemag.
I saw that you mentioned "Here it is after 10 min at idle". Can you provide more details on what's meant by idle? My interpretation is that you're seeing high CPU usage even when not actively interacting with Neovim.
I would expect higher CPU usage while scrolling, but wouldn't expect more (or any) CPU usage while the editor is not actively being used. I ran experiments and confirmed that CPU usage is higher than without nvim-scrollview when scrolling a large document (holding <ctrl-d>). However, I see 0.0% CPU usage when the editor is open but not being used. If you're seeing increased usage even without actively using the editor, do you have any ideas how I could reproduce the issue?

Can you provide more details on what's meant by idle? My interpretation is that you're seeing high CPU usage even when not actively interacting with Neovim.

Yes I am indeed only opening Neovim and then not touching it for all those amount of time. So Neovim is just sitting there in a Tmux pane while I check the CPU increase over time.

However, I see 0.0% CPU usage when the editor is open but not being used. If you're seeing increased usage even without actively using the editor, do you have any ideas how I could reproduce the issue?

I can try and see if I can build a more minimal config reproduction, although it might be a bit hard given that I most likely need at least LSP and diagnostics running.
Perhaps there is a wrong interaction with something in my config, but the CPU usage definitely comes from nvim-scrollview. I also tried similar alternatives such as https://github.com/lewis6991/satellite.nvim, and CPU usage was fine there (tested over 24h).

One thing that might be causing an issue is if 'updatetime' is set low (nvim-scrollview refreshes signs and scrollbars on CursorHold event). Do you have a low value for updatetime? The default is 4000.
set updatetime?

Another possibility is that another plugin is modifying a buffer and the TextChanged event is firing, which would cause scrollbar and sign refreshing.
If you run the following commands, is an increasing value continuously printed while the editor is not actively being used?
let x = 0
autocmd TextChanged * :let x += 1 | echo x

What if you try, after restarting Neovim for each attempt, with some of the other events that would cause scrollview refreshing?
let x = 0
autocmd WinEnter * :let x += 1 | echo x

let x = 0
autocmd TermEnter * :let x += 1 | echo x

...  (also CmdwinLeave, WinScrolled, WinResized, BufWinEnter, TabEnter, VimResized, OptionSet)
let x = 0
autocmd CursorHold * :let x += 1 | echo x

Thank you for helping me debug this, I have tried all the events and it seems that OptionSet is indeed continuously triggering, here is a video showing it:
https://github.com/dstein64/nvim-scrollview/assets/7985687/335b5dad-75ac-4478-a9dd-8a8a11d67153
Not quite sure what could be the source of it, printing the autocmd callback payloads, I get mostly these:
{
  buf = 0,
  event = "OptionSet",
  file = "",
  id = 36,
  match = "eventignore"
}
{
  buf = 0,
  event = "OptionSet",
  file = "",
  id = 36,
  match = "modified"
}

with eventignore at around double the rate of modified

I just realized that nvim-scrollview only refreshes if the OptionSet event triggers for the winbar option.
So the test would be:
let x = 0
autocmd OptionSet winbar :let x += 1 | echo x

Presumably that wouldn't trigger since eventignore and modified are the primary options being set. If you disable nvim-scrollview, are those options continuously being set, or does it only happen when scrollview is enabled?

Not quite sure if I understood properly but using
let x = 0
autocmd OptionSet winbar :let x += 1 | echo x

with nvim-scrollview running the number does not increase.
Using
let x = 0
autocmd OptionSet * :let x += 1 | echo x

with nvim-scrollview running, the number increases.
Using it again with nvim-scrollview uninstalled, the number does NOT increase.
Basically OptionSet is not being continuously triggered if nvim-scrollview is not installed.

I guess that the OptionSet event firings you're seeing are due to the scrollbars continuously being refreshed, since the plugin modifies options over the course of refreshing plugins. I think that neither of those options would be triggering the refreshing, but are rather a side effect of refreshing occurring.
If you comment out the following lines (which would effectively disable the plugin), does the problem go away?
https://github.com/dstein64/nvim-scrollview/blob/251c5b9b15f7937bfe9a24bf3066a9944936c32d/lua/scrollview.lua#L1724-L1768
Is one of the lines the culprit, causing the problem when adding back?

I think your most recent comment confirms that the OptionSet events are a side effect of scrollview refreshing, as opposed to being the cause itself of the refreshing.

yes using
let x = 0
autocmd OptionSet * :let x += 1 | echo x

with the plugin with lines 1724-1768 commented out, results in the number staying the same (OptionSet not constantly triggered).

With those lines commented out, does the CPU usage remain low? When removing the comments one at a time, is there a specific line that makes the CPU usage go back up?

so far CPU seems to remain low with all lines commented out. I have to go out for now, but I'll test removing comments one at a time when I come back.

Tested all of them and no significant baseline CPU or CPU increase over time until I uncommented the CursorHold one.
Once I uncommented autocmd CursorHold * :lua require('scrollview').refresh_bars_async() then the OptionSet autocmd counter started increasing again on its own, even when I am not focusing the Neovim pane. CPU now increases over time as before.

What is your updatetime set to?
set updatetime?

100
I could change it although that would impact other behaviors and plugins relying on CursorHold as well.
I wouldn't mind if there is some baseline CPU usage, but shouldn't the CPU still not increase over time, no matter the updatetime?

I can reproduce the issue with set updatetime=100. The CursorHold event fires repetitively, causing scrollbars to keep being updated. It looks like the reason for this is because scrollview uses :normal! during the course of its processing, and this triggers CursorHold to fire, which then causes scrollview to refresh, which causes CursorHold, ..., and this keeps repeating.
I've removed automatic refreshing for CursorHold in f07e8ddbb2c9fca324f2bdc6a9703b98ab0e2f39. Thanks for your help running the experiments to debug.

"I wouldn't mind if there is some baseline CPU usage, but shouldn't the CPU still not increase over time, no matter the updatetime?"

I was able to reproduce that prior to f07e8ddbb2c9fca324f2bdc6a9703b98ab0e2f39. The issue is concerning since as you said, CPU usage should not increase. However, after removing the CursorHold autocmd, I don't see CPU usage increase over time, even when scrollview is refreshed every 10 milliseconds.
" The following example assumes a window with a scrollbar is open.
func MyHandler(timer)
  ScrollViewRefresh
endfunc
let timer = timer_start(10, 'MyHandler', {'repeat': -1})

Thanks for your help throughout all of this. Updated with the last commit and works great for me.


does new dataset api support pre read data?

I found that currently dataset api does not support pre read data as old reading data api. If we have so much train data the feature, the speed of reading data is critical.

The easiest way to prefetch data is to use dataset = dataset.prefetch(BUFFER_SIZE), which is available in the nightly build. If you're using a release, you can get the same effect with dataset = dataset.map(lambda x, y, z, ...: return (x, y, z, ...), num_threads=1, output_buffer_size=BUFFER_SIZE).

I already try to add  thread unum and buffer size param to dataset method map, but it doed not speed up.  It seems that the two params  does not  used for pre read data accoding to the docs.
My problem is when I have multiple gpu in one machine, I want  data parallism to speed up training speed. So I add multiple dataset node in the tensorflow graph  one for a gpu, but it seems that multiple dataset read data seqnencely and in one dataset there's no data pre reading. Multiple gpu can not be fully used as reading data into tf takes so much time.

They certainly are used for prefetching. It's hard to say what the source of slowness is, without seeing the entire pipeline. It's possible that the input source (I'm guessing from files?) is limiting your overall throughput.


F821 Undefined name outer class method using inner class as type hint

Sorry for spamming you with issues! Found another one while running ruff on a project for the first time:
# yolo.py:
from enum import Enum

class Ticket:
    class Status(Enum):
        OPEN = 'OPEN'
        CLOSED = 'CLOSED'

    def set_status(self, status: Status):
        self.status = status

gives
$ ruff yolo.py
yolo.py:9:34: F821 Undefined name `Status`

Found 1 error(s).

Np, the issues are appreciated!