[$500] Web - IOU - Incorrect IOU preview component is displayed when requesting money

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

Action Performed:

Open a tab where user A is signed in
Open a chat with user B
Click on '+' icon > 'Request money' > 'Scan' tab > 'Choose file' > Select an image > 'Request' button
Click the request preview
Click the receipt image
Click the three-dot menu >
Select replace > click on 'Choose file' > select a new image
Open a tab where user B is signed in
Open a chat with user A
Click on '+' icon > 'Request money' > 'Manual' tab > enter amount > click on 'Next' button > click on 'Request'
Observe that two IOU preview components are created
Click on the second iOU preview component > observe that 'RBR' is displayed on LHN

Expected Result:
A single IOU preview component should be displayed
Actual Result:
Two IOU preview component is displayed
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

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

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

Version Number: v1.3.74-0
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/115492554/54682f4d-1547-4eff-8be2-0a19701c1664
https://github.com/Expensify/App/assets/115492554/80ac0159-4ec1-4e45-adad-f9dc732d5d89
Expensify/Expensify Issue URL:
Issue reported by: @Natnael-guchima
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1695207878592009
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01bd1c573eb7a06cee
Upwork Job ID:<PHONE_NUMBER>653244928
Last Price Increase: 2023-10-02

@garrettmknight @sakluger @jjcoffee
I could reproduce this on staging but not on latest main.
Can we confirm if this is still a bug?

Are you still able to repro @Natnael-Guchima? I find the steps a bit confusing, in the video it looks like we're opening the tab with User B signed in in step 7?

@jjcoffee Yes, the issue is still reproducible. You are right on the video we are opening a tab where use B is signed in. The steps should have been:

Open a tab where user B is signed in
Open a chat with user A

I also find this a bit confusing, but I think I understand. When I request money from you and then I edit the receipt image within that request, your next request back to me gets split into two separate request components/elements.
@Natnael-Guchima is that an accurate description of what is happening here?

@sakluger yes, that is an accurate description of the issue.

Waiting for proposals.

Proposal
Please re-state the problem that we are trying to solve in this issue.
When user A request money using scan receipt from user B and, then, user B requests money using manual request, two report preview comments are displayed in userB’s chat report.
What is the root cause of that problem?
When user A request money using scan receipt from user B (without entering any request amount), it will create a whisper report preview message (say PREVIEW-A) so that user B is not aware of the scan receipt money request. Now, when user B generates a money request for user A, the optimistic report preview message (say PREVIEW-B) get’s created and RequestMoney API is called. The BE, however, detects that PREVIEW-A already exists and updates the money request from user B and sends the updated PREVIEW-A response. This causes a dangling PREVIEW-B that get’s displayed in user B’s chat report along with PREVIEW-A. This is the root cause of the problem.
What changes do you think we should make in order to solve the problem?
To solve the problem, we can detect the dangling report preview for IOU report within shouldReportActionBeVisible here. We can identify the dangling report preview by checking for a valid a) childReportID (compare with originalReport.linkedReportID) and b) childType (compare with iou). Note that originalReport.linkedReportID is optimistically assigned during report preview creation here. If a report preview do not match these conditions, we can consider this to be a dangling report preview, and, prevent display in chat report.
The condition can be like this:
    // Ignore report preview action that does not have a valid linked IOU Report
    if(isReportPreviewAction(reportAction)  && !isPending && !isIOUReportPreviewMessage(reportAction))
    {
        return false;
    }

Since childReportID and childType get’s assigned only on successful API response, we also need to add condition !isPending so that the optimistic preview action is displayed during pending action state.
function isIOUReportPreviewMessage(reportAction = {}) {
    const {childType = '', childReportID = 0} = reportAction;
    return childType === CONST.REPORT.TYPE.IOU && (String(childReportID) === getIOUReportIDFromReportActionPreview(reportAction));
}

Test Video
https://github.com/Expensify/App/assets/3004659/ad472b89-d564-4c1a-b53c-01b6052f4cec
What alternative solutions did you explore? (Optional)

Reviewing tomorrow!

Posted to Slack with a friendly bump for @jjcoffee to review the proposal.

Hmm I can't repro on latest staging (v1.3.84-1) with the exact steps in the issue. @rojiphil or @Natnael-Guchima are you still able to reproduce? Are there any special extra steps?
I can reproduce a similar "double preview component" appearing with a completely new user, but this seems to be a BE issue as User B (new user) doesn't receive the request if there's no amount (e.g. if you use a test image), until you manually add the amount. If User B requests money before the amount is added, then the same double preview component appears.

are you still able to reproduce? Are there any special extra steps?

@jjcoffee
I am able to reproduce this in the latest main.
Please refer to the attached video for steps.
Hope this helps.
https://github.com/Expensify/App/assets/3004659/edde37ee-cdbd-4a64-9fd2-79cc41ee7458

@rojiphil Hmm so maybe it needs to be that there are no outstanding requests as a precondition (I see that you have previous requests but they are all "paid")?

@jjcoffee
You are right. And, this can be consistently reproduced under that precondition.

Thanks @rojiphil for the help in reproducing this issue.
@jjcoffee given that information, what do you think of @rojiphil's proposal?

@jjcoffee
I think the precursor to this issue comes from this PR.
The tests mentioned in PR do not cover the scenario that we are addressing here.
And, maybe, the note comment in the Tests section in  PR description refers to this issue.
Hope this helps further.
Also, awaiting your feedback on the comment here

@rojiphil Do you mean this note?

Note that for all tests: adding money requests to an IOU report that already exists via Global Create creates an extra IOU report action item, because the reportID is not in the URL when going thru Global Create. [...] use the + button the chat to create requests.

I think our case is the opposite, we're saying that this only happens when there isn't any existing IOU report right? (Also the issue description we're using the + button rather than global create/FAB).
Are you able to add any context to your RCA as to why this would only be happening when we don't have an existing IOU report?

I think our case is the opposite, we're saying that this only happens when there isn't any existing IOU report right? (Also the issue description we're using the + button rather than global create/FAB).
Are you able to add any context to your RCA as to why this would only be happening when we don't have an existing IOU report?

@jjcoffee
Yes, that is the same note.
Let me try to add context to my RCA.
What I understood by an IOU report that already exists means it exists in BE for this chat between User A and User B (generated by User A FE to create a report represented by PREVIEW-A). However, when User B generates a money request for User A (represented by PREVIEW-B), User B’s FE is not aware of the IOU report that already exists in BE and creates a new one locally. This generates a dangling IOU report (represented by PREVIEW-B) in User B’s FE because BE will send back IOU report that existed due to PREVIEW-A as part of the MoneyRequest API response.
Does this make sense?
Honestly, I didn’t quite get the global create/FAB thing. Maybe, there is another use case for reproducing this via global FAB.
To me, the test cases really helped me in analyzing our issue.  The test cases only focused on generating a second money request when the first money request had already created an IOU report locally. That works fine.
However, our case is different as User B is not aware of the IOU report generated by User A.

Thanks @jjcoffee, if you can prioritize this one it would be great since it's coming up on one month.

So going through this again I'm leaning towards this being mainly a BE issue as once User A makes their scan money request:

Pusher update with the transaction ID is received by User B, but no IOU report.
User B requests money with an optimistic IOU report ID.
BE responds by setting that IOU report ID to null (i.e. deletes it). However it does not set the relevant reportPreviewAction to null, so that action remains.

So I think we can either ensure that the pusher comes with the new IOU report (as happens with manual requests), or in step 3 above set the reportPreviewAction to null.

So I think we can either ensure that the pusher comes with the new IOU report (as happens with manual requests), or in step 3 above set the reportPreviewAction to null.

@jjcoffee
I think, it’s worth mentioning this issue here where I had suggested a similar option of (2) and (3) but in a different context.
Also, as the initial scan receipt is a whisper message in User A side, it may be intentional to not send a whisper message to other side i.e. User B. So, not sure if (1) would be feasible.
Anyways, I too think that fixing this issue in BE is better.

Okay, thanks @jjcoffee for the review and thoughts! I'll assign a BE engineer to take a look.

I think this is related to receipt scanning methods. I'll assign someone from wave4 to take a look since they will probably have more context on this than me.

@luacmartins , I think this is related to the new code added for receipt scanning. Can you please take a look into it and route it internally to the wave4 team if necessary?

Sure, will do

I don't think that's the correct solution because it'd create a jarring experience for the user when most requests would be merged. I think instead we would create a new one in the BE and just push the new reportID to the FE

TBH I think this is a really edge case scenario and I don't think we should prioritize fixing this issue. I'm gonna close it for now, feel free to reopen if you think we should fix this.


Add Contributor Section to Kubernetes Operator README

To serve our growing set of contributors for the Operator, let's add two things:

Good First Issues
Known Issues

For both items, let's either embed the list or point to query that gets the existing list of them.
To complement this contributor section in the README, @Amruta-Ranade will be pointing to our Operator good first issues from the overall CockroachDB contributor page.
Good First Issues:
We maintain our set of good first issues with the Github issue label. One can see the existing list of good first issues with this query.
Known Issues
Second, let's be transparent about our known issues. I've put together this list of known issues that includes relevant bugs and/or known unimplemented features in the Operator:

VMware Tanzu, EKS and AKS have not been tested.
The Operator has not been tested with Istio.
It does not support multiple clusters for multi-region (e.g. multi-cluster k8s docs without Operator)
No support for pod security policy
Migrating from a deployment using the Helm Chart to the Operator has not been defined nor tested.
There is no support for an ingress object.

Closed by https://github.com/cockroachdb/cockroach-operator/pull/281


Document the security of scoop

I really like the user experience that this project provides.
What I miss is some safety analysis wiki page
I.e. something similar to that chocolatey has: https://chocolatey.org/security

Hi @lukesampson – any thoughts on this? I love scoop but share the concerns or uncertainties some might have around security of the whole system.


Add Tags property for Post

I haven't been able to find a Tags field for the Post class. I was expecting an IEnumerable Tags property there or am I doing something wrong?

Hey Lewis. We’re looking into this.

@LewieMac Please update to 1.3.2 and try again. Let us know if you're still experiencing issues.


Research about tag management system (Google Tag Manager)

Research about tag management systems GA (Google Analytics), SAS (Statistical Analysis System)
Output:

[ ] What is GA (Google Analytics)
[ ] How to add GA code into a React application
[ ] What is SAS (Statistical Analysis System)
[ ] How to add SAS code into a React application

What is GA (Google Analytics)

Google Analytics is a web analytics service offered by Google that tracks and reports website traffic and also mobile app traffic & events, currently as a platform inside the Google Marketing Platform brand.

How to add GA code into a React application
The gtag.js snippets for a Universal Analytics property and for a Google Analytics 4 property are fundamentally the same. Both snippets have the following structure:
<script async src="https://www.googletagmanager.com/gtag/js?id=<Some Property ID A>"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', '<Some Property ID A>');
  gtag('config', '<Some Property ID B>');
  gtag('event', 'sign_up', { 'method': 'email' });
  gtag('event', 'view_video', { 'send_to': '<Some Property ID B>' });
</script>

Line 1:  <Some Property ID A> will begin with "AW-" or "DC-".
If this line is already present, it doesn’t need to be implemented a second time.
gtag('config', '<Some Property ID A>'): The property ID may represent measurement for different Google products, including a Universal Analytics property ("UA-XXXXXXXX"), a Google Analytics 4 property ("G-XXXXXXXX"), Google Ads ("AW-XXXXXXXX") or Floodlight ("DC-XXXXXXXX").
gtag('event', 'sign_up', { 'method': 'email' }) : The gtag "event" directive will send an event. In snippets where multiple "config" directives are present for multiple properties, the event will be sent to all properties.
In this example, the "sign_up" parameter is the event name. The last parameter is an object that contains a set of event parameters. In this case, "method" is a parameter with a value of "email."

Reference Documents

Google Analytics | Demos & Tools
[GA4] Analytics dimensions and metrics
About custom dimensions and metrics


files added

As for issue #23, these are final changes

Button not working on clicking
Also always stays visible, it shouldn't be, it should only be visible after scrolling a bit
Also the fonts are not arranged properly
For the reference of back to top bottom you can check the example on codepen

in mobile devices i decided not to give the footer position fixed as it might cover the whole screen size available

again one more bug, the position is fixed in desktop mode

position is fixed in desktop mode

codepen

Ohh i thought the second line always stay visible was meant for footer. But now i think you meant that for button. Okay understood, will update the changes.


filter posts based on page category

I want this so I can create multiple lists as subsections of a blog
The problem is that Jekyll is pretty rigid and seems to assume a lot about how pagination works. Doesn't seem like this will be easy with Github Pages

moving on


Use of fid column in Geopackage

The fid column is mandatory (by SQLite) as a unique key for each row. By default it is set to autoincrement if not defined.
Our usage in Ribasim is inconsistent, we always set it (1:n) on writing, but it does not equal the node_id. However, for the edge table, it is used (implicitly) as our edge_id key.
Possibly solutions;

Use fid as node_id key
Add edge_id back

I'm inclined towards the latter. fid is a file format specific thing, and depending on the tooling is hidden/ignored (geopandas silently ignores any existing fid column).
Relates to #1717

I'm inclined to store our IDs in the fid column. We are required to have one anyway, and it exactly meets our requirements for our IDs. If we don't we have two ID columns, which can lead to confusion between the two. In #1717 I see you propose putting our IDs copied as fid values, but that can start running out of sync if people start editing in e.g. QGIS.
Geopandas indeed requires passing fid_as_index = True.
Right now we are not consistent between Edge, where we use fid, and Node, where we don't. This should be consistent.
Right now edge IDs cannot be explicitly set, meaning that they are never stable. Allowing optionally setting the edge ID just like #1717 does for node ID would make it fully consistent.

The fid column is mandatory (by SQLite) as a unique key for each row.

This isn't quite accurate, from the GeoPackage spec: "A feature table SHALL have a primary key column of type INTEGER and that column SHALL act as a rowid alias."
We'd have to test how well this is supported by GDAL/QGIS/geopandas, but we could just set node_id as the primary key for the Node table and set edge_id as the primary key for the Edge table. Then we don't need fid at all.
The non-spatial tables (Basin / static etc) also get an fid, that falls outside our data model but was needed to make the tables editable in QGIS. This was done in https://github.com/Deltares/Ribasim/pull/873. To avoid confusion, Marnix tried to hide these columns in https://github.com/Deltares/Ribasim/issues/841#issuecomment-1842885072 but ran into a QGIS bug that has since been fixed. So we should try again to hide these columns for non-spatial tables.
We also shouldn't forget to adjust this code that currently copies node_id over to fid: https://github.com/Deltares/Ribasim/pull/1717#discussion_r1715089917


Add global timeout and connecttimeout to config

@mkaplan9 could you rebase with master? The master build should now be fixed

Is this going to be merged? We would love to be able to set a global timeout!

@jeremyhaile please feel free to take over this PR if you'd like. I'm having some trouble getting the test suite to run on my machine and this isn't a high priority for me anymore. I think if you can fix rspec ./spec/typhoeus/easy_factory_spec.rb:98 then the build should pass and it should be good to go.

Closed in favor of #685


Issue Running NBA

I receive the following for NBA
  File "./NHL-Game-Probabilities/NBA/nba_game_probability_model.py", line 559, in <module>
    main()
  File "./NHL-Game-Probabilities/NBA/nba_game_probability_model.py", line 553, in main
    date, today_games_df = get_todays_games(param, team_list, games_metadf)
  File "./NHL-Game-Probabilities/NBA/nba_game_probability_model.py", line 285, in get_todays_games
    today_games_df['Home Win Prob'] = today_games_df.apply(lambda row: f"{calc_prob(team_name_obj_dict[row['Home Team']], team_name_obj_dict[row['Visiting Team']], param)*100:.2f}%", axis=1)
  File "./virtualenvs/nhl-nba-game-probabilities/lib/python3.10/site-packages/pandas/core/frame.py", line 4081, in __setitem__
    self._set_item_frame_value(key, value)
  File "./virtualenvs/nhl-nba-game-probabilities/lib/python3.10/site-packages/pandas/core/frame.py", line 4209, in _set_item_frame_value
    raise ValueError("Columns must be same length as key")
ValueError: Columns must be same length as key

Should be fixed now, thanks for bringing this up


Fails to craft when inventory is full

Submitted in behalf of diminished on the discord
Steps to Reproduce (as best as you can)
Problem seems to occur with @gamer but there could be other test cases. In the words of diminished, the bot "continuously click to swap out the item for the item that was just crafted but would never drop it. Other times it would just hold the item in the mouse."
Expected Behavior
Bot completes the crafting task without getting stuck swapping items.
Actual Behavior (What lead to the bot getting permanently stuck)
The bot gets stuck swapping between items
Crashlogs and Screenshots (if applicable)
(you may drag + drop text logs and images here, thanks GitHub)
developer notes: (by James)
I believe this issue may be fixed already, but I am posting this issue in case it is unrelated.

Issue is not only resolved, but is a duplicate


Fix the condition for fail case nodes_response_status from federation API

federation API returns fail not failure when all queried nodes fail.
To address we need to:

[x] Update ResultContainer
[x] Update mock responses
[x] Update App

:rocket: Issue was released in v0.2.1 :rocket:


Report dd() and dump() methods

Would it make sense to emit an error when seeing a dd() or dump()?
I do this myself using a PHPStan extension, but just wanted to pitch the idea here because I think it makes sense

@loevgaard thank you for the idea.
In my projects, I use it configuring psalm.xml
<?xml version="1.0"?>
<psalm>
    <forbiddenFunctions>
        <function name="dd"/>
        <function name="dump"/>
    </forbiddenFunctions>
</psalm>

The plugin may do this automatically or we can add reminder documentation about forbiddenFunctions feature of Psalm

Oh, that's an easy fix also. Didn't even know that. I am just beginning Psalm :)
I think it would make sense that the plugin did this automatically. Given the insight I have into Psalm plugins (zero) I guess I would need some help to create a PR. Maybe you know of other plugins adding 'forbidden functions'?


Cannot import material-design-icons-2.0

It work fine with material-design-icons-1.0.0 but don't work with material-design-icons-2.0
And it is better if i can select more color for icon

Yeah adding support for 2.0 is on my todo list. I am almost done with my rewrite and after that release I will add support for it.


Forward Renderer error when using first layer

Steps to reproduce:

Add an opaque layer to the very top of the layers list (before World) and give it a name, e.g. "Custom"
Use script that adds a camera with this layer:

    var layer = this.app.scene.layers.getLayerByName('Custom');
    var cameraEntity = new pc.Entity();
    cameraEntity.addComponent('camera', {
        clearColor: new pc.Color(0.0, 0.0, 0.0, 0.0),
        layers: [layer.id],
    });
    this.app.root.addChild(cameraEntity);

Forward Renderer throws an error:

cameraPass is 0 in this case, resulting in settings being undefined.

This is on my radar to fix already, but I don't have a fix yet.
It's related to a layer which uses shadow map from directional light used before the shadow map is rendered for that frame.

I came here to raise a bug ticket for that issue. Adding Custom layer on directional light solves issue, ALSO on engine code checking "settings" variable on that line and if it's not exist setting the "pass" variable to 0 solves issue.
Here is the line :
https://github.com/playcanvas/engine/blob/0342db03a2e8214a43167f94a0fb82f3f8b6a00e/src/scene/forward-renderer.js#L1369
Here is the screenshot for change :


Temporary fix for form submission

When loading the form as a result of a transition, it needs to
dynamically load the pwa-form.js for it to work. I've implemented
a temporary and ugly solution, that needs to be replaced with proper
module loading before merging PRPL to master.

@andreban I tested the flow without issues. Sounds good, let's hammer those before merging.


Unable to prevent or recover from lost focus

Is your feature request related to a problem? Please describe.
I need to restore focus between navigation with react router. Because it mount / unmount on every route change, there is a chance a focus might not exist.
Additionally and I think this is the bigger problem, it's dangerous to not have a way to recover from lost focus as a focus element might appear / disappear dynamically (such as after a query refresh). This is not something we can control unless we have a dedicated API to check if a focus exist before going for it.
Describe the solution you'd like
Either something to check if a focus key exist in the tree or a way to fallback on some other key
Describe alternatives you've considered
I've considered attaching a data-focus-key to every component I can focus and do a manual DOM check to assert whether an element exist or not. This is heavy and forces us to manually attach a focus key to every element.
Additional context
None

Hello!
This change in v2.0.0 (which was just released a week ago) could hopefully help with your issue.
Let us know if that would be sufficient to resolve this issue.
Thanks!

This is awesome, the checker function together with global setFocus was such a pain point for us. Im really thankful for your update.

Glad to hear it helps with your issue and sorry for not getting back to you sooner; Busy days.
I will close this issue accordingly now, but please file any new issues you might think we should be aware of.
Thanks!


Android Basics: tip-calculator

URL of codelab
https://developer.android.com/codelabs/basic-android-kotlin-training-tip-calculator?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-kotlin-unit-2-pathway-1%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-training-tip-calculator#7
In which task and step of the codelab can this issue be found?
8. Summary
Describe the problem
"checkRadioButtonId" is wrong, and it should be "checkedRadioButtonId".

@ukjinlee
Thank you so much for reporting this issue. This is fixed and will be published.


TimeSpan support for the Custom Properties

PR adds a support for TimeSpan property type to the MessageForm.

It also logs info when timespan is not valid.
<17:31:44> The following validations failed:
 - RetryInterval property conversion error: String was not recognized as a valid Boolean.

Question: I just noticed that my IDE removed redundant white characters. Should I bring them back?
Fixes #304

:white_check_mark: Build ServiceBusExplorer 4.2.0-PullRequest0305.88.build.522 completed (commit https://github.com/paolosalvatori/ServiceBusExplorer/commit/5014f4814e by @lukasz-pyrzyk)

Thanks @lukasz-pyrzyk for the PR

Np, happy to help


b15

rfc7230 section 3.3.2 compliance
Add HTTPS example
Add Secure WebSocket example
Fix message_v1 constructor
Tidy up DynamicBuffer requirements
Tidy up error types and headers
Fix handling empty HTTP headers in parser_v1

Coverage decreased (-0.02%) to 98.075% when pulling 5ecf8de7d3d20a783dcc88ec577f1d88539e4cd0 on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Current coverage is 98.07% (diff: 90.90%)

Merging #105 into master will decrease coverage by 0.02%

@@             master       #105   diff @@
==========================================
  Files            71         71
  Lines          4043       4052     +9
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits           3966       3974     +8
- Misses           77         78     +1
  Partials          0          0

Powered by Codecov. Last update 70b8555...5ecf8de

Coverage decreased (-0.02%) to 98.075% when pulling 2d15ab47feea88c18591edfc683997df782b716a on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Coverage decreased (-0.02%) to 98.075% when pulling 776fcd1d1f883c2ac66d7d1a4410605d9367216b on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Coverage decreased (-0.02%) to 98.075% when pulling 2eec2d2fee0ab8d7c4675a52ae2e0ae4b47d82eb on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Coverage decreased (-0.02%) to 98.075% when pulling 316580fc255dea147a763c20b81d32de123c4aed on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Coverage decreased (-0.02%) to 98.075% when pulling e31799ae2a338a62a55eb418f637e0b9f0f34556 on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Coverage decreased (-0.02%) to 98.075% when pulling 62dffa491d5c9f2b2d39c7fba77169027c60e0a9 on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Coverage decreased (-0.02%) to 98.075% when pulling 744dcaf560c2612e0b80a7beed27d214760c2702 on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Coverage decreased (-0.02%) to 98.075% when pulling 744dcaf560c2612e0b80a7beed27d214760c2702 on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Coverage decreased (-0.02%) to 98.075% when pulling 744dcaf560c2612e0b80a7beed27d214760c2702 on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Coverage decreased (-0.02%) to 98.076% when pulling 2fc27fb84e3d4e1a893b71a3f1a9d9f9020f56ed on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Coverage decreased (-0.02%) to 98.076% when pulling 92e81bfb6696bfa1f84ec0b0b7426f273dc3a006 on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

This commit adds cmake support for the ssl examples. I only tested on linux, and Scott S tested on Mac ( @scottschurr there have been changes, it needs to be re-tested): https://github.com/seelabs/Beast/commit/397507e0348ecd45821d101353bbe1b9dc8cf263

I am not able to build the ssl examples using b2 on linux. If we can change to shared linking, the problem goes away.
I'm still learning bjam; I'll try to come up with a solution that let's us keep static linking, in the meantime, this commit allows me to compile with bjam: https://github.com/seelabs/Beast/commit/2c8bb10d81f66c82dc5efab7da3791396cac41c8

Reviewing my cmake commit, this is needed for it to work on windows: https://github.com/seelabs/Beast/commit/f761ec080cfebc815364f54475d93b9b8ec102cd

I'd like to see individual commits for CMake and bjam changes

SSL on CMake is looking good. bjam needs work though

Coverage decreased (-0.04%) to 98.051% when pulling d30a47d26ab8ad629220d694610e0fe88a885649 on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Coverage decreased (-0.04%) to 98.051% when pulling e1debc83a6edf7aea90243de97073698a82e89e7 on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Here's a cmake commit with better mac support: https://github.com/seelabs/Beast/commit/05abef04d0e22972588ca19bf1b9c65a5dbe0092
( I asked @scottschurr to this this; we should wait for a thumbs up from him before cherry picking this)

I tested @seelabs cmake fix on OS X and it worked great.

Coverage decreased (-0.04%) to 98.051% when pulling 7d03224a955ddcd3efc3019f6b4179f1670d75fd on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Coverage decreased (-0.04%) to 98.051% when pulling 17e16e8fb10e0124edfb1034b68e779e203afecb on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Looks good to me. :+1:

Coverage decreased (-0.04%) to 98.051% when pulling ac3a4cc18388b6c7f78190a5798f606cdd2d236c on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

I spent a long time trying to get static linking working with ssl examples without success. My plan is to post a message to the boost developers list and ask for help. If we remove the <link>static from the Jamroot, then :+1: from me. Without that we'll need to wait for an answer on static linking before we merge this.

The SSL examples are not supposed to build when b2 is invoked from the root

Coverage decreased (-0.04%) to 98.051% when pulling 79c36a331c3ac5d6ca4e8029072c73661111d0d2 on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Coverage decreased (-0.04%) to 98.051% when pulling b3c247df465bf5d05867d57c9030467ec5800104 on b15 into 70b8555cdca69b9c5777db02115d30d1c1aad631 on master.

Unfortunately, no. Same kinds of error as when we just link crypto and dl as shared" # error Must not define both BOOST_SYSTEM_DYN_LINK and BOOST_SYSTEM_STATIC_LINK

Yeah. I removed <link>static

Coverage decreased (-0.04%) to 98.051% when pulling 325f579a1dabcb976a981018153ae4753b0a36d6 on b15 into 1ff192db02791a73a7928dcce803d78c759d5306 on master.


Support Parsing MJPEG Streams

I’ve got an older camera that only has MJPEG streams. Wondering if you have any idea how to get it working in your configurations, or if I need to basically re-write all of the ffmpeg arguments.
I’ll admin I’m not all to familiar with the vast array of ffmpeg arguments...

That should (probably) be pretty easy. Do you have an example ffmpeg command at all?
I will add this to my list and will get to it eventually!

I think this is one, but I’ll have to test it out when I’m not on mobile:
ffmpeg -i http://<IP_ADDRESS>/mjpeg.cgi -c:v mjpeg -f mjpeg

I added basic mjpeg support in one of the containers dev tag, see #6 . Which docker image are you planning on using?

Raspberry Pi.
If it doesn’t work, I’ll attempt to modify and submit a PR

Closing this, feel free to open a new issue if you have any problems.


As a developer, understand how to recompile VSCode extension on local

That's amazing @FudeCao ! If you already tried it out, I would request you to coordinate with @angusyick @ChrisChen0803 and explain to them as well how it works, probably over a call.
Also, please create a document with all the steps and screenshots to do this. This can then be referred by others as well.
Thanks!

If possible, try to close this task up "by today/tomorrow?" so that we get those extra 3 days till Saturday to take a look at other tasks. Thanks again

Able to get it working.

@FudeCao amazing. I was struggling to compile modifications to the extension until I saw your tutorial.


Investigate: should we disable query endpoints for staking module (or similar)?

Modules like staking and slashing may be imported in the application. However, they expose query endpoints that may not be relevant to Monomer, and may not work properly.
We need to evaluate these options:

Have a way to make them Monomer-compatible.
Disable their query endpoints.

return an error code (rather than disabling)


Where is the definition or addition location of GGML_USE_HYBRID_THREADING?

Where is the definition or addition location of GGML_USE_HYBRID_THREADING?
In the int ggml_graph_compute(struct ggml_cgraph * cgraph, struct ggml_cplan * cplan) function in the ggml.c file
#ifdef GGML_USE_HYBRID_THREADING
    int compute_status = (size_t) ggml_graph_compute_thread_hybrid(&workers[0]);
#else
    int compute_status = (size_t) ggml_graph_compute_thread(&workers[0]);
#endif

I see that the ggml_graph_compute_thread_hybrid function is added by you (I think this may be an importance function for PowerInfer), but my global search did not find the addition of GGML_USE_HYBRID_THREADING.

The GGML_USE_HYBRID_THREADING flag acts as a switch to decide if all GPU computation nodes should be exclusively assigned to a single specific CPU worker. By default, this feature is not active, hence you won't find its definition within the source code. If you wish to activate this feature, it can be enabled through the definition in CMake's CXXFLAGS and CFLAGS as follows:
cmake -S . -B build -DCMAKE_CXXFLAGS="-DGGML_USE_HYBRID_THREADING" -DCMAKE_CFLAGS="-DGGML_USE_HYBRID_THREADING"


FileSystemException when I call deletePlugin after getExtensions

I try to use pf4j for dynamic loading plugins from jar files to my app and sometimes I need to update my jars, currently I have problem, getExtensions(Class<T> type) method blocks my jar file and I can't delete it by calling deletePlugin(String pluginId), I receive exception:
[main] INFO ro.fortsoft.pf4j.AbstractPluginManager - Stop plugin 'rule-plugin:0.0.1'
Exception in thread "main" java.lang.RuntimeException: java.nio.file.FileSystemException: d:\plugins\test-rules-1.0-SNAPSHOT.jar: The process cannot access the file because it is being used by another process.
        at ro.fortsoft.pf4j.BasePluginRepository.deletePluginPath(BasePluginRepository.java:75)
        at ro.fortsoft.pf4j.AbstractPluginManager.deletePlugin(AbstractPluginManager.java:301)
        at com.datawatch.PluginsApp.main(PluginsApp.java:47)
Caused by: java.nio.file.FileSystemException: d:\plugins\test-rules-1.0-SNAPSHOT.jar: The process cannot access the file because it is being used by another process.

For more information see https://groups.google.com/forum/#!topic/pf4j/NYVJ6KHqr-I.

I think that the problem appears because I read a file (input stream, reader) and I forget to close it.

Closing. Please re-open or file a new issue if there are still problems :)


Move basic config to .env-vars

Thanks for the pull request but this has been requested in the past. We decided to let the user implement this in their own applications.

Damn, that's lots of work every time.. and not that safe. The PR doesn't change anything about the current structure. But oke, I'll fork this to another repo then.


ptpython can't import a local package named test

I've got a 'test' package in the top-level of my project that I'm trying to import a file from, but ptpython (and ptipython) won't let me.  It seems to be picking the test package from the python standard library instead.  Plain python (and plain ipython) do not have this problem.  This is on python3, though I haven't tested with python2.
Steps to reproduce:
$ mkdir python-test
$ cd python-test
$ mkvirtualenv -p /usr/local/bin/python3 python-test
$ pip install ptpython
$ mkdir test
$ touch test/__init__.py
$ touch test/schema_data.py

And demonstration of the bug:
$ python
Python 3.4.1 (default, Aug 24 2014, 21:31:55)
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import test.schema_data
>>> quit()
$ ptpython
In [1]: import test.schema_data
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'test.schema_data'
No module named 'test.schema_data'

In [2]: import test

In [3]: test
Out[3]: <module 'test' from '/usr/local/Cellar/python3/3.4.1_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/test/__init__.py'>

Hi @obmarg,
Thanks for reporting and the instructions to reproduce.
It should be fixed in the next release: https://github.com/jonathanslenders/ptpython/commit/549ddd38d28dd21a5cd41caac399a0fd0210f56c
Jonathan


Update points.json for name change

Sorry for the slow response on this, somehow this got missed. Merging now.


Fix padding for noBorder FormInputs

👀 Overview
A real baby pr. Padding styles for .form__input--noborder were being overridden by the default focus styles

 Reduce indentation on finder panel


Add test failure for after-resolve async

Implementing actual async after-resolve handlers causes the _currentPluginApply field to become corrupted.
Failing test pull request.

Thanks, I merged it, as it's fixed for a while...


question: what is the meaning of ??= in line 678 of /vue-language-core/src/generators/template.ts file?

In the file:
https://github.com/vuejs/language-tools/blob/eef20830f89ab91059aa302d4fc3e3fb68baf54e/packages/vue-language-core/src/generators/template.ts#L678
There is a ??=, what the meaning of this?
Can anyone help me to answer this question? Thanks!
localVars[varName] ??= 0;

Duplicate of #2643

Duplicate of #2643

Thank you for helping me solve the problem.


typescript can't find module

After installing via NPM TypeScript compiler complains that it can't find "angular2-modal" module though modals work fine (systemjs dist js included in my index.html).
after taking a look into angular's package and TS NPM compatibility section I think that some files are missing in your lib eg:
there is node_modules/angular2/core.js and  node_modules/angular2/core.d.ts that registers 'angular2/core' module so module name is reflecting package file path. TS resolves "global modules" like this "package/file" => "node_modules/package/file(.d).ts".
The problem is that TS compiler doesn't know where to look for "angular2-modal" module.
Of course I dont want to compile angular2-modal.ts into my app. I belive contents of this file should be in angular2-modal.d.ts plus compiled file angular2-modal.js. Then TSC would easily locate it by module name "angular2-modal/angular2-modal". Your module name should contain slash I reckon.
Best regards

renaming angular2-modal.ts file to index.d.ts in package root dir resolves the problem.
www.typescriptlang.org/docs/handbook/typings-for-npm-packages.html

I have the same problem, from the link you suggested the algorithm is first looing package.json for the "typings" configuration and it's seem wrong.
In any case I tried renaming the file to "index.d.ts", i.e.:
$ ls node_modules/angular2-modal/
dist  index.d.ts  package.json  README.md

but
$ typings search angular2
No results found for search

am I missing something?

yeap. it seems package.json is just wrong
"typings": "./dist/angular2-modal.d.ts", should be "typings": "dist/commonjs/angular2-modal.d.ts",
after this slight change TS recognizes module name
typing sreach searches for typings available to install from public registries, doesn't it?
try command typings search angular

@parol-peter thanks, changed to you'r suggestion.


fix: use getters for Models

Issue: #44, #45
Description of changes:
Previous behaviour was to assign Model once per class which may produce mutations, now each class has own Model getter which returns new Object every time it called.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Thank you for your pull request. See my comment on #45 and we can discuss the best path forward. Thanks!

Looks like we are good to go with this!

@L2jLiga would be great if you can resolve the conflicts :)

Done

:tada: This PR is included in version 1.5.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

Cool! %)


Storing a SQLAzure connection string as a value

Hi! Im trying to store a value in a app configuration that is supposed to be used as a SQLAzure connection string but I cannot get the formatting of the value input right
Using .net framework 4.7.2
This would be the xml:
 <add name="MyDb" connectionString="Server=(LocalDb)\MSSQLLocalDB;Database=MyDb;Integrated Security=true;ConnectRetryCount=3;ConnectRetryInterval=10;Connection Timeout=30;" providerName="System.Data.SqlClient" />
How should I input the key-value in  so that the connection string is parsed correctly? Right now it is not picking up the Provider Name when reading the value as a ConnectionStringSetting object. I have tried many different formats. It works well for connection strings that does not need "providerName"

Presumably you are using 'Microsoft.Configuration.ConfigurationBuilders.AzureAppConfiguration' for pulling connection string values into config?
In this case, the 'Microsoft.Configuration.ConfigurationBuilders.*' collection of builders are simple key/value substitutes. So they aren't really capable of providing what is essentially two values (connectionString, providerName) for one key out of the box. There are a few ways you can handle this situation though.
Iff you know that 'MyDb' will always use the SqlClient provider regardless of the actual connection string being pulled from AppConfiguration, then you can just hard-code that into your config file and use the AzureAppConfigurationBuilder in 'Strict' mode to replace the connectionString portion of the existing add element. (If this isn't working for you, please file a bug in the aspnet/MicrosoftConfigurationBuilders repo.)
<configBuilders>
  <builders>
    <add name="AzAppConfig" mode="Strict" type="Microsoft.Configuration.ConfigurationBuilders.AzureAppConfigurationBuilder, Microsoft.Configuration.ConfigurationBuilders.AzureAppConfiguration" />
  </builders>
</configBuilders>
<connectionStrings configBuilders="AzAppConfig">
    <add name="MyDb" connectionString="Will be replaced by the value of 'MyDb' that is pulled from AppConfiguration store" providerName="System.Data.SqlClient" />
</connectionStrings>

You could also run your AzureAppConfigurationBuilder in 'Expand' mode and use two AppConfig values to configure your connection string and provider. Your connection string xml would look like:
<add name="MyDb" connectionString="${MyDbConnStr}" providerName="${MyDbProviderName}" />

A third option that is available to you in the 2.0 (AppConfigurationBuilder is 1.0, but the rest of the builders from that repo will be 2.0) release of Microsoft.Configuration.ConfigurationBuilders.* (currently in preview, but it will RTM soon) is to develop a custom section handler for  that will be smart enough to see the value you pull from Azure AppConfiguration and populate both 'connectionString' and 'providerName.'

This works for my application! Thanks @StephenMolloy

Looks like this was resolved.


Telus email connection error

With Swift mailer i have tried with gmail, it works fine. But not working with telus.
My information is below.
SMTP
Server: webmail.washtech.ca
Port:   25
SSL:    No
I have writen the connection line as below.
Swift_SmtpTransport::newInstance('webmail.washtech.ca', 25)
I am getting the following error on page.
Fatal error: Uncaught exception 'Swift_TransportException' with message 'Connection could not be established with host webmail.washtech.ca [Connection refused #111]' in swiftmailer-5.x/lib/classes/Swift/Transport/StreamBuffer.php:269 Stack trace: #0 swiftmailer-5.x/lib/classes/Swift/Transport/StreamBuffer.php(62): Swift_Transport_StreamBuffer->_establishSocketConnection() #1 swiftmailer-5.x/lib/classes/Swift/Transport/AbstractSmtpTransport.php(113): Swift_Transport_StreamBuffer->initialize(Array) #2 swiftmailer-5.x/lib/classes/Swift/Mailer.php(79): Swift_Transport_AbstractSmtpTransport->start() #3 phpmailer.php(40): Swift_Mailer->send(Object(Swift_Message)) #4 home.php(16): send_email('', '$email_address', '', '', 'Heading', 'Test. in swiftmailer-5.x/lib/classes/Swift/Transport/StreamBuffer.php on line 269

Closing old support requests. Should be done on Stack Overflow instead.


Problems with geoNames import

It appears that some smaller geoNames-places are excluded from import possibility.
Take Cowling:
https://sws.geonames.org/11593148/about.rdf
when pasted into the place-import-field it doesn't show.
Cowling has it's own Wiki-entry:
https://en.wikipedia.org/wiki/Cowling,_Craven

This is the case as our index of geonames is unfortunately not complete and also old. However, that said when creating the relation to the person you can just paste the geonames url in the place field of the relation and select the url (even if there is no result). The system will just grab the RDF and parse it to the db...as done here: https://pmb.acdh.oeaw.ac.at/apis/entities/entity/place/48609/edit
Please note: pasting an url is currently only possible when creating a relation, if you try to create the place from within the list of places this is not possible (we will include that soon though)


Fix and improve tests

I improved the tests to run with the newest rspec version, use expect syntax, etc
@soulim please review :smile:

Could you please add this repository to Travis or CircleCi, so we can use the right badge here, as well? :wink:

Ta-da! :tada:
[![Circle CI](https://circleci.com/gh/gohiring/xero.svg?style=svg&circle-token=ec8f29a58a76aed94881f13e756888ec9aafc762)](https://circleci.com/gh/gohiring/xero)

Ok, everything is working and set up.
 All my tests are passing now :clap: :smile:
While you're tidying up can I maybe ask for one thing added to the commit? I see that rspec-spies is obsolete and can be removed from the Gemfile. With it, I can't generate a Gemfile.lock.

@dslh Done. :smile:

Thanks! :cake:


Write a C# program to find square root of a number

Description
Write a C# program to find square root of a number
Square root of a number is the number that when multiplied by itself gives the original number. For example, square root of 4 is 2 because 2 * 2 = 4. Similarly, square root of 9 is 3 because 3 * 3 = 9.
Input  : 4
Output : 2

How to contribute

Save the solution in program/FindSquareRootOfANumber.cs file
Add FindSquareRootOfANumber.cs file in find-square-root-of-a-number folder

!assign

Hey @anupeshverma,
This issue has been assigned to you for more than 15 days.
We are unassigning you from this issue.
If you are still interested in contributing to this issue, please get auto-assigned on the issue by commenting !assign again.
Thanks for your contributions :)


Think about to fix the issues found by adapter checker

I am an automatic service that looks for possible errors in ioBroker and creates an issue for it. The link below leads directly to the test:
https://adapter-check.iobroker.in/?q=https://raw.githubusercontent.com/ioBroker/ioBroker.vis

[ ] [E021] "licenses" in package.json are depricated. Please use only "license": "NAME" field.
[ ] [E019] Invalid repository URL: https://github.com/iobroker/iobroker.vis. Expected: git+https://github.com/ioBroker/ioBroker.vis.git
[ ] [E116] No SPDX license found. Please use one of listed here: https://spdx.org/licenses/
[ ] [E117] Licenses in package.json and in io-package.json are different
[ ] [E605] No actual year found in copyright. Please add "Copyright (c) 2013-2020 bluefox<EMAIL_ADDRESS>at the end of README.md

I have also found warnings that may be fixed if possible.

[ ] [W113] Adapter should support compact mode

Thanks,
your automatic adapter checker.

Do you need help fixing the bugs?


Ray casting

Sadly, this needs at least a bit of a stack. It might be worth keeping our own instead of a recursive function though.

5196d453896db5b04077bbc4311e92daebee3768


Empty Dataset at the root level when saving DataTree in zarr

What happened?
I found out that when dealing with nested DataTree and storing/saving in zarr (dt.to_zarr()), it creates an empty Dataset at the root level.  I was trying to append an isomorphic datatree to an existing datatree stored in Zarr. It fails when passing the mode and dim parameters since the Dataset at the root level has no dimension or coordinates.
What did you expect to happen?
I wondered why we need an empty Dataset at the root level without data or coordinates. However, I am not sure if this is the best way to merge/concat/append two DataTrees.
Minimal Complete Verifiable Example
import xarray as xr
import numpy as np
import pandas as pd

ds = xr.tutorial.open_dataset("air_temperature").drop_attrs()

# Split dataset in two
ds_first_half = ds.isel(time=range(0, int(len(ds.time)/2)))
ds_second_half = ds.isel(time=range(int(len(ds.time)/2), int(len(ds.time))))

# creating a pressure datarray
pressure_data = 1000.0 + 5 * np.random.randn(100, 3, 4)
lons = np.linspace(-120, -90, 4)
lats = np.linspace(25, 55, 3)
times = pd.date_range("2018-01-01", periods=100)

pressure = xr.DataArray(
    pressure_data,
    coords=[times, lats, lons],
    dims=["time", "lat", "lon"]
).to_dataset(name="pressure")

# splitting pressure in two
press_fh = pressure.isel(time=range(0, int(len(pressure.time)/2)))
press_sh = pressure.isel(time=range(int(len(pressure.time)/2), int(len(pressure.time))))

# first half dtree
dt_fh = xr.DataTree.from_dict(
    {
        "/temp": ds_first_half,
        "/pressure": press_fh,
    }
)

store = "dtree.zarr"
dt_fh.to_zarr(
    store,
    consolidated=True,
)

# second half dtree
dt_sh = xr.DataTree.from_dict(
    {
        "/temp": ds_second_half,
        "/pressure": press_sh,
    }
)

dt_sh.to_zarr(
    store,
    mode="a-",
    consolidated=True,
    append_dim="time",
)

MVCE confirmation

[X] Minimal example — the example is as focused as reasonably possible to demonstrate the underlying issue in xarray.
[X] Complete example — the example is self-contained, including all data and the text of any traceback.
[X] Verifiable example — the example copy & pastes into an IPython prompt or Binder notebook, returning the result.
[X] New issue — a search of GitHub Issues suggests this is not a duplicate.
[X] Recent environment — the issue occurs with the latest version of xarray and its dependencies.

Relevant log output
this is the error triggered by the empty `Dataset` at the root level

Traceback (most recent call last):
  File "/snap/pycharm-community/425/plugins/python-ce/helpers/pydev/pydevd.py", line 1570, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/snap/pycharm-community/425/plugins/python-ce/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/media/alfonso/drive/Alfonso/python/raw2zarr/issue-delete.py", line 65, in <module>
    dt_fh.to_zarr(
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/core/datatree.py", line 1699, in to_zarr
    _datatree_to_zarr(
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/core/datatree_io.py", line 123, in _datatree_to_zarr
    ds.to_zarr(
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/core/dataset.py", line 2595, in to_zarr
    return to_zarr(  # type: ignore[call-overload,misc]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/backends/api.py", line 2184, in to_zarr
    dump_to_store(dataset, zstore, writer, encoding=encoding)
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/backends/api.py", line 1920, in dump_to_store
    store.store(variables, attrs, check_encoding, writer, unlimited_dims=unlimited_dims)
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/backends/zarr.py", line 889, in store
    raise ValueError(
ValueError: append_dim='time' does not match any existing dataset dimensions {}

Environment

python:  3.12 \n
xarray version: '2024.10.1.dev59+g700191b9'

Thanks for reporting - this seems like a bug with DataTree.to_zarr(append_dim=...) (/ it was just never actually implemented / tested...)

I am not sure if this is the best way to merge/concat/append two DataTrees.

I would expect the solution to have to consider https://github.com/pydata/xarray/issues/9106 and https://github.com/pydata/xarray/issues/9778.

I wondered why we need an empty Dataset at the root level without data or coordinates.

I'm not sure exactly what you mean. A DataTree node without any data or coordinate variables would become an empty Dataset if you called .to_dataset, but that's not avoidable.

As for the actual error, I think first we should figure out what the expected behaviour would be for
ds1 = xr.Dataset()
ds2 = xr.Dataset()

ds1.to_zarr(store)
ds2.to_zarr(store, append_dim='time')

because a datatree with a single empty group should behave the same as that.
Concatenating two empty datasets along a new dimension does not raise:
In [6]: ds1 = xr.Dataset()

In [7]: ds2 = xr.Dataset()

In [8]: xr.concat([ds1, ds2], dim='time')
Out[8]:
<xarray.Dataset> Size: 0B
Dimensions:  ()
Data variables:
    *empty*

Following up on this,

As for the actual error, I think first we should figure out what the expected behaviour would be for
ds1 = xr.Dataset()
ds2 = xr.Dataset()

ds1.to_zarr(store)
ds2.to_zarr(store, append_dim='time')

I got same error as in DataTree
Traceback (most recent call last):
  File "/snap/pycharm-community/436/plugins/python-ce/helpers/pydev/pydevd.py", line 1570, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/snap/pycharm-community/436/plugins/python-ce/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/media/alfonso/drive/Alfonso/python/raw2zarr/issue-delete.py", line 84, in <module>
    tom_save()
  File "/media/alfonso/drive/Alfonso/python/raw2zarr/issue-delete.py", line 11, in tom_save
    ds2.to_zarr(store, append_dim='time')
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/core/dataset.py", line 2595, in to_zarr
    return to_zarr(  # type: ignore[call-overload,misc]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/backends/api.py", line 2184, in to_zarr
    dump_to_store(dataset, zstore, writer, encoding=encoding)
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/backends/api.py", line 1920, in dump_to_store
    store.store(variables, attrs, check_encoding, writer, unlimited_dims=unlimited_dims)
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/backends/zarr.py", line 889, in store
    raise ValueError(
ValueError: append_dim='time' does not match any existing dataset dimensions {}

I got same error as in DataTree

That's interesting. I would have thought that if "append" is supposed to be synonymous with "concat" here then the behaviour of .to_zarr(append_dim=...) should be made more consistent with xr.concat(dim=...).
tagging @jhamman as zarr-in-xarray representative (and FYI @abarciauskas-bgse)

Another thing I noticed @TomNicholas, is that let's suppose we can avoid the issue with the empty Dataset at the root level, which can be achieved by adding
    for node in dt.subtree:
        at_root = node is dt
        if node.is_empty & node.is_root:  # New lines
            continue                                        # to avoid empty datasets

here,
https://github.com/pydata/xarray/blob/eac5105470ec7fec767e5897fefdec9320689184/xarray/core/datatree_io.py#L117C4-L120C69
Even if we avoid the empty Dataset issue at the root level, we will still encounter another challenge related to inheritance as at the root only inherited coordinates are retained. Thus, the  append_dim wont be present at this level.
ds = xr.tutorial.open_dataset("air_temperature").drop_attrs()

# Split dataset in two
ds_first_half = ds.isel(time=range(0, int(len(ds.time)/2)))
ds_second_half = ds.isel(time=range(int(len(ds.time)/2), len(ds.time)))

ds_daily_fh = ds_first_half .resample(time="D").mean("time")
ds_weekly_fh = ds_first_half .resample(time="W").mean("time")
ds_monthly_fh = ds_first_half .resample(time="ME").mean("time")

# second half dtree
ds_daily_sh = ds_second_half.resample(time="D").mean("time")
ds_weekly_sh = ds_second_half.resample(time="W").mean("time")
ds_monthly_sh = ds_second_half.resample(time="ME").mean("time")

# first half dtree
dt_fh = xr.DataTree.from_dict(
  {
      "/temp": ds.drop_dims("time"),
      "/temp/daily": ds_daily_fh.drop_vars(["lat", "lon"]),
      "/temp/weekly": ds_weekly_fh.drop_vars(["lat", "lon"]),
      "/temp/monthly": ds_monthly_fh.drop_vars(["lat", "lon"]),
  }
)

print(dt_fh)

<xarray.DataTree>
Group: /
└── Group: /temp
    │   Dimensions:  (lat: 25, lon: 53)
    │   Coordinates:
    │     * lat      (lat) float32 100B 75.0 72.5 70.0 67.5 65.0 ... 22.5 20.0 17.5 15.0
    │     * lon      (lon) float32 212B 200.0 202.5 205.0 207.5 ... 325.0 327.5 330.0
    ├── Group: /temp/daily
    │       Dimensions:  (time: 365, lat: 25, lon: 53)
    │       Coordinates:
    │         * time     (time) datetime64[ns] 3kB 2013-01-01 2013-01-02 ... 2013-12-31
    │       Data variables:
    │           air      (time, lat, lon) float64 4MB 241.9 242.3 242.7 ... 295.5 294.8
    ├── Group: /temp/weekly
    │       Dimensions:  (time: 53, lat: 25, lon: 53)
    │       Coordinates:
    │         * time     (time) datetime64[ns] 424B 2013-01-06 2013-01-13 ... 2014-01-05
    │       Data variables:
    │           air      (time, lat, lon) float64 562kB 245.3 245.2 245.0 ... 296.2 295.6
    └── Group: /temp/monthly
            Dimensions:  (time: 12, lat: 25, lon: 53)
            Coordinates:
              * time     (time) datetime64[ns] 96B 2013-01-31 2013-02-28 ... 2013-12-31
            Data variables:
                air      (time, lat, lon) float64 127kB 244.5 244.7 244.7 ... 297.4 297.4

Now, we can save the first half
store = "dtree_inherited.zarr"
dt_fh.to_zarr(
  store,
  consolidated=True,
  write_inherited_coords=True,
)

Then, when appending new information, it will generates the following error

dt_sh = xr.DataTree.from_dict(
    {
        "/temp": ds.drop_dims("time"),
        "/temp/daily": ds_daily_sh.drop_vars(["lat", "lon"]),
        "/temp/weekly": ds_weekly_sh.drop_vars(["lat", "lon"]),
        "/temp/monthly": ds_monthly_sh.drop_vars(["lat", "lon"]),
    }
)

dt_sh.to_zarr(
    store,
    mode="a-",
    consolidated=True,
    append_dim="time",
    write_inherited_coords=True,
)

Traceback (most recent call last):
  File "/snap/pycharm-community/436/plugins/python-ce/helpers/pydev/pydevd.py", line 1570, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/snap/pycharm-community/436/plugins/python-ce/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/media/alfonso/drive/Alfonso/python/raw2zarr/issue-delete.py", line 85, in <module>
    main()
  File "/media/alfonso/drive/Alfonso/python/raw2zarr/issue-delete.py", line 75, in main
    dt_sh.to_zarr(
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/core/datatree.py", line 1699, in to_zarr
    _datatree_to_zarr(
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/core/datatree_io.py", line 123, in _datatree_to_zarr
    ds.to_zarr(
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/core/dataset.py", line 2595, in to_zarr
    return to_zarr(  # type: ignore[call-overload,misc]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/backends/api.py", line 2184, in to_zarr
    dump_to_store(dataset, zstore, writer, encoding=encoding)
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/backends/api.py", line 1920, in dump_to_store
    store.store(variables, attrs, check_encoding, writer, unlimited_dims=unlimited_dims)
  File "/home/alfonso/mambaforge/envs/raw2zarr/lib/python3.12/site-packages/xarray/backends/zarr.py", line 889, in store
    raise ValueError(
ValueError: append_dim='time' does not match any existing dataset dimensions {'lat': 25, 'lon': 53}

Let me know your thoughts.

The newly created issue (#9892) is to capture specifically the Dataset piece of this, which should be done prior to DataTree changes.

From talking with @TomNicholas and @jhamman zarr currently does not support appending a new dimension with to_zarr for a xr.Dataset but it should for xr.DataTree in this case.
If you want to append a dimension that exists in one node but not another this should work by adding the existing dimension to the nodes that the dimension exists on and then skipping it on the nodes the dimension does not exist on.
Borrowing sample data from our unit tests:
time = xr.DataArray(data=["2022-01", "2023-01"], dims="time")
stations = xr.DataArray(data=list("abcdef"), dims="station")
lon = [-100, -80, -60]
lat = [10, 20, 30]
# Set up fake data
wind_speed = xr.DataArray(np.ones((2, 6)) * 2, dims=("time", "station"))
pressure = xr.DataArray(np.ones((2, 6)) * 3, dims=("time", "station"))
air_temperature = xr.DataArray(np.ones((2, 6)) * 4, dims=("time", "station"))
dewpoint = xr.DataArray(np.ones((2, 6)) * 5, dims=("time", "station"))
infrared = xr.DataArray(np.ones((2, 3, 3)) * 6, dims=("time", "lon", "lat"))
true_color = xr.DataArray(np.ones((2, 3, 3)) * 7, dims=("time", "lon", "lat"))
sample_tree = xr.DataTree.from_dict(
    {
        "/": xr.Dataset(
            coords={"time": time},
        ),
        "/weather": xr.Dataset(
            coords={"station": stations},
            data_vars={
                "wind_speed": wind_speed,
                "pressure": pressure,
            },
        ),
        "/weather/temperature": xr.Dataset(
            data_vars={
                "air_temperature": air_temperature,
                "dewpoint": dewpoint,
            },
        ),
        "/satellite": xr.Dataset(
            coords={"lat": lat, "lon": lon},
            data_vars={
                "infrared": infrared,
                "true_color": true_color,
            },
        ),
    },)

store = 'test_data_append_works.zarr'
sample_tree.to_zarr(store)
sample_tree.to_zarr(store, mode='a', append_dim="time")

This works
But then when you drop the "time" dimension it does not:
sample_tree_drop = xr.DataTree.from_dict(
    {
        "/": xr.Dataset(
            coords={"time": time},
        ),
        "/weather": xr.Dataset(
            coords={"station": stations},
            data_vars={
                "wind_speed": wind_speed,
                "pressure": pressure,
            },
        ).drop_dims('time'),
        "/weather/temperature": xr.Dataset(
            data_vars={
                "air_temperature": air_temperature,
                "dewpoint": dewpoint,
            },
        ),
        "/satellite": xr.Dataset(
            coords={"lat": lat, "lon": lon},
            data_vars={
                "infrared": infrared,
                "true_color": true_color,
            },
        ),
    },)

store = 'test_data_append_works.zarr'
sample_tree.to_zarr(store)
sample_tree.to_zarr(store, mode='a', append_dim="time")

You get a ValueError
ValueError: append_dim='time' does not match any existing dataset dimensions {'lat': 2, 'lon': 3}

But the 'time' dimension does exist for other data variables in different nested nodes.
sample_tree_drop['/weather/temperature'].air_temperature.dims

Returns
('time', 'station')

Instead of raising a ValueError we should be skipping appending along that dimension for that node.


Search Endpoint Decoding Error

Description
The search endpoint in NotionSwift is encountering a decoding error when processing the response. The issue appears to be related to a missing id key in the select.options field of the Category property. Here’s the error:

decodingError(Swift.DecodingError.keyNotFound(CodingKeys(stringValue: "id", intValue: nil), Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "results", intValue: nil), _CodingKey(stringValue: "Index 2", intValue: 2), CodingKeys(stringValue: "properties", intValue: nil), _CodingKey(stringValue: "Category", intValue: nil), CodingKeys(stringValue: "select", intValue: nil), CodingKeys(stringValue: "options", intValue: nil), _CodingKey(stringValue: "Index 0", intValue: 0)], debugDescription: "No value associated with key CodingKeys(stringValue: "id", intValue: nil) ("id").", underlyingError: nil)))

Steps to Reproduce

Perform a search request using the library.
Observe the decoding error in the response handling.

I think i also found the part of the responses that produces the error. It looks like that there can be database properties options that have no id:

Managed to fix it locally by making the SelectOption Identifier optional:
extension DatabasePropertyType {
    public struct SelectOption {
        public typealias Identifier = EntityIdentifier<SelectOption, UUIDv4>
        public let name: String
        public let id: Identifier?          <--- This needed to be optional to make it work
        public let color: String

        public init(
            name: String,
            id: Identifier = .init(),
            color: String = "default"
        ) {
            self.name = name
            self.id = id
            self.color = color
        }
    }
}

Can you please provide more details about your data? Based on the documentation id property is not optional and it always should be set. Also in my tests I always got id returned from server.


Added JustinDorfman.md to the community directory

Description
Added my bio to the directory.
Context and Reason Why
All the cool kids are doing it.
How Has This Been Tested?
By a reliable human.
Credits
Paired with @IanDCarroll

Made at Fullstack LA :zap:

@gr2m my bad. Should be good now.

🙌


Introduce index types to Vfile

From https://github.com/vfile/vfile/pull/53#issuecomment-611879864

Thanks @Rokt33r! Released in 4.2.0!


Fixed #35422 -- Fixed migrations crash when altering GeneratedField referencing rename field.

Thanks Sarah Boyce for the report and Simon Charette for the implementation idea.
ticket-35422

Ok so MySQL doesn't support repointing field references in generated field expressions so we might need a feature flag for that?

Ok so MySQL doesn't support repointing field references in generated field expressions so we might need a feature flag for that?

Maybe it's enough to skip these tests on MySQL :thinking: MySQL raises a really clear error message: "Column 'pink' has a generated column dependency.", so I would leave it as it is.

Sounds good to me!


Add the path to the manifest in json output

This allows consumers of the json messages to avoid guessing where
exactly the package root is. Having access to the package root is
difficult by virtue of requiring logic to guess its location by e.g.
walking filesystem from the source file.
This guessing logic becomes further complicated in presence of
workspaces and nigh impossible to implement correctly in instances where
artifacts end up produced from paths above the package root (e.g.
../foo.rs).
Since Cargo has access to this data in the first place, there doesn't
seem to be much reason to force consumers to invent their own, possibly
flawed, logic.

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @alexcrichton (or someone else) soon.
If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.
Please see the contribution instructions for more information.

Thanks for this! Could you describe your use case a bit more as well? There's presumably a lot of possible information we could put into each blob, e.g. everything cargo metadata prints as well. I'm not sure if it's worth drawing the line somewhere, but I'm also curious why the manifest path is all you need since it seems like you might also need the source file entry point as well.

Thanks for this! Could you describe your use case a bit more as well? There's presumably a lot of possible information we could put into each blob, e.g. everything cargo metadata prints as well. I'm not sure if it's worth drawing the line somewhere, but I'm also curious why the manifest path is all you need since it seems like you might also need the source file entry point as well.

seems like you might also need the source file entry point as well

That is already present as part of target.src_path, if I understand what you mean.

Could you describe your use case a bit more

Sure, so I'm implementing/hacking on a cargo subcommand – cargo-phabricator – and there is at least one instance where being able to access find out the project root/manifest is useful.
In particular I had to resort to implementing a custom test runner, because cargo does not present messages about tests in a machine readable format (cf. https://github.com/rust-lang/cargo/issues/8903). Tests may depend on the very precise environment that cargo sets up for them (cwd = package root; environment variables, like CARGO_PKG_NAME, CARGO_MANIFEST_DIR, etc) so it is necessary for me to emulate that behaviour at least to some extent. Being able to easily access the manifest for a given test harness binary makes it comparatively easy(-ier) to set such an environment.
Now, I'm sure that ideally we'd improve cargo's test runner so that implementing custom test runners is not necessary – and I intend to hack on that as well – but I can also imagine other people finding other use-cases where being able to access the manifest helps to tremendously simplify their cargo wrappers.

seems like you might also need the source file entry point as well

That is already present as part of target.src_path, if I understand what you mean.

Could you describe your use case a bit more

Sure, so I'm implementing/hacking on a cargo subcommand – cargo-phabricator – and there is at least one instance where being able to access find out the project root/manifest is useful.
In particular I had to resort to implementing a custom test runner, because cargo does not present messages about tests in a machine readable format (cf. https://github.com/rust-lang/cargo/issues/8903). Tests may depend on the very precise environment that cargo sets up for them (cwd = package root; environment variables, like CARGO_PKG_NAME, CARGO_MANIFEST_DIR, etc) so it is necessary for me to emulate that behaviour at least to some extent. Being able to easily access the manifest for a given test harness binary makes it comparatively easy(-ier) to set such an environment.
Now, I'm sure that ideally we'd improve cargo's test runner so that implementing custom test runners is not necessary – and I intend to hack on that as well – but I can also imagine other people finding other use-cases where being able to access the manifest helps to tremendously simplify their cargo wrappers.

Ok thanks for the info and seems reasonable to me!
@rfcbot fcp merge

Ok thanks for the info and seems reasonable to me!
@rfcbot fcp merge

:umbrella: The latest upstream changes (presumably #9122) made this pull request unmergeable. Please resolve the merge conflicts.

@nagisa want to rebase this and I'll r+?

Rebased.

@bors: r+

:pushpin: Commit 548300b20f441e20fb93eaadde66c61874009fb3 has been approved by alexcrichton

:hourglass: Testing commit 548300b20f441e20fb93eaadde66c61874009fb3 with merge c69409658a1f19452b784f675984e46da752a75b...

:sunny: Test successful - checks-actions
Approved by: alexcrichton
Pushing c69409658a1f19452b784f675984e46da752a75b to master...


thumbnail() generate black bottom border

I tried to thumbnails in my project. Thumbnail method generates 1px black border on the thumbnails.  Is there a solution?
try {
$image = new SimpleImage();
$image->fromFile($F.$N)->autoOrient()->thumbnail($thumb_img_w, $thumb_img_h)->toFile($F.$NT);
$image->fromFile($F.$N)->autoOrient()->thumbnail($img_w, $img_h)->toFile($F.$NC);
} catch(Exception $err) {
echo $err->getMessage();
}

Need to see the original image and desired width/height.

There is no exception, every size of images generates border. Thumbnail sizes depend on variables but they are generates border every size of thumbnails. Like this:

Just created this thumbnail without a border.
$image
  ->fromFile('parrot.jpg')
  ->autoOrient()
  ->thumbnail(250, 200)
  ->toScreen();

You can modify example/index.php and run it if you like. Here's the result:

This method has been stable for quite some time, so it's interesting that nobody else has reported this. That means it's likely an issue with your code or possibly an unexpected CSS style. If you look at the raw image (outside of a browser) is the line still there?

I think this is a GD library problem. In my localhost, border appears but in my hosting there is no border.
Here is the localhost GD info

And the hosting GD info

You might be onto something. This is possibly related: https://github.com/libgd/libgd/issues/329
Perhaps try updating php-gd on your dev box.

Closing since this appears to be an issue with an odler version of GD.


Sidechain sometimes produces blocks too slowly

We have observed that sometimes the sidechain produces blocks with a low chance. It means most of the aura slots end up with "Discarding proposal" due to "too long block production time".
However, neither the parachain nor the sidechain has a lot of traffic - they are quite idle. We have only one tee-worker node, so nothing related inter-node communication.
I don't know how it could happen - I could only impute it to the miscalculation of aura slot, which means the worker grabs the aura slot way too late.
Maybe it's related to https://github.com/integritee-network/worker/issues/1275?
Or is there anyway to further dissect the problem to find out the root cause?
[2023-06-21T10:43:36Z DEBUG enclave_runtime::top_pool_execution] ----------------------------------------
[2023-06-21T10:43:36Z DEBUG enclave_runtime::top_pool_execution] Start sidechain block production cycle
[2023-06-21T10:43:36Z DEBUG its_consensus_common::block_import_queue_worker] Imported 0 blocks in 0 ms (average of NaN ms per block)
[2023-06-21T10:43:36Z INFO  enclave_runtime::top_pool_execution] Elapsed time to process sidechain block import queue: 99 ms
[2023-06-21T10:43:36Z INFO  enclave_runtime::top_pool_execution] Remaining time in slot (id: Slot(281224036), stage Before AURA): 5132 ms, 85.53333333333333% of slot time
[2023-06-21T10:43:36Z DEBUG enclave_runtime::top_pool_execution] [Aura] Executing aura for slot: SlotInfo { slot: Slot(281224036), timestamp:<PHONE_NUMBER>.768255775s, duration: 6s, ends_at:<PHONE_NUMBER>s, last_imported_parentchain_head: <wasm:stripped> }
[2023-06-21T10:43:36Z INFO  aura] Claiming slot (281224036)
[2023-06-21T10:43:38Z INFO  integritee_service] Polling for worker for shard (2 seconds interval)
[2023-06-21T10:43:39Z DEBUG itc_parentchain_indirect_calls_executor] Scanning block 490169 for relevant xt
[2023-06-21T10:43:39Z INFO  itc_parentchain_block_importer::block_importer] Successfully imported parentchain block (number: 490169, hash: 0x9411…a6c7)
[2023-06-21T10:43:39Z INFO  itp_extrinsics_factory] Creating extrinsics using nonce: 366114
[2023-06-21T10:43:39Z DEBUG integritee_service::ocall_bridge::worker_on_chain_ocall] Enclave wants to send 1 extrinsics
[2023-06-21T10:43:39Z DEBUG integritee_service::ocall_bridge::worker_on_chain_ocall] Send extrinsic, call length: 356
[2023-06-21T10:43:40Z INFO  integritee_service] Polling for worker for shard (2 seconds interval)
[2023-06-21T10:43:42Z INFO  itp_node_api_metadata::event] [+] Received ProcessedParentchainBlock event
[2023-06-21T10:43:42Z INFO  itp_node_api_metadata::event] [+] Received ProcessedParentchainBlock event
[2023-06-21T10:43:42Z INFO  integritee_service] Polling for worker for shard (2 seconds interval)
[2023-06-21T10:43:42Z WARN  its_consensus_slots::slots] Proposed block slot time:<PHONE_NUMBER>480 ms, slot start:<PHONE_NUMBER>867 ms , slot end:<PHONE_NUMBER>000 ms
[2023-06-21T10:43:42Z WARN  aura] ⌛ Discarding proposal for slot 281224036, block number 363027; block production took too long
[2023-06-21T10:43:42Z INFO  aura] Did not propose a block for slot 281224036 in shard 0xfeb0568c5a8430f3f20ceb2e4459f0d6066379f393521ca29ed0f864bfeac9a4
[2023-06-21T10:43:42Z DEBUG enclave_runtime::top_pool_execution] Aura executed successfully
[2023-06-21T10:43:42Z INFO  enclave_runtime::top_pool_execution] No time remaining in slot (id: Slot(281224036), stage: After AURA)
[2023-06-21T10:43:42Z DEBUG enclave_runtime::top_pool_execution] Proposing 0 sidechain block(s) (broadcasting to peers)
[2023-06-21T10:43:42Z DEBUG integritee_service::ocall_bridge::sidechain_ocall] Enclave did not produce sidechain blocks
[2023-06-21T10:43:42Z DEBUG integritee_service::ocall_bridge::sidechain_ocall] Updating peers..
[2023-06-21T10:43:42Z INFO  integritee_service::ocall_bridge::sidechain_ocall] Successfully updated peers
[2023-06-21T10:43:42Z DEBUG integritee_service::ocall_bridge::sidechain_ocall] Broadcasting sidechain blocks ...
[2023-06-21T10:43:42Z DEBUG integritee_service::worker] No blocks to broadcast, returning
[2023-06-21T10:43:42Z INFO  integritee_service::ocall_bridge::sidechain_ocall] Successfully broadcast blocks
[2023-06-21T10:43:42Z DEBUG enclave_runtime::top_pool_execution] Sending sidechain block(s) confirmation extrinsic..
[2023-06-21T10:43:44Z INFO  integritee_service] Polling for worker for shard (2 seconds interval)
[+] Received finalized header update (490170), syncing parent chain...
[+] Found 1 block(s) to sync
Synced 490170 out of 490170 finalized parentchain blocks
[+] Found 0 block(s) to sync

Hmm, tbh we don't have a long-running instance currently. I can't give a constructive answer here. Does the worker recover from that?

Not really - it still produces blocks, but only once in a while.
Or to put it in another way, is there any hope that we get the aforementioned issue (https://github.com/integritee-network/worker/issues/1275) implemented soon? 🙌

That's a good guess - we have over 385,000 sidechain blocks and the light_client.db is now 20MB. Pruning it would definitely help!
might be related in case you want to remove it too: https://github.com/integritee-network/worker/issues/1281 - we only removed the check locally, however it doesn't prevent it from growing as the parentchain extrinsic is being added constantly

I believe the majority of the data in light_client.bin are the hashes of extrinsics sent to parentchain. They accumulate without being pruned.

Seems, we are on the right track! :D Then the issue should be solved by next week or the week after on our end. 👍

Any update on this? :)

I did have to tend to some unforeseen things regarding our slot swap, which have occupied me until yesterday, and next week I am off. But the week after, I can definitely finish. ETA of remaining working hours ~8-10h.

I might not have fully resolved this issue in #1399; however, there is a follow-up issue in #1404, which I tend to tackle as soon as I have some feedback on my suggestion, which should resolve this issue..


Doesn't connect anymore after ~100 connected users

Hello,
there isn't any limit on server config but when around 100 users get connected new users can't
i think problem is for local ip pool because tun0 is /24 subnet
any help or suggestion?

Can you try "Solution 1" from here?

tun0 is /24 subnet

You can connect 253 clients with this setting

Run journalctl -f on the server while a new client can not connect.
There should be an error or any messages for incomming call.
Lock in your syslog. There should find such line:
MULTI: TCP INIT maxclients=1024 maxevents=1028
That says, 1024 clients maximal.
On /24 net with option "topology subnet" can connect 253 clients, exactly from <IP_ADDRESS> to <IP_ADDRESS>. check ipcalc
Don't confuse with the old and default "topology net30", there it was 64 clients from <IP_ADDRESS> to <IP_ADDRESS> with a step of 4.

Please anybody can help me with multiple clients? I can't add on my server.conf


update title

title should be:

CLDF dataset derived from Wichmann et al.'s "ASJP Database" from 2018

Done with d313294


[Adaptive] Add FoldAwareColumn component

[Adaptive] Add FoldAwareColumn component
Adds current state of FoldAwareColumn to Accompanist Adaptive.
I put all of the copied RowColumn logic in the FoldAwareColumn.kt file, but I can extract that to helper files if that's preferred.

@alexvanyo looks like d338347 was committed from your personal email which doesn't have the CLA signed. Do you mind signing the CLA or updating the email on the commit?


How to handle hyphenated keynames in a toml file?

For legacy reasons we have some hyphenated keynames in our config file. I have searched issues and documentation and can't find anything.
How might I go about this?

Hi, what config format do you use?

@silvanmelchior TOML. If that's not what you're asking, pardon my ignorance and please clarify.

Great!


Refresh button doesn't work if user follows a link within the preview

Bug report
Packages affected
I'm not 100% sure 😅

[ ] sandpack-client
[x] sandpack-react

Description of the problem
If the Sandpack renders an anchor tag, and the user clicks the link, there's no way to get back to the code preview, other than refreshing the page. The "Refresh" button has no effect.
I imagine this is probably a pretty tricky problem; because the user has navigated away from the page within the iframe, it can't be interacted with, so maybe the preview should be remounted?
I also get that maybe this is more of a feature request than a bug report, feels kinda in the middle... but it was reported to me as a bug report, and so I thought I'd forward it along.
Thanks y'all! 💖
Link to sandbox: CodeSandbox Repro
To repro:

Click the "Go to Wikipedia" link. Wikipedia loads in the iframe
Click the "Refresh" button in the bottom right. It has no effect

Expected result: The preview should re-load, showing the "Go to Wikipedia" link once more.
Your Environment

Software
Name/Version

Sandpack-client version

Sandpack-react version
1.5.4

Browser
Chrome

Operating System
MacOS

Just a quick update, for anyone else wondering about this: I solved this in my app by essentially changing the key on the preview pane when the user clicks my (custom) refresh button. I did notice that this adds a "Run" button to the code editor, but I click it programmatically, with this snippet:
React.useEffect(() => {
  if (previewKey === 'initial') {
    return;
  }

  function clickButton() {
    const runButton = document.querySelector('.sp-button');

    if (runButton) {
      runButton.click();
    }
  }

  // Wait a single frame, so that the button exists.
  window.requestAnimationFrame(clickButton);
}, [previewKey]);

Hey @joshwcomeau, I managed to fix it on #587. Would you mind taking a look to see if it works as you expected?
Thanks for reporting this issue.

@danilowoz Just updated and it works great! Thanks so much :D


A support for 8080-I interface?

Hi, nice driver for libopencm3!
Would it be possible to add a support for 8080-I interface?

@vitasam 8080-I is not that different from 8080-II. Only thing that changes is which set of pins of the display to be used. For 8080-I, it's LSB aligned (D0-D7). For 8080-II, it's MSB aligned (D8-D15).
So, just follow the wiring here and use those display pins with your mcu. The code remains the same.

Thanks! I think that I was a little misled by the fact that you have specified the project as for 8080-II bus.
By the way, is 8080-II bus located at D10-D17 (not D8-D15) ?

you have specified the project as for 8080-II bus.

Actually, I mentioned 8ö80-II because I used a 8080-II display. I'll update the readme soon. :)

By the way, is 8080-II bus located at D10-D17 (not D8-D15) ?

Oops, yes you're right.. My bad.

Ok thanks! I think I will close this issue, not needed :)

Resolved


New package name

It seems like this project has recently been renamed from matplotlib2tikz to tikzplotlib. Both modules are available at PyPi at the moment.
What are the plans for them?

Indeed. tikzplotlib is just the new name. matplotlib2tikz will continue to be available on pypi for a while, but all updates will be in tikzplotlib. Mind that tikzplotlib is Python-3-only.

Okay, it seems like my projects should be migrated to tikzplotlib as well. There probably should be a note about this inside the README as well.

I've added a note + a warning to matplotlib2tikz on pypi; this should hopefully clarify things.

Was there a reason for this renaming?

It was always tedious to type and didn't even have a good "short" name. Also, every now and then some people had interpreted the 2 as a version or association with Python 2.

Ah, ok. Thanks for the explanation.


ACL stops working randomly

Issue Description
ACL stops working at random intervals. I have a few Roles that containing specific users. These Roles are then applied to some entries in a table. The ACL is ignored. It will start working if I restart the parse server. It stops working after a few hours or even a few minutes. There are no JOBs touching the ACL for these rows or table. This affects ALL users.
I'm sorry if I cannot provide a reproducible scenario. The issue is quite critical for my application and makes no sense that a restart fixes the issue for a while and then breaks again. I don't see anything in the parse server logs that suggests an error of this nature.
Steps to reproduce

Create a Role and add a user to it
Set the ACL of one entry of a table with this Role
Restart Parse Server
Find all entries on the table

Expected Results

All entries will be retrieved for the users with the Role
Only entries with Public ACL will be returned for users without the Role

Actual Outcome

All entries are retrieved regardless of the Role of the user.
If the node hosting the parse-server is restarted, the ACL works fine.
ACL stops working after a while (it could be a few minutes or a few hours).

Environment Setup

Server

parse-server version: 2.2.25
Operating System: 64bit Amazon Linux 2016.09
Node.js version: 6.9.1
Hardware: c4.large
Localhost or remote server?: AWS

Database

MongoDB version: 3.2.11
Storage engine: MMAPv1
Hardware: M1
Localhost or remote server?: mLab

I've been doing more testing and this is only happening with a Role that has hundreds of users.

Do you have more informations? We made improvements into the caching engine. If you have many objects in your roles, I suggest you use a distributed cache like Redis in order to ease the memory usage on the server.


Suppress encoding warning

I recently started using this Gem and have been receiving a warning that URI::escape is obsolete. This change eliminates that warning. I took this idea from this PR on the mongo-ruby-driver.

I do not have a test for this specific warning message but did run it in my own separate app and the message is no longer present.

thanks!

@wingyu no problem!


Gapi login doesn't work in Edge

Hello,
I'm having some issues when I try to login using Google Signin custom button.
This issue could be reproduced in Microsoft Edge 40.15063.674.0.
I'm using a https protocol and I'm not blocking any cookies.
This issue doesn't happen when I'm in inPrivate mode.
Here is my code:
1- I put the following code in my index.html, inside  tag:
<script src="https://apis.google.com/js/api:client.js"></script>

2- I'm using AngularJS (v1.6.x) so I've decided to load and init Gapi on app.run:
$window.gapi.load('auth2', function() {
     console.log('gapi loaded');
     $window.auth2 = $window.gapi.auth2.init({
          client_id: 'my_id_here'
     }).then(function(){
          console.log('gapi initialized');
     });
});

PS: the second console.log is not working in Edge, but it works in other browsers.
3- I created a custom button and set a login function in my controller:
<md-button
     type="button"
     class="c-button--google"
     ng-click="vm.loginByGoogle()">
     <img class="c-button__image" src="img/icon-google.png">
     Google
</md-button>

vm.loginByGoogle = function() {
     var googleAuth = $window.gapi.auth2.getAuthInstance();

     googleAuth.signIn().then(function(resp) {
          // ...
     });
}

Every time I load my application using Edge and try to click on the login button, a Google popup is opened, but when I login into Google and the popup closes, I've found this Gapi error in the browser's console:

It would be nice if someone can help me, please :)
Thanks!

@ingridtartaglia could you see what is the content of the error returned by gapi?

@TMSCH
The error occurs in line 1362, according to the console:

I'm having same issue.
@ingridtartaglia Did you find any solution for this issue?


Run dart migrate

Hi, I needed null safety for including this library on a flutter project. So I ran the dart migrate command and fixed additional problems.

I will check this out ASAP. Thanks!

Thank you. For my project I also needed to remove references to reflection to make this package flutter compatible. I thought to make changes on a separate "flutter" branch. I will make a pull request even for that