Last data point value differs from others when maxDataPoints specified

Env
graphite 1.0.2
ubuntu 14.04
What did I do?
Send request with the specified maxDataPoints:
http://<IP_ADDRESS>:8080/render/?target=aliasByNode(scale(scale(keepLastValue(Test.Stat.Money.cost), 1.18), 0.000001), -1)&from=-1d&format=json&maxDataPoints=1853

What was the expected result?
[{"target": "cost", "datapoints": [[1681.76775734,<PHONE_NUMBER>], ..., [1681.76775734,<PHONE_NUMBER>], [1681.76775734,<PHONE_NUMBER>]]}]

What happened instead?
Last data point value differs from others (sometimes only):
[{"target": "cost", "datapoints": [[1681.7677573400001,<PHONE_NUMBER>], ..., [1681.7677573400001,<PHONE_NUMBER>], [1681.76775734,<PHONE_NUMBER>]]}]

But sometimes (less frequently) all looks good except of increasing of all values on 10^−13.

What you're most likely seeing here is that when using maxDataPoints what happens is that the underlying points are divided up into groups and aggregated, but when reaching the end of the series the final grouping may not have the same number of points as the rest.
For example if you have a series with values 1,1,1,1,1,1,1 and ask for maxDataPoints=4 and consolidateBy('sum') that will get broken up into (1,1) (1,1) (1,1) (1) and consolidate to 2,2,2,1
If you want to avoid that you can add |xFilesFactor(1) to your query and you'll only get values for intervals that have enough points, so instead you'd get 2,2,2,null

Are you sure this only happens with maxDataPoints? I've seen strange float rounding errors before which I couldn't reproduce. See also this one: https://github.com/graphite-project/graphite-web/issues/1124 (don't know if related).

@piotr1212 yeah, floating point math is another potential source of excitement.  The only ways I know of to get around that would be to use https://docs.python.org/3.6/library/decimal.html (which would slow down all calculations compared to float), or to use the round function to truncate to the desired precision and discard any leftover floating point math artifacts.
Right now the math done in the maxDataPoints consolidation doesn't have any way to specify the desired precision, but that's something we could look into.

@DanCech, your explanation sounds good. Thank you.
But it seems this cannot be get around without an upgrade of graphite 1.0.2.

See also this one: #1124 (don't know if related).

Not related

If you want to avoid that you can add |xFilesFactor(1) to your query and you'll only get values for intervals that have enough points, so instead you'd get 2,2,2,null

Confirm, it work since 1.1.1 stable version.


Workspaces list

Details

Fixed Issues
$ https://github.com/Expensify/App/issues/9971
Tests / QA Steps

Create a new account. Login, click on profile icon to view settings.
Confirm you see a new "Workspaces" option above "Profile".
Click into it and confirm you see "Create a new workspace" message with text explaining about a workspace below it. Confirm you see a button for "New Workspace" at the bottom.
Click on the New Workspace button. Confirm a workspace is created successfully.
Click back to go to the Settings and confirm you see 1 workspace avatars next to Workspaces.
Repeat steps 4 and 5, until you have 4 workspaces and confirm you see 4 avatars.
Repeat steps 4 and 5 again for a 5th workspace, this time confirm you see 4 avatars but the 4rth one is opague with +1 over it.
Add workspace profile icons for the 1st, 3rd and 4rth workspaces. Go to settings and confirm their avatars show up with the proper icons uploaded. (the 4th one has opacity so you might have to zoom in to see clearer)
Click on workspaces -> select a workspace -> manage members -> set network throttling to offline in chrome dev tools -> invite user +25857527444 (this is an incorrect user and should throw error). Close settings.
Turn network throttling to online. Confirm you see error red dot on profile icon, click it.
Confirm you see error red dot next to the avatars and the UI still looks good.

[x] Verify that no errors appear in the JS console

PR Review Checklist

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] iOS / native
[x] Android / native
[x] iOS / Safari
[x] Android / Chrome
[x] MacOS / Chrome
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product was added in all src/languages/* files
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by tagging the marketing team on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

PR Reviewer Checklist
The reviewer will copy/paste it into a new comment and complete it after the author checklist is completed

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] iOS / native
[ ] Android / native
[ ] iOS / Safari
[ ] Android / Chrome
[ ] MacOS / Chrome
[ ] MacOS / Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product was added in all src/languages/* files
[ ] I verified any copy / text that was added to the app is correct English and approved by marketing by tagging the marketing team on the original GH to get the correct copy.
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots

Web
https://user-images.githubusercontent.com/14356145/197073921-e3e6a6c1-8b93-4956-b9b6-cb537931d693.mov
Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

I have no idea why PR Author Checklist is failing but we can ignore that for now.

Do we want to show "New Workspace" option in FAB if there are no workspace? Just making sure.

For the time being yes. We'll move away from this logic further down in our product roadmap when we've implemented a more complete onboarding experience.

Updating this today. First priority is the App deploy and this is second on my list.

While directly navigating to http://localhost:8080/settings/workspaces, "Create a new workspace" page is shown for a while before showing the list of workspaces.

I don't feel like this is a common use case since users could never go to settings/workspaces unless they manually set it that way. But either way i think we can make a follow up issue to polish this up if needed.

Red Dot icon not shown in "Workspaces" in Settings Page.

Nice, great catch, i updated the code to correct this. Can you retest.

Avatar(with user uploaded image) of deleted workspace when offline defaults to avatar with person.
Steps To Reproduce:

Updated code to not show pending deleted workspaces which would just automatically clean this up.

When there is only one workspace (not sure), Deleted Workspace in offline reappears in online. Might be related to delete functionality.

This seems to work just fine for me.

In contrast to https://github.com/Expensify/App/pull/11784#pullrequestreview-1150301544, deleted workspace in offline reappears in offline.

Odd issue, I'm not able to reproduce what you got and it works just fine for me. The difference in my testing is i usually turn off network per chrome tab via developer tools and not switch off the internet or my laptop. But either way, onyx data is usually how i expect so it seems to be working fine for me 🤷♂

NAB but this seems like a really good component to add some storybook stories for

I don't mind but I would prefer to create a follow-up issue for this to prevent this PR from growing in size.
Updated PR to address the remaining comments and retested. Ready for re-review.

https://github.com/Expensify/App/pull/11784#pullrequestreview-1150257413 : I think We should create follow up issue.
https://github.com/Expensify/App/pull/11784#pullrequestreview-1150268507 : I cannot reproduce this issue any longer.
https://github.com/Expensify/App/pull/11784#pullrequestreview-1150287022 : No any avatar shown for deleted workspace. But we can find the deleted workspace in Workspaces list. I am not sure if it is an issue.
https://user-images.githubusercontent.com/25876548/197780671-410f9be0-e379-482e-98f3-5001945ef87e.mov
https://github.com/Expensify/App/pull/11784#pullrequestreview-1150301544 : I cannot constantly reproduce it. But I can still reproduce this issue once in 3-4 attempts. This time at first I see blank page without "Create a new workspace" message. After refreshing the page, I can still see the deleted workspace.
https://user-images.githubusercontent.com/25876548/197782927-a63af14c-40e8-4b3a-8c3d-63ae99d40b3f.mov
https://github.com/Expensify/App/pull/11784#pullrequestreview-1150305881 : I can still reproduce this issue. I followed the reproduction steps two times. On the second attempt, I was able to reproduce.
https://user-images.githubusercontent.com/25876548/197785154-2778281a-bbbc-4217-97c8-0ca2c0c12a0f.mov

https://github.com/Expensify/App/pull/11784#pullrequestreview-1150257413 - I agree. I created a follow-up here. I'll add the necessary labels and mark external once this code is merged.
https://github.com/Expensify/App/pull/11784#pullrequestreview-1150287022 - That's not an issue. In offline mode we should show the deleted workspace with a strikethrough. Unless you are online, hard to tell from your video. When online the deleted workspace should vanish.
https://github.com/Expensify/App/pull/11784#pullrequestreview-1150301544 - I tried the test 6 times in a row and could not reproduce. Also that issue does not look related to this PR. You should check the network request for that one because it looked like the deleted command failed. Because on refresh if you see the deleted workspace that means it was never deleted in the backend. So it doesn't look related to this PR.
https://github.com/Expensify/App/pull/11784#pullrequestreview-1150305881 - Also worked fine for me and i also feel this is the similar problem as previous where your network request is not really deleting the workspace which is why it shows up on reconnect. Not related to this PR since i don't change the behavior of those.
Maybe try again by deleting node_modules and running npm i. Maybe some files are older or out of sync hence causing these problems? Either way, since i feel those are not related to this PR can we move ahead with reviewing or approving this PR. If those problems persist we can open follow-ups for them 🙂

QA steps are not added.

Oh hah, classic. Thanks Rory for updating the section to say Tests / QA steps.
btw @sobitneupane, for some of the issues you mentioned where workspaces are showing back up. Some other engineers reported the issue and we're discussing it here https://github.com/Expensify/App/issues/12109 and should have a fix for it soon.

I bumped @cristipaval on newDot to review this.

Works fine for me on desktop,
https://user-images.githubusercontent.com/14356145/198384115-20acbbab-6e69-4926-a7ae-80bd734737b9.mov

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by @cristipaval in version: 1.2.21-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by @Julesssss in version: 1.2.21-4 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

Hey the scenario for viewing a deleted/invalid workspace and backing out of it was missed when implementing this new page and caused #13276. Since this is a new page between the initial settings page and the workspace page, we should've updated the "not found" blocking view to just return you to the new list page instead of dismissing the modal entirely.

👋 This PR didn't optimistically filter out policies that were pending deletion resulting in https://github.com/Expensify/App/issues/13615. Since we want to optimistically assume success here, we should have removed the policies up front and added them back in the request failed.

👋 This PR caused an issue when the app was configured in Spanish, because the empty Workspaces page didn't have correct horizontal padding. Not sure what could have been differently since the test steps don't say to test with the app in Spanish, but started a discussion here if anyone thinks we could have done something different to prevent the issue.

👋 This PR was sorting workspaces alphabetically while not ignoring the case, which caused https://github.com/Expensify/App/issues/16925 and resolved by using
.sortBy(policy => policy.title.toLowerCase())
Not a regression, just something that was missed during the initial implementation


emadynsampler weight Discrepancy

Versions

Go: N/A
Refinery: N/A

Steps to reproduce

Additional context
Forwarding a report from the Docs Site feedback form:

Weight for the emadynsampler does not show its default value - Looking through the refinery code, this doesn't appear to be set there, instead it looks like it's set in dynsampler-go instead: https://github.com/honeycombio/dynsampler-go/blob/fd56ea90d9315f7204a9a20c1065587983d456ee/emasamplerate.go#L43-L48
Can you please document this?
Docs Page URL: https://docs.honeycomb.io/manage-data-volume/sample/honeycomb-refinery/sampling-methods/#ema-dynamic-sampler

This may be a documentation issue, or a Refinery bug. Happy to help either way.

Turns out we're not doing defaults for most of this stuff, so I'll be fixing that.


Allow empty collections

When a fields.List is being parsed, it returns 'missing' if list is empty. Why not return empty list instead?

In core.py, parse_arg:
if (is_multiple(field) and not
    (isinstance(value, collections.Iterable) and len(value))):

len(value)
```is checking if value is an empty list.
I suggest removing this check

@mTatcher Yes, I think and empty list should be returned if an empty list is passed from the client. That incorrect check appears to be a remnant from webargs' pre-marshmallow days.
Pull requests welcome!


Fix SNS application endpoint to match AWS return format

SNS endpoints currently only hold exactly the attributes dict that is passed into the constructor. While this naively seems correct, it turns out it doesn't match the behavior of AWS typically, which automatically sets 2 attributes - Token and Enabled. My change simply auto-sets those attributes if they weren't explicitly included, and modifies the tests accordingly.

Coverage increased (+0.002%) to 94.276% when pulling 71aa8dfd1d97f41116dd7ed22ef8e4bef43c71a4 on mpappas86:snsHotfix into 5c3d9b4ae144f76ee8cac8182c48db8450aa8f4a on spulec:master.

Thanks!


Fix build

Temporarily fixes the build. Once #9259 merges, we can pin a specific version for this example so that this build doesn't break with changes to Cloudy.jl's master

Thanks to @rohanmclure (co-authored)!

bors r+


cargo install tvm-build fails

It seems there's a package conflict with the latest version of tvm-build that's on crates.io:
❯ cargo install tvm-build                                                                                (base)
    Updating crates.io index
  Installing tvm-build v0.2.2
error: failed to compile `tvm-build v0.2.2`, intermediate artifacts can be found at `/var/folders/8g/_0x9qb6d789gqxj4ty9m1s740000gn/T/cargo-installbJHNFb`

Caused by:
  failed to select a version for the requirement `platforms = "^0.2.0"`
  candidate versions found which didn't match: 2.0.0, 1.1.0, 1.0.3, ...
  location searched: crates.io index
  required by package `heim-host v0.0.11`
      ... which satisfies dependency `heim-host = "^0.0.11"` of package `heim v0.0.11`
      ... which satisfies dependency `heim = "^0.0.11"` of package `tvm-build v0.2.2`

It looks like platforms = "^0.2.0" has been yanked. https://crates.io/crates/platforms/versions

You can get around this by using cargo install tvm-build --git https://github.com/octoml/tvm-build.git --locked.


Add build file for sonarqube integration

This pull request introduces a new GitHub Actions workflow to automate the build and analysis process for the project. The workflow is configured to trigger on pushes to the main branch and includes steps for setting up the environment, caching dependencies, and running the build and analysis.
Key changes include:

Added a new workflow configuration in .github/workflows/build.yml to automate the build and analysis process.

Configured the workflow to trigger on pushes to the main branch.
Set up the job to run on ubuntu-latest.
Included steps to:

Check out the repository.
Set up JDK 17 using the actions/setup-java action.
Cache SonarQube and Maven packages.
Run the build and SonarQube analysis using Maven.

This PR closes #13

Bien


Retry preload

Description
I see a regular stream of errors on a live site (I can't reproduce locally) which are trapped by Sentry, of the form:
TypeError: Unable to preload CSS
There's no indication of the actual error, but I suspect it's just a flaky network.
Suggested solution
It would be useful to be able to retry preloading to handle unreliable networks.  I think the relevant code is in importAnalysisBuild.ts, but I'm not quite how to do that.  Perhaps remove the failed script and add it again with a unique URL parameter?
Alternative
It would be useful to know whether this is actually a problem.  If it's just preloading, then it doesn't matter until the CSS is actually required.  I assume (but I don't know for sure) that it would try again to load at that point, which might cause an error then.
If that's the case, then I could just ignore these errors in Sentry, and I would question whether it should be throwing an Error at this point.
Additional context
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

#12080 proposes a way to handle these errors. So I'll close this issue as an duplicate of that one.

It would be useful to know whether this is actually a problem.

This is called preload but actually it's happen just before the chunk load. This is implemented to avoid FOUC.
https://vitejs.dev/guide/features.html#build-optimizations:~:text=The CSS file is automatically loaded via a <link> tag when the associated async chunk is loaded%2C and the async chunk is guaranteed to only be evaluated after the CSS is loaded to avoid FOUC.


Make sure examples can actually build with defmt enabled

This PR:

removes duplicate example checks
adds stuff to make sure the defmt feature not only passes cargo check but actually builds
adds +nightly toolchain spec for consistency
don't enable esp-println/log by default
fixes examples to work with log disabled

Turns out, many of the current examples (that are checked by CI) don't actually link. Part of the problem is defmt, which is fixed by this PR (though I'm still very much confused why e-h-common can build at all, even though Interrupts doesn't implement Format yet...?), but other than this, the timer and sw interrupt examples aren't linking if embassy support is enabled, due to multiple definitions of certain interrupt handlers. How should we handle these examples?

looks good to me but I'd like to leave the final word on this to @jessebraham since he did most of the work on CI

No worries but let's see what CI says, I'm not 100% confident.

Hold on please, things don't build locally.

At this point I'm getting pretty concerned that we've added this defmt feature and nobody can seem to get CI to verify it.

This PR wasn't trying to get CI to verify the feature, but I can add a cargo build for each build target if you want me to.

The title of the PR is Make sure examples can actually build with defmt enabled, CI is green, and you're saying it's not building.

Yeah, this is a fix to build the examples locally. I didn't want to increase CI times by turning some cargo checks into cargo builds.

@jessebraham if you're fine with cargo build this is fine now. Looks like the linker script needs to be added to each package. I'm suspecting something's up with conditional compilation and build scripts.


add alpha common operator types

We used these types in cluster up to base the webconsole operator on, but they've never been subjected to an API review.  I want to use these types to build some helpers around in library-go as I build out the service serving cert signer operator to manage the different controllers.
I've still titled them alpha because I expect them to change, but this will allow us to run a couple similar experiments in parallel.
/assign @liggitt
/assign @smarterclayton

/lgtm
the group name isn't particularly meaningful until there are top-level types (of which there are none in this PR)
if we get consumers of these and later realize the types aren't as common as we thought and should diverge, we can simply copy these into the consuming packages with no impact on serialization

I don't think the bot merges for us here.  Merging

Ok, good. I guess "the component" is clearly defined as the operated service.


LIVE-5363 - Added network fee E2E test steps and fixed network fee race condition

📝 Description
Adding network fee tests
Adding steps to the swap Playwright E2E test that:

opens the network tab
checks the standard and advanced fees can be clicked
The fee is updated to reflect a change

Also a bug has been fixed that caused a race condition on the network fee drawer. Basically the Transaction object in the Redux store was being set to null first and then the transaction. This meant that the drawer was trying to read a null object before it had been set to the transaction, which was only picked up on the fast moving PW tests.
❓ Context

Impacted projects: ``
Linked resource(s): ``

✅ Checklist

[x] Test coverage
[x] Atomic delivery
[x] No breaking changes

📸 Demo

🚀 Expectations to reach
Please make sure you follow these Important Steps.
Pull Requests must pass the CI and be internally validated in order to be merged.

/generate-screenshots

/generate-screenshots

/generate-screenshots

/generate-screenshots

/generate-screenshots


Quote database name on mysql

I encountered this issue using buffalo db create -a with a database with a dash in it's name on MariaDB. The issue should be reproducible in mysql too.
I was looking into adding a test case for it but I'm not sure what's the best approach, do you have any refactoring "roadmap" in mind to improve testability? I'd be happy to help with that.

Thanks. I'm working on a dockerfile to make it easier for everyone to run the tests. There's great coverage already, but currently you need to have all the databases set up and configured correctly in order to run the tests. Hopefully a dockerfile will make that easier for everyone.


Add types for OPC schema nodes

Is your feature request related to a problem? Please describe.
For future graphic engine development, there should be clear and strict type annotations for OPC nodes, including schema nodes and components.
Describe the solution you'd like
OPC server nodes givided by their protocol, server items by their type, such as folder or tag. Schema nodes divided by their properties and effects

Add protocol check in NET module, remove static isDa check


Create migration to assign Instructor award to SWC, DC, and LC Instructors

All community members who currently have at least one of the following awards:

SWC Instructor
DC Instructor
LC Instructor

need to receive the "Instructor" award.
If a community member has more than one Instructor award, they should get assigned the "Instructor" badge with an award date that corresponds to the earliest award received.
The person who assigned the original award should also be the person who is recorded as assigning the "Instructor" award.
The event associated with the original award should also be the event associated with the "Instructor" award.
The previous Instructor awards a community member has received should be kept.
See this profile as an example

@fmichonneau I assume that "The person who assigned the original award" and "The event associated with the original award" correspond to the earliest instructor award received in case a person has more than 1 instructor awards. Can you confirm?

yes, that's correct. Thanks!


[QUESTION] Is Implicit Flow supported in the swagger?

I see there is OAuth2PasswordRequestForm but I dun see an example which allows me to set client Id/redirect url/scope for this kind of OAuth2 authentication flow

https://swagger.io/docs/specification/authentication/openid-connect-discovery/

OIDC is currently not supported in Swagger Editor and Swagger UI. Please follow this issue for updates.

https://github.com/swagger-api/swagger-ui/issues/3517
Seems work in progress~

I have to check directly with Swagger UI how it would work with several providers, but I guess @hampsterx already found some info about it.

@chantinghin0203 @hampsterx the "work in progress" is for the OIDC (OpenID Connect) discovery implementation in swagger-ui (see the issue 3517 mentioned by hampsterx)
However, the initial question was if the OAuth2 implicit flow is supported in swagger-ui. The question has nothing to do with OIDC and the answer to it is YES.
Implicit flow does work in Swagger-ui v3.0.5 using the OpenAPI 3.0 template and Keycloak as the OAuth2 provider.
This is what I have in the template:
components:
  ...
   securitySchemes:
    my_auth_whatever:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: https://MY-KEYCLOAK-HOST/auth/realms/MY-REALM-ID/protocol/openid-connect/auth
          tokenUrl: https://MY-KEYCLOAK-HOST/auth/realms/MY-REALM-ID/protocol/openid-connect/token
          scopes: {}
  ...
security:
  - my_auth_whatever: []

Make sure the implicit flow is enabled in OAuth provider (keycloak in my case) settings for the client that you use.
authorizationUrl and tokenUrl can be obtained from the OIDC discovery JSON and are a part of the plain OAuth2 spec.
Not sure what would be the syntax for the the spec written with OpenAPI 2.0 and haven't tested it. But you may refer to https://swagger.io/docs/specification/2-0/authentication/ or convert your 2.0 spec into 3.0 using the online converter.

Yep, I think @nikitamendelbaum is right.


Make filter, reduce etc work for iterable

Operations should not mutate the passed object. So it should only been done for types which have the following properties:
a)
1) constructor is known and can be used
2) adding or yielding element operation is known and can be used
or
b)
1) clone operation can be used
2) object supports ArrayAccess::offsetSet
It should be done for the following types: array, Generator, ArrayIterator, ArrayAccess.
Related with #109

Should not be done as any function which contains yield returns \Generator, use the iterator_apply() instead.


Fix the error that the bus thread is not quited

So far, when the thread is finished, we only quit it.
However, the application is stopped so quickly, there is no enough time for bus thread to finish quit.
And it cause the error: Destroyed while thread is still running.
Thus, I just called wait() after quit().

Please explain what wait() does or provide a link of documentation.
In addition, I don't want this PR changes README.md.
Is this branch created from the new version of main branch?


Feature: Display Nextcloud status

What's the Problem?
In Windows Explorer, with Nextcloud, it can show if a file is saved to your computer or in the personal cloud.
Solution/Idea
I know this seems more of a coding request on Nextcloud App side since that is where it originates from to inject the code into Windows Explorer, but maybe there is a way to pull that from Windows Explorer. Maybe have an instance that every time a File Explorer window is opened it checks to see if Nextcloud is installed on the PC and if yes, then execute the code from Windows Explorer into File Explorer... or something along those lines.
Alternatives
The only other alternative I can see is if Nextcloud includes checking and writing to File Explorer upon install. If maybe File Explorer became more mainstream, then I can see this happening. Hopefully File Explorer does get more attention!
Priorities

Capability
Priority

This proposal will allow developers to accomplish including users with Nextcloud
Could

Files Version
Version: <IP_ADDRESS> OS Version: 10.0.22000.493
Windows Version
Windows 11 Pro Version	21H2  OS build 22000.493
Comments
No response

Could you show a screenshot of windows explorer vs Files that shows what's missing?

Interesting... I didn't see it earlier but now that I opened Files it is showing the status Column that is in Windows Explorer. Though it doesn't come up on the list if you right click on the columns. Also when trying to take this screenshot I noticed if you have the preview pane open it doesn't resize things internally properly. I will include another screenshot of that. So maybe this will be more of a bug issue now.

Is this still an issue in <IP_ADDRESS>?

Yes. First image is maximized view, the second one is if I drag the window to the left side of the screen and view it in split screen. Also included in the first image is the right-click on the attribute bar that shows the status tab as not being an option.

Asking @yaichenbaum for approval.

@foxhoundv It looks like the status column is visible in the screenshot you shared, can you clarify what the issue is?

@yaira2 So in the first image I shared, the "status" option wasn't available to turn off or on, not that the column didn't show up. In the second image, the preview pane collapsed the menu so you couldn't turn off the preview pane.
However, that being said, I am running version <IP_ADDRESS> now and both issues are resolved. Though with one change I would like to request. In Windows Explorer, the columns are moveable to show what is most important where ever the user wants the columns. It would be nice to be able to change the order of the columns around.


[ru] Localize bare-metal-machine.md

Description
This PR adds RU localization of Bare Metal Machine
Checklist before opening this PR (put x in the checkboxes)

[x] This PR does not contain plagiarism

don’t copy other people’s work unless you are quoting and contributing it to them.

[x] I have signed off on all commits

signing off (ex: git commit -s) is to affirm that commits comply DCO. If you are working locally, you could add an alias to your gitconfig by running git config --global alias.ci "commit -s".

@tym83 please approve 🥺


Missing $TEMPLATE_OUTPUT_BUCKET in build command

Issue #, if available:
Description of changes:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Hi there,
Thanks for the contribution. We are going to evaluate this for a future release.

Hi @jeroenkroese - This should now be resolved.


Fleet Adapter throws exception sometimes after office_loop.launch.xml

Bug report
Required information:

Operating system and version:

Ubuntu 20.04

OpenRMF installation type:

Source

OpenRMF version or commit hash:

main

ROS distribution and version:

galactic

ROS installation type:

binaries

Package or library, if applicable:

rmf_fleet_adapter

Description of the bug

Full control fleet adapter throws an exception sometimes in office.launch.xml after office_loop.launch.xml is called. Exception is
[full_control-13] terminate called after throwing an instance of 'std::invalid_argument'
[full_control-13]   what():  Battery State of Charge needs to be between 0.0 and 1.0.

Gist: here
Steps to reproduce the bug

ros2 launch rmf_demos_gz office.launch.xml

# in another terminal
ros2 launch rmf_demos office_loop.launch.xml

Screenshots

Additional information

this does not happen all the time, probably some race conditions happening somewhere?
I am also using an underpowered laptop, this might not occur on beefier machines

I believe this issue has been resolved by an earlier PR.


Fix the warning

We are getting a warning
missing initializer for member '_GLOBAL__N__ef091c38_16_print_timers_cpp_374ae08b::Timer::duration'

at print_timers.cpp:41. But I'm don't understand what it's complaining about. The initializer for the duration is there.

Where do you see this warning? Is it shown in our CI?

It was part of the #742 (log), but was introduced in #545. However, as we don't always have all the builds (like HIP), we didn't catch it there.

Would using
arborx_dbscan_example_timers.emplace_back(label, {}, {});

help?

Could try. I can't reproduce the warning, so it will have to be through CI.


Simplify MessageFlags slightly.

Use actual bit values for MessageType constants.
New Flag function for building Message Flags from component parts.  (Useful to raise MaxHops)
Tests to make sure common constants are correct.
Slightly more verbosity in test failures.

Coverage increased (+0.07%) to 59.187% when pulling e03d522f904ba84669096a88e3ad056aaf65105e on rspier:flags into aac2db96c8472fb6281fcef1f537b2ee22be4b29 on abates:master.

I renamed the arguments to be longer and more obvious (a.k.a self documenting) and did a few other cleanups.  I'd expect anyone using this Function to likely also be looking at the Insteon docs.  Please look again.
You're welcome, btw. This has been a fun project to hack on.


[+Region/Zone] NCP-VPC Cloud Driver Implementation

Completed : https://github.com/cloud-barista/ncpvpc/pull/100 (Private repo.)


feat(Order/Bounds/Basic): Add basic order lemmas

This PR adds some simple lemmas about IsLeast/IsGreatest for images of sets along StrictMono/StrictAnti maps.

[x] depends on: #16539

I've merged master to get rid of the weird CI error and golfed your proofs slightly. LGTM!
maintainer merge

Nice, thanks!

Looks like this fell off the queue after a crash.
bors r+


[ci skip] Remove ajax filter reference from docs. Fixes #2314

Removes the reference to ajax filters as an available method since it is not implemented.
Long time coming :)

Bravo! That was a long time 😂 I would still like to see something like this down the road but it clearly has not been a priority.

Agreed. Trying to go through the back log and start pruning all of these issues. Some have been around way too long :)

I know, it's a disgrace how long our lists have gotten. I've been trying to pack in the last few things for a release and then join you on the "pruning".


number-tests.eo:317-320: We need to remove this nop...

The puzzle 42-658d578c from #42 has to be resolved:
https://github.com/objectionary/eo-math/blob/74d91636c5fd5b72c970f5728844c92537cae7c0/src/test/eo/org/eolang/math/number-tests.eo#L317-L320
The puzzle was created by @Graur on 01-Sep-22.
Estimate: 30 minutes,  role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

@maxonfjvipon please pay attention to this new issue.

@Graur I think it can be closed

@maxonfjvipon 0pdd bot close this issue automatically, after current @todo will be removed

The puzzle 42-658d578c has disappeared from the source code, that's why I closed this issue. //cc @maxonfjvipon


Cannot start local supabase postgres instance with 15.1 (no permission to create extension)

Describe the bug
Have an existing repo from 15.0 postgres. Have existing migrations, some with lines like:
create extension if not exists "http" with schema "extensions";

Upon supabase start, migrations fail with:
git:(develop) supabase start
Applying migration<PHONE_NUMBER>3102_initial_migration_user_org.sql...
Applying migration<PHONE_NUMBER>2512_org-policies.sql...
Applying migration<PHONE_NUMBER>3030_add_project.sql...
Applying migration<PHONE_NUMBER>0208_working_rls_for_creating_org.sql...
Applying migration<PHONE_NUMBER>0023_project_changes.sql...
Applying migration<PHONE_NUMBER>5700_files_qaps_and_more.sql...
ERROR: permission denied to create extension "http" (SQLSTATE 42501)
At statement 0: create extension if not exists "http" with schema "extensions"

Expected behavior
Supabase local instance to spin up
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
supabase services
    SERVICE IMAGE      │        LOCAL         │   LINKED
supabase/postgres      │ <IP_ADDRESS>            │ <IP_ADDRESS>
supabase/gotrue        │ v2.126.1             │ v2.125.1
postgrest/postgrest    │ v10.2.0              │ v11.2.2
supabase/realtime      │ v2.25.35             │ -
supabase/storage-api   │ v0.43.11             │ v0.43.11
supabase/edge-runtime  │ v1.29.1              │ -
supabase/studio        │ 20231123-64a766a     │ -
supabase/postgres-meta │ v0.75.0              │ -
supabase/logflare      │ 1.4.0                │ -
bitnami/pgbouncer      │ 1.20.1-debian-11-r39 │ -
darthsim/imgproxy      │ v3.8.0               │ -

Additional context
Add any other context about the problem here.

Hello @leerobert, it appears that your local postgres version (<IP_ADDRESS>) is out of date. Could you try updating it by running supabase link?
Alternatively you can reset your local versions to the default by removing rm -rf supabase/.temp directory.

Thanks @sweatybridge this was the issue. Once I removed my supabase/.temp files and re-ran supabase start, I was able to run my migrations without issues locally.


remove early dask unpack

It's to test/address one of my theories on issue #100:  the early unpack triggered something unexpected in dask graph.
My second theory is that the node id in dask graph is not unique when there are many chunks.

I’ve tested but I’m not sure if it solved the issue or it didn’t hit the
odd. So I wanna test it in a significant large scale in the coming summary
products 2015 reprocessing test.
On Thu, 26 Oct 2023 at 11:11 am, Damien Ayers @.***>
wrote:

@.**** approved this pull request.
Sure, give it a go.
Why do you need to commit the change to test it out though?
—
Reply to this email directly, view it on GitHub
https://github.com/opendatacube/odc-stats/pull/101#pullrequestreview-1698539627,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABLBWNTRZIVJVUWF52CQXETYBGWUBAVCNFSM6AAAAAA6OYNKL6VHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMYTMOJYGUZTSNRSG4
.
You are receiving this because you authored the thread.Message ID:
@.***>


PT-152482389 Push created spend_tx into the mempool

[Finishes #152482389]

@lucafavatella I believe this should be covered in PT-152481063 Build block proposal, which is in works right now.

@lucafavatella I believe this should be covered in PT-152481063 Build block proposal, which is in works right now.

Ok. From the code I see txs picked from mempool and then checked and processed - by calling the aec_spend_tx module.
The only thing I am not sure about is height field of account.

@lucafavatella Ticket filed PT-152678722 Investigate whether storing block height is needed in state strees.

Ticket filed PT-152678722 Investigate whether storing block height is needed in state strees.

Thanks.


packbuffer and databuffer

use databuffer support autoptr share data
use databuffer support fix length data

i have change it and delete PackFixBuffer, add DataFixBuffer!
if i want to add other packbuffer, just add databuffer!


make the language is more Comfortable in Chinese

[x] Have you followed the contributing guidelines?
[x] Have you explained what your changes do, and why they add value to the Guides?

make the language is more Comfortable in Chinese
delete some redundant words

Thanks! @lc-soft would you be interested in reviewing this new set of edits?


Can't use my real ip

So I already made a issue about this(https://github.com/WeebDev/lolisafe/issues/120) , and tried what RyoshiKayo suggested for me.But after 2 hours of trying I couldn't make it.So let me explain again.
I have a Windows VPS With some storage and would like to make my own image hosting.But I can manage only to go for <IP_ADDRESS>:(The port I enter[The one I use is 9999]), I tried nginx , but I couldn't make it :(.
I hope y'all can help me and thanks for reading again!
config.js
`module.exports = {
/*
	If set to true the user will need to specify the auto-generated token
	on each API call, meaning random strangers wont be able to use the service
	unless they have the token lolisafe provides you with.
	If it's set to false, then upload will be public for anyone to use.
*/
private: false,

// If true, users will be able to create accounts and access their uploaded files
enableUserAccounts: true,

/*
	Here you can decide if you want lolisafe to serve the files or if you prefer doing so via nginx.
	The main difference between the two is the ease of use and the chance of analytics in the future.
	If you set it to `true`, the uploaded files will be located after the host like:
		https://lolisafe.moe/yourFile.jpg

	If you set it to `false`, you need to set nginx to directly serve whatever folder it is you are serving your
	downloads in. This also gives you the ability to serve them, for example, like this:
		https://files.lolisafe.moe/yourFile.jpg

	Both cases require you to type the domain where the files will be served on the `domain` key below.
	Which one you use is ultimately up to you.
*/
serveFilesWithNode: false,
domain: '',

// Port on which to run the server
port: 9999,

// Pages to process for the frontend
pages: ['home', 'auth', 'dashboard', 'faq'],

// Add file extensions here which should be blocked
blockedExtensions: [
	'.jar',
	'.exe',
	'.msi',
	'.com',
	'.bat',
	'.cmd',
	'.scr',
	'.ps1',
	'.sh'
],

// Uploads config
uploads: {

	// Folder where images should be stored
	folder: 'uploads',

	/*
		Max file size allowed. Needs to be in MB
		Note: When maxSize is greater than 1 MiB, you must set the client_max_body_size to the same as maxSize.
	*/
	maxSize: '512MB',

	// The length of the random generated name for the uploaded files
	fileLength: 32,

	/*
		This option will limit how many times it will try to generate random names
		for uploaded files. If this value is higher than 1, it will help in cases
		where files with the same name already exists (higher chance with shorter file name length).
	*/
	maxTries: 1,

	/*
		NOTE: Thumbnails are only for the admin panel and they require you
		to install a separate binary called graphicsmagick (http://www.graphicsmagick.org)
		for images and ffmpeg (https://ffmpeg.org/) for video files
	*/
	generateThumbnails: false,

	/*
		Allows users to download a .zip file of all files in an album.
		The file is generated when the user clicks the download button in the view
		and is re-used if the album has not changed between download requests
	*/
	generateZips: true
},

// Folder where to store logs
logsFolder: 'logs',

// The following values shouldn't be touched
database: {
	client: 'sqlite3',
	connection: { filename: './database/db' },
	useNullAsDefault: true
}

}
nginx.sample.confupstream backend {
server <IP_ADDRESS>:9999; # Change to the port you specified on lolisafe
}
map $sent_http_content_type $charset {
~^text/ utf-8;
}
server {
listen 80;
listen [::]:80;
server_name My IP Addres;
server_tokens off;

client_max_body_size 100M; # Change this to the max file size you want to allow

charset $charset;
charset_types *;

# Uncomment if you are running lolisafe behind CloudFlare.
# This requires NGINX compiled from source with:
#	--with-http_realip_module
#include /path/to/lolisafe/real-ip-from-cf;

location / {
	add_header Access-Control-Allow-Origin *;
	root /path/to/your/uploads/folder;
	try_files $uri @proxy;
}

location @proxy {
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header Host $http_host;
	proxy_set_header X-NginX-Proxy true;
	proxy_pass http://backend;
	proxy_redirect off;
	proxy_http_version 1.1;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection "upgrade";
	proxy_redirect off;
	proxy_set_header X-Forwarded-Proto $scheme;
}

}`

You're on your own for Windows :grimacing: We only natively support Linux distributions

So if I buy a linux VPS , can you help me ?:), or can I contact you at discord?

Of course, our discord link is on the read me


Laravel 9 and Flysystem 2/3 support

In the composer.json Laravel 9 was marked for installable dependencies by @riasvdv but unfortunatly this is not possible because the used libraries spatie/flysystem-google-cloud-storage and league/flysystem-cached-adapter only support flysystem version 1.
The optimal way to solve this issue would be to remove the dependencies  spatie/flysystem-google-cloud-storage and league/flysystem-cached-adapter and implement the GCS flysystem driver directly in this package the same way Laravel extended the AwsS3V3Adapter.
I already did some work on this but I'm not sure if this is of interest for you. PR#1

In the composer.json Laravel 9 was marked for installable dependencies by @riasvdv but unfortunatly this is not possible because the used libraries spatie/flysystem-google-cloud-storage and league/flysystem-cached-adapter only support flysystem version 1.

Yes, that's why we haven't tagged a release yet as we noticed it would require a bit more work

I already did some work on this but I'm not sure if this is of interest for you. PR #1

Thanks a lot for this!  We'll look into it soon and certainly discuss it further there


Separator between reviews and timetable unexpectedly turning vertical in mobile

The line separator separating Reviews & Resources section and the timetable section turns vertical unexpectedly.
To Reproduce
In developers tool in chrome switch between any two mobile devices while searching "678" in courses.

This is a very annoying bug, but it'll only appear when device width is changed. Which I don't think happens in real life.
Are you able to reproduce on an actual device? Like when going from portrait to landscape?


[0.9.5-nightly] Query performance

Hi!
I've installed the nightly (now running at version 0.9.5-nightly-6682752) and I'm having huge performance issues which ultimately leads to a crash. I've tried to upgrade the nightly three times (the latest being version 0.9.5-nightly-6682752), just to see if there was a known bug which has been fixed.
I have the following schema
sales:

Tags
t1 (20-30 different strings), t2 (values from 0000 to 9999), t3 (values 0-160), t4 (10 different strings)
Values
v1, v2, v3, v4

We're using the 2.0 of java-influxdb to report to the server, with maybe 1-2 inserts every 4 s and using Grafana to visualize by asking for data within the current day every 10s.
At first everything went fine, but after a while (24h) I found that the queries who took 18ms now took 200ms. Even later (next day) the queries took 5s(!). All of our data is approx 300MB in size. The server which is a local blade which has 64GB ram with 48c were running at ~100% on every core. Storage consist of 6 SSDs in RAID.
Is it something obvious I'm doing wrong? Is the schemas wrong? Is there a configuration which I've totally missed?
PKK
Configuration file:
### Welcome to the InfluxDB configuration file.

# Once every 24 hours InfluxDB will report anonymous data to m.influxdb.com
# The data includes raft id (random 8 bytes), os, arch, version, and metadata.
# We don't track ip addresses of servers reporting. This is only used
# to track the number of instances running and the versions, which
# is very helpful for us.
# Change this option to true to disable reporting.
reporting-disabled = false

###
### Enterprise registration control
###

[registration]
enabled = false
# url = "https://enterprise.influxdata.com" # The Enterprise server URL
# token = "" # Registration token for Enterprise server

###
### [meta]
###
### Controls the parameters for the Raft consensus group that stores metadata
### about the InfluxDB cluster.
###

[meta]
  dir = "/var/opt/influxdb/meta"
  hostname = "localhost"
  bind-address = ":8088"
  retention-autocreate = true
  election-timeout = "1s"
  heartbeat-timeout = "1s"
  leader-lease-timeout = "500ms"
  commit-timeout = "50ms"

###
### [data]
###
### Controls where the actual shard data for InfluxDB lives and how it is
### flushed from the WAL. "dir" may need to be changed to a suitable place
### for your system, but the WAL settings are an advanced configuration. The
### defaults should work for most systems.
###

[data]
  dir = "/opt/influxdb_data"

  # Controls the engine type for new shards. Options are b1, bz1, or tsm1.
  # b1 is the 0.9.2 storage engine, bz1 is the 0.9.3 and 0.9.4 engine.
  # tsm1 is the 0.9.5 engine
  engine ="tsm1"

  # The following WAL settings are for the b1 storage engine used in 0.9.2. They won't
  # apply to any new shards created after upgrading to a version > 0.9.3.
  max-wal-size = 104857600 # Maximum size the WAL can reach before a flush. Defaults to 100MB.
  wal-flush-interval = "10m" # Maximum time data can sit in WAL before a flush.
  wal-partition-flush-delay = "2s" # The delay time between each WAL partition being flushed.

  # These are the WAL settings for the storage engine >= 0.9.3
  wal-dir = "/var/opt/influxdb/wal"
  wal-enable-logging = true

  # When a series in the WAL in-memory cache reaches this size in bytes it is marked as ready to
  # flush to the index
  # wal-ready-series-size = 25600

  # Flush and compact a partition once this ratio of series are over the ready size
  # wal-compaction-threshold = 0.6

  # Force a flush and compaction if any series in a partition gets above this size in bytes
  # wal-max-series-size = 2097152

  # Force a flush of all series and full compaction if there have been no writes in this
  # amount of time. This is useful for ensuring that shards that are cold for writes don't
  # keep a bunch of data cached in memory and in the WAL.
  # wal-flush-cold-interval = "10m"

  # Force a partition to flush its largest series if it reaches this approximate size in
  # bytes. Remember there are 5 partitions so you'll need at least 5x this amount of memory.
  # The more memory you have, the bigger this can be.
  # wal-partition-size-threshold = 20971520

  # Whether queries should be logged before execution. Very useful for troubleshooting, but will
  # log any sensitive data contained within a query.
  # query-log-enabled = true

###
### [hinted-handoff]
###
### Controls the hinted handoff feature, which allows nodes to temporarily
### store queued data when one node of a cluster is down for a short period
### of time.
###

[hinted-handoff]
  enabled = true
  dir = "/var/opt/influxdb/hh"
  max-size =<PHONE_NUMBER>
  max-age = "168h"
  retry-rate-limit = 0

  # Hinted handoff will start retrying writes to down nodes at a rate of once per second.
  # If any error occurs, it will backoff in an exponential manner, until the interval
  # reaches retry-max-interval. Once writes to all nodes are successfully completed the
  # interval will reset to retry-interval.
  retry-interval = "1s"
  retry-max-interval = "1m"

  # Interval between running checks for data that should be purged. Data is purged from
  # hinted-handoff queues for two reasons. 1) The data is older than the max age, or
  # 2) the target node has been dropped from the cluster. Data is never dropped until
  # it has reached max-age however, for a dropped node or not.
  purge-interval = "1h"

###
### [cluster]
###
### Controls non-Raft cluster behavior, which generally includes how data is
### shared across shards.
###

[cluster]
  shard-writer-timeout = "10s" # The time within which a shard must respond to write.
  write-timeout = "5s" # The time within which a write operation must complete on the cluster.

###
### [retention]
###
### Controls the enforcement of retention policies for evicting old data.
###

[retention]
  enabled = true
  check-interval = "30m"

###
### Controls the system self-monitoring, statistics and diagnostics.
###
### The internal database for monitoring data is created automatically if
### if it does not already exist. The target retention within this database
### is called 'monitor' and is also created with a retention period of 7 days
### and a replication factor of 1, if it does not exist. In all cases the
### this retention policy is configured as the default for the database.

[monitor]
  store-enabled = true # Whether to record statistics internally.
  store-database = "_internal" # The destination database for recorded statistics
  store-interval = "10s" # The interval at which to record statistics

###
### [admin]
###
### Controls the availability of the built-in, web-based admin interface. If HTTPS is
### enabled for the admin interface, HTTPS must also be enabled on the [http] service.
###

[admin]
  enabled = true
  bind-address = ":8083"
  https-enabled = false
  https-certificate = "/etc/ssl/influxdb.pem"

###
### [http]
###
### Controls how the HTTP endpoints are configured. These are the primary
### mechanism for getting data into and out of InfluxDB.
###

[http]
  enabled = true
  bind-address = ":8086"
  auth-enabled = false
  log-enabled = true
  write-tracing = false
  pprof-enabled = false
  https-enabled = false
  https-certificate = "/etc/ssl/influxdb.pem"

###
### [[graphite]]
###
### Controls one or many listeners for Graphite data.
###

[[graphite]]
  enabled = false
  # database = "graphite"
  # bind-address = ":2003"
  # protocol = "tcp"
  # consistency-level = "one"
  # name-separator = "."

  # These next lines control how batching works. You should have this enabled
  # otherwise you could get dropped metrics or poor performance. Batching
  # will buffer points in memory if you have many coming in.

  # batch-size = 1000 # will flush if this many points get buffered
  # batch-pending = 5 # number of batches that may be pending in memory
  # batch-timeout = "1s" # will flush at least this often even if we haven't hit buffer limit

  ## "name-schema" configures tag names for parsing the metric name from graphite protocol;
  ## separated by `name-separator`.
  ## The "measurement" tag is special and the corresponding field will become
  ## the name of the metric.
  ## e.g. "type.host.measurement.device" will parse "server.localhost.cpu.cpu0" as
  ## {
  ##     measurement: "cpu",
  ##     tags: {
  ##         "type": "server",
  ##         "host": "localhost,
  ##         "device": "cpu0"
  ##     }
  ## }
  # name-schema = "type.host.measurement.device"

  ## If set to true, when the input metric name has more fields than `name-schema` specified,
  ## the extra fields will be ignored.
  ## Otherwise an error will be logged and the metric rejected.
  # ignore-unnamed = true

###
### [collectd]
###
### Controls the listener for collectd data.
###

[collectd]
  enabled = false
  # bind-address = ""
  # database = ""
  # typesdb = ""

  # These next lines control how batching works. You should have this enabled
  # otherwise you could get dropped metrics or poor performance. Batching
  # will buffer points in memory if you have many coming in.

  # batch-size = 1000 # will flush if this many points get buffered
  # batch-pending = 5 # number of batches that may be pending in memory
  # batch-timeout = "1s" # will flush at least this often even if we haven't hit buffer limit

###
### [opentsdb]
###
### Controls the listener for OpenTSDB data.
###

[opentsdb]
  enabled = false
  # bind-address = ":4242"
  # database = "opentsdb"
  # retention-policy = ""
  # consistency-level = "one"
  # tls-enabled = false
  # certificate= ""

  # These next lines control how batching works. You should have this enabled
  # otherwise you could get dropped metrics or poor performance. Only points
  # metrics received over the telnet protocol undergo batching.

  # batch-size = 1000 # will flush if this many points get buffered
  # batch-pending = 5 # number of batches that may be pending in memory
  # batch-timeout = "1s" # will flush at least this often even if we haven't hit buffer limit

###
### [[udp]]
###
### Controls the listeners for InfluxDB line protocol data via UDP.
###

[[udp]]
  enabled = false
  # bind-address = ""
  # database = "udp"
  # retention-policy = ""

  # These next lines control how batching works. You should have this enabled
  # otherwise you could get dropped metrics or poor performance. Batching
  # will buffer points in memory if you have many coming in.

  # batch-size = 1000 # will flush if this many points get buffered
  # batch-pending = 5 # number of batches that may be pending in memory
  # batch-timeout = "1s" # will flush at least this often even if we haven't hit buffer limit

###
### [continuous_queries]
###
### Controls how continuous queries are run within InfluxDB.
###

### [shard-precreation]
###
### Controls the precreation of shards, so they are created before data arrives.
### Only shards that will exist in the future, at time of creation, are precreated.

[shard-precreation]
  enabled = true
  check-interval = "10m"
  advance-period = "30m"

[continuous_queries]
  log-enabled = true
  enabled = true
  recompute-previous-n = 2
  recompute-no-older-than = "10m"
  compute-runs-per-interval = 10
  compute-no-more-than = "2m"

You have neglected to tell us the actual queries you are running. Please include details of those.

You should also be aware that we are actively working on the query-engine performance and improvements can be expected over the next few weeks.

@pkkummermo If sales is a measurement then thats very high series cardinality. Especially the tag t2 which has 10k different possible values.  I would suggest lowering the number of possible tags or separating the data over two or more measurements if possible.

Hi! The queries are simple sum(v1) where time {{today}} group by time(1h). I suspected the tags being a the problem, but shouldn't 10k in terms of indexing be a piece of cake?

Can you show us the exact queries?

@pkkummermo The problem isn't the one tag with 10k possible values.  In combination with the other tags it creates a very large tag set and as a result a large number of series.  So instead of indexing 10k values, InfluxDB is indexing 480 million values.

Ah, so it's permutations. That would explain the behaviour. Thanks for the tip. I can provide exact queries tomorrow if they are of interest.

@pkkummermo please do share the queries, and if you can, the log statements showing the execution time.  A SELECT COUNT() over 100 million points is going to take a while.
That said, it seems odd that the CPUs would be pegged as a COUNT is almost exclusively I/O bound. You mentioned "using Grafana to visualize by asking for data within the current day every 10s." I strongly recommend setting up Continuous Queries to downsample the data into a new measurement and then graph that in Grafana. That way you are pulling 100-1000 points from disk for each dashboard query, instead of 100k points.

That sounds abit extreme, as we have v1,v2,v3,v4 per database entry with perhaps 120k entries total. The select count(*) is also limited by time, which would mean it didn't query all the data. I tried creating both a 10m continuous query as well as a 1h, but the performance improvement was miniscule.
My best guess is that the indexing of the tag set is my problem, especially if it's reindexing per insert and tag indexes are permutations between the available tags. The InfluxDB docs should have a section describing "best practices" for database design so other people doesn't run into the same problem as me :)

@pkkummermo totally agreed on the better docs for schema and performance. I did miss the time restrictions in your queries (I'm having a hard time reading queries today for some reason).


"IndexError: list index out of range" in get_album_cover_url

Environment

System OS: Windows

Python Version: 3.8.1

Install Source: pip install spotdl

Version OR Commit hash: 3.4.2

Expected Behaviour
Download all the songs of a playlist
Actual Behaviour
After downloading some songs Spotdl crashes throwing the error:
get_album_cover_url
    return self.__rawTrackMeta['album']['images'][0]['url']
IndexError: list index out of range

Steps to Reproduce

Use a playlist URL as the input argument

Traceback

  Traceback (most recent call last):
  File "c:\users\user\appdata\local\programs\python\python38\lib\runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\users\user\appdata\local\programs\python\python38\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\Scripts\spotdl.exe\__main__.py", line 7, in <module>
  File "c:\users\user\appdata\local\programs\python\python38\lib\site-packages\spotdl\__main__.py", line 128, in console_entry_point
    downloader.download_multiple_songs(songObjList)
  File "c:\users\user\appdata\local\programs\python\python38\lib\site-packages\spotdl\download\downloader.py", line 86, in download_multiple_songs
    self._download_asynchronously(songObjList)
  File "c:\users\user\appdata\local\programs\python\python38\lib\site-packages\spotdl\download\downloader.py", line 364, in _download_asynchronously
    self.loop.run_until_complete(asyncio.gather(*tasks))
  File "c:\users\user\appdata\local\programs\python\python38\lib\asyncio\base_events.py", line 612, in run_until_complete
    return future.result()
  File "c:\users\user\appdata\local\programs\python\python38\lib\site-packages\spotdl\download\downloader.py", line 359, in _pool_download
    return await self.download_song(song_obj)
  File "c:\users\user\appdata\local\programs\python\python38\lib\site-packages\spotdl\download\downloader.py", line 248, in download_song
    self.set_id3_data(convertedFilePath, songObj)
  File "c:\users\user\appdata\local\programs\python\python38\lib\site-packages\spotdl\download\downloader.py", line 295, in set_id3_data
    rawAlbumArt = urlopen(songObj.get_album_cover_url()).read()
  File "c:\users\user\appdata\local\programs\python\python38\lib\site-packages\spotdl\search\songObj.py", line 215, in get_album_cover_url
    return self.__rawTrackMeta['album']['images'][0]['url']
IndexError: list index out of range

Any other information:

Playlist link please

https://open.spotify.com/playlist/1ZEKBfAjNoYa6trH1IDreT?si=517822ffa00a4aee
It's a pretty big playlist.
I temporarily solved the issue by adding a check for the url before the return inside the get_album_cover_url() function and not inserting the rawAlbumArt in set_id3_data() if no url is returned

Reproducible via
spotdl https://open.spotify.com/track/02ZfVcdowfzkbSD5dKf2jA?si=iy0VtROpTbOd4ty4Lc4lEA

It appears the original song is gone from spotify, leaving only a live version

@AZMCode is correct original song is no longer available. Other songs download fine for me. If you are still having issues feel free to reopen this issue


Setup hydra

review this for finetunning sam. Let me know what you think.

I see two folders with same scripts:

AgIR-FinetuneSAM/segment_anything_training/modeling
AgIR-FinetuneSAM/modeling

Same name for two different scripts:

segment_anything_training/utils/transforms.py
modeling/transformer.py
segment_anything_training/modeling/transformer.py


google spreadsheet dates inconsistent cell format

Some cells are date objects; some are plain text strings. This affects the rows sort by date. e.g.:

lines 1416-1419 are plain text; all others are date formatted.
I'm using multiple sources (bank hapoalim + isracard)

Suggestion: normalizing all dates values in this cell using plain text format and format of YYYY-MM-DD, which is sortable by design even for plain text

Update: Google Sheets try to heuristically parse dates and confuses with Israel's date format.
proof: Google Sheets uses MM/DD/YYYY while the format used by Caspion is DD/MM/YYYY
example: when google tries to parse the following date 09/04/2023 the month is September and not April as expected.

This causes invalid dates for records with values like 13/04/2023 as 13 is an invalid month (for formats like MM/DD/YYYY)
again, IMHO YYYY-MM-DD would make it dummy-proof even for the heuristic date parse of Google Sheets


.fit attribute

'function' object has no attribute 'fit' . Please resolve this issue.

Hi sethubhargavmeruga,
Many thanks for raising this issue! Can you please tell me which code you're running? That would help me identify what the problem might be. Thanks again :-) -Adele

I'm running the recurrent neural network file , there is an issue with fit attribute. the following is the compiler result. I have installed numpy yet this is the error.
[Running] python -u "d:\Btech Project\Machine-Learning-for-Solar-Energy-Prediction-master\Recurrent Neural Network\rnn.py"
Traceback (most recent call last):
File "d:\Btech Project\Machine-Learning-for-Solar-Energy-Prediction-master\Recurrent Neural Network\rnn.py", line 1, in
import numpy as np
ModuleNotFoundError: No module named 'numpy'
[Done] exited with code=1 in 0.396 seconds

There is also a problem with the weighted linear regression file. the following is the error :
Error using datetime (line 556)
Numeric input data must be a matrix with three or six columns, or else three or six separate numeric
arrays. You can also create datetimes from a single numeric array using the 'ConvertFrom' parameter.
Error in weighted_linear_regression (line 18)
timeline = datetime(timeline,'Format','dd-MM-yyyy'); % the dates of every example of the test set

Please help me and kindly guide me through the project as this is really important for my credits. thanks in advance.
If willing to email<EMAIL_ADDRESS>

Cool - what python version are you running? Thanks :)

I'm using the 3.8 version .

For the weighted linear regression:
It doesn't really matter: this parsing is only use for plotting.
You can create your own parsing or your own plots, no need to use ours.
You can remove the following lines and the computations should still as a charm.
https://github.com/ColasGael/Machine-Learning-for-Solar-Energy-Prediction/blob/master/Weighted Linear Regression/weighted_linear_regression.m#L16-L18
https://github.com/ColasGael/Machine-Learning-for-Solar-Energy-Prediction/blob/master/Weighted Linear Regression/weighted_linear_regression.m#L96-L128
https://github.com/ColasGael/Machine-Learning-for-Solar-Energy-Prediction/blob/master/Weighted Linear Regression/weighted_linear_regression.m#L135-L163


update \s+tag: (.*) to 0.0.6

UpdateBot pushed regex: \s+tag: (.*) to: 0.0.6

UpdateBot commands:
updatebot push-version --regex \s+tag: (.*) --value 0.0.6 --exclude --previous-line \s+ repository: activiti/activiti-modeling-app charts/activiti-cloud-modeling/values.yaml

/test this
/approve

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.jenkins-x-bot seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


[BotService] add "bot directline site" command group

Description
Add az bot directline site command group to manage sub resources
Indirectly
Testing Guide
az bot directline site create takes an existing Bot with a Direct Line Channel Registration and adds a DirectLineSite. The required parameters are:

resource_group_name
resource_name (name of the existing Bot)
site_name (name of the DirectLineSite)

az bot directline site list takes an existing Bot with a Direct Line Channel Registration lists all registered sites. The required parameters are:

resource_group_name
resource_name (name of the existing Bot)

az bot directline site update updates an existing Direct Line Channel site. The required parameters are:

resource_group_name
resource_name (name of the existing Bot)
site_name (name of the DirectLineSite)

az bot directline site delete deletes an existing Direct Line Channel site. If the site does not exist, no error is thrown. The required parameters are:

resource_group_name
resource_name (name of the existing Bot)
site_name (name of the DirectLineSite)

History Notes

[BotService] az bot directline site: Add new command group for Direct Line site management. The supported commands are create, delete, list and update.

This checklist is used to make sure that common guidelines for a pull request are followed.

[X] The PR title and description has followed the guideline in Submitting Pull Requests.

[X] I adhere to the Command Guidelines.

BotService

CI Style check blocked on: https://github.com/Azure/azure-cli/pull/13493

@qwordy, @Juliehzl, @haroldrandom sorry for the delay in addressing feedback! My team is currently planning our next milestones, so I will push to have this PR done ASAP this week.

hi @stevengum any update on this PR?

hi @stevengum, do you still plan to resume this PR? Is it abandoned?

@qwordy sorry for the delay, this PR will be reimplemented by another BF team member. Closing PR.


feat: cookies- if no args, returns all browser cookies for the current URL

As described in:
https://chromedevtools.github.io/devtools-protocol/tot/Network#method-getCookies
Network.getCookies, returns all browser cookies for the current page.
Cookies method return just current URL cookies if no args set.  It's better that cookies method behave like getCookies, so if no args passed to it, it returns all browser cookies related to the current page.

I signed it!

This has been discussed a while ago; we're waiting on #645.
Once upstream work is done, we'll provide all the methods necessary to fetching cookies per browser context.


update version for 0.3.2 release

I'll take a look at this a bit later; I hadn't seen the previous diff yet and have some safety questions at first glance.


Problem.

https://github.com/poojashresthacode/23-Homework4G4/blob/main/.github/workflows/Unittesting.yml
@WildJimmy Can you please check where I go wrong here?

https://github.com/poojashresthacode/23-Homework4G4/actions/runs/6526918891/job/17721164247#step:5:9
this is what the error says.

@poojashresthacode  Is your issue resolved now?

yeah it is.


initial version with newsletters #4 to #8

Hey @petele ,
This is the first (small :) step of adding our Newsletter content to updates. I will add all the other 7 after we will talk how/when to do it.
/cc @PaulKinlan

Looks good apart from the empty links that seem to occur in several places throughout the docs.

Just catching up on this, the plan is to post these posts on medium instead to route traffic to the site.

So can this PR be closed?
On Fri, 27 Nov 2015 at 14:22, Paul Kinlan<EMAIL_ADDRESS>wrote:

Just catching up on this, the plan is to post these posts on medium
instead to route traffic to the site.
—
Reply to this email directly or view it on GitHub
https://github.com/google/WebFundamentals/pull/2264#issuecomment-160149564
.

I think I did.
On Fri, 27 Nov 2015 at 14:27 Matthew Gaunt<EMAIL_ADDRESS>wrote:

So can this PR be closed?
On Fri, 27 Nov 2015 at 14:22, Paul Kinlan<EMAIL_ADDRESS>wrote:

Just catching up on this, the plan is to post these posts on medium
instead to route traffic to the site.
—
Reply to this email directly or view it on GitHub
<
https://github.com/google/WebFundamentals/pull/2264#issuecomment-160149564
.

—
Reply to this email directly or view it on GitHub
https://github.com/google/WebFundamentals/pull/2264#issuecomment-160150235
.


[BUG] - When submitting app to app store connect, I must include ALL Privacy description strings. Even for permissions I am not using

Describe the bug
I only use Location, notification permissions from this swift package. Yet I am asked to include all of these different type of usage description strings. I believe this is because this swift package uses all of the permission types in PermissionsManager. Is there a way for me to not include all usage descriptions?
ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSContactsUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more

@smaldd14 Well that's bad. I think one potential solution is to break PermissionsSwiftUI into 13 different sub-packages that you add separately for each type of permission. I will try to come up with a fix.

The sub-package idea is probably just as bad. What do you think if I provide a copypasta boilerplate that includes every single permission's info.plist in the README.md? I will also look into ways to automatically generate info.plist string perhaps?

@jevonmao that would be great! Thanks for being so helpful.

@smaldd14 PermissionsSwiftUI v1.5.0 is available now! Remove PermissionsSwiftUI in SPM and reinstall and only add permissions needed in the checkboxes. Let me know if it works.

Implemented in v1.5.0.


remove submenu item

Issue Summary
Didn't find a way to remove a submenu item. Not sure this is a bug and maybe I missed something. In this case please let me know how I can do that.
Steps to Reproduce
set this code in wagtail_hooks.py:
@hooks.register('construct_main_menu')
def hide_sub_menu(request, menu_items):
  menu_items[:] = [item for item in menu_items if item.name != 'groups']

The submenu item is not removed. If you change for a main menu item (ex snippets) this is ok.
Typical use case: you define some snippet but you want this snippet to appear only in your own menu and not in the snippet menu.

I have confirmed that this issue can be reproduced as described on a fresh Wagtail project: (yes / no)
yes

Technical details

Python version: 3.8.1.
Django version: 2.2.
Wagtail version: 2.8.

Hi @pimarc,
You need to use construct_settings_menu instead of construct_main_menu (or whatever has been passed as construct_hook_name when setting up the menu):
https://github.com/wagtail/wagtail/blob/122575d2ee5a3f4bc3cf7c689b3972a666f0a8b9/wagtail/admin/menu.py#L116-L118

Thanks for your answer but in fact I'm searching for a kind of of 'construct_snippet_menu' hook that doesn't seam to exist.
I'd like to remove some of my snippets from the snippet menu but not all.
Didn't find any way to do that except removing the whole main snippet menu that is not what I(d like to do.

In the default setup, Snippets is not a submenu - is this a customisation you've made yourself? If so, you need to specify construct_hook_name at the point that you create and register that menu.

mmm probably something I missed and didn't understand.
In fact, in my application, I'm registering models as snippets using @register_snippet. At this time these snippets are automatically inserted by wagtail in a 'Snippets' main menu.
ex:
@register_snippet
class TestSnippet(models.Model):
    name = models.CharField(max_length=255)

    panels = [
        FieldPanel('name'),
    ]

Now I created a new main menu called 'Elements" where I also inserted these snippets. Everything is Ok at this point.
But now , I'd like these snippets to appear only in my "Elements" menu but not in the 'Snippets' menu but I don't find any way to tell wagtail to not display them in Snippets menu.
Wagtail is creating this snippet menu, not me (or I don't know how)

Well absolutly my fault. Sorry for your time.
I just had to not register as a snippet. In fact I thought that registering a snippet was something more than just displaying it in the snippets menu.

Finaly no
In fact if don't register as snippet, I cannot use the SnippetChooserPannel.
So I rellay need a way to register as snippet but to not display a snippet in the snippet menu.
Maybe an option when registering a snippet ?

There are various add-on packages that implement chooser interfaces for non-snippet models:
https://github.com/wagtail/wagtail-generic-chooser
https://github.com/Naeka/wagtailmodelchooser/
https://github.com/neon-jungle/wagtailmodelchooser
https://github.com/springload/wagtailmodelchoosers
https://github.com/wagtail/wagtail-autocomplete
In the longer term we plan to refactor the way snippets, modeladmin and other areas of Wagtail admin work, so that choosers are independent of the model-editing views.

Thanks
This helps


[Class hierarchy] small, large and nest basket cells might be under neocortex basket cell

From the description of small, large and nest basket cells, they sound like they could possibly be cortex specific.
If so, these terms should be under neocortex basket cell.
Would like some input on this @tgbugs, thanks.
Related to #1127

'large basket cell' def is clearly cortex specific: "A basket cell that is large, and typically ascends to give rise to many long horizontally and vertically projecting axon collaterals that traverse neighboring columns and can extend through all cortical layers."
Mention of layer here sounds cortex specific: "A basket cell with axonal arbors composed of frequent, short, curvy axonal branches that tend to be near their somata and within the same layer."
Wikipedia (& reference therein) has these 3 types as cortex specific: https://en.wikipedia.org/wiki/Basket_cell#Cortex
@tgbugs - this is consistent with Wikipedia https://en.wikipedia.org/wiki/Basket_cell#Cortex

Sorry, just seeing this. The one area where the neocortex axioms would be problematic is that there are basket cells in hippocampus, so basket cell usually applies neocortex and hippocampus, whereas neocortex basket cell is the differentiated form for neocortex only. That said, all of these types are coming from neocortex only, and Rat area S1 specifically. So the change to include the part of neocortex axiom is ok.


create/modify webhook suggestions

Just some suggested modifications to the webhooks json payload for create and modify:

Include an owner_name field, with the full name.  External systems will have to do extra work to figure out what owner_id is.
For modify webhooks, a json field called 'changes', or something similar.  This would be an array of the fields which were updated.  Right now, an external system has no idea what is different, unless it kept state.

Thanks for the awesome work!

The event "task.update" contains a new field "changes" now (in master branch). See https://github.com/fguillot/kanboard/blob/master/docs/webhooks.markdown#examples-of-event-payloads


bpf: Print PID on unwind info requests

This is useful while debugging multi-threaded applications. Note that we are printing the userspace process ID, or kernel thread ID.

This breaks older kernels because of libbpf using bpf_trace_vprintk, but the vmtests did not run :(

Awesome, it failed now as expected 🎉

My bad, that was not supposed to be part of this commit/PR