refactor(costmap_generator): rework parameters

Description

Refactor the ROS Node configuration layout for the costmap_generator package according to the guideline.

Create the schema and parameter files.
Remove the default values from the source code to avoid duplication.
Update the README.md file as to how to launch the node.

Related links

None
Tests performed

The refactored node was successfully built and tested by launching this node individually.
The running result is shown below:

Notes for reviewers

It seems like the planning/costmap_generator/config/costmap_generator.param.yaml file cannot be automatically copied to the autoware/install/costmap_generator/share/config directory after building the package. Since we use find-pkg-share in the costmap_generator.launch.xml file to link the costmap_generator.param.yaml file, I have to manually copy the .param.yaml file to the share/config directory to make it work. I think we need to modify the CMakeLists.txt file to implement the copying, which I discussed here.
Interface changes

Create two configuration files planning/costmap_generator/config/costmap_generator.param.yaml and planning/costmap_generator/schema/costmap_generator.schema.json
Parameter values are now required to be passed to the node when launched.

Effects on system behavior

None
Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[x] I've confirmed the contribution guidelines.
[x] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.
[ ] The PR has been properly tested.
[ ] The PR has been reviewed by the code owners.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.
[ ] The PR is ready for merge.

After all checkboxes are checked, anyone who has write access can merge the PR.

@yuntianyi-chen parking.launch.py was removed. So please rebase or update your branch? Thank you for your cooperation.

@yuntianyi-chen parking.launch.py was removed. So please rebase or update your branch? Thank you for your cooperation.

Thanks for noticing! I just removed this file.


InputText - add atomic component

What kind of PR is this?:

/kind feature
/kind refactor
What this PR does / why we need it:
Updated text input in screens below:

send screen
convert screen
add liquidity screen

With the following features:

ability to accept title
ability to display on focus outline
ability to display invalid outline
ability to clear input
ability to display inline validation text
ability to cater for text and numeric input
ability to accept children prop to display as right-hand-side element

Which issue(s) does this PR fixes?:

Fixes #564
Additional comments?:

DEX-related screen are not implemented due to unfinalized design

Developer Checklist:

[x] Read your code changes at least once
[x] Tested on iOS/Android device (e.g, No crashes, library supported etc.)
[x] No console errors on web
[x] Tested on Light mode and Dark mode*
[x] Your UI implementation visually matched the rendered design*
[x] Unit tests*
[x] Added e2e tests*
[x] Added translations*

Reference from #564
Acceptance Criteria
Expected: Input text UI to be consistent throughout
Text input in:

[ ] Send screen
[ ] Convert screen
[ ] Add liquidity screen

Android:

[ ] Must have styling for inline validation
[ ] Placeholder color
[ ] Styling for error of forms, red outline
[ ] Update usage across all screens
[ ] Clear button
[ ] Ability to accept right side components. Like QR code or Token Symbol
[ ] Ability to accept titles

iOS:

[ ] Must have styling for inline validation
[ ] Placeholder color
[ ] Styling for error of forms, red outline
[ ] Update usage across all screens
[ ] Clear button
[ ] Ability to accept right side components. Like QR code or Token Symbol
[ ] Ability to accept titles


can not set sharingKey with loadFlatScore

Hello,
is there a way to use embed instance to load score with a sharing key after initiation ?
const embed = new Embed("#element", {
  embedParams: {
    appId: 'xxxx',
    controlsParts: true,
  },
})

// later
embed.loadFlatScore('xxx', { sharingKey: 'xxx' })

Thanks for your feedback. Indeed that's not possible at the moment, I will add it for the next release.

Now available in 1.4.0: https://github.com/FlatIO/embed-client/tree/v1.4.0#loadflatscorescore-mixed-promisevoid-apierror


Use more real container examples

Hey 👋
I made this PR to change the requests and limits example to be a more "realistic" example since making a Pod with a Database and a Wordpress inside is not a good practice 😅
I propose as an example to use a application container with a log aggregator as sidecar container 😃

/assign @xiangpengzhao

/kind cleanup

I agree with @sftim's comments but don't think they are blocking. I would gladly accept a follow up PR. Thanks!
/lgtm
/approve


Workaround not followable for flutter 3.19

Im having an issue with a library. I found the solution by @gaaclarke however, there wasn't any file generated_main.dart ./.dart_tool/flutter_build/generated_main.dart and there have been changes in the compile.dart. or am I missing something?
flutter doctor
[✓] Flutter (Channel stable, 3.19.3, on macOS 13.5 22G74 darwin-arm64, locale en-GB)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2023.2)
[✓] VS Code (version 1.87.2)
[✓] Connected device (3 available)
[✓] Network resources
• No issues found!

my logs:
E/flutter (31544): [ERROR:flutter/runtime/dart_isolate.cc(677)] Could not resolve main entrypoint function.
E/flutter (31544): [ERROR:flutter/runtime/dart_isolate.cc(168)] Could not run the run main Dart entrypoint.
E/flutter (31544): [ERROR:flutter/runtime/runtime_controller.cc(462)] Could not create root isolate.
E/flutter (31544): [ERROR:flutter/shell/common/shell.cc(669)] Could not launch engine with configuration.

          Here is a workaround if this is blocking you (still trying to figure out a fix):

Step 1
Apply the following patch to flutter:
--- a/packages/flutter_tools/lib/src/compile.dart
+++ b/packages/flutter_tools/lib/src/compile.dart
@@ -261,7 +261,9 @@ class KernelCompiler {
       // This is contained in the file `generated_main.dart` under `.dart_tools/flutter_build/`.
       final File newMainDart = buildDir.parent.childFile('generated_main.dart');
       if (newMainDart.existsSync()) {
-        mainUri = newMainDart.path;
+        print('before: $mainUri');
+        // mainUri = newMainDart.path;
+        print('after: $mainUri');
       }
     }

This will stop the plugin registrant from being included in your binary.
Step 2
Execute flutter run to make sure that ./.dart_tool/flutter_build/generated_main.dart is generated.
Step 3
Copy the _PluginRegistrant class from ./.dart_tool/flutter_build/generated_main.dart into your lib/main.dart.   There is no need to call it, the engine will find it and execute it for you.  If you change your dependencies you will have to repeat this step.
Originally posted by @gaaclarke in https://github.com/flutter/flutter/issues/91841#issuecomment-1006026551

@atharvsharma1998
Please don't use comments from other issues to open new issue. Try to use new issue template and fill out requested details so that we'll have enough info to work with.
The workaround you mentioned was for that issue applicable until it was fixed. So now I think you don't need to look for workaround. Please provide complete runnable reproducible code sample that we can directly copy paste and run along with current vs expected behavior you are looking for.

Thanks the issue was fixed. It was caused due to another library


DidlObject.from_element(): handle None values properly

When an element had no text or a missing attribute, really_unicode(None) was called which caused a value error. Now the code checks for None values before calling really_unicode and uses '' as the title if the title tag is empty (a missing title tag still triggers a DidlMetadataError).
This PR was created to fix #458 and it fixes #448 as well.
Please take a look at my code - I am quite new here.

Coverage increased (+0.04%) to 59.941% when pulling 4a500c07e18f8d4cd3382c73ccd015ef7ed7e580 on ghcs27:empty_title_event_error into 43b1fadee59b70b9fdedfbc2b27e26739eb4c73a on SoCo:master.

Coverage increased (+1.2%) to 61.073% when pulling 4a500c07e18f8d4cd3382c73ccd015ef7ed7e580 on ghcs27:empty_title_event_error into 43b1fadee59b70b9fdedfbc2b27e26739eb4c73a on SoCo:master.


[docs] howto turn off watch mode

Taken from here: https://github.com/jaredpalmer/tsdx/issues/319#issuecomment-566659469

@allcontributors please add @lookfirst for docs, idea


autoApply with range

@Jasenkoo nice plugin!
Wanted to ask real quick whether it would be possible to use the autoApply option with the range option without having to open the date selector twice.
Right now when I select a start date, the popup is closed because of the autoApply and need to open the date selector again to be able to select the end date as well.
Thanks!

Thank you. Can you try disabling the partialRange prop and tell me if it works. Also, you can disable auto-closing but keep auto-apply with closeOnAutoApply prop

I think I have an edge-case here as I'm using the monthPicker.
When I use the regular date picker the range selector is working fine.

Ok, will fix it, should not close after the first selection


Make maskinfo optional

For large datasets get_keepbits is tremendously slowed down by the calculation of the mask for each individual variable
 "maskinfo": int(ds[var].notnull().sum())

We could make the mask an argument or get it somehow from get_bitinformation. But I would argue we follow Milan's advice https://github.com/observingClouds/bitinformation_pipeline/issues/17#issuecomment-1088547497 and remove this part from the code.

I'd vote to remove maskinfo alltogether.

Since BitInformation.jl v0.5 you can call bitinformation(A::AbstractArray{T},masked_value::T) which creates internally a mask for array A based on masked_value. Otherwise could you elaborate what "tremendously slow" means?

Slow refers to the xarray side checking how many values are masked for that large icon output. This is the problem of how this output is stored and read in, classic IO.


add config for account.microsoft.com into dropdown

Closing this one out and creating a new PR properly with a dedicated branch.

@techtor, you can just pull this branch, make the changes, and push back. You don't need to close the PR.


WIP compiling with LLVM 8.0.0

This draft PR is intended to track work on LLVM 8.0.0.

Hey there! Sorry to cause noise here, but I'm just curious what's the status on this - I'm currently upgrading to LLVM8 on Alpine Linux.

It's not working yet.  On Windows, the JIT tests fail due to a symbol resolution problem, and on Linux the tests are failing on CodegenTest.TryBlockCantCatchCppExcept.
I have very little time these days to work on this, but I do try to make some progress occasionally.

@kulibali Add a note for the next LWIP trying to recruit help?

This is superseded by #3320


Absent styling on all resource pages and contributors page

Ref: https://lbry.tech/contribute

@kauffj

Fixed in https://github.com/lbryio/lbry.tech/commit/fc2e34c2a5c61c9e50ee6a356c24b72d52bd0b91


Handle handlebars

Many of us will use handlebars in emails like
Hey {{ username }},
nice to see you.

Please click on {{ link }} to continue

It would be cool if react-email would allow to show placeholder data at those places.
My ideas would be:

Add sample data in dev somewhere
Show inputs on the right side that allows us to enter sample data
Interactively hover over the handlebars and edit them

I know this is quite ambitious, but just wanted to tell you about this idea :D

Does the React props works in this case?
<MyEmail username="Bu Kinoshita" link="https://resend.com"  />

and the email looks like
const MyEmail = ({ username, link }) => (
  <Html>
    <Body>
      <Container>
        <Text>Hi, {username}</Text>
        <Text>Please click on <Link href={link}>link</Link> to continue.</Text>
      </Container>
    </Body>
  </Html>
)

Where do I have to use ""?
Note that I'm using FastAPI with Postfix to send messages. Because of tbat I will probably just generate my emails and use the built version of them (because of that I need to use handlebars as I replace them in FastAPI).

The main idea to use React for emails (apart of dx) is using his template engine.
You could keep the the handlebars expressions as string in the react dim, render to string and then again with handlebars.


chore(release): Update im-metadata to v3.0.0

Bump im-metadata to fix https://github.com/Turistforeningen/node-s3-uploader/issues/10

Need to update the size test to return bytes

You got a merge commit in this branch. Can you do a rebase on master git rebase origin/master and git push -f.
A tip when creating new branches is to branch from the remote branch by git checkout origin/master -b feature/awesome-new-feature :smile:

Thanks for the tip, i'll go for a new pr.


Nonconforming triangular mesh

Hi,
I started using MFEM since yesterday with the main goal to solve Poisson equation on a nonconforming triangular mesh on a square domain. But just now, I found out that MFEM supports non-conforming mesh refinement (quadrilateral/hexahedral meshes), including anisotropic refinement. I just need to use this mesh. I will not refine it.
I wanted to know if MFEM can solve Poisson problem on nonconforming triangular mesh? I have attached the image of mesh for the reference.
Thank you in advance.
Best regards,
Pratik

Hi @Pratikk17,
MFEM does support nonconforming refinement of triangles, but normally we do "red" refinement (a triangle is refined into four similar triangles). However, if you won't be refining the mesh further, you can define a mesh exactly as in the picture, by hand.
You can start by creating a standard MFEM v1.0 mesh as described in https://mfem.org/mesh-formats/, just define all the vertices, elements and boundaries. This mesh should work, except at the hanging vertices the solution will be disconnected.
Now you can change the version to MFEM v1.1 and add the new section "vertex_parents" (https://mfem.org/mesh-formats/#mfem-mesh-v11), where you will mark the hanging vertices as midpoints of two "parent" vertices. In your case you will add four lines in the vertex_parents section.
I can help you with the second step if you get stuck.

Hi @jakubcerveny,
Thank you for your quick reply. I did this. But I have a minor problem in the visualization of mesh and solution. I have uploaded files regarding this. Can you please have a quick look? Nonconforming_triangular.pdf contains mesh labeling.
Nonconforming_triangular.pdf
#=================== Mesh file
MFEM mesh v1.1
dimension
2
elements
32
1 2 0 1 4
1 2 1 2 4
1 2 2 3 4
1 2 3 0 4
1 2 3 2 7
1 2 2 5 7
1 2 5 6 7
1 2 6 3 7
1 2 8 9 12
1 2 9 10 12
1 2 10 11 12
1 2 11 8 12
1 2 11 10 15
1 2 10 13 15
1 2 13 14 15
1 2 14 11 15
1 2 1 8 18
1 2 8 16 18
1 2 16 17 18
1 2 17 1 18
1 2 17 16 19
1 2 16 11 19
1 2 11 2 19
1 2 2 17 19
1 2 2 11 22
1 2 11 20 22
1 2 20 21 22
1 2 21 2 22
1 2 21 20 23
1 2 20 14 23
1 2 14 5 23
1 2 5 21 23
boundary
10
1 1 0 1
2 1 1 8
3 1 8 9
4 1 9 10
4 1 10 13
5 1 13 14
6 1 14 5
7 1 5 6
8 1 6 3
8 1 3 0
vertex_parents
4
17 1 2
21 2 5
16 8 11
20 11 14
vertices
24
2
0 0
0.4 0
0.4 0.5
0 0.5
0.2 0.25
0.4 1
0 1
0.2 0.75
0.6 0
1 0
1 0.5
0.6 0.5
0.8 0.25
1 1
0.6 1
0.8 0.75
0.6 0.25
0.4 0.25
0.5 0.125
0.5 0.375
0.6 0.75
0.4 0.75
0.5 0.625
0.5 0.875
#============== Refined mesh by solving ex1
MFEM mesh v1.1
dimension
2
elements
32
1 2 0 1 4
1 2 1 2 4
1 2 2 3 4
1 2 3 0 4
1 2 3 2 7
1 2 2 5 7
1 2 5 6 7
1 2 6 3 7
1 2 8 9 12
1 2 9 10 12
1 2 10 11 12
1 2 11 8 12
1 2 11 10 15
1 2 10 13 15
1 2 13 14 15
1 2 14 11 15
1 2 1 8 18
1 2 8 16 18
1 2 16 17 18
1 2 17 1 18
1 2 17 16 19
1 2 16 11 19
1 2 11 2 19
1 2 2 17 19
1 2 2 11 22
1 2 11 20 22
1 2 20 21 22
1 2 21 2 22
1 2 21 20 23
1 2 20 14 23
1 2 14 5 23
1 2 5 21 23
boundary
10
1 1 0 1
2 1 1 8
3 1 8 9
4 1 9 10
4 1 10 13
5 1 13 14
6 1 14 5
7 1 5 6
8 1 6 3
8 1 3 0
vertex_parents
4
16 8 11
17 1 2
20 11 14
21 2 5
coarse_elements
32
vertices
24
2
0 0
0.4 0
0.4 0.5
0 0.5
0.2 0.25
0.4 1
0 1
0.2 0.75
0.6 0
1 0
1 0.5
0.6 0.5
0.8 0.25
1 1
0.6 1
0.8 0.75
0.6 0.25
0.4 0.25
0.5 0.125
0.5 0.375
0.6 0.75
0.4 0.75
0.5 0.625
0.5 0.875

Hi @jakubcerveny ,
Thank you very much for your suggestion. It worked. However, I realised that along with adding a section "vertex_parents", I also need to add a section "coarse_elements".
Thank you again.
Best,
Pratik

Yes, I also noticed the coarse_elements section is required. This may be a bug. I'll resolve it in #1392

Hi @jakubcerveny,
I realized that the coarse_elements section is in fact not necessary. Just need to add these two lines
"coarse_elements
0"
This worked for all the cases I considered. All these cases are similar to the ones I  discussed on the top.
Best,
Pratik


Should we support storage object method Compose?

Does gcloud support composing a new storage object from existing objects? (https://cloud.google.com/storage/docs/json_api/v1/objects/compose)
This API is not called in the node or python projects.

I think we should support it, going to dream up some code that I'd want to write for this....

Option 1: Put this on the bucket
Seems like it makes a good deal of sense to put as a bucket-level method. The idea is you get a bucket, and then compose several objects from the bucket into a new object in that same bucket.
storage = Gcloud.storage
bucket = storage.find_bucket "my-bucket"

# Compose with multiple arguments
f = bucket.compose "/path/to/target/new.file",
                   "/path/to/part1/remote.file",
                   "/path/to/part2/remote.file"

# Compose with a list
files_to_compose = [
  "/path/to/part1/remote.file",
  "/path/to/part2/remote.file"
]
f = bucket.compose "/path/to/target/new.file",
                   files_to_compose

Option 2: Make this a "factory-style" method on the File object?
I don't like that so much, and it might actually not be a reasonable idea... I also don't know how Ruby-ish this is... doesn't seem to fit well, but I could be wrong.
storage = Gcloud.storage
f = storage.File.from_composition "my-bucket", "/path/to/target/new.file",
                                  files_to_compose

Option 3: Make this a top-level operation (storage.compose)
I think this leads to the potential for confusion that you can compose objects across buckets (which doesn't seem to be the case in the documentation). It also requires that we pick up the destination bucket based on the files provided...
storage = Gcloud.storage
bucket = storage.find_bucket "my-bucket"
file1 = bucket.find_file "/path/to/part1/remote.file"
file2 = bucket.find_file "/path/to/part2/remote.file"
f = storage.compose_file "/path/to/target/new.file", file1, file2
# or
f = storage.compose_file "/path/to/target/new.file", [file1, file2]

Option 3a: Same but pass in a bucket and file paths
This doesn't really fix much, and I still don't like it ...
storage = Gcloud.storage
bucket = storage.find_bucket "my-bucket"
f = storage.compose_file bucket, "/path/to/target/new.file"
                                 "/path/to/part1/remote.file",
                                 "/path/to/part2/remote.file",

I really prefer option 1. @blowmage , any thoughts?

I'd say option 1 or 2 and specifically not option 3 / 3a. Depending on your answer to another comment elsewhere, could we stuff in a File object representing a not-yet-extant GCS object you're about to write (or really, form by composition)?
We think of it internally as 1, but we don't have reified objects that can have factories. (We just have the data model objects.) It's also not merely on the bucket, but really more like a function of the bucket's files() collection (rather than some other property of the bucket).

We have gotten a request to provide this functionality so I am reopening this issue.


Empty POST requests

Hey, I love the library but I'm having an issue making POST requests. GET requests work fine. I run:
cat test.json | netsuite rest-api post /record/v1/salesorder -
and I know the request is solid because test.json works fine in Postman
But I receive:
netsuite.rest_api.NetsuiteAPIRequestError: HTTP400 - {"type":"https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1","title":"Please enter a value for entity","status":400,"o:errorCode":"FIELD_PARAM_REQD"}

And when I check the logs in netsuite UI, the request body is empty.
I've tried to debug but I'm not too familiar with asyncio. Would greatly appreciate if someone could help out with this!

Thanks for your bug report @jtalmi, this was fixed in #26 (which was released with v0.6.0)


Complete migration

As part of the migration, I suggest to dynamically generate the index. Something like this:
https://github.com/1ucian0/qiskit-textbook/blob/deploy/index/index.yaml

When moving to Jupyter Book, this will be the default. See toc.yaml at my branch.

index.html currently contains more information than just the toc. Authors, date (and probably version in the near future). How to handle that?

Keep index to chapter/section links and author list + license + cover image. Something very similar to the yaml in @delapuente's branch, but with dynamic info for author list as well, as that will change as more people contribute.

@delapuente and @1ucian0 did a great job with this one -- thank you! Closing now


Fix ps collateral/denom creation tx category confusion

Transactions that create mixing denoms also create mixing collateral as an additional output sometimes. Such txes are mistakenly displayed as "Make Collaterals" in GUI atm which is a bit confusing.

Not really... but I see the confusion this code causes, will fix in a minute

1766d44 should make it a bit clearer


DownloadPage: Navigate by pushing to the router

Previously, the confirm button attempted to navigate backward in history, which misbehaved in some cases.
Fixes: https://github.com/endlessm/kolibri-explore-plugin/issues/804

This was originally changed in 22dcee453f0993fb91b505afe903676a15e0bf5d. The reason that was done was to actually reload the page because the caching didn't work. I think you either need to clear the JS cached collections (that should work now!) or switch this to push so it actually loads the page. I'd vote for push but the other reason it might be trying to go back to the beginning of the history is so that the Android back button will exit the app.

This was originally changed in 22dcee4. The reason that was done was to actually reload the page because the caching didn't work. I think you either need to clear the JS cached collections (that should work now!) or switch this to push so it actually loads the page. I'd vote for push but the other reason it might be trying to go back to the beginning of the history is so that the Android back button will exit the app.

Yep, this was done as a workaround for caching issues. If clearing the JS cached collections works in current Kolibri then we should do that instead and revert https://github.com/endlessm/kolibri-explore-plugin/commit/22dcee453f0993fb91b505afe903676a15e0bf5d

Yep, this was done as a workaround for caching issues. If clearing the JS cached collections works in current Kolibri then we should do that instead and revert 22dcee4

It should work. The point of a60ba3660513f9a68b0a3a652ea626358929c60b is that the backend no longer sets any Cache-Control headers that would cause the browser (or Django) to reuse an existing response. Now when the frontend does a fetch with force: true, it will result in a request to the backend that actually does something.
Looking over this stuff again, an alternative would be a brute force clearCache() for each of ChannelResource and ContentNodeResource (and maybe ExternalContentTagResource and ContentNodeExtrasResource to be complete) at the end of the initial download since we know that there have been lots of resource changes. This will ensure that any models or collections in those resources will be fetched from the backend. It would be unfortunate (for example), if the ChannelResource collection was refreshed by a forced fetch, but some other resource model or collection was still using stale cached entries.

Ah, I see! I can see I was misinterpreting what router.go(0) / window.history.go(0) actually does. (I think there's another similar API that behaves the way I assumed this one does, jumping to a point in the history stack). But also what the heck Javascript? Sigh. I guess that bad idea predates pushState.
Anyway, I guess the real problem here is for some reason the webview isn't reloading the page. Looks like a WebKit thing, actually? Poking around in GNOME Web 44, I'm getting the same behaviour when I cal window.history.go(0) from a Javascript console anywhere in Kolibri, including at https://key.endlessos.org/. Although it's funny: this works as expected in other contexts, such as at http://example.com/. Must be something about our history object. (Navigating backward and forward in the history stack is fine).
That's weird. I'll see if it reproduces in a newer WebKit as well. But maybe I can change this to call window.location.reload() instead? It's evilly bypassing Vue, but that's kind of what we're trying to achieve anyway.

I think you should just use push and not worry about the history or caching right now.

I think you should just use push and not worry about the history or caching right now.

I might not be following here - is that caching stuff … fixed? My goal here is to keep this behaving as close to how it currently is and carry on, but if it's safe to simply revert 22dcee453f0993fb91b505afe903676a15e0bf5d (which I kind of did originally before I understood the context) then, yes, I'm happy with that :) If the caching stuff is still iffy, then I don't think using push() would quite work since that'll just be (effectively) a hash change; still the same state in our Vuex stores.

I think you should just use push and not worry about the history or caching right now.

I might not be following here - is that caching stuff … fixed? My goal here is to keep this behaving as close to how it currently is and carry on, but if it's safe to simply revert 22dcee4 (which I kind of did originally before I understood the context) then, yes, that's excellent and I'm happy with that :) If the caching stuff is still iffy, then I don't think using push() would quite work since that'll just be (effectively) a hash change; still the same state in our Vuex stores.

I was under the impression that push actually loads a page, but it appears that it just adds an entry to the browser history. My fault, this is good enough then.
What's alluded to in 22dcee4 is using ChannelResource.fetchCollection({ force: true }), which would bypass the in memory JS cache. However, nothing in the code is actually trying to do that. Reloading the page has the same effect since clearly any in memory JS caching would be gone. My suggestion to fix these kinds of things in the future would be to add a helper that simply calls ChannelResource.clearCache() and ContentNodeResource.clearCache() when we know that the content has been updated. *Resource.fetch*({force: true}) is a bit nicer since it would only operate on a particular model or collection, but I feel like it's hard to know when to do that in common code.
Anyways, this is fine as is. :+1:


raftstore: allow the read request with a smaller ts during flashback

Signed-off-by: JmPotato<EMAIL_ADDRESS>What is changed and how it works?
Issue Number: close #14045. Should merge after https://github.com/pingcap/kvproto/pull/1048.
What's Changed:
- Store the flashback `start_ts` in region meta.
- Allow the read request with a smaller ts during flashback.

Check List
Tests

Unit test
Integration test

Release note
None.

@HuSharp @sticnarf PTAL again, thx!

@sticnarf @Connor1996 Could you please help leave a /merge? Thx.

/merge

/test

/test

/test

/test

/test

/test


User Attrition

I'd like the ability to manage/transfer a user's ownership of documents before removing the user from BookStack.
Based on the assumption that a user's documents will be removed once they are deleted from BookStack (I haven't been able to confirm this is true), this will allow me to clean up a user's documents and make sure they have a new owner before I remove the user.
Apologies if this is the wrong approach for this type of question/feature request but I wasn't able to find what I was looking for online otherwise.

Hi @mmitchen,
Thanks for your request. Currently BookStack simply infers the "Creator" as the "Owner".
I've opened #2246 to propose adding "Owners" officially to BookStack and have considered your request to assign a new owner within that proposal.
Just a note, A user's content will not be removed when they are deleted. They are left in the system to be used by those that have permission to view them.

Thanks for the follow up Dan and for submitting the enhancement suggestion for consideration. Thanks also for confirming user content remains if a user is deleted. That was biggest concern and part of the reason I wanted to have the ability to change the owner. I still think it would be good to be able to change owner but it's less of a priority for me with your confirmation. Thanks!


Add crosshairs to primary chart, add model for products and periods, add legend, limit axis ticks

Resolves #262, resolves #180, resolves #181.

:+1:  Thanks @Afredon, great job :)


_ Patch Compile Tests _

+1 :green_heart:
mvninstall
4m  0s
the patch passed

+1 :green_heart:
compile
0m 28s
the patch passed

+1 :green_heart:
javac
0m 28s
the patch passed

+1 :green_heart:
shadedjars
5m 47s
patch has no errors when building our shaded downstream artifacts.

-0 :warning:
javadoc
0m 26s
hbase-client in the patch failed.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+1 :green_heart:
hbaseanti
0m  0s
Patch does not have any anti-patterns.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ master Compile Tests _

+1 :green_heart:
mvninstall
4m  6s
master passed

+1 :green_heart:
checkstyle
0m 29s
master passed

+1 :green_heart:
spotbugs
1m  1s
master passed

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
3m 45s
the patch passed

+1 :green_heart:
checkstyle
0m 27s
hbase-client: The patch generated 0 new + 0 unchanged - 3 fixed = 0 total (was 3)

+1 :green_heart:
whitespace
0m  0s
The patch has no whitespace issues.

+1 :green_heart:
hadoopcheck
12m 26s
Patch does not cause any errors with Hadoop 3.1.2 3.2.1.

+1 :green_heart:
spotbugs
1m  7s
the patch passed

_ Other Tests _

+1 :green_heart:
asflicense
0m 12s
The patch does not generate ASF License warnings.

32m 25s

Subsystem
Report/Notes

Docker
Client=19.03.12 Server=19.03.12 base: https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-2027/1/artifact/yetus-general-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/2027

Optional Tests
dupname asflicense spotbugs hadoopcheck hbaseanti checkstyle

uname
Linux 58bd482677b1 4.15.0-91-generic #92-Ubuntu SMP Fri Feb 28 11:09:48 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
master / 287f29818f

Max. process+thread count
84 (vs. ulimit of 12500)

modules
C: hbase-client U: hbase-client

Console output
https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-2027/1/console

versions
git=2.17.1 maven=(cecedd343002696d0abb50b32b541b8a6ba2883f) spotbugs=3.1.12

Powered by
Apache Yetus 0.11.1 https://yetus.apache.org

This message was automatically generated.


CMakeLists, Line 344. tlx directory does not exist

sorry, the layout of this code is a little confusing since it was just a branch of of the tlx repo.
We do not have support for cmake.  All the code we add is header only code for the different containers.
the btree_tests directory has the driver code which can show you how to use the code.
the code itself for the bp-tree can be found at https://github.com/wheatman/concurrent-btrees/blob/merged_code/tlx-leafds/container/btree.hpp
the basic concurrent btree used as a reference can be found at https://github.com/wheatman/concurrent-btrees/blob/merged_code/tlx-plain/container/btree.hpp
sorry for the confusion

Got it. I just changed the tlx to tlx-plain and cmake worked. Thank you.

so just to be clear, tlx-plain is not the bp-tree it is a concurrent b+-tree that we used as a reference implementation

got it


With great power comes great responsibility...

What's the logical conclusion to everyone having access to a program like this? A race to see whose script can enroll them the fastest. I personally chose to not open-source my implementation, but nice job here!

Making it difficult for non-CS majors to use is a feature, not a bug :smirk:


Update version to 2.3

@andy-ms what do we need to do to mark @types packages as 2.3?

I made a pull request: Microsoft/types-publisher#301


feat: cached schemas to improve performance

It would make sense to first check whether the schema itself is valid before adding it to the cache, the validate method would perform this check anyway but assuming the schema is incorrect this would cause a lot of ambiguous errors for the end user. If we check schema it self before it's added we can error out there. See Validator.check_schema docs


Leaderboard goes back to first page of entries

Context
The leaderboard seems to refresh itself every couple of seconds. That also resets the page to the first 10 entries, which makes it hard to look at other entries on later pages.
Proposal
No response
Updates and actions
No response

Hello @funkey,
Thanks for opening this issue. The way that the leaderboard is updated will now be superseded by work in #177 that you can follow, where this bug will not be an issue anymore.
Forgive us that the codebase is undergoing rapid development, but please do open another issue if you see something super wrong!


Zoom ability

First of all congrats for your excellent work!
Are you thinking of implementing the ability to zoom in/out on the PCB panels? Being limited to screen size is very limiting for those of us with small screens. Adjusting the panel size just isn't enough for larger boards.

I will keep this as a wishlist, but I'm not sure how useful it is.
The main feature of this plugin is to quickly give an overview of all places on the board where a component is located. From that you can look at the board and either quickly find reference designator on silkscreen since you know where to look at, or compare with relative positions of other pads/silkscreen marks to quickly locate your footprint.
If you have board zoomed in and part of it is outside of the view, how would you know where to look?
Screen size is an issue but unless you are trying to do A4 size boards with 0603 components on 1080p monitor, it's not a big issue. In #20 a big board was posted, it can be viewed fine on 15" laptop.

Nice work with the zoom @qu1ck. Just a comment about user experience, nothing to worry but the scroll is the opposite of the behavior in Pcbnew, is this the default behavior on java script?
About your changes in pcbnew.py I am waiting the Nightly release of KiCad, the compilation for Ubuntu is broken since 2 weeks ago (I am in contact with the support). So I will test in that big board and give you some feedback.

What do you mean opposite? For me scrolling up zooms in both in pcbnew and in bom.
There is no "default" behavior, it's all hand coded.

The zoom in / zoom out works in one direction when I roll the scroll button in the mouse in Pcbnew and in the opposite when roll in the iBOM generated HTML.
Even is the opposite direction of the default browser zoom (rolling to front, that is the default OS zoom in makes zoom out in your page).
Using: Firefox v61 on Ubuntu.
Is not really a bug, but I release that was zooming in when I wanted zoom out, and vice-versa.

Yeah, for me both chrome and firefox zoom same way.
Can you tell me does it zoom in or out when you scroll up? Does direction change if you use chrome?
I suspect it's pcbnew doing something in non-standard way and has reverse direction, not browser.

Also do you have "natural scrolling" or something like that enabled in linux? I.e. when you scroll up does the page move up or down?

qu1ck,
They're right (Firefox on Windows). Scrolling up zooms out, scrolling down zooms in. It should be the other way around.

Reopening to investigate further.

Yeah I have math totally wrong on zoom calculation. Will fix soon.

No problem. Our function is help debugging.

I believe this should be fixed now. Please try the latest.

@qu1ck ,
it's possible lock the color of the select line when you move the cursor to PCB's panels?

Could you implement a feature  (ex: add a button) to  recenter the the pcbs and reset the zoom to full view?

Could you implement a feature (ex: add a button) to recenter the the pcbs and reset the zoom to full view?

Right click does that.

it's possible lock the color of the select line when you move the cursor to PCB's panels?

Yes, that's doable.

> Could you implement a feature (ex: add a button) to recenter the the pcbs and reset the zoom to full view?

Right click does that.

confirmed - Thanks!

Yes @qu1ck, so much smoothly the zoom now! (both: mouse and touch pad)
Now mouse wheel works as the conventional direction of my OS Ubuntu (zoom on Firefox, Chrome, Pcbnew and others software having the same direction).
The touch pad is working in both too (before wasn't), but in the opposite direction (in both), the "Natural scrolling touckpad configuration" have no effect on this.

I tested on other computer (Linux Firefox also) but with the zoom on the lateral of the trackpad and worked fine (direction and "quantity").
The other computer (first one) use the 2-fingers zoom and the behavior may be related with some really specific hardware-software combination. May be not interesting use so much time in this correction, so.

So I tried this on a macbook pro with touchpad. Woah it's smooth! And inverted. But looking at the events browser is firing there is really nothing I can do about it, it looks just like mouse wheel rotated in opposite direction.
I suspect 2 fingers zoom on linux would be the same but I can't confirm. Laptops that have separate scrolling area probably work same as actual mouse wheel, that's why it works for you.
I'm going to call this one fixed, if anyone has ideas on how to improve detection of touchpads, feel free to drop a line here or send a pull request.

@TechJA your last ask to lock highlighted row was implemented.

@qu1ck ,
thanks!


404 page

Add a 404.tsx file to the pages folder. Wrap the contents with the layout (see other pages for an example). Then write a 404 message eg. Oops, that page doesn't exist! and add a link back to the homepage.

@EmmaDawsonDev  can I work on this issue

Sure! If you're joining hacktoberfest then feel free to wait until October before making a pull request.

Yes, I am joining hacktoberfest, but I had  one doubt @EmmaDawsonDev , will it be okay if I forked now and completed the above task and then after registering for  hacktoberfest and then I will request for pull request. Will it be okay? actually i am new to theopen source contribution so i don't have much idea

Hi @yashfalke77 yes, that's perfectly fine. I do the same thing :) You can fork it now and work on it this week. Just wait until October 1st before making the PR.

Hi @EmmaDawsonDev I completed the 404 page designing below are the screenshots both in light and dark mode, if there are any changes then please tell me
Dark mode:

Light mode:

Looks great! Where’s the image from? Just want to check whether the image is royalty free so we can use it without needing to give credit. Also, there’s a small spelling mistake on captcha

@EmmaDawsonDev Image is of royalty free from error404 website ,  i will correct it , rest all okay? . Is ready for pull requests?

Cool, I’ve not seen that site before 👍🏻 All looks ok I think, now just to wait until the weekend to make your PR 😀

hey @EmmaDawsonDev I made the pull request do check it out and if everything is okay you can merge it :)


CAP-610: Ignore applyOps commands instead of throwing error

This pull fixes a command newly encountered on Atlas that causes an unexpected error.

Thanks Bill!


SYMBOLSUFFIX doesn't seems to work in CMAKE build system

I'm trying to build openblas 0.3.23 (64-bit integer) and use it as blas/lapack for numpy in my WSL.
Since numpy's docs suggests building openblas with 64_ symbol suffix (https://numpy.org/devdocs/user/building.html#bit-blas-and-lapack), so I tried below make cmd:
FC=gfortran USE_THREAD=1 USE_TLS=1 NUM_THREADS=64 DYNAMIC_ARCH=0 \
NO_STATIC=1 INTERFACE64=1 BINARY64=1 \
SYMBOLSUFFIX=64_ make shared

It works well and I can see symbols with 64_ suffix in the shared library:
00000000009593d0 T zunmrz_64_
0000000000959dc0 T zunmtr_64_
000000000095a540 T zupgtr_64_
000000000095a980 T zupmtr_64_

However, when I tried to switch to cmake system:
 cmake -B build64 -S OpenBLAS-0.3.23 \
    -DBUILD_SHARED_LIBS=ON \
    -DBUILD_WITHOUT_LAPACK=OFF \
    -DBUILD_WITHOUT_CBLAS=OFF \
    -DBUILD_TESTING=OFF \
    -DNO_AFFINITY=ON \
    -DUSE_THREAD=1 \
    -DUSE_TLS=1 \
    -DNO_WARMUP=1 \
    -DNUM_THREADS=64 \
    -DDYNAMIC_ARCH=OFF \
    -DINTERFACE64=1 \
    -DBINARY64=1 \
    -DSYMBOLSUFFIX=64_

It builds fine, but the shared library generated doesn't has 64_ symbol suffix:
0000000000953c70 T zunmrz_
00000000009545f0 T zunmtr_
0000000000954d30 T zupgtr_
0000000000955150 T zupmtr_

I noticed that the exports/gensymbol cmd, which seems used to rename symbols, gives some error messages, though it doesn't stop the cmake building process:
xxx/exports/gensymbol objcopy x86_64 _ 0 0 0 0 0 0 "" "64_" 0 false ON ON ON ON > xxx/build64/objcopy.def

I believe the exports/gensymbol  is a bash script that expects 0/1 as boolean inputs and the cmake false/ON is unknown to it, so we need to convert itto 0/1 first:
--- CMakeLists.txt.1    2023-04-09 00:57:02.275990909 -0700
+++ CMakeLists.txt      2023-04-08 19:27:39.000000000 -0700
@@ -400,7 +400,7 @@

   if (NOT USE_PERL)
   add_custom_command(TARGET ${OpenBLAS_LIBNAME}_shared POST_BUILD
-    COMMAND  ${PROJECT_SOURCE_DIR}/exports/gensymbol "objcopy" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" \"${SYMBOLPREFIX}\" \"${SYMBOLSUFFIX}\" "${BUILD_LAPACK_DEPRECATED}" "${BUILD_BFLOAT16}" "${BUILD_SINGLE}" "${BUILD_DOUBLE}" "${BUILD_COMPLEX}" "${BUILD_COMPLEX16}" > ${PROJECT_BINARY_DIR}/objcopy.def
+    COMMAND  ${PROJECT_SOURCE_DIR}/exports/gensymbol "objcopy" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" \"${SYMBOLPREFIX}\" \"${SYMBOLSUFFIX}\" "$<BOOL:${BUILD_LAPACK_DEPRECATED}>" "$<BOOL:${BUILD_BFLOAT16}>" "$<BOOL:${BUILD_SINGLE}>" "$<BOOL:${BUILD_DOUBLE}>" "$<BOOL:${BUILD_COMPLEX}>" "$<BOOL:${BUILD_COMPLEX16}>" > ${PROJECT_BINARY_DIR}/objcopy.def
     COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def  ${PROJECT_BINARY_DIR}/lib/lib${OpenBLAS_LIBNAME}.so
     COMMENT "renaming symbols"
     )

However, even after this patch, I'm still unable to see 64_ symbol suffix though the exports/gensymbol command doesn't complain anything.
I'm using cmake 3.26.3 with gcc/gfortan: 12.2.1 20230211 (arch linux) and below are outputs from the cmake:
-- Using 64-bit integers.
-- GEMM multithread threshold set to 4.
-- Multi-threading enabled with 64 threads.
-- Running getarch
-- GETARCH results:
CORE=ZEN
LIBCORE=zen
NUM_CORES=16
HAVE_MMX=1
HAVE_SSE=1
HAVE_SSE2=1
HAVE_SSE3=1
HAVE_SSSE3=1
HAVE_SSE4_1=1
HAVE_SSE4_2=1
HAVE_SSE4A=1
HAVE_AVX=1
HAVE_AVX2=1
HAVE_FMA3=1
MAKE += -j 16
...
-- fortran lapack
-- Building Single Precision
-- Building Double Precision
-- Building Single Precision Complex
-- Building Double Precision Complex
-- adding suffix 64_ to names of exported symbols in openblas_64
-- Generating openblas_config.h in include/openblas64
-- Generating f77blas.h in include/openblas64
-- Generating cblas.h in include/openblas64
-- Copying LAPACKE header files to include/openblas64

Let me know if you need more info to reproduce this issue.

cmake build is a bit different "historically" in that it adds the 64 suffix automatically with INTERFACE64, maybe this collides with an express SYMBOLSUFFIX option currently

cmake build is a bit different "historically" in that it adds the 64 suffix automatically with INTERFACE64, maybe this collides with an express SYMBOLSUFFIX option currently.

I try to remove -DSYMBOLSUFFIX=64_ and do a clean rebuild, I did see the shared library has a _64 name suffix, i.e. the libsuffix below.
libdir=/home/zhqrbitee/build/test/lib
libsuffix=_64
includedir=/home/zhqrbitee/build/test/include/openblas64

openblas_config=USE_64BITINT=1 NO_CBLAS= NO_LAPACK= NO_LAPACKE= DYNAMIC_ARCH=OFF DYNAMIC_OLDER=OFF NO_AFFINITY=ON USE_OPENMP= ZEN MAX_THREADS=64
Name: OpenBLAS
Description: OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version
Version:
URL: https://github.com/xianyi/OpenBLAS
Libs:  -L${libdir} -lopenblas${libsuffix}
Cflags: -I${includedir}

But I still didn't see the 64_ symbol suffix in the shared library using nm -D build64/lib/libopenblas_64.so. Is there anything I miss?

Unfortunately you are right, it looks like option passing to gensymbol got broken in cmake builds. Will try to find time to fix it this week...

#3999 should fix (most of) this - you were right about the untranslated "ON/OFF" ending up on the options list of gensymbol, but the CMAKE BOOL: expression you tried apparently does not work outside of conditionals.
Currently looking into an inconsistency in the handling of BUILD_LAPACK_DEPRECATED between gmake and CMAKE builds (and within the CMAKE build process as well, again potentially leading to non-suffixed symbols appearing in the library) ...

I was puzzled by the following for a bit. The CMake build contains the right symbols, but also the non-suffixed ones. And the latter ones are the ones that show up in the dynamic symbol table:
$ mkdir build && cd build
$ cmake .. -DINTERFACE64=1 -DSYMBOLSUFFIX=64_ -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON
$ cmake --build . -j

$ nm -gD lib/libopenblas_64.so | rg cblas_dgemm
00000000000d4dd0 T cblas_dgemm
00000000000d6a64 T cblas_dgemmt

$ readelf -s lib/libopenblas_64.so | rg cblas_dgemm
  4950:<PHONE_NUMBER>0d4dd0  1838 FUNC    GLOBAL DEFAULT   12 cblas_dgemm
  5369:<PHONE_NUMBER>0d6a64  3552 FUNC    GLOBAL DEFAULT   12 cblas_dgemmt
   839:<PHONE_NUMBER>000000     0 FILE    LOCAL  DEFAULT  ABS cblas_dgemm.c
   856:<PHONE_NUMBER>000000     0 FILE    LOCAL  DEFAULT  ABS cblas_dgemmt.c
  9462:<PHONE_NUMBER>0d6a64  3552 FUNC    GLOBAL DEFAULT   12 cblas_dgemmt64_
 15794:<PHONE_NUMBER>0d4dd0  1838 FUNC    GLOBAL DEFAULT   12 cblas_dgemm64_

The gmake build on the contrary looks as expected:
$ make INTERFACE64=1 SYMBOLSUFFIX=64
$ make install PREFIX=$PWD/tmp INTERFACE64=1 SYMBOLSUFFIX=64_

$ nm -gD tmp/lib/libopenblas64_.so | rg cblas_dgemm
00000000000b6350 T cblas_dgemm64_
00000000000b83e0 T cblas_dgemmt64_

$ readelf -s tmp/lib/libopenblas64_.so | rg cblas_dgemm
   540:<PHONE_NUMBER>0b83e0  2915 FUNC    GLOBAL DEFAULT   12 cblas_dgemmt64_
  2770:<PHONE_NUMBER>0b6350  1383 FUNC    GLOBAL DEFAULT   12 cblas_dgemm64_
 12639:<PHONE_NUMBER>0b83e0  2915 FUNC    GLOBAL DEFAULT   12 cblas_dgemmt64_
 15588:<PHONE_NUMBER>0b6350  1383 FUNC    GLOBAL DEFAULT   12 cblas_dgemm64_

This may trip up other people, so I thought I'd comment. I haven't yet figured out why the objcopy invocation that make does works while the one from cmake does not (to the same extent).
There's another reason the objcopy may fail: when LTO is enabled.

@rgommers I cannot reproduce your nm output locally, for me it only reports the suffixed versions as expected. The readelf output, however, looks similar to yours  - but I notice the second column, presumably the entry point/offset, shows the same value for suffixed and non-suffixed symbol. Maybe that is only some artifact of the ELF format (or readelf's presentation of it) that nm manages to suppress ?

Yeah it's odd, I don't think I've seen this before. The second column of the readelf output indeed shows that the 64_ ones and the non-suffixed ones are aliases. I read in a few places that objcopy --redefine-syms has trouble updating the dynamic symbol table, but it's all pretty obscure. What puzzles me most is why gmake/cmake don't align, because they're invoking the same objcopy executable with what looks like the same .def file.

AFAICT, the make version of the build system applies objcopy on the static library before it's linked into a shared library.
objcopy can edit everything in the static library just fine since it's not linked yet and the sections can be resized as much as it wants (and resize may be necessary when doing symbol remapping) but it can't do so for the the linked shared library.

Ref https://binutils.sourceware.narkive.com/OX0ugydt/objcopy-redefine-sym-on-dynsym-section

Ah, good catch, one of those elusive "the cmake build may not produce the same makefiles" cases then. :(
I wonder if this requires fixing though, as I believe recent consensus among implementers was to move to a single library that provides both LP64 and ILP64 symbols in the medium term anyway.

Yes, the following SYMBOLPREFIX tweak currently being used in CMake is not going to work:
  add_custom_command(TARGET ${fstfrMM_LIBNAME}_shared POST_BUILD
	COMMAND  ${PROJECT_SOURCE_DIR}/exports/gensymbol "objcopy" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" \"${SYMBOLPREFIX}\" \"${SYMBOLSUFFIX}\" "${BLD}" "${BBF16}" "${BS}" "${BD}" "${BC}" "${BZ}" > ${PROJECT_BINARY_DIR}/objcopy.def
    COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def $<TARGET_FILE:${fstfrMM_LIBNAME}_shared>
    COMMENT "renaming symbols"
    )

Although you may see that the symbols are properly renamed in the shared library, the linked will not find them, because objcopy renaming does not work with dynamic symbols.

Meh. So we need to force building the static library when the user wants symbol pre- or postfixing, apply the objcopy magic there and build the shared library from that just like in the gmake build. And then throw away the static library when the user did not want it ? (I get the feeling that it may have been done that way until someone came along with a big patch and a categorical "one simply does not build both kinds of libraries on CMAKE".)

There are still some aspects to investigate before implementing the final pipeline. I've just discovered that dynamic OpenBLAS is still in clash with a prefixed static OpenBLAS, if they both are linked to the same executable.
The symptom is when the prefixed function is called by the app, a subsequent call to cblas_dznrm2 is dynamically resolved to  0x0 and segfaults. Note cblas_dznrm2 is deleted from my prefixed OpenBLAS. Looks like it is still being attempted instead of calling the right one from the official OpenBLAS. Yes, I use DYNAMIC_ARCH. I've prefixed some more goto* symbols, but the problem persists, I'm puzzled.

@martin-frbg , I gave up my attempt to use the prefixed static library, it feels that it won't work anyway. But your idea above works very well for the shared library. FWIW, I'm attaching out of thee patch that might be useful:
From cb20722307964c475d2e591c5a3a38b76ec3ae86 Mon Sep 17 00:00:00 2001
From: Dmitry Mikushin<EMAIL_ADDRESS>Date: Thu, 8 Feb 2024 19:10:50 +0100
Subject: [PATCH] Changing the procedure of symbols decoration with
 SYMBOLPREFIX:

Since the objcopy cannot redefine dynamic symbols as pointed out in #3998,
the redefine command has to run eariler. This patch implements idea that
plays best with the CMake mechanics: first the static library is generated,
and then its symbols are redefined. In case the shared library is requested,
it is created from the static library with already redefined symbols. The
static library is linked to shared in WHOLE_ARCHIVE mode to embed all symbols.
The use of portable WHOLE_ARCHIVE idiom requires CMake 3.24 and can be
replaced with platform-specific non-portable flags if older versions of
CMake are desired.

Co-authored-by: Martin Kroeker<EMAIL_ADDRESS>---
 CMakeLists.txt | 242 +++++++++++++++++++++++++------------------------
 dummy.c        |   0
 2 files changed, 126 insertions(+), 116 deletions(-)
 create mode 100644 dummy.c

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 12bc2f18a..4854fce05 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,8 @@
 ## Author: Hank Anderson<EMAIL_ADDRESS> ##

-cmake_minimum_required(VERSION 3.5)
+# Note: "$<LINK_LIBRARY:WHOLE_ARCHIVE,tgt>" is a 3.24 feature
+cmake_minimum_required(VERSION 3.24 FATAL_ERROR)

 project(openblas C CXX ASM)

@@ -143,11 +144,117 @@ if(MSVC)
   set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${PROJECT_BINARY_DIR}/lib/Release)
 endif ()

-# get obj vars into format that add_library likes: $<TARGET_OBJS:objlib> (see http://www.cmake.org/cmake/help/v3.0/command/add_library.html)
+if (NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "")
+  if (NOT DEFINED ARCH)
+    set(ARCH_IN "x86_64")
+  else()
+    set(ARCH_IN ${ARCH})
+  endif()
+
+  if (${CORE} STREQUAL "generic")
+    set(ARCH_IN "GENERIC")
+  endif ()
+
+  if (NOT DEFINED EXPRECISION)
+    set(EXPRECISION_IN 0)
+  else()
+    set(EXPRECISION_IN ${EXPRECISION})
+  endif()
+
+  if (NOT DEFINED NO_CBLAS)
+    set(NO_CBLAS_IN 0)
+  else()
+    set(NO_CBLAS_IN ${NO_CBLAS})
+  endif()
+
+  if (NOT DEFINED NO_LAPACK)
+    set(NO_LAPACK_IN 0)
+  else()
+    set(NO_LAPACK_IN ${NO_LAPACK})
+  endif()
+
+  if (NOT DEFINED NO_LAPACKE)
+    set(NO_LAPACKE_IN 0)
+  else()
+    set(NO_LAPACKE_IN ${NO_LAPACKE})
+  endif()
+
+  if (NOT DEFINED NEED2UNDERSCORES)
+    set(NEED2UNDERSCORES_IN 0)
+  else()
+    set(NEED2UNDERSCORES_IN ${NEED2UNDERSCORES})
+  endif()
+
+  if (NOT DEFINED ONLY_CBLAS)
+    set(ONLY_CBLAS_IN 0)
+  else()
+    set(ONLY_CBLAS_IN ${ONLY_CBLAS})
+  endif()
+
+  if (NOT DEFINED BU)
+    set(BU _)
+  endif()
+
+  if (NOT ${SYMBOLPREFIX} STREQUAL "")
+    message(STATUS "adding prefix ${SYMBOLPREFIX} to names of exported symbols in ${openblas_LIBNAME}")
+  endif()
+  if (NOT ${SYMBOLSUFFIX} STREQUAL "")
+    message(STATUS "adding suffix ${SYMBOLSUFFIX} to names of exported symbols in ${openblas_LIBNAME}")
+  endif()
+
+  if (${BUILD_LAPACK_DEPRECATED})
+	  set (BLD 1)
+  else ()
+	  set (BLD 0)
+  endif()
+  if (${BUILD_BFLOAT16})
+	  set (BBF16 1)
+  else ()
+	  set (BBF16 0)
+  endif()
+  if (${BUILD_SINGLE})
+	  set (BS 1)
+  else ()
+	  set (BS 0)
+  endif()
+  if (${BUILD_DOUBLE})
+	  set (BD 1)
+  else ()
+	  set (BD 0)
+  endif()
+  if (${BUILD_COMPLEX})
+	  set (BC 1)
+  else ()
+	  set (BC 0)
+  endif()
+  if (${BUILD_COMPLEX16})
+	  set (BZ 1)
+  else ()
+	  set (BZ 0)
+  endif()
+  if (NOT USE_PERL)
+  add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/objcopy.def
+	COMMAND ${PROJECT_SOURCE_DIR}/exports/gensymbol "objcopy" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" \"${SYMBOLPREFIX}\" \"${SYMBOLSUFFIX}\" "${BLD}" "${BBF16}" "${BS}" "${BD}" "${BC}" "${BZ}" > ${PROJECT_BINARY_DIR}/objcopy.def
+    COMMENT "Building renaming symbols table"
+    DEPENDS ${PROJECT_SOURCE_DIR}/exports/gensymbol
+    )
+  else()
+  add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/objcopy.def
+    COMMAND perl ${PROJECT_SOURCE_DIR}/exports/gensymbol.pl "objcopy" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" \"${SYMBOLPREFIX}\" \"${SYMBOLSUFFIX}\" "${BLD}" "${BBF16}" "${BS}" "${BD}" "${BC}" "${BZ}" > ${PROJECT_BINARY_DIR}/objcopy.def
+    COMMENT "Building renaming symbols table"
+    DEPENDS ${PROJECT_SOURCE_DIR}/exports/gensymbol.pl
+    )
+  endif()
+endif()
+
 set(TARGET_OBJS "")
 foreach (SUBDIR ${SUBDIRS})
   add_subdirectory(${SUBDIR})
+
+  # Get obj vars into format that add_library likes: $<TARGET_OBJS:objlib>
+  # (see http://www.cmake.org/cmake/help/v3.0/command/add_library.html)
   string(REPLACE "/" "_" subdir_obj ${SUBDIR})
+
   list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:${subdir_obj}>")
 endforeach ()

@@ -173,17 +280,28 @@ set(openblas_LIBS "")
 if(BUILD_STATIC_LIBS)
   add_library(${openblas_LIBNAME}_static STATIC ${TARGET_OBJS} ${openblas_DEF_FILE})
   target_include_directories(${openblas_LIBNAME}_static INTERFACE $<INSTALL_INTERFACE:include/openblas${SUFFIX64}>)
+
+  # Decorate symbols with prefix for the static library.
+  if (NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "")
+    add_custom_command(TARGET ${openblas_LIBNAME}_static POST_BUILD
+      COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def $<TARGET_FILE:${openblas_LIBNAME}_static>
+      COMMENT "Running objcopy on ${openblas_LIBNAME}_static"
+      DEPENDS ${PROJECT_BINARY_DIR}/objcopy.def)
+  endif()
+
   list(APPEND openblas_LIBS ${openblas_LIBNAME}_static)
 endif()
 if(BUILD_SHARED_LIBS)
-  add_library(${openblas_LIBNAME}_shared SHARED ${TARGET_OBJS} ${openblas_DEF_FILE})
+  add_library(${openblas_LIBNAME}_shared SHARED "dummy.c" ${openblas_DEF_FILE})
   target_include_directories(${openblas_LIBNAME}_shared INTERFACE $<INSTALL_INTERFACE:include/openblas${SUFFIX64}>)
+  target_link_libraries(${openblas_LIBNAME}_shared PRIVATE $<LINK_LIBRARY:WHOLE_ARCHIVE,${openblas_LIBNAME}_static>)
   list(APPEND openblas_LIBS ${openblas_LIBNAME}_shared)
 endif()
 if(BUILD_STATIC_LIBS)
-  add_library(${openblas_LIBNAME}::${openblas_LIBNAME} ALIAS ${openblas_LIBNAME}_static)
-else()
-  add_library(${openblas_LIBNAME}::${openblas_LIBNAME} ALIAS ${openblas_LIBNAME}_shared)
+  add_library(${openblas_LIBNAME}::static ALIAS ${openblas_LIBNAME}_static)
+endif()
+if(BUILD_SHARED_LIBS)
+  add_library(${openblas_LIBNAME}::shared ALIAS ${openblas_LIBNAME}_shared)
 endif()

 set_target_properties(${openblas_LIBS} PROPERTIES OUTPUT_NAME ${openblas_LIBNAME})
@@ -194,7 +312,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "AIX|Android|Linux|FreeBSD|OpenBSD|NetBSD|Drago
     target_link_libraries(${openblas_LIBNAME}_static m)
   endif()
   if(BUILD_SHARED_LIBS)
-    target_link_libraries(${openblas_LIBNAME}_shared m)
+    target_link_libraries(${openblas_LIBNAME}_shared PUBLIC m)
   endif()
 endif()

@@ -254,111 +372,6 @@ set_target_properties(${openblas_LIBS} PROPERTIES
   SOVERSION ${openblas_MAJOR_VERSION}
 )

-if (BUILD_STATIC_LIBS AND NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "")
-  if (NOT DEFINED ARCH)
-    set(ARCH_IN "x86_64")
-  else()
-    set(ARCH_IN ${ARCH})
-  endif()
-
-  if (${CORE} STREQUAL "generic")
-    set(ARCH_IN "GENERIC")
-  endif ()
-
-  if (NOT DEFINED EXPRECISION)
-    set(EXPRECISION_IN 0)
-  else()
-    set(EXPRECISION_IN ${EXPRECISION})
-  endif()
-
-  if (NOT DEFINED NO_CBLAS)
-    set(NO_CBLAS_IN 0)
-  else()
-    set(NO_CBLAS_IN ${NO_CBLAS})
-  endif()
-
-  if (NOT DEFINED NO_LAPACK)
-    set(NO_LAPACK_IN 0)
-  else()
-    set(NO_LAPACK_IN ${NO_LAPACK})
-  endif()
-
-  if (NOT DEFINED NO_LAPACKE)
-    set(NO_LAPACKE_IN 0)
-  else()
-    set(NO_LAPACKE_IN ${NO_LAPACKE})
-  endif()
-
-  if (NOT DEFINED NEED2UNDERSCORES)
-    set(NEED2UNDERSCORES_IN 0)
-  else()
-    set(NEED2UNDERSCORES_IN ${NEED2UNDERSCORES})
-  endif()
-
-  if (NOT DEFINED ONLY_CBLAS)
-    set(ONLY_CBLAS_IN 0)
-  else()
-    set(ONLY_CBLAS_IN ${ONLY_CBLAS})
-  endif()
-
-  if (NOT DEFINED BU)
-    set(BU _)
-  endif()
-
-  if (NOT ${SYMBOLPREFIX} STREQUAL "")
-    message(STATUS "adding prefix ${SYMBOLPREFIX} to names of exported symbols in ${openblas_LIBNAME}")
-  endif()
-  if (NOT ${SYMBOLSUFFIX} STREQUAL "")
-    message(STATUS "adding suffix ${SYMBOLSUFFIX} to names of exported symbols in ${openblas_LIBNAME}")
-  endif()
-
-  if (${BUILD_LAPACK_DEPRECATED})
-	  set (BLD 1)
-  else ()
-	  set (BLD 0)
-  endif()
-  if (${BUILD_BFLOAT16})
-	  set (BBF16 1)
-  else ()
-	  set (BBF16 0)
-  endif()
-  if (${BUILD_SINGLE})
-	  set (BS 1)
-  else ()
-	  set (BS 0)
-  endif()
-  if (${BUILD_DOUBLE})
-	  set (BD 1)
-  else ()
-	  set (BD 0)
-  endif()
-  if (${BUILD_COMPLEX})
-	  set (BC 1)
-  else ()
-	  set (BC 0)
-  endif()
-  if (${BUILD_COMPLEX16})
-	  set (BZ 1)
-  else ()
-	  set (BZ 0)
-  endif()
-  if (NOT USE_PERL)
-  add_custom_command(TARGET ${openblas_LIBNAME}_static POST_BUILD
-	COMMAND ${PROJECT_SOURCE_DIR}/exports/gensymbol "objcopy" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" \"${SYMBOLPREFIX}\" \"${SYMBOLSUFFIX}\" "${BLD}" "${BBF16}" "${BS}" "${BD}" "${BC}" "${BZ}" > ${PROJECT_BINARY_DIR}/objcopy.def
-    COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def $<TARGET_FILE:${openblas_LIBNAME}_static>
-    COMMENT "renaming symbols"
-    DEPENDS ${PROJECT_SOURCE_DIR}/exports/gensymbol
-    )
-  else()
-  add_custom_command(TARGET ${openblas_LIBNAME}_static POST_BUILD
-    COMMAND perl ${PROJECT_SOURCE_DIR}/exports/gensymbol.pl "objcopy" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" \"${SYMBOLPREFIX}\" \"${SYMBOLSUFFIX}\" "${BLD}" "${BBF16}" "${BS}" "${BD}" "${BC}" "${BZ}" > ${PROJECT_BINARY_DIR}/objcopy.def
-    COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def $<TARGET_FILE:${openblas_LIBNAME}_static>
-    COMMENT "renaming symbols"
-    DEPENDS ${PROJECT_SOURCE_DIR}/exports/gensymbol.pl
-    )
-  endif()
-endif()
-

 # Benchmarking BLAS Level 3
@@ -377,14 +390,11 @@ endif()

 # Install libraries
 if(BUILD_SHARED_LIBS AND BUILD_STATIC_LIBS)
-  install(TARGETS ${openblas_LIBNAME}_shared
+  install(TARGETS ${openblas_LIBNAME}_shared ${openblas_LIBNAME}_static
     EXPORT "openblas${SUFFIX64}Targets"
     RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
     ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
     LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} )
-  install(TARGETS ${openblas_LIBNAME}_static
-    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} )
 else()
   install(TARGETS ${openblas_LIBS}
     EXPORT "openblas${SUFFIX64}Targets"
diff --git a/dummy.c b/dummy.c
new file mode 100644
index 000000000..e69de29bb
--
2.34.1

JFYI, with SYMBOLPREFIX applied, shared OpenBLAS still clashes with another OpenBLAS via utility functions, such as zgemm_oncopy_HASWELL. This function belong to tiling/threading/dispatching infrastructure, and all of them are completely undecorated.
I had to decorate all of them:
    add_custom_command(TARGET ${openblas_LIBNAME}_static POST_BUILD
	  COMMAND nm -j --defined-only $<TARGET_FILE:${openblas_LIBNAME}_static> | sort | uniq | awk '{print $$0 \" openblas_\"$$0}' > ${PROJECT_BINARY_DIR}/objcopy.def
      COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def $<TARGET_FILE:${openblas_LIBNAME}_static>
      COMMENT "Running objcopy on ${openblas_LIBNAME}_static")

This method has finally put the mess to end. Note I'm using UNIX utils good for Linux/BSD only.

I had started to decorate them too but then the question came up if going for visibility "hidden" would be a better choice. Need to resume that work


SPARK-12925. Improve HiveInspectors.unwrap for StringObjectInspector.…

Earlier fix did not copy the bytes and it is possible for higher level to reuse Text object. This was causing issues. Proposed fix now copies the bytes from Text. This still avoids the expensive encoding/decoding

Can one of the admins verify this patch?

@rajeshbalamohan in the future can you use the pull request template?

Thanks @srowen . Incorporated the changes.
This was tested with HiveCompatibilitySuite, HiveQuerySuite. These tests ran fine in master branch without the changes as well. However, when tried with 1.6 branch, these test suites failed with the copy issues. Hence doing explicit bytes copy in master, so that this does not fail in future.

@rajeshbalamohan you're saying this fixes a problem in 1.6 only? Looks OK to me.

Jenkins test this please

Test build #52459 has started for PR 11477 at commit b810955.

Test build #52459 has finished for PR 11477 at commit b810955.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

LGTM

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/52459/
Test PASSed.

Merged build finished. Test PASSed.

Merged to master, since this fixes https://github.com/apache/spark/pull/10848 also merged only to master. If there's some other issue with 1.6 we should talk about it separately


Update weaver-cats, weaver-scalacheck to 0.7.0

Updates

com.disneystreaming:weaver-cats
com.disneystreaming:weaver-scalacheck

from 0.6.0 to 0.7.0.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Files still referring to the old version number
The following files still refer to the old version number (0.6.0).
You might want to review and update them manually.
project/plugins.sbt

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.disneystreaming" } ]

labels: library-update, semver-minor, old-version-remains

This is for CE3


Linux support

Implements Linux support using GTK. So far it supports everything expect window alignment. BDW_CUSTOM_FRAME isn't respected by the native plugin code since the window frame has to be initialized before any plugins are loaded.
Change list:

[x] GTK ffi definitions
[x] Linux platform library
[x] Window start drag
[x] Window set position
[x] Window resize
[x] Window controls
[ ] Window alignment
[ ] Window state query/set (partial, always responds as ready)

Window drag has a small bug where the next mouse event will get ignored after dragging the window, this is a known bug being tracked in this issue https://github.com/flutter/flutter/issues/74939

Thank you! I will take a look.


Bug: Danbooru wont load

Type
Booru parser issues
Bug description
It just show blank screen, already using dns, when i try open via cdn / original files it open normally
Steps to reproduce
Just danbooru that occurs error, another site like gelbooru and konachan works normally
Android version
13
App version
4.1.2
Screenshots or videos

Solution
No response
Additional context
No response
Acknowledgements

[X] I have searched the existing issues and this is a new and no duplicate or related to another open issue.
[X] I have written a short but informative title.
[X] I filled out all of the requested information in this issue properly.

The same here. Danbooru probably blocked access to API requests, as another image scraping app also give me the same error. 🥲


The column-view gets started by the same parent-view as the content-edit

The column-view of the content-bundle has the same parent-view (content/main.js) as the content-edit, although the column-view needs barely any code of content/main.js.
// list all contents for a language
sandbox.mvc.routes.push({
    route: 'content/contents/:webspace/:language',
    callback: function(webspace, language) {
        return '<div data-aura-component="content@sulucontent" data-aura-webspace="' + webspace + '" data-aura-language="' + language + '" data-aura-display="column" data-aura-preview="false"/>';
    }
});

At the moment the main responsibilities of content/main.js are to start the header and the preview, both for the content-edit. Loading data is currently the only functionality which gets used by the column-view as well as the content-edit and is implemented in content/main.js. However loading necessary data would in my opinion better be implemented in an own requre-js-component.

The content-bundle would profit a lot from the new front-end architecture as implemented in the media-bundle and the contact-bundle.

With the latest refactoring I don't believe that we do anything about that.


CalendarTileSkin month and year title does not fit properly

Hi! It looks like CalendarTileSkin month and year title does not fit properly in the Tile. It also can be found on the main overview image: https://raw.githubusercontent.com/HanSolo/tilesfx/master/TilesFX.png

TilesFX version: 11.32

Interesting effect because it doesn't happen if you put it in a StackPane. I can also see it happening in the demo. Will take a closer look.

Found the problem and fixed it with commit: e266c6f2c270cee01d14165a3d729a2cf79a46a4


Issues using Filter Box when a comma is in the value

The same error also happens in flt_eq_1: field

https://github.com/airbnb/caravel/blob/master/caravel/models.py#L837

@vera-liu Is this a new patch or some existing codes?
cc: @Patrick1860

Sorry for the spam before, I proposed a solution by requiring values with comma to be wrapped in single quote. For instance, values of "A, B, 'Tahoe, CA', D" will be treated as ['A', 'B', 'Tahoe, CA', 'D'] after this fix
PR here:
https://github.com/airbnb/caravel/pull/1084

Thank you! This PR LGTM.

Closing as fixed in #1084


[GEN] Use cache control attribute for 2D block read OCL lowering

@whitneywhtsang Can you provide some additional details on this task please?
Should it apply in the experimental path or on the fallback path?
Does the 2D block read already use cache control or should this be added from scratch?

Update: Testing with latest IGC locally. Cache controls are being lost at some point. Looking into it.

Update: Testing with latest IGC locally. Cache controls are being lost at some point. Looking into it. Looks like this is not our problem, but a bug (probably in the translator).

Potentially fixed by https://github.com/KhronosGroup/SPIRV-LLVM-Translator/pull/2599.

Above PR not merged yet. Tests run with local build of the translator passed.


Optimize work with JNI

Hold JNIEnv produced by AttachCurrentThread in thread local storage
Cache FindClass, GetFieldId etc in thread local storage or may be in lazy_static ?

Hold JNIEnv produced by AttachCurrentThread in thread local storage

This need benchmarks, so not going to implement

Cache FindClass, GetFieldId etc in thread local storage or may be in lazy_static ?

This required to call callback from threads created by Rust, so it is not only optimization,
but also required for correct functionality.


Add Linux AArch64 wheel build support

Added linux aarch64 wheel build support.
Related to https://github.com/osqp/qdldl-python/issues/17, @bstellato Could you please review this PR?

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

+1

+1

Until this is merged, here's how I generate wheels locally:
Save the following as build-qdldl-wheel.sh in an empty folder
#!/bin/bash
# Builds a wheel for qdldl
set -eu  # Stop script if a line fails
QDLDL_VERSION=${1}
echo "Building qdldl==$QDLDL_VERSION"

# numpy is in "install_requires" of qdldl - perhaps we don't need to install oldest-supported-numpy that is typically
# recommended for build requirements. https://numpy.org/devdocs/dev/depending_on_numpy.html#build-time-dependency
# However we install it here to be conservative, instead of just relying on the latest version.
python3 -m pip install oldest-supported-numpy

git clone --recurse-submodules https://github.com/osqp/qdldl-python --depth=1 --branch v$QDLDL_VERSION
pushd qdldl-python
mkdir dist
# Using constraints.txt might not be necessary if the package specifies build requirements correctly
# However, I prefer to be conservative here and end up with loud errors, rather than generate packages
# that have compatibility issues.
python3 -m pip freeze > constraints.txt
python3 -m pip wheel --constraint constraints.txt --wheel-dir=./dist .
for wheel in dist/qdldl*; do
    auditwheel repair $wheel  # Inject solver's shared libraries to wheel
done
for wheel in wheelhouse/*.whl; do
    cp -rf $wheel /wheels/ # Copy repaired wheel to shared volume
done
popd

popd

and then run from within that folder:
export PYTHON_BIN=/opt/python/cp311-cp311/bin/python
export QDLDL_VERSION=0.1.5.post3
docker run -v $(pwd):/wheels --rm --platform=linux/aarch64 quay.io/pypa/manylinux_2_28_aarch64 /bin/bash -c "\
    ln -s ${PYTHON_BIN} /bin/python3 && \
    bash /wheels/build-qdldl-wheel.sh ${QDLDL_VERSION}"

The generated wheel should appear in the folder the above command was executed from.

aarch64 linux wheels are now available on PyPi after the recent refactor of the CI pipelines.


[BUG] Clear button disappears after one use

After clearing the output of any given code block, the clear button does not appear on any subsequent runs of that same code block.

Its funny that I never noticed that.


Add HasCreator and HasUpdater traits.

Add HasCreator and HasUpdater traits for models.

Issue #48 & #49


Hi Mike,  I have just found that REAMDE does not match with setup.sh on checking version

Hi Mike,
I have just found that REAMDE does not match with setup.sh with checking version
README
YAY: docker version 1.12.0
YAY: docker-compose version 1.8.0

Code
check_version docker 1.11.0
check_version docker-compose 1.7.0

Thanks. Yeah, that's intentional - the setup script will ensure that you have at least 1.11 & 1.7 installed, but outputs the versions that are actually installed.


Sync Resource collection after storage registration

What this PR does / why we need it:
Sync reosurce collection of the storage after succesfull registration of the storage.
Which issue this PR fixes
NA
Special notes for your reviewer:
If sync resouce result in exception, the registation would not fail, but just log the error in log.

Release note:

Codecov Report

Merging #77 into master will decrease coverage by 0.64%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master      #77      +/-   ##
==========================================
- Coverage   30.06%   29.41%   -0.65%
==========================================
  Files          59       59
  Lines        3742     3695      -47
  Branches      414      414
==========================================
- Hits         1125     1087      -38
+ Misses       2600     2591       -9
  Partials       17       17

Impacted Files
Coverage Δ

dolphin/api/v1/storages.py
38.65% <0.00%> (-3.72%)
:arrow_down:

dolphin/drivers/driver.py
56.52% <0.00%> (-11.23%)
:arrow_down:

dolphin/wsgi/common.py
53.57% <0.00%> (-4.50%)
:arrow_down:

dolphin/api/validation/validators.py
21.60% <0.00%> (-2.44%)
:arrow_down:

dolphin/api/validation/__init__.py
72.72% <0.00%> (-2.28%)
:arrow_down:

dolphin/api/common/wsgi.py
22.60% <0.00%> (-1.09%)
:arrow_down:

dolphin/api/common/__init__.py
28.35% <0.00%> (-1.06%)
:arrow_down:

dolphin/db/sqlalchemy/api.py
22.22% <0.00%> (-0.95%)
:arrow_down:

dolphin/context.py
57.14% <0.00%> (-0.86%)
:arrow_down:

... and 10 more

LGTM

LGTM


Don't allow tasks on datasets with missing target values

Datasets can have missing target values. It should not be possible to define a supervised task on them.

Found a problematic task: 3551 (dataset 460)


Make Dapr logging less actor verbose

When starting a basic Dapr app, there is a lot of noise about actors in the log that potentially could scare the user, whether user is using actors or not. Allow me to illustrate with some way to sarcastic narration ;)
There is the "hey, I'm not sure if you wanted to do anything with actors, but just in case, you got none configured... well, it could that you have more than one configured so we really don't know"
== DAPR == time="2020-08-25T14:41:27.299466-07:00" level=warning msg="either no actor state store or multiple actor state stores are specified in the configuration, actor stores specified: 0" app_id=tweet-provider instance=DE-Z2569.europe.corp.microsoft.com scope=dapr.runtime type=log ver=0.10.0

There is also the "By now, I know you didn't want to use actors... still, FYI, if you were to use actors you MUST have actor compatible state store"
== DAPR == time="2020-08-25T14:41:27.303267-07:00" level=warning msg="actors: state store must be present to initialize the actor runtime" app_id=tweet-provider instance=DE-Z2569.europe.corp.microsoft.com scope=dapr.runtime.actor type=log ver=0.10.0

And finally my fave one... "At this point I do know you are not using actors, but OMG, surprise, I couldn't initialize them. Here is a link to read up about that thing you don't use"
== DAPR == time="2020-08-25T14:41:27.303296-07:00" level=warning msg="failed to init actors: state store does not support transactions which actors require to save state - please see https://github.com/dapr/docs" app_id=tweet-provider instance=DE-Z2569.europe.corp.microsoft.com scope=dapr.runtime type=log ver=0.10.0

All for making the logging less verbose where needed. we know if actors are hosted in the runtime and can potentially skip those checks.

This verbose logging appears to be related to state store validation in actors.go
Looks like we warn on nil state store but the following line casts it to state.TransactionalStore
func (a *actorsRuntime) Init() error {
	if a.config.PlacementServiceAddress == "" {
		return errors.New("actors: couldn't connect to placement service: address is empty")
	}
	if a.store == nil {
		log.Warn("actors: state store must be present to initialize the actor runtime")
	}

	_, ok := a.store.(state.TransactionalStore)
	if !ok {
		return errors.New(incompatibleStateStore)
	}


Scale contributions to original scale and allow custom colors

Builds upon https://github.com/pymc-labs/pymc-marketing/pull/247

[x] Scale contributions to the original scale.
[x] Allows custom colors.

:books: Documentation preview :books:: https://pymc-marketing--251.org.readthedocs.build/en/251/

What do you think @Garve ? :)

Heya! Should we also introduce a flag for the original scale? Like in the other plot method.


Build 17760 blog link was incorrect

The link for build 17760 was going to the blog post for 17758. I updated it with the correct link.


Adding an Online Meeting and Chatting Website

I want to add an online meeting and chatting website . @GeekNerds Please assign this issue to me under Hacktoberfest2022

can you please assign this to be for hacktoberfest2022


We should run restic check periodically

This would ensure that the backups are always ready for restore.

Done with #66


Error "must be no more than 63 characters"

I'm getting the following error when I try to have my Terraform run:
error saving plan secret: rpc error: code = Unknown desc = error recording plan status: Secret "tfplan-default-testing" is invalid: metadata.labels: Invalid value: "plan-1a4dc9d874988bb51646864196d008f40816bb94c8ca54d3426c0c183f262702": must be no more than 63 characters

The Terraform script is very simple, just 1 output, for testing purposes:
output "testing" {
  value = "Hello World"
}

Thank you for reporting this, Luke.
Definitely a bug.
Is this something from other kind of sources?

@chanwit the source that is holding the terraform script shares a few other flux resources but also has 8 helm charts.

This is due to the Kubernetes character limit for labels:

Valid label value:

must be 63 characters or less (can be empty)

Reference: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/

FWIW
As per RFC1123:

The DNS defines domain name syntax very generally -- a string of labels each containing up to 63 8-bit octets, separated by dots, and with a maximum total of 255 octets.
Host software MUST handle host names of up to 63 characters and SHOULD handle host names of up to 255 characters.

Related: What is the maximum length of a DNS name?
Kubernetes PR adding RFC952 (which is updated by RFC1123(https://datatracker.ietf.org/doc/html/rfc952) validation to labels.
Is It DNS?

plan-${revision} is used as a guard rail to double check that we pick the right plan to process.
It could be possible to move it to annotations instead of labels.


add go runtime version to --version output

With the issues seen with go1.5 and goiardi, it may make sense to include the go runtime version in the --version output.
Apologies for the import craziness, my editor runs goimports and it moves external deps to the bottom.

You read my mind. I was just thinking about this today.

No problem with the import craziness, I'll be running go fmt soon enough.

:+1: cheers!


added a new method for tag_to_span

Helper method to perform tag labeling to span labeling (opposite of span_to_tag for cases where models return tags but we want to calculate span based metrics.

/azp run


Suggestion: Show stacks combined in modular storage

When using modular storage, instead of showing each item stack separately, perhaps combine them into a larger number?

Done in 1.10.2


Dedicated server memory commit

Dedicated server reserves huge amount of memory.

when hitting 100% of commit Windows triggers memory exhaustion and kills processes.
Workaround: extend pagefile (to increase commit max size)

will be fixed by PG8192's DLL stubs


Calculating the cost of a computation

It would be useful to provide numbers for actual resources used after a computation is complete so its cost can be calculated.
We probably need:

total worker seconds
total storage

We can calculate 1 from the events dataframe created by HistoryCallback, since we know how long each task ran for.
For 2, we can measure the storage used by all the intermediate Zarr arrays in the working directory. This doesn't have a time component, but in computing the cost we could assume that all intermediate storage is deleted at the end of the computation (say).
cc @TomNicholas

See my email to you just now!


Off-page indicator for all SO display names

Currently the off page indicator is shown for Asker & Answerer when account is from Stack Overflow. This icon should be shown for all display names, including for Commenters from Stack Overflow.

Correct, the off-page indicator should also be used in comments as appropriate. This is actually specified in the wireframes, but this case was not demonstrated in Stephen's mockups. Please add this (with appropriate sizing for the icon) to comments. (I will add a clarifying comment to the wireframes just to be extra-clear.)

Off page indicator is present on QnA list page , QnA details page , comments . Verified .


moment(year)

Why I get different values on different timezones ?
moment('2015')

Thu Jan 01 2015 08:00:00 GMT+0800 (CST)
Wed Dec 31 2014 19:00:00 GMT-0500 (CST)

You also should be getting a deprecation error pointing at #1407 that explains the problem.
Essentially, if you supply a string that is not one of the supported ISO8601 formats, it will fall back to the Date constructor.   You can see from calling new Date('2015') that you get similar results - because browsers will interpret that as 2015-01-01 UTC.
You should provide either a full ISO string:
moment("2015-01-01")

Or, you should pass a format specifier:
moment("2015","yyyy")


How does quality convert to image size

Image size is dynamic, how to convert this?
If I want to limit one image to 105kb, then what is quality?(10,20 or...?)
CameraOptions = {
quality: ??,
targetHeight: 500,
targetWidth: 500,
destinationType: this.camera.DestinationType.DATA_URL,
sourceType: srcType,
allowEdit: false,
correctOrientation: true,
encodingType: this.camera.EncodingType.JPEG,
saveToPhotoAlbum: false,
mediaType: this.camera.MediaType.PICTURE,
cameraDirection: 0,
}
because I only receive image size.
can anyone help to answer me this?

Image size is dynamic, how to convert this?

Image size is always dynamic, it is impossible to get a specific size for an image. The size of the image depends on several factors including the resolution of the image, the quality of the image, and the nature of the capture image. An image that consists of straight lines and solid colors compresses easier than an image that contains complex shapes/lines and several colours. These all affect the resulting size of the image.
The quality option specifically is the inverse of the compression rate -- that is 0 means high compression (to reduce the file size at the lost of quality, ie the image will become "patchy"), and a value of 100 basically means no compression.

this.camera.DestinationType.DATA_URL

Another note on sizes, DATA_URL means the image is represented in base64 encoded string. Binary data represented in base64 encoded string will be about 40% larger than the original binary in it's raw form. If you're concerned about image size, you may want to use FILE_URI instead.

@breautek  I am still confused, I need your further assistanc, I think.


:rocket: 8.6.1

Download release artifacts here
Steps for Publish:
When ready to publish, trigger Publish workflow with these variables:

Release version (version): 8.6.1

Alternatively, you can trigger the workflow from Github CLI:
gh workflow run release-publish.yml -f version=8.6.1 --repo Kong/insomnia

Conflicts? Merge branch step failed on the publish workflow? Try this...
Run locally:
# Make sure git remote is Kong/insomnia...

git checkout develop
git merge --no-ff release/<replaced with version>

# Solve merge conflicts ...
# If there's package-lock conflicts, run `npm install` and commit the package-lock changes

git push

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.4 out of 5 committers have signed the CLA.:white_check_mark: jackkav:white_check_mark: gatzjames:white_check_mark: JeroenVdb:white_check_mark: filfreire:x: insomnia-infraYou have signed the CLA already but the status is still pending? Let us recheck it.


Mu Online

Module Request
Game Information:

-Mu Online
-Server files are everywhere on the internet , forums dedicated to it.
-I think it only works with windows, never succeeded with linux and wine.
-dont know :))
Put your game information here
I confirm:

[x] that I have searched for an existing module request for this application.
[x] that the server is an official server distributed by the games publishers/developers.
[x] that the server is available to the general public.
[x] that the server can be run headless (without a GUI).

You've not provided any links or any information about the game. Just saying its on the internet isn't helpful ;)

Its an online mmo rpg very old one, it is still being updated today.
There are many private servers, i also had servers for a long time.
People have preferences according to different versions of the game.
If u want information then write more questions LOL. (i followed the guide of posting this)
ill give a link with a forum or something, the internet is literally very full with it...
http://forum.ragezone.com/f197/release-compiled-igcn-season-9-a-1126961/
thats an example.
here is the category of that forum
http://forum.ragezone.com/f197/?s=6adc59793d9571b63ab81633db1bca8b
or here is google search "mu online server files"
https://www.google.com/search?q=mu+online+server+files&oq=mu+online+ser&aqs=chrome.0.69i59j0j69i57j0l3.2214j0j7&sourceid=chrome&ie=UTF-8
or here is a favourite site of mine where i can find a lot of stuff for it:
https://seeitworks.com/

The more information you provide, would likely have a higher probability of the module being created.
If its too much of an effort to manually track down all the information themselves, they will likely skip over this one and work on another module which does provide all the neccesary information, files etc. in the issue description.

Due to inactivity and lack of information, this issue is being closed.


feat(examples): add demo2 example

This is example is aimed at creating a github social preview image and
eventually replacing the current main demo.

Previous versions of the demo
https://github.com/ratatui-org/ratatui/assets/381361/8255624d-9237-44da-8655-a489aaf5e1e5

Gifs only support 256 colors, so the actual colors are a bit better than what is shown. Here's a WebM instead:
demo2.webm

Current state:

Current state (in the middle of rejigging it based on the ideas - so just tab1 and 3 are updated right now):
https://github.com/ratatui-org/ratatui/assets/381361/8f17fa97-aa8f-45f6-8930-9944f26b5208

Feedback incorporated in https://github.com/ratatui-org/ratatui/pull/500/commits/d8b3f47cf406cdec0c4b25f84f60a50f5ace6eb5

Updated the readme and lib.rs and the social preview.

Ping @sayanarijit @mindoodoo for review.

Just updated the actual preview image (lots of work went into making the last tab nicer bouncing ideas off @kdheepak the other day. Aiming for a bit more of a modern feel rather than just pure boxes and colored text. I particularly was fond of the way the scrollbars turned out.
There's probably some rough edges in this that are not production grade, so I'd suggest we keep the old demo around as well. This is a "What's possible" type demo that hopefully inspires some more awesome looking Ratatui Apps.

Pinging @nawok for thoughts on the logo in this

Looks nice. I don't know how this is implemented (manually painted pixels or the programmatically downscaled bitmap), but I think it would look cleaner with some pixels added or moved:

Required a rebase to fixup against the barchart fix. So I squashed it all.

Rebase broke things - undid that. Will fix this up tomorrow.

Looks nice. I don't know how this is implemented (manually painted pixels or a programmatically downscaled bitmap), but I think it would look cleaner with some pixels added or moved:

I wrote up a much longer reply to this, but accidentally closed the tab without sending.
Thanks for the feedback - I made the suggested changes.
The process was all pretty manual (pixel editing in gimp -> c header export -> regex -> rust array -> manual tweaks -> adding the eye animation). More effort than was really required to make a demo, but I think the payoff was worth it.

GIF

Social GIF


⚠ Bofrost.de has degraded performance

In 64664e5, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1320 ms

Resolved: Bofrost.de performance has improved in b3e2479 after 6 minutes.


Pausing/Resuming partitions causes lots of errors

Hi,
I have noticed a problem with pausing and resuming of partitions that is causing lots of errors. When I stopped doing the pause/resume, the errors went away. Here is a screenshot of the Franz prometheus metrics when the application was actively pausing and resuming partitions:

Here is a screenshot after commenting out the pause/resume keeping everything else the same:

Here is a sample summary of errors during a 5 minute period from a pod:
 [
   {
    "msg": "read Fetch v6",
    "err": "context canceled",
    "count": 827
  },
  {
    "msg": "unable to open connection to broker",
    "err": "context canceled",
    "count": 117
  },
  {
    "msg": "wrote Fetch v6",
    "err": "context canceled",
    "count": 4
  },
  {
    "msg": "wrote Fetch v6",
    "err": "use of closed network connection",
    "count": 18
  },
  {
    "msg": "wrote Fetch v6",
    "err": "write tcp <IP_ADDRESS>:35770->xx.xx.147.1:9093: use of closed network connection",
    "count": 1
  },
  {
    "msg": "wrote Fetch v6",
    "err": "write tcp <IP_ADDRESS>:45126->xx.xx.147.1:9093: use of closed network connection",
    "count": 1
  },
  {
    "msg": "wrote Fetch v6",
    "err": "write tcp <IP_ADDRESS>:54114->xx.xx.147.1:9093: use of closed network connection",
    "count": 1
  }
]

So we discussed in discord, and the reason this occurs is because the client takes a simplistic way to ensure partitions are not returned after they are paused (solving your original issue #489). To eliminate the chance that any in flight fetch request could be returning data for paused partitions, the client cuts all active fetch requests at the end of every pause.
An alternative approach than what's done in c3b083b253849a0d6e26d2a36abddb43f5133584 would be to let these fetches return and strip the data after. An easyish way to do this would be, whenever we receive a fetch response, if we have paused partitions while processing the response, drop any response for paused partitions. This may not be too difficult.
An advanced approach would be to go further and try to do intelligence on what is inflight -- so that you are not waiting for a fetch response for data entirely for paused partitions. This is too complicated.

I think https://github.com/twmb/franz-go/pull/601 solves this

I think what you have done makes sense. That is a better way to handle it. Thanks for turning it around quickly.


proto3 json_name option does not update json field names

When I specify the json_name option, I would expect that the generated code would use the name specified in the json tag, but it doesn't.
For example:
syntax = "proto3";

package exampletest;

message SomeMessage {
        string some_field  = 1 [json_name="SomeField"];
}

produces
type SomeMessage struct {
        SomeField string `protobuf:"bytes,1,opt,name=some_field,json=SomeField" json:"some_field,omitempty"`
}

So the JSON name ("SomeField") is honoured in the protobuf tag, but not the json tag.
I am aware of issue #183, where there is some discussion as to whether the json tag should be the same as the jsonpb tag in general. Maybe the existing behaviour is correct when the json_name is not specified.
It just seems to me that if the proto spec explicitly asks for a JSON name, it should be honoured in the json tag. Does anyone else agree? I'm happy to submit a PR.

The jsonpb package is the place that matters. It's the package that implements the correct proto3 JSON formatting, and it doesn't consult the json field tag, so the value of the json field tag doesn't matter in this regard.

Yes, understood about the jsonpb vs json packages. I should probably explain my reason for raising this issue.
I have some structures that make use of Go JSON encoding. I am looking to converting the code to using GRPC, with the requirement to retain backwards compatibility with the existing interface for the time being.
In my case this can be done quite easily by specifying the structures in a .proto file. The structures generated by protoc are close enough to what I currently have so that they can be used. The only exception to this is the json tags generated by the proto compiler.
Of course I can get around this by duplicating the structures for the purpose of specifying the JSON field names -- that's not a drama. It's just more convenient this way, and I would have thought that generating json tags that are different from the json_name option specified is a bit of a surprise.
Out of interest, if the json field tags don't matter in this regard, is there some other reason why they are generated at all?

I think trying to jam things in via a .proto is where you've diverged from recommended practice. Either the protos are the canonical thing, or something else is, and it sounds like your situation is in the second camp. You'll probably trip over other things besides this specific issue too. I'd just go with hand-written structs and make do with a little bit of duplicated work.
The json_name feature is a latecomer, and proto3-specific. I don't think we want to mess with existing behaviour of the json struct field tags that is probably being relied upon by someone. At this point they can probably be considered "legacy".

OK, so the json tags generated by protoc are legacy. Got it.

@dsymonds Would you consider reviewing a pull request that adds an option to disable the legacy json tags?

@omeid see https://github.com/golang/protobuf/issues/256 for what I think is a better alternative.

Thanks for pointing out that issue @bcmills, I agree that your suggestion is a much better solution and would solve quite a few other problems around json and protobuf.

Great!  In that case, I'll close this as a duplicate of #256.  Thanks for the input: this discussion is another good data point for whether to accept that proposal and how to prioritize it.


Wrong prices for some tokens

Hi.
Code is
swapInput=int(volume*10**18)
swapOutput = uniswap_wrapper.get_token_token_input_price(_addr_to_str(token0), _addr_to_str(token1), swapInput)
token0 is ETH
token1 is 0xdf7a06fa60bea43d77c5210c0afb5f244b729e57
Code returns price 0.000000000000542003 but real price is 542003 tokens per ETH
Same here
token0 is ETH
token1 is 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599
Code returns price 0.000000000003088910 but real price is 0.0308901 tokens per ETH
I have no idea what's wrong with it because code works totally fine for other tokens.
Any suggestions?

Your code example is not complete (which made it harder to see what you're doing wrong), but you seem to have made a bad assumption about the number of decimals the tokens are denominated in.
Let's use the WBTC as an example: get_token_token_input_price returns an int which I assume you convert to decimal by dividing by 10**18, this is incorrect since WBTC is denominated with 8 decimals, not 18.
The first token seems to be denominated with 0 decimals according to Etherscan, so you shouldn't divide it at all.


Setup unit testing bypassing REST

Changes proposed
With this PR I am proposing teh following improvements:

[x] Setup new tests bypassing the REST, this way we can directly inject and call the services we want to test (I added them for SchemaService and TestService).

[x] Improve test coverage for TestService, this won't be a huge improvement but at least a starting point

Before:

After:

[x] Make some fixes or improvements that I noticed while implementing additional tests.

Check List (Check all the applicable boxes)

[x] My code follows the code style of this project.
[ ] My change requires changes to the documentation.
[ ] I have updated the documentation accordingly.
[x] All new and existing tests passed.

Unfortunately, I noticed only right now that I introduced some formatting changes :disappointed:

Hi @johnaohara , thanks for the review :pray:
I think I addressed all your comments (and applied changes accordingly) - see also this https://github.com/Hyperfoil/Horreum/pull/1656#discussion_r1595321834

@lampajr please can you squash and then I will merge, thanks

Done :heavy_check_mark: