Cantera group names are hard-coded?

Background
Cantera allows specification of various ideal_gas objects to include different species/elements/reactions from the input file.  It doesn't appear that pyMARS supports this, and it isn't clear if it is looking for a magic string somewhere.
ideal_gas(name = "gri30",
      elements = " O  H  C  N  Ar ",
      species = """ H2  H  O  O2  OH  H2O  HO2  H2O2  C  CH
                   CH2  CH2(S)  CH3  CH4  CO  CO2  HCO  CH2O  CH2OH  CH3O
                   CH3OH  C2H  C2H2  C2H3  C2H4  C2H5  C2H6  HCCO  CH2CO  HCCOH
                   N  NH  NH2  NH3  NNH  NO  NO2  N2O  HNO  CN
                   HCN  H2CN  HCNN  HCNO  HOCN  HNCO  NCO  N2  AR  C3H7
                   C3H8  CH2CHO  CH3CHO """,
      reactions = "all",
      kinetics = "GRI30",
      initial_state = state(temperature = 300.0,
                        pressure = OneAtm)    )

ideal_gas(name = "gri30_mix",
      elements = " O  H  C  N  Ar ",
      species = """ H2  H  O  O2  OH  H2O  HO2  H2O2  C  CH
                   CH2  CH2(S)  CH3  CH4  CO  CO2  HCO  CH2O  CH2OH  CH3O
                   CH3OH  C2H  C2H2  C2H3  C2H4  C2H5  C2H6  HCCO  CH2CO  HCCOH
                   N  NH  NH2  NH3  NNH  NO  NO2  N2O  HNO  CN
                   HCN  H2CN  HCNN  HCNO  HOCN  HNCO  NCO  N2  AR  C3H7
                   C3H8  CH2CHO  CH3CHO """,
      reactions = "all",
      kinetics = "GRI30",
      transport = "Mix",
      initial_state = state(temperature = 300.0,
                        pressure = OneAtm)    )

ideal_gas(name = "gri30_multi",
      elements = " O  H  C  N  Ar ",
      species = """ H2  H  O  O2  OH  H2O  HO2  H2O2  C  CH
                   CH2  CH2(S)  CH3  CH4  CO  CO2  HCO  CH2O  CH2OH  CH3O
                   CH3OH  C2H  C2H2  C2H3  C2H4  C2H5  C2H6  HCCO  CH2CO  HCCOH
                   N  NH  NH2  NH3  NNH  NO  NO2  N2O  HNO  CN
                   HCN  H2CN  HCNN  HCNO  HOCN  HNCO  NCO  N2  AR  C3H7
                   C3H8  CH2CHO  CH3CHO """,
      reactions = "all",
      kinetics = "GRI30",
      transport = "Multi",
      initial_state = state(temperature = 300.0,
                        pressure = OneAtm)    )

It appears that this does not play well with pyMARS
Error description
When running against a cti file including the above examples, the following exception occurs:
  File "interfaces/cython/cantera/base.pyx", line 29, in cantera._cantera._SolutionBase.__cinit__
  File "interfaces/cython/cantera/base.pyx", line 78, in cantera._cantera._SolutionBase._init_cti_xml
cantera._cantera.CanteraError:
***********************************************************************
CanteraError thrown by Factory::create:
No such type: 'gri30'
***********************************************************************

Steps to reproduce
Unzip the attached file and then run the following:
#!/bin/sh
pymars \
    --targets CH4 O2 H2 \
    --retained_species N2 CO CO2 H2O \
    --conditions methane-conditions.yaml \
    --method DRGEP \
    --error 10 \
    -m methane-gri30.cti

methanefiles.zip

Hmm, this one is a little tricky. Right now pyMARS assumes a single ideal_gas object, but you're right that some files will have multiple.
What it should do is modify the lists of species and reactions in each object.
Where things get tricky is if the ideal_gas objects include different sets of species and/or reactions. I'll need to look into this a bit more.

@jcsutherland so, this seems to be an issue with the methane-gri30.cti file you are using; if I just try to create a cantera.Solution object with it, Cantera throws the error above:
gas = ct.Solution('methane-gri30.cti')

---------------------------------------------------------------------------
CanteraError                              Traceback (most recent call last)
<ipython-input-2-3045edfef451> in <module>
----> 1 gas = ct.Solution('methane-gri30.cti')

interfaces/cython/cantera/base.pyx in cantera._cantera._SolutionBase.__cinit__()

interfaces/cython/cantera/base.pyx in cantera._cantera._SolutionBase._init_cti_xml()

CanteraError:
***********************************************************************
CanteraError thrown by Factory::create:
No such type: 'gri30'
***********************************************************************

I think the issue is the kinetics = "GRI30", line that appears in each ideal_gas object. If I remove that, the file loads without error; in fact, the GRI Mech 3.0 included with Cantera does not have that line, and this is the model we use for a bunch of unit tests.
However, regarding the presence of multiple ideal_gas objects: the current behavior of pyMARS is to reduce whichever is loaded by default when creating a Cantera.Solution object from the CTI file. In the case of gri30.cti, this is the first one, without the transport field specified. The retained species objects contain their transport data, though.

In the situation that the CTI file contains multiple ideal_gas objects, I don't think we want to try reducing each of them (in case they contain varying numbers/sets of species or reactions).
Instead, I think the best solution is to include the name of the object to be reduced as an optional reduction input (now contained in a single YAML file, per e6ec139).


Are Gameplay Changers Accessible By Lua?

What is your question?
So you know about the Gameplay Changers when you press Ctrl in Freeplay?
I've been curious if you can access and change the multiplier for health gain/loss via Lua.
If not, is there any alternative ways to customize how much health you gain/lose?

check line 197 https://github.com/ShadowMario/FNF-PsychEngine/blob/main/source/FunkinLua.hx#L197 to 213 in FunkinLua.hx

What is your question?
So you know about the Gameplay Changers when you press Ctrl in Freeplay? I've been curious if you can access and change the multiplier for health gain/loss via Lua. If not, is there any alternative ways to customize how much health you gain/lose?

Try these! I believe they should work!
setProperty('healthGain', 1)
setProperty('healthLoss', 1)


LTS timeline and milestones.

I like this project. Personally, the comp is quite simple to implement and extend once you get past the documentation and actually step through the source code.
Code is on point.
... but as a dependecy for production, it requires a little more firm direction.
I suggest adding a timeline for targeting a LTS roadmap and a contributing rules to the wiki.
If you're not planning to have an l.t.s release, do let us know as well.
Thanks.

Marked

2.2.x is a LTS

Wiki is not necessary
Any PR is welcome and could be casual 'cause I will optimize it finally
I will keep the releases active from now on


Decompose ct.get_result()

Download the initial Lattice JSON

Download the workflow result (possibly large)

Download each intermediate node output (possibly large)

Call ct.get_result() recursively on each sublattice node.

Hey team! Please add your planning poker estimate with Zenhub @AlejandroEsquivel @cjao @kessler-frost


Without noise, PGD fails to start from different initial point

As you can see, the attribute self.random_start has not been used by the PGD_L2 class. Thus, if there is no noise, say that noise_sd=0, then PGD will always start from the original x, rather than intended different initial points. This seems to weaken the effectiveness of PGD.

@joneswong Apologies for the late reply. Yea we don't use random start in any of our experiments, and yup we agree you might be able to get even better results by doing random start. Though in the presence of noise_sd, I don't think it would change things since there is an inherent randomness already in the smoothed classifier when it is evaluated multiple at the same data point. Hope this helps!


Cut New Release

what

Last release was cut in january

why

One month ago, cli was updated to support new regions; current release does not support us-west-2
Most users will use the binary release rather than build their own from source

references

https://github.com/jpignata/fargate/pull/62#issuecomment-424065609

+1

+10

We've built binary releases based on master. Since this is a fork, we've restarted our releases at 0.1.0 since it's impossible to maintain parity.

@PaulMaddox this is done now right? :tada:

Yes, see the github releases page 👍🥳


Feature Request: set security protocol used by dart http client for https connections

In my company, we are creating a medical device (app) with dart (flutter) and we are required by law, to specifically allow only one certain type of security protocol (in out case TLS 1.2).
When any other type of security protocol is used (e.g. TLS 1.3) connections should be declined by the client.
Wha this feature request desires:

a way to explicitly set or whitelist a sepcific security protocol type.
the http client should only allow connections that use that specific security protocol type.
connections that use any other security protocol types should be declined by the http client.

I used this feature before in mobile app created with unity and C#. In C#, there is a class called ServicePointManager where you can sepcify a specific security protocol via an SecurityProtocolType enum.
Maybe there is a way to do something similar with dart (See C# references below).

https://docs.microsoft.com/en-us/dotnet/api/system.net.servicepointmanager?view=net-5.0
https://docs.microsoft.com/de-de/dotnet/api/system.net.securityprotocoltype?view=net-5.0

I have not yet found a way to do this wit dart, that is why I created this feature request. According to this issue, it is not supported by the dart language at the moment:
https://github.com/dart-lang/sdk/issues/37173
We are currently using flutter version 1.22.6 with dart sdk version 2.10.5 but will be upgrading to flutter 2.0+ soon.
As flutter uses the dart http client, I understand this issue to be a dart lang issue and not a flutter issue.
As mobile developers we are developing on Mac and Windows for Android and iOS.
Thank you in advance for your help!

we need that exact the same way - good approach

any news on this feature request ?


Uncouple Jquery and Blaze?

If I'm not mistaken, this package uses Jquery and Blaze.  Is that necessary?  It seems like kadirahq/flow-router doesn't have those dependencies.

Closing in favor of #33
@jasongrishkoff you may thumb up #33
Uncoupling Blaze will cause jQuery to go away too.


Remove deprecated Gem::Specification#has_rdoc

NOTE: Gem::Specification#has_rdoc= is deprecated with no replacement. It will be removed on or after 2018-12-01.
Gem::Specification#has_rdoc= called from /home/travis/build/sul-dlss/argo/vendor/bundle/ruby/2.5.0/bundler/gems/rdf-rdfa-240ca8bc11c8/rdf-rdfa.gemspec:21

Coverage increased (+0.9%) to 90.849% when pulling 775a8e9b0db95ee146c3564e0b767e1378c4b8a5 on jcoyne-patch-1 into caf9b1ce1c08fb9cfcde74273380014994d93d7b on 1.99-support.

@gkellogg I'm not sure how to fix the rbx builds. Can I move them to allowed failures?

Yes, rbx is ignored everywhere else, as is jRuby. They both have seemingly unresolvable issues across the board.

Thanks @jcoyne. I'll wait for #26 to be rebased on this to merge and release an update.


[TextLayer] Fixed size, frame (constructor) and constraints.width (autoSize) if layer has no parent

Proposed fixes for #495 and #493.
Compare test cases with framer.debug.js and with current framer.js.

This looks ok to me, would it be possible for you to add some tests?

Sure, give me a day or two.

One test case requires the TextLayer's parent to be Screen and to check the resulting width = Screen.width - padding.left - padding.right.
Is there a hardcoded Screen.width or how am I supposed to test that, @nvh?
Thanks for taking the time!

Sorry for not getting back to you sooner, but in the tests the screen size is defined by the test runner and fixed to {width:400, height:300}

Totally forgot about about this! Sorry, @nvh !

No worries at all! The new TextLayer should fix it :)


Add POD_NAME and NODE_NAME env variables to cassandra container

What this PR does:
Adds POD_NAME and NODE_NAME env variables to cassandra container
Which issue(s) this PR fixes:
Fixes #472
Checklist

[ ] Changes manually tested
[x] Automated Tests added/updated
[ ] Documentation added/updated
[x] CHANGELOG.md updated (not required for documentation PRs)
[x] CLA Signed:  DataStax CLA

I added a unit test, the same way that initContainer EnvVars are checked.


Expose allowPortReuse as a configuration option (#1158)

Description

Motivation and Context

How Has This Been Tested?

Checklist:

[ ] I have submitted a CLA form
[ ] If applicable, I have updated the documentation accordingly.
[ ] If applicable, I have added tests to cover my changes.

Codecov Report

:exclamation: No coverage uploaded for pull request base (issue.swift4@f9e8216). Click here to learn what that means.
The diff coverage is 100%.

@@               Coverage Diff               @@
##             issue.swift4    #1165   +/-   ##
===============================================
  Coverage                ?   90.53%
===============================================
  Files                   ?       36
  Lines                   ?     1860
  Branches                ?        0
===============================================
  Hits                    ?     1684
  Misses                  ?      176
  Partials                ?        0

Flag
Coverage Δ

#Kitura
90.53% <100%> (?)

Impacted Files
Coverage Δ

Sources/Kitura/Kitura.swift
100% <100%> (ø)

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 f9e8216...b17c996. Read the comment docs.


Probably a bug in RGBImgPartialObsWrapper

When using RGBImgPartialObsWrapper I get an error:
 File ".../lib/python3.7/site-packages/gym_minigrid/wrappers.py", line 200, in __init__
    obs_shape = env.observation_space['image'].shape
TypeError: 'Dict' object is not subscriptable

I think it should be
obs_shape = env.observation_space.spaces['image'].shape
instead of
obs_shape = env.observation_space['image'].shape
https://github.com/maximecb/gym-minigrid/blob/1e8b22e92b02a23fb4f85e0509815a41693aee75/gym_minigrid/wrappers.py#L200

It seems that both ways work, but I will change it just to make it consistent.


Fixed string replace in events.

pscripted code read:
else if (_pyfunc_op_equals(selector, "*")) {
            t = "Invalid connection \"%s\" because %s is not a tuple/list.";
            err_3 = new Error('RuntimeError:' + (t % [obname_full, obname])); err_3.name = "RuntimeError"; throw err_3;

Which raised a NaN error on Chrome when trying to print this:
"Invalid connection volumes* because volumes is not a tuple/list."
It was instead doing this (in the js console):
t = "Invalid connection \"%s\" because %s is not a tuple/list."; # "Invalid connection "%s" because %s is not a tuple/list."
t % [obname_full, obname]  # returns NaN

This should fix this error.

If only flexx supported formatting strings using .format()...

If only flexx supported formatting strings using .format()...

That should be doable, by implementing a JS variant of format(). The current formatter is implemented by the transpiler. Maybe even better would be to support f"haha {some_var}".

The current formatter is implemented by the transpiler.

Arg, yes, and that's why the error was there, because the transpiler is not smart enough to know what t is.

Thanks!


add htmlEntryPoint option to transformer

fixes https://github.com/dart-lang/initialize/issues/10

lgtm

submitting for now, we can revisit the allowing entry points in different folders thing in a later cl if its needed


Refine usage of 'entry points' to 'console scripts'.

I suggest this change to use the more precise terminology of "console scripts", the specific form of entry points that pipx exposes. I don't feel strongly about it, but I do think it helps to be more precise here for clarity and to avoid perpetuating the perception that entry points and console scripts are synonymous.

I now understand that the readme needs to be updated in two places, first in the template, then run the generator, so I manually ported the change to the template in this PR.

I think the entry point terminology is important to keep because it illustrates the idea that the user can enter the Python code through the terminal. pipx focuses on a certain type of entry point, the "console script". It is precise and accurate to call them "console script entry points". Can it be changed to that?


Add progress bar update to copy process

In Maya having a progress bar update for copying processes would help users gauge how long the copy will take, and that the copy is running.

This is fixed here
https://github.com/louisVottero/vtool/pull/387


Send ONE alert when many or all fail. or set one alert if many or all fail

📑 I have found these related issues/pull requests
this part is good
🏷 Feature Request Type
Settings
🔖 Feature description
Example, I have hundreds of monitors. Most are set to send an SMS / Text on failure to multiple people. So, if say the internet goes down, most all the monitors will fail and want to send SMS alerts to 10 or more people. So, 2800 monitors out of 3230 end up sending SMS alerts to 10 people. So that is 28,000 SMS messages being sent at a cost of 2cents ea. It's not just the cost, its the " Cry wolf" issue I want to avoid. If someone gets 2800 SMS alerts all at once, they'll ignore or " its just crying wolf"
✔ Solution
The ability to set a limit on notifications or a way to "group" monitors so that if XX fail at same time to only send ONE notification.
And check internet ( maybe ping a public ), if the internet is down, only monitors with " internet " enabled will send notifications. So, if 2800 monitors all fail AND internet connection is also = FAIL, then those notifications will be sent as one alert or none.
Or maybe you all already have a solution on the way?
❓ Alternatives
No response
📝 Additional Context
Basically, when XX or more monitors of a specific group fail within XX seconds of each-other, set to only one notification.  ( XX = a user defined )

" Cry wolf" issue

Does not localise well. What do you mean here?

Send alert if ANY fail

Please use a group and only notify if the group goes down.

Send alert if MANY/ALL fail

Tracked in #3387 and related issues
Requires #4395 to be merged first

thanks for the reply. I should have been more clear.

" Cry Wolf" is a term used to describe constant false alarms, to the point that those tasked with listening to said alarm ignore future alerts.    Then, late that night, she is approached by a REAL wolf! A hungry big scary wolf!!  She yells " WOLF!! " " WOLF!!".. Yet, nobody shows. Not one person in the town responds. They all figure its a false alarm, that she is calling out "wolf" to mess with them.  Her dead tore up body is found the next day.

Please use a group and only notify if the group goes down.

Thanks, again I should have explained it better.
I have 3000 monitors that each is set to " notify" ~ 10 people via SMS/TXT.  So, if say the internet goes down where my Kuma is, Kuma will "see" all 3000 monitors down. It will then generate 30,000 SMS messages and send them all once the internet returns.  This is a " false " failure, as none of the monitors actually went down. ( Yelling Wolf).  And the 10 people assigned with getting the alerts now have ~3000 SMS messages pounding their phones (45 to 70 min of non-stop texts). So, understandably this would greatly concern them, as it would appear the whole system just turned in to scat. ( Wolf Scat to be exact :) ). And now 8 to 10 of these techs are in panic mode, running around, calling around, logging in to systems and generally in a rushed panic. Calling the CEO and CFO at 3AM to let them know its all messed up, EVERYTHING is messed up! We have to get to the office ASAP.  Then, we discover it was just an internet hiccup, and everything is fine!
What do you think will happen the next time the internet goes out, or someone unplugs a switch to the Kuma Or any other local issue that would cause Kuma to send alerts for everything?  Eventually, those tasked with getting the SMS/TXT will ignore it. And that one time, that one time everyone elected to ignore as its probably a "cry wolf" thing. Meanwhile, the datacenter is being fanned with wolf scat. The actual wolf scat hitting the fan and spraying all over.
What I'm looking for is kinda opposite of what you suggested. I'm looking for a solution that will remove false alerts.  So, lets say if 10 or more concurrent alerts are detected, it could be a false alarm. Or maybe have a way to group multiple alerts?  So instead of sending 10 SMS, group them up and send one master alert?  Or perhaps a setting that confirms internet or "local up" by a ping. So that the internet goes out, and 3000 monitors also go out ( because they cant reach target with no internet), the system will not send SMS alerts. Perhaps a 2nd method would be used, like email.
I know this long read, sorry. I'm just trying to figure out how to best explain the issue. And I don't have a solid solution. :)

I think for your usecase, putting everything into one group and only notifiying for the group is reasonable.
This way, you will get a notification if something in the group goes down.
I would suggest dialing in the retry settings until the false-positives are acceptable.
What you are requesting is tracked in these issues (you can subscribe to them or ):

alert if X fail: https://github.com/louislam/uptime-kuma/issues/3562
alert if all fail: https://github.com/louislam/uptime-kuma/issues/3387
alert if only if internet is up: https://github.com/louislam/uptime-kuma/issues/1089

As said above, work in this area needs previous work to finish

https://github.com/louislam/uptime-kuma/pull/4395
#4500

=> closing as a duplicate, lets continue any discussions there ^^

[!NOTE]
I am also going to question your core problem (sounds like a XY-Problem to me)..
So you don't have an escalation policy set up and just ping all 10 engineers..
=> would stetting up an escallation policy via Grafana OnCall or similar not be a better choice?
You could then escalate based on your business needs. Calling the CEO and CFO at 3AM can also be done for critical outages or security incidents as a last step in the policy...

[!TIP]
About your 3k monitors: Please be aware of the performance issues in v1. See #4500 for further context. Sharding might be nessesary.


SemanticChunker : Feature Addition ("Semantic Splitting with gradient")

SemanticChunker currently provide three methods to split the texts semantically:

percentile
standard_deviation
interquartile

I propose new method gradient. In this method, the gradient of distance is used to split chunks along with the percentile method (technically) . This method is useful when chunks are highly correlated with each other or specific to a domain e.g. legal or medical. The idea is to apply anomaly detection on gradient array so that the distribution become wider and easy to identify boundaries in highly semantic data.
I have tested this merge on a set of 10 domain specific documents (mostly legal).
Details :
- Issue: Improvement
- Dependencies: NA
- Twitter handle: x.com/prajapat_ravi
@hwchase17

@baskaryan two small nits, and even though he changed function signature, it only gets called in class and he updated that call

@baskaryan Please review this. Let me know if there is any conflict or issue.


[DML] ReduceMean can't support empty axes {} when keepDimensions == false

DML doesn't support reduceMean with keepDimensions == false, it always keep dimensions. So I must manually remove the reduced dimensions in implementation. While by this way, if axes is empty which means reducing all dimensions according to reduceMean Spec, the output dimensions will be {1}. DML can not Reinterpret( just like reshape) a node for empty shape{}.

We don't check output shape now, {} and {1} are both right, close this issue.


When clicked, 'style' options not displayed

Click on Styles > should show options.
Currently doesn't display options.

The pop-up shows up but not fully visible. It's based on "the div with the tl-container className" (via Discord)

Current workaround is to leave space on the right for that Styles popup


Have MET Cyclone check for missing values in TC data

Our METplus-based TC verification data has been evading our missing value check in METexpress. In most METplus output, missing values are represented by "-9999", but in the TC output, they're "NA". This means that bad data is getting through our checks and is being used by the app. We need to check for NAs as well.

This is done.


Add LiveThreadContribution class and add_update() method

Feature Summary and Justification
This feature provides intaface to POST /api/live/thread/update which adds an update to the live thread.
References

https://www.reddit.com/dev/api#POST_api_live_{thread}_update
#676 - feature request for reddit live
https://github.com/nmtake/praw/commit/e147a37#commitcomment-19895733 - API design discussion

Updated.

Thanks!


[New Explainer Proposal] Permission request purpose

Provide a purpose string that explains to the user why the web app needs access to Web APIs.
Something like:

See https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources?preferredLanguage=occ#3037322 for more info.

The purpose strings can be static, stored in e.g. manifest.json and dynamic (context-based), e.g.:
navigator.permissions.query({ name: "geolocation", purpose: "Your location is used to call a taxi" })

This is something we’ve discussed at length at various times over the years. This is not something I expect to happen because it would enable sites to inject untrusted content into a trusted interface. That’s a huge security issue. Instead, you should manage the expectations of your users as to how the permission would be used within the app UI before you make a request for the permission.
@melanierichards @ericlaw1979 Do you have anything to add?

Ok, web apps can just lie. Or do one thing (that they explained in the purpose string), but also do another evil thing on the side. But they can lie in custom context within the app UI before permission request too.
I believe that permission request purpose strings will improve UX by providing the unified consistent look.
From what I saw, many web apps simply don't provide any context at all. Or block the user – don't provide the option to cancel an educational UI flow related to permissions.
Also, I believe it improves the DX, because many developers don't provide permission request context, because this requires creating custom UI screens, etc. The purpose strings should simplify this.

This is something we’ve discussed at length at various times over the years.

It would be interesting to read the materials of these discussions (pros and cons).

@b1tr0t WDYT?

I share the concerns Aaron identified.  I'm inclined to think that if apps do a good job of asking for user permission in context (rather than, say, on page load), then the purpose of the request should be obvious.
Even if we could find a way to safely display a string, I think it's better UX for apps to focus on making the need for the permission glaringly obvious in the context of the user's use of the app.

It would be interesting to read the materials of these discussions (pros and cons).

The last email conversation I had on this was mid-2018. For the record, at the time I was proposing this 😉.
My pitch (abbreviated):

What do you think about enabling developers to specify a string (probably with a max length) associated with specific permission request types (e.g., notification, geolocation, camera, etc.) so they can provide context around how this info is going to be used. Maybe with an optional link that could take users to documentation like their privacy or data retention policy.
Instead of

Maybe

Thoughtful responses:

Because there’s company branding on this UI element, we should declare that “we don’t own this text” similarly to confirmation dialogs (e.g., “This site says, ‘String passed to window.confirm’”)

It sounds like a great feature for web devs, but also a great way to enable new security/privacy attacks….
Today, this is enabled by allowing sites to know whether permissions are enabled which they can use to alter the web content to prompt users to allow permissions.

My response:

I’m confused as to how this would enable new attacks though.
In most cases, the prompt comes the first time the site attempts to access the API (camera, location, etc.). This may be unified if the Permissions API moves forward, but from a security standpoint, none of the current mitigations would be lost. This just allows devs to add extra context. And, incorporating the idea of a preface that (again) states the domain name, the request becomes about as transparent as we can possibly make it. Additionally, almost all of these APIs are HTTPS only. And most follow same-origin rules too, right?
I can understand that allowing a string for context could encourage black hats to attempt to phish users, but if the current phrasing remains intact and we added an additional caveat that “domain.tld says: THE STRING CONTENT” before again repeating the domain.tld in the query as to whether permission should be given, the only folks who would be fooled would be the same folks who aren’t paying attention to the current prompt anyway. Am I missing something else?

Another response:

It’s pretty standard security practice that you don’t want to allow a bad guy to control the text in your security or permissions dialogs. A bad guy can put it simply lie to the user about what they are saying yes or no to.
Typically therefore, you need to separate the interaction into two steps. The first step, fully in the control of the app/site, explains to the user what the permission is for, and asks them if they would like to grant it. The second step is the generic, boring, but completely accurate dialog that we provide.

I try an alternate suggestion:

Thank you for the additional context & background. I totally see where you’re coming from.
Would something like this present less of an issue?

I could see the “More details” link being implemented in one of two ways:

It opens a new windows/tab to a specified URL (instead of the previous string option)
It opens a UI modal in Edge containing the string content

The first option might be the best one as it would allow the developer to link directly to their privacy policy section governing the use of this data.
I almost wonder if this sort of info would be a good potential addition to the Web App Manifest. Something like a request_permissions key containing an array of permission objects with url members. That could enable those links to be maintained separately from the JavaScript code (easing maintenance). The browser could reference the URLs from there.
Additional minor suggestions:

Bold the name of the site to make it stands out in the dialog
Adjust the wording to be a little more conversational

Some folks liked the idea and were open to exploration, but this reply pretty much ended my pursuit of this:

Realistically, two types of developers are going to use this sort of interaction. Folks who really care about UX and scammers. The folks who do care about UX are likely going to create their own modal like explanation about why they are about to trigger a native dialog, like they do today. A scammer wants to look as official as possible, and would love to be inside of the native dialog.

I’m not totally closed off to the idea; there may be value in exploring ways we could enable developers to express the reasons they have for wanting a particular permission, but in doing so we need to recognize that developers will absolutely abuse this functionality. And, knowing that, any move we make to turn something like this into reality needs to have a very clear means of indicating that the text provided by the developer may not be truthful.
It’s worth noting that I am still exploring the idea of enabling apps to enumerate the key permissions they need to function. That may be of interest to you as well.

Thanks for that @melanierichards.
I hope all of that helps you understand our position @FluorescentHallucinogen.
Closing this issue for now. Happy to re-open if someone comes up with a way to support the use case while still protecting users from abusive sites.

@aarongustafson Thanks for sharing https://github.com/MicrosoftEdge/MSEdgeExplainers/issues/401#issuecomment-719021036!
I think that permission request purpose strings may be useful for Install Time Permissions Prompt, because at the install time there is no any context yet (the purpose of the requests isn't obvious to user).
I like the idea of “domain.tld says: THE STRING CONTENT” to solve the problem of injecting untrusted content into a trusted interface.
@diekus cc.


Fix/wewe positions

Summary by CodeRabbit

New Features

Enhanced data fetching for liquidity pools and user positions with improved performance through concurrent operations.
Introduced caching for Uniswap fee percentage to optimize blockchain calls.

Bug Fixes

Improved error handling in asynchronous operations to ensure better stability and logging.

Documentation

Updated formatting of the WewePosition type for consistency with TypeScript conventions.

error building up

error building up

Fixed.  lets merge after the other guy #156


["Problem"]

want to update the link for the carpenter manuscript

https://journals.plos.org/plosbiology/article/comments?id=10.1371/journal.pbio.3001419


Remove smooth scrolling polyfill

Fixes #808. Removes the polyfill for smooth scrolling in Safari, as well as the code to manually handle clicks. We're just trusting the browser here.
New versions of Safari are still working through a few bugs in smooth scrolling, particularly when it comes to horizontal scrolling (overflow-x: hidden, etc.). But I don't think we face that problem with the page-navigation component. All of my testing thus far has been good.

From what I remember (from our flurry of building & UX testing on DCC site) - the smooth scrolling was a UX improvement for Safari that prevented sudden jumps when navigating the links.
Looking at your PR

All good!
This post discusses that improvement being added last winter! https://forums.macrumors.com/threads/apple-releases-safari-technology-preview-139-with-bug-fixes-and-performance-improvements.2332609/
Included in this release: https://developer.apple.com/documentation/safari-release-notes/safari-15_4-release-notes
(more comments here re: incomplete implementation of smooth scroll - https://stackoverflow.com/questions/72060377/smooth-scrolling-on-safari-15-4-breaks-scrolling-entirely)
We were aiming for vertical scrolling support.
Based on some old issues - I'm remembering that there was a UX situation of scroll working on some pages & not others - but I'm not seeing that behavior in Safari (desktop/phone) from your PR branch.
Another (common) testing condition would be "land on page, navigate to anchor" - which would really belong in the global properties for page rendering & not page navigation - and could possibly compete with back to top or other behaviors also playing with scroll.

@chachasikes Was your prior comment just for situational awareness or are you proposing a different solution?

Situational awareness & validating that it works.
Documenting which specific technology change went into effect that caused a change to a component in the Design System.


Network Icon

Describe the requested icon
An icon(s) to convey a conceptual network or an ethernet connection,
There could also be a slash or cross version to indicate a lack of connectivity, like wifi-x
Screenshots

graph, share-network, tree-structure do none of these work?

Though I don't think we have slashed versions of any of those.

They have some overlapping functionality, but it should also be able to convey the presence of an IP network or generic wired network

+1. Just to add context on the "existing alternatives" point: all the existing alternatives are either more generic than a computer network (graphs, tree structures) or have existing common semantics in software (the share icon) that would cause confusion.
I'm building developer tools, and I'm looking for a icon to illustrate "local wired network connection" specifically (as opposed to lots of other types of connections and devices). I don't have an immediate need for a slashed version but I can easily imagine use cases in future.
An icon to illustrate this more precisely would be great. I think font-awesome's take (three boxes all connected to a wire along the middle) is good, and very similar patterns seem to be used in most icon sets elsewhere (Lucide, Iconoir (under 'Connectivity'), Google Icons). I'd love to see a Phosphor version.

Totally. We're including true network and network-slash in the upcoming release.


Fix sonar and refactor

Codecov Report
Patch coverage: 100.00% and project coverage change: -0.05% :warning:

Comparison is base (3a5bded) 41.93% compared to head (14ab89a) 41.88%.
Report is 1 commits behind head on main.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #605      +/-   ##
==========================================
- Coverage   41.93%   41.88%   -0.05%
==========================================
  Files          19       19
  Lines        1240     1239       -1
==========================================
- Hits          520      519       -1
  Misses        662      662
  Partials       58       58

Files Changed
Coverage Δ

internal/handler/wallet/get_all_assets.go
56.00% <100.00%> (-0.87%)
:arrow_down:

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Replace cbindgen with cargo-c

cargo-c was written for rav1e’s usecase of generating and installing a C ABI the proper way, with a static library, a shared library, a pkg-config file, and the include files at the right location, and pathfinder has the exact same needs.
This requires the user to use a different command from the usual cargo build, which is why I added a README.md.
Ideally we’d add a path prefix for the include directory, to allow multiple versions to be installed at the same time until we freeze the API, but cargo-c doesn’t support it yet.

This looks OK overall, except renaming the crate name. I filed https://github.com/lu-zero/cargo-c/issues/83.


Layer onMouseOut Event Behavior

In a scenario where I have a parent layer with a child layer contained inside it, the parent layer onMouseOut event is triggered every time the child layer is entered and left (note at no point is the parent layer being left).  This appears to be incorrect behavior to me.
As an example, here's some code that with a parent and child layer and onMouseOut events:
child = new Layer
	x: 50
	y: 50
	height: 100
	width: 100
	backgroundColor: "blue"

parent = new Layer
	height: 200
	width: 200
parent.addChild(child)

child.onMouseOut ->
	print "left child"
parent.onMouseOut ->
	print "left parent"

(BTW if I remove the child.onMouseOut event, the behavior is corrected, so it seems that child event could be related/the cause of the issue.)

Would someone be able to verify whether this is a bug or expected behavior?


buildStatic and AMD Async requires

I have a module that I'm bundling as an AMD standalone script with builder.buildStatic.
This module has its dependencies in the define section, but it also has factory methods that use RequireJS async requires as it's mentioned in systemjs/systemjs#404.
The code looks like this:
define(['depA','depB'], function(fnA, fnB) {
  var myModule=function();

  myModule.thingFactory=function(attrs, callback) {
    require(['depC'], function(fnC) {
      callback( new fnC(attrs));
    });
  };

  return myModule;
});

I know that these kind of requires are not included as dependencies, so I'm bundling arithmetic using 'myModule.js + depC.js' as source expression.
Now, if I use bundle the resulting file has a named define  for depA, depB and depC, which is good. For example, depC is defined as:
(function() {
  var _removeDefine = System.get("@@amd-helpers").createDefine();
  define("depC",[...],function(...) { ... });
  _removeDefine();
})();

So when I call the factory and require(['depC'],fn()) happens, it has already a definition of depC in memory, to avoid requesting depC from the filesystem.
However, this script will also be used with RequireJS, so I can't rely on System.get usage.
If I use buildStatic the resulting file doesn't need to be run in a SystemJS enabled environment, but  it mangles the dependencies names:
(function() {
  var _removeDefine = $__System.get("@@amd-helpers").createDefine();
  define("2", [...],function(...) { ... });
  _removeDefine();
})();

But the require call in the factory is still asking for 'depC', and will request it from the filesystem since it doesn't know that it should have required 2.
So... is there a way to avoid buildStatic renaming dependencies, or a way to have the dependencies rewritten inside async requires as well? I've tried with named and anonymous modules, and it's the same.

This is the way static builds are designed to work. They don't share their registry at all, so it's just as if you wrote a large global script with a dynamic require in the middle.

I get it, and of course it makes sense. However, since nested/async dependencies are not inlined, their manual inclusion should preserve an identifiable name.
Since they get renamed as numbers or single characters, any remaining runtime require call won't be able to find the resource.

The point is that depC in the static bundle does not exist any more as an individual module - it has been statically compiled. Normal bundles are the only way to preserve the record that there ever was a depC in the bundle itself.

That would be fine if dynamic requires or imports were rewritten to the compiled dependency name. Either way it should make the same name replacement, don't you think?

So do you think depC should be contextually normalized in place as part of the static build?

Well, I guess it's not that straightforward. The compiler would need to know if the required modules are defined for the current module (or the current context if it makes more sense).
From my early experiments, the normalization for depC would be available in cache.encodings, but I don't fully understand if at that point it is already too late to perform meaningful replacements for nested requires.
,

@amenadiel so are you saying depC in your case is already contained in the static bundle?

Yes. I'm calling
builder.buildStatic('myModule.js + depC.js', 'myModuleBundle.js').then(...)

But the bundled depC gets renamed when I build.

Ok, I do think to deal with dynamic requires properly in static builds we should trace and normalize those dynamic requires as a natural part of the tree. I've created a feature task for this at https://github.com/systemjs/builder/issues/452.
Then once we've got that in place, it would be easy to see that the dynamic require is made to something already in the bundle itself and replace it with the right stub.
That said, I'm not sure if this is something that should be supported actually. Dynamic requires are as described, dynamic. They resolve in the target environment. Just because you have a require(['depC']) in your bundle, doesn't mean you can't map depC to something else in production.
So I'm actually tempted to say this is a wontfix after all.

You're right... If a sfx bundle can't register modules into the global loader, then you can't get a grab of those  internal modules through an async require.
As a matter of fact, RequireJS has given me a lot of headaches because bundles pollute the global requirejs instance, and stubbed loaders in them override your defined loader plugins.
In the light of the tradeoff, I'd rather keep things as they are instead of opening the door to define nightmares.

Sure, I'll close this to track the other feature, although that isn't being prioritised currently.


Update readme

Summary of PR
Rename desktop to presenter
Time spent on PR
5 mins
Reviewers
@Harjot1Singh
NB
@Harjot1Singh need to fix circle ci

@bhajneet ping on this one


SSL error on kpm deploy

Trying to do a deploy and it looks like it's complaining about the SSL cert?
kpm deploy kpm.sh/stackanetes/stackanetes --namespace openstack --variables stackanetes/parameters.yaml
usage: kpm [-h]
{inspect,show,run-server,jsonnet,logout,plugins,helm,generate,pull,deploy,list,remove,delete-package,version,exec,push,new,login,config,channel}
...
kpm: error:
message: 'HTTPSConnectionPool(host=''kpm.sh'', port=443): Max retries exceeded with url: /cnr/api/v1/packages/stackanetes/stackanetes/default/kpm/pull?format=json (Caused by SSLError(SSLError(1, u''[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)''),))'
pip show kpm | grep Version
Version: 0.25.0

Same here...
I suppose the project is dead, right?

@makomatic  Yeah :smile:, if you want actively maintained and developed Openstack on Kubernetes use: https://github.com/openstack/openstack-helm

Already found it in the meantime, thx :)

@PiotrProkop can you add info about helm into Readme? :P

Good idea, will do!

@makomatic used openstack-helm and it works as expected


SScript closed down?

Describe your problem here.
The source code isn't compiling, and it says "SScript is not available, thanks to everyone for their support."
If SScript is down, how am I supposed to compile the code?
Are you modding a build from source or with Lua?
Source
What is your build target?
Windows x64
Did you edit anything in this build? If so, mention or summarize your changes.
no

just looked up to see what happened and there is no code now (in ALL versions). have NO FUCKING IDEA what is happening now
btw, i have 5.1.0, can drop you if you need

use experimental branch bro

Experimenting always kills in the long run, my friend. https://github.com/SScript-Guy/SScript-new/

git switch experimental
haxelib install BrewScript

git switch experimental haxelib install BrewScript git pull lime test windows

Majority opinion isn't always the correct opinion.

Majority opinion isn't always the correct opinion.

said statement also applies to you

I'm not the one charging the light brigade with his ragtag band of newts.

@MemeHovy how would i do that?

by going into HScript.hx and changing it from there

I cant find anythind that says SCall

Ctrl + f to search

got this
source/psychlua/HScript.hx:291: characters 9-16 : tea.SScript has no field destroy
source/psychlua/HScript.hx:286: characters 27-34 : Field destroy is declared 'override' but doesn't override any field
source/states/PlayState.hx:3161: characters 17-34 : psychlua.HScript has no field parsingExceptions (Suggestion: parsingException)
source/states/PlayState.hx:3161: characters 56-73 : psychlua.HScript has no field parsingExceptions (Suggestion: parsingException)
source/states/PlayState.hx:3164: characters 25-42 : psychlua.HScript has no field parsingExceptions (Suggestion: parsingException)
source/states/PlayState.hx:3164: characters 15-42 : You can't iterate on a Dynamic value, please specify Iterator or Iterable

replace destroy with kill and remove the override on it, then replace parsingExceptions with exceptions

how do i remove the override

is this the override
#if (SScript >= "3.0.3")
override public function kill()
{
	origin = null;
	parentLua = null;

	super.kill();
}
#else
public function kill()
{
	active = false;
}
#end

not that, the destroy function

i dont see anything other than that after i had replaced destroy with kill

what if you just copied your HScript code and i put it in so it can work

i've already tried
github reporting is ass because it just brings you to a dead end

it's worked in my favor before

lolololol whatever
i'm not doing this for clout
i'm not gaining anything out of this

@MemeHovy Can you send me a copy of your HScript code so I can finally fix this?

@TerminallyAwesome use the latest experimental branch

where do i find that?

https://github.com/ShadowMario/FNF-PsychEngine/tree/experimental it shows CI is working

would the file just be called setup?

it's in the main folder

of what?

haxelib git SScript https://github.com/crowplexus/SScript

of what?

nevermind

one more issue
source/psychlua/CallbackHandler.hx:54: characters 18-33 : Class<llua.Lua_helper> has no field sendErrorsToLua

new error @MemeHovy
Class<llua.Lua_helper> has no field sendErrorsToLua

haxelib git linc_luajit https://github.com/superpowers04/linc_luajit master

it didnt work and i forgot the full error
source/psychlua/CallbackHandler.hx:54: characters 11-26 : Class<llua.Lua> has no field sendErrorsToLua

you need to override the branch

it didnt work and i forgot the full error
source/psychlua/CallbackHandler.hx:54: characters 11-26 : Class<llua.Lua> has no field sendErrorsToLua

haxelib remote linc_lua
haxelib git linc_luajit https://github.com/superpowers04/linc_luajit master
you have to remove it first so it ensures its on the correct version

how do you override the branch?

hit y

what now?

try compiling again

didnt work, same error

try somethin

you need to do what was shown btw, not just install it from haxelib instead of github

I just got it to work and it wasnt that. the file "CallbackHandler" had a typo and I fixed it

but thank you @MemeHovy

but thank you @MemeHovy

np

git switch experimental haxelib install BrewScript git pull lime test windows

Okay, so, I know this is old, but, How do I execute those?

open a command prompt from navigation bar

please help how to fix this error


Import Energy Data from Emerald

Checklist

[X] I have filled out the template to the best of my ability.
[X] This only contains 1 feature request (if you have multiple feature requests, open one feature request for each feature request).
[X] This issue is not a duplicate feature request of previous feature requests.

Is your feature request related to a problem? Please describe.
Would it be possible to gather the other information available in the Emerald app under "Heat Pump Trends" and "Energy Consumption"? I've attached a screenshot of my app showing energy consumption across the day.

Describe the solution you'd like
Entities showing daily energy usage, broken down by the hour if possible. The cost entities are a bonus, but not required as the data can be calculated in the Energy Dashboard in Home Assistant.
Describe alternatives you've considered
Nil available
Additional context
Happy to test if required!

Thanks @deadhurricane interesting idea. I'll need to take a look at if this is possible to retrieve easily.
For what it's worth I'm calculating my energy usage for my system entirely in Home Assistant. It's somewhat crude, but I imagine that Emerald are calculating things in the same way on their end (it seems unlikely they'd have an actual energy meter in the unit.)
In case it helps, I'll give you my setup:

I have a Template Sensor helper (I call it "HWS power usage") with the following template:

{% set heating = (state_attr('water_heater.emerald_xxxxx', "current_temperature")|float(0) < 59|float(0)) %}
{% if is_state('water_heater.emerald_xxxxx', "heat_pump") and heating %}
800
{% elif is_state('water_heater.emerald_xxxxx', "performance") and heating %}
2400
{% elif is_state('water_heater.emerald_xxxxx', "eco") and heating %}
600
{% else %}
0
{% endif %}

I then have an Integral sensor helper (I call it "HWS total power usage") with the following settings:
Left riemann sum
Precision 1
Max sub-interval 15mins
Unit of measurement Wh

I'm then able to add this to the Home Assistant energy dashboard like so:

For my use case I'm with Amber so I can't use the Emerald app at all for tracking costs. That said, appreciate that everyone has different needs and I'll have a look at what is involved in implementing the app version.

What an elegant solution @ross-w, thanks for that! I've got the non-element version of the heat pump, so my boost mode will only be 800W according to the spec sheet. I've adjusted the template sensor accordingly.


Out of memory: pruning after repo v2 upgrade and forgetting snapshots

Output of restic version
What backend/service did you use to store the repository?
Problem description / Steps to reproduce

Expected behavior

Actual behavior

Do you have any idea what may have caused this?

Did restic help you today? Did it make you happy in any way?

duplicate of #4633


Cannot merge nodes on a certain road

It is no longer possible to delete nodes by dragging one node on top of another one on a certain residential road:
https://www.openstreetmap.org/edit#map=17/9.48418/100.02637
The nodes of the unclassified roads nearby can be merged as usual.
Browser: Chrome V72.0.3626.109

@rene78 Thanks for reporting this! I'm closing this as a duplicate because I think #5942 is the same thing, but your description and link helped me figure out what they meant 😀


RPA Challenge - code design and optimisation to run 20-30X faster

Hey,
this is not really an issue, more a proposal. If this shouldn't be here, I am sorry.
My "issue":
I finished the RPA Challenge (www.rpachallenge.com) with Python RPA and I thought it could be interesting for many People (who are relatively new to coding and XPath) because you have to use relative XPath Code.
My score is not the fastest and Maybe someone has interesting ideas how to improve the time.
I added the Code and the snapshot of the time.
I do not know how to upload Jupyter Notebooks.
And Maybe this RPA Challenge could also be included in the example package for newbies to test their understanding of XPath.
Just a few thoughts..

Best regards
Pierre

Hi Pierre, thanks for posting and sharing this! Yes, this post should be here and I appreciate it :)
Can you paste the code here? Either copy and paste (you can put code blocks here by putting 3 backticks ``` at the top and below of your code block). Or you can drag and drop your notebook file into the text box here to attach your notebook.
# sample

Although this tool is designed to simulate a user action, including the usual user speed in using websites, I'll want to take a look at how could the code be optimised to run this at the fastest speed, and perhaps suggest some hacks that could push the limits further, for the fun of it.
And yes, this makes good interesting example to new users who found this RPA package. Will figure out a way to add this example into the readme after we see how it can be optimised.

Hey kensoh,
this is the code block.
Just to be safe, I also added the txt file.
"""import rpa as r
import pandas as pd
df = pd.read_excel("challenge.xlsx")
df['Phone Number'] = df['Phone Number'].astype(str)
r.init(True,True)
r.keyboard("[alt][space]")
r.keyboard("x")
r.url("http://rpachallenge.com")
r.click("/html/body/app-root/div[2]/app-rpa1/div/div[1]/div[6]/button")
for i in range(len(df.axes[0])):
r.type("//LABEL[@_ngcontent-c2=''][text()='First Name']/following-sibling::INPUT", df["First Name"][i])
r.type("//LABEL[@_ngcontent-c2=''][text()='Last Name']/following-sibling::INPUT", df["Last Name"][i])
r.type("//LABEL[@_ngcontent-c2=''][text()='Company Name']/following-sibling::INPUT", df["Company Name"][i])
r.type("//LABEL[@_ngcontent-c2=''][text()='Role in Company']/following-sibling::INPUT", df["Role in Company"][i])
r.type("//LABEL[@_ngcontent-c2=''][text()='Address']/following-sibling::INPUT", df["Address"][i])
r.type("//LABEL[@_ngcontent-c2=''][text()='Email']/following-sibling::INPUT", df["Email"][i])
r.type("//LABEL[@_ngcontent-c2=''][text()='Phone Number']/following-sibling::INPUT", df["Phone Number"][i])
r.click("/html/body/app-root/div[2]/app-rpa1/div/div[2]/form/input")
r.snap("/html/body/app-root/div[2]/app-rpa1/div", "score.png")
r.wait(10)
r.close()"""
The most time consuming part is the typing. Like you said it simulates user action. One possibility which came to my mind is to "copy paste" every single entry, thus we dont do typing. But maybe hard to code... not sure...
RPA_challenge.txt

Thanks Pierre, I'll have a look!
Copy and paste is easy, something like below would work, just need to make sure the element is in focus. I'll be trying that out. Also, the default design is to simulate normal user reaction time, thus the cycle time for TagUI is between 1-2 seconds per action when communicating with the web browser or using visual automation. This cycle time can be hacked to be set to 0 and may be able to speed things up much faster, depending on the automation scenario.
r.clipboard('text to type')
r.keyboard('[ctrl]v')

Reducing the cycle time sounds really interesting.
Is that something what only can be achieved by adjusting the source code or can I do this too?
Copy pasting would only be faster (I guess) if we can copy to clipboard without focussing on the excel sheet. Whats in my mind: read pandas --> entry i --> clipboard entry i --> click xpath xy --> paste entry i
But not sure if this is possible and if that would be faster at all.

The source files for TagUI has to be hacked. Will see if that is possible to do the hacking of source files as part of the Python code. But before that, some work-in-progress code -
import rpa as r
import pandas as pd
df = pd.read_excel("challenge.xlsx")
df['Phone Number'] = df['Phone Number'].astype(str)

def paste(element_identifier, text_to_paste):
    r.click(element_identifier)
    r.clipboard(text_to_paste)
    r.keyboard('[cmd]v')
r.paste = paste

r.init()
r.url("http://rpachallenge.com")
r.click('//*[text()="Start"]')

for i in range(len(df.axes[0])):
    r.paste('//*[@ng-reflect-name="labelPhone"]', df["Phone Number"][i])

    r.type("//LABEL[@_ngcontent-c2=''][text()='First Name']/following-sibling::INPUT", df["First Name"][i])
    r.type("//LABEL[@_ngcontent-c2=''][text()='Last Name']/following-sibling::INPUT", df["Last Name"][i])
    r.type("//LABEL[@_ngcontent-c2=''][text()='Company Name']/following-sibling::INPUT", df["Company Name"][i])
    r.type("//LABEL[@_ngcontent-c2=''][text()='Role in Company']/following-sibling::INPUT", df["Role in Company"][i])
    r.type("//LABEL[@_ngcontent-c2=''][text()='Address']/following-sibling::INPUT", df["Address"][i])
    r.type("//LABEL[@_ngcontent-c2=''][text()='Email']/following-sibling::INPUT", df["Email"][i])
    r.type("//LABEL[@_ngcontent-c2=''][text()='Phone Number']/following-sibling::INPUT", df["Phone Number"][i])
    r.click('//*[@value="Submit"]')

r.snap("/html/body/app-root/div[2]/app-rpa1/div", "score.png")

r.wait(10)
r.close()

The fastest way will be to manipulate the HTML DOM itself using JavaScript. That is possible using dom() function to modify the element text directly. But I will not go there in order to achieve fastest, because that is not even RPA anymore, it's manipulating webpage directly using JavaScript code.

Ok I tried it and unfortunately it doesnt fill in the fields when I execute it.
It just runs over the fields but does not type anything in; at least in my case.
Already tried to switch from cmd to ctrl but did not help.
Best regards

Oh no, it is not tested code, still work in progress. Above should fail, because init() has to be init(True) in order to use the low-level keyboard and mouse automation.
I'll update again when I have a good solution. If I can, I'll post a standard solution for this tool, and another solution for optimised timings 😄

Ouh yes I also tried to turn it on, otherwise it gave an error like you said.
Ok I am really excited to see the code!! :)

The following code -
import rpa as r
import pandas as pd

df = pd.read_excel('challenge.xlsx')
df['Phone Number'] = df['Phone Number'].astype(str)

r.init()
r.url('http://rpachallenge.com')
r.click('//*[text()="Start"]')

for i in range(len(df.axes[0])):
    r.type('//*[@ng-reflect-name="labelFirstName"]', df['First Name'][i])
    r.type('//*[@ng-reflect-name="labelLastName"]', df['Last Name '][i])
    r.type('//*[@ng-reflect-name="labelCompanyName"]', df['Company Name'][i])
    r.type('//*[@ng-reflect-name="labelRole"]', df['Role in Company'][i])
    r.type('//*[@ng-reflect-name="labelAddress"]', df['Address'][i])
    r.type('//*[@ng-reflect-name="labelEmail"]', df['Email'][i])
    r.type('//*[@ng-reflect-name="labelPhone"]', df['Phone Number'][i])
    r.click('//*[@value="Submit"]')

r.snap('page', 'score.png')
r.wait(10)
r.close()

Gets the following result -

It looks not viable to use clipboard to paste, because it requires clicking visually on the textbox. That takes time to click onto the text box. Let's see for above solution, after tuning how long it would take.

By tuning the default delay time between the tool and Chrome from 200ms to 0, the result becomes 12.6 seconds. Typing is still character by character but type very fast -

Your Xpath code is better (more efficient), did not know how to do it like that, just learned about the existence of Xpath few days ago.
Do you think it makes a difference if you use numpy instead of pandas or are both libraries exactly the same in terms of computer capacity and working speed?

Numpy should be faster than Pandas because Pandas uses Numpy. But the overhead should have little difference in this situation, because the execution time the delay is caused mostly by the automated actions on the web browser, not by accessing of Pandas data frame.
There is another tuning that can be done, to enter all text at one go. Let me see how that goes.

12 seconds :D that is amazing...
Can you share how you did this or is this related to years of experience of coding and nothing newbies could do?
I really apprecciate that you took the time to do it.. impressive.
I guess it will post it on LinkedIn when we came up with optimal solution (ok lets be honest, you are the one with the optimal solution) and mention you if thats okay for you.

Another result, 4.6s, by tuning the tool to type full text at one go instead of letter by letter -

Oh I created the TagUI tool, and RPA for Python is built on TagUI tool. So I know exactly where to hack to tune the performance. Sure, you can definitely mention me but that is optional.
Also, there isn't an optimal solution for this for fastest time. Because RPA for Python and TagUI are designed to mimic normal human user action, including the normal human reaction time. So the architecture was always designed for reliability and accuracy, never for speed. Thus with a lot of tuning it still cannot be as fast as some other tools with other design goals.

No words.......
I thought these pictures Ive seen on the internet were fake... but it is just brilliant knowledge about programming

The changes I made is -

in src/tagui_chrome.php, change $scan_period = 100000; to $scan_period = 0;
in src/tagui_header.js, change the sleep function header
function sleep(ms) {// helper to add delay during loops to
function sleep(ms) {return; // helper to add delay during loops
in src/tagui_header.js, look for function chrome.sendKeys, change

for (var character = 0, length = value.length; character < length; character++) {
chrome_step('Input.dispatchKeyEvent',{type: 'char', text: value[character]});}

to
chrome_step('Input.insertText',{text: value});};

The changes 1 & 2 reduce the delay between the tool to browser from 200ms (100+100) to 0ms. The change 3 changes the default typing behaviour from character by character to typing whole string at one go.

The location of the src folder and files depends on your operating system - https://github.com/tebelorg/RPA-Python/issues/61#issuecomment-532963541
For Windows, location of TagUI is %APPDATA%\tagui (%APPDATA% is usually C:\Users\Username\Appdata\Roaming)
For macOS / Linux it is in ~/.tagui folder (~ is the user home folder, eg /Users/username for mac).

Thank you kensoh, I will try it and am excited to see the magic happen!  Let me know if you run into issues tuning above hacks. :)

It worked and it looks just amazing!
Did not achieve 4 seconds because I am in the train right now but it was tremendously faster and looked like magic.

Thanks Pierre! Added to readme - https://github.com/tebelorg/RPA-Python#api-reference

Hi,
if anyone wants to run that above script file inside the .tag extension file. So is it possible?

Hi @92Ashutosh this script is a RPA for Python script in Python language. You can't run it with .tag extension using TagUI. But you can try rewriting the script in TagUI language.
To work with Excel files, you can use TagUI's py step or py begin / py finish steps to run Python code like above script and make use of the Python packages.
import pandas as pd
df = pd.read_excel("challenge.xlsx")
df['Phone Number'] = df['Phone Number'].astype(str)
r.init(True,True)
r.keyboard("[alt][space]")
r.keyboard("x")
r.url("http://rpachallenge.com")
r.click("/html/body/app-root/div[2]/app-rpa1/div/div[1]/div[6]/button")

for i in range(len(df.axes[0])):
    r.type("//LABEL[@_ngcontent-c2=''][text()='First Name']/following-sibling::INPUT", df["First Name"][i])
    r.type("//LABEL[@_ngcontent-c2=''][text()='Last Name']/following-sibling::INPUT", df["Last Name"][i])
    r.type("//LABEL[@_ngcontent-c2=''][text()='Company Name']/following-sibling::INPUT", df["Company Name"][i])
    r.type("//LABEL[@_ngcontent-c2=''][text()='Role in Company']/following-sibling::INPUT", df["Role in Company"][i])
    r.type("//LABEL[@_ngcontent-c2=''][text()='Address']/following-sibling::INPUT", df["Address"][i])
    r.type("//LABEL[@_ngcontent-c2=''][text()='Email']/following-sibling::INPUT", df["Email"][i])
    r.type("//LABEL[@_ngcontent-c2=''][text()='Phone Number']/following-sibling::INPUT", df["Phone Number"][i])
    r.click("/html/body/app-root/div[2]/app-rpa1/div/div[2]/form/input")

r.snap("/html/body/app-root/div[2]/app-rpa1/div", "score.png")

r.wait(10)
r.close()

Hi @kensoh,
I'm sorry to have to ask a probably simple but clipboard related question... I'm currently trying to do a simple copy and paste of a 5k long string (this is also about speed optimization). My code looks like this and is supposed to ask for a Google translation to test it:
def translator_rpa(text):     r.init(visual_automation=True)     r.url('https://translate.google.com/?hl=de&tab=TT&authuser=0#view=home&op=translate&sl=auto&tl=en&text=')     r.clipboard(text)     r.click('orig tlid-source-text-input goog-textarea')     r.keyboard('[ctrl]v')     #It works very slow     #r.type('orig tlid-source-text-input goog-textarea', text)     translation = r.read('result-shield-container tlid-copy-target')     r.close()     return translation
Unfortunately the click still works in the right field and any clipboard is filled correctly, but the ctrl v doesn't want to work... If i comment out r.close() and manually press ctrl v, it works...
What can be the reasion for this?
Many thanks in advance!

Hi @FabianSer oh I have a guess on what is the likely cause. Your r.click() step is clicking on the textbox using native web-based automation. So that does not guarantee that the focus is set on the Chrome browser. Try doing the click step using an image snapshot of the textbox instead.
Something like below. The first click will ensure that the Chrome browser is already in foreground and in focus. The second click on click to ensure the textbox is in focus. Both conditions are important to do a [ctrl]v, otherwise you may be pasting into some random app but not Chrome browser or not the text field.
r.click('textbox.png')
r.click('textbox.png')
r.keyboard('[ctrl]v')

Hi @kensoh
thanks for the super fast help! You are an extremely great help for me! As soon as I focus Chrome after the init, it works. So you are absolutely right with your assumption!
Unfortunately I haven't quite understood the picture yet. I have createt an snap as follow (before creation, I focused the browser):
r.snap('orig tlid-source-text-input goog-textarea', 'textbox.png')
If I use this png (which is completely white in this case), I get the message, that textbox.png cannot be used.
It would be awesome if you could help me!

Hi @FabianSer I see, try using the Windows Snipping tool to do the screenshot capture of the textbox instead. When you capture, capture a larger area than the textbox, so that it is unique to be matchable using computer vision, versus a blank text box which is hard to match on the screen.

Also, for Windows, if visual automation is cranky, try setting your display zoom level to recommended % or 100% - https://github.com/tebelorg/RPA-Python#rpa-for-python-snake

Hi @kensoh ! Thanks for your help. Even with the larger screenshot capture, it can't be found. I actually think that the file cannot be found. But the screenshot is in the same directory as my jupyter notebook...

No probs! Try providing the full path to the image file. Alternatively, do import os; os.getcwd(); to confirm whether is the active working directory for the Jupyter notebook. The active working directory I think may not be where the notebook is, but whether the jupyter` command is run to start the webapp for Jupyter notebook.

Guys, HI!
If I want to increase run speed for RPA outside browser, is it possible too? Im trying to do some automation outside my browser and its kinda slow...
Thanks in advance!

Other than the changes above - https://github.com/tebelorg/RPA-Python/issues/120#issuecomment-610532082,
Below are ways to increase speed for visual automation (desktop based automation) -

inside tagui/src/tagui_header.js, search and replace sleep(500) --> sleep(0)
inside tagui/src/tagui.sikuli/tagui.py, search scan_period = 0.5 and make it scan_period = 0

Above will reduce the intentional communication delay between TagUI and SikuliX engine from 1 second to 0 second. Ie shave off around 1s per action. Also, in above link, r.vision('Settings.MoveMouseDelay = 0') is mentioned which will let the mouse cursor 'teleport' to the target position on the screen instantly instead of taking 0.5 second to move there.
Lastly, instead of doing r.type() to type in character by character to some desktop app, you can consider using r.clipboard('long text') and r.keyboard('[ctrl]v') to paste the long string instantly into some textbox.
Above will speed up visual automation considerably, but I won't recommend. If automation is doing it faster than how a normal human user would, it increase the chance that some processes will fail. Because apps are tested against human users and not against consumption by the super-fast computer.
So doing it fast might not give enough time to trigger some events in the app to work correctly and introduce problems into the automated process. Since computer time has low cost, I normally recommend doing it at the normal human speed but being robust and stable, vs risking it failing and trying to debug.

Thanks for the information and advice! I'll sure keep it in mind.
It's a very nice piece of work you got here! Congratulations.

You're welcome, have fun! Do note that even with above tweaking, there will still be some lag to do computations on computer vision matching. The lag time could be a few seconds for an old computer. For newer computer this lag time is negligible.

Hi,
How we can we check for uncertain popups in our web automation?
Because during execution sometime popup exist and sometime not exist.
Maybe r.exist() works for it, But i don't  know exact synax for it .
can anybody help over that?

Hi @jshah3821 can you share more details on the popup? Is it a new tab or just a popup within the same tab?
One way could be adding extra step in between your steps to check if the popup has appeared, then handle accordingly. You can do something like below, and use r.timeout() to set a shorter time so you don't wait too long.
if r.hover('some element in the popup'):
    # do something

By tuning the default delay time between the tool and Chrome from 200ms to 0, the result becomes 12.6 seconds. Typing is still character by character but type very fast -

By tuning the default delay time between the tool and Chrome from 200ms to 0, the result becomes 12.6 seconds. Typing is still character by character but type very fast -

Hi, @kensoh
Actually, I just started with RPA but I have a good experience working with Python. I have a question that when I run my code it takes a lot of time to open chrome (my default browser is edge).
Below is my code, rpa code starts from line 5
def login(request):
d = request.META
username = d['HTTP_USERNAME']
password = d['HTTP_PASSWORD']
r.init(visual_automation = True)
r.url('https://github.com/login')
r.type('//[@id="login_field"]', username)
r.type('//[@id="password"]', password)
r.type('//*[@class="btn btn-primary btn-block js-sign-in-button"]', '[enter]')
r.close()
Also, Please share the relevant resources that I can study to get more in depth knowledge about RPA with Python.

Hi @tyagiabhinav999 can you try running again? The first time Chrome start may be slower to create the Chrome user profile used by the rpa package. If it is still slow, it might be some computer or company network specific settings that launches Chrome slowly if it is launched with websocket backdoor opened.
For visual automation mode True, it is slow because time is needed to load the OpenCV computer vision engine and Tesseract OCR engine into memory. If you don't need these features, do init() without the visual automation True.

The API section has a few examples and tips on using the package - https://github.com/tebelorg/RPA-Python#api-reference

Hi @tyagiabhinav999 can you try running again? The first time Chrome start may be slower to create the Chrome user profile used by the rpa package. If it is still slow, it might be some computer or company network specific settings that launches Chrome slowly if it is launched with websocket backdoor opened.
For visual automation mode True, it is slow because time is needed to load the OpenCV computer vision engine and Tesseract OCR engine into memory. If you don't need these features, do init() without the visual automation True.

@kensoh yes, you're right...it is taking time to load the chrome, if I comment out r.close() and send the request again, it's pretty fast because chrome is always loaded.
But, If I do chrome_browser=False, it doesn't work with any other browser. Why is it so ?

I see, probably environment or company-specific policy causing the Chrome to load slowly.
If Chrome browser is needed you cannot do chrome_browser=False. You can try with other colleagues PC or your personal PC to see if the issue happens. This slow loading of Chrome has not been raised by users before.
As an alternative, try the TagUI RPA engine below, to see if the slowness happens. And raise the issue there, because the rpa package uses a fork of TagUI engine as the backend automation engine. If there is an issue with loading Chrome slowly, it should be fixed upstream.
https://github.com/kelaberetiv/TagUI

Adding on, the rpa package is only designed to work with Chrome.
If you use TagUI from above link, you can automate using MS Edge.

Also copying @ruthtxh fyi on above issue, which possibly could be inherent in TagUI for some users with edge environments.

68/5000
Hello, I would like to ask that tagui starts the Google browser installed in the system by default, I would like him to specify the launch location of Google browser, that is, how to achieve the browser is not installed on the system

Hello, I would like to ask that tagui starts the Google browser installed in the system by default. If I do not have Google Browser installed in the system but have Google browser installed without installation, can he specify the location to start the specific browser

It's possible but you have to edit some file to point the user profile folder to your own chrome user. The easiest is you try to login while doing a wait 300 so that the automated browser has your credentials.


With FirebaseAppDelegateProxyEnabled = false, phone authentication hangs and then crashes

This is related to the fix proposed in issue 221 regarding 'No APNS token specified error...
    <key>FirebaseAppDelegateProxyEnabled</key>
    <false/>

Adding the above lines to info.plist is sufficient to bypass the APNS error on iOS devices, but not iOS emulators.
BUT, this changes causes a hang in the login process.  In particular,
let idp = await firebase().ui().show({ providers: [new PhoneProvider()] });
yields this sequence:

Welcome screen presented, with "Sign in with phone" button as only visible option - tap button
Enter phone number screen presented - enter number and tap Verify
Verifying you’re not a robot… screen appears briefly
about:blank screen appears, empty screen with Done (upper-left) and refresh (upper-right) as only options, and tapping Done cancels the login with an error, The interaction was cancelled by the user, and crashes
When I attempt to display the error message with an alert, the still app crashes, even within a try/catch block
When I attempt to log in again, ui().show crashes with the error message, Error: Cannot read properties of undefined (reading 'presentViewControllerAnimatedCompletion')

Might some type of Firebase AppDelegate be required for phone authentication?

I have found through my investigation that is sufficient to call getAPNSToken() prior to calling getToken() to avoid the dreaded error message
Error: The operation couldn’t be completed. No APNS token specified before fetching FCM Token
Doing so also avoids their hang/crash problem documented in this issue, so I will close it.  You'll still want to catch the error, as it will be thrown on iOS emulators.  My code, in app-root.js, looks like this:
try {
   const authStatus = await firebase().messaging().requestPermission({ ios: { alert: true, }, });
   const enabled = authStatus === AuthorizationStatus.AUTHORIZED || authStatus === AuthorizationStatus.PROVISIONAL;
   if (enabled) {
     await firebase().messaging().registerDeviceForRemoteMessages();
     firebase().messaging().showNotificationsWhenInForeground = false;

     const aPNSToken = firebase().messaging().getAPNSToken();
     const token = await firebase().messaging().getToken();
     global.deviceToken = token;
     // code to handle token...

     firebase().messaging().onToken((token) => {
     // code to handle token
     });

      ...

} catch (e) {
   console.warn("app-root error: " + e);
 }

I have removed the lines from info.plist suggested by [issue 221](https://github.com/NativeScript/firebase/issues/221).


Fix behavior of shortened account address with external link component.

I have fixed the issue found by Nikita. Can you retest @Liubov-crypto ?

LGTM


Local syntax source code lookup

Similar to command lookup, but allow user to search local syntax source code and return commands/triggers with match

Not really sure this would really be that useful... the user can just run
list active moca commands
 where syntax like '%<search text>%'


new cmake for test+examples causes mass failures and unusable test run times

Running a full test+example suite on develop now causes widespread failures and takes ~one hour to run.
That length of time and number of failures makes it unusable for me to reasonably test.
Setup

Microsoft Windows [Version 10.0.19044.1526]
VS2019 v16.11.10
depthai-core develop at 3a2961de709faf44313d7af4f62314ad063acdec
OAK-D

Repro

cmake config, build with: x64, shared lib, debug, all examples and tests
ctest

Result
About an hour later (too long) massive failures across tests.
...
[ctest] 164/164 Test #164: apriltag_rgb_poe ..............................***Failed   16.12 sec
[ctest] -- found -P
[ctest] -- arguments: C:/njs/depthai-core/build/examples/apriltag_rgb.exe;
[ctest] Stack trace (most recent call last):
[ctest] #9    Object "", at 00007FFBC87B7034, in BaseThreadInitThunk
[ctest] #8    Source "d:\a01\_work\12\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp", line 17, in mainCRTStartup [00007FF77AA19FAE]
[ctest] #7    Source "d:\a01\_work\12\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl", line 331, in __scrt_common_main [00007FF77AA19C7E]
[ctest] #6    Source "d:\a01\_work\12\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl", line 288, in __scrt_common_main_seh [00007FF77AA19DBE]
[ctest] #5    Source "d:\a01\_work\12\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl", line 79, in invoke_main [00007FF77AA19F19]
[ctest] #4    Source "C:\njs\depthai-core\examples\AprilTag\apriltag_rgb.cpp", line 44, in main [00007FF77A1A723B]
[ctest]          41:     aprilTag->inputImage.setQueueSize(1);
[ctest]          42:
[ctest]          43:     // Connect to device and start pipeline
[ctest]       >  44:     dai::Device device(pipeline);
[ctest]          45:
[ctest]          46:     // Output queue will be used to get the mono frames from the outputs defined above
[ctest]          47:     auto manipQueue = device.getOutputQueue("aprilTagImage", 8, false);
[ctest] #3    Source "C:\njs\depthai-core\src\device\Device.cpp", line 26, in dai::Device::Device [00007FFB5766BBA5]
[ctest]          23: // Common explicit instantiation, to remove the need to define in header
[ctest]          24: constexpr std::size_t Device::EVENT_QUEUE_MAXIMUM_SIZE;
[ctest]          25:
[ctest]       >  26: Device::Device(const Pipeline& pipeline) : DeviceBase(pipeline.getOpenVINOVersion()) {
[ctest]          27:     tryStartPipeline(pipeline);
[ctest]          28: }
[ctest] #2    Source "C:\njs\depthai-core\src\device\DeviceBase.cpp", line 287, in dai::DeviceBase::DeviceBase [00007FFB57688140]
[ctest]         285:     // If no device found, throw
[ctest]         286:     if(!found) throw std::runtime_error("No available devices");
[ctest]       > 287:     init(version, false, "");
[ctest]         288: }
[ctest]         289:
[ctest]         290: DeviceBase::DeviceBase(OpenVINO::Version version, const char* pathToCmd) {
[ctest] #1    Object "", at 00007FFBA965B460, in CxxThrowException
[ctest] #0    Object "", at 00007FFBC69E4F69, in RaiseException
[ctest] -- After process executed,  produced the following exit code: -529697949
[ctest] CMake Error at C:/njs/depthai-core/examples/cmake/ExecuteTestTimeout.cmake:42 (message):
[ctest]    produced an error (-529697949) while running
[ctest]
[ctest]
[ctest]
[ctest]
[ctest] 57% tests passed, 71 tests failed out of 164
[ctest]
[ctest] Label Time Summary:
[ctest] poe    = 1653.36 sec*proc (82 tests)
[ctest] usb    = 914.43 sec*proc (82 tests)
[ctest]
[ctest] Total Test time (real) = 2567.99 sec
[ctest]
[ctest] The following tests FAILED:
[ctest] 	  3 - color_camera_node_test_poe (Failed)
[ctest] 	  4 - color_camera_node_test_conforming_poe (Failed)
[ctest] 	  7 - image_manip_node_test_poe (Failed)
[ctest] 	  8 - image_manip_node_test_conforming_poe (Failed)
[ctest] 	 15 - neural_network_test_poe (Failed)
[ctest] 	 16 - neural_network_test_conforming_poe (Failed)
[ctest] 	 19 - openvino_blob_test_poe (Failed)
[ctest] 	 20 - openvino_blob_test_conforming_poe (Failed)
[ctest] 	 27 - device_usbspeed_test_poe (Failed)
[ctest] 	 28 - device_usbspeed_test_conforming_poe (Failed)
[ctest] 	 31 - unlimited_io_connection_test_poe (Failed)
[ctest] 	 32 - unlimited_io_connection_test_conforming_poe (Failed)
[ctest] 	 39 - multiple_devices_test_poe (Failed)
[ctest] 	 40 - multiple_devices_test_conforming_poe (Failed)
[ctest] 	 52 - rgb_camera_control_poe (Failed)
[ctest] 	 54 - rgb_preview_poe (Failed)
[ctest] 	 56 - rgb_video_poe (Failed)
[ctest] 	 58 - edge_detector_poe (Failed)
[ctest] 	 60 - feature_detector_poe (Failed)
[ctest] 	 62 - feature_tracker_poe (Failed)
[ctest] 	 64 - device_queue_event_poe (Failed)
[ctest] 	 66 - opencv_support_poe (Failed)
[ctest] 	 68 - queue_add_callback_poe (Failed)
[ctest] 	 70 - image_manip_poe (Failed)
[ctest] 	 72 - image_manip_rotate_poe (Failed)
[ctest] 	 74 - image_manip_tiling_poe (Failed)
[ctest] 	 76 - rgb_rotate_warp_poe (Failed)
[ctest] 	 78 - imu_gyroscope_accelerometer_poe (Failed)
[ctest] 	 80 - imu_rotation_vector_poe (Failed)
[ctest] 	 82 - mono_depth_mobilenetssd_poe (Failed)
[ctest] 	 84 - rgb_encoding_mono_mobilenet_poe (Failed)
[ctest] 	 86 - rgb_encoding_mono_mobilenet_depth_poe (Failed)
[ctest] 	 88 - rgb_encoding_mobilenet_poe (Failed)
[ctest] 	 90 - camera_mobilenet_sync_poe (Failed)
[ctest] 	 92 - rgb_mobilenet_poe (Failed)
[ctest] 	 94 - rgb_mobilenet_4k_poe (Failed)
[ctest] 	 96 - mono_mobilenet_poe (Failed)
[ctest] 	 98 - video_mobilenet_poe (Failed)
[ctest] 	100 - mono_camera_control_poe (Failed)
[ctest] 	102 - mono_preview_poe (Failed)
[ctest] 	104 - mono_full_resolution_saver_poe (Failed)
[ctest] 	106 - concatenate_poe (Failed)
[ctest] 	108 - normalize_poe (Failed)
[ctest] 	110 - object_tracker_poe (Failed)
[ctest] 	112 - spatial_object_tracker_poe (Failed)
[ctest] 	114 - object_tracker_video_poe (Failed)
[ctest] 	116 - script_camera_control_poe (Failed)
[ctest] 	118 - script_forward_frames_poe (Failed)
[ctest] 	120 - script_nndata_example_poe (Failed)
[ctest] 	122 - script_json_communication_poe (Failed)
[ctest] 	124 - spatial_location_calculator_poe (Failed)
[ctest] 	126 - spatial_mobilenet_mono_poe (Failed)
[ctest] 	128 - spatial_mobilenet_poe (Failed)
[ctest] 	130 - spatial_tiny_yolo_v3_poe (Failed)
[ctest] 	132 - spatial_tiny_yolo_v4_poe (Failed)
[ctest] 	134 - depth_crop_control_poe (Failed)
[ctest] 	136 - depth_preview_poe (Failed)
[ctest] 	138 - depth_post_processing_poe (Failed)
[ctest] 	140 - rgb_depth_aligned_poe (Failed)
[ctest] 	142 - stereo_depth_video_poe (Failed)
[ctest] 	144 - system_information_poe (Failed)
[ctest] 	146 - disparity_encoding_poe (Failed)
[ctest] 	148 - rgb_encoding_poe (Failed)
[ctest] 	150 - rgb_full_resolution_saver_poe (Failed)
[ctest] 	152 - rgb_mono_encoding_poe (Failed)
[ctest] 	154 - encoding_max_limit_poe (Failed)
[ctest] 	156 - mjpeg_encoding_poe (Failed)
[ctest] 	158 - tiny_yolo_v4_device_side_decoding_poe (Failed)
[ctest] 	160 - tiny_yolo_v3_device_side_decoding_poe (Failed)
[ctest] 	162 - apriltag_poe (Failed)
[ctest] 	164 - apriltag_rgb_poe (Failed)
[ctest] Errors while running CTest
[ctest] CTest finished with return code 8

Expected
Maybe 30 minutes for a test+example suite. All tests to pass or be skipped. No failures.
Notes
This is directly related to the new approach for PoE and the two preprocessor conformance.
The full suite duplicates tests for PoE, and within tests also repeatedly tests for PoE in loops when it knew on the 1st try there is no PoE. I recommend reworking the PoE approach so that it skips all PoE tests if there is no PoE attached. This could be done with a single test start check, or with a environ define sent into the test suite.
I get that your team also wants to extensively test the serialization. I doubt it is necessary to duplicate every test for both compliance and non-comply on MSVC on every test suite run. I would suggest maybe 10% (20% max) of the tests be run in this duplication and the remaining only run when a detailed environ flag is sent into the test suite.
This idea of test switches/flags is very common in CI. For example stress, perf, full, detailed, quick, etc.

@diablodale
Sorry for not mentioning explicitly, will update README.md with the following information:
The tests are now grouped by labels to specify on what device certain test should run.
ctest -L usb will only run tests that can run on USB devices, ctest -L poe will only run tests that can run on PoE devices, and so forth. (More to come)
This was done to be able to not do tests for devices not at hand, and/or to limit running tests to only certain kind of devices reachable.
Regarding MSVC conforming tests, that could be left out to just a couple more specific tests, I agree. But IMO not too big of an issue at the moment as the number of tests isn't that big. Will refactor if it grows too big.

This could be done with a single test start check, or with a environ define sent into the test suite.

Interesting concept, to first discover capabilities/devices and then execute test groups that can be carried out in this scenario.
Does CTest support anything in this regard?

So many conforming tests... 2x... so slow... 🥱😉 Please consider it a request to lessen the time needed in the typical (non-full/all) test configuration. There can always be a "full" option for those that want extensive coverage.
A few ideas some to mind for auto selecting test groups

Do it during cmake config. I believe the majority of devs will know during cmake config their hardware setup. There is already DEPTHAI_BUILD_TESTS. The interpretation can be changed (or new var) to be the group(s) of tests to run. When tests/Cmakefile.txt is processed during config, it can use DEPTHAI_BUILD_TESTS to add/exclude tests.
Run a dedicated EXE that will do a simple probe for device types available, write the result to stdout or tmp, and then use that as params to into ctest like -R, -E, or -L, params to test EXEs, or env vars.
Use CTEST_CUSTOM_PRE_TEST and/or CTestCustom.cmake as per https://gitlab.kitware.com/cmake/community/-/wikis/doc/ctest/Testing-With-CTest#customizing-ctest


docs: added  example for conditional actions

:tada: This PR is included in version @kittgen/nestjs-authorization-v1.4.5 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


add automation to create ACLs and topic

As the new kafka provider does not provide this kind of automation, we need to do it ourselves.
Also added zookeeper locally, to be able to test this locally.
This deployment is incompatible with whatever was there before, so we are going to break the environments on deployment.
As it's not impacting anything, we decided to go this route (easiest).

/cc @osherdp @gamli75


🐛 [Postgress] Deleting and reinstalling the add on keep the database files but I can't find the database under /config

Description
Datatabase is not mounted under "/config", I cant find the database files using ssh or "File editor" but If I try to delete and reinstall the plugin the database get restored. If I try to backup the plugin the database is actually present in the zip file.
Reproduction steps
1. Removed the addon
2. Reinstall the addon

Addon Logs
Starting...
/etc/cont-init.d/00-banner.sh: executing
-----------------------------------------------------------

 Add-on: Postgres 15
 Postgres 15 with pgvecto.rs support
-----------------------------------------------------------
 Add-on version: 15.5-7
 You are running the latest version of this add-on.
 System: Home Assistant OS 12.0  (aarch64 / raspberrypi4-64)
 Home Assistant Core: 2024.2.5
 Home Assistant Supervisor: 2024.02.1
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums
-----------------------------------------------------------
 Provided by: https://github.com/alexbelgium/hassio-addons
-----------------------------------------------------------
/etc/cont-init.d/00-global_var.sh: executing
POSTGRES_PASSWORD=******
Timezone set from Etc/UTC to Europe/Rome
/etc/cont-init.d/01-config_yaml.sh: executing
Setting permissions for the config.yaml directory

Load environment variables from /config/config.yaml if existing
If accessing the file with filebrowser it should be mapped to /addon_configs/db21ed7f-postgres/config.yaml
---------------------------------------------------------
Wiki here on how to use : github.com/alexbelgium/hassio-addons/wiki/Add‐ons-feature-:-add-env-variables

... no env variables found, exiting
/etc/cont-init.d/01-custom_script.sh: executing
Execute /addon_configs/db21ed7f-postgres/postgres.sh if existing
Wiki here : github.com/alexbelgium/hassio-addons/wiki/Add-ons-feature-:-customisation
/etc/cont-init.d/20-folders.sh: executing
/etc/cont-init.d/99-run.sh: executing
[17:02:47] WARNING: The config.env file found in /config will be used (mapped to /addon_configs/xxx-postgres when accessing from Filebrowser). Please customize according to https://hub.docker.com/_/postgres and restart the add-on

[17:02:47] INFO: Starting the app

[17:02:47] INFO: Waiting for port 5432 to open...

PostgreSQL Database directory appears to contain a database; Skipping initialization

2024-03-01 17:02:47.843 CET [224] LOG:  starting PostgreSQL 15.5 (Debian 15.5-1.pgdg120+1) on aarch64-unknown-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2024-03-01 17:02:47.844 CET [224] LOG:  listening on IPv4 address "<IP_ADDRESS>", port 5432
2024-03-01 17:02:47.844 CET [224] LOG:  listening on IPv6 address "::", port 5432
2024-03-01 17:02:47.848 CET [224] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-03-01 17:02:47.861 CET [255] LOG:  database system was interrupted; last known up at 2024-03-01 17:00:10 CET
[2024-03-01T16:02:47Z INFO  service::utils::clean] Find directory "pg_vectors/indexes/189265".
[2024-03-01T16:02:47Z INFO  service::utils::clean] Find directory "pg_vectors/indexes/189264".
2024-03-01 17:02:48.226 CET [267] LOG:  incomplete startup packet
[17:02:48] INFO: Enabling vector.rs
2024-03-01 17:02:48.364 CET [255] LOG:  database system was not properly shut down; automatic recovery in progress
2024-03-01 17:02:48.370 CET [255] LOG:  redo starts at 0/2674A778
2024-03-01 17:02:48.707 CET [278] FATAL:  the database system is not yet accepting connections
2024-03-01 17:02:48.707 CET [278] DETAIL:  Consistent recovery state has not been yet reached.
psql: error: connection to server at "localhost" (<IP_ADDRESS>), port 5432 failed: FATAL:  the database system is not yet accepting connections
DETAIL:  Consistent recovery state has not been yet reached.
2024-03-01 17:02:48.736 CET [279] FATAL:  the database system is not yet accepting connections
2024-03-01 17:02:48.736 CET [279] DETAIL:  Consistent recovery state has not been yet reached.
2024-03-01 17:02:49.055 CET [280] FATAL:  the database system is not yet accepting connections
2024-03-01 17:02:49.055 CET [280] DETAIL:  Consistent recovery state has not been yet reached.
2024-03-01 17:02:50.226 CET [255] LOG:  invalid record length at 0/2C7BF238: wanted 24, got 0
2024-03-01 17:02:50.226 CET [255] LOG:  redo done at 0/2C7BF210 system usage: CPU: user: 1.58 s, system: 0.24 s, elapsed: 1.85 s
2024-03-01 17:02:50.249 CET [253] LOG:  checkpoint starting: end-of-recovery immediate wait
2024-03-01 17:02:50.573 CET [253] LOG:  checkpoint complete: wrote 7728 buffers (47.2%); 0 WAL file(s) added, 0 removed, 6 recycled; write=0.220 s, sync=0.082 s, total=0.327 s; sync files=237, longest=0.020 s, average=0.001 s; distance=98770 kB, estimate=98770 kB
2024-03-01 17:02:50.595 CET [224] LOG:  database system is ready to accept connections
2024-03-01 17:07:50.624 CET [253] LOG:  checkpoint starting: time
2024-03-01 17:07:52.054 CET [253] LOG:  checkpoint complete: wrote 15 buffers (0.1%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.413 s, sync=0.006 s, total=1.431 s; sync files=7, longest=0.004 s, average=0.001 s; distance=5 kB, estimate=88894 kB
2024-03-01 17:12:50.125 CET [253] LOG:  checkpoint starting: time
2024-03-01 17:12:50.146 CET [253] LOG:  checkpoint complete: wrote 1 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.007 s, sync=0.002 s, total=0.021 s; sync files=1, longest=0.002 s, average=0.002 s; distance=5 kB, estimate=80005 kB

Architecture
aarch64
OS
HAos

I've actually found out that db21ed7f_postgress was still on the system after being deleted so I've manually deleted


Add prow automation for unit-test

What this PR does / why we need it:
This is the first step to move the validations we do at travis
to prow so we have a proper test results and artifacts dir, also
we can check a ci result view including unit test at prow.
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
The prow job PR https://github.com/kubevirt/project-infra/pull/398
Release note:

NONE

@qinqon I think the builder image in the job is not up-to-date.

@rmohr updated job with newer image, maybe it make sense to add something at unit-test.sh to check that the builder image we are using is aligned with the one at hack/dockerized ?

Running at https://prow.apps.ovirt.org/view/gcs/kubevirt-prow/pr-logs/pull/kubevirt_kubevirt/3202/pull-kubevirt-unit-test/1247078563367096320

something has change at kubevirt
+ make bazel-test
hack/dockerized "hack/bazel-fmt.sh && hack/bazel-test.sh"
FATAL: $USER is not set, and unable to look up name of current user: (error: 0): Success
make: *** [Makefile:26: bazel-test] Error 36

re-running with USER=root
https://prow.apps.ovirt.org/view/gcs/kubevirt-prow/pr-logs/pull/kubevirt_kubevirt/3202/pull-kubevirt-unit-test/1247086995251924992

root is not a good option
+ make bazel-test
hack/dockerized "hack/bazel-fmt.sh && hack/bazel-test.sh"
FATAL: mkdir('/.cache/bazel/_bazel_root'): (error: 13): Permission denied
make: *** [Makefile:26: bazel-test] Error 36

something has change at kubevirt
+ make bazel-test
hack/dockerized "hack/bazel-fmt.sh && hack/bazel-test.sh"
FATAL: $USER is not set, and unable to look up name of current user: (error: 0): Success
make: *** [Makefile:26: bazel-test] Error 36

The cc rules from bazel are trying to look up a user.Not sure what it needs it for. In the source code it looks not like it really needs it for anything relevant for us. Can you just try setting USER to something?

@rmohr setting it to root fails at :
+ make bazel-test
hack/dockerized "hack/bazel-fmt.sh && hack/bazel-test.sh"
FATAL: mkdir('/.cache/bazel/_bazel_root'): (error: 13): Permission denied
make: *** [Makefile:26: bazel-test] Error 36


Add tvOS and watchOS support to the podspec

Thanks, would be great if we could also get a 1.2.0 with TV/Watch support on CocoaPods :)

What's needed to do that? Xcode 6 and Swift 1.2 support i guess...


Denyactionpr

Overview/Summary
Implementation of DenyAction Delete into Azure Landing Zones for both Activity Logs and Diagnostic Settings as two seperate policy definitions and a policy initiative.
Address story AB#29619
This PR fixes/adds/changes/removes

Two policy definitions for DenyAction Delete Activity Logs and Diagnostic Settings
A policy initiative to apply these two policy definitions

Breaking Changes

N/A

Testing Evidence

Testing URLs
Azure Public

Azure US Gov (Fairfax)

As part of this Pull Request I have

[X] Checked for duplicate Pull Requests
[X] Associated it with relevant issues, for tracking and closure.
[X] Ensured my code/branch is up-to-date with the latest changes in the main branch
[X] Performed testing and provided evidence.
[X] Ensured contribution guidance is followed.
[X] Updated relevant and associated documentation.
[X] Updated the "What's New?" wiki page (located: /docs/wiki/whats-new.md)

@JamJarchitect & @Springstone are we also looking to add tests for this one?

@Springstone @JamJarchitect - whats the latest with this one?