2808 file set aggregation

Pull Request Checklist:

[x] Positive Test Case Written by Dev

[x] Automated Testing

[ ] Sufficient User and Developer Documentation

[x] Passing Jenkins Build

[ ] Peer Code review and approval

Positive Test Case (Use testservices.hydroshare.org for testing)

File set aggregation: This aggregation type allows adding metadata to a folder. File set aggregation is always set by the user. A folder must contain one ore more resource files or other aggregation(s) before metadata can be added to that folder. The file set metadata is same as that of the single file aggregation metadata (title, keywords, key/value metadata, temporal coverage and spatial coverage).
Creating a file set aggregation from a folder that contains one ore more resource files: Create a folder in a composite resource. Upload any text file to that folder. Right click on the folder and select the option "Add metadata to folder". The folder should be set to file set aggregation - folder icon will be replaced with the file set icon (green folder). Click the file set folder, and select the "Content Metadata' tab. You should see the 'title' metadata for the aggregation has been set to the folder name.  If you open the file set aggregation folder you should see the files that are part of this aggregation.
Creating a file set aggregation from a folder that contains other aggregations: Create a folder in a composite resource. Upload any file to that folder. Make sure not to upload files that are suitable for auto aggregation generation.  Then upload a netcdf file or a raster file to that folder. System should generate an appropriate aggregation from the netcdf or raster file. At this point the folder that you created should contain a netcdf or raster aggregation. Right click on the folder and select option 'Add metadata to folder'. Folder should be set to file set aggregation. If you open the file set aggregation folder you should see the files that you uploaded to this folder as well as the netcdf or raster aggregation.
Creating folders inside a file set aggregation: Create a file set aggregation (follow test case#2). Open the file set aggregation folder. Now create a folder inside the file set aggregation. Upload any file (file that's not suitable for auto aggregation creation) into this new folder. This uploaded file should be part of the file set aggregation. This can be verified by hovering over the file to see the tooltip.
Creating nested file set aggregations: Assuming you have completed the test case#4, right click on the folder that you created in test case#4, and select the option 'Add metadata to folder'. The folder should be set to file set aggregation. You now have a file set aggregation inside another file set aggregation.
Uploading a file to a folder that represents a file set aggregation: Follow test case#2 to create a file set aggregation. Upload any file (file that's not suitable for auto aggregation creation) into the file set aggregation folder. The uploaded file will be part of the file set aggregation.
Auto aggregation creation inside a file set aggregation: Follow test case#2 to create a file set aggregation. Upload a file that's suitable for auto aggregation creation into the file set aggregation folder. Verify that a new aggregation has been created inside the file set aggregation folder.
Move a file into a file set aggregation folder: Upload a file (file that's not suitable for auto aggregation creation) to the root folder. Then move this file into a file set aggregation folder. The moved file should become part of the file set aggregation.
Move a file out of the file set aggregation folder: Assuming test case#8 has been completed, move the file from the file set aggregation folder to the root folder. Once move out of the file set aggregation, this file should not be part of the file set aggregation.
Move an aggregation into the file set aggregation: Upload any file that is suitable for auto aggregation creation into the root folder. Once a new aggregation has been created, move that aggregation to a file set aggregation. Verify that the aggregation now exists inside the file set aggregation.
Move an aggregation out of file set aggregation: Assuming test case#10 has been completed, move the aggregation out of the file set aggregation to the root folder or another folder.
Rename file set aggregation: Follow test case#2 to create a file set aggregation. Right click on file set aggregation/folder and select option to 'Rename'. Enter a new name for the aggregation. Verify that the aggregation name got changed. Follow test case#5 to create nested file set aggregations. Verify that you can change aggregation name for both parent file set aggregation and child file set aggregation.
Download file set aggregation: Follow test case#2 to create a file set aggregation. Right click on file set aggregation and select option 'Download zipped'. Verify that the downloaded zip file contains the aggregation content files as well as two additional xml files. Try downloading a nested file set aggregation - do two separate downloads. One for the parent aggregation and the other for the child aggregation. Verify the contents of the downloaded zip files. The downloaded zip file of the parent aggregation should have content files both for the parent aggregation as well as the child aggregation. It should also contain the aggregation level xml files both for the parent aggregation and the child aggregation.
Using map interface for editing aggregation level spatial coverage: Aggregation for which editing of spatial coverage is allowed (e.g., file set, single file, netcdf etc), you can now use google map interface (similar to resource level spatial coverage map) to define the extent of the coverage. When you click the button with map icon (that appears to the right of each of the text fields for coverage data entry), you should see a popup map dialog box where you can select the coverage area. Once the coverage is selected in this dialog box, select the "Confirm' button. This should close the dialog box and fill the appropriate coverage data fields with data for the coverage extent. Select the 'Save changes' button to save the new coverage data for the aggregation.
File set aggregation level coverage auto update: If a file set aggregation doesn't have data for either for the temporal coverage or spatial coverage, then the system will set coverage data for the file set any time one of its contained aggregations found to have the coverage data.  Create a file set aggregation as per test case#2. Verify that the fie set aggregation does not have temporal or spatial coverage. Create a single file aggregation at the root level. Move the single file aggregation into the file set aggregation folder. Verify the file set aggregation still does not have coverage data. Edit metadata for the single file aggregation (which exists inside the file set folder) and create temporal coverage. After you save temporal coverage for the file set aggregation, verify that the file set aggregation now has temporal coverage - which should be same as that of the contained single file aggregation. Similarly you can test for file set spatial coverage auto update. If you now change either the temporal coverage or spatial coverage of the single file aggregation, it won't change coverage data of the file set aggregation.
Updating file set coverage from contained aggregations: As it relates to updating coverage for a file set from its contained aggregations any nested aggregations are excluded from computing the coverage for the file set. Create a single file aggregation at the root level. Edit the metadata for the single file aggregation to set spatial coverage and temporal coverage. Create a file set aggregation. At this point the file set aggregation should not have spatial or temporal coverage. Move the single file aggregation into this file set aggregation folder. Go to file set metadata edit mode. You should now see options to update file set spatial coverage and temporal coverage from folder contents. (Note: These options to update coverage from the folder contents will be available only if any of the contained aggregations has the corresponding coverage data). Select these coverage update options and verify that the spatial coverage and temporal coverage of file set become same as that of the contained single file aggregation.  Edit the file set coverage to some different values and save the changes. Again use the update options to update file set coverage from contained aggregations. Verify the updated values are correct. Make changes to the single file aggregation coverage. Then try to update the coverage for the file set aggregation that contains the single file aggregation.

Updating coverage of file set aggregation for nested file set aggregations: Create a nested file set aggregation. Make sure the parent file set aggregation contains one more aggregation in addition to the child file set aggregation. Also the child file set aggregation needs to contain one more other type of aggregations.  Try updating the coverage for the child file set aggregation using the options "Set spatial coverage from folder contents' and "Set temporal coverage from folder contents".  Similarly try updating the coverage for the parent file set.  Now change the coverage for any aggregations contained within the child file set aggregation. Now if you try to update the coverage for the parent file set aggregation, the coverage should remain unchanged. Update the coverage for the child file set. You should see new coverage values for the child file set. If you now update the coverage for the parent file set, you should see new coverage values.

Updating resource coverage from content files: Here content files refer to aggregations that exist in the resource. When you use the options to update coverage from the content files, the coverage for the resource is computed from aggregations excluding any nested aggregations - that means only the aggregation that exist at the root folder level (/data/contents/). Assuming nested aggregations have been created as per test case#16, try updating resource level coverage after each time you change coverage for a root level aggregation or a nested aggregation.
Deleting coverage for single file aggregation: Create a single file aggregation by uploading any file that is not suitable for auto aggregation creation (e.g., text file) at the root level. In edit mode, right click on the file and select the option "Add metadata to file'. This should create a single file aggregation. Edit metadata for this aggregation and add temporal and spatial coverage to this aggregation. Once you have added temporal or spatial coverage, you should see a delete option (trash can) for each of the coverage types. Click the delete button for the specific coverage type and verify that the coverage data got deleted.
Deleting coverage for file set aggregation: The functionality for deleting coverage for a file set aggregation is same as described for single file aggregation in test case#18.
Deleting coverage for the composite resource: In resource edit mode if you see there is temporal coverage and/or spatial coverage data for the resource, you should see an option to delete (trash can) that coverage. Use the coverage delete option to delete coverage data for the resource and verify that coverage got deleted.
Deleting contents of a file set aggregation: Create folder at the root level. Upload two files (e.g., text files) that are not suitable for auto aggregation creation into this folder. Set this folder to file set aggregation. Open this folder and you should see the two files you uploaded. Delete one of the files. Verify that the file set aggregation now has one file. Delete the other file of the file set and verify that file set aggregation has no files.  Deleting aggregations that are part of a file set has the same results as that of deleting files of a file set.
Remove file set aggregation: Create a file set aggregation containing one or more text files. In edit mode, right click on the file set aggregation folder and select option 'Remove content type'. You will be prompted to confirm removal of content type. Selecting 'Remove' at this prompt should remove file set aggregation and the folder will be displayed as a normal folder. The folder should still contain the text files that you uploaded to the folder. Note: When you remove content type, any metadata associated with that aggregation will be lost. To test removal of content type for a nested file set aggregation, create a sub-folder inside the file set folder. Upload one or more text files to this sub folder. Make the sub-folder a file set aggregation. Then make the parent folder a file set aggregation. Navigate to the sub-folder, right click on the sub-folder and select option 'Remove content type' - sub-folder should become a normal folder. The files in the sub-folder should now be part of the file set aggregation - that is the parent folder.
Delete file set aggregation: You should be able to delete any file set aggregation that you have created in any of the above test cases. Right click on a file set aggregation that you want to delete and select the option 'Delete'.
Creating single file aggregation inside a file set aggregation: You can create a single file aggregation using any file that's part of a file set aggregation. Create a file set aggregation from a folder that contains one text file. In resource edit mode, open the file set folder and you should see the text file that's part of the file set aggregation. Right click on this text file and select option "Add metadata to file". The selected text file will become part of a new single file aggregation. You should be able to enter metadata for this file.

Could @Maurier or maybe @engineSound look over the frontend changes?  Lots of javascript changes in here.

@Maurier I won't merge until you approve.

@Maurier Are you planning to review the front-end code changes?

@pkdash, yes. I'm on it.

@Maurier and @engineSound See if I have addressed your concerns.

@pkdash Looks good on my end.

@engineSound Can I merge?


Swap tokens

Adds a new asset action, Trade, where users can swap between OCEAN and the respective datatoken.

closes #110
closes #197
closes #198

Further changes:
New message under Buy button for Use:

Pretty cool so far, I'll do some light styling updates and probably unify that userLiqudity styling thing.
As for data flow, would be cool if you could look into making most of UI show up by default. I found following this pattern in every component works well and has the benefit that most UI is present for non-wallet users:

get as much info needed for UI directly from the ddo, so for the swap thing we should be able to show pretty much everything based on that, like both symbols
after that data is there, enhance it and add more data like we do now

also running into that 0 price for whatever reason on re-fetch even with current interval. That problem does not show on the pool tab I think

so far, so good

I'll test some more the balance stuff, something is not right

and some quick thoughts on interaction design after playing around with what we wanted to build. While this UI is nicely flexible, where users can type in both fields, this also makes it harder to grasp in the beginning. But I feel we actually do not need that full flexibility in this context here, since we only deal with 2 tokens.
So we could switch to only showing one input, where the prefix is a dropdown for both tokens. Depending on what users select, the bottom part shows a more "You will receive' style output instead of another input field.

Well I copied the UX from uniswap. Your suggestion has one disadvantage ( at least from my point of view) , when i want to input how much i want to buy : for example i want to buy 3 dt, it's easier to input the value in the second field, or I want to sell dt and get 500 ocean (because that how much i need, and i don't want to sell more dt)

ok, got it, the fallback view in non-web3 browser shows pretty much everything now:

after some testing, we have to solve #197 and #198 as part of the first rollout. The differences in what has been received are just too big and we can expect users to be highly confused. So a new output section will be added in this PR already:

What exactly is the pool balance at the bottom now?
Pool statistics:

Pool balance display:

Should pool balance not be the same to what's in pool statistics for the datatoken?
And this is what shows up when switching to OCEAN at bottom:

If this pool balance at bottom is now some value based on some pool maximum then we should change the label to be more precise

No, pool balance is the maximum number of tokens that can be bought (confirmed with Alex).  And when you think about it, Pool balance is confusing

changed labels and made the minimum received amount work. I think. Not sure it is actually the minimum account.

Now, how do we go about calculating the slippage? Is this even feasible in current architecture state?

add:

slippage tolerance setting UI, with default set to ...%
price impact display based on spot price

Quick slippage tolerance UI, collects everything in form data:

modified slippage UI, opting for native select element instead of some custom component

Refactored price impact, left only %.
Minimum Received is calculated properly


fix(deps): update terraform terraform-ibm-modules/base-ocp-vpc/ibm to v3.33.0

This PR contains the following updates:

Package
Type
Update
Change

terraform-ibm-modules/base-ocp-vpc/ibm (source)
module
minor
3.32.1 -> 3.33.0

Release Notes

terraform-ibm-modules/terraform-ibm-base-ocp-vpc (terraform-ibm-modules/base-ocp-vpc/ibm)
v3.33.0
Compare Source
Features

The worker_pools input variable now requires a value for the operating_system option to be passed to it (#516) (f7a2638)

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

/run pipeline

/run pipeline

/run pipeline

/run pipeline

@Aashiq-J https://github.com/terraform-ibm-modules/terraform-ibm-base-ocp-vpc/pull/545 is now merged - can you update this PR? I want to merge it and release a new version of the landing zone DAs

Edited/Blocked Notification
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠ Warning: custom changes will be lost.

Update addressed in this PR


refactor(HACBS-2415): explicitly set IGNORE_REKOR value

This commit adds the IGNORE_REKOR value to the 0.3 version of the rhtap-service-push pipeline which had been omitted initially.

@robnester-rh can you explain why this is needed? At least a brief explanation in the commit message would be nice. I can see that it's set in all the other pipelines, so maybe we can at least mention that in the commit message?


gist:_minute has  conversion of 1, it should be 60

Thanks to Robert Clark for spotting this.
gist:_minute has  conversion of 1, it should be 60

Duplicates #82


[BEAM-12511] JdbcIO.Write.withResult works without statement.

Add ability to use "JdbcIO.Write.withResults" without statement and preparedStatementSetter.

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[x] Choose reviewer(s) and mention them in a comment (R: @username).
[X] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[x] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.

Hi @aromanenko-dev , did you have a chance to take a look at this PR?

Retest this please

Retest this please

I retested my changes and did not get any errors. The Java PreCommit logs shows that the error appears at the ":sdks:java:harness:test" task. I'm not sure that the error was caused by these changes.

Ops, sorry, that was not addressed directly to you - this is just a command to restart all jenkins jobs.
I think it's not related to your change, since it fails for other PRs with the same test as well.

Run Java PreCommit

Run Java PreCommit

@RaphaelSanamyan Could you rebase your branch against HEAD of master branch and push it?

Run Java PostCommit

Run Java PostCommit


Task01 Дмитрий Артюхов HSE

Локальный вывод

$ ./aplusb
Number of OpenCL platforms: 3
Platform #1/3
        Platform name: NVIDIA CUDA
Selected device: NVIDIA GeForce MX150
Data generated for n=100000000!
=====================
Log:

=====================
Kernel average time: 0.034+-0 s
GFlops: 2.94118
VRAM bandwidth: 32.8702 GB/s
Result data transfer time: 0.155583+-0.000493007 s
VRAM -> RAM bandwidth: 7.18321 GB/s

Вывод Github CI

./build/aplusb
Number of OpenCL platforms: 1
Platform #1/1
	Platform name: Intel(R) CPU Runtime for OpenCL(TM) Applications
OpenCL error code -1 encountered at /home/runner/work/GPGPUTasks2024/GPGPUTasks2024/src/utils.h:88
No devices with specified types found. Fallback to CPU and GPU types.
Platform #1/1
	Platform name: Intel(R) CPU Runtime for OpenCL(TM) Applications
Selected device: AMD EPYC 7763 64-Core Processor
Data generated for n=100000000!
=====================
Log:
Compilation started
Compilation done
Linking started
Linking done
Device build started
Device build done
Kernel  was successfully vectorized (8)
Done.
=====================
Kernel average time: 0.0312206+-0.000418172 s
GFlops: 3.20302
VRAM bandwidth: 35.7965 GB/s
Result data transfer time: 0.0173486+-0.000240376 s
VRAM -> RAM bandwidth: 64.4195 GB/s

Все хорошо, задача зачтена, 5/5 баллов :+1:


TINKERPOP-2847 Compare and store request UUIDs as lower case strings

Storing and comparing the request IDs in lower case prevents issues that arise when the supplied ID and returned ID are using different cases to represent the hex values of the UUID.

LGTM


Create mega-linter.yml

:ballot_box_with_check: Definition of Done checklist

[x] Meaningful title and valuable description in pull request
[x] Code change tested manually if not covered by automated tests
[x] Pull request linked to one or more issues/stories
[x] Acceptance criteria of the linked stories satisfied
[x] Code change comprehended by those who approved it
[x] State of target branch maintained or improved after the code change

I am planning to make the checks compulsory, so I suggest to ensure that the job passes ASAP. 👍

Is that ok to configurate our MegaLinter so that it ignores some irrelevant checks such as the copy-paste check and spelling check? Or do you want our Megalinter to pass all the default checks that it has?
Hämta Outlook for Androidhttps://aka.ms/AAb9ysg

From: Dimitris Platis @.>
Sent: Tuesday, May 10, 2022 4:24:37 PM
To: DIT113-V22/group-15 @.>
Cc: Alaa Taleb @.>; State change @.>
Subject: Re: [DIT113-V22/group-15] Create mega-linter.yml (PR #39)
I am planning to make the checks compulsory, so I suggest to ensure that the job passes ASAP. 👍
—
Reply to this email directly, view it on GitHubhttps://github.com/DIT113-V22/group-15/pull/39#issuecomment-1122467939, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AV26LJT5LCEFV2U67GRAC5DVJJWSLANCNFSM5VRWFULA.
You are receiving this because you modified the open/close state.Message ID: @.***>

Hello Dimitris! We are aware of the duplications in our ccs files and are
looking into that. As for stefanzweifel, we think it's some sort of signum
of a MegaLinter developer, which is not recognized by the spelling Linter
(check), so we are going to either 1) delete it from that file, if it seems
safe and doesn't affect the code, or 2) configure the spelling Linter to
recognize "stefanzweifel" as an existing word. I am currently looking into
MegaLinter configuration and we will reach back to you when this is done.
// Aleksey and group 15
Den tis 10 maj 2022 kl 19:48 skrev Dimitris Platis @.***

:

That is not true. 🧐
The copy paste check fails
https://github.com/DIT113-V22/group-15/runs/6371330203?check_suite_focus=true#step:4:120
at detecting duplicates between some css files and the other
https://github.com/DIT113-V22/group-15/runs/6371330203?check_suite_focus=true#step:4:184
check fails due to some unknown word (stefanzweifel) it finds in your
mega linter workflow file.
—
Reply to this email directly, view it on GitHub
https://github.com/DIT113-V22/group-15/pull/39#issuecomment-1122693774,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AVVENZSYPIL4V66B4DDWLT3VJKOOLANCNFSM5VRWFULA
.
You are receiving this because you authored the thread.Message ID:
@.***>

The spelling mistake should be easy to ignore. There's usually some way (ie configuration file) to add "words". 👍


"Neamț" county is listed in the drop-down menu

Description:
"Neamț" county appears in the drop-down menu list alongside the rest of the counties in Romania according to law
Precondition:
The website is up an running.

Step 1
Click on the search bar.

Expected results
The counties appears in the drop-down menu.

Step 2
Scroll down the list

Expected results
The county appears in the drop-down menu as "Neamț".


Overwriting sixel image data with text cells leaves artifacts

Describe the bug
Jexer uses a mix of sixel and text on screen, to provide draggable windows containing images.  When using sixel in aminal, overwriting the cells with text leaves sixel pixels where the text background should be. and it also looks like aminal scrolls the screen when it shouldn't.
Easier to see than say, see below.
To Reproduce

Run Jexer: 'java -jar /path/to/jexer.jar'
Alt-F to open menu, then Left to switch to hamburger menu, then Open Image...
Pick an image file from the dialog box.
Drag window around.

Expected behavior
This is the screen under xterm, first when the image is loaded and then dragged:

Screenshots
This is the screen under aminal, first when the image is loaded and then dragged:

Environment (please complete the following information):

Fedora 29
Go version go1.10.3 gccgo
bash

Looking at the aminal screenshots, it also appears that aminal is not responding to Jexer's "CSI 14 t" sequence, which is supposed to return the screen size in pixels.  That is probably why the scrolling is happening: Jexer assumes a screen size of 640x400 to figure out the text cell dimensions.  Without the real text cell dimensions, Jexer is drawing all the text elements, and then going outside the border of its window when it draws the sixel.
So don't worry about the scrolling effect, that may be fine.  But one should be able to overwrite sixel pixels with text data including background color, that's the real issue here.

I now have session captures ready-made ways to test this at: https://jexer.sourceforge.io/sixel.html

Closed due to complete rewrite as part of bringing the project back to life, please create a new issue if still relevant. Thank you!


What is 'Initial POP'?

In CHANGES.MD for 3rd version I'm found this:

Breakage: location.key on the initial POP is null. Users who relied on
this key may immediately use replace to get it back

What is 'initial POP'?
When I'm trying navigate to some route, I'm have got in a middleware 2 sequential actions with the same type (LocationChange). The first action is 'LocationChange:Push', the second action is 'LocationChange:POP'. Also, the second action has 'Key' property assigned to null.
Which real purpose POP, after PUSH during changing route?

The "initial POP" is the initial location, which is always a POP.
const history = createHistory()

history.action // POP


refactor(interactive): Remove some dummy code

As titled. Check the graph_id params in http_handler.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 58.78%. Comparing base (6aa557c) to head (e5ddde9).

Additional details and impacted files

@@           Coverage Diff           @@
##             main    #4298   +/-   ##
=======================================
  Coverage   58.78%   58.78%
=======================================
  Files          12       12
  Lines         592      592
=======================================
  Hits          348      348
  Misses        244      244

Continue to review full report in Codecov by Sentry.

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


No way to access edit fields (editables) by name

I was looking for a method to access specific editable fields of a form by name but it seems there's no such a method.
Basically the implementation would be very similar to $activate (https://github.com/vitalets/angular-xeditable/blob/0.8.0/src/js/editable-form/controller.js#L173-L182).

Can you add some more specific on what you are trying to achieve?

In my case some fields should only be editable when adding new entry and not when editing existing one. That is why upon entering edit mode I hide edit fields which are not meant to be used when editing already existing entries.

Yes, one way to do that is do the ng-if based upon the unique key of the row.  If no id exists, don't show fields, if id exists, show fields.

Ok, in this case I'm going to change approach. Still I guess there should be easy way to access edit fields by name in more advanced scenarios. Closing for now. I guess if more people want this then this issue could be reopened later.

If you decide to investigate you original issue some more and find a solution, please create a pull request.

Would like to revisit this. Does angular-xeditable create underneath standard AngularJS input component (one from those listed at https://docs.angularjs.org/api/ng/input) and if so then how to access it from (or pass into) onbeforesave() function? Such a component has for example $valid and $error properties.

Are you trying to use angular's built in validations?  If so, this project is not setup to use them.
There are several issues that haven been opened for this, here is one.

It looks like you linked this issue by mistake.

Fixed it


[NuGet.org Bug]: The "install-tabs" no longer work

Impact
It's more difficult to complete my work
Describe the bug
Clicking between the installation tabs (e.g. ".NET CLI", "Package Manager", "PackageReference", "Paket CLI", "Script & Interactive", and "Cake") doesn't do anything anymore.
The displayed "tabpanel" remains being the ".NET CLI", it doesn't change.
Repro Steps

You can use any package page, for example: https://www.nuget.org/packages/newtonsoft.json/
Click the "Package Manager" tab.
The tab panel remains being "> dotnet add package Newtonsoft.Json --version 13.0.3"

Expected Behavior
The expected behavior is that the tab panel should display "NuGet\Install-Package Newtonsoft.Json -Version 13.0.3" when clicking the "Package Manager" tab.
Screenshots

Additional Context and logs
No response

Thank you for reporting this. We have rolled back the changes, it should work now. Our team is actively addressing the issue, we will keep you updated. Thanks again! Please let us know if there is any problem.


tests: add test for custom sg

Description
Create test for custom_sg example
https://github.com/terraform-ibm-modules/terraform-ibm-base-ocp-vpc/issues/349
Release required?

[ ] No release
[ ] Patch release (x.x.X)
[ ] Minor release (x.X.x)
[ ] Major release (X.x.x)

Release notes content
Create a test that implements the custom_sg example.
Run the pipeline
If the CI pipeline doesn't run when you create the PR, the PR requires a user with GitHub collaborators access to run the pipeline.
Run the CI pipeline when the PR is ready for review and you expect tests to pass. Add a comment to the PR with the following text:
/run pipeline

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[ ] If relevant, documentation for the change is included or updated with this PR.

For mergers

Use a conventional commit message to set the release level. Follow the guidelines.
Include information that users need to know about the PR in the commit message. The commit message becomes part of the GitHub release notes.
Use the Squash and merge option.

/run pipeline

see comment

passed locally

:tada: This PR is included in version 3.16.2 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Spelling Error

"The above will restrict the query access to the following entites:" -> "entities:"

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

ID: f9edad54-ecb5-dc20-970d-214cce195a6f
Version Independent ID: 9db1a075-410f-2933-6414-b92e5efd6385
Content: Cross-database and cross-cluster queries - Azure Data Explorer
Content Source: data-explorer/kusto/query/cross-cluster-or-database-queries.md
Service: data-explorer
GitHub Login: @orspod
Microsoft Alias: orspodek

@jacobwbutler - thanks for your feedback. Created a PR to fix the typo. Closing the issue now


Scottx611x/add other encoding types

Needed a simple server w/ zlib, gzip, and deflate encoding for a use case at work.

Very cool PR! I may not get around to being able to merge this for a week or so due to upcoming vacation.  Looking at the code some of my initial feedback is that the server should default to gzip on port 8000 to not break existing behavior. I will be able to actually run the code later and actually test behavior!  This PR makes the name kind of wrong now :P

ack did not mean to close

No worries :) I just needed it for personal use today. Merge if you think others could benefit!


Missing event model from templatized instance

Description
When listening to events (such as on-tap) on templatized instances, the event does not contain the model property (e.model -> TemplateInstance)
Live Demo
https://toddradigan.github.io/templatize-testing/
the listener set up in src/list-container/list-container.html correctly captures tap events for all templatized items
listeners: {
  'tap': 'tapItem'
},

the event fired from "type b" does correctly have the model property (likely because the template already has another on-tap handler)
      <template is='dom-template' item='[[item]]' item-type='b'>
        [[item.value]]
      </template>

the event fired from "type a" does not have the model property bound to the instance
      <template is='dom-template' item='[[item]]' item-type='a'>
        [[item.value]]
      </template>

Steps to Reproduce

Create listener for tap events in custom element
Templatize and stamp instances of a template
Tap any of those instances
Observe that event, when handled by the listener you set up, does not have model property

Expected Results
event for templatized instance will have model property
Actual Results
event for templatized instance only has model property if template already contains handler for that event type
Browsers Affected

[x] Chrome
[?] Firefox
[?] Edge
[?] Safari 9
[?] Safari 8
[?] IE 11

Versions

Polymer: v1.7.0
webcomponents: v0.7.22

Model-decorated events are not supported when using event delegation outside the template.  You need to add an event listener inside the template as in your first example to get decorated events.
Alternatively, you can use the event delegation pattern and call dom-repeat's modelForElement() API on event.target, e.g.:
tapItem: function(event) {
  var model = this.$.domRepeat.modelForElement(event.target);
  ...
}

thanks!


Renamed "Open in File Explorer" command to "Open in Explorer"

Fixes #954

How many engineer's approvals does it take to get a string changed?


Add smoke test for iPython notebook

As a guard against breaking flooding/Sentinel2_Water_Extraction/Sentinel2_Water_Extraction.ipynb we should probably add a quick test to verify that we can run this notebook without issue in an automated fashion. This might require some other work, for example to pull Python code out of the notebook and into separate files.

Done in https://github.com/linz/emergency-management-tools/pull/8.


Create sieveOfEratosthenes.cpp

Implemented Sieve of Eratosthenes using CPP

Excellent work @yadavKaustubh Thanks for making this PR.

Can you please star this repository to show your support.


Rename OrderMap to IndexMap; rename crate to indexmap (and OrderSet to IndexSet)

OrderMap becomes IndexMap with no change in functionality
Releasing version 1.0 of the crate becomes possible shortly after the rename
This is the big rename; see discussion and rationale in issue #14

Plan:

Release ordermap 0.4.1 with a deprecation message pointing to indexmap; in PR #64
Release indexmap 0.4.1 with the rename (and deprecated type aliases in place for OrderMap/Set) (this PR)
Release indexmap 1.0 with deprecated items removed. (later)

Fixes #14

PR #64 needs to be merged & released before this one.

Release indexmap 0.4.1 with the rename (and deprecated type aliases in place for OrderMap/Set) (this PR)

Why not put the deprecated type aliases in ordermap?  Then indexmap can head straight for 1.0, or at least never pollute itself with deprecations.

I guess my idea would be that each step is just one change, like ordermap => indexmap with equivalent version number. I'm not sure if that's valuable in any way, to have that obsolete version correspond, once indexmap 1.0 is released. I think it can still have some value.
Having a deprecated OrderMap and a type alias IndexMap in crate ordermap 0.4.1 would be possible but it is incomplete, since the user needs to update their dependency to point to indexmap anyway. The original plan was though to have both of these, deprecated parts on both sides of the rename.
I am thinking about the Rust version requirement (Rust version requirement was never documented anyway, travis was using 1.18 anyway, but apparently petgraph was using it from its Rust 1.12). Working around not having pub(crate) is about equally annoying though.

It doesn't have to be the perfect strategy, it's just a set of small steps that leads us to indexmap 1.0. So I won't try to work on the perfect strategy here.


Add PHP backend support

Add php_fastcgi  support to Cbltfile
"example.com" {
    root "*" "/var/www/html"
    php_fastcgi "unix//run/php/php-fpm.sock"
    file_server
}

"example.com" {
    root "*" "/var/www/html"
    php_fastcgi "<IP_ADDRESS>:8080"
    file_server
}

https://github.com/User65k/async-fcgi
https://crates.io/crates/flash_rust_ws

Can't we call this option fastcgi_pass, just as Nginx does? As it isn't limited to php-fpm support, I believe we shouldn't stick to php here:
fastcgi_pass unix://run/some-application-server/myserver.sock

Another nice feature Nginx is lacking of is a generic FastCGI application server that allows starting and managing all .fcgi scripts that support the standard FastCGI startup protocol (just as Apache's mod_fcgid does).
Here's an example of such issue report I've found on ServerFault: https://serverfault.com/questions/1161617/nginx-autospawning-of-fastcgi-perl-scripts/1167170
Personally, I've implemented a software to address that problem some time ago. The downside of this approach is introducing some additional copies, in a contrary to a native support in HTTP server.

If you want it to be called that, when can we expect a Pull Request from you to the repository?

It would be helpful to clearly outline the problems CBLT is designed to address and focus on them. Maintainer(s) have very limited time to keep high quality in growing codebase. Functionality requested now but forgotten in the future will block upcoming stable releases.


Add Proof serialisation format

This should match the format implemented in go-ipa . The following draft document specifies the rough rationale: https://hackmd.io/q60-8MnaT8SY5NhenKD0Pg

I believe this and #28 are the last features to be added for feature completeness on the verkle trie layer.
The other issues are regarding API and code cleanup

This has been implemented as of https://github.com/crate-crypto/rust-verkle/commit/516f6266634143cae9bb3952c769bcba5c1c9933 For consistency, we are waiting for the go-verkle library to update their proof format. This is being tracked in #34 instead


feat: Support Prometheus 3.0

Update prometheus role for 3.0.0.

Update argument_specs.yml to reflect support of 3.x.
Skip console templates on 3.x.

Fixes: https://github.com/prometheus-community/ansible/issues/460

I went over https://prometheus.io/docs/prometheus/3.0/migration/ and didn't find anything incompatible in our role.

Found and fixed a couple of minor issues.

It doesn't come with console templates anymore, but still supports them.
It renamed the agent feature flag to just a flag.


test add insert into with tablet sink shuffle case

What problem does this PR solve?
Problem Summary:
add some test case
Release note
None
Check List (For Author)

Test

[ ] Regression test
[ ] Unit Test
[ ] Manual test (add detailed scripts or steps below)
[ ] No need to test or manual test. Explain why:

[ ] This is a refactor/code format and no logic has been changed.
[ ] Previous test can cover this change.
[ ] No code files have been changed.
[ ] Other reason

Behavior changed:

[ ] No.
[ ] Yes.

Does this need documentation?

[ ] No.
[ ] Yes.

Check List (For Reviewer who merge this PR)

[ ] Confirm the release note
[ ] Confirm test cases
[ ] Confirm document
[ ] Add branch pick label

run buildall

run buildall


[KFNBC/JH]: Usage Data Collection checkbox is in a weird state by default and cannot be "enabled"

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
After install, both with JH or KFNBC, the Usage Data Collection checkbox appears to be in a weird state

The checkbox is usually either empty or has a check mark (in case data collection is enabled). Selenium thinks that in this state, the checkbox is not enabled.
After trying to select the checkbox (i.e. check mark appears) and clicking on Save Changes, nothing happens and the settings are not saved.
Furthermore, in this default state, even though Selenium sees the checkbox as currently disabled, the JH API still exposes the Segment key, as if usage data collection was actually enabled.
Expected Behavior
Checkbox should either be empty (disabled) or have a check mark (enabled).
By default, I think it should be disabled.
The segment key should not be exposed when usage data collection is disabled.
Steps To Reproduce
No response
Workaround (if any)
No response
OpenShift Version
No response
Openshift Version
No response
What browsers are you seeing the problem on?
No response
Open Data Hub Version
No response
Relevant log output
No response

Small update:
After clicking on Save Changes, if you refresh the browser page these error notifications will show up for a split second before the page is reloaded. One notification for each click on the button.

@lugi0 Could you please verify if this issue is still present in the latest live build? There was a fix in the deployer that may have solved this.

@maroroman the issue is still present. Now by default the checkbox has a checkmark, but if you try to change the settings nothing happens when clicking the button, and when you refresh the page you still get the list of notifications with the e.response is undefined

In RHODS 1.15.0, the Allow collection of usage data setting is properly stored in the configmap odh-segment-key-config but, when setting it to false, if you go to another section of the dashboard and then come back to Settings -> Cluster settings, the checkbox has the unfamiliar check mark mentioned in the description of this issue

@jgarciao This should be fixed by the on-going PR: https://github.com/opendatahub-io/odh-dashboard/pull/404
When it gets merged down to RHODS, you should be able to get that fix.


Auto formatting

We have written the needed data into your clipboard because it was too large to send. Please paste.

 Live Share doesn't introduce auto-formatting on save, and so if you're experiencing this behavior, it must be enabled by the host. Coudl you check and see whether the person running the Live Share session had this setting enabled?

@jozsoka2222 Hey! Live Share doesn't introduce auto-formatting on save, and so if you're experiencing this behavior, it must be enabled by the host. Coudl you check and see whether the person running the Live Share session had this setting enabled?

Closing this bug out due to age. Please let us know if you're still experiencing the issue and we can re-activate.


Blocker: Unable to indicate a target data controller. Field is disabled

Azure Data Studio Version: RC1

Steps to Reproduce:

Deploy a Dusky server group
Try to indicate a target data controller
the field is disabled you cannot select any entry or input anything

That is a blocker for 9/22

Dupe of #12344


list of integers, how do you terminate the list? and manage it neat like python?

One of the things we try to maintain is: compat with vanilla C. But in this case, it seems: we might need void listAdd(float* list, float element).
// You would do:
float* list = new(t_list, 10);
listAdd(list, 4); // similar to: Array.push in javascript.

// Doing below won't be wise, and will break the cpy compat.
// Because this might create an empty space between the list.
list[2] = 2;

The whole point of cpy is to make C operations better and simpler, like jQuery did for JavaScript. Mark my words!

The List implementation uses DBL_MAX as a delimiter for numbers.


Change "statement" to "step" in the UI

Change "statement" to "step" in the UI where applicable. See https://github.com/metamath/lamp-guide/issues/62#issuecomment-1585619398

Hopefully implemented in #88

I think you can close this issue, renaming those places is "ready-on-dev".

I will close this and other "ready-on-dev" issues when they are in the "latest" version. I hope this will be soon.

I think you can close this and all other ready-on-dev issues. Congrats!!

Thank you!
I was about to ask you to confirm that everything marked as ready-on-dev may be closed. I will close those issues soon.


Bug with date displayed in input

Manually erase date

Trying to pick up current date from calendar
Input stay empty

Can you provide more info?  I can't reproduce this issue.


Xcode encoder warnings removed

Following on from #134 this does the same for the encoder. Xcode by default enables the shortening warning. There are no side effects from the changes.

Thanks a lot!


type caster for char16_t and char32_t

Currently, there is no type caster for char16_t and char32_t. They could be mapped to Python int as ord in Python returns an int. I did this in my own code (I only needed char32_t), and it works. I think removing  && !is_std_char_v<T>> in nb_cast.h could work too.
namespace nanobind::detail {

template <>
struct type_caster<char32_t> {
    using Value = char32_t;
    template <typename T> using Cast = Value;

    static constexpr auto Name = const_name("char32_t");
    static constexpr bool IsClass = false;

    Value value = '\0';

    bool from_python(handle src, uint8_t flags, cleanup_list *cleanup) noexcept {
      if (!isinstance<int_>(src)) {
        return false;
      }

      value = static_cast<std::uint_least32_t>(int_(src));
      return true;
    }

    static handle from_cpp(char32_t value, rv_policy policy, cleanup_list *cleanup) {
      return int_(value);
    }

    explicit operator Value() {
        return value;
    }
};

}

Currently, there is no type caster for char16_t and char32_t.

This is intentional, I intentionally did not provide them as part of the default set of type casters since it's a bit of a fringe application, and people might want to implement them in various different ways.
If the default type caster clashes with yours, then that is something that could be fixed however. I am open to PRs in this direction.

Closing this ticket since it's more of a feature request and not an issue of nanobind.


Update dependencies and skip Python 3.7

Closes #21
Closes #23
Closes #24

@conda-forge-admin, please rerender

It's failing for osx64. Looks like maybe it's a genuine error of some sort? I don't really understand it myself.


2.4.0'dan 2.4.1'e hızlandırma eylemleri/kurulum düğümü

Changes

...

Checklist

[x] Read the contribution guide and accept the code of conduct
[ ] Readme (updated or not needed)
[ ] Tests (added, updated or not needed)

I rewrote the description and merged your last PR that was also in Turkish.
Would you mind adding a proper description in English this time?
That we do not have to guess and cross reference the changes.


Spark features should not drop spark configs if no features are found

TL;DR
https://github.com/flyteorg/flyte/issues/696
if the feature is not matched, the sparkConfig is appended with the actual config.
Type

[ ] Bug Fix
[ ] Feature
[ x] Plugin

Are all requirements met?

[ ] Code completed
[ ] Smoke tested
[x ] Unit tests added
[ ] Code documentation added
[ ] Any pending items have an associated Issue

Complete description
How did you fix the bug, make the feature etc. Link to any design docs etc
Tracking Issue
https://github.com/flyteorg/flyte/issues/696
Follow-up issue
NA

Codecov Report

Merging #150 (1b58f91) into master (8c66bdd) will increase coverage by 0.00%.
The diff coverage is 66.66%.

@@           Coverage Diff           @@
##           master     #150   +/-   ##
=======================================
  Coverage   60.30%   60.31%
=======================================
  Files         127      127
  Lines        6848     6854    +6
=======================================
+ Hits         4130     4134    +4
- Misses       2302     2304    +2
  Partials      416      416

Flag
Coverage Δ

unittests
?

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

Impacted Files
Coverage Δ

go/tasks/plugins/k8s/spark/spark.go
74.69% <66.66%> (-0.20%)
:arrow_down:

Continue to review full report at Codecov.

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

I do not have permissions to push branches to the this repo it seems.

@akhurana001 is it a +1?

LGTM


typo: change blessedHrzonataMartyr to `blessedHroznataMartyr

While (still) translating the keys in skSk.mjs, I’ve just found out that you have typo in the name and value of blessedHrzonataMartyr (see Hroznata article on Czech Wiki).
My suggestion is to change key and its value to the following:
"blessedHroznataMartyr": "Blessed Hroznata, Martyr"

This is now fixed and merged. Thanks!


ISPN-6762 Unified Eclipse and IntelliJ formatters

https://issues.jboss.org/browse/ISPN-6762
Highlights:

import order - statics (can not be changed in Eclipse), java, javax, org, com, the rest
Fixed multiline parameter inention
Fixed IntelliJ formatter name (now it's Infinispan)
Set Java indention to 3 in IntelliJ

Pushed, thanks.

@slaskawi Couldn't we have an XML for IntelliJ as well? It seems like the jar includes all the settings, not just the code style ones.


Scala 2.13 support

Based on @tampler's pioneering work!
Contributor Checklist

[ ] Did you add Scaladoc to every public function/method?
[ ] Did you update the FIRRTL spec to include every new feature/behavior?
[ ] Did you add at least one test demonstrating the PR?
[ ] Did you delete any extraneous printlns/debugging code?
[ ] Did you specify the type of improvement?
[ ] Did you state the API impact?
[ ] Did you specify the code generation impact?
[ ] Did you request a desired merge strategy?
[ ] Did you add text to be included in the Release Notes for this change?

Type of Improvement

API Impact

Backend Code Generation Impact

Desired Merge Strategy

Release Notes

Reviewer Checklist (only modified by reviewer)

[ ] Did you add the appropriate labels?
[ ] Did you mark the proper milestone (1.2.x, 1.3.0, 1.4.0) ?
[ ] Did you review?
[ ] Did you check whether all relevant Contributor checkboxes have been checked?
[ ] Did you mark as Please Merge?

The crash we are seeing in Travis might be related to this JDK bug: https://bugs.openjdk.java.net/browse/JDK-8208275
At least the crash is at the exact same address in the code.

question on how to PR a PR...
I'm going to add the build.sc support on this PR simultaneously.

question on how to PR a PR...

you can make a PR on my fork

I'm going to add the build.sc support on this PR simultaneously.

awesome!

Thanks for your review @sequencer !
In general the idea behind this PR is to do the minimal, most straightforward changes to get a 2.13 working in CI.
I would be happy about any follow-up PRs that improve the use of collections and removes the mapValues(...).toMap pattern.

I think I can fix the semanticdb issue by upgrading to a newer version of scalafix: https://github.com/scalacenter/scalafix/issues/1109

It seems like the the WiringSpec fails because of non-deterministic order probably because  Wiring is iterating over a Map. I will try to make a separate PR to make Wiring (more) deterministic.

I made a PR for the Wiring non-determinism fixes: https://github.com/freechipsproject/firrtl/pull/1799
Once we know that the non-determinism between Scala 2.13 and Scala 2.12 is fixed, we should try to merge #1799 and then I can rebase the Scala 2.13 PR on top of it.

Sorry for the delay, too busy these days, only have time in the midnight :(
I think this PR is good enough to merge for our current status.
After reviewing @ekiwi’s great work, I realised, like @azidar said, maybe we need to “kill the monkey”, only after we fully remove old versions(like 2.11 or even 2.12), we can finally update our codes with new features in Scala 2.13, or even dotty.
I ask some chisel users, I found most of them never care the Scala version, only one line change in build.sbt in their code base. So maybe to release our burden, we can considering drop old Scala version more radically.
So here is just a proposal(maybe we can discuss in new Monday):
1.4: cross 2.11 (deprecate) 2.12 (deprecate) 2.13(support)
1.5: cross 2.11 2.12 2.13(deprecate) 2.14(support)
1.5: cross 2.13 2.14 (deprecate) dotty(support)
As for the strict types(remove .toMap and .toSeq), it contains a big API change which I think it’s can be done in 1.4, which won’t block our status:

updating IR.scala
fix all tests
Add a compatibility objects for the plugins and deprecate in 1.4. Removed in 1.5


Assignment 1 Jitske van Ede

Introduction

Hi, my name is Jitske. I am doing my PhD at the faculty of Applied Sciences in the Environmental Biotechnology group and almost finished my first year. In my free time I really like to go rowing.
Describe your research in 2-3 sentences to someone that is not from your field (please avoid abbreviations)

My research focuses on the the identification of an enzyme (a glycosyltransferase) which transfer so called nonulosonic acids (a specific type of sugars) onto the flagellin proteins of pathogenic bacteria. For this I will work a lot with mass spectrometry, and first aim to establish a metabolomics method to scan for these sugars in microbes, which will later be used as a substrate for the enzyme.
My research entails the following aspects:

Research Aspect
Answer

Use/collect personal data (health data, interviews, surveys)
No

Use/collect experimental data (lab experiments, measurements with instruments)
Yes

Collaborate with industry
Maybe

Write/develop software as the main output of the project
No

Use code (as in programming) for data analysis
Yes

Work with large data (images, simulation models)
Yes

Other:
N/A

Reflections on the importance of RDM videos

The video clarifies the importance of data handling and storage very well. It shows the importance of storing your data, but also of having a proper documentation, making it easy to look back at your data and thereby allowing reproducibility. A worst nightmare would really be to lose all my data and thereby the work and time spend on it. So far I luckily do not have any horror stories.
What would you like to learn during this course?

I am mostly working with mass spectrometry data, for which the raw data is automatically backed-up and therefore accessible. However, dataprocessing often consumes a lot of time and I would like to learn good ways on how to store and manage my processed data.
Checklist assignments

[x] Assignment 1: creating a GitHub issue (before Class 1)
[x] Respond to the GitHub issue on 'data challenge'
[x] Assignment 2: Data Flow Map 1 (share a link in this issue before 17 May 13:00). Link: https://surfdrive.surf.nl/files/index.php/s/pu2mw8XQOKr0nWK
[x] Provide feedback to at least one Assignment 2 from another participant
[x] Respond to the GitHub discussion on 'licenses'
[x] Respond to the GitHub discussion on 'folder structure'
[x] Respond to this GitHub issue with your readme file
[ ] Provide feedback to at least one readme file from another participant
[x] Assignment 3: Data Flow Map 2 (share a link in this issue before 31 May 13:00). Link: JvE_RDM101_Assignment3_DataFlowMap_01.
[ ] Provide feedback to at least one Assignment 3 from another participant
[ ] Assignment 4: Data Management Plan (before Class 2)
[ ] Respond to the GitHub discussion on 'Data Management Plans' if you have any questions (optional)
[ ] Assignment 5: Data Flow Map 3: submit your slide (before Class 2)

Hey @jmvanede , your data flow map looks clear and complete to me. I have a minor suggestion: you could consider using OneNote for your lab journal. I used to keep a physical lab journal, which worked just fine, but using OneNote was a gamechanger for me. Linking multiple files to a protocol, being able to change and read notes whenever you have a PC with available, ordering different experiments by category, etc. It connects to the point @EstherPlomp made as well: you can keep online and offline copies of the notebook as a form of backup.

Thanks for sharing this @MPolinder!

Hi @EstherPlomp and @MPolinder, thank you both for the feedback! It is indeed a good point that I need to back-up my labnotes. I will look into OneNote as well.

This is the README file I created:
JitskevanEde_NT_Sugars_README.txt

Thanks for sharing your assignment 3 @jmvanede! Well done: it is very comprehensive and clear! I only have a couple of thoughts/pointers:
Metadata

Information about libraries/dependencies and their versions may be especially important for code to run properly

File formats

MATLAB is indeed not an open file format. That doesn't necessarily mean that you need to convert it to Python. If you can indeed share as much as possible perhaps a re-user could do this themselves. As MATLAB is fairly widely used it is not a bad thing per-se that you're using this, it is just that Python is more accessible as it doesn't require licenses to use it. If you have a chance to start with Python this would be better, but you also shouldn't spend half of your PhD converting code :)

Data Publication

I see some conflicting information in your answers here: on the one hand you state that you won't share the data in a repository but in the journal article itself, and on the other hand you're stating that you'll use 4TU.ResearchData and Metabolome Xchange. If you're sharing the data directly in the article it is fine to only share it in the article. Supplemental materials are not a good idea, however: these do not get a DOI (only the article itself!) and sharing data via supplemental materials do not follow the FAIR principles. As a PhD candidate of TU Delft you're expected to follow these FAIR principles, next to some of the other reasons that supplemental materials are not a great way of sharing data.
While GitHub is indeed a great place to share code, it doesn't actually allow you to assign a DOI to your repository. Here the integration with data repositories comes in, such as 4TU.ResearchData. When you share a snapshot of the repository on 4TU.ResearchData it will assign this DOI and also preserve your code for the long-term. GitHub is not a long-term storage solution as you can delete your repositories, or Microsoft could decide to do so whenever they feel like changing their terms of use.

I hope this makes sense! If not, please also let me know :)
I'll get back about your READme file later!

And regarding your README: This looks great - well done! I only have some minor comments:

For the license/restrictions you can refer to your preferred license: CC-BY. While requiring citations is not a strict restriction, it technically is a restriction.
For external READme's it can be helpful to ORCID information. This is a persistent identifier for researchers. You can register for one here:  and you can have a look at Martin's ORCID  to see what this looks like when you have more research outputs.
Very nice methodological overview! Well done! If you want to share the methods more publicly you can also consider using protocols.io, which is a repository for protocols/methods.

Dear @EstherPlomp, Thank you for the feedback! I had a question regarding the part about Data Publication. I indeed stated that for some datasets I would use a repository, since it includes large raw data files, which cannot be published as it is. On the other hand, the HPLC chromatograms will most likely consist of one or a few figures which would be easier to publish in the article itself. But if I understand correctly, it would be best to store all the datasets on a repository such as 4TU.ResearchData?

Hi Jitske,
I read your Assignment 3 flow map and it looks very complete. I just have one suggestion regarding the lab notes. I'm still looking for the best option myself but I read about these 2 electronic lab notebooks which the TU Delft has subscriptions with. Here is the link, maybe it's worth it and avoid scanning all the notebook and have your notes in a more accessible way: https://www.tudelft.nl/en/library/research-data-management/r/manage/electronic-lab-notebook.
Let me know if you try any or OneNote and we can share experiences!

Hi @jmvanede, I fully agree with Esther about your Assignment 3. It is very extensive and clear!

Dear @EstherPlomp, Thank you for the feedback! I had a question regarding the part about Data Publication. I indeed stated that for some datasets I would use a repository, since it includes large raw data files, which cannot be published as it is. On the other hand, the HPLC chromatograms will most likely consist of one or a few figures which would be easier to publish in the article itself. But if I understand correctly, it would be best to store all the datasets on a repository such as 4TU.ResearchData?

Sorry @jmvanede: I missed this comment!
Ideally this is indeed shared in a data repository - you can share additional files via the supplemental files in journals, but this has several downsides. If you only share figures and there is space for all of the figures in the article, then it is of course fine and you don't need to duplicate that information elsewhere. If you already have to share some data in the data repository anyway (for some of these raw data files) - it is hopefully not too much effort to add any additional figures/data.
I hope this makes sense - if not, please also let me know!


[Ethan] A few, mostly nav-related, modifications

I have a couple spec failures that are not showing in master; here is the output.
Failures:

  1) tandem/pages/edit.html.slim renders the edit page form
     Failure/Error: assert_select "input#page_parent_id", :name => "page[parent_id]"
     MiniTest::Assertion:
       Expected at least 1 element matching "input#page_parent_id", found 0.
     # (eval):2:in `assert'
     # ./spec/views/tandem/pages/edit.html.slim_spec.rb:14:in `block (3 levels) in <module:Tandem>'
     # ./spec/views/tandem/pages/edit.html.slim_spec.rb:13:in `block (2 levels) in <module:Tandem>'

  2) tandem/pages/new.html.slim renders new page form
     Failure/Error: assert_select "input#page_parent_id", :name => "page[parent_id]"
     MiniTest::Assertion:
       Expected at least 1 element matching "input#page_parent_id", found 0.
     # (eval):2:in `assert'
     # ./spec/views/tandem/pages/new.html.slim_spec.rb:14:in `block (3 levels) in <module:Tandem>'
     # ./spec/views/tandem/pages/new.html.slim_spec.rb:13:in `block (2 levels) in <module:Tandem>'

Hahaha. I saw your comment and was confused because I knew I ran the spec. I went to my terminal to see what was up and saw in the terminal history the exact same failures. I guess it's important to check on the outcome of the tests, not just run 'em. On it.

Fixed.

hahahaha, yeah, CI would be a lot easier if we just had to RUN the tests :)


GSE227136 - Cell type-specific and disease-associated eQTL in the human lung

Project short name:
Cell-type-specific-eQTL-lung  (Name to be changed to more human readable by wrangler if wanted)
Primary Wrangler:
Secondary Wrangler:
Link to Ingest
https://contribute.data.humancellatlas.org/projects/detail?uuid=7bc1f14b-5e64-4c7f-86b0-23596b97e2aa
Associated files

Google Drive:

Published study links

Paper: Cell type-specific and disease-associated eQTL in the human lung

Accessioned data: GSE227136

Key Events

[ ] Convert published metadata to HCA spreadsheet
[ ] Manually curate dataset to meet HCA metadata standard
[ ] Collect any matrix and cell-type annotation files
[ ] Are the analysis files suitable for CellxGene? If something is missing get in touch with the authors to request it
[ ] Upload sheet to validate metadata
[ ] Transfer raw files to ingest to validate data files
[ ] Check linking using ingest graph validator
[ ] Ask the Secondary Wrangler for an end-to-end review of the project. Ask the Expertise Wrangler to review specific tabs if needed
[ ] Submit dataset to Production
[ ] Complete the Export SOP
[ ] Convert project data to SCEA format following the SCEA conversion SOP if appropriate

This paper is described as follows:
Contains unpublished data and previously published data from four separate papers. None of the data is new primary data from this dataset.
Have decided not to continue wrangling this for now due to not having a way to represent meta-analysis and data that is not primary data in Ingest and the DCP.

@idazucchi to contact network if they want all the primary data

this could be a candidate for ticket 973

discussed in ops review 6-09-23

I'm trying to figure out which samples are primary data, based on the samples in this dataset and on the samples used for the v1 lung atlas

extracted metadata matrix from 23gb seurat object with code here
Bash

ssh codon-login

Codon cluster login-node

cd /nfs/production/tburdett/hca/arsenios/
wget https://ftp.ncbi.nlm.nih.gov/geo/series/GSE227nnn/GSE227136/suppl/GSE227136_ILD_all_celltypes_Seurat.rds.gz
bsub -Is $SHELL

Codon cluster interactive shell

module load r-4.1.1-gcc-9.3.0-jkdw35f
module load hdf5-1.12.1-gcc-9.3.0-py4fnly
module load r-magrittr-2.0.1-gcc-9.3.0-th6svrw
module load r-igraph-1.2.6-gcc-9.3.0-r3z6ni3
module load r-lattice-0.20-44-gcc-9.3.0-r5kphdk
module load r-rcpp-1.0.7-gcc-9.3.0-l2fkz6p
gunzip /nfs/production/tburdett/hca/arsenios/GSE227136_ILD_all_celltypes_Seurat.rds.gz
R

Codon cluster interactive shell R-session

.libPaths( c('/homes/arsenios/rLib_arsenios', .libPaths() ) )
library(Seurat)
seu <- readRDS("/nfs/production/tburdett/hca/arsenios/GSE227136_ILD_all_celltypes_Seurat.rds")
<EMAIL_ADDRESS>"/nfs/production/tburdett/hca/arsenios/GSE227136_ILD_all_celltypes_Seurat.csv")
quit('n')

Codon cluster login node (download file)

for mac: Apple menu -> System Preferences -> General -> Sharing -> Remote Login turn on & click (i) and Allow full disk access and get IP used to ssh
scp /nfs/production/tburdett/hca/arsenios/GSE227136_ILD_all_celltypes_Seurat.csv USER@XXX.XXX.XXX.XXX:/Users/USER/Desktop/

Donor
I Included VUHD071_donor because it's one of the samples in the lung atlas manifest listed for this paper and the corresponding library is in at least one cell count file
There is a big mismatch in the donor numbers/samples between the paper and GEO - the authors are aware and got multiple emails about it apparently - and it's due to GEO asking them to reupload some samples.
I've applied the suggestions and I'm graph validating

exported and filled import form

verified in browser


Illegal embedded sign character - spring cloud sleuth + configserver in Brixton M5

see https://github.com/spring-cloud/spring-cloud-netflix/issues/837

How are you connecting to the app (browser, curl, etc)? Steps to reproduce (and maybe a sample project) would be very helpful.

i feared you will say that ..its some work to do extract the code from the one i am not allowed to pass out.
I guess the request is issues by the spring boot admin server ( https://github.com/codecentric/spring-boot-admin ). The admin asks all microservices for the info's.
Why do you think the cause is on client side? .. I would expect the tracing is done on server side and therefore the issue shall be searched there.

I tracked down the cause.
This is my request:
HttpServerExchange{ GET /management/configprops request {Accept=[application/json, text/plain, */*], Accept-Language=[de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4], Accept-Encoding=[gzip], X-Span-Name=[http/admin/ui/api/applications/f2367ee1/configprops], User-Agent=[Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36], X-Trace-Id=[77198da9-a88f-4017-ad3f-7598420fa58a], Connection=[Keep-Alive], X-Span-Id=[77198da9-a88f-4017-ad3f-7598420fa58a], x-forwarded-proto=[http], Cookie=[JSESSIONID=92F6474BAB06B8187C96F0390FF52392], Referer=[http://localhost:8602/admin/ui/], x-forwarded-host=[localhost:8602], x-forwarded-prefix=[/admin/ui/api/applications/f2367ee1/configprops], Host=[localhost:8624]} response {}}
The exception throws because the Span.fromHex(String hexString) tries con convert
"77198da9-a88f-4017-ad3f-7598420fa58a" (X-Trace-Id) to an BigInteger. That fails cause of the "-" signs.

We've migrated from UUID IDs to long based IDs. ATM the ID is in fact a random Long so you have to change the way you're generating ids


Release BigQuery 1.3.0

Closes https://github.com/GoogleCloudPlatform/google-cloud-python/issues/5432

Release is at https://github.com/GoogleCloudPlatform/google-cloud-python/releases/tag/bigquery-1.3.0


ansible-semaphore-9.5.0 2.10 - bad boolean environment value '0

Hello, Guys
I would like your help, if possible. So, I'm trying to configure a repository in my github through of ansible semaphore, but it has a error bellow;
I configured the key private, and I putted the public key in my github. In my environment has {} but I tried to put { "environment": "localhost"
}
But I have the same error.  In the documentation I didn't see this specific error.
I will appreciate your help if possible you help me.
Tks so much
Versions
kubernetes v1.30.1
ansible-semaphore-9.5.0 2.10
Helm v3.15.1
1:55:09 PM
Cloning into 'repository_4_7'...
1:55:09 PM
fatal: bad boolean environment value '0
1:55:09 PM
' for 'GIT_TERMINAL_PROMPT'
1:55:09 PM
Failed updating repository: exit status 128
1:55:09 PM
Running playbook failed: exit status 128

This sounds more like a general Semaphore issue, please report it upstream as this repository is only about the helm charts itself.


Unable to download archive from server. Please update PhoneGap CLI issue.

Hi,
I have downloaded phone gap desktop version 0.1.7 on my windows 8.1 enterprise.
I have android device of version 4.2.1
I have downloaded phone gap developer of version 1.5.2
I m not able to connect my phone app with desktop app
Please help.

Hey there @anshumittal2208
It seems like things should be working on your end - would you mind filling out this questionnaire to help us trouble shoot this connection issue? You might also figure out where the error is in your setup from that questionnaire.

Closing since we haven't seen very much activity on this issue. Feel free to reopen.

I'm having the same problem

I solved the issue by unblocking port 3000 in Windows Firewall  See https://msdn.microsoft.com/en-us/library/ms175043.aspx for how to do it.


Optimal usage for better rendering speed for multiple (video) frames based on mplcairo?

I am using matplotlib and mplcairo.base for rendering videos. I am using pillow for some post-processing of the individual video frames, so I am (a) triggering figure.canvas.draw() and (b) I am converting the figure to a pillow image by invoking PIL.Image.fromarray(figure.canvas.renderer.buffer_rgba()). I am intentionally creating a new figure per video frame (though this could be simplified in one way or the other). For a complete self-contained example, see below.
On a single core of a somewhat dated 3rd-gen i7, I am getting about 10 frames per second based on this approach. I was wondering whether there is any potential for further optimizations (with respect to the usage of matplotlib and mplcairo.base) that I may have overlooked.
import mplcairo.base # import before matplotlib (?)
import matplotlib
matplotlib.use("module://mplcairo.base", force = True) # use mplcairo.base as non-GUI backend
import matplotlib.pyplot as plt # import pyplot last

from PIL.Image import fromarray

from tqdm import tqdm

FRAMES = 120
DPI = 100
x = list(range(FRAMES))
y = [item ** 2 for item in x]

stream = open('/dev/null', 'wb') # target for images ... something like ffmpeg

for frame_number in tqdm(range(FRAMES)):

    fig = plt.figure(figsize = (1920 / DPI, 1080 / DPI), dpi = DPI)

    ax = fig.subplots()
    ax.plot(x[frame_number], y[frame_number]) # simple test plot

    fig.canvas.draw() # draw figure (appears to be required?)
    image = fromarray(fig.canvas.renderer.buffer_rgba()) # convert image to PIL object

    plt.close(fig) # destroy figure

    # some post-proc on "image" ...

    image.save(stream, 'bmp') # send image to stream
    stream.flush() # flush the stream's buffer
    image.close() # destroy image

stream.close()

You are creating a new figure and axes at every iteration of the loop.  This is quite slow; you should instead reuse the same axes object (even better, reuse the same Line2D object and just update its data).  Not triggering autoscaling at every iteration would also help.
On mplcairo's side, the slowest part is (by far!) the conversion from cairo's internal format (premultiplied ARGB32) to the format that pillow wants (non-premultiplied RGBA8888) (see e.g. https://en.wikipedia.org/wiki/RGBA_color_model#Representation).  You can access the raw renderer buffer with canvas.renderer._get_buffer() (there's supposed to be a public API for that via mplcairo.get_raw_buffer(canvas), but that was broken until I read this (so thanks for the report :)), and I just pushed a fix), likely you can then stream the raw bytes to ffmpeg together with something like -pix_fmt bgra although I don't know exactly what ffmpeg does wrt. alpha.

From a quick profiling I guess you can probably gain a factor of 2 with these changes?  (Consider using something like https://github.com/benfred/py-spy for this kind of investigations.)

You are creating a new figure and axes at every iteration of the loop [...]

I know that this is less than ideal, but that's another playing field. I am trying to develop a library where the management of figures is left to the user (see here for an example). The user may or may not do what you suggest. I am "simply" trying to "extract" an image from the figure within my library.

[...]  conversion from cairo's internal format (premultiplied ARGB32) to the format that pillow wants (non-premultiplied RGBA8888) [...]

Thanks a lot, this is very helpful. The calls to buffer_rgba account for about a third of the runtime of my example. I am actually relying on pillow for post-processing and compositing, so I guess I'd have to optimize this very part: The hand-off from mplcairo to pillow (?). From the top of your head: Do you see any (theoretical) room for improvement for this particular task within your code?

[...] but that was broken until I read this (so thanks for the report :))

You're welcome. I spent a few hours trying to get access to the raw buffer and thought it was me ... until I gave up ;)

Do you see any (theoretical) room for improvement for this particular task within your code?

That's some very boring numpy (see the various cairo_to_foo functions in _util.py).  You could try rewriting it in C(++) as there's usually some non-negligible overhead from numpy, though I have no idea of how much.  You could also try to PR support for ARGB32 into Pillow :)

I moved the converters to C++.  Indeed they are much faster now; please give them a try.
I'll keep this open re: documentation of high-performance (conversionless) interaction with matplotlib.animation, though.

Wow, thanks a lot. It's the stuff in master, commit c3c1732c16e72fea4265389bd5eba28473820853, right?
Btw: I did not have time to poke around this library in depth (yet), but I noticed that you are using pycairo (instead of plenty of other Python bindings for cairo). Is there some place where you directly/publicly expose the pycairo context object and/or the respective image surface object?
Just for comparison, I'd like to test and benchmark this: I believe pillow can handle the conversion itself, if I understand the docs correctly. I just do not know about the speed, but pillow can handle mode = "RGBa" (pre-multiplied alpha) for importing images at least, which (I guess) results in pillow converting the image internally. I tested it with the frombuffer method on pycairo image surface objects and it appeared to work.

This shaves a lot of runtime off of my example. I turned the turbo of my CPU off for somewhat cleaner results ...

mplcairo 3.3 (official manylinux): 7.75 fps
mplcairo 3.3 (built locally, openSUSE Leap 15.1 - just for reference): 7.75 fps
mplcairo 0.3.post42+gc3c1732: 12.05 fps

That's a 1.5x improvement. (The version number of the git-based build is a bit odd.)
For comparison, I left the conversion to pillow (and validated the results against your implementation):

pillow variation 1 (split): 10.79 fps

    image = frombuffer(mode = "RGBa", size = (1920, 1080), data = fig.canvas.renderer._get_buffer())
    b, g, r, a = image.split()
    image = merge('RGBa', (r, g, b, a)).convert("RGBA")

pillow variation 2 (numpy slicing): 8.57 fps

    image = fig.canvas.renderer._get_buffer()
    image[..., :3] = image[..., 2::-1]
    image = frombuffer(mode = "RGBa", size = (1920, 1080), data = image).convert("RGBA")

pillow on its own is not too bad (though still a little slower than your implementation), but as soon as numpy gets "too involved", speed drops ...
Thanks a lot!

Btw, gcc (7.5.0) throws a few warnings when compiling your latest changes.

In file included from src/_unity_build.cpp:2:0:
src/_mplcairo.cpp: In member function ‘pybind11::array_t<unsigned char> mplcairo::Region::get_st_rgba8888_array()’:
src/_mplcairo.cpp:116:37: warning: unused variable ‘x0’ [-Wunused-variable]
   auto const& [x0, y0, width, height] = bbox;
                                     ^
src/_mplcairo.cpp:116:37: warning: unused variable ‘y0’ [-Wunused-variable]
src/_mplcairo.cpp: In member function ‘pybind11::bytes mplcairo::Region::get_st_argb32_bytes()’:
src/_mplcairo.cpp:138:37: warning: unused variable ‘x0’ [-Wunused-variable]
   auto const& [x0, y0, width, height] = bbox;
                                     ^
src/_mplcairo.cpp:138:37: warning: unused variable ‘y0’ [-Wunused-variable]
src/_mplcairo.cpp: In destructor ‘mplcairo::GraphicsContextRenderer::~GraphicsContextRenderer()’:
src/_mplcairo.cpp:294:36: warning: unused variable ‘pathspec’ [-Wunused-variable]
     for (auto& [pathspec, font_face]: detail::FONT_CACHE) {

Wow, thanks a lot. It's the stuff in master, commit c3c1732, right?

Yes.

Btw: I did not have time to poke around this library in depth (yet), but I noticed that you are using pycairo (instead of plenty of other Python bindings for cairo).

Only on Unix.  This is mostly a way to make sure that libcairo.so is present on the system and can be loaded (I basically delegate that task to pycairo, and then reuse the library handle from pycairo).  I could have used cairocffi instead, but pycairo additionally lets me support gtk_native rendering (see from_pycairo_ctx), which necessarily relies on pycairo, so that was the tiebreaker.

Is there some place where you directly/publicly expose the pycairo context object and/or the respective image surface object?

No, but that should again be easily implementable.  Do you want to give it a try? :p Although if all you care about is benchmarking, see the answer below.

Just for comparison, I'd like to test and benchmark this: I believe pillow can handle the conversion itself, if I understand the docs correctly. I just do not know about the speed, but pillow can handle mode = "RGBa" (pre-multiplied alpha) for importing images at least, which (I guess) results in pillow converting the image internally. I tested it with the frombuffer method on pycairo image surface objects and it appeared to work.

I don't think you need to get a pycairo image surface for that; get_raw_buffer should really have minimal overhead as there's no copy involved whatsoever (I guess I could also return a memoryview instead of a numpy array for even less overhead, but hopefully that doesn't matter too much?...).

This shaves a lot of runtime off of my example.

I would still strongly suggest moving figure/axes instantiation out of the loop and time only the call to fig.canvas.draw(); even though I realize that you may not be able to control that, the only part I can help with in mplcairo is that one call.  If you want to speed up anything else, you should report on the Matplotlib bug tracker.

Btw, gcc (7.5.0) throws a few warnings when compiling your latest changes.

Looks like these were fixed somewhere between gcc 7.5 and 10.2 but sure, I can improve that.

No, but that should again be easily implementable. Do you want to give it a try? :p Although if all you care about is benchmarking, see the answer below.

Benchmarking is just part of my problems, but this would probably deserve another issue. I was simply wondering whether I could allow a user to directly interact with a pycairo object as my library is already built around pycairo in other places. So if I find some time, sure, I'll give it a try :)

I would still strongly suggest moving figure/axes instantiation out of the loop and time only the call to fig.canvas.draw(); even though I realize that you may not be able to control that, the only part I can help with in mplcairo is that one call. If you want to speed up anything else, you should report on the Matplotlib bug tracker.

Thanks for the suggestion and all the help. Well, re-using a figure makes a lot of sense if you know what you are doing. From practical experience, a lot of "casual" matplotlib user really do not, I am afraid. I am essentially trying to build a wrapper allowing to render video frames in parallel and out of order, which makes the entire re-use-bit a little tricky for an average end-user. Therefore, from a design-perspective, my best bad idea is to generate a new figure per video frame by default - unless a user explicitly disagrees with this approach. In comparison, matplotlib.animation follows fundamentally different design paradigms (targeting somewhat different use-cases). I am trying to build a more generic system in which I can combine / composite images from multiple plot systems, which is a task that I am coming across rather often. I have been hacking stuff like this around matplotlib.animation, but this usually ends up being rather annoying, inflexible and unmaintainable. Anyway, I am very open to suggestions in terms of providing a robust and more sensible default approach to potential users.

get_raw_buffer should really have minimal overhead as there's no copy involved whatsoever (I guess I could also return a memoryview instead of a numpy array for even less overhead, but hopefully that doesn't matter too much?...).

I'll play a bit more and let you know what I find.

Looks like these were fixed somewhere between gcc 7.5 and 10.2 but sure, I can improve that.

No need to fix it from my perspective. I posted it just in case you missed something. SUSE Leap runs on a rather dated toolchain, I know.

re: figure.canvas.draw(): Certainly I understand that many users will just be recreating figures all the time.   I think better docs can help there, but really, my only point was that you asked a question about performance, and if you want to benchmark mplcairo's performance then you should use fig.canvas.draw() because stuff outside of it is, well, outside of mplcairo's control.
re: get_raw_buffer performance: you could try changing _get_buffer and the functions down the chain to return py::memoryview, which should mostly be a matter of calling py::memoryview::from_buffer (https://pybind11.readthedocs.io/en/stable/advanced/pycpp/numpy.html#memory-view) at the lowest level.  Do let me know if you see any speedup there.

Looks like
diff --git i/src/_mplcairo.cpp w/src/_mplcairo.cpp
index 40e68d4..287f9c9 100644
--- i/src/_mplcairo.cpp
+++ w/src/_mplcairo.cpp
@@ -564,6 +564,18 @@ void GraphicsContextRenderer::_show_page()
   cairo_show_page(cr_);
 }

+py::object GraphicsContextRenderer::_get_context()
+{
+#ifndef _WIN32
+  cairo_reference(cr_);
+  return py::reinterpret_steal<py::object>(
+    PycairoContext_FromContext(
+      cr_, &PycairoContext_Type, py::cast(this).ptr()));
+#else
+  throw std::runtime_error{"_get_context is not available on Windows"};
+#endif
+}
+
 py::array GraphicsContextRenderer::_get_buffer()
 {
   return image_surface_to_buffer(cairo_get_target(cr_));
@@ -2113,6 +2125,7 @@ Only intended for debugging purposes.
     .def("_set_metadata", &GraphicsContextRenderer::_set_metadata)
     .def("_set_size", &GraphicsContextRenderer::_set_size)
     .def("_show_page", &GraphicsContextRenderer::_show_page)
+    .def("_get_context", &GraphicsContextRenderer::_get_context)
     .def("_get_buffer", &GraphicsContextRenderer::_get_buffer)
     .def("_finish", &GraphicsContextRenderer::_finish)

diff --git i/src/_mplcairo.h w/src/_mplcairo.h
index 15756f0..9526acf 100644
--- i/src/_mplcairo.h
+++ w/src/_mplcairo.h
@@ -68,6 +68,7 @@ class GraphicsContextRenderer {
   void _set_metadata(std::optional<py::dict> metadata);
   void _set_size(double width, double height, double dpi);
   void _show_page();
+  py::object _get_context();
   py::array _get_buffer();
   void _finish();

is enough for you to get the context via renderer._get_context() (and then the surface via get_target()), although it's quite likely I may have gotten some refcounting wrong somewhere.

I pushed mplcairo.get_context(canvas) to master.

Actually, now that I have exposed get_context and that conversion to RGBA8888 has been greatly sped up, I doubt that switching between sending ARGB and BGRA to ffmpeg really matters wrt. speed, especially considering all other slow downs which are out of my control (inter-process communication and ffmpeg's own encoding), so I'll close this for now.  Thanks for the report, and feel free to request a reopen if you can point out to other things that can be improved on my side.

Thanks for all the help. I've tried to document the usage of matplotlib in the context of my library. I'd very much appreciate a brief review of those words :)
Just for my understanding: When do you plan on releasing a new version of this package including the above mentioned changes? I'd add some info to my documentation saying that things "become faster" with mplcairo >= x.y.z.

Regarding a new release of mplcairo: looks like the Windows CI build just broke again, and I cannot repro the failure locally (nor can I fix the CI by reverting to a previously successful commit) :/ So I'll have to investigate that first and can't make any guarantees re: time.
Regarding your docs (which are super complete, that's an impressive tool!): clear() + plot() is not the best way to go; rather you should create a Line2D object (e.g. plotting empty data self._line, = self._ax.plot([], []) in the beginning, and then only update the data in the line (self._line.set_data(...)).  Note that this will not re-autoscale (unless you call relim() and autoscale_view() after setting the data), but skipping that step (as well as the new Line2D instantiation) should help with performance.

Release: Thanks for the effort, noted.
Docs: Also thanks. I agree that this example is less than ideal. I was looking for some middle-ground for a relatively easy "getting started" example as in that it is "faster" than generating a new figure every time (which it is). I know there is tons of documentation on how to do what you describe, i.e. swap data in lines etc. I'd rather link on a good explanation than add a ton of "unrelated" content into my docs. I can add you suggestion to my example - but could you recommend a good introduction into this topic that I could link to underneath?

I can't think of one right now.  I guess you could always open an issue on the Matplotlib tracker requesting this information to be collected somewhere, I think that would be a useful addition, as I certainly agree updating data on preexisting artists is an advanced concept (it's basically the next step after the OO approach, which is already (sadly) not so well-known).
Also, I just realized that along an orthogonal axis :-), another thing that can speed up Matplotlib is the tricks described in https://matplotlib.org/tutorials/introductory/usage.html?highlight=simplify_threshold#performance.

I spent a bit of time looking at the Windows failure but I still can't even repro it.  In particular, it does not appear to be caused by the well-known numpy1.19.4+Windows bug, as reverting to numpy 1.19.3 does not fix it.
Having some way to dump an actual backtrace on Windows fatal exceptions (similar to https://github.com/matplotlib/mplcairo/blob/dc1a473a8a0cd24c042d4c2de9f169143d51d104/src/_os.cpp#L45 but for Windows) would likely be very heplful...

Would a VM help? There are free images with dev tools offered by Microsoft. They're quite useful, actually.

Thanks, but I am already testing locally on an actual Windows machine :)

Well, it's a pretty "clean" system - very close to what Azure's CI systems run. Maybe it enables you to at least reproduce the error. (Extracting this kind of information from Azure directly is an annoying process, mildly put.)

@s-m-e I ended up releasing 0.4.0 while deactivating most of the Windows CI, as I still cannot repro the underlying issue but a new release was needed anyways for matplotlib 3.4 compatibility.


Fail when adding a S5 to Homebridge

Hello everyone, Im reaching out to see if anyone can help me out with this one.
I have a Roborock S5 that Im trying to add to my Homebridge server, but I am unable to do so.
I have followed all the setup instructions and have managed to retrieve the token before adding the vacuum to the MiHome app, but still im not able to get it to work. I've also tried previous versions of the plugin, with the same luck.
The weirdest is, that I had it working with no issues on my previous server... but had to reset it all and need to add all the devices manually again.
Im using a Pi5 when running Homebridge and all the plugins are supposedly updated to the latest version (inc. Homebridge)
I can provide, login if needed. Thank you before hand.

I have the same problem!

I have that model and it's working fine on my end...

I have followed all the setup instructions and have managed to retrieve the token before adding the vacuum to the MiHome app, but still im not able to get it to work. I've also tried previous versions of the plugin, with the same luck.

Bear in mind that adding the vacuum to the MiHome app (or opening it in the Roborock app, or reconfiguring the WiFi) revokes any previous tokens and generates a new one. The recommendation is to set up the vacuum in the MiHome app, and then get the token.


Nested async-await composables break on the server when trying to do more than one

Environment
Nuxi 3.6.0                                                                                11:36:18 PM
11:36:20 PM
RootDir: /home/projects/nuxt-starter-qynmmz                                                                                11:36:20 PM
Nuxt project info:                                                                                11:36:20 PM

Operating System: Linux
Node Version:     v16.20.0
Nuxt Version:     3.6.0
Nitro Version:    2.5.1
Package Manager<EMAIL_ADDRESS>Builder:          vite
User Config:      -
Runtime Modules:  -
Build Modules:    -

👉 Report an issue: https://github.com/nuxt/nuxt/issues/new                                                                                11:36:20 PM
👉 Suggest an improvement: https://github.com/nuxt/nuxt/discussions/new
👉 Read documentation: https://nuxt.com
Reproduction
https://stackblitz.com/edit/nuxt-starter-qynmmz?file=composables%2FuseGameData.ts,composables%2FuseApi.ts,server%2Fapi%2F[slug].get.ts,pages%2Findex.vue,layouts%2Fdefault.vue,package-lock.json
Describe the bug
This bug seems to happen when doing multiple nested async-awaited composable calls (doesn't seem to matter where they are run from). I am only 20% sure that this is an actual issue, and even less sure if its something that can be fixed. It might be that I am doing something wrong from a design point of view.

Additional context
I have a bigger non stackblitz example with actual database connection that I can share, but its a bit harder to get that up and running.
Logs
✔ Vite server hmr 47 files in 389.995ms                                                                                11:35:19 PM
fetch from : /api/users                                                                                11:35:19 PM
guns response: { data: { value: [ 1234, 12345, 56456 ] } }                                                                                11:35:19 PM
[11:35:19 PM] Error: [nuxt] A composable that requires access to the Nuxt instance was called outside of a plugin, Nuxt hook, Nuxt middleware, or Vue setup function. This is probably not a Nuxt bug. Find out more at https://nuxt.com/docs/guide/concepts/auto-imports#using-vue-and-nuxt-composables.
    at Module.useNuxtApp (file:///home/projects/nuxt-starter-qynmmz/node_modules/nuxt/dist/app/nuxt.js:174:13)
    at Module.useAsyncData (file:///home/projects/nuxt-starter-qynmmz/node_modules/nuxt/dist/app/composables/asyncData.js:26:38)
    at Module.useFetch (file:///home/projects/nuxt-starter-qynmmz/node_modules/nuxt/dist/app/composables/fetch.js:53:43)
    at Module.fetchFromApi (file:///home/projects/nuxt-starter-qynmmz/composables/useApi.ts:5:55)
    at createGameFromData (file:///home/projects/nuxt-starter-qynmmz/composables/useGameData.ts:8:56)
fetch from : /api/guns

Related issues on github that i looked at before posting:
https://github.com/nuxt/nuxt/issues/12342
https://github.com/nuxt/nuxt/issues/18539
https://github.com/nuxt/nuxt/issues/14805
https://github.com/nuxt/nuxt/pull/20608

This is documented behaviour: https://nuxt.com/docs/guide/concepts/auto-imports#using-vue-and-nuxt-composables.
You should in general either not create async composables (strongly recommended) or if you are using composables that rely on nuxt/vue instance being set, you must obtain the nuxtApp instance before the first async operation, and then call them with nuxtApp.runWithContext.

You should in general either not create async composables (strongly recommended)

How should I understand this sentence? I often use await useFetch within async composables.

@Noah-Ywh I would not advise it.