sidebar and image section height and width styling

Pre-Flight checklist

[x] Screenshots and design review for any changes that affect layout or styling

[x] Desktop screenshots
[ ] Mobile width screenshots

[x] Testing

[x] Code is tested
[x] Changes have been manually tested

What are the relevant tickets?
closes https://github.com/mitodl/ocw-hugo-themes/issues/811
What's this PR do?

Makes the height of all 3 sections on CHP the same.
Makes the height of the sidebar section and the content section on interior pages the same.
Increases the width of the course image section on the home page.

How should this be manually tested?

Build any v2 course locally or view netlify course v2
Verify the above-mentioned points on multiple browsers and screen dimensions. Also compare it with the design

Screenshots

The panel on the right most side takes about 25% for the available space. Should it be smaller

This PR was created to increase its width, as initially, its width was smaller but then it was pointed out.
See the issue ticket and the design.
Though I agree, as compared to the design, its width is a bit larger but this difference is due to the usage of the bootstrap grid system here (we are not using our own px values). Since bootstrap cols have their own width and I'd suggest not overriding them for better consistency across the app.
but if I'm being mistaken or the width should be smaller, please let me know.
Maybe if @Ferdi  @pdpinch @gumaerc has any thoughts?

In the design, the image width is 361px, so this is definitely too wide. Can we reduce it from 4 columns to 3? Or is there some other way to target the image width on a desktop?

Can we reduce it from 4 columns to 3?

Previously, it was set to 3 columns (have a look here), but then to increase its width, I changed it to 4 columns in this PR.
But if you think that it looks fine with 3 columns, then maybe we can change it back to 3?

is there some other way to target the image width on a desktop?

1 approach is to use bootstrap (already using).
Another approach is to use CSS to make our own grids and custom width etc, for that, we'll also have to cater the responsiveness by using media queries etc.
My suggestion would be to stick with bootstrap but if we really want to have the exact width, we can proceed with writing our own CSS.
(btw I'm talking about the width of the complete image section, not just the image only)

@MAbdurrehman12 Another thing we could try is overriding the SASS variables used to construct the bootstrap styles. Bootstrap columns are constructed based on percentages using flexbox, so while you wouldn't want to give a column a specific width, you can adjust the total amount of columns in a grid.  The default is 12, but you can override it:
$grid-columns: 12 !default;
$grid-gutter-width: 30px !default;
$grid-breakpoints: (
  xs: 0,
  sm: 480px,
  md: 768px,
  lg: 1024px
);

$container-max-widths: (
  sm: 420px,
  md: 720px,
  lg: 960px
);

We have a bootstrap overrides file at base-theme/assets/css/bootstrap-overrides.scss. We should be able to override the $grid-columns variable to increase the total number of columns, increasing the granularity of each column and giving us finer control.

we could try is overriding the SASS variables used to construct the bootstrap styles

Yeah, I had this in mind but didn't proceed with it to maintain consistency in bootstrap styles: Changing them globally will have a widespread impact, so we can only change it for this section (not sure if it'll be a good approach).

you can adjust the total amount of columns in a grid

I gave this a shot but it looks like the exact/close to exact width is still not being achieved by adjusting the columns. As reducing a column makes it a bit small and increasing the column makes it a bit large, lol. Adjusting columns also have an impact on the other sections (side navbar, course description section).
I think if the initial width, which can be seen here, is not up to the mark, then I'll just go on and override bootstrap col width for CHP only to achieve the exact width as mentioned in the design.
Maybe @pdpinch can share his thoughts on this?

pixel-perfect is not a concern, but "too wide" is a concern.

@gumaerc Your point of having 100 grid columns and considering col as a percentage makes sense.
I'm having some trouble applying this change only to CHP (since $grid-columns are fetched and defined on the compilation I think) as I don't think it will be a good idea to make this change globally as it will have quite a widespread impact.
Do you have any possible solution in mind?
After this, we can identify the percentage of the image section, along with the side-navbar and course description section from the design and use them.
Currently, in design, it looks like that image section is taking up to 31-32% of the total grid.
and if we look into this PR, we have assigned 4 cols, out of 12, to the image section which is 33% ((4/12)*100).
So I wonder, even after, applying the 100 grid columns approach, the result will almost be the same.
and if 31-33% is too wide, then do we need to get the design updated? or I'm missing something?
(its not looking too wide in the design since maybe the overall design width is a bit narrow?)

@MAbdurrehman12 It was just a suggestion of something to try out. Like you pointed out, it seems we're already getting pretty close to the ratio we want so it may not be worth the extra work to re-work $grid-columns. If it needs to be more precise than it is, maybe we just want to write some custom CSS to do so. We will have to do responsive breakpoints manually though.

I'll just go on, remove bootstrap cols and add custom CSS to be more precise.

At larger mobile resolutions, the course image is still visible. In the current course theme, we hide the course image at these resolutions

Thanks for pointing this out @gumaerc.
I've now also hidden the course image section on smaller screens to make it the same as in the current course theme.
I think, now we can merge this PR!


Implement logout functionality

Addresses issues:

https://github.com/solid/oidc-op/issues/6
https://github.com/solid/oidc-auth-manager/issues/20
https://github.com/solid/node-solid-server/issues/675

This is a first pass at implementing a better Logout functionality on the server side.
What it currently does:

Calls the host server's logout() (to clear any sessions or whatever)
Validates post_logout_redirect_uri per the spec, and 302 redirects to it if present (along with the state)
Requires id_token_hint to be present if post_logout_redirect_uri is given (since the token hint is the only way to validate the pre-registered redirect uri).
Responds with a 204 No Content if no redirect uri is given

Things to do in the next iteration (and things to discuss):

Doesn't prompt the user for consent to also log out of the home pod
If no redirect uri is given by the RP client, should we redirect to a pod's default /goodbye uri or something? (Instead of just a 204 No Content)
Possibly consider as a special case post-logout redirect uris if they're on the user's home pod?

Ok, changed it so that if no post_logout_redirect_uri is provided by the RP, it looks in the host/OP's defaults (to redirect to /goodbye, for example).
PR is mostly ready for review, needs a few more tests though.

Hi! We're having the meeting with @kidehen and we found that this PR should fix the logout problem without merging https://github.com/solid/solid-auth-client/pull/46 (because that PR fixes the problem in the wrong place).
The problem has been that we haven't felt quite up to the task of reviewing this, so we figured that OpenLink would be better qualified to review it. So, @cblakeley could you please test and review this PR and report back? Make sure that you do not have https://github.com/solid/solid-auth-client/pull/46 running when you test this, since that would make it appear to log out, but it would be the wrong way.

@kjetilk Thanks for the heads up. I've resolved the conflicts, should be fine now.
(Part of the confusion about the timeouts has to do with -- so this PR moves all the individual timeouts into a single Mocha-wide timeout in mocha.opts.)


[Payment history] make refund receipts have correct dates when refunded directly via stripe

Problem:
Refund date is showing at Jan 1st 1970 on refund receipts.
Reproduction steps:

create new account on Old Dot with an email that you have access to
create new annual subscription with a non-zero user count (ex: 5)
add a valid stripe test card to the user's Account > Payment > Payment Details
from the cli, run billing using script/clitools.sh billingrun
run php script/notifyall.sh from inside the VM in Web-Expensify
make sure script/bwm.sh is running so that the subsequent BillingReceiptUploader job can complete
confirm you get a billing receipt
comment out these lines of code from the ProcessStripeWebhook command
recompile and restart auth
look in the purchases table at the most recent purchase (should be the one you just made) and find the transactionID value. It'll be a hashed value, not the actual transactionID.
run the following commands from the VM, careful to replace YOUR_TRANSACTION_ID_HERE with your actual transaction id that you got from the purchases table

nc localhost 4444

ProcessStripeWebhook
eventType: charge.refunded
signature: whsec_8V8HYuNqeMDTgMUdwdGxWygHda7tE2Sx
payload: {"id":"evt_1CA23QKMVuTn5qYVgNZ14TBq","created":1522096592,"data":{"object":{"id":"YOUR_TRANSACTION_ID_HERE","amount":900,"amount_refunded":900,"created":1522096552,"currency":"usd","description":"Refund Test","refunds":{"object":"list","data":[{"id":"re_1CA23QKMVuTn5qYVUgS8I1Mr","object":"refund","amount":900,"balance_transaction":"txn_1CA23QKMVuTn5qYVQXlC0CAx","charge":"ch_1CA22mKMVuTn5qYVQitM5R1L","created":1522096592,"currency":"usd","metadata":[],"reason":"requested_by_customer","receipt_number":null,"status":"succeeded"}],"has_more":false,"total_count":1}}},"type":"charge.refunded"}
countryISO: US

run notifyall.sh again and make sure bwm is still running
confirm that you got an email about a refund
see that that refund shows Jan 1st 1970 as the refund date

Solution
Investigate and fix this.

Skimming for issues I can take... Do you still see this happening? Just from the refund that I got for testing that other thing (ha), I see the correct date:

@dangrous huh, not sure! Where did you do the refund from? Was it from supportal or the stripe dashboard? I think the date is only wrong when we refund directly via stripe, which is what the repro steps simulate. But I haven't tried repro-ing since I created this issue so maybe not.
Can you try the repro steps and see if ti reproduces?

oh interesting. Yeah it was via supportal. If I have time today I'll try to go fully through the steps! It was giving me a bit of trouble on Friday but I've rebuilt since then so it's maybe better haha

eyyy finally managed to reproduce. Looking into it now.

Okay so it's this line: https://github.com/Expensify/Auth/blob/ce419dee8d3327b51569f728ce3da131b90f628b/auth/command/ProcessStripeWebhook.cpp#L198
Basically SComposeTime deals with usecs, not regular seconds, so it's not correctly parsing the date response from Stripe (i.e. it's saying 1000x less time has passed).
I just need to figure out the right function to use to parse, I'm sure we have one in there.

Technically can fix by multiplying the purchase date by  (uint64_t)1000000 but i feel like there's probably a better way

Hm, any manual refund requests should get a GH created to process by Conci. Doesn't look like we've had any new ones since this was deployed: https://github.com/search?q=repo%3AExpensify%2FExpensify+refund+request&type=issues
So I think our best bet is to look for refunds in the logs probably, yeah?

Your PR hit prod at ~5.45pm UTC: https://github.com/Expensify/Auth/pull/11590#issuecomment-2229054799
When we refund someone, we should trigger Notification_RefundReceipt here: https://github.com/Expensify/Web-Expensify/blob/37dbd9df87740a4c4afd91c4edd86862b9090113/lib/UserAPI.php#L3452-L3489
I searched the logs for the past two days, and found this one processed yesterday at 22.12 UTC
Supportal'd into the customer account (not incl. credentials here in /app) and can see this receipt in the account:

Not sure why the receipt says refunded on 1st July, 2024 when in fact it was refunded on 15th July, which the billing history in account settings confirms:

Hope that helps!

Ooh great, that's helpful! But shows that we might be using the wrong date here - the date of the charge, not the date of the refund itself. So, we're close, but no cigar (might not have noticed this testing since the date of the charge and the date of the refund were the same).
@blimpich can you chime in on what we intended here? Asking because we specifically use     notification["refundDate"] = originalPurchaseDate; here. Was that intentional? Should the refund date equal the original purchase date? Or is that a separate bug that is now surfaced and needs to be fixed?

Yeah, I think it's inaccurate to say "Refunded on X date" and that date not be the date of refund. So we should change that to the date refunded, as it's in the design doc. 👍

Worth noting we're adding the card number portion to this as well, so it'll be even weirder to have "Refunded on July 1st 2024 to card ending in 1234"

Okay cool I'll see if I can spin up a fix for this shortly! I think we can just use SComposeTime("%Y-%m-%d %H:%M:%S UTC", STimeNow()) - @blimpich would this code ever run at a different time other than immediately after the refund is processed? Trying to figure out if that would be sufficient. I can also see if there's another piece of the data returned from Stripe that I can use.

I think STimeNow() is perfectly sufficient 👍

okay that PR is up

Once that's on prod I'll use your test steps @trjExpensify to see if we're good to go!

Dope, we're deploying auth now, so shouldn't be too long. 👍

Looks like its deployed 🎉

doesn't look like we've processed a refund yet if I'm calculating UTC correctly. I believe we're shooting for something after July 18 6:40PM UTC and the last one we have is 2024-07-18 16:20:43.
I mean hopefully we never need to refund anyone ever again and we NEVER KNOW
semi-related - I would LOVE a toggle in log search to show times in local time.

Move to the UK man.. for half the year you'll be on UTC. 😂

Good/bad news - still no new refunds, so can't confirm nor deny

Okay so I found one - https://www.expensify.com/_devportal/tools/logSearch/#query=request_id:("393Ikb")+AND+timestamp:[2024-07-22T16:12:42.041Z+TO+2024-07-22T18:12:42.041Z]&index=logs_expensify-029493
Weirdly, the pdf refund is still saying July 1, which is particularly odd because neither the original charge (July 7) nor the refund (July 22) is on that date. I double checked the code though and there's pretty much no way that should have happened, with what I updated. @blimpich do you happen to know if the pdfs are separate code? Like, did I fix it for the email but not the pdf? I didn't realize that if so.
Sorry this is dragging on so much.

The issue is probably that there are three different ways of creating a receipt, and one of them is probably broken. The three ways are:

an expensify employee refunds directly via Stripe
a expensify employee or support staff (second responders I think) refund via supportal
the user themselves refunds via the "request refund" button on the payment page

#2 & #3 use similar logic, but #1 is almost an entirely separate flow. This issue's reproduction steps focus on #1.  I bet that refund was through #2 or #3. We'd need to create a refund locally via supportal or the request refund button to confirm that hypothesis, but that is my guess as to what is going on.

Oh okay I think I've figured it out, mostly - you're right. so for case 1, the notification is sent from from Auth, and we fixed that code. For both 2 (UserAPI::refundUser) and 3 (UserAPI::refundPurchase), the notification is sent from PHP. Both of those call UserAPI::createRefundReceipt which basically makes the same mistake that we did - they pull the created date of the original purchase, NOT the refund, and use that as the refund date. I think this might be an Auth bug - I think it should be sending back the purchase ID of the refund, not the original purchase.... BUT I'm not sure if there's other code relying on it so to be safe I'll see if we're already sending the refund date somewhere else, and use that rather than changing what Auth sends.

I will have to figure out how to fake those types of refunds on dev though, lemme know if you have tips.

Weirdly, the pdf refund is still saying July 1, which is particularly odd because neither the original charge (July 7) nor the refund (July 22) is on that date. I double checked the code though and there's pretty much no way that should have happened, with what I updated.

oh and it's always the first of the month when sent from PHP because for some reason we take the date, convert into just a month and year (like July 2024) when we send it to the notification, and then change that date BACK to a month day year inside the notification code. But since there's no longer a day in it, it defaults to the first of the month. Le sigh.

Okay I made a draft PR - https://github.com/Expensify/Web-Expensify/pull/42878
Two questions for the room:

Should I create a new issue? Technically this one is only for "when refunded directly via stripe". We still haven't successfully QAd because we haven't found a matching refund, but the new issue is a separate bug.
@blimpich I can get the notification code to run successfully (I think) on dev, but it never actually sends the email or creates the refund receipt for view in the app. This happens on main as well as my branch, so it's not the new code. Any thoughts on how to test this fully? It's hitting my breakpoints and making the notification, but it never sends, even with BWM` running and after running the notifyall script in the vm.

I think it'd be fine to create a new issue. Probably help keep us all sane. Maybe reword the issue title of this too to make it clear this is just for stripe refunds.
For the second point, hmmmm, that's strange. I'll DM you, maybe we could do some paired programming?

great, made https://github.com/Expensify/Expensify/issues/415121, we'll continue discussion there
As for this, we're still waiting on a Stripe activated refund to QA

Okay so I've found a Stripe refund, but unfortunately the receipt link in the billing history links to the original receipt, not the refund. Is there another way to look at it?

Did you look at the expenses view? If the refund went through correctly it should have made an expense with the receipt for the refund attached to it.

that one looks like it didn't go through.
BUT (drumroll please) I did find one that DID go through!

Looks like it's working! Closing out.

Oh yay!!!


Stackstorm Sensor Partition

In my environment, I have three nodes. A partition file for my sensor has been added. The sensor is not operating automatically after being added.
This is  the error
sensor pack.WindowsSensor is not assigned to this partition. Ignoring update.
#/etc/st2/partition_file.yaml

sensornode1
-  pack.WindowsSensor
sensor node name is added in st2.cong along with the partition provider.
Now even after changing the partition provider to default, still its showing the same error. and the sensor is not running automatically.

Can anyone please suggest on this?
@stackstorm-neptr
@armab


Swarm and custom type support

Closes #76 and closes #77
Ironically there is still an issue with Flee Mortals swarms, because of the way their statblock is formatted, the importer gets caught on the following line but I think that there are so few swarms in the book, and it seems like a niche case that this should be fine

My first attempt as solving for this was to 'hard-code' the types into the racialDetails regex, but that made it insanely long, and wouldnt support custom types, so I think this is a better solution

Can you post the names of specific 'Flee, Mortals!' monsters that this PR would address so I can test locally? I have the book, so don't need the full statblock.

Yea it should be for any Swarm creature, from FM or WotC
Here's the current import of one from each (FM - Swarm of Skitterlings, WotC - Swarm of Poisonous Snakes)

And with this PR
Skitterlings (without adjusting for the aforementioned troublesome line on the left, and with adjusting for it on the right)

Looks good!


Clean up codegen deletion

This PR adds a helper class to perform tuple deletion in the codegen component. An instance of this class is created for every delete query.  The instance is initialized in the query plan's init() function with the transaction and table. A call to Delete() is generated in the primary loop for all qualifying tuples.  This is much cleaner than before.

Coverage decreased (-0.03%) to 71.547% when pulling 3c7c2fe53953f30ba8b8ff855490287e7bb84b17 on pmenon:fix-delete into d3fd0a5d986302d795f074b95e8f0d068d00c004 on cmu-db:master.

Coverage decreased (-0.04%) to 71.534% when pulling 3c7c2fe53953f30ba8b8ff855490287e7bb84b17 on pmenon:fix-delete into d3fd0a5d986302d795f074b95e8f0d068d00c004 on cmu-db:master.

Coverage decreased (-0.03%) to 71.289% when pulling 2883d4df88176344601ed4fc021f266b8ca14a09 on pmenon:fix-delete into ffb18e96b00f4ebaf57cc473ac9e5ceb1950b9be on cmu-db:master.

@apavlo You can merge this in.

Coverage decreased (-0.02%) to 72.941% when pulling f2e67e4a91dc32882542dae497ec56339febba34 on pmenon:fix-delete into 934516ed38a095dde25a6cec941caffde4c3da56 on cmu-db:master.


Skip failing torch post commit test

gs://apache-beam-ml/testing/inputs/it_coco_validation_inputs.txt was changed on July 21st and it needs to be addressed once the team gets back
Please add a meaningful description for your change here

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

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

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

R: @TheNeuralBit

Run Python 3.7 PostCommit

Run Python 3.9 PostCommit

PostCommit runs:

https://ci-beam.apache.org/job/beam_PostCommit_Python37_PR/374/
https://ci-beam.apache.org/job/beam_PostCommit_Python39_PR/32/

Python_PVR_Flink failure is unrleated, and PostCommits passed.

Thanks @TheNeuralBit


Add “—lasso-env” flag to manually specify the environment Lasso should upload to.

Lasso's environment management system is pretty useful, but can be clunky if you are working locally.
Adding a "--lasso-env=" flag to the publish command will upload your files to an exact environment.

I no longer feel this is needed.

I no longer feel this is needed.

I would like this very much. I'm calling the lasso:publish from inside my own command as I need to do some other stuff as well. But now I need to silence the lasso command and set the $filesystem->setLassoEnvironment($env); myself; as I need the specified env for other things in my own command.


Question: How do handle token error code: -4

Intentionally I disable the internet access to the ESP8266 and receiving the following error as expected
00:13:20.046 -> Token info: type = id token (GITKit token), status = on request
00:13:25.066 -> Token info: type = id token (GITKit token), status = error
I eventually want it to quit trying so i can programmatically handle the error with the connectionError() method as seen below code. It however never quit trying - it continuously sends "on request" and receives "error"
What is the suggested way to handle the firebase connection failures? I thought of using if(Firebase.ready()) but this token request happens during setup?
if(Firebase.RTDB.setJSON(&firebaseData, path, &jsonDefault)){
}else{
firebaseData.errorReason().c_str();
connectionError();
delay(100);
}
Below is the setup and I am using version 4.4.14
// Assign the api key (required)
config.api_key = API_KEY;
/* Assign the RTDB URL (required) */
config.database_url = DATABASE_URL;
// Assign the user sign in credentials
auth.user.email = USER_EMAIL;
auth.user.password = USER_PASSWORD;
Firebase.reconnectWiFi(true);
firebaseData.setResponseSize(4096);
// Assign the callback function for the long running token generation task
config.token_status_callback = tokenStatusCallback; //see addons/TokenHelper.h
// Assign the maximum retry of token generation
config.max_token_generation_retry = 5;
// Initialize the library with the Firebase authen and config
Firebase.begin(&config, &auth);
delay(300);

The code you post above is generally can be found from library examples and it does not help anything.
You should start at the code that works as from examples and try to adapt from it.
Something that you changed in examples that is the cause of issue that it is error in coding or logic.
Anyway, delay should be avoided, you don't have any hardware event to be waiting.

If you use WiFiManager, you have to notice this.
https://github.com/mobizt/Firebase-ESP-Client/blob/02c7bd1cc95e14a5efc22b9ab9e8037643f4e24e/examples/RTDB/Basic/Basic.ino#L118-L119


Fallback to upload current dir when running cvdr create with local_image

Testing method for the ARM server:
cvdr \
--http_proxy=socks5://localhost:1337 \
--service_url=http://<IP_ADDRESS>:8080 \
--zone=local \
--host=$CO_HOST_NAME \
--local_image=true \
--auto_connect=false \
create

Interested thing was, it took only about 5-7 mins to upload artifacts & running CF instance. Probably, would it be caused by using public stun server(stun.l.google.com)?

Interesting, I think it might be due to socks5 proxy rather than stun server. can you benchmark network bandwidth with socks5?

I roughly checked with our hybrid one, and it took about 12-13 mins. And super.img was about 4.7G. Seems like the bandwidth is about 6MB/s or 48Mbps

Uploading everything from the current directory with no validation is a big responsibility to pass to the final user, this could end up in undesirable behaviors, for example uploading personal files.

IIUC, imgs.zip has required_image file inside. We can use that to list up files which we want to send.

Wrote https://github.com/google/cloud-android-orchestration/pull/292 where we need to be upfront with what's going to be uploaded, it also offers more flexibility to build instances with mixed artifacts, as we just need to change the artifacts sources file.

Should I close this PR then? I saw the PR you've created, and this and that contains duplicated contents. Seems your PR covers wider purposes.

IIUC, imgs.zip has required_image file inside.

Do we? I unpacked CF image zip file downloaded from ci.android.com, and there was no required_image.

ah, sorry, require_image exists in PRODUCT_OUT, not imgs.zip

yes, let's close this one, thanks!


Source from embedded or file

Hi guys,
I'm new on Xamarin in general. I'm using your component for my first project. I've noticed it's working fine with image from a url but I can't find a way to show an image from embedded resources or files. Could you explain me how do that?
Thank you in advance!

Please check our documentation at http://developer.xamarin.com


Add integration test to check type error display

This test is unfortunately and necessarily fragile, since it tests what the user is displayed instead of a structured result.
The test will not pass before https://github.com/pulumi/pulumi/pull/10918 merges.
Fixes #347

https://github.com/pulumi/pulumi/pull/10918 has merged, so we can merge this PR after the next release (which should be tomorrow).

Blocked on https://github.com/pulumi/pulumi/pull/10965.


Paths containing spaces aren't allowed

This is probably because the complete path where the video is saved isn't in between " characters, so spaces break the arguments in the command line.

I assume this issue is actually happened with FFmpegRecorder, not FFmpegOut. Anyway, I fixed the issue on the both sides. Now both FFmpegOut and FFmpegRecorder allow using filenames containing white spaces.

I'm closing this issue. Please feel free to reopen it if it still reproduces.


[UI] User Prefs: Only display remote provider tab when user signs into a remote provider.

Current Behavior
This screenshot is of a user using the Local Provider (None). They should not see the Remote Provider tab.

The labels on the tabs should be responsive and should not be cut off.

Desired Behavior
In /user/preferences, the Remote Provider tab should only be shown when the user is connected to a Remote Provider.
Environment

Browser: Safari
Host OS: Mac
Meshery Server Version: stable-v0.5.48

Contributor Guides and Resources

🎨 Wireframes and designs for Meshery UI in Figma
🖥 Contributing to Meshery UI
🙋🏾🙋🏼 Questions: Layer5 Discussion Forum and Layer5 Community Slack

@yagarwal1307 heads-up

sure @leecalcote. onto it!


b38 does not show anything for me, just a white background

Describe the bug
I installed IPA b38 then opened and just got the white background
Device (please complete the following information):

iOS Version: 12
iOS Device: iPhone 6s+
unc0ver Version: b38

Try rebooting. Also, where did you install it from.

@Cryptiiiic I installed b39 already and got error fatal line 1223, like a bug posted above


fixed duplicate entry in page-changelog

Yeah, I already saw and fixed that... Just noticed I forgot to push. Will go live with next deploy, probably later today already.


find_objects blowing up memory

Hi all,
Thanks for the wonderful package! On Python 3.9.2, on MacOS Big Sur on an Apple Silicon chip with SciPy 1.6.1 and numpy 1.20.1 the find_objects function is using so much memory that it's getting OOM killed.
Reproducing code example:
To reproduce, you can download an image volume. It's public data, but please don't integrate the network call version of this into an automated test. ^_^ You'll need to run:
pip install cloud-volume scipy

from cloudvolume import CloudVolume
from scipy.ndimage import find_objects

cv = CloudVolume("precomputed://gs://neuroglancer-janelia-flyem-hemibrain/v1.0/segmentation", cache=False, progress=False)
img = cv.download_point((10320, 29908, 19427), size=512, mip=1)[...,0]

find_objects(img) # OOM, note that img is in Fortran order but this also happens in C order

The data can be viewed using this link.
Scipy/Numpy/Python version information:
SciPy 1.6.1 Numpy 1.20.1
Python: sys.version_info(major=3, minor=9, micro=2, releaselevel='final', serial=0)

It's notable that I was creating this example specifically to stress the bounding box function, much of the data is approximately diagonal across the bbox.

To clarify, are you claiming that this is a regression and that you could previously do this with an older version of SciPy or on another platform that is not bleeding-edge like M1?

The following test was conducted on an Ubuntu 16.04 workstation with Python 3.6, scipy 1.3.1, and numpy 1.19.5. The workstation has 32 GB of RAM.
(cv) me@workstation:~/cloud-volume$ time mprof run scipytest.py
mprof: Sampling memory every 0.1s
running as a Python program...
Traceback (most recent call last):
  File "/usr/people/ws9/anaconda3/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/people/ws9/anaconda3/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/people/ws9/.virtualenvs/cv/lib/python3.6/site-packages/memory_profiler.py", line 1227, in <module>
    exec_with_profiler(script_filename, prof, args.backend, script_args)
  File "/usr/people/ws9/.virtualenvs/cv/lib/python3.6/site-packages/memory_profiler.py", line 1128, in exec_with_profiler
    exec(compile(f.read(), filename, 'exec'), ns, ns)
  File "scipytest.py", line 7, in <module>
    find_objects(img) # OOM, note that img is in Fortran order but this also happens in C order
  File "/usr/people/ws9/.virtualenvs/cv/lib/python3.6/site-packages/scipy/ndimage/measurements.py", line 305, in find_objects
    return _nd_image.find_objects(input, max_label)
MemoryError

real	0m5.778s
user	0m4.136s
sys	0m0.976s

I think I found the issue in find_objects.
https://github.com/scipy/scipy/blob/5f4c4d802e5a56708d86909af6e5685cd95e6e66/scipy/ndimage/src/ni_measure.c#L76
It takes a "max_label" but I think it expects the label to be small. Since the labels in this volume are large, it allocates a huge array.
The workaround for me is to do the following:
pip install fastremap

fastremap.renumber(img, in_place=True)

https://github.com/seung-lab/fastremap

Hmm, on second thought now that I think about the interface, that seems like the design. You're supposed to access the result using the index of the label - 1.

@william-silversmith indeed it's hard/impossible to change the API for find_objects but we would welcome a defaultdict implementation at skimage — see https://github.com/scikit-image/scikit-image/issues/4855


I think we should support angular8

Hi, you are right, this lib should support angular 8.
The thing is I did not work on this lib for quite some time and there is still WIP on migration from old Http service to new HttpClient introduced in Angular 5 (issue #170).
So before moving on with this one we should close that issue.
I will try to find some time but cannot tell when I will be able to complete this task as I'm working on other projects as well.

+1,  Hope to support ng8


Source activate.sh error

When I try to source activate.sh to build preparation for CHIP project (I use M1 Macbook Pro), I got an error  like this:
WELCOME TO...

  ▄███▒  ░▓█  ░▓█ ░▓█▓ ▒█████▄
 ██▒ ▀█▒  ▒█   ▒█  ░█▒  ▒█░  █░
 █▓░      ▒██████  ░█▒  ▒█▄▄▄█░
 ▓█   █▒  ▒█   ▒█  ░█░  ▒█▀
 ░▓███▀  ░▓███░▓█▒ ░█░  ▒█

  BOOTSTRAP! Bootstrap may take a few minutes; please be patient.

Downloading and installing packages into local source directory:

  Setting up CIPD package manager...[|]Errors:
  failed to resolve infra/3pp/tools/protoc/mac-arm64@version:3.14.0 (line 17): no such package: infra/3pp/tools/protoc/mac-arm64
  failed to resolve fuchsia/third_party/clang/mac-arm64@git_revision:3dc24bc31edbc01dea085b24a6a6b024d7ae531c (line 19): no such package: fuchsia/third_party/clang/mac-arm64
  failed to resolve infra/3pp/tools/cpython3/mac-arm64@version:3.8.2.chromium.10 (line 21): no such tag
  failed to resolve fuchsia/third_party/qemu/mac-arm64@git_revision:841f14e74f5af7886cf49cfcd4fed264911ae58e (line 31): no such package: fuchsia/third_party/qemu/mac-arm64
/Users/connectedhomeip/.environment/cipd/cipd ensure -ensure-file /Users/connectedhomeip/.environment/cipd/pigweed.ensure -root /Users/connectedhomeip/.environment/cipd/pigweed -log-level warning -cache-dir /Users/.cipd-cache-dir -max-threads 0

None
Traceback (most recent call last):
  File "/Users/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 610, in <module>
    sys.exit(main())
  File "/Users/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 602, in main
    return EnvSetup(**vars(parse())).setup()
  File "/Users/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 331, in setup
    result = step(spin)
  File "/Users/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 403, in cipd
    if not cipd_update.update(cipd=cipd_client,
  File "/Users/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/cipd_setup/update.py", line 227, in update
    subprocess.check_call(cmd,
  File<EMAIL_ADDRESS>line 373, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/Users/connectedhomeip/.environment/cipd/cipd', 'ensure', '-ensure-file', '/Users/connectedhomeip/.environment/cipd/pigweed.ensure', '-root', '/Users/connectedhomeip/.environment/cipd/pigweed', '-log-level', 'warning', '-cache-dir', '/Users/.cipd-cache-dir', '-max-threads', '0']' returned non-zero exit status 1.

So how can I fix it?  Thank you!

Did this project unsupport Macbook Pro on Apple M1 ？

I met the similar issue
lihui@HuideMacBook-Air connectedhomeip % . scripts/activate.sh
WELCOME TO...
▄███▒  ░▓█  ░▓█ ░▓█▓ ▒█████▄
██▒ ▀█▒  ▒█   ▒█  ░█▒  ▒█░  █░
█▓░      ▒██████  ░█▒  ▒█▄▄▄█░
▓█   █▒  ▒█   ▒█  ░█░  ▒█▀
░▓███▀  ░▓███░▓█▒ ░█░  ▒█
BOOTSTRAP! Bootstrap may take a few minutes; please be patient.
Downloading and installing packages into local source directory:
Setting up CIPD package manager...done (18.9s)
Setting up Python environment.....[]
ninja: Entering directory `/Users/lihui/Code/matter/connectedhomeip/.environment/gn_out'
[1/92] python3 ../../third_party/pigweed/repo/pw_build/py/pw_build/python_runner.py --gn-root ../../ --current-path ../../third_party/pigweed/repo/pw_package/py --default-toolchain=//build/toolchain/host:mac_arm64_gcc --current-toolchain=//third_party/pigweed/repo/pw_build/python_toolchain:python --touch python/gen/third_party/pigweed/repo/pw_package/py/py._run_pip_install.pw_pystamp --capture-output --module pip -- install --constraint ../../scripts/constraints.txt --editable ../../third_party/pigweed/repo/pw_package/py
[2/92] touch python/obj/third_party/pigweed/repo/pw_package/py/py._run_pip_install.stamp
[3/92] touch python/obj/third_party/pigweed/repo/pw_package/py/py.install.stamp
[4/92] python3 ../../third_party/pigweed/repo/pw_build/py/pw_build/python_runner.py --gn-root ../../ --current-path ../../third_party/pigweed/repo/pw_protobuf/py --default-toolchain=//build/toolchain/host:mac_arm64_gcc --current-toolchain=//third_party/pigweed/repo/pw_build/python_toolchain:python --touch python/gen/third_party/pigweed/repo/pw_protobuf/py/py._run_pip_install.pw_pystamp --capture-output --module pip -- install --constraint ../../scripts/constraints.txt --editable ../../third_party/pigweed/repo/pw_protobuf/py
FAILED: python/gen/third_party/pigweed/repo/pw_protobuf/py/py._run_pip_install.pw_pystamp
python3 ../../third_party/pigweed/repo/pw_build/py/pw_build/python_runner.py --gn-root ../../ --current-path ../../third_party/pigweed/repo/pw_protobuf/py --default-toolchain=//build/toolchain/host:mac_arm64_gcc --current-toolchain=//third_party/pigweed/repo/pw_build/python_toolchain:python --touch python/gen/third_party/pigweed/repo/pw_protobuf/py/py._run_pip_install.pw_pystamp --capture-output --module pip -- install --constraint ../../scripts/constraints.txt --editable ../../third_party/pigweed/repo/pw_protobuf/py
Obtaining file:///Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_protobuf/py
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Checking if build backend supports build_editable: started
Checking if build backend supports build_editable: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing metadata (pyproject.toml): started
Preparing metadata (pyproject.toml): finished with status 'done'
ERROR: Could not find a version that satisfies the requirement pw-cli (from pw-protobuf) (from versions: none)
ERROR: No matching distribution found for pw-cli
ninja: build stopped: subcommand failed.
['ninja', '-C', '/Users/lihui/Code/matter/connectedhomeip/.environment/gn_out', '-v', ':python_packages.install']
Traceback (most recent call last):
File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/virtualenv_setup/install.py", line 279, in install_packages
subprocess.check_call(ninja_cmd, stdout=outs, stderr=outs)
File<EMAIL_ADDRESS>line 373, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['ninja', '-C', '/Users/lihui/Code/matter/connectedhomeip/.environment/gn_out', '-v', ':python_packages.install']' returned non-zero exit status 1.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 679, in
sys.exit(main())
File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 671, in main
return EnvSetup(**vars(parse())).setup()
File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 414, in setup
result = step(spin)
File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 533, in virtualenv
if not virtualenv_setup.install(
File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/virtualenv_setup/install.py", line 294, in install
install_packages(gn_target)
File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/virtualenv_setup/install.py", line 282, in install_packages
raise subprocess.CalledProcessError(err.returncode, err.cmd,
subprocess.CalledProcessError: Command '['ninja', '-C', '/Users/lihui/Code/matter/connectedhomeip/.environment/gn_out', '-v', ':python_packages.install']' returned non-zero exit status 1.

@JourneyYoung Sorry for the delay, m1 should be working. Is this still happening for you?
@xylophone21 - this looks different, can you re-file is this is still happening?

您好。你的邮件我已经收到，谢谢！

您好。你的邮件我已经收到，谢谢！

hello，do you know how to resolve this issue?

您好。你的邮件我已经收到，谢谢！

@JourneyYoung Sorry for the delay, m1 should be working. Is this still happening for you?
@xylophone21 - this looks different, can you re-file is this is still happening?

hi, I have met the same issue. Do you know how to resolve this issue?

@JourneyYoung Sorry for the delay, m1 should be working. Is this still happening for you?
@xylophone21 - this looks different, can you re-file is this is still happening?

您好。你的邮件我已经收到，谢谢！

I met the similar issue
lihui@HuideMacBook-Air connectedhomeip % . scripts/activate.sh
WELCOME TO...
▄███▒ ░▓█ ░▓█ ░▓█▓ ▒█████▄ ██▒ ▀█▒ ▒█ ▒█ ░█▒ ▒█░ █░ █▓░ ▒██████ ░█▒ ▒█▄▄▄█░ ▓█ █▒ ▒█ ▒█ ░█░ ▒█▀ ░▓███▀ ░▓███░▓█▒ ░█░ ▒█
BOOTSTRAP! Bootstrap may take a few minutes; please be patient.
Downloading and installing packages into local source directory:
Setting up CIPD package manager...done (18.9s) Setting up Python environment.....[] ninja: Entering directory `/Users/lihui/Code/matter/connectedhomeip/.environment/gn_out' [1/92] python3 ../../third_party/pigweed/repo/pw_build/py/pw_build/python_runner.py --gn-root ../../ --current-path ../../third_party/pigweed/repo/pw_package/py --default-toolchain=//build/toolchain/host:mac_arm64_gcc --current-toolchain=//third_party/pigweed/repo/pw_build/python_toolchain:python --touch python/gen/third_party/pigweed/repo/pw_package/py/py._run_pip_install.pw_pystamp --capture-output --module pip -- install --constraint ../../scripts/constraints.txt --editable ../../third_party/pigweed/repo/pw_package/py [2/92] touch python/obj/third_party/pigweed/repo/pw_package/py/py._run_pip_install.stamp [3/92] touch python/obj/third_party/pigweed/repo/pw_package/py/py.install.stamp [4/92] python3 ../../third_party/pigweed/repo/pw_build/py/pw_build/python_runner.py --gn-root ../../ --current-path ../../third_party/pigweed/repo/pw_protobuf/py --default-toolchain=//build/toolchain/host:mac_arm64_gcc --current-toolchain=//third_party/pigweed/repo/pw_build/python_toolchain:python --touch python/gen/third_party/pigweed/repo/pw_protobuf/py/py._run_pip_install.pw_pystamp --capture-output --module pip -- install --constraint ../../scripts/constraints.txt --editable ../../third_party/pigweed/repo/pw_protobuf/py FAILED: python/gen/third_party/pigweed/repo/pw_protobuf/py/py._run_pip_install.pw_pystamp python3 ../../third_party/pigweed/repo/pw_build/py/pw_build/python_runner.py --gn-root ../../ --current-path ../../third_party/pigweed/repo/pw_protobuf/py --default-toolchain=//build/toolchain/host:mac_arm64_gcc --current-toolchain=//third_party/pigweed/repo/pw_build/python_toolchain:python --touch python/gen/third_party/pigweed/repo/pw_protobuf/py/py._run_pip_install.pw_pystamp --capture-output --module pip -- install --constraint ../../scripts/constraints.txt --editable ../../third_party/pigweed/repo/pw_protobuf/py Obtaining file:///Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_protobuf/py Installing build dependencies: started Installing build dependencies: finished with status 'done' Checking if build backend supports build_editable: started Checking if build backend supports build_editable: finished with status 'done' Getting requirements to build wheel: started Getting requirements to build wheel: finished with status 'done' Preparing metadata (pyproject.toml): started Preparing metadata (pyproject.toml): finished with status 'done' ERROR: Could not find a version that satisfies the requirement pw-cli (from pw-protobuf) (from versions: none) ERROR: No matching distribution found for pw-cli ninja: build stopped: subcommand failed. ['ninja', '-C', '/Users/lihui/Code/matter/connectedhomeip/.environment/gn_out', '-v', ':python_packages.install']
Traceback (most recent call last): File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/virtualenv_setup/install.py", line 279, in install_packages subprocess.check_call(ninja_cmd, stdout=outs, stderr=outs) File<EMAIL_ADDRESS>line 373, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['ninja', '-C', '/Users/lihui/Code/matter/connectedhomeip/.environment/gn_out', '-v', ':python_packages.install']' returned non-zero exit status 1.
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 679, in sys.exit(main()) File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 671, in main return EnvSetup(**vars(parse())).setup() File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 414, in setup result = step(spin) File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 533, in virtualenv if not virtualenv_setup.install( File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/virtualenv_setup/install.py", line 294, in install install_packages(gn_target) File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/virtualenv_setup/install.py", line 282, in install_packages raise subprocess.CalledProcessError(err.returncode, err.cmd, subprocess.CalledProcessError: Command '['ninja', '-C', '/Users/lihui/Code/matter/connectedhomeip/.environment/gn_out', '-v', ':python_packages.install']' returned non-zero exit status 1.

hello, have you resolve the issue? do you know how to fix it?

I met the similar issue
lihui@HuideMacBook-Air connectedhomeip % . scripts/activate.sh
WELCOME TO...
▄███▒ ░▓█ ░▓█ ░▓█▓ ▒█████▄ ██▒ ▀█▒ ▒█ ▒█ ░█▒ ▒█░ █░ █▓░ ▒██████ ░█▒ ▒█▄▄▄█░ ▓█ █▒ ▒█ ▒█ ░█░ ▒█▀ ░▓███▀ ░▓███░▓█▒ ░█░ ▒█
BOOTSTRAP! Bootstrap may take a few minutes; please be patient.
Downloading and installing packages into local source directory:
Setting up CIPD package manager...done (18.9s) Setting up Python environment.....[] ninja: Entering directory `/Users/lihui/Code/matter/connectedhomeip/.environment/gn_out' [1/92] python3 ../../third_party/pigweed/repo/pw_build/py/pw_build/python_runner.py --gn-root ../../ --current-path ../../third_party/pigweed/repo/pw_package/py --default-toolchain=//build/toolchain/host:mac_arm64_gcc --current-toolchain=//third_party/pigweed/repo/pw_build/python_toolchain:python --touch python/gen/third_party/pigweed/repo/pw_package/py/py._run_pip_install.pw_pystamp --capture-output --module pip -- install --constraint ../../scripts/constraints.txt --editable ../../third_party/pigweed/repo/pw_package/py [2/92] touch python/obj/third_party/pigweed/repo/pw_package/py/py._run_pip_install.stamp [3/92] touch python/obj/third_party/pigweed/repo/pw_package/py/py.install.stamp [4/92] python3 ../../third_party/pigweed/repo/pw_build/py/pw_build/python_runner.py --gn-root ../../ --current-path ../../third_party/pigweed/repo/pw_protobuf/py --default-toolchain=//build/toolchain/host:mac_arm64_gcc --current-toolchain=//third_party/pigweed/repo/pw_build/python_toolchain:python --touch python/gen/third_party/pigweed/repo/pw_protobuf/py/py._run_pip_install.pw_pystamp --capture-output --module pip -- install --constraint ../../scripts/constraints.txt --editable ../../third_party/pigweed/repo/pw_protobuf/py FAILED: python/gen/third_party/pigweed/repo/pw_protobuf/py/py._run_pip_install.pw_pystamp python3 ../../third_party/pigweed/repo/pw_build/py/pw_build/python_runner.py --gn-root ../../ --current-path ../../third_party/pigweed/repo/pw_protobuf/py --default-toolchain=//build/toolchain/host:mac_arm64_gcc --current-toolchain=//third_party/pigweed/repo/pw_build/python_toolchain:python --touch python/gen/third_party/pigweed/repo/pw_protobuf/py/py._run_pip_install.pw_pystamp --capture-output --module pip -- install --constraint ../../scripts/constraints.txt --editable ../../third_party/pigweed/repo/pw_protobuf/py Obtaining file:///Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_protobuf/py Installing build dependencies: started Installing build dependencies: finished with status 'done' Checking if build backend supports build_editable: started Checking if build backend supports build_editable: finished with status 'done' Getting requirements to build wheel: started Getting requirements to build wheel: finished with status 'done' Preparing metadata (pyproject.toml): started Preparing metadata (pyproject.toml): finished with status 'done' ERROR: Could not find a version that satisfies the requirement pw-cli (from pw-protobuf) (from versions: none) ERROR: No matching distribution found for pw-cli ninja: build stopped: subcommand failed. ['ninja', '-C', '/Users/lihui/Code/matter/connectedhomeip/.environment/gn_out', '-v', ':python_packages.install']
Traceback (most recent call last): File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/virtualenv_setup/install.py", line 279, in install_packages subprocess.check_call(ninja_cmd, stdout=outs, stderr=outs) File<EMAIL_ADDRESS>line 373, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['ninja', '-C', '/Users/lihui/Code/matter/connectedhomeip/.environment/gn_out', '-v', ':python_packages.install']' returned non-zero exit status 1.
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 679, in sys.exit(main()) File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 671, in main return EnvSetup(**vars(parse())).setup() File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 414, in setup result = step(spin) File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/env_setup.py", line 533, in virtualenv if not virtualenv_setup.install( File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/virtualenv_setup/install.py", line 294, in install install_packages(gn_target) File "/Users/lihui/Code/matter/connectedhomeip/third_party/pigweed/repo/pw_env_setup/py/pw_env_setup/virtualenv_setup/install.py", line 282, in install_packages raise subprocess.CalledProcessError(err.returncode, err.cmd, subprocess.CalledProcessError: Command '['ninja', '-C', '/Users/lihui/Code/matter/connectedhomeip/.environment/gn_out', '-v', ':python_packages.install']' returned non-zero exit status 1.

hi, have you fixed it?


Feature: provide access to location name

Provide access to reverse lookup location information either by photo or moments.

See this code for location info for orders DBs:
https://github.com/AaronVanGeffen/ExportPhotosLibrary/blob/0fa41d75ea115614792cc0526acf1646c9df69dd/export_photos.py#L149

I've done some work on reverse engineering this. For Photos <= 4.0 it's fairly straightforward but for Photos 5 will take some work.  In Photos 5, the location data is stored as a binary plist blob in ZADDITIONALASSETATTRIBUTES.ZREVERSELOCATIONDATA.  This can be read with plistlib (but apparently only works on Python 3.8 due to some feature in the plist that causes earlier versions to crash).
The proof-of-concept code below prints the following data for a sample photo record.  I'll need to reverse engineer the place type but the name value seems straight forward.  From one record below, looks like 1 = Country, 2 = State, 3= County, 4=Town, 17 = a bunch of things
15964 Boones Ferry Rd 17
Lake Grove 6
Lake Oswego 4
Lake Oswego 4
Lake Oswego 4
Clackamas 3
Oregon 2
United States 1
Boones Ferry Rd 17
OR 17
US 17

import pathlib
import plistlib
import sqlite3
import sys
import pprint
import re

def _open_sql_file(dbname):
    """ opens sqlite file dbname in read-only mode
        returns tuple of (connection, cursor) """
    try:
        dbpath = pathlib.Path(dbname).resolve()
        conn = sqlite3.connect(f"{dbpath.as_uri()}?mode=ro", timeout=1, uri=True)
        c = conn.cursor()
    except sqlite3.Error as e:
        sys.exit(f"An error occurred opening sqlite file: {e.args[0]} {dbname}")
    return (conn, c)

def main():
    try:
        db = sys.argv[1]
    except:
        db = "/Users/rhet/Desktop/cloud15/Photos.sqlite"

    conn, c = _open_sql_file(db)
    c.execute(
        """SELECT ZGENERICASSET.ZUUID,
                ZADDITIONALASSETATTRIBUTES.ZTITLE,
                ZADDITIONALASSETATTRIBUTES.ZORIGINALFILENAME,
                ZGENERICASSET.ZDIRECTORY,
                ZGENERICASSET.ZFILENAME,
                ZGENERICASSET.ZLATITUDE,
                ZGENERICASSET.ZLONGITUDE,
	        ZADDITIONALASSETATTRIBUTES.ZREVERSELOCATIONDATA
                FROM ZGENERICASSET
                JOIN ZADDITIONALASSETATTRIBUTES ON ZADDITIONALASSETATTRIBUTES.ZASSET = ZGENERICASSET.Z_PK
                WHERE ZGENERICASSET.ZTRASHEDSTATE = 0
                AND ZGENERICASSET.ZUUID = '06C4D82E-6768-4A5C-8752-9B810FE46C9D'
                ORDER BY ZGENERICASSET.ZUUID """
    )

    data = {}
    for row in c:
        uuid = row[0]
        info = {}
        info["uuid"] = uuid
        info["original_filename"] = row[2]
        try:
            info["location_data"] = plistlib.loads(row[7])
        except:
            info["location_data"] = None
        data[uuid] = info

    conn.close()

    pp = pprint.PrettyPrinter(indent=2)
    for uuid in data:
        for obj in data[uuid]["location_data"]["$objects"]:
            if type(obj) == dict:
                try:
                    name = obj["name"]
                    placetype = obj["placeType"]
                    match = re.search(r"\((\d+)\)", str(name))
                    name_id = match.group(1)
                    match = re.search(r"\((\d+)\)", str(placetype))
                    placetype_id = match.group(1)
                    name_value = data[uuid]["location_data"]["$objects"][int(name_id)]
                    placetype_value = data[uuid]["location_data"]["$objects"][
                        int(placetype_id)
                    ]
                    print(name_value, placetype_value)
                except KeyError:
                    pass
                except Exception as e:
                    raise e

if __name__ == "__main__":
    main()

For Photos <= 4, the data is in the database which makes it easier.  First get the placeID for the RKVersion.modelID then use those values to lookup place data from RKPlace
SELECT placeId
FROM RKPlaceForVersion
WHERE versionId = RKVersion.modelID

SELECT DISTINCT defaultName AS name
FROM RKPlace
WHERE modelId IN(7,6,9,1,8)  <-- these are the values from first query
ORDER BY area ASC

Produces:
1 Point Fermin Park
2 San Pedro
3 Los Angeles
4 California
5 United States

OK, got this working for Photos 5.  The ZREVERSELOCATIONDATA is a binary plist produced by NSKeyedArchiver.  bpylist2 did a splendid job of unarchiving this data.  Now working on Photos 4 implementation.

@AaronVanGeffen version 0.23.0 adds a places property to PhotoInfo.  See the README.md for full description.  places returns a PlacesInfo object that provides access to all the underlying reverse geolocation data.  Note: this adds a new dependency bpylist2.  If you're running Python 3.6 or 3.7, you'll need bpylist2 == 2.0.3, if using Python 3.8, you can use the latest bypylist2 == 3.0.0.  requirements.txt and setup.py should handle this if you do a python setup.py install.
My GitHub actions are failing due to issue with install bpylist2 in the test environment but it works on my machine.  I'll continue to debug the actions but let me know if you have any issues.

Cheers, I’ll test it out soon!

See Issue #65 for details on implementation of place names