Hive tasks to provision clusters on openstack (PSI)

The following tasks now support Openstack provider:

Provision Self-Managed Cluster
Deprovision Self-Managed Cluster

To use, add to your infrastructure_configuration.yaml for example:
infrastructure_configurations:
    provider: OSP
    hive_cluster_name: ods-qe-007
    hive_claim_ns: rhods
    aws_domain: rhods.ccitredhat.com
    ocp_version: 4.12.5
    osp_cloud_name: openstack
    osp_network: shared_net_5
    osp_flavor: g.standard.xl

In case reusing existing floating IPs on PSI, add them too:
infrastructure_configurations:
    ...
    fip_api: <IP_ADDRESS>
    fip_apps: <IP_ADDRESS>

In addition, test-variables.ymlshould include values for the following variables:
QUAY_PULL_SEC: '...'
QUAY_SSH_KEY: '...'
PSI_CLOUD_YAML_ECODED: ...
PSI_CLOUD_NAME_ECODED: ...

Could you address the warnings by Robocop? Here you'll find how to test it locally and also how to exclude robocop rules if you thing any doesn't have sense.
Sure, I will use it, thanks for the heads up!
Please note that most of the Robocop Warnings are not new. It complains about missing Doc strings for already existing keywords (before this PR). I think we can add a new PR to fix all Robocop warnings out there.

In #695 there are two variables in infrastructure_configuration related to the registry certification authority and the pull secret. Is the purpose of QUAY_PULL_SEC and QUAY_SSH_KEY the same? If yes, could you use those parameters?
#695 is for using internal Registry, but I don't see reference to Quay secret.
In test-variables.yml in gitlab, I did not find references to quay "pullSecret" and "sshKey", neither in ods-ci templates.
@aloganat told me to embed these vars in the Jenkins pipeline for now, until we decide where to place them (as we want to move away from using test-variables.yml, right ?)

What is the purpose of PSI_CLOUD_YAML_ECODED and PSI_CLOUD_NAME_ECODED? Should it say _ENCODED or _BASE64?
Yes, indeed typo. it's the clouds.yaml for openstack in a base64 string, which is required for Hive.

Are these changes affecting just PSI or also AWS and GCP provisioning? If the latter, can you test it before this PR is merged?
I did not change the templates for GCP and AWS, but I will test them as well, in the pipeline.

Could you document in https://github.com/red-hat-data-services/ods-ci/blob/master/ods_ci/docs/infrastructure_configuration_variables.md the new fields introduced in infrastructure_configuration?

Could you document in https://github.com/red-hat-data-services/ods-ci/blob/master/ods_ci/docs/infrastructure_configuration_variables.md the new fields introduced in infrastructure_configuration?

Done


Code Triage shouldn't email me requests for private method documentation

I've opened this issue to continue a discussion I started with @schneems on Twitter. I subscribed to Rails on Code Triage to receive documentation requests. Unfortunately, most of the requests I got we're for modules with :nodoc: at the top of them or for private methods. It would be great if I only received requests for methods that needed to be documented.
I'm more than happy to work on this when I have time. It would be great to contribute to such an excellent project.
I'm not sure if it will be possible to eliminate the issue entirely, but hopefully I can bring the false positive rate down a little. It seems like the code I'll need to update is /lib/docs_doctor/parsers/ruby/yard.rb. Are there tests for this? If so where are they located?
Any help on this would be much appreciated.

I agree. I received a documentation issue for a :nodoc: module. Either they are private method or mostly the module is for internal class. If we can make it improved we would get more important parts for documentation. I would also like to work in this part to improve.

We are already detecting if it is a :nodoc: and setting a skip_read on the method https://github.com/codetriage/codetriage/blob/b5aabbc2ac149359cb17843a0e634fbe692a693d/lib/docs_doctor/parsers/ruby/yard.rb#L43
I still think we could use documentation on :nodoc: methods, it just means that it's not a public interface (in rails).
That code is tested via integration tests. The test suite will clone repos and run the doc parser on them.
I'm not sure about how we could make this a more flexible thing. Maybe allow a negative regex? Like give me all issues unless they match /:nodoc:/ or something? Have it set-able on a per-project basis. IDK.

Today I subscribed to see documentation opportunities in rails and I ended up here:
https://github.com/rails/rails/blob/c2847716913d3fb72fd423009be1d4f124e4aa94/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb/#L35-L41 (the link from CodeTriage took me to the initialize method)

I still think we could use documentation on :nodoc: methods, it just means that it's not a public interface (in rails).

@schneems do you think a PR with documentation for a :nodoc-flagged method would be welcomed in rails?
I realize that my issue is related to the dashboard (and it might be a new issue) but here is an idea: Could CodeTriage prioritize non :nodoc: methods when showing methods to be documented?


[5.7] Back out Sendable conformance and annotations

This change preserves the lazy atomic initialization, so using Regex will still be thread-safe by default, even without the annotation.
Cherry pick of #474.

@swift-ci Please test Linux platform

@swift-ci Please test


Unnecessary Deprecation of And and But Steps

Current behavior
Cucumber and Gherkin's standards and guidelines include the keywords And and But.
I'm not sure how they got deprecated because a "PR" was submitted on this #821 without any supporting documents or links, etc.
These steps are critical, and while I understand that we can use When and Then, they are not declarative and do not conform to BDD flow and standards, even when compared to other BDD libraries and frameworks.
This is a significant breaking change for bulk bdd files and testers/operations teams who write BDD tests for developers to implement.
Bonus improve code readability and improve collaboration.
Desired behavior
Support for And and But
Test code to reproduce
n/a
Versions

Cypress version: n/a
Preprocessor version: n/a
Node version: n/a

Checklist

[x] I've read the FAQ.
[x] I've read Instructions for logging issues.
[x] I'm not using<EMAIL_ADDRESS>(package name has changed and it is no longer the most recent version, see #689).

I suspect you’re misunderstanding the implications of this change, so before I respond any further I ask you to read the following comment: https://github.com/badeball/cypress-cucumber-preprocessor/issues/821#issuecomment-1267073941


Admin command to manage project network

- Join project networks:
    oadm pod-network join-projects --to=<project-name> <list of projects>|--selector=<project-labels>
- Unisolate project networks:
    oadm pod-network unisolate-projects <list of projects>|--selector=<project-labels>
- Isolate project networks: TBD (some preliminary work done)

- In ovssubnet/common.go, Fetch VNID using GetVNID(namespace) to handle corner cases
- Release VNID only if no namespace is using it
- openshift-ovs-multitenant can handle non pod infra container

@danwinship @dcbw @marun  PTAL

Instead of "unisolate" could we do "split" or "leave"?

That's not what unisolate does. Unisolate means "set VNID to 0".
(If you want to split two previously-merged projects A and B, the only way to do that in this UI is to create a new project C, join B to C, and then delete C.)

Yeah, looking at the patches I see there's also an unimplemented "isolate" command.  Which is what I was missing.
Still, seems odd that there isn't a corresponding opposite to Join, like Leave or Split...  If Isolate will eventually create a new VNID for a project/namespace, and Unisolate moves it back into the admin/VNID0 namespace, would the corresponding Leave/Split instead just be calling Isolate on the currently-joined project?

what about:
join (change VNID of PROJECTS[1:] to VNID of PROJECTS[0])
oadm pod-network join PROJECTS...
split/isolate: (assign a distinct VNID to each project in PROJECTS)
oadm pod-network isolate PROJECTS...
unisolate: (assign VNID 0 to each project in PROJECTS)
oadm pod-network admin PROJECTS...

what about:
join (change VNID of PROJECTS[1:] to VNID of PROJECTS[0])
oadm pod-network join PROJECTS...
split/isolate: (assign a distinct VNID to each project in PROJECTS)
oadm pod-network isolate PROJECTS...
unisolate: (assign VNID 0 to each project in PROJECTS)
oadm pod-network admin PROJECTS...

That looks a bit clearer to me.  What do you think @pravisankar ?

We had some discussion on this before in the email chain, let me recap:
We are creating overlay network for the pods and 'pod-network' was chosen to avoid any confusion with node network.
Eventually 'pod-network' command will support many sub commands once we have granular network policy.
'-projects' suffix was added to indicate these sub-commands are operated on the projects.
I think, join-projects/isolate-projects provides clear semantics. For join projects, --to option is explicitly used to eliminate any confusion on which project to join, first one or the last one and this pattern is used in other openshift cmds.
When we have more than 2 projects sharing the pod network, split operation might be confusing. splitting from given project or existing pod network? I think, 'isolate' word is less confusing!
For VNID 0 projects:  'unisolate' was chosen to imply 'no isolation' and the help message clears any confusion. 'admin'/'global' are generic, they have other connotations. 'admin network' also needs explanation and this is completely different from the admin we use in ACLs. We need better alternatives if we are not happy with 'unisolate'.

Updated, PTAL

When we have more than 2 projects sharing the pod network, split operation might be confusing. splitting from given project or existing pod network? I think, 'isolate' word is less confusing!

I think in the case where you pass more than one project, it's not obvious whether that means they all become isolated from each other (each gets its own new VNID), or they all become isolated from everyone else (they all get the same new VNID). The example suggests it's the latter, but I would have guessed the former, since having them share the same VNID means "isolate" also does a "join".
(At any rate, that code isn't hooked up yet, so it doesn't matter that much today.)

For VNID 0 projects: 'unisolate' was chosen to imply 'no isolation' and the help message clears any confusion.

I think that violates the ordinary meaning of "isolation" though. If project A is described as being "isolated", and project B as "not isolated", no one would expect that to mean that B has full access to A. Because if B has full access to A, then A isn't really isolated. That's why I was suggesting something like "admin"; then we can say that A really is isolated, it's just that B has superpowers and can bypass the isolation. (Although I guess "admin" has the reverse problem; it implies "I can access everyone else", but doesn't imply "everyone else can access me"...)
Let's get the code in at least. Presumably we can still potentially rename it post-dev-cut

Agreed, I had no real problems with the code, just the UX.

On Mon, Oct 12, 2015 at 9:07 AM, Dan Winship<EMAIL_ADDRESS>wrote:

When we have more than 2 projects sharing the pod network, split operation
might be confusing. splitting from given project or existing pod network? I
think, 'isolate' word is less confusing!
I think in the case where you pass more than one project, it's not obvious
whether that means they all become isolated from each other (each gets its
own new VNID), or they all become isolated from everyone else (they all get
the same new VNID). The example suggests it's the latter, but I would have
guessed the former, since having them share the same VNID means "isolate"
also does a "join".
(At any rate, that code isn't hooked up yet, so it doesn't matter that
much today.)
For VNID 0 projects: 'unisolate' was chosen to imply 'no isolation' and
the help message clears any confusion.
I think that violates the ordinary meaning of "isolation" though. If
project A is described as being "isolated", and project B as "not
isolated", no one would expect that to mean that B has full access to A.
Because if B has full access to A, then A isn't really isolated. That's why
I was suggesting something like "admin"; then we can say that A really is
isolated, it's just that B has superpowers and can bypass the isolation.
(Although I guess "admin" has the reverse problem; it implies "I can access
everyone else", but doesn't imply "everyone else can access me"...)

Instead of admin, may be we can use 'global' (making the project global
within the cluster). Something like 'make-global-projects'?

Let's get the code in at least. Presumably we can still potentially rename
it post-dev-cut
—
Reply to this email directly or view it on GitHub
https://github.com/openshift/openshift-sdn/pull/176#issuecomment-147447697
.

--
-Ravi


FIX: Correctly set the hive dynamic partition mode

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


duplication issue

Hi,
I'm using the newest version of tiered z and fore some reason when I'm crafting planks from logs (any logs) planks apear 4 by 4 in my inventory but when I'm quitting the crafting table, all the logs are also in my inventory at the origin point where they're come from.

Pls check existing issues before you open one :)


Move probing logic into control module

This is the follow-up to #568, which should be merged first. (That's why this is marked as a draft.)
Essentially, this pulls the bulk of the probing logic out of RawTable and into iterators which can more easily be reasoned with in isolation. The code isn't identical to that in RawTable, but it seems to pass all the tests, so, I'm assuming that it all works correctly.

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

So, I've gotten back into this, and I am realising that cargo llvm-lines is returning double what it did for the commit before it, but it's kind of strange, because it's not due to monomorphisation. I'm going to try and investigate a bit.
However, I am going to see what tinier bits of this I can merge in that will be less intrusive, like the double-width static group allocation since that's technically removing some potential UB.


Add license and copyright information

Please add license and copyright information for the themes.
Thank you!

is this theme free open-source and free of license or what? This is a good kaminari theme

I'm sorry for not getting back sooner, but I'm 99% sure that MIT is the license we'd like to incorporate to this repo.
@amatsuda Any objections?

This should be cleared before too many more contributions come in ...

This is now in my todo list and I'll come back in March.

Oops, sorry guys. Just pushed the MIT declaration 😉


ENet-label input view does not match desired view

Hi, I tried running the ENet-label code with CULane dataset input and I seem to be getting an error as shown in the image above. The error seems to be with the model file, which I downloaded from the README in the ENet-label folder, ENet-label-new.t7. I tried changing the code in dataset/laneTest.lua in preprocess. I changed the t.scaleWH in elseif self.split == 'val' from 800,288 to 980,220 and it managed to run without error, but the output appears warped and is of a different size from the SCNN output size of 800,288, so I suspect this might be a wrong method to solve the issue

Any help is appreciated. Thanks

You should use the codes of this repo instead of SCNN. There are some modifications to the original SCNN code.

Thanks for the reply, but the code seems to give a similar error when I ran the original numbers from ENet-label in this repo as well which led me to try changing these numbers. With the original numbers from this repo in ENet-label folder, this was the output instead.

Thanks


Write functional tests for proxy support by client

Currently the library has mock-based testing coverage only, need to check on real use cases.

Solved by #1421 (while the PR is not true functional test).


[hold for payment 2023-08-30] IOS -  Onfido screen present multiple time when app pushed to Background

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

Action Performed:

Go to setting
Go to any workspace
Setup Bank account
On last step click Save & continue
It will present Onfido | Real identity screen
Push app in background
Again open the app

Expected Result:
Onfido | Real identity screen should be presented only once
Actual Result:
Onfido | Real identity screen presented multiple time when app goes in background and again opened
Workaround:
Unknown
Platforms:

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

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

Version Number: 1.3.42-26
Reproducible in staging?: n/a
Reproducible in production?: n/a
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/93399543/46abcea6-b0b0-4db9-95c1-bedc49b3bf59
Expensify/Expensify Issue URL:
Issue reported by: @DinalJivani
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1689948418893939
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~013b5a7fa2bf8b3fcc
Upwork Job ID:<PHONE_NUMBER>252363776
Last Price Increase: 2023-07-27
Automatic offers:

ginsuma | Contributor | 25908892
DinalJivani | Reporter | 25908893

I can reproduce this but I think we're using an Onfido SDK for this, so not sure this is something we can fix. Checking.

Bumped in Slack

Awaiting proposals

Hi @joekaufmanexpensify ,

I am trying  to resolve the issue but I am not able to attach to debugger on iOS simulator. Is there any other branch to check ?

@allroundexperts any thoughts on the above question?

Proposal pending review

Proposal pending final review from Nikki

Oops, sorry for the delay here. Agreed that @ginsuma's proposal looks good 👍

Payment is due on 2023-08-30

This one took longer than 9 business days, so there would be a 50% penalty here. This means we need to make the following payments:

@allroundexperts - $500 for C+ review (reduced from $1,000). Paid via NewDot.
@ginsuma - $500 for PR (reduced from $1,000). Paid via Upwork.
@DinalJivani - $250 for reporting the bug. Paid via Upwork.

Got it. I will review further!

Ah, thanks for flagging that. Yeah, I see @NikkiWines approved on 2023-08-14, but did not merge until 2023-08-17. If we remove those three days then the time here was 8 business days, so no penalty would be applied.

Just edited the payment message to reflect that there will no penalty here.

@ginsuma $1,000 sent and contract ended!

@DinalJivani $250 sent and contract ended!

@allroundexperts could you please request $1,000 via NewDot and confirm here once complete?

Great, thanks for confirming!

Going to close this one out for now. If your request is not paid within 7 days, please let me know and I'll look into it.

As an FYI for the individual paying, payment summary message is here.

Reviewed the details for @allroundexperts. $1,000 payment approved based on BZ summary.

@joekaufmanexpensify @allroundexperts Tester was able to reproduce it today. Should we need a new ticket?
https://github.com/Expensify/App/assets/43996225/bab09c81-ca7a-4bec-8639-d32550766d0c

@kavimuru If this is broken again now, wouldn't it be a regression? If so, I'd think we'd fix it on the issue that introduced the regression.


[dmd-cxx] Backport IeeeFlagsSupport and FloatingPointControlSupport

The FP unit-tests are a little better in upstream, but still only work when not optimizing.

I'll leave merging to you.


Keep form buttons from partially disappearing when screen is small

Removes floating property from form buttons (which prevents them from expanding their container when needed. Instead grid is used that is stackable (responsive) and column is aligned.
Before:

After:

Well, I admit that a fix is needed, but I'm not sure this is it. You're limiting the title and button width to half the screen, period. So, if you have a lot of control buttons how does it look? What about a long title? Big screen? Small screen?
If all those work out reasonably well with this approach, then I'm game.

Well, I admit that a fix is needed, but I'm not sure this is it. You're limiting the title and button width to half the screen, period. So, if you have a lot of control buttons how does it look? What about a long title? Big screen? Small screen?
If all those work out reasonably well with this approach, then I'm game.

Yeah, obviously, I am going with premade semantic-ui stuff here, so I was looking for something that allowed me to position buttons to the right and also have them always occupy their space and Grid semantic-ui component fit the bill.  I think that using custom styling would be better, but I am not as well versed with css to accomplish that.
I'll ask around and play around with this a little bit, so you can expect some updates to this.
I was also expecting that title and buttons would be limited to half the screen, but it appears that it isn't so... :

even though the bounding box suggested that it is limited. Probably has to do with some overflow properties.

Ok I have used direct styles and tons of trial and error with flexbox to arrive at this solution where:

title will fill up the whole width, pushing buttons down
added forced word wrapping, no more overflowing the container
no more prefixed container sizes

It's a bit ugly with all the style directive though

Another solution for really long words in title would be to use a scrollbar instead. Perhaps that would preferred? It would simplify the styles needed a lot.

@RokLenarcic Have a look at: https://semantic-ui.com/collections/grid.html
There are responsive grid utilities you can use, so you don't have to add "raw" styles.

But I did use grid initially, and Tony is right, in that case you have to specify column proportions ahead of time, which is a bummer.

Hm... How about stackable menus?
https://semantic-ui.com/collections/menu.html#stackable

My cool and very very very very very very very very long title!

            <button class="ui red button">Foo!</button>
            <button class="ui primary button">Bar!</button>

Do you mean like this?
Looking at the current code, the implementation already uses top attached
@RokLenarcic Maybe you could try it in RAD?

My cool and very very very very very very very very long title!

               <button class="ui red button">Foo!</button>
               <button class="ui primary button">Bar!</button>

My cool and very very very very very very very very long title!

                  <button class="ui red button">Foo!</button>
                  <button class="ui primary button">Bar!</button>

         Content!

Did you guys figure out which was best overall? I don't have time to play with all of the options, but would be glad to take this PR if it is non-breaking and makes this issue better.

@MrEbbinghaus your solution produces another inner border:

There's also a lot of padding when wrapping:

This is a lot of vertical space consumed on a mobile device, especially with the additional border.

Sorry I am a bit slow to respond, I've got a bunch of obligations right now at the same time.

@awkay This comes down to whether you are up for using styles on those components or do you think only Semantic UI classes should be used. The stackable menu works with fixed "responsive" breakpoints.
So on a full sized screen it will never put buttons in their own row, if screen is narrower than 767.98px then it will always put the buttons in their own row. And when title is too long on wide screen, the buttons get pushed off the screen, which for me is a big downside. But it uses neat Semantic UI classes.
My solution uses styles directly, but IMO it works better and more responsive.

I'm all for raw style stuff if it makes things work better.

Thanks for putting so much effort into that!

Released in 1.2.14

I am sorry I didn't look at my console. Specifying css style flex-grow etc. as :flex-grow produces a warning in the JS console: warning: Unsupported style property flex-grow. Did you mean flexGrow?. It still works as is, but it spams these warnings because I didn't camelcase my style names. I'll push a fix.


GDScript: Properly include ProjectConverter3To4, cleanup

Needs testing to confirm it fixes the issue, I haven't tried myself yet.
I'm not 100% sure why #73029 happens when it doesn't happen in normal builds, none of the options it uses should impact this feature. The only thing I could notice was no explicit include for the converter.
Fixes #73029.

Ah this isn't the fix, the problem is when regex is disabled.

Now it should be good, please test. I only tested the combination from #73029, but it would be good to also test module_regex_disabled=yes deprecated=no and just deprecated=no.


Using monorepo to develop a theme locally, writing the theme path in md can render normally, but writing the theme name will not work

Describe the bug
Using monorepo to develop a theme locally, writing the theme path in md can render normally, but writing the theme name will not work
To Reproduce
Build monorepo with pnpm, there are demo, themeslidev-theme-xx under packages, the former is slidev manuscript, the latter is self-developed theme

If it is specified with "dependencies": { "slidev-theme-xx": "workspace:*" } under the demo, it will prompt
The theme "slidev-theme-xx" was not found in after running the `slidev demo` your project, do you want to install it now?

And if the theme is published and the dependencies are installed outside the monorepo to rebuild the slidev document, it can be rendered normally
Desktop (please complete the following information):

OS: win11
Browser: edge
Slidev version: 0.35.4

Is this issue caused by pnpm? Maybe this function can't resolve the workspace dependencies, but I can't be sure and fix it.

same here

same, am also working on a monorepo which contain multiple presentations which share a theme and although
slidev-theme-custom: "workspace:*"
is already set, it doesn't recognize it.

same bug happened in v0.46.3
my theme in pnpm monorepo can’t be recognized
@mudssky/slidev-theme-default": "workspace:*"

I can only choose to publish my thme to npm,and use pnpm add @mudssky/slidev-theme-default@latest --link-workspace-packages=false to install,


Rewrite imageAllowRules logic - Secure by Default

As discussed in yesterday's standup, this will be the new way to go with imageAllowRules:

[x] Cluster's are secure by default, meaning that we have an implicit deny-all-images policy
[ ] When running an image for the first time and it's denied, ask if it should be added to an imageAllowRule

This will automatically create an initial IAR that replaces the implicit deny-all-images policy

[ ] The IAR CR should get a new field including a pattern (glob / prefix / auto-upgrade-pattern) to define the images covered by that rule

context matching

prefix matching: any string without ? or * in it will be treated as prefix match pattern
glob matching: shell filename matching with only * and ? supported

tag matching:

auto-upgrade pattern

IARs are there to allow images, not to deny them, meaning that if an image is not covered/targeted by any IAR in the project, then it will be denied -> "Opening doors, instead of closing them"

Extra Notes / Quotes:

I want to ensure that the way it’s implemented is similar to permissions in that you only evaluate and change rules if the server rejects it. Don’t validate before. Probably add the logic to the same place where we prompt for permissions

Concept Drawing

Design
Example IAR with only the image scope section (no signatures required), would allow all images just matching that pattern:
apiVersion: api.acorn.io/v1
kind: ImageAllowRule
metadata:
  name: iar-scope-only
  namespace: acorn
images:
  - ghcr.io/acorn-io/**

Extra Questions

Do we want to manage images as well? I.e. I delete the only IAR allowing a specific image that exists in the project -> Do we delete that image? Or do we provide a "prune" command?
-> A: Not for now

Answers

Allow Prompt  Options: Exact (digest), Registry, Repo, Everything

I wonder if we want acorn install --default-image-allow-rule-enforcement secure|permissive where secure is the default behavior we have above and permissive means that any time a project is created, acorn writes an "allow everything" rule into the project.

That "allow everything" rule would need to be removed by a project admin before making use of any other IAR, right?
So I assume acorn project create would also need another flag to override the installation-wide flag?

Just a project admin. Like, the clsuter admin, when installing acorn, would set that flag so that every project got a permissive policy. If a particular project did not want the permissive policy, they would just delete it.
of course, this gets into the complexity of creating it in a "handler" and how to prevent the handler from re-creating it periodically.
...I've talked myself out of it. Don't add the install flag 😅

The image field should be just like the image field in acorn run.  Support the same pattern matching as * and # there.  A string without * or # is an exact match.  It would be good if you put the actual struct or yaml you plan to implement in the issue.  I'm not expecting more than a simple than a field like image or images that is a string or string slice.  Maybe you have a better idea.
There's no such as a managed IAR.  When you need to just add a whole new IAR. Put a generated name on the resource, doesn't really matter.  There's no advantage I can think of of trying to add to an existing one.

Answer to (1.) following yesterday's meeting: We just add : and / to the double-asterisk pattern of the auto-upgrade logic and re-use it as a generic image-pattern.

@ibuildthecloud copying this over from Slack:
I was typing a long write-up here about how to create the IARs from the Client-Side when I realized that for the Acornfile implementation of IAR we will anyway need all the Client functions to handle them, right?
Am I correctly assuming that IARs, even if defined in the same Acornfile will be treated as a separate (but linked) entity to the actual app?
I.e. when running such an image, we will subsequently call client.IARCreate and then client.AppRun instead of somehow embedding it into the App spec?

New flag --features, e.g. --features image-allow-rules=true
If ImageAllowRules are enabled, projects are secured by default, so that you have to create an IAR to allow an image
If an image is disallowed, we now prompt to allow it
The IAR CR now has an images field that uses the Auto-Upgrade Pattern logic to scope an IAR to a specific set of images matching that pattern

Blocking issue - https://github.com/acorn-io/acorn/issues/1678

https://github.com/acorn-io/acorn/issues/1678 is validated and closed now.
Other issues found when testing this feature will be tracked as separate issues.
Closing this issue .


Toggleable explosion proofing

A few of my server members have lost stuff due to dying in explosions, which blew up the gravestones instantly, dropping all the items in them.

Are you using the latest version of the mod (1.0.9)? This was a bug in older versions but as far as I'm aware it should have been fixed since. This could also be caused if you have other mods installed that change explosions in some way, since gravestones has to edit some vanilla code in order to make the gravestones explosion proof, and a different mod might stop gravestones doing what it needs to.
Please provide some more information on what other mods you're using if it isn't an issue with the mod version.

Latest version of the mod. The death that sparked this was from my own mod's Quartz Blade which shoots a (builtin) FireballEntity. AFAIK none of my mods change how explosions work. here's a list:

Also, IIRC i think there's an "on break" event that calls for explosions too that you can just cancel. Might be wrong though, quite new to modding.

I can't recreate this with these mods, is there anything else that might have caused it? If you're able to consistently recreate this yourself, can you send a video of it in action? Thanks.
As for the "on break" event: I was mis-remembering! The mod does just cancel gravestones being broken by overwriting onExploded. Mixins were the method the mod used to use until there was an issue with them and I switched to the current method.

I was able to recreate it in both singleplayer and multiplayer consistently, will send a video
I know it's the explosion breaking a gravestone because turning off mobgriefing reveals the gravestone.
Here's a short video, uploaded to youtube because github doesn't like file sizes.

Hmm, does it happen with only gravestones installed? If not, can you try and figure out which mod it's incompatible with? Probably should've suggested this earlier, my bad.
Also thanks for the kind words in the video description!

Tried on a clean modpack, still having issues. Here's the whole setup for whatever it's worth.
Linux Mint 22 Cinnamon
Ryzen 5 3600
RTX3060
MultiMC, latest version
1.20.1, Fabric loader 0.16.9
Fabric API 0.92.2+1.20.1
Gravestones 1.0.9-1.20.1
Mod Menu 7.2.2
PneumonoCore 1.1.4+1.20.1
The mod also logs "Placed Com2486's Gravestone at (38, 71, 103)", but all the items are still on the floor.
It doesn't show the "Com2486 has found their grave at (location)" either

UPDATE: Using the runClient task directly cloned from the repo, it seems to work. Maybe it's the Modrinth build, or something?

Alright I think i've come to the solution. The TechnicalGravestone block doesn't seem to have an on-explode event for 1.20.1. This may be our issue.

I think I've figured it out!
The 1.21 version of the mod overwrites onExploded like I said, but that method doesn't exist in 1.20.1. It looks like I deleted the mixin in both versions, but only added a different way of handling explosions to 1.21 (presumably because I forgot after realising 1.20.1 didn't have onExploded)
I have absolutely no idea how this hasn't been noticed all this time, especially considering I myself have managed multiple servers using this version of the mod. I also don't know how I was unable to recreate it earlier...

Oh wow that was weird timing

Great timing yeah lol. Well, glad I could help lol. I might make a prq or something. Thanks for being so cooperative

Thank you too! I can probably just re-add the mixin, you shouldn't need to make a prq

New version should be here. Sorry about this whole situation, it's really bad that this managed to slip under my radar.

No worries! Again, this mod is one of the better gravestones, COMPLETELY fine with waiting 3 days compared to three months for a fix like some of the others


Unexpected exception when changing the number of dataset.

Unexpected exception when changing the size of the dataset.
The execution of the code from AnimalsClassification with just a minor change in the number of samples to be taken into consideration for the neural network produce an exception of Unsupported Operation.
The minor change could be:
numExamples = 64; instead of the initial 80.
Some about the problem NN attempts to solve:

There  are 4 classes of images with animals

Each class contains roughly 20 samples (one class contains 22 and one 21 I think but all have equal or more than 20 samples).

Exception in thread "ADSI prefetch thread" java.lang.RuntimeException: java.lang.UnsupportedOperationException: Cannot do conversion to one hot using batched reader: 4 output classes, but array.size(1) is 3 (must be equal to 1 or numClasses = 4)
	at org.deeplearning4j.datasets.iterator.AsyncDataSetIterator$AsyncPrefetchThread.run(AsyncDataSetIterator.java:442)
Caused by: java.lang.UnsupportedOperationException: Cannot do conversion to one hot using batched reader: 4 output classes, but array.size(1) is 3 (must be equal to 1 or numClasses = 4)
	at org.deeplearning4j.datasets.datavec.RecordReaderMultiDataSetIterator.convertWritablesBatched(RecordReaderMultiDataSetIterator.java:314)
	at org.deeplearning4j.datasets.datavec.RecordReaderMultiDataSetIterator.convertFeaturesOrLabels(RecordReaderMultiDataSetIterator.java:267)
	at org.deeplearning4j.datasets.datavec.RecordReaderMultiDataSetIterator.nextMultiDataSet(RecordReaderMultiDataSetIterator.java:240)
	at org.deeplearning4j.datasets.datavec.RecordReaderMultiDataSetIterator.next(RecordReaderMultiDataSetIterator.java:177)
	at org.deeplearning4j.datasets.datavec.RecordReaderDataSetIterator.next(RecordReaderDataSetIterator.java:306)
	at org.deeplearning4j.datasets.datavec.RecordReaderDataSetIterator.next(RecordReaderDataSetIterator.java:393)
	at org.deeplearning4j.datasets.datavec.RecordReaderDataSetIterator.next(RecordReaderDataSetIterator.java:51)
	at org.deeplearning4j.datasets.iterator.MultipleEpochsIterator.next(MultipleEpochsIterator.java:118)
	at org.deeplearning4j.datasets.iterator.MultipleEpochsIterator.next(MultipleEpochsIterator.java:144)
	at org.deeplearning4j.datasets.iterator.MultipleEpochsIterator.next(MultipleEpochsIterator.java:38)
	at org.deeplearning4j.datasets.iterator.AsyncDataSetIterator$AsyncPrefetchThread.run(AsyncDataSetIterator.java:423)

I don't provide the code since it's the same from the examples.
The problem is reproducible if the number of samples increases to 120 for example (new samples added to every class folder) and the parameter numExamples stays the same (that is numExamples = 80;)
Version Information

Deeplearning4j 0.9.1
win7
no CUDA or NVIDIA

I was running into the same issue.

Hey! I am having the same problem - did you mange to solve it ?

Looking at this again: the most likely cause here is that the number of labels (according to ImageRecordReader) doesn't match the number of labels provided to RecordReader(Multi)DataSetIterator.
You can either do a setLabels on the ImageRecordReader (to specify the exact labels), or fix the argument passed to RecordReader(Multi)DataSetIterator to match the number of labels inferred by ImageRecordReader.
My guess is that in at least some of these cases, some of the labels just don't have any examples for ImageRecordReader to see. So say you have labels {A, B, C} yet (by filtering or whatever) end up with 20xA, 40xB, and 0xC, ImageRecordReader will think (legitimately) that you only have 2 classes.


ecrecover does not return consistently depending on digest despite correct signer

Using the following code:
contract ECRecover {
	function recover (bytes32 nonce, uint8 v, bytes32 r, bytes32 s) constant returns (address) {
		return ecrecover(nonce, v, r, s);
	}
}

For some inputs, e.g., with the nonce variable here that an account signs, ecrecover does not correctly recover the address.
Expected Behavior
ecrecover should return the address of the account that signed the message.
Current Behavior
ecrecover does not return the address of the account that signed the message for "some" digests. I haven't figured out the pattern yet.
Steps to Reproduce (for bugs)
I've made a repo here: https://github.com/snario/reproducible-ganache-bug
Context
I'm trying to sign messages roughly following the direction of EIP 155. GnosisSafe already implements this.
Your Environment
See the repo, ran inside a fresh ubuntu Docker container.

Seems like an ethers.js bug.
https://github.com/ethers-io/ethers.js/issues/208


immich: 1.122.1 -> 1.122.2

https://github.com/immich-app/immich/releases/tag/v1.122.2

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
25.05 Release Notes (or backporting 24.11 and 25.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 363421

x86_64-linux

:white_check_mark: 4 packages built:

immich
immich-cli
immich-machine-learning
immich-machine-learning.dist


BUG: load_direction.name - AttributeError: 'int' object has no attribute 'name'

Describe the bug
When defining a MemberLoad there is an AttributeError raised as the class MemberLoad tries to read name field from enum (int) variable
To Reproduce
Create a sample construction with member loads, I used an example from https://github.com/Dlubal-Software/RFEM_Python_Client/blob/main/Examples/SteelDesign/SteelDesignExcel.py and changed it a little bit to work with RSTAB & no Excel
Expected behavior
MemberLoads get added without errors.
Screenshots
Possible bug:
https://github.com/Dlubal-Software/RSTAB_Python_Client/blob/184a5d3fd4bd2c0a2053798b4adff328d612822a/RSTAB/Loads/memberLoad.py#L51-L52
Desktop (please complete the following information):

Version of WIN10 OS: Microsoft Windows Server 2022 Datacenter
Version of RSTAB9: 9.02.0067
Version of tool: 1.7.0

Additional context
Possibly this issue occurs also in RFEM SDK

When needed, I can attach my python script that generates the error.

Hi @and-ratajski,
please add the script. I tested MemberLoad running and peaked into the object and I see no problem.

Here's the script I'm trying to have calculated:
RSTAB_error_eg.py.zip

You are using NodalLoadDirection instead of MemberLoadDirection. If you change it and switch bracing_mat to 'S355' which is defined in our material database, it works without issues.
RSTAB_error_eg.zip

Ok - thank you! I was mislead by the RFEM example, where the author actually uses NodalLoadDirection:
https://github.com/Dlubal-Software/RFEM_Python_Client/blob/6614d4925e1267ba38d88d8d7823acc556842a45/Examples/SteelDesign/SteelDesignExcel.py#L387-L419
Now it all works.


Algorithm of chooseserver() does not handle exceptions

When pyspeedtest.chooseserver() calls pyspeedtest.ping(), it does not catch exceptions, but should, since ping() does throw them.  Since the purpose of chooseserver() is to pick a server to run a speed-test against, a server that cannot be successfully connected to should be skipped.
def chooseserver(self):
    ... (code is not relevant)
    for server in sorted_server_list[:10]:
        LOG.debug(server[1])
        match = re.search(
            r'http://([^/]+)/speedtest/upload\.php', server[1])
        if match is None:
            continue
        server_host = match.groups()[0]
        latency = self.ping(server_host)    <<-- statement needs try-except, with exception resulting in a call to "continue" for the loop
        if latency < best_server[0]:
            best_server = (latency, server_host)
    if not best_server[1]:
        raise Exception('Cannot find a test server')
    LOG.debug('Best server: %s', best_server[1])
    return best_server[1]

The stack trace I'm getting is when running on Windows 10 with pyspeedtest 1.2.7 is:
import pyspeedtest
st = pyspeedtest.SpeedTest(runs=1)
st.download()
Traceback (most recent call last):
File "", line 1, in
File "C:\Python27\lib\site-packages\pyspeedtest.py", line 92, in download
self.connect(self.host) for i in range(self.runs)
File "C:\Python27\lib\site-packages\pyspeedtest.py", line 67, in host
self._host = self.chooseserver()
File "C:\Python27\lib\site-packages\pyspeedtest.py", line 230, in chooseserver
latency = self.ping(server_host)
File "C:\Python27\lib\site-packages\pyspeedtest.py", line 163, in ping
connection = self.connect(server)
File "C:\Python27\lib\site-packages\pyspeedtest.py", line 81, in connect
raise Exception('Unable to connect to %r' % url)
Exception: Unable to connect to u'speedtest1.lpcnextlight.com'

https://github.com/fopina/pyspeedtest#discontinued :(


[Hub Generated] Review request for Microsoft.DevCenter to add version preview/2023-10-01-preview

This is a PR generated at OpenAPI Hub. You can view your work branch via this link.
Data Plane API - Pull Request

API Info: The Basics
Most of the information about your service should be captured in the issue that serves as your API Spec engagement record.

Link to API Spec engagement record issue:

Is this review for (select one):

[ ] a private preview
[ ] a public preview
[ ] GA release

Change Scope
This section will help us focus on the specific parts of your API that are new or have been modified. Please share a link to the design document for the new APIs, a link to the previous API Spec document (if applicable), and the root paths that have been updated.

Design Document:
Previous API Spec Doc:
Updated paths:

Viewing API changes
For convenient view of the API changes made by this PR, refer to the URLs provided in the table
in the Generated ApiView comment added to this PR. You can use ApiView to show API versions diff.
Suppressing failures
If one or multiple validation error/warning suppression(s) is detected in your PR, please follow the
Swagger-Suppression-Process
to get approval.
❔Got questions? Need additional info?? We are here to help!

 Contact us!
The Azure API Review Board is dedicated to helping you create amazing APIs. You can read about our mission and learn more about our process on our wiki.

💬 Teams Channel
💌 email

Click here for links to tools, specs, guidelines & other good stuff
Tooling

Open API validation tools were run on this PR. Go here to see how to fix errors
Spectral Linting
Open API Hub

Guidelines & Specifications

Azure REST API Guidelines
OpenAPI Style Guidelines
Azure Breaking Change Policy

Helpful Links

Azure DevTools Wiki

@mikekistler these two param were missed but the API version is not live/serving customers yet so no customers are impacted and we have not generated SDKs with the spec yet so there's no SDK impact


Invalid symlink makes tar fail

I'm currently trying package the latest release in a flatpak module. However, extracting the archive fails because it contains an invalid symlink /tessdata_best-4.1.0/config, which points to a non-existing file. Could you remove it from the archive please?

The symlink is there for a good reason: in a cloned git working directory with submodule it is needed and valid. And there is also another symbolic link tessdata_best-4.1.0/pdf.ttf for the same reason.
Maybe you can use the zip download or get the data with git?

Which tar are you using on what platform? I tried tar on Debian GNU Linux and had no problems when extracting the tar archive.

I ended up solving the issue by using the .zip download. I'm on Manjaro


/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-official

Describe the Issue
Task 1.2.2 fails on the absence of /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-official, which doesn't exist (we're using RHEL image Azure provides for their VMs, which has RPM-GPG-KEY-redhat-release instead):
[me@host ~]$ ls /etc/pki/rpm-gpg/
ISV-Container-signing-key  RPM-GPG-KEY-microsoft-azure-release  RPM-GPG-KEY-redhat-beta  RPM-GPG-KEY-redhat-release
[me@host ~]$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="8.5 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.5"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.5 (Ootpa)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/red_hat_enterprise_linux/8/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_BUGZILLA_PRODUCT_VERSION=8.5
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.5"

This appears to be a regression introduced in https://github.com/ansible-lockdown/RHEL8-CIS/commit/ceb1545f98ea6d44be73dcc1fc71c57f7cb58c8b, which changed -release to -official.
Expected Behavior
The task runs successfully.
Actual Behavior
TASK [RHEL8-CIS : 1.2.2 | AUDIT | Ensure GPG keys are configured] *****************************************************************************************************
fatal: [host]: FAILED! => {"changed": true, "cmd": ["gpg", "--quiet", "--with-fingerprint", "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-official"], "delta": "0:00:00.056419", "end": "2022-04-22 21:34:12.113110", "msg": "non-zero return code", "rc": 2, "start": "2022-04-22 21:34:12.056691", "stderr": "gpg: can't open '/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-official'", "stderr_lines": ["gpg: can't open '/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-official'"], "stdout": "", "stdout_lines": []}

Control(s) Affected

1.2.2

Environment (please complete the following information):
$ ansible-playbook --version
ansible-playbook [core 2.12.4.post0]
  config file = /ansible/ansible.cfg
  configured module search path = ['/home/runner/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/site-packages/ansible
  ansible collection location = /home/runner/.ansible/collections:/ansible/collections
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.8.12 (default, Sep 21 2021, 00:10:52) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
  jinja version = 3.1.1
  libyaml = True

On the targeted version:
[me@host ~]$ python3 --version
Python 3.6.8

Additional Notes
Unfortunately, since this is defined in vars/ and not in defaults/, It's not easily overridden since role vars take preference over group_vars, host_vars, and play vars. (I did end up being able to override it by passing a var to the role.)
Possible Solution
Change -official back to -release. I'm happy to submit a PR to do this if you'd like! However, since we're running Azure's flavor of RHEL and I don't have a base redhat install to test against, I decided to hold off on a PR to avoid potentially breaking other systems.

Hi @ChandlerSwift
Thank you for taking the time to raise this issue, I am hoping we can get this merged in to devel this week along with a few other issues that have recently been raised.
Regards
uk-bolly

This was addressed in release 2.1.0


404 URL

Step 1: Describe the problem:
The URL in README.md for pref folder (https://firebase.google.com/docs/performance) leads to a 404 page
Steps to reproduce:

Click on the above mentioned URL.

Observed Results:
Sees 404 page
Expected Results:

What did you expect to happen?
Page should not be 404

How to fix
Replace the above mentioned URL with this instead. https://firebase.google.com/docs/perf-mon/

@emansih thanks for catching this!  I made the fix you suggested.


Update params

Update params based on Readme changes https://github.com/jkk-research/kalman_pos/commit/4f9511c98d4b3884512f73a19a9dd4133d16118f

Legacy parameters were removed.


RFC: programming approach

RFC Programming approach
The circulation module is going to be rewritten from scratch in Invenio 2, making it more flexible and covering more library use cases. The purpose of this RFC is to discuss current development stages regarding the programming approach.
While discussing the possible use cases for the circulation module, it became apparent that the module is basically about managing states of different entities and triggering events based on those changes. Along with the fact that the statuses of items vary among the instances managing a library, the following approach is proposed:
The two entities having varying states, Item and Request (or LoanCycle, naming to be discussed), would be managed by using a configuration file using the following pattern:
{
    "on_shelf":
        {
            "from":
                [
                    {
                        "status": "on_loan",
                        "attempt_enter":
                            {
                                "function": attempt_enter_shelf_func,
                                "needed_attributes": []
                            },
                        "on_enter": enter_shelf_func

                    }
                ],
            "to":
                [
                    {
                        "status": "on_loan",
                        "action_name": "loan",
                        "attempt_leave":
                            {
                                "function": attempt_leave_shelf_func,
                                "needed_attributes": []
                            },
                        "on_leave": leave_shelf_func,

                    }
                ]
        },
    "on_loan":
        {
            "from":
                [
                    {
                        "status": "on_shelf",
                        "attempt_enter":
                            {
                                "function": attempt_enter_loan_func,
                                "needed_attributes": []
                            },
                        "on_enter": enter_loan_func

                    }
                ],
            "to":
                [
                    {
                        "status": "on_shelf",
                        "action_name": "return",
                        "attempt_leave":
                            {
                                "function": attempt_leave_loan_func,
                                "needed_attributes": []
                            },
                        "on_leave": leave_loan_func,

                    }
                ]
        }
}

This configuration file defines every possible transition between statuses and defines what is supposed to happen during those changes.
Example: Switching from "on_shelf" to "on_loan"
While being in status "on_shelf", one possible transition is to go to the status "on_loan". When this transition is triggered, the following functions are executed:

"on_shelf" -> "to" -> "attempt_leave" -> "function" will check the needed parameters to leave "on_shelf" and go to "on_loan"
"on_shelf" -> "to" -> "on_leave" will trigger every action associated with leaving "on_shelf" to "on_loan"
"on_loan" -> "from" -> "attempt_enter" -> "function" will check the needed parameters to enter the "on_loan" status coming from "on_shelf"
"on_loan" -> "from" -> "on_leave" will trigger every action associated with with entering "on_loan" from "on_shelf"

The classes Item and Request would then provide a very generic interface like the following:
class Item/Request(object):
	@classmethod
    def new(cls, ...):
    	"""Creates a new entity."""

    @classmethod
    def get(cls, id):
    	"""Gets and entity by ID."""

    @classmethod
    def get_all_functions(cls):
    	"""Gets all available functions triggering a transition."""

    @classmethod
    def get_all_statuses(cls):
    	"""Gets all available statuses."""

    def run(self, function_name, **kwargs):
    	"""Runs a transition."""

    def get_available_functions(self):
       	"""Gets the available functions triggering a transition from the current status."""

Following this approach the needed statuses and workflows can be configured and the demands for logging events can be satisfied.
UPDATE 18.05.2015
After playing around with that approach and the presented configuration file it became apparent that the config approach is a little to elaborate. It basically led to a lot of redundancy and was therefore hard to read. For example the loan action, would require a section in "on_shelf" -> "to" -> "on_loan" as well as a section in "on_loan" -> "from" -> "on_shelf". Additionally, this redundancy provided pretty little value. Sticking to the loan action example: The approach would trigger four function calls, and the question arose: Is this really necessary?
So, even though it moves a little bit away from the "state machine approach", this new configuration file style is proposed:
{
    "on_shelf":
        {
            "loan":
                {
                    "new_status": "on_loan",
                    "parameters": {"user": user.User},
                    "validate_func": validate_loan_item,
                    "func": loan_item
                },
            "lose_from_shelf":
                {
                    "new_status": "missing",
                    "parameters": {},
                    "validate_func": validate_lose,
                    "func": lose
                },
            "request":
                {
                    "new_status": "on_shelf",
                    "parameters": {"user": user.User,
                                   "date": datetime.datetime},
                    "validate_func": validate_request,
                    "func": request
                }
        },
    "on_loan":
        {
            "return":
                {
                    "new_status": "on_shelf",
                    "parameters": {},
                    "validate_func": validate_return_item,
                    "func": return_item
                },
            "lose_from_loan":
                {
                    "new_status": "missing",
                    "parameters": {},
                    "validate_func": validate_lose,
                    "func": lose
                },
            "request":
                {
                    "new_status": "on_loan",
                    "parameters": {"user": user.User,
                                   "date": datetime.datetime},
                    "validate_func": validate_request,
                    "func": request
                }
        },
    "missing":
        {
            "return":
                {
                    "new_status": "on_shelf",
                    "parameters": {},
                    "validate_func": validate_return_missing,
                    "func": return_missing
                }
        }
}

It's a more direct mapping from a given status to the available actions related to it. The validate_func and func parameter work the same way as the "attempt_" -> "function" and "on_" functions in the previous configuration, whereas parameters corresponds to "needed_attributes", but moved up one level, since they are needed for both function calls anyways.
Also the interface changed a bit (Should become more similar to the Invenio 2 way):
class CirculationObject(object):

    @classmethod
    def new(cls, status='new'):
        """Creates a new entity."""

    @classmethod
    def get(cls, id):
        """Gets an entity by ID."""

    @classmethod
    def query(cls, **kwargs):
        """Gets entities by utilizing the provides search capabilities."""

    @classmethod
    def get_all_functions(cls):
         """Gets all available functions triggering a transition."""

    @classmethod
    def get_all_statuses(cls):
        """Gets all available statuses."""

    def get_function_parameters(self, function_name, status=None):
        """Returns the required parameters for a given function."""

    def validate_run(self, function_name, **kwargs):
        """Runs the *validate_func* function."""

    def run(self, function_name, **kwargs):
        """Runs a transition."""

    def get_available_functions(self):
        """Gets the available functions triggering a transition from the current status."""

UPDATE 17.07.2015
As it turned out, a function based approach causes some difficulties regarding the validation, since some of the information gathered during the validation step can be reused in the actual run. Therefore, objects are proposed to store those kind of information.
item_config = {
    "on_shelf":
        {
            "loan": LoanConfig,
            "lose_from_shelf": LoseConfig,
            "request": RequestConfig
        },
    "on_loan":
        {
            "return": ReturnConfig,
            "lose_from_loan": LoseConfig,
            "request": RequestConfig
        },
    "missing":
        {
            "return": ReturnMissingConfig
        }
}

An example Config object looks like this:
class ReturnConfig(ConfigBase):
    new_status = 'on_shelf'
    parameters = ['item']

    def run(self, _storage, item=None, **kwargs):
        clc = CirculationLoanCycle.search(item=item,
                                          current_status='on_loan')[0]
        clc.run('return', _storage=_storage)

    def check_item(self, item=None, **kwargs):
        if not item:
            raise Exception('There needs to be an item')

The new_status attributes triggers the status change after execution of the script, while parameters is supposed to make the interaction easier.
There is currently also some magic happening, which executes every method starting with 'check' during the validation step and then gathers the exceptions. This is supposed to be utilized later on in the user interface to provide information for the user about incorrect settings. But there should be a debug mode for developers, since this exception gathering removes some information currently.

Is this still relevant?


Subscribe message with strand

Some messages must be handled sequentially, so I add a few more subscription functions to support that.

Friendly ping on this PR

friendly ping

or parallelism brings more overhead than saved.

unseq is vectorization


Merge branch 'main' into doc-latest

Merge branch 'main' into doc-latest

* main:
  (PUPDOC-5440) Add registered trademarks
  (PDB-5696) query.monitor: accommodate query socket reuse
  (PDB-5696) query.monitor/stop: elaborate on interrupt considerations
  (PDB-5696) query.monitor: eliminate all reflection
  Set clj-parent=7.1.1

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.3 out of 4 committers have signed the CLA.:white_check_mark: austb:white_check_mark: steveax:white_check_mark: IngridaCazers:x: rbrwYou have signed the CLA already but the status is still pending? Let us recheck it.


Showcase Submission for webgl/4-texture

Thank you panna for your contribution! A member of the Coding Train team will review it shortly.

cubic panna
panna

So cute!


What does inner_init do ?

Hi
I didn't find any use of inner_init in SimpleDeepRNN, did I miss it or actually we need to initialize Us using inner_init ?

Beware that SimpleDeepRNN is actually an example model, as specified in the doc and the code comments. If you need a RNN for practical purposes, you should be using GRU or LSTM.
Indeed, inner_init should be used for the initialization of the U parameters. I see that wasn't the case until now (init used instead). I'm fixing this.

@fchollet Thanks for your reply !


Add link to the Rust Cookbook to the topbar

Fixes #137

The drop-down is getting a little big, maybe eventually we could offload some of these links to rust-lang.org/learn and only link to pages that are harder to find, like rustc-dev-guide. Or maybe have the windows approach with submenus.
This PR looks great though, thanks so much!


Always include the Clang-Tidy config in the hash

After thinking about the tool a bit, I concluded that the Clang-Tidy configuration also needs to be included in the hash. The (not so much documented) option --directories_with_clang_tidy=... could help there. However, I think that's not as handy as I want it to be. I think this has to be done by default. Furthermore, this flag could include configuration files which are even not of relevance for the processed file.
Therefore, I was hunting a more generic solution. My proposal here uses the Clang-Tidy tool itself. I'm asking it to dump the configuration for the file to be processed. In this way I don't have to scan for .clang-tidy files, but let Clang-Tidy handle that. This would even work if the user uses Clang-Tidy command line option --config-file.
Of course, the drawback of this solution is that it takes some time to execute Clang-Tidy to dump the config. Yet, it's unclear to me if that's much slower than reading and hashing all the .clang-tidy files. So if desired, we could add this as option.

Merged. Thanks for the PR.


Update BRC-20 and Runes display logo

[x] Update logo BRC-20
[x] Update logo Rune
[ ] Update the default logo for just BRC-20, Runes do not have image.

Update network name:

[ ] Bsquare Network -> B² Network

Add Rune and BRC-20 with no logo for the test:

RUNE: MEME•MINT•MILLION
BRC20: fake


Callback on events

The goal here is to trigger a callback whenever something happen on one environment.
Example : Rostful <-> Pyros <-> ROS
Currently Rostful requests are forwarde to pyros and then to ROS.
But it would be useful if a change in ROS could trigger a change in Rostful. This would be useful in dynamically building url routes.
This is probably related to https://github.com/asmodehn/pyros/issues/67 and also to the feature of having ROS side able to be a client of a Web service, through Pyros (and maybe Rostful).

Just a quick update here, the current thinking is to have the client (rostful) establish a "hook" the first time it (discover and?) connect to pyros. Any further changes to the result will produce the new message that will be sent back to the client.


Implement bulk data loader

Create a system that does the following:

[x] Generate a sub dir in the build dir called data or something
[ ] Need to determine if the user will be bulk loading students into the student db directly or into a roster. If bulk loading into a roster then the user will need the ability to:

name the roster
create new columns(this includes naming them and choosing their type)

[x] In the UI ask the user if they would like to load data from a pre-existing file
[ ] If the user doesn't have a pre-existing file or doesn't want to load data from one, allow them to enter all the data they from the ui and then store said data into a .json file
[ ]  Build a subsystem that reads over the .json file that uses the mostly already built  C++ functions to store the data into to SQLite DB. Must be aware of the following:

The user will only be able to bulk load students to the student db or a to roster. They WILL NOT be able to bulk load rosters.
The .json key value pairs might be tricky. The user should have the ability to create a new column while running through the bulk data loader process. If they create a new column, the name of that new column needs to be sent to the db as well.
Probably way more

See image for possible example of how data will look after written to the .json file

Decided to use CSV files instead


Add strikethrough support

Part of microsoft/vscode#43504 - some useful tests I'd propose:

~
~~
nested italics/bold in strikethrough
nested inline code works and doesn't allow formatting inside the code

Closes #100.

@mjbvz I don't have view permissions on the tests. Any reason why the Windows job failed?

Nice work! Thanks. Will be in the next VS Code insiders build and in VS Code 1.64 if everything looks good

I think this would go great in microsoft/vscode#139688 :) syncing as we speak


Integrated Login - Mode 3

Hi,
I am trying to accomplish the following:
1-) Supposing I have tm1 server installed on oracle cloud.
2-) An external user_A from Company_A wants to access to tm1 using tm1py with integrated Windows authentication.
3-) This user_A does not have access to oracle cloud, which means - Windows that tm1 server is installed does not have this user registered (either local or AD).
4-) Because Oracle cloud does not use Company_A Ldap server (users can't login to oracle cloud machines), I just use ETLdap to export users UniqueID from Company_A Ldap server to }ClientProperties cube.
I would like to know what is the prerequisites to establish connection to tm1 using tm1py integrated login ? Is it enough just match UniqueID of }ClientProperties cube ? Or it is necessary that Windows (that tm1 server is installed) also have this user registered ?
from TM1py import TM1Service
with TM1Service(address='168.138.xxx.xxx',
                port='13000',
                integrated_login=True,
                #namespace=None,
                #integrated_login_domain='PLAN-DEM',
                    ssl=True) as tm1:
    server_name = tm1.server.get_server_name()

TM1pyRestException: Text: '' - Status Code: 401 - Reason: 'Unauthorized' -
Headers: {'Content-Type': 'text/plain', 'Content-Length': '0', 'Connection': 'keep-alive', 'WWW-Authenticate': 'Negotiate, Basic realm="TM1"'}

This is less of a TM1py question, and more of a generic TM1 API question. I would reach out to IBM support for questions about integrated login support first.
From: kaleming @.>
Reply-To: cubewise-code/tm1py @.>
Date: Monday, April 19, 2021 at 7:37 AM
To: cubewise-code/tm1py @.>
Cc: Subscribed @.>
Subject: [cubewise-code/tm1py] Integrated Login - Mode 3 (#532)
Hi,
I am trying to accomplish the following:
1-) Supposing I have tm1 server installed on oracle cloud.
2-) An external user_A from Company_A wants to access to tm1 using tm1py with integrated Windows authentication.
3-) This user_A does not have access to oracle cloud, which means - Windows that tm1 server is installed does not have this user registered (either local or AD).
4-) Because Oracle cloud does not use Company_A Ldap server (users can't login to oracle cloud machines), I just use ETLdap to export users UniqueID from Company_A Ldap server to }ClientProperties cube.
I would like to know what is the prerequisites to establish connection to tm1 using tm1py integrated login ? Is it enough just match UniqueID of }ClientProperties cube ? Or it is necessary that Windows (that tm1 server is installed) also have this user registered ?
from TM1py import TM1Service
with TM1Service(address='168.138.xxx.xxx',
            port='13000',

            integrated_login=True,

            #namespace=None,

            #integrated_login_domain='PLAN-DEM',

                ssl=True) as tm1:

server_name = tm1.server.get_server_name()

TM1pyRestException: Text: '' - Status Code: 401 - Reason: 'Unauthorized' - Headers: {'Content-Type': 'text/plain', 'Content-Length': '0', 'Connection': 'keep-alive', 'WWW-Authenticate': 'Negotiate, Basic realm="TM1"'}
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/cubewise-code/tm1py/issues/532, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AEK7GZX3K7LQM23M545CPL3TJQ5W7ANCNFSM43F6XMIA.

I think that will not work since the tm1 server is not within the boundaries of your AD.

It could work if you federate your AD eith the client AD or subtree of his
AD. It O would explore an OAuth provider solution and provide access with
that to the system. of course I am just brainstorming without exact use case
On 2021. Apr 20., Tue at 20:54, Christoph Hein @.***>
wrote:

I think that will not work since the tm1 server is not within the
boundaries of your AD.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/cubewise-code/tm1py/issues/532#issuecomment-823522609,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AHNEK3A6KPJQ5AWKG3GT543TJXEYFANCNFSM43F6XMIA
.

Thanks for the replies.
I will have a look in how to federate my AD @zsoltmoravcsik. It is a good suggestion.
I've found this documentation that maybe helps to accomplish it.


Customer feedback | az connectedmachine extension |  What values are okay for force-update-tag?

Feedback category
Missing information
Reference command
az connectedmachine extension create --foce-update-tag parameter
Request
From Learn Customer Feedback, a customer is looking for example values of the --force-update-tag parameter. Even if the parameter value will be unique to the customer's environment, please add 1 - 3 example values in the short-summary.
Doc link
https://learn.microsoft.com/en-us/cli/azure/connectedmachine/extension?view=azure-cli-latest#az-connectedmachine-extension-create
Customer feedback
"
What values are okay for force-update-tag
"

Thank you for opening this issue, we will look into it.


allow opening previous projects from terminal like code -p linux instead of passing the full path

allow opening a previous-opened project from a terminal opened in any directory instead of passing the full path for simplification
like this: code -p linux
instead of code /home/data/github/repos/linux
-p is short for --previous
the reference being the project is previously opened - if not, output no previous project named <linux>
the equivalent GUI process would be: open vscode  -> File -> Open Recent -> choose the project
why?
It's much faster and avoids 1 of 3 things:

navigating to the project directory and running code .
writing the full path in the terminal
opening vscode and loading the last opened project with all its settings and going through File -> Open Recent -> choose the project

This sounds like a pretty useful idea that I would use, like the z command.


Uncaught (in promise) DOMException: Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': An object could not be cloned.

I have received an error when i load the pdf file via http://mozilla.github.io/pdf.js/web/viewer.html in browser Google Chrome Version 46.0.2490.71 m
Actual in viewer: Page 2 and page 3 didn't render
(The PDF file is mentioned at https://drive.google.com/file/d/0B-7b1tfXVpRpenVuQS1ZXzJjMms/view?pli=1)
Uncaught (in promise) DOMException: Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': An object could not be cloned.
at Error (native)
at Object.MessageHandler.postMessage (http://mozilla.github.io/pdf.js/build/pdf.worker.js:1625:19)
at Object.messageHandlerSend [as send] (http://mozilla.github.io/pdf.js/build/pdf.worker.js:1590:10)
at Object.OperatorList.flush (http://mozilla.github.io/pdf.js/build/pdf.worker.js:12747:27)
at Object.OperatorList.addOp (http://mozilla.github.io/pdf.js/build/pdf.worker.js:12704:16)
at next (http://mozilla.github.io/pdf.js/build/pdf.worker.js:11668:24)
at http://mozilla.github.io/pdf.js/build/pdf.worker.js:11672:13

I can confirm that pages 2 and 3 do not render.

To pinpoint the issue, I used the debugger as follows:
// debugger in MessageHandler.prototype.postMessage
var port = new MessageChannel().port1;
port.postMessage(message); // error
port.postMessage(message.data.operatorList); // error
port.postMessage(message.data.operatorList.fnArray); // No error
port.postMessage(message.data.operatorList.argsArray); // error

var arr = message.data.operatorList.argsArray;
for (var i = 0; i < arr.length; ++i) try {
  port.postMessage(arr[i]);
} catch(e) { console.log(i, arr[i]); }
// prints 295, 512, 602, and for each index [Name, {MeshObj:[ ... ]}]

All Name objects are of type AIMesh, so I guess that the cause of the error is identical for all items. Using the technique that I described above, I tried to identify the cause of the serialization error:
var arr = message.data.operatorList.argsArray[295][1].MeshObj;
// for+try-catch as above: prints index 5,7,9,11,13,15 which are arrays of Name and Dict/Array.
// The names are Node, Segment, Vertex
var arr = message.data.operatorList.argsArray[295][1].MeshObj[5];
// for+try-catch as above: prints index 1,5,9,13 which are Dict objects

Dict objects are intentionally not serializable, so we have to figure out why they are being posted in the first place...
message.data.operatorList.fnArray[295]; // === 70 (which is OPS.beginMarkedContentProps)

We don't support marked content yet (I worked on it in #6269, but it's far from finished). If I look at PartialEvaluator_getOperatorList, I see that arguments for unrecognized operations are blindly passed through... I will submit a PR to ignore these operations to resolve the error.


[nrf fromtree] bindings: net: nfct: Utilize EasyDMA property

This adds additional memory region property
to NFCT peripheral. This is not mandatory
property, it adds possibility to user to
specify memory region for DMA transfer.
If it is not set then data buffer is placed
in default RAM with other data.
Signed-off-by: Kamil Gawor<EMAIL_ADDRESS>Signed-off-by: Dominik Chat<EMAIL_ADDRESS>(cherry picked from commit edf80447c9dab288ec4ce310f74d7d8e42132fcb)

@dchat-nordic Rebase needed here.

The same commit is included in upmerge https://github.com/nrfconnect/sdk-zephyr/pull/1555 .


Move all one-time initialization outside of the main loop

Enhancement Description
For example, an instance of CarbonBot is recreated on every iteration of the main loop.

Rephrased more accurately in issue #560


CQ or Backfill using Top() with tag does not create tag in result

System info: 1.0.0-beta3, official docker image
Steps to reproduce:

Create a measurement with some fields and tags
Create a continuous query or a backfill query with INTO clause while doing a select that looks like this:
select top(summary_field, tag1, 100) as total, tag2, tag3 INTO tops FROM previous_measurement where time < now() GROUP BY tag4, time(1d) fill(none);

Expected behavior:
Output should mimic this:
total, tag2, tag3 should be become fields, due to the way they're selected.
tag1 and tag4 should be tags.
Actual behavior:
Tag1 is created as a field, not a tag.
This behavior is irrelevant if you're just selecting, however when used as a select INTO, because it is not created as a tag, you don't get the data you should.
Observe:
> select... INTO...:
name: result
------------
time    written
0       5181

> select count(total) from tops;
name: tops
---------------------------
time    count
0       100

> show tag keys from tops
name: tops
---------------------------
tagKey
tag4

Because it did not create tag1, the series was not unique enough to accommodate all the data, and the points were considered duplicates, and overwrote one another. This is why there were 5181 points written, but only 100 are available in the destination measurement of the INTO.
I don't believe this issue is specific to my config. It appears as though this section of code hasn't been touched much since Feb 2016, and this situation is not covered by any tests in the code or documentation, or google group.
Let me know if I can provide additional information.

This is because when you put tag1 into the function, it outputs it as a field and you're writing it as a field. I think if you put tag1 in the GROUP BY instead of the function, you'll get what you want. Can you try that?

Doing that negates the affect of the top() command:
> select... INTO...:
name: result
------------
time                    written
1970-01-01T00:00:00Z    17243

> select count(total) from tops;
name: tops
---------------------------
time                    count
1970-01-01T00:00:00Z    17243

select count(total) from tops where tag4='2' and time > now() - 1d
name: tops
---------------------------
time                            count
2016-08-11T07:01:02.25711371Z   376

As you can see, it passed along all the data, and top returned more than 100 items
You are correct that it outputs tag1 as a field. That is the bug as far as I can see.

To further clarify -- by the way it handles tag4 in the group by, it seems to me it PROCESSES tag1 correctly as a tag instead of a field, its just that the output has it has it incorrectly as a field.
This is another component of my strategy to reduce cardinality: I'm storing limit top() output, with reduced cardinality, to be queried long-term and keep all other measurements/continuous queries leading up to this one as very short retention policies.
Unfortunately, until this is resolved, I cannot reduce cardinality on the step prior to this; and it grows by the day.
Please let me know if there's anything additional I can provide to clarify this issue.

We are currently looking at this and trying to figure out if there is an available solution to your problem. The underlying issue is that this is intended behavior and we reached the point where we aren't allowing breaking changes into the system anymore. When you perform a select and retrieve a tag, it is telling the system that you want that tag to be treated as a string field.
I'll be writing up an issue soon to address some of the problems that are related to this one that have been popping up to see if we can understand the underlying issue better. At the moment, I don't have a solution for you or a workaround. I'm sorry. I'll link that issue when I've finished writing it.

Thanks for the update.
In this instance, the underlying issue may be the top syntax which allows a tag.
It has also created some ambiguity in relation to the 'AS fieldname' -- as it only applies to the first item in the top() function.
For my specific situation, I'd be curious to understand what it would look like for the 'solution' to be that if tag1 IS also present in the 'group by' -- the only affect is that it toggles the top() output to have tag1 as a tag instead of field.
As I noted, currently having tag1 in both top() and group by effectively negates the functionality of the top() function.
So I'm not really sure exactly how having the same tag listed in top() and group by are coded to interact right now; but it would seem to be... not desired / not useful. So to reassign that behavior to a helpful case, may be optimal.

Checking in if there's any update, related issues that could be linked, etc.
This is still a sticking point for us, that I'd like to see resolved.
In the short term, I may need to select the data out, and insert it back in; emulating a continuous query, to get it in the format I need.

The issue is that series context is not preserved in the result of top(measurement,tag,number).
E.g.:
> insert mymeasurement,mytag=one value=1
> insert mymeasurement,mytag=two value=2
> insert mymeasurement,mytag=three value=3
> select top(value,mytag,1) from mymeasurement
name: mymeasurement
time                top mytag
----                --- -----
1488375608559605946 3   three

"mytag" is presented as a field in the output, so series context is lost in the results of top().
Group by doesn't help because it will return one result bucket for every tag value participating in the query, not just for the tag values returned by top():
> select top(value,mytag,1) from mymeasurement group by mytag
name: mymeasurement
tags: mytag=one
time                top mytag
----                --- -----
1488375598767546227 1   one

name: mymeasurement
tags: mytag=three
time                top mytag
----                --- -----
1488375608559605946 3   three

name: mymeasurement
tags: mytag=two
time                top mytag
----                --- -----
1488375603628085662 2   two

I had raised this with grafana originally, however it is the same issue as this one relating to the influx query.
https://github.com/grafana/grafana/issues/7605

@kostasb seems to have hit the nail on the head.  I had found exactly what he documented in my endeavors to similarly render a "top X by Y over time" graph.
select top(field, tag, number) from measurement where timeexpr group by time(interval)
will indeed return the top "number" (one per series) per interval, but the results themselves are a single series.  You would then try to add the appropriate tag to the group by:
select top(field, tag, number) from measurement where timeexpr group by time(interval),tag
However rather than getting the former results broken down into "number" buckets (one per tag) per interval the result is that every tag is returned and not just those resulting from the original top().  Instead of the one-value-per-series up to "number" of series, the results become the top "number" of values per series
There likely isn't much that Grafana could do with this since there doesn't see to be a way to get the needed data properly presented from Influxdb.
I've done quite a bit of searching and found that there are many that have tried to do similar, and there have been various attempted alternatives/workarounds not generally with success.  There are various similar scenarios trying to graph over time the top five processes by CPU, top five processes by memory, top five interfaces by traffic, top five temperatures by city, etc.  And those are just the simple/basic cases.
I too am curious if there has been any further discussion on available or planned solutions for this.

yep this would be gold to be able to achive
There are various similar scenarios trying to graph over time the top five processes by CPU, top five processes by memory, top five interfaces by traffic, top five temperatures by city, etc. And those are just the simple/basic cases.

+1000
Not being able to do this is killing us right now =>
There are various similar scenarios trying to graph over time the top five processes by CPU, top five processes by memory, top five interfaces by traffic, top five temperatures by city, etc. And those are just the simple/basic cases.

@jsternberg  Is there anything happening on this issue?

Here is a proposed approach for addressing this issue.  Looking for feedback in terms of the syntax (ok, not ok, good heavens NO!, etc.)
In essence, the proposal is to allow of an optional hint -- in the form of '::tag' to be added.  Here is an example:

Comments?

Unfortunately, I don't think the casting approach will work. The main problem is that casting is mostly used for telling the query engine how to read a query rather than how to write a query. So it would end up serving a double function that would be incredibly confusing for the query engine.
@rbetts brought up one possibility and I'm going to bring up another. One possibility is just to make a new function so we don't have the ambiguity anywhere in the system. The old function has the old functionality and the new function has the new functionality. This might be the cleanest solution since it completely separates from the old behavior.
Another potential way of doing this which prevents the need to add a new function is to check if any of the tags referenced in the top() or bottom() call are located inside of the groupings. I might just be limited at the moment, but I can't think of a reason why this query would ever be issued and give a reasonable response.
SELECT top(value, host, 2) FROM cpu GROUP BY host

There is no way that query can ever return the top 2 hosts because it tells the query to return the top 2 different hosts in a grouping that only has one possible host. It might be possible to modify things so if a top() query sees that it is being grouped by one of the fields that are being selected, it instead uses the tag rather than converting the tag to a field.

I've been trying to mock this out and here are the current state of my thoughts. My thoughts are chaotic and hard to describe at the moment, so I apologize if any portion of this is difficult to understand.
There are three points where we can possibly insert this behavior.

Within the functions themselves.
Output by the emitter.
A transformation done before inserting the points.

The first possibility is 1. Typically, the tags that are associated with an individual point are matched by the GROUP BY. The groupings also largely decide how points are ordered as they go through the query engine. In order to ensure the points are returned in the correct order, "buckets" exist to separate different groupings. The buckets are based on the outermost grouping within the query so SELECT ... FROM (SELECT ... FROM ... GROUP BY host, region) GROUP BY host is bucketed by the host variable and not the region. This means that the storage engine will return all points from the same host before it moves onto the next host regardless of anything else. These buckets are important to understand because they are what make the query engine work.
Now if we change the query engine so it treats the argument for top() and bottom() as a tag rather than a field, what is the output? If we handle this at the iterator level of the query engine, then we would keep the tag on every point. So if I have the following query with the following data (assume that this is in seconds):
cpu,host=server01 value=2 0
cpu,host=server02 value=4 0
cpu,host=server01 value=8 30
cpu,host=server02 value=7 30

> SELECT top(value, host, 1) FROM cpu GROUP BY time(30s)

We would need to get the following return:
tags: host=server01
time value
---- -----
30   8

tags: host=server02
time value
---- -----
0    4

If you notice the time values, this is a very strange output. First, it's nearly unreadable for a person to interpret this. If you add legitimate GROUP BY statements in there, it would become difficult to impossible to determine exactly what the query is saying.
But there's another concern and that's how we're processing the data. Imagine that host=server01 is the top value in the last interval, but is not included in any interval before that. To determine that this point should be displayed first requires reading all of the possible points that could be chosen first. While we could make this more efficient than having to keep all points in memory, we would still need to keep a minimum number of points in memory. If you have top(value, host, 10) and a GROUP BY time(...) that spans 10 intervals, you would need to keep a maximum of 100 points in memory at a time. The larger the interval, the more points you would have to keep in memory to ensure the ordering of the final output was correct. If you start to group by tags with high cardinalities, it could potentially lead to too many points being kept in the system at a time (especially in regards to subqueries). I can expand on that more if needed since I have skimmed over a lot of the technical aspects of how this would work, but I would have to do that as a separate comment.
The positives of doing it this way would be a more cohesive system. It would be possible to then process the output of this query as if it were a subquery. So if you wanted to count how many times a host is the top cpu consumer, you could do SELECT count(top) FORM (SELECT top(value, host, 1) FROM cpu GROUP BY time(30s), host) GROUP BY host). It also means we don't have to add hacks to other parts of the system to convert a field back to a tag.
But let's explore those options since the query performance of the first method is suspect.
The problem with 2 is that I don't really think it resolves the problems of 1. While it makes it so I don't have to change anything internal to the query engine, the points will still arrive out of order and you will get an output that I consider to be nonsensical. The positives of this one is that it makes it easier to write the data as tags because they will actually be tags.
The third is likely the easiest way to resolve this, but I think it's very hacky and I'm not sure how much I like it. If you perform the conversion before writing by adding some "cast before writing" mechanism, then the ordering doesn't matter since none of the points matter. But it means that you can't do any manipulation of the results with subqueries.
I'm still thinking about the third option though. Something seems wrong to me, but I can't really put it into words. I'm going to start working on a mockup until I can't put those words into feelings. Maybe that will bring up some ideas of why that's not a suitable method of doing this.
For its credit, the third option is the original request. So while I have my reservations, I do think it's possible and that we would be able to do it. Writing this out helps me work through the problem.

For the third option as listed above, any thoughts about something like this as the syntax? Since the third one has to do with only writing the points, I want the syntax to not be possible unless an INTO is included.
SELECT top(value, host, 2) INTO db0.rp0.:MEASUREMENT WITH host AS tag FROM db0.autogen.cpu ...

We're currently exploring an idea with changing the current top() and bottom() implementations that should improve memory performance. May or may not improve speed, but any improvement in speed will likely be from fewer memory allocations rather than any algorithmic change.
For implementing this, we're considering an idea where doing SELECT top(value, host, 2) FROM cpu will have the existing behavior, but adding SELECT top(value, host, 2) INTO ... FROM cpu will cause it to implicitly write the fields as tags instead. Since, based on this issue, the old behavior for SELECT ... INTO ... doesn't practically work anyway, I think this should give everyone what they want.
Before yesterday, I didn't think this idea was feasible due to the ordering of the query if we kept the output as tags instead of converting them to fields. I realized yesterday that, when writing, the ordering of the points didn't matter so it is very likely we can do this when writing even if we cannot do it when using a normal SELECT.
We hope that will work for this issue. If you need to do a normal query and retain the tags with top() for some reason like a subquery, it should be feasible to create a continuous query to write the data and then query that data with the tags.

The optimization I described above is implemented in #8394.

but this still doesnt work with grafana!?

Would someone mind explaining how this is fixed?  Or is this only fixed for continuous queries that use the into_clause? I just upgraded to influxdb-1.4.2-1 and i still dont see have tags in the results.
select top("readdata",svm,volume,4) from (select mean("read_data") as "readdata" from vol where time > now() - 6h group by svm,volume)

name: vol
time                           top                 svm           volume
----                           ---                 ---           ------
2017-12-14T11:57:41.577182444Z 0.2910053643834527  testnas1b     vol0
2017-12-14T11:57:41.577182444Z 0.21032861140611472 test_storage1 splunk_vol02
2017-12-14T11:57:41.577182444Z 0.20021185479140136 test_storage1 splunk_vol01
2017-12-14T11:57:41.577182444Z 0.1810521717978208  test_storage1 splunk_vol03

This feature only applies for writing data back into the database. If you don't use INTO, it has the old behavior.


⚠ Secret Website 3 has degraded performance

In bf50695, Secret Website 3 ($SECRET_WEBSITE_3) experienced degraded performance:

HTTP code: 200
Response time: 2153 ms

Resolved: Secret Website 3 performance has improved in cdf1fa1.


Lot's of cleanups in TypeCheck.fs

This made me look and wonder why only few functions of Option module are inline, it seems there are a fair share of Option.bind / Option.iter that could be used.

@forki
Thank you for taking care of this
Kevin


[bug] Connecting to WalletConnect-based wallets in Chrome on iOS returns users to a blank tab

Is there an existing issue for this?

[X] I have searched the existing issues

RainbowKit Version
0.3.4
wagmi Version
0.4.10
Current Behavior
When connecting to a WalletConnect-based wallet in Chrome on iOS, once you've connected and been returned to the browser, you're presented with an empty tab at about:blank. You then need to manually close to return to the original page that triggered the connection.
Expected Behavior
You should go back to the same page you were on previously.
Steps To Reproduce

Go to https://rainbowkit-example.vercel.app in Chrome on iOS.
Tap "Connect Wallet".
Tap "Rainbow" -> Goes to Rainbow app.
Tap "Connect" -> Goes back to browser.
See about:blank tab.
Close tab to return to original page.

Link to Minimal Reproducible Example (CodeSandbox, StackBlitz, etc.)
https://rainbowkit-example.vercel.app
Anything else?
It's likely that this affects other browsers, but so far I've only attempted to reproduce this in Chrome.

I tried to find a fix for this and these two approaches seem to work:

For the wallet options on mobile, render links instead of buttons. While it seems simple on the surface, supporting this would require a decent change to our architecture. Or;
Use window.location.href = ... rather than window.open when navigating to the app's universal link. This is a much simpler fix but we'd need to validate that this doesn't have unintended UX impacts for users who don't have the app installed.

+1 for window.location.href. It also solves a weird unrelated but similar issue.
The below is opened in "in-app twitter" browser.
with window.open
https://user-images.githubusercontent.com/23293248/175381493-30271a16-e18f-445b-8cf8-946b1a2c236c.MP4
notice the window becomes blank. Snippet used for testing (added with safari mac devtool)
$0.addEventListener('click',()=> {
   window.open("https://rnbwapp.com")
});

with window.location.href
https://user-images.githubusercontent.com/23293248/175381532-58612d05-2358-4a48-9da9-2b99c1ebbc41.MP4
window doesn't become blank.
$0.addEventListener('click',()=> {
   window.location.href = "https://rnbwapp.com"
});

I've opened a PR with a fix for this: https://github.com/rainbow-me/rainbowkit/pull/540
I found that creating a link in memory with target set to "_blank" and then calling .click() on it also fixes the issue, while preserving the behaviour that users without the app installed get a new tab to prompt a download rather than replacing the current page.

Fixed in RainbowKit v0.3.6.


Fix Date parsing in consuming Substrait plans

Created for discussion purpose and not yet ready for reviews.
This is an early draft for adding date parsing for Substrait plans with Date field.

closing in favor of https://github.com/facebookincubator/velox/pull/3846