[$250] [Payment card / Subscription][HOLD #46933] Add SCA support in Transfer Owner flow

Per this discussion in the Payment card and subscription management in NewDot design doc, we need to support adding a GBP payment card in the "Transfer Owner" flow.
To test

As the owner of a Collect policy, add a new admin
Log into NewDot as that admin
Navigate to Account Settings > Workspaces > [workspace] > Members > click on the row of the current owner > Transfer Owner

Currently, when transferring ownership of a policy in NewDot, the AddBillingCardAndRequestPolicyOwnerChange API command is called. That command is calling UserAPI::addPaymentCard, which doesn't account for “Strong Customer Authentication” aka SCA requirements (which are relevant for GBP-currency payment cards).
Once SCA support is built out for NewDot in the Payment card project, we should use it as a base to extend to the Transfer Owner flow.
Update September 5th 2024
SCA support is now in new dot but making SCA possible for the transfer owner flow has required doing a lot of backend work to make it follow our 1:1:1 rule where 1 action equals with call to the web layer which equals one call to the Auth layer.
Once both of these PRs are merge though (1, 2) then this issue should be unblocked. From there we should follow the plan outlined in this comment to use the new VerifySetupIntentAndRequestPolicyOwnerChange command to complete the SCA transfer owner flow.
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~021832164283072592668
Upwork Job ID:<PHONE_NUMBER>072592668
Last Price Increase: 2024-09-06

Issue OwnerCurrent Issue Owner: @ntdiary

Still waiting for SCA to work in the subscription page, making progress.

Picking this up.

Hmm okay, looked at this this afternoon. Notes for myself:

this is where we decide whether to go through with the transfer or to ask for the user to add a card in App. Depends on whether RequestWorkspaceOwnerChange returns an error or not.
It seems like we have a couple options here, but I think the best is gonna be a purely frontend change. I think we can get rid of AddBillingCardAndRequestPolicyOwnerChange entirely, which is nice since that command is not 1:1:1

Current thinking: lets just do the same thing we did with the add payment card form here. We can use addSubscriptionPaymentCard() in place of addBillingCardAndRequestPolicyOwnerChange() right here. If its a non-GBP currency it'll go through as normal, and if it is GBP it'll start the setupIntent flow and will give us an authenticationLink that we can use to render a CardAuthenticationModal component. Then, in WorkspaceOwnerPaymentCardForm.tsx we can add two useEffect hooks, one to wait for the onyx key fundList to update, and one to waits for a 3DS-authentication-complete postMessage. The hook that is waiting on the 3DS post message will do basically the exact same thing that we do in add Payment card (see here), and the hook that waits for the fundList to update will check if the fundList has updated, if it has it'll check to make sure the billing card doesn't have any errors associated with it, and if it doesn't then it'll call the existing RequestWorkspaceOwnerChange command to change ownership.
I'm not actually even sure that we need to do that last part where we call RequestWorkspaceOwnerChange since it looks like we might currently be making duplicate calls. Before assigning this out to anyone I'm going to look into it more. But yeah, on initial inspection I think this can be all frontend and we can maybe even get rid of a whole command on the backend.
Follow up items for @blimpich to look into:

[ ] does the transfer ownership flow break if we delete this line in web? Seems like it shouldn't, seems like we might be calling the web api PolicyAPI::transferOwnership twice right now in this flow, which would make it redundant

Yeah that line seems to be redundant, so I don't think we need AddBillingCardAndRequestPolicyOwnerChange at all.

Okay I made a proof of concept branch just to see if this idea would even work, and it does! I can transfer the owner by just waiting to see if the fund list updates and then triggering a RequestOwner. However after thinking about this more I think this might be violating our 1:1:1 philosophy.

Ran out of time but I will ask in engineering chat tomorrow if my plan violates 1:1:1. If that is the case then we will need to probably do a good amount of work to make a new endpoint and make it 1:1:1.

Seems like we can't use my proof of concept branch since the user is doing 1 action, and therefore we should be doing 1 api command. Which means we need to probably create a new command since the current AddBillingCardAndRequestPolicyOwnerChange is not 1:1:1. Will start work on that.

Well actually, the more I think about this the more I think its literally not possible to do this all in 1 api command. We have to go through stripe 3ds verification process, which requires first getting an authentication link from stripe in the backend. And then with that authentication link we render a new 3rd party screen that the user uses to verify their payment method. I don't know how we would do that without making two calls. Will ask engineering-chat

Yeah this is a weird edge case of 1:1:1 since if the card doesn't need SCA authentication then technically we are breaking 1:1:1, but if it does need it then the two api commands actually kind of make sense since the user does 1 action to add the card, and then one action to authenticate the card.

Okay so I've noodled on this long enough that I'm confident this can be done all on the frontend and in a way that is also 1:1:1 compliant. Here are the flows that I want to happen:
Setup for either flow:

create user A with a collect workspace
create user B
Add user B to the workspace as an admin
user B navigates to Workspaces -> Workspace -> Members -> User A -> click Transfer Owner
In the network tab there should be a request to RequestWorkspaceOwnerChange that responds with jsonMessage: "Current user does not have a billing card."

Flow 1: Transfer ownership with a non-GBP billing card

Fill out payment card form and make sure the currency is not GBP.

Click "Accept terms & add payment card"

In the network tab we should see 1 call to AddPaymentCard and the UI should change to a right-pane that says "Take over annual subscription". See below image for reference.

Click "Transfer subscription" button

In the network tab should see 1 new call to RequestWorkspaceOwnerChange and should see success screen that says "Woohoo! All set."

Note: this is very similar to how the current implementation works, except instead of calling AddPaymentCard we call AddBillingCardAndRequestPolicyOwnerChange.

Flow 2: Transfer ownership with a GBP billing card

Fill out payment card form and make sure the currency is GBP.
Click "Accept terms & add payment card"
In the network tab we should see 1 call to AddPaymentCardGBP and a new iframe modal should pop up with Stripe's 3DS verification screen.
Click "complete"
In the network tab there should be 1 call to User_VerifySetupIntent, the iframe modal should close, and the right-pane UI should change to the UI that says "Take over annual subscription".
Click "Transfer subscription" button
In the network tab should see 1 new call to RequestWorkspaceOwnerChange and should see success screen that says "Woohoo! All set."

Completing this will probably involve refactoring how our current transfer owner code is setup and also will need to leverage code that was added recently to make Strong Customer Authentication (SCA) enabled billing cards possible.
In order to work on 3DS authentication you'll also need to use my ngrok credentials, which are listed below.
Ngrok credentials
NEW_EXPENSIFY_URL=https:/
NEW_EXPENSIFY_URL=https://new.expensify.com/
SECURE_EXPENSIFY_URL=https://secure.expensify.com.dev/
EXPENSIFY_URL=https://www.expensify.com.dev/
EXPENSIFY_PARTNER_NAME=chat-expensify-com
EXPENSIFY_PARTNER_PASSWORD=e21965746fd75f82bb66
PUSHER_APP_KEY=ac6d22b891daae55283a
SECURE_NGROK_URL=https://secure-expensify-blimpich.ngrok.io/
NGROK_URL=https://expensify-blimpich.ngrok.io/
USE_NGROK=true
USE_WEB_PROXY=false
USE_WDYR=false
CAPTURE_METRICS=false
ONYX_METRICS=false

PUSHER_DEV_SUFFIX=-def525f225124b848df43bee41aa4e7c

Notes on using my ngrok credentials:

all magic codes will be 000000
you won't get most emails/notifications unless I run a script on my local machine
my ngrok will only work when I'm online. I generally work 9am-5pm PST hours.

The problem with this plan is that the current frontend is designed around redundant calls to transferPolicyOwnership in the backend. Which means this is actually a lot of work if we actually want this to be actually 1:1:1.

Ignore the ping @RachCHopkins, I thought I was gonna make this external but realized I need to do some backend work first.

Putting this on hold since we need the backend changes first before a contributor can pick this up.

Putting this as weekly since its on hold for now.

Not overdue, on hold.

Updated the description of the issue with new information. Still waiting on held issue to move forward on this.

Intending to assign to @waterim based off this conversation.

Hello, Im Artem from Callstack and would like to help with this issue!

Done!

Backend PRs are merged, waiting deploy. @waterim if you use my ngrok to start working on this if you should be able to hit the new VerifySetupIntentAndRequestPolicyOwnerChange endpoint. If not then just wait till tomorrow when this should get deployed and you'll be able to hit the endpoint without using my ngrok.

Though I suppose you'll need my ngrok anyways to get SCA to work, forgot about that 😅

@blimpich Thank you!
Starting today with that issue

Looks like we're still working through the PR

Not overdue, under development
Im in contact with @blimpich

PR is in review, @ntdiary you will need my ngrok credentials in order to test this PR. Please see this comment for the credentials and some common questions about using ngrok. Please put those credentials into your .env file in App.

Reassigning C+ as per this discussion.
@DylanDylann please see this comment for my ngrok credentials and details on the flows that we are testing: https://github.com/Expensify/App/issues/42490#issuecomment-2272376992

@DylanDylann I'm signing off for the day but are you going to be able to review this tomorrow during my work hours (9am-5pm PST)? I'd like to keep the ball rolling on this PR. Thank you!

@JmillsExpensify The PR is deployed to production on 2/10. The payment should be ready on 9/10

Ah sorry about that.
Payment summary: $250 for @DylanDylann for PR review and testing. Payment via Upwork.

All paid out.


Hello World -- limited buffer size seems like too much for an introduction exercise

The hello world exercise tests that the implementation is careful not to write out of bounds. While this is good practice, it seems excessive for a hello world. This may be someone's first exposure to C, to unit testing, and to Exercism, so it seems that we should save buffer overflows for a later topic.
I'd like to update the hello world exercise to use a comically over-sized buffer and save this topic for a later exercise. Thoughts?

I think it's a bit over the top to have a Hello World exercise where you have to print into a buffer (after, of course, you figure out that's what you're supposed to do), understand how strings terminate, understand NULL pointers (potentially), and understand what buffer overflow even is.
I'm in favor of making Hello World as easy as possible, but even throwing out the need to check the buffer size still doesn't make it easy to understand. I don't see how it can be an easy C intro while still enabling unit tests.
(I think a lot of the problems are very string heavy for C, so that's just going to be a problem.)

I'm in favor of making Hello World as easy as possible

💯 percent!

I think a lot of the problems are very string heavy for C, so that's just going to be a problem.

We might be able to skip some of the string-heavy stuff in this track, and also we can put string-heavy stuff towards the end of the list, if it's harder to deal with.

We might be able to skip some of the string-heavy stuff in this track, and also we can put string-heavy stuff towards the end of the list, if it's harder to deal with.

I agree 100%. Too much tedium, not enough actual learning.


nimble/gatt: Fix null pointer dereference

Modify ble_gattc_proc_matches_conn_rx_entry to return 0 in case no matching entry found to avoid accessing Null Pointer.

@mfarag13 I updated the PR because we need to merge this fix but you are still the author.


Merge slots and context in tests

Tests are failing because some pieces of information are provided in the context and the tests are expecting them in the slots.
E.g. sentences
intents:
  HassTurnOff:
    data:
      - sentences:
          - "turn off [all] [the] fan[s]"
        slots:
          domain: fan
        requires_context:
          area:
        response: fans_area

responses
responses:
  intents:
    HassTurnOff:
      fans_area: "All fans turned off in {{ slots.area }}"

tests
tests:
  - sentences:
      - "turn off the fan"
    intent:
      name: HassTurnOff
      slots:
        domain: fan
      context:
        area: kitchen
    response: "All fans turned off in kitchen"

E                   AssertionError: Incorrect response for: turn off the fan
E                   assert 'All fans turned off in' in {'All fans turned off in kitchen'}

tests/test_language_sentences.py:157: AssertionError
==== short test summary info ====
FAILED tests/test_language_sentences.py::test_fan_HassTurnOff[ro] - AssertionError: Incorrect response for: turn off the fan
==== 1 failed, 18 passed in 6.54s ====

This should be fixed now.

It isn't. Please test with the example above.


[DO NOT MERGE] Scala3 test

This is a draft PR to showcase how complicated is to migrate to Scala3.
It includes a necessary change as well (removal of Scala Collections Compat and Java8 Compat libraries). This is needed as those libraries' only purpose was to cross-compile to Scala 2.11 and 2.12.
After this is done, only a bit of workaround gradle was needed (library names for Scala 3 compiler changed).
The only code change needed is the renaming of methods like asJava, asScala, until, from, and to which  were since Scala 2.13.0 (Compat libraries were shadowing those). And this change is pretty automatic.
On the test file (only 1 didn't really compile) only the right new import needed to be brought in.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

Thanks for the PR. If I understand correctly, this assumes we would drop Scala 2.12 compatibility. That makes sense, but it does mean waiting quite a while (12+ months).

Yes, you are right, this assumes drop of Scala 2.12 compatibility. I did it this way because it was quicker to offer. We could probably still make it work with Scala 2.12, but probably might need a couple of extra changes for all the versions to co-exist. I can also look into it.

Thanks for the PR. If I understand correctly, this assumes we would drop Scala 2.12 compatibility. That makes sense, but it does mean waiting quite a while (12+ months).

Shall I try to work on supporting the 3 Scala versions?

Closing in favor of https://github.com/apache/kafka/pull/11025


Can it replace conda?

The slowest thing is not pip, it's conda.

There have been previous issues discussing conda, but given the current support for it, I don't see it as a priority in the near future.

https://github.com/astral-sh/uv/issues/1703

Thank you for your reply. Judging from the description of uv, it appears that some C++ shared object (.so) library dependencies cannot be properly handled in uv. This is a significant strength of conda. Literally, some Python libraries such as torch, librosa, and sox-python, etc., require their own.sos. Some even need a more appropriate libstdc++ ABI. In this regard, what is the current support status of uv?
If this can be supported, wouldn't conda can move into trash?

Shared libraries in packages are supported through the manylinux standard, which is widely used by machine learning libraries.

If t would be awesome if ‘uv’ could install a .conda package into a venv.
However, it looks like conda convert could be used to turn the packages into wheels, which uv knows how to work with.
On Windows, and likely other platforms, Anaconda bundles hundreds of these .conda packages in the anaconda3/pkgs directory. If one could use this directory as a package source (index) for uv, that would be sweet. uv makes environments way faster than conda.

Let's discuss this in https://github.com/astral-sh/uv/issues/1703 instead


interesting UX issue worth mentioning in the README

when running a batch command, it sometimes behaves different compared to running the same batch command in a BAT file.
e.g. variables need to be %%A in the BAT file, but %A in the command
when we run execute code, we execute the "command". or at least that's what I thought.
But for my code to execute correctly, I need to use the code that works in the BAT file. Not the command. so %% isntead of %

Interesting! I think that a different mental model is at fault -- I agree that this should be documented under the shell section.


Parse from raw bytes

YAML 1.2 spec all valid encodings are listed:
On input, a YAML processor must support the UTF-8 and UTF-16 character encodings. For JSON compatibility, the UTF-32 encodings must also be supported.

If a character stream begins with a byte order mark, the character encoding will be taken to be as as indicated by the byte order mark. Otherwise, the stream must begin with an ASCII character. This allows the encoding to be deduced by the pattern of null (#x00) characters.

IIUC the main loader API  is load_from_str which takes a rust str which is a unicode string whose internal representation is UTF-8.
There are many ways such a string can be loaded from external input such as file, network, etc; some of them require the users to specify which encodings to support, while others might only support UTF-8)
Callers of the yaml-rust API might not be aware of the subtleties of the YAML-1.2 spec w.r.t allowed input encodings, and hence might decide to load the external YAML file using an UTF-8 decoder (because "everybody is using UTF-8, right?"). The resulting application will thus not accept all valid YAML-1.2 input byte streams.
If the yaml-rust library offered an API that accepts the raw input stream instead of a pre-decoded string, then the user would delegate the library the task of dealing with the gory details of the encodings.
For this to work, the API must be natural to use with files and other input streams and compete with the simplicity and terseness of:
let s = fs::read_to_string(filename).unwrap();
let docs = YamlLoader::load_from_str(s).unwrap();

I'm a rust noob so I won't detail a proposal here. No idea if the Read trait is idiomatic in those cases etc.
The underlying parser expects an Iterator<Item = char> , so anything that can produce such a thing should do.

Blocked on #139

@mkmik AppVeyor is green now: https://ci.appveyor.com/project/chyh1990/yaml-rust/builds/34017061


Pre-built nif for x86_64-linux-musl possible?

Thanks for this library!
Since I'm using alpine images, I would need to add build tools to the chain or introduce another build image into the docker process, so I wondered if it would be possible to provide a pre-built x86_64-linux-musl nif for every release too, without too much more effort on your end?
Best regards
Andreas

Hi @alappe Yes it can be done, I am looking into this and will release a version soon with the support.
Same as #90

Ah, I didn't see this one – sorry and thank you very much!


Adding vcftools relatedness2 output file

Adding relatedness2 test file from https://github.com/ewels/MultiQC/issues/411

Thanks!


Semantic HTML elements

Semantic HTML elements can be found throughout the source code

Semantic HTML elements added and used in CSS


Support incremental load in Druid lookups

This commit adds support for incremental load in druid lookups.
Description
For larger lookups with millions of rows, reloading of the lookup is very hard on the JVM due to GC pressure. After this change, during reload, only entries that were modified after the last db update would be added to the same underlying cache object.
Funnily enough, Druid docs say that this feature is already supported in Druid but that wasn't the case.
Changes:
In JdbcCacheGenerator, only read newly modified rows from the Database.
in CacheScheduler, added new method createFromExistingCache to add cache entries to the same underlying cache.
additions to NamespaceExtractionCacheManager interface for creating new cache object from the same underlying ConcurrentMap.
current limitations:

incremental load is not supported for OffHeap lookups
Does not handle the deletes from the DB.

We at Twitter have been using these changes for more than few months now and the performance of lookup reload has been significantly better.

This PR has:

[x] been self-reviewed.

[x] using the concurrency checklist (Remove this item if the PR doesn't have any relation to concurrency.)

[x] added documentation for new or modified features or behaviors.
[ ] added Javadocs for most classes and all non-trivial methods. Linked related entities via Javadoc links.
[x] added comments explaining the "why" and the intent of the code wherever would not be obvious for an unfamiliar reader.
[x] added unit tests or modified existing tests to cover new code paths.
[ ] added integration tests.
[x] been tested in a test Druid cluster.

Key changed/added classes in this PR

JdbcCacheGenerator
CacheScheduler
NamespaceExtractionCacheManager
OnHeapNamespaceExtractionCacheManager
OffHeapNamespaceExtractionCacheManager

Hi, there
I'm working on something like this PR.
I think it will work well for off-heap cache and partial fix issue #3771.
We can use some tricks for delete, user should update value as null and update tsColumn, we will remove it from cache.
Then user should add index for tsColumn. add uniq-index for key column is a good idea.
It better to add a force flush (incremental) cache API to avoid some human error.

Also please fix TeamCity errors:

https://teamcity.jetbrains.com/viewLog.html?buildId=2546983&tab=Inspection&buildTypeId=OpenSourceProjects_Druid_InspectionsPullRequests

Hi @swapneshgandhi, apologize for delayed review. The failed CI doesn't look legit, but would you please merge master because the last CI run was quite a while ago?

Hi @swapneshgandhi, apologize for delayed review. The failed CI doesn't look legit, but would you please merge master because the last CI run was quite a while ago?

Thanks!, Ok just did a rebase from master.

This pull request introduces 1 alert when merging 2eceb73 into 2c49f6d - view on LGTM.com
new alerts:
* 1 for Spurious Javadoc @param tags

I don't understand why this is complaining, the param it complains about does exist.

@jihoonson let me know if you had any more comments?

Oops, sorry @swapneshgandhi. I will take another look soon.

thanks,
I'll try to address your comments in a couple of weeks

I still haven't had chance to work on this one, hopefully over the next few weeks I can work on it.


Cool project and question

This is a very cool project! There is a use-case for which we often have a need, and I wonder if it's enabled by impg.
Say I have an a collection of (RNA-seq) reads aligned against the genome (including spliced alignments), and likewise an annotation for this genome describing the known transcripts.  I'd like to "project" the genomic alignments against the transcriptome.  In general this is a one-to-many projection, as one genomic locus may often overlap many alternatively-spliced transcript isoforms.
This capability is built into STAR — it can output both genomic and transcriptomic alignments at once. However, I'm not aware of other aligners (e.g. HISAT2) that have this capability.  Likewise, STAR doesn't expose it as independent functionality, but just a flag during normal operation.
However, having such capability would be very useful in general (as would going the other way from transcriptomic to genomic coordinates).
Is this something that impg can do, or that it might be possible to make impg do?
Thanks!
Rob

If you create a PAF file by aligning the transcriptome (your query) against the genome (your target), you can use it to project any genome range onto the transcriptome.

From: Rob Patro @.>
Sent: Saturday, April 13, 2024 16:17
To: ekg/impg @.>
Cc: Subscribed @.***>
Subject: [ekg/impg] Cool project and question (Issue #5)
This is a very cool project! There is a use-case for which we often have a need, and I wonder if it's enabled by impg.
Say I have an a collection of (RNA-seq) reads aligned against the genome (including spliced alignments), and likewise an annotation for this genome describing the known transcripts. I'd like to "project" the genomic alignments against the transcriptome. In general this is a one-to-many projection, as one genomic locus may often overlap many alternatively-spliced transcript isoforms.
This capability is built into STAR — it can output both genomic and transcriptomic alignments at once. However, I'm not aware of other aligners (e.g. HISAT2) that have this capability. Likewise, STAR doesn't expose it as independent functionality, but just a flag during normal operation.
However, having such capability would be very useful in general (as would going the other way from transcriptomic to genomic coordinates).
Is this something that impg can do, or that it might be possible to make impg do?
Thanks!
Rob
—
Reply to this email directly, view it on GitHubhttps://github.com/ekg/impg/issues/5, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AO26XHTVPYN7BPS5DSTQJFDY5GOFDAVCNFSM6AAAAABGFYCTDGVHI2DSMVQWIX3LMV43ASLTON2WKOZSGI2DCNZYGQYDGMQ.
You are receiving this because you are subscribed to this thread.Message ID: @.***>


Guzzle version conflict

Hi i was trying to install this in my Laravel 8 project but it gives a guzzle version error, as this package depends on guzzle 6 but Laravel 8 and most of the latest packages require guzzle 7.
It wil be very helpful if you can provide some solution.
Thanks

@rennokki  if you can please look into this, thanks in advance.

It seems like it's because sc0vu/web3.php enforces 6.0 for guzzle, so nothing I can do for now. 😨

okay thanks for the quick response, i will look into raw JS library then.

@UnifySoftTech Best I can do is to switch to PHP Web3 package: https://github.com/renoki-co/laravel-web3/pull/21

well if this can be helpful


Added rate command and made bot always value keys using sell price

Removed function getKeyPrices and replaced it with getKeyPrice inside app/prices.js

The bot will use the sell price for keys as their value

Save only key price in polldata instead of both buy and sell for keys
Added rate command used to see what the bot values keys at

Would this not cause possible errors with trading? Since you're using the same price for both buy and sell

Would this not cause possible errors with trading? Since you're using the same price for both buy and sell

I have thought about it but it should not be a problem. The reason to why we need to use one key price is so that 1 key is always worth the same when trading items. Say someone offers you 1 key for your item priced  at 1 key, then those two values will actually be 1 * key buy price and 1 * key sell price, meaning that the values don't match.
For trading keys it will use the buy and sell price, but when trading items it will use the sell price on both sides.

When looking at the code I might have broken key banking, so I need to fix that.

When looking at the code I might have broken key banking, so I need to fix that.

Fixed it: https://github.com/Nicklason/tf2-automatic/commit/5667cc22b180ae10ad666bc8499b6dd985ca1ac7


Opening a targets file or project file results in warnings about unrecognized properties and items

Opening a targets file or project file in Visual Studio results in warnings about unrecognized properties and items. We should stop this warning from occurring. Looking at the schema, it seems impossible to have a schema that both provides IntelliSense for available properties/items, while at the same time not warning when you enter an "unrecognized" property/item.

This is where a POCO-based schema system would be worth its weight in gold and then some. :)

@RaulPerez1 is looking at it.

This is fixed now.


[DeploymentScripts] Add tail query string

Latest improvements:
MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[x] I have reviewed the documentation for the workflow.
[x] Validation tools were run on swagger spec(s) and have all been fixed in this PR.
[ ] The OpenAPI Hub was used for checking validation status and next steps.

ARM API Review Checklist

[ ] Service team MUST add the "WaitForARMFeedback" label if the management plane API changes fall into one of the below categories.
adding/removing APIs.
adding/removing properties.
adding/removing API-version.
adding a new service in Azure.

Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs.

[ ] If you are blocked on ARM review and want to get the PR merged urgently, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.
Please follow the link to find more details on API review process.

/azp run automation - sdk

/azp run automation - sdk

/azp run automation - sdk

Can one of the admins verify this patch?

/azp run automation - sdk

/azp run automation - sdk

/azp run automation - sdk

@NullMDR , can you please have a look at the SDK Java failures?

@raych1 It's github's failure. You can just ignore this.

/azp run automation - sdk


Include license information

You should consider including license information (MIT, BSD, Apache2... etc) to help minimize friction for developers who wish to leverage your wonderful library in an environment where things like that matter (enterprise... etc).

+1 this looks really interesting but I cannot use it if it doesn't specify a license.

This can be closed since there's a license now: https://github.com/gka/d3-jetpack/blob/master/COPYING


The initialization window matches the editor base color or splash background color

This pr is a graft for #53922, due to the fact that #53922 has a lot of conflicts for a long time, and the code is modified as required. pr has been manually corrected to can be merged correctly.

Looks superb! Thanks for redoing it!

Can this be implemented on platforms other than Windows?

Can this be implemented on platforms other than Windows?

Window BG color can be set on macOS, but it's never visible.

Can this be implemented on platforms other than Windows?

I work on Windows, and the publishing platform is also Windows. The white screen is also the most obviously on Windows.If this problem occurs then on other platforms, then this pr should serve as a helpful foundation.

Can this be implemented on platforms other than Windows?

I work on Windows, and the publishing platform is also Windows. The white screen is also the most obviously on Windows.If this problem occurs then on other platforms, then this pr should serve as a helpful foundation.

Godot's X11 platform doesn't display any color when creating a window, so I think it's fine to have this only for Windows for now.

Wouldn't it be simpler to just hardcode a black color in the Windows window creation instead of doing all this? Or just delay showing the window until it has something to render?

Either of these approaches sound good to me.

Overall I'm not too fond of these changes personally, I find this adds significantly complexity to the setup for what seems to be a fairly niche need on Windows only. Having to parse editor config before the editor settings have been initialized just to retrieve a configurable theme option seems hacky.
For the running project, we have boot_bg_color, isn't that sufficient?
Wouldn't it be simpler to just hardcode a black color in the Windows window creation instead of doing all this? Or just delay showing the window until it has something to render?

If feel that too many changes will not bring benefits, then you can see #53806
I will also turn off this pr

I really apologize that this this idea only comes up now, but would it not be simpler to just define "application/boot_splash/bg_color" earlier on? (We could put the boot splash stuff in ProjectSettings instead of Main), and then simply get it via GLOBAL_GET in the platforms that support this and set it? I think it may be simpler in the end and only affect the platforms where it can actually be done, and no code in main/ needs to change (in fact it will be simpler because we remove the GLOBAL_DEFS)

sorry,there may not be much time recently. I modified as suggested and found that if you put the get/set color code into display_server_windows.cpp, it will cause some problems. First, you cannot use the default definition of boot_splash_bg_color, and secondly  if you want to use the default color defined by the editor theme, then To introduce editor_node.h, my local test will compile errors. If peek_cfg_theme_color() is implemented in display_server_windows.cpp, it will introduce other .h files more than necessary, causing pollution. Therefore, various preset colors must be obtained in main.cpp In this case, the parameters of the virtual function are still added. So it is of little significance. Unless the editor theme bgcolor is no longer obtained, but the effect may be abrupt in the editor (especially the splash bgcolor with high contrast is set and editor theme).

Superseded by #71289.


No coverage object in the browser

Hi,
I noticed that issue 10 was closed a few months back, but a few people were still getting this problem and I have been unable to get passed it myself. I went ahead and reproduced the issue on my open source project. It's a mean.js template application and I've added grunt-protractor-coverage and it's dependencies. When I run the gruntfile, everything seems to work, protractor runs, the files are instrumented, but when the report comes out I get 100% coverage of zero files. I seperated the protractor gruntfile from the dev gruntfile and named it gruntfile-e2e.js. I am using Ubuntu 14.04.
You should be able to reproduce easily if you run these commands:
~$ git clone https://github.com/peterhendrick/openSource
Of course, install the package.json:
~$ cd openSource
~/openSource$ npm install
Update the selenium driver:
~/openSource$ ./node_modules/.bin/webdriver-manager update
(I start up the driver before tests, so there's no need to start a server for the webdriver)
Start the app in a server (default is port 3000). You will need a mongodb instance to be running:
~/openSource$ npm start
Open another terminal and navigate to the app folder and run the e2e gruntfile to see the issue:
~/openSource$ grunt --gruntfile gruntfile-e2e.js
You should see the following near the end:
"Running "protractor_coverage:local" (protractor_coverage) task
Collector started on port 3001
Starting selenium standalone server...
[launcher] Running 1 instances of WebDriver
Selenium standalone server started at http://<IP_ADDRESS>:37079/wd/hub
No coverage object in the browser.
.
Finished in 4.716 seconds
1 test, 1 assertion, 0 failures"
If anyone could help me get passed this issue, it would be much appreciated.
Thanks,
Peter

+1

@peterhendrick,
from what I understand your are using your normal (NOT-instrumented) sources to start your server via npm start on port 3000.
Then you run the default task of gruntfile-e2e.js which indeed runs the instrument task, which writes to instrumented and use these files do run the server via connect on port 9000.

As you don't use your instrumented server on port 9000 for your protractor coverage run, there will be no coverage object. I suggest to change your baseUrl to use the instrumented server and stop your normal server on port 3000 to avoid confusion.

I am also facing the same problem.
Running "connect:server" (connect) task
Started connect web server on http://localhost:3000
Running "protractor_coverage:local" (protractor_coverage) task
Collector started on port 3001
Starting selenium standalone server...
[launcher] Running 1 instances of WebDriver
Selenium standalone server started at http://<IP_ADDRESS>:59508/wd/hub
No coverage object in the browser.
GruntFile.js
connect: {
server: {
options: {
port: 3000,
base: 'instrumented'
}
},
protractor_coverage: {
options: {
configFile: "./protractor.conf.js", // Default config file
collectorPort: 3001,
keepAlive: true, // If false, the grunt process stops when the test fails.
noColor: false, // If true, protractor will not use colors in its output.
coverageDir: 'coverage',
args: {
baseUrl: 'http://localhost:3000'
}
    },
  local: {
    options: {
      args: {
        baseUrl: 'http://localhost:3000/',
        // Arguments passed to the command
        'browser': 'chrome'
      }
    }
  },
},

@pranavvarshney
when I got the message No coverage object in the browser. it was always caused by running the un-instrumented source code (either server-backend  or client-side javascript in the browser).
So I would suggest to double check your running server, that its running code itself is instrumented and that it serves the instrumented javascript-files (client-side) to the browser.

I had the same issue. I fix my problem by setting relative path with my server. Because even if you instrument the server and move it with your static folder it will still look for the absolute paths instead for the relative.
Example:
if your node code looks like this:
app.use(express.static('./public'));

it should be changed to look like this:
app.use(express.static(path.resolve(__dirname, '../public')));

this way when your instrumented code is moved to a new 'instrumented folder' it will look for you instrumented 'public' directory relatively inside the 'instrument'.
What happens now is that you have you js files instrumented (C) and (D) which is totally what you need.
The problem begins when you run the server code (D) where absolute path points to (A) instead of (C). So you instrumented server runs the non instrumented front end.


no prompt for input

when running the project, we have no prompt appearing while we should have one.
see main.c line 11

fixed in last push; need to launch the executable for it to work


rename kur_ara.traineddata to  kmr.traineddata

See https://github.com/tesseract-ocr/tessdata_best/pull/26

I now also updated the documentation. kur_ara still is used in the training scripts. @Shreeshrii, do we have to add kmr there?

do we have to add kmr there?

Yes, please. It is based on Latin script so should be treated similar to eng.


Add Rancher 1.6 LB to 2.0

In 2.0, we are going to support:

k8s ingress
k8s LB
1.6 style Rancher LB

@kinarashah we have to:

[ ] Define CRD - look at 1.6 LB definition, and transport it to rancher/types. One addition - in port rule, we are gonna have workload in addition to service. And no Ids, we have to use names
[ ] develop controller #1 that would listen to LB creation events, and create a) service account for rancher/lb-service-haproxy microservice b) k8s deployment with rancher/lb-service-haproxy image and service account from previous step  c) k8s service to expose the port on the host.
[ ] change rancher lb-service to fetch data from k8s apis instead of rancher metadata

I'm already missing 1.6 style Rancher LB. Any plan to include it in 2.x soon?

Not sure if this helps https://github.com/kubernetes/contrib/tree/master/for-demos/proxy-to-service


Template no longer snap to grid

Hi, I tested the heal 3 actions emanation template (with no modules) and the template doesn't snap to grid. I don't know if it's supposed to do something special because of it being an emanation but the template can be badly placed (it will not correct itself if placed wrongly)

Foundry and system versions?

11.315 and 5.10.3

Seems fixed for me


display nested json data in field?

I have a field that contains nested json data coming from the server side and I would like to display using JSONpipe or similar mechanism if possible.
Will appreciate any guidance / pointer on how to do it.
Thanks
example here is
"shape": "circle",
"coordinates": {
"lat": 43.19174996796747,
"lng": -90.53678068893021,
"r": 27787.73767066941
},
In this case coordinates field is displayed as [object object] within the form.

How is this related to ngx-formly. If it is, an example would be nice. @argupta23

How is this related to ngx-formly. If it is, an example would be nice. @argupta23

@vishnu-dev see update to my original post.

@argupta23 if you're looking for straight way use template https://github.com/ngx-formly/ngx-formly/issues/2057#issuecomment-579724475
or create a custom field a type https://formly.dev/guide/custom-formly-field.

That not correct response @aitboudad , question was about nested data. Your example covers single input. So what if in template you want to have 5 inputs filing model with nested properties ?


Auto-generate Vaadin Framework add-on

This repository should be the single source of truth for Vaadin Icons.
There should be a script that generates the JAR file that can be used together with Vaadin Framework.

This autogeneration process is currently handled by the https://github.com/vaadin/vaadin-icons-addon project, and it uses this repository as it’s dependency.


[a2dp_sink] AVRCP Absolute volume control commands not Working. (IDFGH-2561)

I was adding AVRCP absolute volume commands, facing an error while trying to increase volume using absolute volume commands as passthrough volume commands are not supporter by android. i was able to PLAY and PAUSE music using passthrough commands, cant change volume with the same.
I want to increase or decrease the music volume in Phone using buttons connected to Board.
 esp_avrc_ct_send_set_absolute_volume_cmd(1, 0);

This command should mute the sound on Phone(android), but the following error arises :
W (46988) BT_BTC: handle_rc_metamsg_rsp: code 10 error 0x0

Board : ESP32
ESP-IDF version : 4
Thanks
Tarun Narain

Hi, @Tarun-Narain
Absolute volume cmd  and Passthrough cmd are two different methods to change the volume. You should use them separately.
Thanks
Abner

Hi guys,
i just figured out that these commands are not working on Xiaomi Smartphones but working on Samsung Smartphones, the volume simulation in A2dp_sink example too is not working on Xiaomi.

Hi, @Tarun-Narain
Which commands? Passthrough or Absolute Volume?
Which Xiaomi phone and Sumsang phone?
Could you provide your code for me to reproduce?
Thanks
Abner

@Tarun-Narain Thanks for reporting, would you please help share more details? Thanks.

@Tarun-Narain Thanks for reporting, any more details could be shared? Thanks.

my device is Xiomi Y1 Lite, when i tested a2dp_sinnk example on this device volume simulation was not working but working on every Samsung smartphones and i cant provide any further details as i dont know if its an issue with Xiomi OS (Smartphone).

Hello,
Anyone has been able to resolve the problem, I'm having the same issue...
W (27106) BT_BTC: handle_rc_metamsg_rsp: code 10 error 0x0
when calling esp_avrc_ct_send_set_absolute_volume_cmd
while esp_avrc_ct_send_passthrough_cmd doesn't seem to work at all with volume.
Thanks

sorry @benjavita, i found nothing on this issue;
Thanks

If you want to control the volume of your phone, you can use esp_ avrc_ ct_ send_ passthrough_ cmd or notification event. You can refer to a2dp_sink_demo. Of course, some phones don't support this feature.
Wiki:https://en.wikipedia.org/wiki/List_of_Bluetooth_profiles#Audio/Video_Remote_Control_Profile_(AVRCP)

@Tarun-Narain Thanks for reporting and sharing updates, would you please help check if your issue has been resolved? Thanks.

To anyone reading this, esp_avrc_ct_send_set_absolute_volume_cmd is when the device is a source and not a sink.
The correct way to change the source's absolute volume from the sink is:
esp_avrc_tg_init();
esp_avrc_tg_register_callback(app_bt_sys_callback_avrc_target);

Then make a request to change the absolute volume
esp_avrc_rn_param_t rn_param;
rn_param.volume = 32; // 0..127
esp_avrc_tg_send_rn_rsp(ESP_AVRC_RN_VOLUME_CHANGE, ESP_AVRC_RN_RSP_INTERIM, &rn_param);

And wait for the notification event in the AVRC callback and send the request again.
void app_bt_sys_callback_avrc_target(esp_avrc_tg_cb_event_t event, esp_avrc_tg_cb_param_t *param) {
  case ESP_AVRC_TG_REGISTER_NOTIFICATION_EVT: {
          ESP_LOGI(TAG, "AVRC register event notification: %d, param: 0x%"PRIx32, rc->reg_ntf.event_id, rc->reg_ntf.event_parameter);
          if (rc->reg_ntf.event_id == ESP_AVRC_RN_VOLUME_CHANGE) {
            esp_avrc_rn_param_t rn_param;
            rn_param.volume = 32; // 0..127
            esp_avrc_tg_send_rn_rsp(ESP_AVRC_RN_VOLUME_CHANGE, ESP_AVRC_RN_RSP_INTERIM, &rn_param);
          }
          break;
  }
}


Creation of markers to indicate start, end and stopovers

It is kind of hard to identify where exactly is the begin and the end of the route. So we could add some markers to represent these points

LGTM, issues must be resolved before merging though


swayfmt: Support configuration file

Swayfmt is meant to be configurable. The task here is to:

Support the parsing and loading of swayfmt.toml
Implement the configuration options

It's okay if some only support the default option
Some of the options are already implemented

Write tests for all options
Update the docs stating which options are configurable.

The main reason it's not currently supported is that our small team hasn't had bandwidth to properly tests the options that are implemented.
The default swayfmt.toml:
max_width = 100
hard_tabs = false
tab_spaces = 4
newline_style = Auto
indent_style = Block
newline_threshold = 1
group_imports = Preserve
imports_granularity = Preserve
imports_indent = Block
reorder_imports = true
reorder_modules = true
reorder_impl_items = false
item_brace_style = SameLineWhere
blank_lines_upper_bound = 1
blank_lines_lower_bound = 0
empty_item_single_line = true
format_strings = false
hex_literal_case = Preserve
expr_brace_style = AlwaysSameLine
trailing_semicolon = true
space_before_colon = false
space_after_colon = false
type_combinator_layout = Wide
spaces_around_ranges = false
match_block_trailing_comma = false
match_arm_leading_pipe = Never
force_multiline_blocks = false
fn_args_layout = Tall
fn_single_line = false
heuristics_pref = Scaled
use_small_heuristics = true
field_alignment = Off
small_structures_single_line = true
wrap_comments = false
comment_width = 80
normalize_comments = false

My two piece on this would be not to allow it. This is purely a personal choice so nothing concrete behind it but even if someday we have the bandwidth to do so, we still shouldn't do it. I feel like formatter wise go made the correct choice over rust.
Also I believe that being a smart contract development language, conceptually gives us an extra opportunity to say that we are opinionated about standards, this can (and imo should) include the way sway programs supposed to look.

We decided as a team we do not want the formatter to be configurable. The next step is to remove the configuration code that currently exists in the formatter but is currently unreachable.


Lightweight integration tests

It would be nice to separate tests aimed at integration vs more fine-grained tests in the :execution project, too. However, moving tests to src/integTest means they also start depending on :launcher and :cli (and hence the whole world). This means a lot more thing gets built when running tests for :execution.
We should have the ability to distinguish between the following kinds of tests:

unit tests: tests with very small scope with access to only some bare necessities on top of the actual production code of the module (+ support for test fixtures)
integration tests: tests that verify the integration of different parts of the module, depends only on the module
end-to-end tests: tests that verify the whole Gradle build works from a user perspective, depends on everything

We lack support for the middle tier currently.
The term "integration test" is heavily entrenched in Gradle's codebase; changing it might be an infeasible task. We could instead introduce a new term for the middle tier. "Functional test" comes to mind as the best bad example.
Another solution would be to have different meaning for "integration test" for different modules, but this might cause more confusion in the future.

Let's keep this open. /cc @bmuskalla


Trigger chart release when kubewarden-controller is released

Updates the release CI/CD pipeline to trigger the kubewarden-controller and kubewarden-crds charts updates.
We might use this action to dispatch workflows

I need to test my changes to address this issue. However, I open the PR #358 using my main branch. Therefore, I'm not able to test it before finishing the PR. Moving this to block for a while.


Fix pyvista deprecation warnings

There's an internal example we're working on that has these ugly warnings:
/home/alex/python/pyvista_venv3.8/lib/python3.8/site-packages/pyvista/core/dataset.py:1401: PyvistaDeprecationWarning: Use of `point_arrays` is deprecated. Use `point_data` instead.
  warnings.warn(
/home/alex/python/pyvista_venv3.8/lib/python3.8/site-packages/pyvista/core/dataset.py:1541: PyvistaDeprecationWarning: Use of `cell_arrays` is deprecated. Use `cell_data` instead.
  warnings.warn(

Please have this patched tomorrow for a release by the end of this week. Near trivial patch.

thank you, Alex(@akaszynski),
I will try to finish it today!

Deprecation warnings fixed as of ansys-mapdl-reader==0.51.8. See log output from https://github.com/pyansys/pymapdl/runs/4820017708?check_suite_focus=true.

This looks like it's recurred - see pressure vessel example, amongst others
https://dev.mapdldocs.pyansys.com/examples/00-mapdl-examples/pressure_vessel.html


Drop reference to detached datachannels

This allows users of detached datachannels to garbage collect resources associated with the datachannel and the sctp stream. There is no functional change here.
Fixes #2672

Thank you so much @sukunrt! Really appreciate the tests :)
Rebasing + merging now


Debug: App is redirecting to WebView

Debug why the App is redirecting to Webview.

I will take it @shreya-mishra

ETA: 11May, Thursday @shreya-mishra


Move Font Import Data to Import Parameters

Summary
Currently, the Font Resource contains a lot of data and logic that is only relevant in the specific case of importing a TTF font and adjusting it in the editor. After #285, #321 and #320 are implemented, do a general cleanup of the existing Font Resource and importer.
Analysis

EmbeddedTrueTypeFont is no longer required, as the source file is used directly. It's a proper Re-Import after all.
Size can become a readonly FYI property similar to Height.
CharSpacing can be moved to the importer.
MonoSpace logic can be implemented in the importer while only providing FYI data in the core.
Style can be moved to the importer.
GlyphsDirty can be removed.
When possible, make this backwards compatible.

Providing a one-click fix using a Re-Import could be considered a sufficient exception.
Breaking binary plugins would not be acceptable. Removing properties or property setters will likely do so.
Consider adding an obsolete attribute to them, document them accordingly, and later move this issue to the v3.0 milestone.

Moved all Font import parameters to AssetInfo data attachments and all glyph rendering code to the actual Font importer. The frequently used parts of the API surface haven't changed and Font Resources remain compatible, but a re-import will be required for further editing support.
Added issue #324 for cleanup in the v3.0 milestone.
Closing this.


support for token exchange auth

closes #411

Hi @schiller-manuel ! Thank you so much for picking this up and proposing the change 💪 . I have been away for a while as I got married last week! I'm now on my honeymoon, just had some time to go on Github and drop this message to let you know that I will look at this in detail next week!

congratulations!

@schiller-manuel is there a specific reason to support both session tokens and token exchange? Because right now, it would be possible to import both ShopifyAuthModule.forRootTokenExchange and forRootOnline together which doesn't make much sense to me. Correct me if I'm wrong please 🙂.
I wouldn't mind altering online auth (and offline auth if applicable) completely to always use Token Exchange. I think that's much better.

is there a specific reason to support both session tokens and token exchange

I thought it would if this was not a breaking change and users could continue to use the library if they do not (yet) use managed installations.
According to https://github.com/Shopify/shopify-app-js/blob/main/packages/apps/shopify-api/docs/guides/oauth.md, shopify recommends using token exchange for managed installations only.

Because right now, it would be possible to import both ShopifyAuthModule.forRootTokenExchange and forRootOnline together which doesn't make much sense to me. Correct me if I'm wrong please 🙂.

True, this is possible and would be a misconfiguration. I had added this line to the README, maybe it was not clear enough:

@nestjs-shopify/auth supports both Token Exchange and Authorization Code Grant Flow, but only one of it can be used at a time.

shopify recommends using token exchange for managed installations only.

Would we be able to detect based on the token itself whether its a managed installation or not? Or maybe based on headers/etc.

no I don't think this can be detected. it's something the application needs to know and configure auth code grant or token exchange appropriately.

@schiller-manuel I've looked through how the shopify-app-remix package does things. It seems they include a configuration flag to indicate the usage of the new authentication strategy: https://github.com/Shopify/shopify-app-js/blob/main/packages/apps/shopify-app-remix/README.md#enabling-this-new-strategy-in-your-app
The reason I keep coming back with extra comments: I think it's bad API design if we were to allow multiple registrations of ShopifyAuthModule.forRootOnline and ShopifyAuthModule.forRootTokenExchange. I think the ShopifyAuthModule.forRootOnline should accept a new option to use managed installations, which will cause your app to use token exchange.
Would you be wililng to make this change?

First of all, thanks for the review and your comment.
I agree with you about the potential misconfiguration being a bad design.
Some things need clarification though:

both ShopifyAuthModule.forRootOnline and ShopifyAuthModule.forRootOffline should then accept this option, right?
I added a separate after auth handler interface for token exchange, in order to directly provide the session token so in the after auth handler another token exchange could be triggered (i.e. online token was exchanged by @nestjs/shopify and then the library user could directly get an online token using said session token:
https://github.com/nestjs-shopify/nestjs-shopify/blob/ac7ccc37f59025d294a784b116f87b388bac34c4/packages/auth/src/auth.interfaces.ts#L37-L53
So then this option of ShopifyAuthModule.forRootXXX would then influence the required type of the after auth handler.

I'll push an update and then we can continue discussing based on it.

both ShopifyAuthModule.forRootOnline and ShopifyAuthModule.forRootOffline should then accept this option, right?

I don't think it makes sense for offline session tokens to have to exchange their tokens to access tokens. Offline session tokens are longlived and usually used for automation. It should only impact online auth.

I added a separate after auth handler interface for token exchange, in order to directly provide the session token so in the after auth handler another token exchange could be triggered (i.e. online token was exchanged by @nestjs/shopify and then the library user could directly get an online token using said session token
I would expect this library to abstract the auth implementation in such a way that its transparent to the user. There is an issue with this though, as there shouldn't be any redirection happening when using token exchange 🤔.

I think this is going to be a guaranteed breaking change. The reason is: I chose to implement AfterAuthHandler to receive the express/fastify Response object, so the user could choose the redirection after online auth. But in hindsight, this is a mistake I made. The redirection path after authentication should've been an option parameter just like shopify-app-remix and shopify-app-express do. That way, I could've avoided exposing the redirection logic to the end user. And that would've made this Token Exchange PR much easier to implement (as there's no redirection happening for Token Exchange).

but after installation you also need to get the offline token at least once. so inside the after auth handler you have a chance for setting up some stuff initially.

but after installation you also need to get the offline token at least once. so inside the after auth handler you have a chance for setting up some stuff initially.

That doesn't have impact on the after auth handler I think. If its offline auth, you should be always redirected to online auth to receive a online user session. So I'd say that the user should never have an option to redirect to anywhere when its offline auth.
The auth handler could have the following signature:
export interface ShopifyAuthAfterHandler<
  T extends IncomingMessage = IncomingMessage,
  R extends ServerResponse = ServerResponse,
> {
  afterAuth(session: Session): Promise<void>;
}

So only receive the session. The user of this package could always check if (session.isOnline) to differentiate between an initial installation (offline), and then do something else if its a login for an online session with token exchange.

I meant: you also need to configure token exchange for offline auth

I meant: you also need to configure token exchange for offline auth

I wasn't aware, thanks for pointing it out. Would that impact my suggestion I did above regarding changing the ShopifyAfterAuthHandler interface?

I think we don't have to change the ShopifyAfterAuthHandler for the "legacy" auth, we can use another interface for token exchange. let me try it out.

@tolgap  please have another look.
Configuration now supports an optional property authStrategy.
If not set, it will default to AUTHORIZATION_CODE_FLOW so this is not a breaking change.
A library user would configure token exchange like this:
https://github.com/nestjs-shopify/nestjs-shopify/blob/1271a9831a1abe60df783d93a540868c80548c3a/integration/src/shopify-token-exchange/shopify-token-exchange.module.ts#L6-L28

@tolgap how do we continue here? should we have a call to discuss things in detail?

@schiller-manuel I'm going through your latest changes as I'm typing this. Its quite a complex change I'm still trying to understand it all. I do appreciate the tests you've added to the integration app, as it eases it a lot for me 👍

@tolgap I bumped the required shopify versions as well as denoted this to be a major change.
can you please check once more?
and then 🚀


Added FhirDal for File System IO

File system IO implementation of FhirPlatform pattern from Clinical_Quality_Language
https://github.com/cqframework/clinical_quality_language/tree/master/Src/java/cqf-fhir/src/main/java/org/cqframework/fhir/api

Github Issue:
[x] I've read the contribution guidelines
[x] Code compiles without errors
[x] Tests are created / updated
[x] Documentation is created / updated

By creating this PR you acknowledge that your contribution will be licensed under Apache 2.0

It definitely adds complexity, especially on the write side, but..

There would have to be some sort of configuration for the Dal in order to support this in any consistent way. You couldn't know based on just resource type and Id whether to put a resource in the folder, in the Bundle, or in a sub-directory.

whereas the current implementation supports a more flexible strategy of just "anything in the directory or any sub-directory, including bundled content"

Is this true of the IG Publisher and the Refresh operations, or of only the CQL evaluation? These are two slightly different concerns. Actually, for external ValueSets we specifically do not recurse subdirectories when building IGs, right?
This behavior also causes plenty of issues. At least twice in the past week (once on the opioid IG project) a Bundle included in the resource directory caused the "expected Singleton but found List" issue when evaluating CQL due to having multiple Patient resources. Does that extra configuration and flexibility justify the extra development now and debugging time later on IGs?
Given the above, removing the behavior might fix more things than it breaks. :smiling_face_with_tear: The sample-content-ig also models the resource-per-folder behavior for new users, right?

The publisher just has any number of configurable resource directories, it's up to the ig author whether to organize them in to directories. But no, it definitely doesn't recurse, and we rely on that behavior for the current functionality. So...maybe we have a BundleResourceProvider that can use a FileResourceProvider? And the FileResourceProvider is just a directory, and has a configurable recurse option. And then there is a PriorityResourceProvider that can aggregate resource providers?

Maybe we put that in as a separate story, that's fair, but I'd still prefer to see the strict resource directory behavior, rather than assuming directories per resource type, that's something the publisher doesn't do, and we have been bitten by.

And it's only the write that is introducing the complexity, so maybe we just document that the "recursive" strategy can establish a file location for updates, but the inserts will always occur at the configured directory, rather than trying to figure out what folder to put new files in.

Okay, having said all that, we should keep this layer as simple as possible. So maybe this is just the behavior of the FileFhirPlatform, and we introduce other "readers" that can deal with bundles and recursive directories, and those are readonly implementations.

Given a file that's read at one directory and written to another, does the tooling delete the first file?

Maybe we introduce the notion of ResourceSets based on the configuration of the IG? Each ResourceSet has an associated FHIRDal. Existing Resources are written to wherever they are, new Resources relevant to a specific set are written to the same FHIRDal, and new IG-wide Resources are written to a default ResourceSet that uses the existing convention?

I do have something similar to that in the accelerator kit processor: https://github.com/cqframework/cqf-tooling/blob/master/src/main/java/org/opencds/cqf/tooling/acceleratorkit/CanonicalResourceAtlas.java

Do we think that "Set" or "Atlas" concept combined with a directory Dal or a Bundle Dal (depending on whatever the structure for a given output needs to be) is sufficient for the refresh use cases?


consider a --current 'dirty' option

Rather than checking versions from a specific commit, consider a keyword / input / envvar to check the dirty status of the repo.
This may not be worth the effort. but is at least worth considering

Additional rationale/use-case: if you move one of the bump2version config locations, even if the new location has the right version, it'll error that the version isn't found until committing...


Live change altering wrong line

In macOS Sierra running Atom 1.13.1
When enabling split diff the preview I clicked any line and added code or tried adding spaces. The preview panel that pops up next to my file shows spaces added two lines up.
Basically if I add a line (for example another p tag) after the closing p tag
div
h2 testing h2
p 1 2 3 p
div
it will look like this in the diff
div
h2 testing h2
   p 1 2 3 p

div

Hi @AnthonyMichaelc, I can't reproduce the issue, so I'm going to need to ask a bunch of questions!

Is the file tracked in git?
What packages are you using? (you can run apm list --installed --bare in console to get a list)
What is the file grammar set to? (can find this in the status bar at the bottom right of the atom window)
To clarify, the issue is that wherever you edit the left editor, the right editor gets an empty line added 2 lines up from that?

Closing since I cannot reproduce, please reopen if this is still an issue!


Hangman for module Fun

Proposal:
Proposal written by Nickkel
Is it a proposal for the website or for the bot?: bot
What is the title of your proposal?: Hangman for module Fun
Explain your proposal more accurately (It's best to give as much information as possible, so that we can implement the proposal better): We should add the game hangman
Why should we add this feature?: It's funny
ReportID: 197

➤ LenoxBot commented:
Approve:
good idea!
Denarioyt#3352

➤ LenoxBot commented:
Approve:
agree with denarioyt
SaVaGeCrEePeR28 | Furkan#3532

➤ LenoxBot commented:
Approve:
agree with denario and furkan
Profxy#5396


write airtable fetcher thingy

when you run /update, check the few hc airtable dbs if we don't have a record. that way you can on-demand query to see if we have an address, if someone expects to have one but it's not there
this should go through several airtables in rank of priority (eg ops, sprig, clubs, etc)

now checks from ops db


Offences for embedded shell scripts

It would be nice if RuboCop could skip embedded shell scripts when a file starts with a shebang that does not contain the string ruby, and then the file has a line starting #! containing ruby. The lines between them are expected to be ignored by Ruby with -x option.

Expected behavior
No offences for the following code:
#!/bin/sh
exec ruby -S -x "$0" "$@"
#!ruby
puts 'Hello, World!'

Actual behavior
$ rubocop foo.rb
Inspecting 1 file
E

Offenses:

foo.rb:2:11: W: `-' interpreted as argument prefix
(Using Ruby 2.0 parser; configure using TargetRubyVersion parameter, under AllCops)
exec ruby -S -x "$0" "$@"
          ^
foo.rb:2:14: W: `-' interpreted as argument prefix
(Using Ruby 2.0 parser; configure using TargetRubyVersion parameter, under AllCops)
exec ruby -S -x "$0" "$@"
             ^
foo.rb:2:14: E: unexpected token tUMINUS
(Using Ruby 2.0 parser; configure using TargetRubyVersion parameter, under AllCops)
exec ruby -S -x "$0" "$@"
             ^

1 file inspected, 3 offenses detected

To suppress all the offenses, I need to modify the above code as (though it could be an acceptable workaround)
#!/bin/sh
# rubocop:disable all
exec ruby '-S' '-x' "$0" "$@"
#!ruby
# rubocop:enable all
puts 'Hello, World!'

Steps to reproduce the problem
Run Rubocop for the code in "Expected behavior".
RuboCop version
$ rubocop -V
0.41.2 (using Parser <IP_ADDRESS>, running on ruby 2.2.3 x86_64-linux)

There hasn't been much activity on this ticket and our Core Team is spread too thin on so many tasks, so I'll just close it for the sake of having a cleaner lists of tasks to focus on. We'd gladly review a PR, but it's unlikely that'd we're going to tackle this ourselves in the foreseeable future.


Fix generation and parsing of Manual Setup Codes to match specification

Fixes #5328
Generation and Parsing of Manual Setup Codes was incorrect.
Per specification, the Manual setup code is formatted as follows:
The binary data is encoded to a decimal string split into 5 chunks:
<1-digit/3-bits><5 digits/16-bits><4-digits/13-bits><5-digits/16-bits><5-digits/16-bits>:

<1 digit> Represents:

<bits 1..0> Discriminator <bits 11.10>
<bit 2> VID/PID present flag

<5 digits> Represents:

<bits 13..0> PIN Code <bits 13..0>
<bits 15..14> Discriminator <bits 9..8>

<4 digits> Represents:

<bits 12..0> PIN Code <bits 26..14>

<5 digits> Vendor ID
<5 digits> Product ID

Updated Manual Code Generator
Updated Manual Code Parser
Updated Test Vectors

@woody-apple Please add Shana as a reviewer. Thx

Looks good, thanks for fixing up/adding unit tests as well

label TE1 missing.

@vivien-apple @kkasperczyk-no I need someone to merge this PR. It is unassigned and I am not authorized to merge. Thx!

@jrhees-cae I see that CI is failing for QEMU / ESP32, so you have to fix this before your PR will be merged. If you don't see an obvious reason for that happening I recommend force push to trigger jobs re-run.

@kkasperczyk-no Looks like the ESP32 has passed this time

@Damian-Nordic @LuDuda could some of you merge that one? I'm also not authorized to do this.


Hand in all countries? Europe undefined.

Hi,
Great library! I just updated and trying to make it work again. Before we didn't need to hand in a country. Now it looks like it's required? How can I hand in all countries without importing all of them specifically? I tried
import {checkVAT, europe} from 'jsvat';
checkVAT(vatNumber, [europe]);

When logging this, it says that country is undefined. How come? What am I doing wrong?
country: undefined
isValid: false
value: "RO19"

@lhtdesignde Hi, I noticed about this problem. Will fix it in a couple of days, hopefully sooner.
You're doing everything fine. Better documentation and examples are also on the way

Hi, sorry I didn't read your last message careful enough (I guess I was tired, but no excuses - my bad)
I just realise that you were confused by europe.
It's not a shorthand for countries, it's a sort of single country - some common european VAT that starts with EU....
ATM there is no default option to include all countries with a single variable.
Now I see that it makes sense =)
I will implement it in next minor release.
You have two options right now:

Include all the countries manually:

import { austria,  belgium,  bulgaria,  checkVAT,  croatia,  cyprus,  czechRepublic,  denmark,  estonia,  europe,  finland,  france,  germany,  greece,  hungary,  ireland,  italy,  latvia,  lithuania,  luxembourg,  malta,  netherlands,  norway,  poland,  portugal,  romania,  russia,  serbia,  slovakiaRepublic,  slovenia,  spain,  sweden,  switzerland,  unitedKingdom } from 'jsvat'

checkVAT(vat, [ austria,  belgium,  bulgaria,  croatia,  cyprus,  czechRepublic,  denmark,  estonia,  europe,  finland,  france,  germany,  greece,  hungary,  ireland,  italy,  latvia,  lithuania,  luxembourg,  malta,  netherlands,  norway,  poland,  portugal,  romania,  russia,  serbia,  slovakiaRepublic,  slovenia,  spain,  sweden,  switzerland,  unitedKingdom ])

Uh.. well, a bit ugly ))

Write some code:

import jsvat from "jsvat"

const { checkVAT } = jsvat
const countriesObj = omit(jsvat, 'checkVAT');

function omit(obj, key) {
    const result = { ...obj };
    delete result[key]
    return result;
}

const countriesList = Object.keys(countriesObj).map(key => countriesObj[key])

const a = checkVAT('BE0411905847', countriesList);
console.info(a)

Something like that ))
P.S. Or you can wait for next release as option 3 )))

awesome! Ah I was not aware that europe is actually it's own vat number. ha. Thanks for the quick reply and so much effort. I'll wait a little bit until you managed to have a way to hand in all countries. The library is super helpful. At the moment we get all countries by just doing.
jsvat.checkVAT(vatNumber).isValid === true

@lhtdesignde Hi. The functionality was added in 2.1.2:
import { checkVAT, countries } from 'jsvat';
//or
const { checkVAT, countries } = require('jsvat');

checkVAT('WD12345678', countries);

I guess this one can be closed now.
@lhtdesignde Let me know in case of any troubles

sorry i missed this! Thanks for the implementation!


docs-fr | overview | what is kubernetes - Update reviewers

Add @sieben and @lledru into reviewers

/lgtm

/approve


Fix issues with OperationQueue hanging.

Fixes #261.
There were some holes in the Operation logic. I took the opportunity to simplify ResumableOperation and ResumableOperationQueue. I would like to further shrink these, but right now, it isn't necessary.
I believe the key problem was in the BlockOperation logic. After entering a dispatch group, there were return statements that did not have a matching group.leave() call. As a result, these threads were lost to the ether and never able to complete. So, when the the operation was resumed, all incomplete blocks were readded to the queue but could never proceed because the original threads were lost and could never complete their lifecycle.

@bsiegel ping on this PR.


Starshapes are tilted

Something's wrong with the generated antenna positions.
Both groundplane and showerplane antennas are tilted.
Maybe check the transform functions? They should be fine though.... Maybe it's a deg vs rad issue?

deg vs rad was indeed an issue - and that is fixed now
not sure if the starshapes are correct. maybe energy fluence plots will tell us more

fixed by lukas - see merge


Is there some code for Whisper jax to produce srt subtitle?

Is there some code for Whisper jax to produce srt subtitle?

srt_data = ""

for index, entry in enumerate(chunks):
    start_time, end_time = entry['timestamp']
    start_hours, start_minutes, start_seconds = int(start_time // 3600), int((start_time % 3600) // 60), start_time % 60
    end_hours, end_minutes, end_seconds = int(end_time // 3600), int((end_time % 3600) // 60), end_time % 60

    srt_entry = f"{index + 1}\n{start_hours:02d}:{start_minutes:02d}:{start_seconds:06.3f} --> {end_hours:02d}:{end_minutes:02d}:{end_seconds:06.3f}\n{entry['text']}\n\n"

    srt_data += srt_entry

print(srt_data)

with open('output.srt', 'w', encoding='utf-8') as f:
    f.write(srt_data)

print("SRT data saved to output.srt")

I use something like the above

how to use your code to change txt to srt?


Change println usages for SLF4J logger

Change the println usages for a SLF4J logger in debug mode always. This is just so we can have cleaner builds without too much information we won't be using on all runs. If we still wish to see the logs we can of course do ./gradlew someTask -d for enabling debug mode

good work!


Swagger operations should not return nulls

According to https://swagger.io/docs/specification/describing-responses/ null is not valid as response body

Looks good, although this might be a breaking change. I'll think about how to release this, for now I'll merge it.

If you use swagger-to-graphql to wrap REST calls, it shouldn't break anything because swagger endpoints can't return nulls. Before this change the null handling was moved up to the GraphQL client, when for real the nulls will be handled behind the REST API. The client null checks will be compatible and you can remove them in the future.
Do you have any other potentially breaking change in mind?


typo

This version string must follow the semver standard (MAJOR.MINOR.PATH).
Should be:
This version string must follow the semver standard (MAJOR.MINOR.PATCH).

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

ID: 0f94a488-d636-92b3-21eb-c88744c8f272
Version Independent ID: 7b3413f4-9ade-accf-5cb2-83fead11a32a
Content: Manifest schema reference - Teams
Content Source: msteams-platform/resources/schema/manifest-schema.md
Product: msteams
GitHub Login: @o365devx
Microsoft Alias: o365devx

Thanks for letting us know; this will be fixed shortly.


pkg/policy/policy: Optimize SearchContext String()

Use strings.Builder instead of fmt.Sprintf() and preallocate the size of
the string so that Go doesn't need to over-allocate if the string ends
up longer than what the buffer growth algorithm predicts.
issue reference : https://github.com/cilium/cilium/issues/19571
Signed-off-by: Weijie Lin<EMAIL_ADDRESS>

/test

Hi @christarazi , I saw there has some failed tests in checks, but I failed to found specific error message to track and fix on it. What should I do to make it successful and pass? Thanks a lot.

Hi @christarazi , I saw there has some failed tests in checks, but I failed to found specific error message to track and fix on it. What should I do to make it successful and pass? Thanks a lot.

@MikeLing I see the Go linter failing, so please run goimports against your code and apply any diffs. For the other failures, please rebase on latest master. These tests should be fixed on latest master.

Hi @jrajahalme , any further code request for this PR ?

/test

CI failed again :(

/test

We have approving reviews and CI has passed besides known failures with the GH Actions (PR not rebased recently, but issues from 2 weeks ago are known). Marking ready to merge.


Step stdout appears to be empty

Expected Behavior
I'd like to be able to reference step output (stdout) in other steps.
Current Behavior
When referencing with something like steps.validate.outputs.stdout it appears to be empty.
Steps to Reproduce
name: "Packer"

on:
  workflow_dispatch:
  pull_request:
    branches:
      - master

jobs:
  packer:
    runs-on: ubuntu-latest
    name: packer

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2

      # validate templates
      - name: Validate Template
        id: validate
        uses: hashicorp/packer-github-actions@master
        with:
          command: validate
          arguments: -syntax-only
          target: packer.pkr.hcl
        continue-on-error: true

      - name: Comment
        uses<EMAIL_ADDRESS>        if: github.event_name == 'pull_request'
        env:
          VALIDATE: "packer\n${{ steps.validate.outputs.stdout }}"
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const output = `#### Packer Validate🤖: \`${{ steps.validate.outcome }}\`

            \`\`\`\n
            ${process.env.VALIDATE}
            \`\`\`

            *Pusher: @${{ github.actor }}, Action: \`${{ github.event_name }}\`*`;

            github.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: output
            })

@tgardiner Packer is installed on the github runners by default. As a workaround, you could use shell commands to run packer and capture the exit status in an output variable, like so...
steps:
      - name: Checkout Repository
        uses: actions/checkout@v2

      # validate templates
      - name: Validate Template via bash commands
        id: validate
        shell: bash
        run: |
          if packer validate packer.pkr.hcl; then
            echo "::set-output name=result::success"
          else
            echo "::set-output name=result::failure"
          fi
      - name: Comment
        uses<EMAIL_ADDRESS>        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const output = `#### Packer Validate🤖: \`${{ steps.validate.outputs.result }}\`

            \`\`\`\n
            packer\n${{ steps.validate.outputs.result }}
            \`\`\`

            *Pusher: @${{ github.actor }}, Action: \`${{ github.event_name }}\`*`;

            github.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: output
            })

This was fixed in #63


How to check if a queue already exists or not ?

Is it possible, using the nodejs rabbitmq client to know if a queue already exist before trying to create it ?
Thanks

Please read  README here
 connection.queue(name[, options][, openCallback])
`passive`: boolean, default false. If set, the server will not create the queue. The client can use this to check whether a queue exists without modifying the server state.

Yes I have read the readme, but that doesn't really help me, do you have any piece of code to explain it ?
That would be helpful thank you


Portal shader uses forward rendering, should be deferred. Use a surface shader here probably

pros of forward

no ambient occlusion on edges of portal

cons

all effects that use depth (fog is most noticeable) dont recognize that the portal is there, and draw as if it isnt

fixed in my branch


[Tracking] Upstream sharding annotation and sharding propagation

This issue is used to track the progress of upstreaming sharding by @Tonny-Gu

Time
Milestone
Status

7/31/22
Test with BERT and refactor a part of resharding rules.
WIP

8/7/22
Submit a PR of ShardSpec.

8/14/22
Submit a PR of InferHint and Expansion Rule

8/25/22
Documents and unit tests

@hgt312 @Tonny-Gu please update this issue timely. Thanks.

@hgt312 @Tonny-Gu We have passed the first milestone. Please update the progress here.

@comaniac In the past week,

Make ShardSpec's mutable flag work. Now InferHint Pass will not return the partition solution that conflicts with this flag. When a spec is set to immutable, InferHint will not try to reshard the corresponding tensor.
Finish refactoring resharding rule - Replicated to Sharded.
Partially complete resharding rule - Sharded to Replicated (only support resharding one dimension for now).

However, it looks like there is a bug in ExpandOpCall Pass (C++ side). Currently, I am fixing this bug. That won't postpone the plan of submitting the first PR.

The first PR is sent. Link: https://github.com/awslabs/raf/pull/115

@Tonny-Gu please update the progress for the InferHint and Expansion Rule.

@comaniac
The second PR is sent. Link: #123.
Currently for unknown reasons, there is an issue that occurred when importing RAF Python Package. Now, I am discussing with @hgt312 to find a solution. Thus, the code proposed in the PR remains untested.
Besides, some necessary infer hints and expansion rules for partitioning BERT models are not ready yet. I plan to prepare one additional PR to upstream them.

@comaniac
The second PR is sent. Link: #123.
Currently for unknown reasons, there is an issue that occurred when importing RAF Python Package. Now, I am discussing with @hgt312 to find a solution. Thus, the code proposed in the PR remains untested.
Besides, some necessary infer hints and expansion rules for partitioning BERT models are not ready yet. I plan to prepare one additional PR to upstream them.

Thanks for checking in. Please tag me in the PR when it's ready for review.


Default to 2018 edition for Rust Playground

rustc's default edition is 2015 to preserve backwards compatibility, and
the playground appears to follow this scheme. However, 2018 edition Rust
is the current standard and is the default that Cargo uses when
initializing new projects. It adds support for various features,
including async/await and a new module system. As a result, I think
Zulip should default to 2018 edition when linking to the playground.
Users can always select a different edition once in the playground if
they would like.

Merged, thanks @camelid!  @sumanthvrao FYI.


Flake8 rule 'W291' reported an invalid point

Flake8 reported an invalid point for the rule W291, with the messge trailing whitespace.

Debug information:
Atom version: 1.16.0
Flake8 version: 3.2.1 (pyflakes: 1.3.0, pycodestyle: 2.2.0, mccabe: 0.5.3) CPython 2.7.12 on Linux

Do you have any unicode characters in your file? There is currently a known bug with how those are handled (pycqa/flake8#306). It's fixed in their master branch and is just waiting on a release.

Yes i have. Thanks.


Installation process

Hi,
May be it's me, but the installation process in not very clear for me ^^
If I succeed to go through, I could propose an update if needed.
Press Ctrl+Shift+B to compile the client and server --> can't find any action related
And from a general point of vue, for beginer the process could not be obvious.
Thx for your help and for your work 👍

Hey @thibpoullain, I'm not sure I follow.
Are you trying to install the extension in your VS Code, or are you trying to build the client/server locally so you can make a contribution?

Ok I misunderstood the installation :P
As I got an error "xxx isn't a valid Stimulus controller." but I have this controller in my project, and it works.
I thought my installation/configuration failed.

Would you mind sharing that controller so we can make sure that the parser is picking it up correctly?

Yes it is ;) 👍
Yes thx !
// app/javascript/controllers/dashboard_controller.js

import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
  connect() {
    console.log('connected to the dashboard controller')
  }

  toogle_create_discussion_form() {
    document.getElementById('create_discussion_form').classList.toggle('hidden');
  }
}

<div class="container mx-auto p-4 flex flex-wrap" data-controller='dashboard'>
--> "dashboard" isn't a valid Stimulus controller. Stimulus LSP(stimulus.controller.invalid)

Hey @thibpoullain, did you have any luck getting it to work or do you need any more help?


Feature/kd tree knn

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/754/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/755/

Is this ready to merge?

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/757/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/758/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/759/

This returns a result:
{code}
DROP TABLE IF EXISTS knn_result_classification_kd;
SELECT madlib.knn(
'knn_train_data',        -- Table of training data
'data',                  -- Col name of training data
'id',                    -- Col name of id in train data
NULL,                    -- Training labels
'knn_test_data',         -- Table of test data
'data',                  -- Col name of test data
'id',                    -- Col name of id in test data
'knn_result_classification_kd',  -- Output table
1,                      -- Number of nearest neighbors
True,                   -- True to list nearest-neighbors by id
'madlib.squared_dist_norm2', -- Distance function
False,                  -- For weighted average
'kd_tree',              -- Use kd-tree
'depth=1, leaf_nodes=1' -- Kd-tree options
);
SELECT * FROM knn_result_classification_kd ORDER BY id;
{code}
produces
{code}
id |  data   | k_nearest_neighbours
----+---------+----------------------
1 | {2,1}   | {2}
2 | {2,6}   | {3}
3 | {15,40} | {7}
4 | {12,1}  | {4}
5 | {2,90}  | {9}
6 | {50,45} | {6}
(6 rows)
{code}
though I have not checked if this result is correct.
But if I search 31 of 32 leaf nodes I get no result set:
{code}
DROP TABLE IF EXISTS knn_result_classification_kd;
SELECT madlib.knn(
'knn_train_data',        -- Table of training data
'data',                  -- Col name of training data
'id',                    -- Col name of id in train data
NULL,                    -- Training labels
'knn_test_data',         -- Table of test data
'data',                  -- Col name of test data
'id',                    -- Col name of id in test data
'knn_result_classification_kd',  -- Output table
1,                      -- Number of nearest neighbors
True,                   -- True to list nearest-neighbors by id
'madlib.squared_dist_norm2', -- Distance function
False,                  -- For weighted average
'kd_tree',              -- Use kd-tree
'depth=5, leaf_nodes=31' -- Kd-tree options
);
SELECT * FROM knn_result_classification_kd ORDER BY id;
{code}
produces
{code}
id | data | k_nearest_neighbours
----+------+----------------------
(0 rows)
{code}
which does not seem right.
In fact after more testing, I can't get any results for a depth greater than 1:
{code}
DROP TABLE IF EXISTS knn_result_classification_kd;
SELECT madlib.knn(
'knn_train_data',        -- Table of training data
'data',                  -- Col name of training data
'id',                    -- Col name of id in train data
NULL,                    -- Training labels
'knn_test_data',         -- Table of test data
'data',                  -- Col name of test data
'id',                    -- Col name of id in test data
'knn_result_classification_kd',  -- Output table
1,                      -- Number of nearest neighbors
True,                   -- True to list nearest-neighbors by id
'madlib.squared_dist_norm2', -- Distance function
False,                  -- For weighted average
'kd_tree',              -- Use kd-tree
'depth=2, leaf_nodes=1' -- Kd-tree options
);
SELECT * FROM knn_result_classification_kd ORDER BY id;
{code}
produces
{code}
id | data | k_nearest_neighbours
----+------+----------------------
(0 rows)
{code}

The commits from Feb 14 seem to have broken this. It works as expected when reverted to 670993bb5

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/760/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/761/

Seems to be creating views on test point data that are not dropped.
madlib=# DROP TABLE IF EXISTS knn_test_data cascade;
NOTICE:  drop cascades to rule _RETURN on view __madlib_temp_test_view70561954_1550178308_4459748__
NOTICE:  drop cascades to view __madlib_temp_test_view70561954_1550178308_4459748__
NOTICE:  drop cascades to rule _RETURN on view __madlib_temp_test_view67875340_1550178286_7021329__
NOTICE:  drop cascades to view __madlib_temp_test_view67875340_1550178286_7021329__
NOTICE:  drop cascades to rule _RETURN on view __madlib_temp_test_view28669349_1550178280_13446875__
NOTICE:  drop cascades to view __madlib_temp_test_view28669349_1550178280_13446875__
NOTICE:  drop cascades to rule _RETURN on view __madlib_temp_test_view97712852_1550178162_35722758__
NOTICE:  drop cascades to view __madlib_temp_test_view97712852_1550178162_35722758__
NOTICE:  drop cascades to rule _RETURN on view __madlib_temp_test_view36752618_1550177940_3624313__
NOTICE:  drop cascades to view __madlib_temp_test_view36752618_1550177940_3624313__
NOTICE:  drop cascades to rule _RETURN on view __madlib_temp_test_view86053598_1550177814_42421683__
NOTICE:  drop cascades to view __madlib_temp_test_view86053598_1550177814_42421683__
NOTICE:  drop cascades to rule _RETURN on view __madlib_temp_test_view20385570_1550177235_9507375__
NOTICE:  drop cascades to view __madlib_temp_test_view20385570_1550177235_9507375__
NOTICE:  drop cascades to rule _RETURN on view __madlib_temp_test_view389582_1550177198_17480648__
NOTICE:  drop cascades to view __madlib_temp_test_view389582_1550177198_17480648__
NOTICE:  drop cascades to rule _RETURN on view __madlib_temp_test_view9977640_1550176304_13935376__
NOTICE:  drop cascades to view __madlib_temp_test_view9977640_1550176304_13935376__
NOTICE:  drop cascades to rule _RETURN on view __madlib_temp_test_view85081724_1550176294_34115934__
NOTICE:  drop cascades to view __madlib_temp_test_view85081724_1550176294_34115934__
NOTICE:  drop cascades to rule _RETURN on view __madlib_temp_test_view31379435_1550176289_37180609__
NOTICE:  drop cascades to view __madlib_temp_test_view31379435_1550176289_37180609__
NOTICE:  drop cascades to rule _RETURN on view __madlib_temp_test_view81903036_1550176275_3174665__
NOTICE:  drop cascades to view __madlib_temp_test_view81903036_1550176275_3174665__
DROP TABLE

If these are internal temp tables then they should be dropped.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/762/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/763/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/764/

Functionality LGTM
Please make a couple minor user doc formatting changes:
(1)
There are a bunch of cases that the user docs show as:
"and it looks for $k$ closest points in the tree..."
"In the prediction phase, $k$ is a user-defined constant..."
"For example, a tree of depth 3 will have a total of $2^3 = 8$ regions."
etc.
so please do a global search and fix the formatting, maybe this is supposed to be italic?
(2)
Missing a period at the very end of the technical background section

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/765/

oh thanks for the quick doc fixes
LGTM


Provide context variables that will allow extension authors to hide commands (menus) based on selected kernel

Jupyter extension exposes a lot of commands, menu items for notebooks & interactive window
Similarly other extension (.NET, julia, node, etc) that support ipynb files also have their contributions.
When installing them, all of these commands are displayed when only some of them are relevant.
E.g. if i open an ipynb file and select a .NET kernel, then there's no point in me seeing the following:

Jupyter commands in command palette (variables, debugging, etc)
Jupyter menu contributions (toolbar, cells, etc)

If we have a context variable kernelExtensionId or the like, then extension authors can use when clauses to hide them based on the selected kernel.
Yes, today we can do this via setContext as well, but that async, hence as you toggle between notebooks icons will flash as the value fro setContext will get initialized asynchronously.

If we add a category for kernels, this could be based on that

I think #143163 has resolved this.

Thanks @gjsjohnmurray, I think so


Implement king tropism

Closes #117

king-tropism vs movelist-smallvec
Score of Fatalii 0.7.0-alpha vs Fatalii 0.7.0-alpha: 333 - 245 - 193  [0.557] 771
...      Fatalii 0.7.0-alpha playing White: 172 - 118 - 97  [0.570] 387
...      Fatalii 0.7.0-alpha playing Black: 161 - 127 - 96  [0.544] 384
...      White vs Black: 299 - 279 - 193  [0.513] 771
Elo difference: 39.8 +/- 21.3, LOS: 100.0 %, DrawRatio: 25.0 %
SPRT: llr 2.97 (100.8%), lbound -2.94, ubound 2.94 - H1 was accepted


More detailed information about installed SpatiaLite version

https://www.gaia-gis.it/gaia-sins/spatialite-sql-5.0.0.html#version has a whole bunch of interesting functions for things like freexl_version() and geos_version() and HasMathSQL() and suchlike.
These could be shown on the /-/versions page.

Prototype:
diff --git a/datasette/app.py b/datasette/app.py
index 09d7d03..e2a5aea 100644
--- a/datasette/app.py
+++ b/datasette/app.py
@@ -724,6 +724,47 @@ class Datasette:
                     sqlite_extensions[extension] = None
             except Exception:
                 pass
+        # More details on SpatiaLite
+        if "spatialite" in sqlite_extensions:
+            spatialite_details = {}
+            fns = (
+                "spatialite_version",
+                "spatialite_target_cpu",
+                "rcheck_strict_sql_quoting",
+                "freexl_version",
+                "proj_version",
+                "geos_version",
+                "rttopo_version",
+                "libxml2_version",
+                "HasIconv",
+                "HasMathSQL",
+                "HasGeoCallbacks",
+                "HasProj",
+                "HasProj6",
+                "HasGeos",
+                "HasGeosAdvanced",
+                "HasGeosTrunk",
+                "HasGeosReentrant",
+                "HasGeosOnlyReentrant",
+                "HasMiniZip",
+                "HasRtTopo",
+                "HasLibXML2",
+                "HasEpsg",
+                "HasFreeXL",
+                "HasGeoPackage",
+                "HasGCP",
+                "HasTopology",
+                "HasKNN",
+                "HasRouting",
+            )
+            for fn in fns:
+                try:
+                    result = conn.execute("select {}()".format(fn))
+                    spatialite_details[fn] = result.fetchone()[0]
+                except Exception:
+                    pass
+            sqlite_extensions["spatialite"] = spatialite_details
+
         # Figure out supported FTS versions

Deployed a new build of https://github.com/simonw/calands-datasette/actions/workflows/build-and-deploy.yml for a live demo:
https://calands.datasettes.com/-/versions


cephadm-adopt: Fixes hosts addition to be managed by cephadm

The tasks "manage nodes with cephadm - ipv4/6" are skipped when cephadm_mgmt_network contains more than one ip network which prevent cephadm from managing the host.

jenkins test centos-container-cephadm_adopt


Any installers for this?

I have no idea how to "compile" qlimagesize myself. I'm completely illiterate when it comes to coding and all.
Where can I find a regular installer or .dmg for this?

Not here, and I won't make one.