Provide a way to inspect the DOM using an ElementReference

Currently an ElementReference is an opaque value intended for JS interop purposes only. We generally don't want users to mutate the DOM using an ElementReference because that would interfere with the Blazor diffing algorithm.
However, I've run into a case where I want to be able to inspect the state of the DOM, which seems like should be a safe operation. In my scenario I have an input text box and a button. When the user clicks the button I want to display a message using the value from the text box.  Something like this:

    What is your name?
    <input />
    <button @onclick="OnClick">Submit</button>

    if (name != null)
    {
        Hello @name
    }

@code {
    string name;

    void OnClick() {
        // Set name to the value of the text box here
    }
}

I could implement this by binding the value of the text box to a different string field and then set the name field when the button is clicked, but that seems excessive. The only event I really care about is the click event and it seems unnecessary to require me to bind whatever state I want from the DOM into component state in order to read it given that the DOM state is there to be read.

Closing this as we don't want to expose a second way of accessing data. Anyone can come up with a package with a lot of helper methods exposing DOM to Blazor.


OperationFailedError: JSON metadata could not be updated.

Hi @pdurbin ,
I have been using the Dataverse API, and overall it's been pretty successful, but I have a few stragglers that for some reason keep throwing this exception "OperationFailedError: JSON metadata could not be updated". I'm pretty stumped as to why it's breaking, so I'm opening this bug in hopes that you can help me solve it.
I'm using the Python Dataverse client, and the traceback reports the problem from dataset.py line 235. Here's the bottom of the trace:
File "/opt/src/src/dataverse/dataverse/dataset.py", line 235, in update_metadata
raise OperationFailedError('JSON metadata could not be updated.')
Using the Dataset object from the Dataverse API, the error comes from my invocation of the following method:
dataset_object.update_metadata(new_metadata)
I'm trying to update this Dataset:
https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi%3A10.7910/DVN/WZMIPM
The code is exactly the same for this one as for all the other successful ones, so I'm not sure what's different. Below is a JSON dump of the new_metadata object I'm passing in. If you have any idea what's breaking here, your help would be greatly appreciated!
{
  "id": 75977,
  "metadataBlocks": {
    "citation": {
      "displayName": "Citation Metadata",
      "fields": [
        {
          "multiple": false,
          "typeClass": "primitive",
          "typeName": "title",
          "value": "Council; Council Files August 29, 1845, Case of Orrin de Wolf, GC3/series 378, Petition of Levi D. Smith"
        },
        {
          "multiple": true,
          "typeClass": "compound",
          "typeName": "author",
          "value": [
            {
              "authorName": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "authorName",
                "value": "Digital Archive of Massachusetts Anti-Slavery and Anti-Segregation Petitions, Massachusetts Archives, Boston MA"
              }
            }
          ]
        },
        {
          "multiple": true,
          "typeClass": "compound",
          "typeName": "datasetContact",
          "value": [
            {
              "datasetContactEmail": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "datasetContactEmail",
                "value"<EMAIL_ADDRESS>              }
            }
          ]
        },
        {
          "multiple": true,
          "typeClass": "compound",
          "typeName": "dsDescription",
          "value": [
            {
              "dsDescriptionValue": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "dsDescriptionValue",
                "value": "
Petition subject: Execution case

Original: http://nrs.harvard.edu/urn-3:FHCL:12233013

Date of creation: (unknown)

Petition location: Stoneham

Legislator, committee, or address that the petition was sent to: \"To be left at the office of the Hangman, 38 Cornhill Boston\"

Selected signatures:

Levi D. Smith

John Sprague

John J. Brown

Total signatures: 21

Legal voter signatures (males not identified as non-legal): 21

Female only signatures: No

Identifications of signatories: inhabitants

Prayer format was printed vs. manuscript: Manuscript

Additional non-petition or unrelated documents available at archive: additional documents available

Additional archivist notes: Orrin de Wolf

Location of the petition at the Massachusetts Archives of the Commonwealth: Governor Council Files, August 29, 1845, Case of Orrin de Wolf

Acknowledgements: Supported by the National Endowment for the Humanities (PW-5105612), Massachusetts Archives of the Commonwealth, Radcliffe Institute for Advanced Study at Harvard University, Center for American Political Studies at Harvard University, Institutional Development Initiative at Harvard University, and Harvard University Library.
"
              }
            }
          ]
        },
        {
          "multiple": true,
          "typeClass": "controlledVocabulary",
          "typeName": "subject",
          "value": [
            "Social Sciences"
          ]
        },
        {
          "multiple": true,
          "typeClass": "compound",
          "typeName": "keyword",
          "value": [
            {
              "keywordValue": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordValue",
                "value": "Manuscript"
              },
              "keywordVocabulary": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordVocabulary",
                "value": "prayer-format"
              }
            },
            {
              "keywordValue": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordValue",
                "value": "John J. Brown"
              },
              "keywordVocabulary": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordVocabulary",
                "value": "signatory"
              }
            },
            {
              "keywordValue": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordValue",
                "value": "John Sprague"
              },
              "keywordVocabulary": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordVocabulary",
                "value": "signatory"
              }
            },
            {
              "keywordValue": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordValue",
                "value": "Levi D. Smith"
              },
              "keywordVocabulary": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordVocabulary",
                "value": "signatory"
              }
            },
            {
              "keywordValue": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordValue",
                "value": "inhabitants"
              },
              "keywordVocabulary": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordVocabulary",
                "value": "signatory-category"
              }
            },
            {
              "keywordValue": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordValue",
                "value": "No"
              },
              "keywordVocabulary": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordVocabulary",
                "value": "signatures-female-only"
              }
            },
            {
              "keywordValue": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordValue",
                "value": "21"
              },
              "keywordVocabulary": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordVocabulary",
                "value": "signatures-legal-voters"
              }
            },
            {
              "keywordValue": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordValue",
                "value": "21"
              },
              "keywordVocabulary": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "keywordVocabulary",
                "value": "signatures-total"
              }
            }
          ]
        },
        {
          "multiple": true,
          "typeClass": "compound",
          "typeName": "publication",
          "value": [
            {
              "publicationCitation": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "publicationCitation",
                "value": "D. Carpenter, N. Topich and G. Griffin. Digital Archive of Massachusetts Anti-Slavery and Anti-Segregation Petitions; Council; Council Files August 29, 1845, Case of Orrin de Wolf, GC3/series 378. Massachusetts Archives. Boston, Mass."
              },
              "publicationURL": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "publicationURL",
                "value": "http://nrs.harvard.edu/urn-3:FHCL:12233013"
              }
            }
          ]
        },
        {
          "multiple": true,
          "typeClass": "compound",
          "typeName": "distributor",
          "value": [
            {
              "distributorName": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "distributorName",
                "value": "Massachusetts Archives. Boston, Mass."
              }
            },
            {
              "distributorName": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "distributorName",
                "value": "Harvard Dataverse Network"
              }
            }
          ]
        },
        {
          "multiple": false,
          "typeClass": "primitive",
          "typeName": "dateOfDeposit",
          "value": "2015-08-06"
        }
      ]
    },
    "geospatial": {
      "displayName": "Geospatial Metadata",
      "fields": [
        {
          "multiple": true,
          "typeClass": "compound",
          "typeName": "geographicCoverage",
          "value": [
            {
              "city": {
                "multiple": false,
                "typeClass": "primitive",
                "typeName": "city",
                "value": "Stoneham"
              },
              "country": {
                "multiple": false,
                "typeClass": "controlledVocabulary",
                "typeName": "country",
                "value": "United States"
              }
            }
          ]
        }
      ]
    }
  },
  "productionDate": "Production Date",
  "versionMinorNumber": 1,
  "versionNumber": 1,
  "versionState": "DRAFT"
}

File "/opt/src/src/dataverse/dataverse/dataset.py", line 235, in update_metadata
raise OperationFailedError('JSON metadata could not be updated.')

Ok, so this line: https://github.com/IQSS/dataverse-client-python/blob/d6e2199f21cddffac37d94d4e39caeaece70ee7e/dataverse/dataset.py#L235
I'm pretty sure this problem is on the server side. Or at least, I can easily reproduce a non-200 error so I opened an issue: https://github.com/IQSS/dataverse/issues/2441

@garthg I put in a fix at https://github.com/IQSS/dataverse/commit/9a34912ea805b0fa4379f5b24d8ef410fff8e16d but let's make sure https://github.com/IQSS/dataverse/issues/2441 passes QA before we close this issue. I could ask about getting a build put on https://beta.dataverse.org

@pdurbin thanks for responding so quickly. I think we can wait for #2441, no need to rush something out onto the beta server.

@garthg I'm happy for you to do a little testing for us if you feel like it. :)
https://beta.dataverse.org now has v. 4.2 build 13 which includes the bug fix if you'd like to try it out.

@pdurbin Okay! I'll check it out on the beta server if I get a chance.

Hi @pdurbin ,
I'm getting a different error now. Previously, I was obtaining the data-deposit URL from the Dataverse client and calling it directly (which is necessary because of #2122). I think that is no longer working correctly for me, because I'm getting a connection error:
ConnectionError: ('Connection aborted.', gaierror(-2, 'Name or service not known'))
Here is the bottom of the Traceback:
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 108, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 50, in request
    response = session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 465, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 573, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 415, in send
    raise ConnectionError(err, request=request)
ConnectionError: ('Connection aborted.', gaierror(-2, 'Name or service not known'))

And here is a representation of the line of my code where I make the request:
resp = requests.post('https://beta.harvard.edu/dvn/api/data-deposit/v1.1/swordv2/collection/dataverse/antislaverypetitionsma',
  data="<entry xmlns=...>...</entry>",
  headers={"Content-type": "application/atom+xml"},
  auth=(my_api_key, None))

Possibly I need to make a different URL request here? Any ideas? Thanks as always for your help!

beta.harvard.edu

You'll want to use beta.dataverse.org instead.

That URL was returned from dv_object.collection.get("href"), where dv_object is the Dataverse object found from my dataverse.Connection("beta.dataverse.org", my_api_key).get_dataverses()[0]. Is that not the correct way to obtain the URL? I'd prefer not to hardcode it if possible.

Ah ha. Here's the problem:
[root@dvn-beta-1 bin]# ./asadmin list-jvm-options | grep fqdn
-Ddataverse.fqdn=beta.dataverse.org
-Ddataverse.fqdn=beta.harvard.edu
[root@dvn-beta-1 bin]#

Ok, fixed. Now the SWORD operations return the proper hostname:
[root@dvn-beta-1 bin]# ./asadmin list-jvm-options | grep fqdn
-Ddataverse.fqdn=beta.dataverse.org
-Ddataverse.fqdn=beta.harvard.edu
[root@dvn-beta-1 bin]# curl -s -u $API_TOKEN: https://beta.dataverse.org/dvn/api/data-deposit/v1.1/swordv2/service-document | xmllint -format - | xpath '//service/workspace/collection/@href'
Found 1 nodes:
-- NODE --
 href="https://beta.harvard.edu/dvn/api/data-deposit/v1.1/swordv2/collection/dataverse/root"
[root@dvn-beta-1 bin]# ./asadmin delete-jvm-options "-Ddataverse.fqdn=beta.harvard.edu"
Deleted 1 option(s)
Command delete-jvm-options executed successfully.
[root@dvn-beta-1 bin]# ./asadmin list-jvm-options | grep fqdn
-Ddataverse.fqdn=beta.dataverse.org
[root@dvn-beta-1 bin]# curl -s -u $API_TOKEN: https://beta.dataverse.org/dvn/api/data-deposit/v1.1/swordv2/service-document | xmllint -format - | xpath '//service/workspace/collection/@href'
Found 1 nodes:
-- NODE --
 href="https://localhost/dvn/api/data-deposit/v1.1/swordv2/collection/dataverse/root"
[root@dvn-beta-1 bin]# ./asadmin stop-domain
Waiting for the domain to stop ....
Command stop-domain executed successfully.
[root@dvn-beta-1 bin]# ./asadmin start-domain
Waiting for domain1 to start ..................................................
Successfully started the domain : domain1
domain  Location: /usr/local/glassfish4/glassfish/domains/domain1
Log File: /usr/local/glassfish4/glassfish/domains/domain1/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.
[root@dvn-beta-1 bin]# curl -s -u $API_TOKEN: https://beta.dataverse.org/dvn/api/data-deposit/v1.1/swordv2/service-document | xmllint -format - | xpath '//service/workspace/collection/@href'
Found 1 nodes:
-- NODE --
 href="https://beta.dataverse.org/dvn/api/data-deposit/v1.1/swordv2/collection/dataverse/root"
[root@dvn-beta-1 bin]#

Sorry, @garthg! Please try again at your convenience.

Hi @pdurbin ,
It looks like my test against beta.dataverse.org successfully updated this dataset! Published data here: https://beta.dataverse.org/dataset.xhtml?persistentId=doi:10.5072/FK2/BWSZDW .
Do you know when this fix is expected to be deployed in production, so I can run the updates against my production Dataverse?
Thank you as always for your help getting this sorted out!
Garth

@garthg fantastic. Thanks for testing. That bug fix is in the 4.2 branch so I'd keep an eye on when the 4.2 milestone is closed: https://github.com/IQSS/dataverse/milestones
Speaking of closed, if it's ok with you we can close this issue since https://github.com/IQSS/dataverse/issues/2441 will go through QA. The problem was with the server, not this Python client.

@pdurbin Okay, I'll track the 4.2 milestone, which looks to be targeting September 9th. I'll close this bug. Thanks for your help!


Enable assertions

Codecov Report

Merging #154 (776f4a0) into master (7596e38) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #154   +/-   ##
=========================================
  Coverage     43.57%   43.57%
  Complexity      447      447
=========================================
  Files           114      114
  Lines          2178     2178
  Branches        269      269
=========================================
  Hits            949      949
  Misses         1172     1172
  Partials         57       57

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Build MacOS, Linux, and Windows

make build now refers to make hygiene, make darwin/amd64, make linux/amd64, and make windows/amd64. The individual builds are controlled by the PLATFORMS variable - I could not determine how to effectively document them in make help.
Resolves #14

Need to create travis jobs for the other OSs

On May 31, 2019, at 10:39 AM, Remington Campbell<EMAIL_ADDRESS>wrote:
make build now refers to make hygiene, make darwin/amd64, make linux/amd64, and make windows/amd64. The individual builds are controlled by the PLATFORMS variable - I could not determine how to effectively document them in make help.
You can view, comment on, or merge this pull request online at:
https://github.com/cisco-ie/pipeline-gnmi/pull/52
Commit Summary
Build MacOS, Linux, and Windows
File Changes
M skeleton/pipeline.mk (22)
Patch Links:
https://github.com/cisco-ie/pipeline-gnmi/pull/52.patch
https://github.com/cisco-ie/pipeline-gnmi/pull/52.diff
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHub, or mute the thread.

make build will build them all by default. To get more specific we can enter make linux/amd64 etc.

e.g. https://travis-ci.org/cisco-ie/pipeline-gnmi/jobs/539816270#L604

thanks for the cross compile, but the tests are running only for Ubuntu/Linux, correct?

Yes they only run on Linux but cross-compile for building. Given we don't have any platform-dependent functionality - do we need to test on each individual OS?

Protobufs themselves are platform dependent given it is heavily reliant on OS stack specifics. I would at least add to the README that windows support is experimental.
I am not sure any of us have actually tried to run pipeline on windows?  To that effect, there are quite a few of windows variants.


A test suite I expect to be running (as part of a bringup build) is missing

Type of Request
bug
Infrastructure Environment
LUCI
What is happening?
A variant (different set of arguments) of a test does not appear on LUCI.

Configuration
It's partner set, without a flag set, is here.

However, only the second set (without "SurfaceTexture") appears to be running on CI:
https://ci.chromium.org/ui/p/flutter/builders/staging/Linux Staging Engine Drone/92083/overview.
Maybe this is a "feature" of bringup where a failed test means all of the steps are skipped? I'm not sure. As a result of one of the sets not running, I can't approve the digests for Skia Gold.
Steps to reproduce
No response
Expected results
I expect to see both sets of tests run.

This is expected that we do not want to continue running remaining tests if any earlier failure happens to save resources.
These tests are running synchronously rather than in parallel. The whole build failed/exited after the first test failure (even after retry).
Is the request to continue running all other tests regardless of earlier failure? is this needed considering this is a failed build anyway?


How to contribute?

Hello @vineethtrv! How are you?
How I can help your project?
Your project is very interesting and I wish I could help.
Thank you.

Hi @JefersonLucas ,
Thanks for asking :)
This project is open, you can sent your thoughts related to this project bug/features to me that's it.


-m32 support for long int

Related to #204, The following code works xsimd::batch<int32_t, 4> b; but not this one (which should be identical) xsimd::batch<long, 4> a;
https://godbolt.org/z/9q5PnY

Works fine with the new API :-) https://godbolt.org/z/oP4jYnWK6


Fixed type errors & Fixed #1458

That's about it.

Feel free to Code Review my code 😀, I'll love some feedback!

My type fixes where really ghetto. If you want to, go ahead and make suggestions and I'll merge them to this PR.

But @goldyydev i think setting types to any[] isn't the best idea. So maybe create a new type in kofta/app/types.ts for a more predictable output?

But @goldyydev i think setting types to any[] isn't the best idea. So maybe create a new type in kofta/app/types.ts for a more predictable output?

That's exactly why I asked for a bit of help. I made a ghetto fix and will be happy if someone fixed it.

conflicts
what is the difference between let x = 10 and let x: any = 10?

darn conflicts

what is the difference between let x = 10 and let x: any = 10?

for some reason it had the unknown type in it by default

The conflicts are the react type instead of any

darn conflicts

what is the difference between let x = 10 and let x: any = 10?

for some reason it had the unknown type in it by default

Weird


Coroutine library

Coroutines are really cool. Can we sandbox them and put them in hash?

:-1:

gm_exploited


Is service secured? or just using obfuscation?

Hi,
Great piece of software! I just wanted to check something to make sure I have the correct understanding of the setup.
Is the overtls server secured in the sense there has to be authentication with the client? If so what is the authentication mechanism?
Currently from what I think I can see, there is no authentication as such, but more obfuscation via the tunnel secret? If someone else had the tunnel secret, would they be able to access my instance of overtls by configuring their client with the same tunnel secret?
Just wanted to understand, as I was thinking of adding my overtls server as a exit node for tailscale, but wanted to make sure I wasn't unknowingly exposing my internal services out
Thank you!

Overtls has no authentication and is designed to fool GFW censorship.
A complex "tunnel_path" value can effectively prevent strangers from stealing your service.

Hi @ssrlive
Ok thank you very much for confirming!


Feature request: move-assignment operator for Statement

(See #190)
The explicitly deleted copy-assignment operator of SQLite::Statement stops the compiler from generating a move-assignment operator for this type. On a related note, having a default constructor would also be nice. Consider the following example that I would wish to be able to write:
struct foo
{
	SQLite::Database db;
	SQLite::Statement st;

	foo()
		: db(path, SQLite::OPEN_READWRITE)
	{
		// do stuff with db
		st = SQLite::Statement("SQL CODE");
	}
};

Currently, I have to box all statements that I use in this way into optionals. Ugly!

Hello Fytch, thanks a lot for your good suggestion!
This should have been totally obvious to me when I switch to using C++11, but that wasn't long ago, and I have been busy with work & family.
Can you perhaps provide a Pull Request for it?
I should be able to get more time to work on this project this year, let's make it great again :)


Rename netman to cf-networking

Modifies manifest generation to accommodate renamed properties
@jaydunk @rusha19
https://www.pivotaltracker.com/story/show/137194915

Thanks, @genevievelesperance! Prioritizing for the Diego team to evaluate and pull in.
Best,
Eric

@genevievelesperance Can you rebase and fix the merge conflict? It seems the manifest generation script was recently updated with the new experimental flag for sql-lock-overrides.

@caod123 Done


Update code with latest version from Fork

namely this https://github.com/filetrust/OSBot-browser/tree/refactor_headless_chrome

done code merged


pass batch_size to classify() via command line

batch-size argument from command line wasn't being passed to classify(). This resulted in batch-size to always be 1 thereby reducing performance while classifying multiple images (wildcard input)

Whoops, that was careless of me!
Would you mind sending us a CLA for your contribution?

Send a signed copy of the Contributor License Agreement (CLA) to<EMAIL_ADDRESS>https://github.com/NVIDIA/DIGITS/blob/master/CONTRIBUTING.md#pull-requests

done..
-anurag
On Wed, Feb 17, 2016 at 9:46 AM, Luke Yeager<EMAIL_ADDRESS>wrote:

Whoops, that was careless of me!
Would you mind sending us a CLA for your contribution?
Send a signed copy of the Contributor License Agreement http://CLA
(CLA) to<EMAIL_ADDRESS>https://github.com/NVIDIA/DIGITS/blob/master/CONTRIBUTING.md#pull-requests
—
Reply to this email directly or view it on GitHub
https://github.com/NVIDIA/DIGITS/pull/580#issuecomment-185322232.

--
Twitter: @anuragphadke (https://twitter.com/#!/anuragphadke)

LGTM, thanks!
NOTE: this fixes a bug from https://github.com/NVIDIA/DIGITS/pull/559.


Error in AppHost.cs

We are receiving an error as below
Severity Code Description Project File Line Suppression State
Error CS1503 Argument 2: cannot convert from 'Microsoft.Extensions.Configuration.IConfigurationRoot' to 'RecordingBot.Services.IConfig' RecordingBot.Services C:\repos\teams-recording-bot\src\RecordingBot.Services\ServiceSetup\AppHost.cs 90 Active
Please help with your suggestions.

Thank you for the reply @1fabi0


Fix java markdown

Issues with code formatting preventing markdown from being rendered correctly on github
similar to the issue fixed by #127

I have noticed that GitHub flavored markdown can be picky about lines before preformatted blocks. This change looks good to me +1.


DS-4489: Batch claiming Workflow tasks is not currently possible in Angular UI

This is a duplicate of DS-4489
Estimate from release plan: none
Expressing interest: none
Pulled out from a larger ticket https://jira.lyrasis.org/browse/DS-4311
Currently, the MyDSpace UI in DSpace 7 doesn't support batch claiming of tasks. This was supported in the XMLUI v6.
This can be reproduced on the demo site at https://dspace7-demo.atmire.com/

@tdonohue Just for information, DSpace 7 allow to claim a task in one click, which is already an improvment for us compare to task claiming in DSPace 6 JSPUI. In DSpace 7, it is easy/quick to claim multiple tasks. It is not batch claiming but it helps users to work on multiple objects.


set long_description the same as README.md

resolves #67

Current coverage is 85.15% (diff: 100%)

Merging #68 into master will not change coverage

@@             master        #68   diff @@
==========================================
  Files            19         19
  Lines           566        566
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits            482        482
  Misses           84         84
  Partials          0          0

Powered by Codecov. Last update 86a12e5...cde151e


Something not working right with Identity.login on Chrome/iOS

This issue was discovered by @vetleaa and at the time of this writing, if you use Chrome on iOS11, and go to pro.sdk-example.com and click Login, it works, but pre.sdk-example.com doesn't work.
The difference AFAICS, is that pre currently uses the itp modal logic, while pro doesn't (yet — this might have changed by the time you, dear reader, sees this).
What makes it more difficult, is that there's not really any good way to debug Chrome on iOS right now. Good luck!

I'll give this thing a go
https://stackoverflow.com/questions/11262236/ios-remote-debugging/22047495#22047495

I did http://jonsadka.com/blog/how-to-debug-a-chrome-specific-bug-on-ios-using-remote-debugging/ .  No issue with this debugger :( also I have noticed, if you click "use desktop version" in chrome login button works


Update CircleCI token

Additional comment:
@conda-forge-admin, please update circle

Hi! This is the friendly automated conda-forge-webservice.
I just wanted to let you know that I updated the circle-ci deploy key and followed the project.


Delete proto dir and maintain pb in ceresdbproto

Describe This Problem
Currently ceresdb protobuf is maintained in two places, one is https://github.com/CeresDB/ceresdbproto, and the other is https://github.com/CeresDB/ceresdb/tree/main/proto.
In the previous design, the proto dir in ceresdb ceresdb stored the pb used by the ceresdb server, but with more features developed, the proto and ceresdbproto would define the same elements, such as TableSchema and RequestHeader.
Proposal
Delete proto dir and maintain pb in ceresdbproto.
Additional Context
No response

Done


proposal: remove open or reduce open usage in reason syntax

namespace support is coming soon. One thing I worried is that people tend to use open more and more which makes it more challenging for tools like ocamldep to track it.
So I propose that if we can remove global open (can still keep local open) but introduce some sugars  for qualified import.
for example, (feel free to invent more firendly syntax)
#use {PkgA.M0, PkgB.M1, Pkg.M2}
which is equivalent to
module M0 = PkgA.M0
module M1  = PkgB.M1
module M2 = Pkg.M2

#use  {PkgA.M0(fib,fib2)}

which is equivalent to
let fib = PkgA.M0.fib
let fib2 = PkgB.M1.fib

The goal is to remove global open(which is also a source of bugs) but introduce reasonable sugar

I've explored this a bit w/ https://github.com/jaredly/ppx_import
We could take advantage of javascipt's familiarity with:
import {thing} from Pkg
import {SubModule, thing, Some: {withinSome}, name: renamed} from Source

Another alternative syntax, closer to haskell/purescript's:
import Pkg (thing)
import Source (SubModule, thing, Some (withinSome), name (renamed))

I love the semantics of this proposal. I vastly prefer explicit import and default namespacing to the way open works atm.

Does this take us further away from legal OCaml code towards BS specific instructions?
Will that make it harder to consume code from OCaml?
And if we remove global open, what will happen to library code that uses it?

Does this take us further away from legal OCaml code towards BS specific instructions?

No, my proposal is valid OCaml, it is just a subset of OCaml(less liberal)

I think this is a great idea. I personally perfer the js syntax but something similar to elm or haskell would work aswell.

No, my proposal is valid OCaml, it is just a subset of OCaml(less liberal)

But if it's a subset, doesn't that mean that it won't work with ordinary OCaml code? i.e. I won't be able to take an OCaml lib, and use it easily from BS without converting it manually?

Hi, is there any progress/plan regarding the issue? What docs say at the moment is:

Use open this sparingly, it's convenient, but makes it hard to know where some values come from.

The currently suggested approach is to open the modules locally. While better than doing so globally, I would argue that it still suffers the hard to know where some values come from issue. Some support along the lines of the proposal would be really nice.


.subscribe() does not register

This got me pretty frustrated yesterday. But it seems that none of my nodes will register properly. The .subscribe()-function does not work. This is really wired, because I wrote sketches before and it just worked. Now even the example stopped working.
I used a up to date platform-io environment and even tried it with a up to date Adruino-IDE.
After some frustrating hours I tried the LightOnOff.ino-Example.
The homie-node comes online and sends it initial Device properties. But the $nodes-property keeps empty. If I try to set the light „on“ I just get something like “Node xxx not registered” on the serial line.

Are you using the v1.5.0?

Yes! v1.5.0

So you say it was working before... What have you done in this timelapse? Maybe you've updated the esp8266/Arduino version? Which version by the way, 2.2.0, 2.3.0?

I had the same problem until I noticed that I was missing: Homie.registerNode(lightNode);. In v1.5.0 it is mandatory, in v2.0.0 it is not used. I mixed up examples from v2 and tried to use them in v1.5. Perhaps the same happened in your case as well.

Oh yes, this might be a problem. You have to use the docs and examples contained in your release, not in the Git development version (unless you want to test cutting edge features, not stable... at all!).

Awesome! Yes, that was the problem!


Issue 245: fix y-axis scaling on subpop_rt plot

This pull request includes a modification to the get_plot_subpop_rt function in R/figures.R to improve data visualization.
Codebase improvements:

R/figures.R: Modified the get_plot_subpop_rt function to use a shared y-axis by removing the scales = "free" parameter from facet_wrap.

Now has aligned y axis:


Static code analysis and code beautification.

Cppcheck and other tools warns about some not critical issues.
A lot of code has inconsistent and broken indentation. BTW 2 spaces is very non-conventional indentation.
Do you accepts patches for this issues?

2 spaces is standard GStreamer indentation, you can reproduce that with gst-indent. But this only really applies to C code. Rust code goes through rustfmt with standard settings, and code in other languages should also be automatically formatted according to what is "standard" in those languages.
For static code analysis, go for it :) Thanks!

https://github.com/centricular/gstwebrtc-demos/pull/176
https://github.com/centricular/gstwebrtc-demos/pull/177


[Bug]: Getting info and error in different formats not in text format, getting error as a key value pair

🔎 Search Terms
winston logger error wrong format
The problem
When we log info or error, getting wrong format which in not in text
ERROR {"0":"P","1":"l","10":"e","11":"r","12":"s","13":"i","14":"o","15":"n","16":" ","17":"I","18":"n","19":"v","2":"a","20":"a","21":"l","22":"i","23":"d","3":"t","4":"f","5":"o","6":"r","7":"m","8":" ","9":"V","service":"log","timestamp":"2022-10-31 13:19:31.6777"}
INFO {"0":"{","1":"}","service":"log","timestamp":"2022-10-31 13:19:31.0931"}
What version of Winston presents the issue?
v3.8.1
What version of Node are you using?
v16.18.0
If this worked in a previous version of Winston, which was it?
No response
Minimum Working Example
No response
Additional information
No response

You don't share the code which allows reproduction here, but it looks like you're probably accidentally converting the string "Platform Version: Invalid" to an array and having that converted to an object. Closing for lack of attempt at a minimal verifiable example.


Refactor properties loading + Bump Spring-Boot 3.2.2

@lbruun It's ready for a review.

@lbruun can you have a look in the PR, please.

This PR was auto-closed by GitHub because the default branch was changed from master to main. This unintentionally closed PRs open at the time.
However, some of this is now implemented in v1.5.1:

Spring Boot 3.2.6 is now used
Spring Boot properties metadata are now generated
The project now uses Google Style Formatting. See the the CONTRIBUTION.md file. A check has also been integrated into the GitHub CI workflow so that the workflow fails if files are not formatted according to the style rules.
The project's CI workflow has been completely re-written. Releasing to Maven Central is now done from the CI workflow, not from developer's workstation.

This PR was auto-closed by GitHub because the default branch was changed from master to main. This unintentionally closed PRs open at the time.
However, some of this is now implemented in v1.5.1:

Spring Boot 3.2.6 is now used
Spring Boot properties metadata are now generated
The project now uses Google Style Formatting. See the the CONTRIBUTION.md file. A check has also been integrated into the GitHub CI workflow so that the workflow fails if files are not formatted according to the style rules.
The project's CI workflow has been completely re-written. Releasing to Maven Central is now done from the CI workflow, not from developer's workstation.

Ok ! thank for the explantation.


fix: Prompting for hostname for internal image registry(GITOPS-419)

/kind bug

What does this PR do / why we need it:
Removes the Prompting for hostname for internal image registry.
Have you updated the necessary documentation?
https://issues.redhat.com/browse/GITOPS-419
Which issue(s) this PR fixes:
https://issues.redhat.com/browse/GITOPS-419
How to test changes / Special notes to the reviewer:
Run kam bootstrap

/retest

Looks good, you'll need to run make cmd-docs as the failing check indicates.

I don't see any issue running that command. I will re-try .. pipelines are also failing pulling images. Will have a look

@bigkevmcd Can you please approve this.

/approve

/lgtm


[New Snap] Rubic - BestRateFinder

Checklist
All items in the list below needs to be satisfied.

[x] Is the Snap repository publicly accessible and linked in this ticket? https://github.com/Cryptorubic/rubic-snap-frontend
[ ] Is the Snap distributed on npm and linked in this ticket? https://www.npmjs.com/package/rubic-snap
[x] Has an audit been performed and the audit report attached or linked in this issue? https://cure53.de/pentest-report_rubic-snap.pdf
[x] Is a complete list of discovered vulnerabilities from the audit documented in this issue?
[x] For vulnerabilities that have been deemed necessary to be addressed, are the links to the fixes attached to this issue?
[x] For vulnerabilities that have been deemed not necessary to be addressed, is a reason for each of them documented in this issue?
[ ] The corresponding pull request in this repo has been merged.

Audit Findings:

Imprecise ETH address validation [Fixed]

Version to be allowlisted: 0.4.0


Add CI configs: Node & Dependabot

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@d628c2e). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff            @@
##             main        #1   +/-   ##
========================================
  Coverage        ?   100.00%
========================================
  Files           ?         2
  Lines           ?        30
  Branches        ?         0
========================================
  Hits            ?        30
  Misses          ?         0
  Partials        ?         0

Continue to review full report at Codecov.

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


How to docker-compose down the containers started by running "make starter"?

I don't find where is the docker-compose.yml generated by the make starter command.

@fishfree In the Makefile it's calling this in multiple places but default runs with every make command. But here is where it's being actually constructed https://github.com/Islandora-Devops/isle-dc/blob/development/Makefile#L252.
In a nutshell
docker compose $(SERVICES:%=-f build/docker-compose/docker-compose.%.yml) config

Docker compose is looking at the build/docker-compose/ directory and merges all of the YML files that use naming convention docker-compose.*.yml.

@DonRichards Thank you! So I need to docker-compose down every yaml file in the folder build/docker-compose?

Won't make down work for you?
On Sat, Apr 27, 2024 at 5:47 PM fishfree @.***> wrote:

@DonRichards https://github.com/DonRichards Thank you! So I need to docker-compose
down every yaml file in the folder build/docker-compose?
—
Reply to this email directly, view it on GitHub
https://github.com/Islandora-Devops/isle-dc/issues/388#issuecomment-2081268369,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACIAMLGKPJZ2I4X6UZB4SDY7RBL3AVCNFSM6AAAAABGWHHYJGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOBRGI3DQMZWHE
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

--
Cary Gordon
lechienlunatique.com
https://us-east-1.console.aws.amazon.com/route53/domains/home?region=us-east-1#/DomainDetails/lechienlunatique.com
818-694-1626 (mobile)

@highermath You're correct. make down runs the docker compose down against the compiled docker-compose.yml.
@fishfree No, you just run it against the docker-compose.yml file if you don't want to run the make down command.

@highermath @DonRichards Thank you!  make down works!


chat: unable to load talk/groups

An update came through on my Tlon-hosted ship and I'm now unable to load Talk/Groups, just seeing error messages with the following stacktraces - it may be that useCalm() is returning undefined?
TypeError: Cannot destructure property 'disableWayfinding' of 'it(...)' as it is undefined.
    at Uj (https://sapdex-diflyx.tlon.network/apps/talk/assets/index.3cbecfe5.js:48:169471)
    at Ko (https://sapdex-diflyx.tlon.network/apps/talk/assets/react-beautiful-dnd.a94a7f90.js:19:52865)
    at eo (https://sapdex-diflyx.tlon.network/apps/talk/assets/react-beautiful-dnd.a94a7f90.js:19:62311)
    at ea (https://sapdex-diflyx.tlon.network/apps/talk/assets/react-beautiful-dnd.a94a7f90.js:23:9576)
    at Js (https://sapdex-diflyx.tlon.network/apps/talk/assets/react-beautiful-dnd.a94a7f90.js:23:935)
    at Qf (https://sapdex-diflyx.tlon.network/apps/talk/assets/react-beautiful-dnd.a94a7f90.js:23:866)
    at sn (https://sapdex-diflyx.tlon.network/apps/talk/assets/react-beautiful-dnd.a94a7f90.js:23:725)
    at mo (https://sapdex-diflyx.tlon.network/apps/talk/assets/react-beautiful-dnd.a94a7f90.js:21:10863)
    at https://sapdex-diflyx.tlon.network/apps/talk/assets/react-beautiful-dnd.a94a7f90.js:19:38697
    at e.unstable_runWithPriority (https://sapdex-diflyx.tlon.network/apps/talk/assets/react-beautiful-dnd.a94a7f90.js:8:3835)

TypeError: Cannot read properties of undefined (reading 'disableNicknames')
    at Ce (https://sapdex-diflyx.tlon.network/apps/groups/assets/index.8f9ec6e5.js:45:36798)
    at Kl (https://sapdex-diflyx.tlon.network/apps/groups/assets/react-beautiful-dnd.fde4d763.js:19:52884)
    at Ka (https://sapdex-diflyx.tlon.network/apps/groups/assets/react-beautiful-dnd.fde4d763.js:19:62361)
    at mf (https://sapdex-diflyx.tlon.network/apps/groups/assets/react-beautiful-dnd.fde4d763.js:23:9604)
    at pf (https://sapdex-diflyx.tlon.network/apps/groups/assets/react-beautiful-dnd.fde4d763.js:23:947)
    at yg (https://sapdex-diflyx.tlon.network/apps/groups/assets/react-beautiful-dnd.fde4d763.js:23:875)
    at rn (https://sapdex-diflyx.tlon.network/apps/groups/assets/react-beautiful-dnd.fde4d763.js:23:730)
    at sl (https://sapdex-diflyx.tlon.network/apps/groups/assets/react-beautiful-dnd.fde4d763.js:21:10884)
    at https://sapdex-diflyx.tlon.network/apps/groups/assets/react-beautiful-dnd.fde4d763.js:19:38716
    at e.unstable_runWithPriority (https://sapdex-diflyx.tlon.network/apps/groups/assets/react-beautiful-dnd.fde4d763.js:8:3811)

Also won't load for me.  Same issue.

> +vat %groups
/sys/kelvin:      [%zuse 417] [%zuse 416] [%zuse 415] [%zuse 414]
base hash:        0v1o.e4iqb.6nphs.rts8b.9l4qg.3aqpm.8lbkj.29e8j.dhe1r.bs5n5.di3or
%cz hash:         0v1o.e4iqb.6nphs.rts8b.9l4qg.3aqpm.8lbkj.29e8j.dhe1r.bs5n5.di3or
app status:       running
force on:         ~
force off:        ~
publishing ship:  [~ ~sogryp-dister-dozzod-dozzod]
updates:          remote
source ship:      ~binnec-dozzod-marzod
source desk:      %groups
source aeon:      130
kids desk:        ~
pending updates:  ~
> +vat %talk
/sys/kelvin:      [%zuse 417] [%zuse 416] [%zuse 415] [%zuse 414]
base hash:        0v1k.142jt.poe28.av587.44sav.718kj.3ls5b.1t7c0.rrl6s.kv3u7.h6h0s
%cz hash:         0v1k.142jt.poe28.av587.44sav.718kj.3ls5b.1t7c0.rrl6s.kv3u7.h6h0s
app status:       running
force on:         ~
force off:        ~
publishing ship:  [~ ~sogryp-dister-dozzod-dozzod]
updates:          remote
source ship:      ~binnec-dozzod-marzod
source desk:      %talk
source aeon:      122
kids desk:        ~
pending updates:  ~
~rovnys-ricfer:dojo>


Confirmation modal of bulk-select/submit before final submit to backend

This is an enhancement to improve the user experience following the initial implementation of https://github.com/x-atlas-consortia/data-ingest-board/issues/173.

Upon clicking the "Submit For Processing" button, it'll be very helpful if we display a confirmation modal/table with all the selected records (hubmap_id, status, and group_name should suffice). Then the user clicks a "Submit" button to confirm or "Cancel" button to go back to edit the list if anything turns out to be selected by mistake or some records might be missed.
Because after selecting across different pages or filtering, it can be hard to keep tracking what's in the list to submit. This final step will help the users to confirm and possibly minimize operator errors.

I find some inconsistent and confusing UI behaviors between select/deselect/filter updates. Attached two videos.
From @yuanzhou

In the 1st video, I selected two QA records then filtered by "Incomplete" status, the previously selected 2 records still there by then. But when I selected the additional 3 Incomplete records by clicking the checkbox in header, the 2 previous selected records disappeared.
In the 2nd video, I selected 3 Incomplete records first, then filtered by "New". Upon selecting one single record row rather than bulk select checkbox in header, all the 3 previously selected records disappeared too.

I had thought all the selected records would be appended to the bulk-select list and stay there regardless of filtering and additional selections, and we only reset the bulk list after I click the "Submit For Processing" button.
In addition, I also think it'll be very helpful if we display a confirmation modal/table with all the selected records (hubmap_id, status, and group should suffice). Then the user clicks a "Submit" button to confirm or "Cancel" button to go back to edit the list if anything turns out to be selected by mistake or some records might be missed. Because after selecting across different pages or filtering, it's hard to keep tracking what's in the list to submit.

https://github.com/x-atlas-consortia/data-ingest-board/assets/115558393/71c1197f-2981-429b-bbee-6f5f0b26867a


RxAndroidBle on Android Wear

Summary
When I use the example scanning code from the website, I get a LOCATION_SERVICES_DISABLED error, even though when I go into the developer options, location says it is turned on. However, per the documentation (https://developer.android.com/training/articles/wear-location-detection.html#Connect), regular location services should not be used on Android Wear devices, and there does not seem to be any way to disable RxAndroidBle's location services check.

I confirmed that I could make the scan work by simply commenting out the location services check, but that doesn't really seem like something that should be upstreamed.

Hey! Thanks for trying the library on Android Wear. Frankly speaking, we didn't test in on the Wear. Validators you are mentioning are strictly for Android. We will talk about it internally how we can resolve the problem.
If you have any ideas please don't hesitate to mention them.

Hello @jcamins
I think you that you have mixed the Location options available. The location needed (or supposed) to be on is under normal Settings - not under the Developer Options.
The application does not really use the Location Services - it only checks wether they are on.
Why commenting out the check has helped is described here #106 but for now we cannot be certain wether this check is needed or not for a particular device - so it is always on as this may lead to tracking app user's location.
If you will have an idea how to solve the problem without using whitelisting / blacklisting - feel free to speak up.
Best Regards

@DariuszAniszewski the only location option I can find on Android Wear is under Developer Options. Which makes sense, since Android Wear doesn't support location services at all.
So I guess the fact that you closed this means that you're officially not supporting Android Wear? That's a shame.

I am @dariuszseweryn ;)
I am developing on Sony SmartWatch 3 - quite old but that is the only one I have at the moment. When I go to the Settings - just under Bluetooth switch - I see Location - this one has to be on.
Seems to work on Android Wear. I will check with other watches but I do not expect a different behaviour. Feel free to provide more information if you think that something is wrong.

@jcamins You could add what watch do you use so I could check what is your case.

@dariuszseweryn sorry about that. GitHub autocompleted for me, apparently to the wrong person. My Asus ZenWatch 2 does not have a Location option in the main settings screen, and the one in the Developer Options doesn't seem to do anything (and doesn't seem like a reasonable thing to ask users to find, anyway). Your watch would seem to contradict the documentation, which says that location services are not available on Android Wear. Do you have Android Wear 2.0? Maybe support for location services is changing with AW 2.0.

Sony SmartWatch 3 is definitely Android Wear 1.0 (API 23)
I am trying to get access LG Watch Urbane - there is a chance to grab one tomorrow.
I have also checked the emulator with API 23 - it indeed does not have the Location setting - need to dig deeper.

How do I check the API version? I have Android Wear 1.5, but I don't know how to check API version.

Also, does your Sony SmartWatch 3 require location services? Maybe we could just check whether the user is on Wear when deciding whether or not to throw if the services are not enabled?

If it is not visible in the About Settings page - you can connect your watch to the computer and the Android Studio lists the current API level - then compare with wikipedia Android Wear topic.
Sony SmartWatch 3 does not require location services to be turned on to get BLE scan results though the situation is the same as in #106 and I did not found any official guides for BLE scanning on Android Wear yet.

Ah, right. It wasn't in the settings, but according to Android Studio, ZenWatch 2 is also API 23.

It seems that Sony SmartWatch 3 is having a GPS receiver. It would explain why Location setting is available.
Still - we should find some official guidelines about when we should allow scan on Android Wear - google groups discussion would be sufficient. @jcamins if you have a moment - you could try to find something. I have different project at the moment on my plate.
Best Regards

I couldn't find anything about BLE on Android Wear online. Probably because AW 1 is intended to be used in concert with a phone.

I do not have an idea. I am trying to reach someone from Google to shed some light.

You need Location permission for scanning BT devices.
My advice is to use The Scanner from setting Menü. Boundcon BT device. And in your App get The bounded devices and Connect to Them.
Appart from that habe a Look at this
https://github.com/NightscoutFoundation/xDrip/blob/master/wear/src/main/java/com/eveningoutpost/dexdrip/LocationPermissionActivity.java
Maybe ist is what you are looking for

@LadyViktoria the issue here is not location permissions, which I was able to grant, but rather location services, which are not necessarily available at all on Android Wear.

@jcamins I have just pushed a commit that should fix your issue with Android Wear. Feel free to give feedback and reopen if necessary.

Does anybody know a modern (2017/2018/2019) android wear BUDGET smart watch for which it is possible to develop apps leveraging Bluetooth Low Energy?
I am confused because I struggle to find anything. Anybody can share some experience and point some particular easy to buy smart watch model? Thank you


feat(lidar_centerpoint): optimize non-maximum suppression algorithm

Description
cherry pick of https://github.com/autowarefoundation/autoware.universe/pull/9595
Related links
Parent Issue:

Link

How was this PR tested?
Notes for reviewers
None.
Interface changes
None.

Effects on system behavior
None.

@technolojin
Is there a particular reason for not cherrypicking the squashed commit related to the upstream PR? (asking because not all the changes are here)

@knzo25
I said cherry-picking, but it is not exactly true. It is a manual work since it had namespace differences
(object_recognition_utils != autoware::object_recognition_utils)


[Feature] : Display shortened link in a new div and a button to copy it.

Display shortened link in a new div and a button to copy it.

@RamakrushnaBiswal Assign me development of this feature

This feature is already there sometimes its not visible in light mode
Work on other issues or project, good luck.

lol, not visible to me still and is there even a button to switch between dark mode and light mode i dont see it, anyways not interested to commit to this rep anymore good luck with your newbie college proj.

There is an issue for light/dark toggle #54

lol, not visible to me still and is there even a button to switch between dark mode and light mode i dont see it, anyways not interested to commit to this rep anymore good luck with your newbie college proj.

Great 👍 good luck


A little problem with style..

Hello I've a little problem with style..
I add dynamically style to item, but after drag or resize, it lose the style.
I've tried to add again style after drop event, but it continue to doesn't work... were I did a mistake.
Thanks for all Daniele

What styles are you adding dynamically?  Is there any reason why you wouldn't style it via a css file??

at the moment shadow and background. I try to develop an application where user could change style of items (and move them).
Maybe I could override "move_node" function?

Ok I found a little solution.. store some styles in "on_end_moving" function  (before removeAttr('style')) and restore them at the end of function

Can you explain or give an example of what you're going to implement.

Yes of course:
var o = $(this);
node.el = o;
self.placeholder.hide();
//Store styles
var initialShadow = $(o).css("box-shadow");
var initialMoxShadow = $(o).css("-moz-box-shadow");
var initialWebKitShadow = $(o).css("-webkit-box-shadow");
var initialBackground = $(o).css("background");
var initialTextAlign = $(o).css("text-align");
//ecc...

        o
            .attr('data-gs-x', node.x)
            .attr('data-gs-y', node.y)
            .attr('data-gs-width', node.width)
            .attr('data-gs-height', node.height)
            .removeAttr('style');

        self._update_container_height();
        self.container.trigger('change', [self.grid.get_dirty_nodes()]);

        self.grid.end_update();

           //Assign again styles
	$(o).css("box-shadow",initialShadow);
	$(o).css("-moz-box-shadow",initialMoxShadow);
	$(o).css("-webkit-box-shadow",initialWebKitShadow);
	$(o).css("background", initialBackground);
	$(o).css("text-align", initialTextAlign);
            //Ecc.........

You could use the '.ui-draggable-dragging' and '.ui-resizable-resizing' selectors to negate any styles on the placeholders when you drag or resize??

It is better to use CSS to customize how draggable item should look like. Please check this out


Various fixes

This contains various changes made as part of my work on a higher level wrapper library around cassowary-rs, it includes two significant bug fixes and other smaller changes. If it helps, I can split this up into multiple pull requests.
The most serious bug is fixed by the last commit, which fixes an InternalSolverError that can occur with sufficiently complex layouts. I could only reproduce it with a complicated layout example, otherwise I would have added a minimal test case. Hopefully the fix is clear by comparing the change to kiwi's dual optimize: https://github.com/nucleic/kiwi/blob/master/kiwi/solverimpl.h#L600
The other bug (fixed by second last commit) includes a short test case that should demonstrate the issue.
I added a dependency on the log crate so that 'Spurious change' can be just an info! message and isn't always dumped to console, I figured it's alright since it's a tiny dependency and it could be useful to add more debug! or error! log messages in the future. Alternatively, the 'Spurious change' message could probably just be removed.

Nice changes, thanks! I'm not at a computer where I can check the behaviour of that second bug you mentioned, which I'd like to do before merging. Also I'm tempted to just remove the spurious change message altogether. Regarding that dual optimize bug, I think the fix could be made a bit more efficient using the Entry API, but I think I might just do that after merging.

In your use of the library, do you see the spurious change message appear much?

The spurious change message happens somewhat regularly when a layout is being changed around, for instance when resizing a window it might happen 5 times. Other times it won't happen at all. It's definitely not common enough that the unused changes would have a serious impact on performance.
Hmm not sure if that fix can be made more efficient with the Entry API, it seems that can only be used for inserting, instead of removing, I could be missing something though.

Right, I think it would be worth just removing the message then.

Regarding the Entry API:
Your change currently looks like this:
if self.rows.get(&leaving).map_or(false, |row| row.constant < 0.0) {
    let mut row = self.rows.remove(&leaving).unwrap();

Instead it could look like this:
if let Entry::Occupied(entry) = self.rows.entry(leaving) {
    if entry.get().constant < 0.0 {
        let mut row = entry.remove();

This has a bit of indentation creep due to the limitations of if let, but it only performs one map lookup.
You'd need to import std::collections::hash_map::Entry for the above code to work.
If you make these two changes (remove the "spurious change" message and switch to the Entry API) I'm willing to merge.

Ah ok nice, sorry I didn't look closely enough at the Entry API docs, wasn't aware of the OccupiedEntry methods at all.
Unfortunately it ended up a little uglier than your code in order to appease the borrow checker. Since the entry method mutably borrows self I had to have it remove the row in another block, but it should do only one lookup now.

That's a shame about the borrow checker. Should be something that non-lexical borrows will fix eventually. Would also have been easier if Entry had occupied and vacant methods (returning Option<OccupiedEntry> and Option<VacantEntry> respectively), and if Option had a filter method. Ah well, maybe I'll write an RFC one day.
Anyway, changes look good, I'll merge then bump the minor (effectively major) version later for a new release (since some of these changes are breaking changes).

New version is now published.


BUG: Issues with list construction

There are two main issues with list construction

[ ] https://github.com/QuantEcon/sphinxcontrib-jupyter/issues/143
[x] https://github.com/QuantEcon/sphinxcontrib-jupyter/issues/144

mixed lists (as per the test case is still an issue)

Mixed lists currently work so long as the indentation is 4 spaces. It would be good to get this to work on 2 spaces as per RST spec.

@arnavs I am going to document this behaviour for now and move on to other issues that need fixing (given we use 4 spaces) commonly across the project. I will document this in the test suite. Thanks for raising this issue.


Release 1 I&T Report

We should put together the I&T/V&V Report for Release 1.  This will include updating the VnV Matrix for R1 testing.
Updating the VnV Matrix for R1:

GDrive link to a working version:  OPERA SDS L3 VnV Matrix for R1 2022-06-27.xlsx

This copy is distinct from the spreadsheet we will use to track R2 testing activities.

Update columns H-N for each of the VnV Activities exercised for R1.

What the report needs to contain (can be a doc, or slides):

Identify the version(s) used for testing.
summary table of the VnV Matrix
Table with the L3 SDS Requirements addressed by R1, and their status (verified/closed, or unverified/open, etc.)
Summary listing of any issues encountered during testing.  Note which have already been addressed & closed, and which (if any) are still open.
If there are any un-verified / open requirements, there should be a description of the issue(s) preventing closure, and a plan for how we will address them (and ultimately close the req.).

Looking over the VnV Matrix - everything looks good for R1.  This issue is ready to close.


Add code coverage uploads for non-amd64 architectures

Is your feature request related to a problem? Please describe.
https://app.codecov.io/gh/tetratelabs/wazero doesn't include all main sources, rather just amd64
We should have all sources. There are notably more for arm64, but also a few for neither (risc-v)
Describe the solution you'd like
I'd like codecov to present a merged view of all sources, which are materialized by emulated arm64 and risc-v also uploading reports.
Describe alternatives you've considered
not doing anything
Additional context
https://github.com/tetratelabs/wazero/pull/596#issuecomment-1140124291

note: the GitHub action for codecov doesn't yet support non-amd64 https://github.com/codecov/uploader/issues/523

TL;DR; let's use the normal bash script until non-amd64 works on the action, or they drop the bash script
if they really delete the bash script before fixing non-amd64 a complicated workaround would be to have a fan-in upload stage. basically run all the coverage in a matrix and upload artifacts with the coverage.txt. block on that, download all the coverage.txt into a different directory or path and then use codecov/codecov-action@v2 action to send them at the same time.
The ideal way out is to wait for non-amd64 to work and use the bash script meanwhile.

The referenced PR for the codecov uploader is now closed since 2 days and they link to arch-specific uploader binaries, so we could give it a try.
One question:
Currently the coverage only runs as part of the test_amd64 job here.
Is your plan to

Rename that to be arch independent and add other architectures to the matrix?
Or add arm64 and riscv64 jobs next to it?
Or add coverage tracking to the test_scratch job, which already has all three architectures in [its matrix](https://github.com/tetratelabs/wazero/blob/9138b6f722ca855
c8f498df6749f302a8a4e9ffa/.github/workflows/commit.yaml#L107-L114)?


Fix: InceptionBN.call

BatchNormalization (http://docs.chainer.org/en/stable/_modules/chainer/links/normalization/batch_normalization.html#BatchNormalization) can set test-mode on __call__(self, x, test=False),
but InceptionBN (http://docs.chainer.org/en/stable/_modules/chainer/links/connection/inceptionbn.html#InceptionBN) has a difference interface __call__(self, x) and stores test-mode as a property.
The difference confuses us.

Thank you for suggestion. I agree with you in that identical APIs for BatchNormalization and InceptionBN reduce the confusion. On the other hand, It is difficult for us to remove train property because we have the policy for the API compatibility. One of the solution is to offer both ways to set the train/test mode of InceptionBN and define the priority between the two (e.g. if the test argument of __call__ is explicitly set, we adopt it).
By the way, we make use of the fact that train mode is set through the attribute in the ImageNet example (here is the code). If we remove the train property or make it obsolete, it is better not to use it.

I tried to keep the compatibility.
Following 2 codes are same.
model.__call__(x, test=bl)

model.train = not bl
model.__call__(x)

Thanks! I will check your change.

We discussed within the developer team and concluded that it is confusing for users to be provided two ways to do the same thing (in this case, to set the test mode through the attribute and through the argument of __call__ method). So, it is better to choose the one as the recommended way and make the other deprecated.
On the other hand, it is much confusing to change the "recommended way" within short terms, so we should discuss this point enough before making a change. I would like your opinion on this problem. Thanks in advance.

@beam2d Could you check this PR?

I'll check it shortly.

Note that I'm preparing a training mode configuration in #2186 and then this change will not be needed in v2, and so this change can be left unmerged for v2. It is still meaningful to merge it to v1. @delta2323 How do you think of it?

I agree that we do not need this feature any longer in v2.
I come think it is OK to merge in v1 if we add sufficient explanations. I concerned the multiple standard ways of setting the training mode could confuse users. But I come to think it is acceptable if we write explicitly that there are two ways to do the same thing and that it is for keeping backward compatibility.

I decided to merge this PR to v1. We will send another PR for v2 that renews its implementation.


Separate the IO model into separate projects

Would you teams consider separating IO processing into a separate library? I am trying to use the code of the IO processing part of this project, and I have tried to separate the IO processing code, and have run most of the test code.
https://github.com/zon-dev/aio

This processing model may help power some network frameworks

See https://github.com/tigerbeetle/tigerbeetle/issues/1988#issuecomment-2150580158!
TL;DR: no, but community is welcome to do it!


Undocumented breaking change in IApplicationBuilder.UseExceptionHandler()

The migration guide doesn't notice anything about UseExceptionHandler. Usage of a simple call app.UseExceptionHandler() in one's Startup.Configure will fail at runtime with the exception:
System.InvalidOperationException: 'An error occurred when configuring the exception handler middleware. Either the 'ExceptionHandlingPath' or the 'ExceptionHandler' option must be set in 'UseExceptionHandler()'.'

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

ID: 4fa0f562-bdf0-eeea-f076-0c3e05222f75
Version Independent ID: 8269d917-3b32-1607-71da-c756d4d7ad32
Content: Migrate from ASP.NET Core 2.0 to 2.1
Content Source: aspnetcore/migration/20_21.md
Product: asp.net-core
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

The templates use the overload of UseExceptionHandler that takes an errorHandlingPath parm
 app.UseExceptionHandler("/Error");
@Tratcher this seems like an edge case with great error message. Should this be added to doc?

See https://github.com/aspnet/Diagnostics/issues/400. This wasn't a breaking change per-se, it didn't work before either. 2.1 added an exception to explain why it is mis-configured.


  This is not allowed.  MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor()
PoseRig:.ctor() (at Assets/TruckPit/PoseRig.cs:81)
SocketClient:ParseData(String) (at Assets/TruckPit/SocketClient.cs:57)
SocketClient:Update() (at Assets/TruckPit/SocketClient.cs:32)
I have the same version of Unity and all are working even the pose estimation when you play from unity
Do you have any idea what should be wrong?

That specific issue is known, but since it is merely a warning it can hopefully be ignored. The whole visualization pipeline should work correctly anyways.
If you take a look at the code a bit below SocketClient.cs:57 at lines 79 and 87, the C# garbage collector should take care of the unnecessary instance. While creating a new instance of a MonoBehaviour with the use of 'new' is dubious at best, it does work correctly in this particular case.
Admittably the code was written in a bit of a hurry, as the visualizer was not a high-priority part of the whole project.
Does this prevent the code from compiling on your end or is it merely a warning?

I was able to compile all the code and even when I press play the video stop or play correctly (In Unity) but I cannot see the 3D Pose Estimation

If you look at the terminal, "couldn't parse pose" seems to be a bit suspicious. I cannot help but notice you are also using two distinctively different cameras, one with a very wide FOV and the other one with a very narrow one. The cameras should ideally be of the same model (= similar lens distortions and same resolution). If acquiring two similar cameras is impossible, maybe look into camera calibration and undistortion? Especially that fish-eye lensed camera is a bit problematic.


Treasury Data Unavailable After January 5th

Though I usually update treasury data every day, and as recently as Friday (2024-01-12), data link code USTREASURY/YIELD is now returning no data past 2024-01-05.  Has the data code changed?  The python usage example at https://data.nasdaq.com/data/USTREASURY-us-treasury/usage/quickstart/python now sees the quandl package utilized instead of nasdaqdatalink, and with a different data code / endpoint.
I know it seems a bunch of data has become deprecated, but I can't imagine this is the case for Treasury Data. Please let me know what is going on. Thanks

-- Please reply above this line --
Dear Nasdaq/data-Link-Python,
Thank you for contacting the Nasdaq Data Client Success Team. Your
email is very important to us and we will respond to you within 1 to 2
business days.
To efficiently support your request, please include relevant details
such as the data product/feed you are inquiring about.
Kind regards,
Nasdaq Data Client Success
[1]
Links:
[1] https://www.nasdaq.com/

-- Please reply above this line --
        Hi there,

Thank you for reaching out.
The free data on Nasdaq Data Link comes from various sources and there
can be many reasons why free data may not be updated. On that note,
please also note that we don't guarantee regular updates of free
databases.
Nevertheless, your email has been forwarded to our data team. Please
kindly note that since USTREASURY is a free data feed, there is no
guaranteed timeline if/when our team will be able to investigate any
issues or apply any fixes.
Thank you for your kind understanding.
Best regards,
KIM LIRA
Nasdaq Data Client Success
[1]
How would you rate my reply?
Great [2]    Okay [3]    Not Good [4]
Links:
[1] https://www.nasdaq.com/
[2]
https://secure.helpscout.net/satisfaction/675691564/record/7450217748/1/
[3]
https://secure.helpscout.net/satisfaction/675691564/record/7450217748/2/
[4]
https://secure.helpscout.net/satisfaction/675691564/record/7450217748/3/
    > On Wed, Jan 17, 2024 at 7:47 PM EST, Nasdaq/data-Link-Python<EMAIL_ADDRESS>wrote:

WARNING - EXTERNAL EMAIL; EXERCISE CAUTION.
Though I usually update treasury data every day, and as recently as
Friday (2024-01-12), data link code USTREASURY/YIELD is now returning
no data past 2024-01-05. Has the data code changed? The python usage
example at
https://data.nasdaq.com/data/USTREASURY-us-treasury/usage/quickstart/python
[1] now sees the quandl package utilized instead of nasdaqdatalink,
and with a different data code / endpoint.
I know it seems a bunch of data has become deprecated, but I can't
imagine this is the case for Treasury Data. Please let me know what is
going on. Thanks

Reply to this email directly, view it on GitHub [2], or unsubscribe
[3].
You are receiving this because you are subscribed to this
thread.Message ID:
@.***>
Links:
[1]
https://data.nasdaq.com/data/USTREASURY-us-treasury/usage/quickstart/python
[2] https://github.com/Nasdaq/data-link-python/issues/45
[3]
https://github.com/notifications/unsubscribe-auth/AWYQ6432WRKWKGOTYII5OJLYPBWJDAVCNFSM6AAAAABB7NSJESVHI2DSMVQWIX3LMV43ASLTON2WKOZSGA4DOMRWGE3DCNY


Poll survive navigation

The docs for Poll state not surviving navigation is intended, however we scrape a few sites (behind a paywall) that do some funky page loads with redirects after an initial click to submit and we need to wait around for it to finish and sniff some js.  The following code seems to be working and this issue is to gauge interest in a PR to add as a PollOption or simply document how it can be done for the next person searching.
func WaitForJS(expression string, res interface{}, opts ...chromedp.PollOption) chromedp.ActionFunc {
	return func(ctx context.Context) error {
		pollfn := chromedp.Poll(expression, res, opts...)
		log.Println("WaitForJS", expression)
	retry:
		err := pollfn.Do(ctx)
		if err != nil && err.Error() == "Execution context was destroyed. (-32000)" {
			log.Println("WaitForJS", "retry", err.Error())
			// chromedp.Evaluate updates the context with the new Execution context.  Not sure if there is
			// a cleaner way; without this call, the subsequent/retry poll call will error: Cannot find context with specified id
			jsfn := chromedp.Evaluate("1==1", nil)
			err := jsfn.Do(ctx)
			if err != nil {
				return fmt.Errorf("unable to exec 1==1 dummy script to init new context: %w", err)
			}
			goto retry
		}
		return err
	}
}

I did not make it survive navigation because I could not find an easy way to do it (without making the implementation complicated). W.R.T. this concrete use case, maybe it's better to implement it like this:

navigate to the page (chromedp.Navigate)
wait for the click action to complete: chromedp.RunResponse(chromedp.Click(query)) (see https://github.com/chromedp/chromedp/issues/651#issuecomment-653769905)
call chromedp.Poll

chromedp.Evaluate updates the context with the new Execution context.

I don't think this statement is correct. But I don't understand why chromedp.Evaluate will do the trick too. Can you provide a demo so that I can look into it?

@ZekeLu thanks for looking into this, I've tried to get "error: Cannot find context with specified id" to reproduce with the following code to no avail.  One thing I did notice is I am calling .Do in a loop, not sure if that is supported or not.   The code I'm using that works is below, feel free to close this issue and I can reopen when and if I'm able to reproduce.
Is adding an option to survive navigations doable?
/* Tests to show Poll can not retry without first calling chromedp.Evaluate
 * https://github.com/chromedp/chromedp/issues/890

*/

package chromedp_test

import (
	"context"
	"fmt"
	"net/http"
	"net/http/httptest"
	"strings"
	"testing"

	"github.com/chromedp/chromedp"
)

func PollSurvive(expression string, res interface{}, opts ...chromedp.PollOption) chromedp.Action {
	return chromedp.ActionFunc(func(ctx context.Context) error {
		retries := 0
	retry:
		err := chromedp.Poll(expression, res, opts...).Do(ctx)
		if err != nil && strings.Contains(err.Error(), "(-32000)") {
			fmt.Println("retry", err.Error())
			retries++
			if retries > 2 {
				chromedp.Run(ctx, chromedp.Evaluate("window.stopreloading=true", nil))
			}
			goto retry
		}
		return err
	})
}

// This is working as well, need to debug further with live sites and determine what is causing
// the error: Cannot find context with specified id
func PollSurviveFail(expression string, res interface{}, opts ...chromedp.PollOption) chromedp.Action {
	return chromedp.ActionFunc(func(ctx context.Context) error {
		pollfn := chromedp.Poll(expression, res, opts...)
		retries := 0
	retry:
		err := pollfn.Do(ctx) // calling Do in the retry
		if err != nil && strings.Contains(err.Error(), "(-32000)") {
			fmt.Println("retry", err.Error())
			// second retry will be error: Cannot find context with specified id
			// uncomment the code below and somehow we get an execution context again, and this works as well
			// jsfn := chromedp.Evaluate("1==1", nil)
			// err := jsfn.Do(ctx)
			// if err != nil {
			// 	return fmt.Errorf("unable to exec 1==1 dummy script to init new context: %w", err)
			// }
			retries++
			if retries > 2 {
				chromedp.Run(ctx, chromedp.Evaluate("window.stopreloading=true", nil))
			}
			goto retry
		}
		return err
	})
}

func TestPollOnNav(t *testing.T) {
	// create a test server to serve a page that reloads itself on a timer
	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		_, _ = fmt.Fprint(w, `

Test

	`,
		)
	}))
	defer ts.Close()
	// create context
	ctx, cancel := chromedp.NewContext(context.Background())
	defer cancel()

	// no error
	err := chromedp.Run(ctx,
		chromedp.Navigate(ts.URL),
		PollSurvive(`!(typeof stopreloading === "undefined")`, nil),
	)
	fmt.Println("Poll error: ", err)

	// no error
	err = chromedp.Run(ctx,
		chromedp.Navigate(ts.URL+"?ts=1"),
		PollSurviveFail(`!(typeof stopreloading === "undefined")`, nil),
	)
	fmt.Println("Poll error: ", err)

}

Is adding an option to survive navigations doable?

It's okay to do the retry in the user code. But I can not think of a user case that it helps to put the retry into the library (like I said before, for your use case, it's better to call chromedp.Poll after the click action).

The code I'm using that works is below, feel free to close this issue and I can reopen when and if I'm able to reproduce.

Let's leave this issue open for another week. I will close it if we still can not reproduce the "Cannot find context with specified id" error then.


Prisma connection instructions

https://cockroachlabs.atlassian.net/browse/DOC-4542

This change is


Bash script for anyone interested

Hello
I figured somebody else might need this.
I needed it to automate the (re)creation of the necessary services, jobs etc.
Also, artifact registry didn't work out of the box for me.
install.sh
#!/bin/bash

set -e

# As per https://github.com/GoogleCloudPlatform/gcr-cleaner

REPO_NAME=${1:?REPO_NAME expected as the 1st arg}

export PROJECT_ID="<project>"
export REPO_US="us-docker.pkg.dev/$PROJECT_ID/$REPO_NAME"
export REPO_EUROPE="europe-docker.pkg.dev/$PROJECT_ID/$REPO_NAME"
export REPO_ASIA="asia-docker.pkg.dev/$PROJECT_ID/$REPO_NAME"
REPOS_JSON_ARR="[\"${REPO_US}\", \"${REPO_EUROPE}\", \"${REPO_ASIA}\"]"
declare -a LOCATIONS_ARR=("us" "europe" "asia")
# Limiting resources to prevent billing surprises
MAX_RUNNER_INSTANCES="${#LOCATIONS_ARR[@]}"
RUNNER_MEMORY="128Mi"
REQUEST_TIMEOUT="300s"

SV_NAME="gcr-cleaner-$REPO_NAME"
SV_INVOKER_NAME="gcr-cleaner-invoker"
<EMAIL_ADDRESS><EMAIL_ADDRESS># Using a fixed version for security
GCR_CLEANER_IMAGE_URL="gcr.io/gcr-cleaner/gcr-cleaner@sha256:aaa9fd57f612605db869284d85780d5aa5eea6015addbd08faecbee986354614"
RUNNER_REGION="us-central1"
# Note 'us-central1' doesn't work for App Engine
APP_REGION="us-central"
# Commented: we run this each day to save costs
# SCHEDULE="0 8 * * 2"
SCHEDULE="0 8 * * *"
GRACE="24h"
KEEP=5

# Generic function for retrying (mostly useful for iam policies concurrent changes)
exec_with_retry_or_exit(){
  i=0
  tries=10
  sleep_secs=5
  while true
  do
    set +e
    "$@"
    code="$?"
    set -e

    if [ "$code" == 0 ]; then
      break;
    fi

    i=$((i+1))

    if [ "$i" -ge $tries ]; then
      echo "-- Could not exec command after $tries tries"
      exit 123;
    fi

    echo "-- Failed with $code. Sleeping $sleep_secs before retrying ($i/$tries)"
    sleep "$sleep_secs"
  done
}

echo "Enable necessary APIS"
gcloud services enable --project "$PROJECT_ID" \
  appengine.googleapis.com \
  cloudscheduler.googleapis.com \
  run.googleapis.com

echo "Create $SV_EMAIL if not exists"
set +e
gcloud iam service-accounts describe "$SV_EMAIL"
code="$?"
set -e
if [ "$code" != 0 ]; then
    gcloud iam service-accounts create "$SV_NAME" \
    --project "$PROJECT_ID" \
    --display-name "$SV_NAME"
fi

echo "Deploy gcr-cleaner via $SV_EMAIL"
gcloud --quiet run deploy "$SV_NAME" \
  --async \
  --project "$PROJECT_ID" \
  --platform "managed" \
  --service-account "$SV_EMAIL" \
  --image "$GCR_CLEANER_IMAGE_URL" \
  --region "$RUNNER_REGION" \
  --max-instances="$MAX_RUNNER_INSTANCES" \
  --memory="$RUNNER_MEMORY" \
  --timeout "$REQUEST_TIMEOUT"

echo "Add roles/browser to $SV_EMAIL"
exec_with_retry_or_exit gcloud projects add-iam-policy-binding "$PROJECT_ID" \
  --member "serviceAccount:$SV_EMAIL" \
  --role "roles/browser" \
  --condition "None"

echo "Add roles/artifactregistry.repoAdmin to $SV_EMAIL for '$REPO_NAME' repos"
# Commented: seems like the role condition for the resource name doesn't work on artifact registry. Using the dedicated command instead
# echo "Add roles/artifactregistry.repoAdmin to $SV_EMAIL"
# set +e
# gcloud projects add-iam-policy-binding "$PROJECT_ID" \
#   --member "serviceAccount:$SV_EMAIL" \
#   --role "roles/artifactregistry.repoAdmin" \
#   --condition="^:^title=Res name ending with $REPO_NAME:expression=resource.name.endsWith('$REPO_NAME')"
# code="$?"
# set -e
# if [ "$code" != 0 ]; then
#     echo "-- Role already added. Skipping this part"
# fi
# set -e
for loc in "${LOCATIONS_ARR[@]}"
do
  echo "--- Adding for '$REPO_NAME' in '$loc'"
  exec_with_retry_or_exit gcloud artifacts repositories add-iam-policy-binding "$REPO_NAME" --location="$loc" --role="roles/artifactregistry.repoAdmin" --member="serviceAccount:$SV_EMAIL" &
done
# Wait for the above parallel commands in the loop to finish
wait

echo "Create $SV_INVOKER_EMAIL if not exists"
set +e
gcloud iam service-accounts describe "$SV_INVOKER_EMAIL"
code="$?"
set -e
if [ "$code" != 0 ]; then
    gcloud iam service-accounts create "$SV_INVOKER_NAME" \
    --project "$PROJECT_ID" \
    --display-name "$SV_INVOKER_NAME"
fi

echo "Give $SV_INVOKER_EMAIL permission to invoke the Cloud Run service"
exec_with_retry_or_exit gcloud run services add-iam-policy-binding "$SV_NAME" \
  --project "$PROJECT_ID" \
  --platform "managed" \
  --region "$RUNNER_REGION" \
  --member "serviceAccount:$SV_INVOKER_EMAIL" \
  --role "roles/run.invoker"

echo "Create app to run job"
set +e
gcloud app create \
  --project "$PROJECT_ID" \
  --region "$APP_REGION" \
  --quiet
code="$?"
set -e
if [ "$code" != 0 ]; then
    echo "-- App already created. Skipping this part"
fi

echo "Get the URL of the Cloud Run service"
service_url="$(gcloud run services describe "$SV_NAME" --project "$PROJECT_ID" --platform "managed" --region "$RUNNER_REGION" --format 'value(status.url)')"
export SERVICE_URL="$service_url"

# job_name="gcrclean-$REGISTRY_REGION-$REPO_NAME"
job_name="gcrclean-$REPO_NAME"
echo "Create Cloud Scheduler HTTP job '$job_name' to invoke the function weekly"
set +e
gcloud scheduler jobs describe "$job_name"
code="$?"
set -e
if [ "$code" == 0 ]; then
    echo "-- Job already created. Deleting exising one"
    gcloud --quiet scheduler jobs delete "$job_name"
fi

# Specifying tag_filter_any "."  Check logs"

usage: ./install.sh <repo_name>
This script comes with NO WARRANTY. Use at your own risk

Thanks!