Only highlight tab on prefix match

This PR updates the tab utility so that instead of making a tab active when its name exists anywhere in the route, it only makes the tab active when its name exists at the start of the route.

The tab named universe-packages will be active with either of the routes universe-packages or universe-packages-detail.
The tab named services will be active with services and services-detail but not with -services-deployment.

This PR provides the basis for the fix in #166

Reviewer: @mlunoe

i remember there was a reason it was implemented this hacky way.
for example, this breaks the highlighting of the package-detail for universe.

if you find a way to fix that, then this PR will be cool

Hm ):

Thanks for the catch @kennyt.

💡 What about if we just use startsWith? That way we can continue to use prefixes in routes, and we can also keep the readability of the service-deployment route by introducing a prefix like a hyphen.

Tests and lint are passing locally, looks like the Velocity build failed during npm install.

Yeah, I see a bunch of untar errors like npm ERR! tar.unpack untar error /root/.npm/core-js/1.2.6/package.tgz. Weird!

So how do we get this PR merged @rcorral ? I tried adding npm cache clean to our build config but it didn't seem to work. I can't think of other reasons why the build failed here – any tips?

We run the tests again :) trying that now.


Select2 Accessibility Tweaks

Tested with the latest pre-release.
The only problem with removing items is the tabindex="-1" prevents it from being focused, so the user can't remove an item with the keyboard. If I remove that attribute, the selected item(s) delete buttons get selected before the control, and the content is read well.
It also doesn't announce the label tied to the multi-select field I connected it to; instead, it says something like "item has autocomplete; remove item test; blank". I was able to make this read (more) sensibly by performing the following actions (manually, in the DOM):

Remove the aria-describedby attribute from the input element; this fixes the selected items being read out every single time you tab to the field--especially when you just moved through them by hitting the x buttons.
Add an id to the field label (I was using the for attribute; this step wouldn't be necessary if the label already had an id).
Putting an aria-labelledby attribute on the input element pointing to this label (aria-labelledby="my-new-label"). Now it says something like "combobox collapsed; {header} headed has autocomplete; blank". I'm not sure where the "blank" part is coming from.

I support the author of issue, it's confusing what a user can add but can't remove a item using the keyboard


Fix typo: vercel -> Vercel

작업 내용

Vercel

GitHub
YouTube
TypeScript
JavaScript

리뷰 노트

https://github.com/junhoyeo/github-rank-in-dimigo/pull/4

From that day, I never used the word GitHub wrong again

ㅋㅋㅋㅋㅋㅋㅋㅋ


Climate DISK broken

Describe the bug
Unable to create a hypothesis using climate disk. Server doesn't return the options
To Reproduce
Steps to reproduce the behavior:

Go to https://climate.disk.isi.edu/hypotheses/new?q=http://disk-project.org/resources/climate/question/HQ2
Click on any template
See error

Screenshots
API returns
{
	"message": "com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected EOF at line 1 column 16"
}

Configuration: https://github.com/KnowledgeCaptureAndDiscovery/k8s/blob/master/disk-server/disk/climate/config-maps/server-properties.yaml
Additional context
Add any other context about the problem here.

@hvarg fixed?


Failed loop closure for full usage demo in Docker - wrong parameters settings?

Hi @MaverickPeter,
Thanks for your update and release of the full usage demo!
I've tried to run the full usage bags in Docker. However, I found that if the parameter icp_fitness_score is set at 0.1 by default, most of the loop candidates would be rejected and the point cloud maps are only partially shown (please see figures below).

If I increase the value of icp_fitness_score to 0.35, more loops would be accepted and I would be able to see more point clouds (please see figures below). But the 3 maps were still not fused and I'm not able to obtain a loop closed global map.

So is there any possible reason for this?
I'm guessing is the default parameters setting in the Docker fit for the full usage demo? What are the other important parameters that I need to fine-tune to obtain the good loop closure results for the full usage demo?
Cheers.
Best Regards,
William

Hi @WilliamWoo45, it's weird that the loops are added (black lines in the third image), but the optimization is not working. There might be some outliers in the graph that cause this problem. I'll try to reproduce this issue and fix it next week.

Hi @MaverickPeter,
Thanks for your update and release of the full usage demo!
I've tried to run the full usage bags in Docker. However, I found that if the parameter icp_fitness_score is set at 0.1 by default, most of the loop candidates would be rejected and the point cloud maps are only partially shown (please see figures below).

If I increase the value of icp_fitness_score to 0.35, more loops would be accepted and I would be able to see more point clouds (please see figures below). But the 3 maps were still not fused and I'm not able to obtain a loop closed global map.

So is there any possible reason for this? I'm guessing is the default parameters setting in the Docker fit for the full usage demo? What are the other important parameters that I need to fine-tune to obtain the good loop closure results for the full usage demo?
Cheers.
Best Regards, William

What version of video card driver are you using

Have you solved it? I have also encountered this problem


Rebased

Pull in changes from advancedtelematic fork.

@tkfu or @cajun-rat want to take a look at this and/or https://github.com/uptane/meta-updater/pull/1 before I merge?

I've haven't tried running it, but the change looks good to me


STORM-2141 [Storm SQL] UDAFWrapper needs to provide parameter information when error invoking method

While developing UDF and UDAF, users should be aware of association between Calcite RelType and Java Type.
Though Calcite validates SQL statement, there seems be the chance for UDAF to be called for unexpected parameter types, and "java.lang.IllegalArgumentException: argument type mismatch" is thrown.
We can grab it and provide expected parameters and actual parameters so that users can investigate why.

This is against STORM-2200 which is discussed on<EMAIL_ADDRESS>Closing.


getTabs throw "Unexpected end of JSON input"

I'm trying to access the url of the current tab and faced issues when playing with the getTabs() function:
[2021-12-20 15:24:44.115] [warn]  SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at global.getTabs (file:///Users/valentin/.kit/lib/browser.js:62:17)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async file:///Users/valentin/.kenv/.scripts/example.mjs:3:12

For example with this script taken from this lesson:
import "@johnlindquist/kit"

let tabs = await getTabs()

let tabsMd = tabs
  .map(tab => `* [${tab.title || tab.url}](${tab.url})`)
  .join("\n")

let notes = await editor(tabsMd)

I'm using Brave.

On my phone, but I believe it's:
await getTabs("Brave")
It defaults to Chrome.

You are completely right, I thought it was defaulting to the default browser of the system.

🤔 I'll have to see if it's possible to query for the default browser

@johnlindquist I am having the same error, when I pass anything as a parameter, but not "Google Chrome", for example:
`import "@johnlindquist/kit"
let tabs = await getTabs("Firefox")
let tabsMd = tabs
.map(tab => * [${tab.title || tab.url}](${tab.url}))
.join("\n")
let notes = await editor(tabsMd)
... more code`
Gives me the exact error: SyntaxError: Unexpected end of JSON input

I'm experiencing the same. Basically I'm trying to port this script to use Firefox Developer Edition.
For the line:
let currentTabs = await getTabs("Firefox Developer Edition")

It throws:
[warn] SyntaxError: Unexpected end of JSON input

I also tried with "Firefox", no luck either. In both cases, the browser will start if not already started. Might this be due to missing privacy automation allowances? Kit only lists "Google Chrome" there to check.

I'm having the same issues as @KiwiKilian when I try to get the current tabs from a Firefox window. I have done some research and testing and found the following two sources that caught my attention:
https://bugzilla.mozilla.org/show_bug.cgi?id=125419
A 21-year-old bug report on Firefox to add basic AppleScript functionality. Apparently it hasn't been implemented and that's why it's not supported in Script Kit.
https://matthewbilyeu.com/blog/2018-08-24/getting-url-and-tab-title-from-firefox-with-applescript
This is a blog post from someone who wrote an AppleScript to get the current tab title and url through copy/paste. This is probably not a good use case for a getTabs function that needs to get all open tabs from all windows, but is interesting to read about.
I guess the only thing we can do is wait and let the Firefox developers know that we would like AppleScript support in a future version. And for script kit to maybe add a warning/message that not all browser functions are compatible with Firefox.

@KiwiKilian @timsun28
I want to move away from AppleScript as much as possible. So my gameplan is to write a Chrome, Firefox, etc extension that can offer a bridge into Script Kit. A quick start would be something as simple as:
"An extension that writes the current open tabs to a tabs.json"
Then Script Kit could read that file and we're back in business.
Any chance that's something you'd be interested in building?

@johnlindquist
That sounds interesting, and would also help with using the same extension for both windows, mac and possibly linux.
Have you already planned out how you're going to trigger this write to a file functionality (for a browser/vscode)?
If Firefox doesn't have AppleScript support, how are you planning to trigger something within an extension?
I would be interested to look into this, I'll give it a go this week and see what I can come up with for Firefox in particular.

@timsun28 So my hope is that extensions have events when tabs/urls change.
So the full functionality of the extension would be:
when tabs change -> write tabs.json

The Script Kit would only have to read the tabs.json file and wouldn't have to know anything about Firefox/Applescript/etc.

@timsun28 It's also possible that Firefox creates a file/db somewhere on the system already. Chrome does this for bookmarks/history:
https://github.com/johnlindquist/kit/discussions/1041
But I haven't looked into Firefox at all

@johnlindquist I've found that browser add-ons allow an extension to communicate between native apps using standard input/output on the app side of things to receive messages. I think this could be used to let script kit the app send a message to the browser extension for data and let the browser extension reply with the requested data. The only downside is that there seems to be quite a lot of differences between browsers and operating systems. But they are all well documented, so it shouldn't be too much of a problem.
Some pages that contain information about this protocol:
General info
App side of things
Example using a python app
My example GitHub repo for ScriptKit
Could you let me know if you think this is a good approach for the given problem and if the Node.js example is something that could be implemented in ScriptKit app?
The only thing I don't quite get is how the .json file works in the native app. It doesn't seem to need to be registered in a way.

@timsun28 Wow, that could unlock a ton of cool stuff and definitely worth exploring 🤔
I still think the first step is to simply capture the current state (windows/tabs/urls) into a json file that a script could read.
Script Kit could even watch the json file for changes if you want to run a script any time the browser state changes.
To me, "browser state as a json file" just feels like a cross-platform, easy win that covers 90% of scenarios.
Then we could dive into sending messages between browser<->Script Kit and build out some really exciting workflows 🤯

@johnlindquist Looking at the following page it seems like there is not really a good solution for writing to any file type. The only option I see is to write to the IndexedDB of the browser, but I'm not sure if IndexedDB is available outside the app to other native applications.
And because Script Kit won't be directly communicating with the browser, you need to make sure that the .json file is always up-to-date.
The JSON solution also doesn't allow for any future changes in terms of actions in the browser like switch to active tab, favourite a certain tab, delete history or any other actions that could be triggered from an extension.
I will try to make a proof of concept that works with script kit and Firefox, so I could demonstrate how this could be further implemented in the app!


ERS Kafka message topic

Description
Subscribe to erskafka-reporting and save messages.
Subscription uses a regex "^(control.*.process_manager|erskafka-reporting)". I wasn't sure if it was worth having two consumers for each topic (maybe threaded), versus having one consumer with an ever growing topic regex. Maybe a cleaner way of doing that.
A new topic field is added to the message model to discriminate (255 chars is the max length of topic name (actually it's 249 now) ).
Fixes #165
Type of change

[ ] Documentation (non-breaking change that adds or improves the documentation)
[x] New feature (non-breaking change which adds functionality)
[ ] Optimization (non-breaking, back-end change that speeds up the code)
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] Breaking change (whatever its nature)

Key checklist

[x] All tests pass (eg. python -m pytest)
[ ] The documentation builds and looks OK (eg. python -m sphinx -b html docs docs/build)
[x] Pre-commit hooks run successfully (eg. pre-commit run --all-files)

Further checks

[ ] Code is commented, particularly in hard-to-understand areas
[ ] Tests added or an issue has been opened to tackle that in the future. (Indicate issue here: # (issue))

Codecov Report
Attention: Patch coverage is 41.66667% with 7 lines in your changes missing coverage. Please review.

Project coverage is 81.15%. Comparing base (fb63f67) to head (1e838ce).
Report is 3 commits behind head on main.

Files with missing lines
Patch %
Lines

main/management/commands/kafka_consumer.py
0.00%
7 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #177      +/-   ##
==========================================
+ Coverage   80.61%   81.15%   +0.53%
==========================================
  Files          26       27       +1
  Lines         325      329       +4
==========================================
+ Hits          262      267       +5
+ Misses         63       62       -1

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

Oops, I wasn't filtering. Just a moment...


A small bug when the time on my server is not accurate

Requirement - what kind of business use case are you trying to solve?
I am a college student, and I'm learning the basics of Jaeger now.

Problem - what in Jaeger blocks you from solving the requirement?
It's about a small bug.
I can't get any traces by default even if I configure everything right as in Get Started.  It upset me for a long time and  I finally found out that it's because the time on my server is not accurate( it's 20min later than normal), so Jaeger thinks that my traces are generated in the future. And Jaeger shows traces last hour by default, so it doesn't show anything in this case. I can't get any traces until I use 'custom time range' finally.
Proposal - what do you suggest to solve the problem or improve the existing situation?
I think that maybe this is because Jaeger doesn't use local time but the 'hotrod' uses local time. What should I do if it's not convenient for me to accurate my server time?

Any open questions to address

why do you call it "a bug"?  It sounds like Jaeger is behaving as expected. I am not sure it's worth it for Jaeger to try to deal with massive clock skews between the browser and the servers that generate the spans.

why do you call it "a bug"? It sounds like Jaeger is behaving as expected. I am not sure it's worth it for Jaeger to try to deal with massive clock skews between the browser and the servers that generate the spans.

Sorry but I finally got that the time we use to search depends on our browsers. Thanks.


Python: Separate the integration point for Azure CosmosDB and MongoDB

The issue #2591 asking for MongoDB integration in Semantic Kernel was closed on Aug 28, calling it a duplication of Azure CosmosDB integration already in progress (issue #2375). This decision needs to be revisited on multiple fronts.

Vector search in Azure Cosmos and MongoDB have different interfaces (link) and are not compatible.

By representing two separate products as one creates confusion and leads to a bad user experience. The PR mentions an api_type parameter (with options azuremongodb and mongodbatlas) which is defaulting to Azure. Apart from being factually and semantically incorrect, this seems highly problematic to me as there might be a situation where the MongoDB user starts using this expecting it to be MongoDB and gets confused when the product doesn't work as expected, since it defaults to Azure CosmosDB.

Azure Cosmos DB  provides an API compatible with MongoDB, PostgreSQL, and Apache Cassandra, which have a vector database offering of their own. Currently Azure CosmosDB exposes the vector capability for MongoDB in CosmosDB and vector capability for Postgres in CosmosDB. It may also expose the vector db functionality for Cassandra in the future. The community needs to discuss these various Interfaces.

Currently, Postgres contains a standalone integration - Postgres Semantic Kernel integration, and that seems like the right architecture to me. Merging MongoDB with Azure CosmosDB would be akin to removing the Postgres integration and providing it as an API parameter in the Azure CosmosDB integration.

The asks:
The scope of #2560 should be restricted to Azure CosmosDB, which was the original intent of issue #2375 (Adding Azure CosmosDB Mongo vCore as a datastore). MongoDB should be a separate integration, just like Postgres and others. Towards that end, #2591 should be reopened so the community can work on a MongoDB integration.

Closing this issue and we will work from #2591 per our discussion today.


protect existing secret keys

Use Case
Currently, bolt secret createkeys command overrides existing secret keys unconditionally and can lead to data loss if ran from wrong project directory.
Describe the Solution You Would Like
command should fail if configured keys already exist. To provide existing option to override existing keys --force or --override should be used explicitly

The implementation of this should be a standard flag passed to the createkeys tasks that tells it whether to overwrite existing keys or error if they are present.


Create usable EL7 rpms with bdist_rpm that pull in all dependencies

cleanup-ms: tools/gen_completion already handles missing ms.version, removing it creates invalid code
setup.cfg: sort requires and build_requires
setup.cfg: ipaddress is provided by python-ipaddress rpm
setypcfg: add recent dependencies for python six,psycopg2,twisted-web (all available on EL7/EPEL7)
Change-Id: Ic555c34f60c94b3fe3ff20c9468e5cd2ecb25152
Replaces #41 and #58
Fixes #47 and #48

Can you split this into three commits please?

cleanup-ms: tools/gen_completion already handles missing ms.version, removing it creates invalid code
setup.cfg: refactoring commit to sort requires and build_requires
setup.cfg additions/changes

@ned21 @urbonegi euhm, see #41 and #58. you want multiple commits, or PR per commit? i'm lost now...

@stdweird - oops, sorry clearly cross-wires here. Definitely only 1 PR, I would have thought separate commits but will defer to @urbonegi ...

so the general rule is independent piece of work comes as a separate commits. Question is whether these aew independent or not.

@stdweird I am quite new here - not yet familiar with the code so well. So I cannot make decision if these changes are independent - account for different tasks or all part of one task. In first case, they should go as separate commits, in second as one commit.. As you best know the rational for the changes anyway, could you clarify are these account for different functionality or are a part of the same task.

they are all same task: provide (EL7) rpms as part of the quattor release

Merged https://github.com/quattor/aquilon/commit/60c93a83c355961ebf340c2e12244b75c4901310


Fix for : documentation iframe does not scale to 100% height

When you click on a documentation link in the halbrowser it opens this documentation in an iframe in the right hand column.
On recent versions of safari / firefox / chrome on the mac this iframe is not scaled to 100% height despite the following css being applied to it
.documentation iframe { width: 100%; height: 100%; }

This css will work in quirks mode but, the hal browser uses an html5 doc type, so here it does not.
The default height of an element is auto and you can't take a percentage from that
Example of what it looks like now :

legit, thanks :+1:


docs: existing links to "VS Code Server" should be updated

📚 Is your documentation request related to a problem?
The following are the concerned links:

https://github.com/nuxt/devtools/blob/a6e0bdcd09d3fd5b87b5c1ff895964c44d3eb686/docs/content/1.guide/1.features.md?plain=1#L95
https://github.com/nuxt/devtools/blob/a6e0bdcd09d3fd5b87b5c1ff895964c44d3eb686/packages/devtools/src/integrations/vscode.ts#L151

The existing links point to an outdated post on the "Visual Studio Code" blog here. While there's an updated blog post mentioned in said outdated post; find it here, it's likely that more posts have followed or may could follow.
I suggest linking to the "VS Code Server" documentation page here, instead.
🔍 Where should you find it?
Just where it is. I'm not suggesting that the docs' copy or location should change. Only the link should be updated.

ℹ Additional context
No response

I am aware of their newer version of the code server; however, the last time I checked it, because they are moving to the tunnel approach instead of self-host locally, it wouldn't work on Nuxt DevTools because of CORS limits. I am not sure if there would be a solution for that at this moment, so for now, we need to point to the old post for users to follow the legacy approach. If they eventually deprecate that while we can't find a good solution to workaround, we might unfortunately need to remove this feature from Nuxt DevTools.

Thank you for the response, @antfu!
That's a great argument.
Please note that, the linked blog post claims that "VS Code Server is in private preview" and points a Nuxt user to sign-up:

yet the form is closed and points to the non-legacy approach: https://aka.ms/vscode-server-doc

Therefore, the Nuxt user is eventually sent to the newer approach. I agree with you that if they eventually deprecate and you can't find a good solution to workaround, then you might need to remove this feature from Nuxt DevTools.
In the meantime, maybe having the legacy approach (captured in the linked blog post) documented in Nuxt documentation may suffice. What do you think? I'm happy to help with that effort.

Seen that this PR was closed by #763
Cheers.


Attributes don't move around

Although the end goal should be that attributes are taken into account by the algorithm, one thing that I think is definitely an issue is that if you call_nauty on an ACset it will only permute the Cset structure. So when you do call_nauty(ac::ACSet).cset it gives a Frankenstein ACset with attributes and cset not linked anymore..

You're right that actually supporting ACSets (https://github.com/AlgebraicJulia/CSetAutomorphisms.jl/issues/18) is the right way to go. The options for you now are:

Use the (slow) Julia implementation rather than call_nauty to actually incorporate attribute data
If you're fine ignoring attribute data, take the NautyRes.cset and then use the NautyRes.cmap information to permute the attributes yourself (via the permutations on their source objects)

Alternatively, until the issue is addressed I could just throw an error if an ACSet has attributes in the call_nauty code?

Option 2 seems like a pretty contained PR project for anyone trying to get involved in the development. Throwing an exception until that gets patched seems fine, although it doesn't sound like that much more work to add proper support based on option 2.

addressed by https://github.com/AlgebraicJulia/CSetAutomorphisms.jl/pull/28


Bug: clicking on radio button inside a modal closes the modal

Hi,
I'm using RadioButtons inside a modal. If I use it as a controlled component, clicking on a radio button closes the modal.
I reproduced it on stackblitz: https://stackblitz.com/edit/nextjs-lztzqg?file=pages%2Findex.tsx
Now I use radio buttons in uncontrolled mode and it works.

Hello @sbourdon13,
Thank you for bringing the issue to our attention.
I suspect that this bug originates from the core library. @lab9fr, could you please review the situation in the playground and confirm my suspicions?
Appreciate your assistance!

Working on a form with controlled inputs in a Modal component, I thought about this bug (because I didn't encountered it).
I think I nailed it: @sbourdon13 the issue is that in your example you're instanciating the modal in the Home component. So, every render instanciate a new modal component which is closed by default. It should be instanciated outside of your component.
I forked you example and it works well : https://stackblitz.com/edit/nextjs-fuaw3d?file=pages%2Findex.tsx

Aaah yes, makes sense. My bad 🤦 I close this issue then, thanks!


Added Automation Integration for "Label Missing Issue Tracker Info"

Fixes: #300
This PR adds a new example "Label Missing Issue Tracker Info" in Automation Library. This has been discussed in https://github.com/linear-b/gitstream/discussions/253
Description :-
Label PRs that lack a reference to a project tracker issue (Jira, Azure Boards, Shortcut, Asana) in the PR title or description.
Template :-

The PR lacks a project tracker ticket number in the title, or a link to a project tracker resource in the PR description.

Automation Actions:

Apply a ⚠ Missing Project Tracker label.
Post a comment explaining that the PR author must provide a refernce to the associated project tracker resource.

Please provide a link to the associated resource in your team's project tracker.

Please have a look at the working example too :- https://github.com/Shadow-Test-Organization/terraform-examples/pull/29

Thanks for the update comments @BenLloydPearson . I have made these changes


update dependencies; fix tslint config; fix tslint errors

I encountered typescript errors when I tried to build the example, so I updated the dependencies and fixed a few linting errors. A few of the linting rules were deprecated.
Errors:
node_modules/@types/express-serve-static-core/index.d.ts(244,37): error TS1110: Type expected.
node_modules/@types/express-serve-static-core/index.d.ts(245,39): error TS1110: Type expected.
node_modules/@types/express-serve-static-core/index.d.ts(246,42): error TS1110: Type expected.'
...
node_modules/@types/express-serve-static-core/index.d.ts(468,1): error TS1128: Declaration or statement expected.
node_modules/@types/node/index.d.ts(365,17): error TS1110: Type expected.
node_modules/@types/node/index.d.ts(1854,14): error TS1110: Type expected.
node_modules/@types/node/index.d.ts(1850,15): error TS1110: Type expected.

Fixed in master


Update design of the filter button

On desktop, can we change the design of the filter button

filter.svg.zip

How do you want this changed? rounded edges? change the color, use a funnel instead?

This new icon is in production now.
https://foodoasis.la/locations/
Thanks @amybaldwindev !
https://github.com/foodoasisla/site/pull/162/commits/fed07ea4727432c0e6c57ab0235a0cee5870b858


Make file paths relative instead of absolute.

This is for https://github.com/roedoejet/EveryVoice/issues/17.

BAD PULL REQUEST


RFC: Dot notation components

Summary
Most headless ui libraries with a component based approach will use a dot notation component, also known as a namespaced component.
The current Qwik UI API does not use namespaced components. This RFC intends to discuss whether we should:

Adopt namespaced components
Deprecate the previous syntax, keep the current syntax, or support both syntaxes

Example
import { Collapsible } from '@qwik-ui/headless';

<Collapsible.Root>
        <Collapsible.Trigger>Collapsible Trigger</Collapsible.Trigger>
        <Collapsible.Content>Content</Collapsible.Content>
</Collapsible.Root>

Our current syntax is something like:
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@qwik-ui/headless';

<Collapsible>
   <CollapsibleTrigger>Collapsible Trigger</CollapsibleTrigger>
   <CollapsibleContent>Content</CollapsibleContent>
</Collapsible>

Motivation
Namespaced components offer a couple advantages:

Easy to import

import { Component } from '@qwik-ui/headless'

Typescript Autocompletion

More legible. I believe that <Modal.Description /> is easier to follow than <ModalDescription />

Drawbacks

There are potential tree shaking issues involved.

It would appear that this syntax does in-fact properly tree shake. It also does not wake up the framework or any other shenanigans from first glance.
here is a demo of the behavior:
https://github.com/thejackshelton/qwikui-select-city

Side note: you might notice core is being executed on page load here with the select component, this is a separate bug that I have since fixed.

The current components API would change.

We would have to change the API of each component to meet this new convention. This means a potential breaking change. Because Qwik UI is still pre 1.0, an API change here could be warranted.
Migration Strategy
A potential migration strategy could be exporting both our current syntax, and the new one:
export * from "./select-inline";
export { Select as Root } from './select-inline'

Then the consumer could choose to use either <Select /> or <Select.Root />
I'm not sure this is worth the effort, as it leads to potential tree shaking issues.
FAQs
So how do you get a namespaced component?
Having a lower level barrel file, for example:
in the component file
export { SelectTrigger as Trigger } from './select-trigger';

in the library export
export * as Select from '@components/select'

This becomes:
<Select.Trigger />

Hey,
we discussed this notation while creating the Modal component.
Back that time TreeShaking was the main reason why we switched from Dot-notation to the current version.
Another argument was that Dot-notation might make the developer that the provided components cannot be replaced with own implementations.
Nevertheless Dot-notation is easier to understand.
You get auto-completion.
There is one single API entry-point.
Question

Is Tree-shaking really a problem
From my understanding more is can end up in the compiled bundle, but does this mean it is also loaded by the client? In Qwik we have these cool Code-Splitting mechanisms.... Maybe there is more in the bundle, but does this mean that all this code is also loaded? 🤔

I am a big fan of the Dot-notation.

I think the dot notation makes discovery much better. I really like the idea of supporting both syntaxes so more experienced users can only import the components they need for the most finely tuned bundle.

Hey,
we discussed this notation while creating the Modal component.
Back that time TreeShaking was the main reason why we switched from Dot-notation to the current version.
Another argument was that Dot-notation might make the developer that the provided components cannot be replaced with own implementations.
Nevertheless Dot-notation is easier to understand. You get auto-completion. There is one single API entry-point.
Question

Is Tree-shaking really a problem
From my understanding more is can end up in the compiled bundle, but does this mean it is also loaded by the client? In Qwik we have these cool Code-Splitting mechanisms.... Maybe there is more in the bundle, but does this mean that all this code is also loaded? 🤔

I am a big fan of the Dot-notation.

Yeah, so I don't think it's a problem for us. I tested via a new Qwik project, and it seemed to tree shake out each of the "parts" just great.
Qwik's code splitting seems to do the trick here. It also did not execute those parts until interaction.

I think the dot notation makes discovery much better. I really like the idea of supporting both syntaxes so more advanced users can only import the components they need for the most finely tuned bundle.

Yeah it wouldn't be a breaking change at that point either. I guess the tradeoff here would be double the exports 😬 . Not sure if we'd run into any bundle problems there or not.

Here are my thoughts 👇
Pros:

Smaller import line -> import { Collapsible } from '@qwik-ui/headless'; read nicely and this will make the styled-components copy/paste code MUCH MUCH cleaner

Cons:

Will result in a breaking change (I don't think it's a good idea to have a migration strategy for such a big change as it could induce a big maintenance burden for us... Qwik UI is early and that breaking change shouldn't hurt too many users.. If we are to do it, the sooner the better).

Neutral:

No more namespace issues with preserveModules (for those who don't know, preserveModules potentially solves some tree-shaking issues we've been observing in the past) if we use <Modal.Description /> for headless and <ModalDescription /> for styled.. But I'm thinking <Modal.Description /> for styled could be cool as well for the autocomplete 😅.. So yeah neutral..
<Modal.Description /> reads the same as <ModalDescription /> to me.
There's only a slightly easier discovery thanks to typescript autocomplete on <Modal.Description />. I also have autocomplete with <ModalDescription /> (when I start writing Modal, vscode suggests me all the headless modal components) -> So kind of neutral too..
Although I haven't detected tree-shaking issues, there might be some tree-shaking issues hidden somewhere, but at least we'll know for sure 😁.. So also neutral to me..

Conclusion:
It's a rather small pro for a rather small con (since breaking change at this point shouldn't be that big of a deal), but what's missing in my analysis is the feeling of the dot syntax. I believe copy/pasting a styled component that imports a headless component with the dot syntax will be slightly less scary and feel cleaner overall. So I would slightly lean towards dot syntax.

Also, you export all the helper components a component uses, even if that is duplication. That's easier for discovery and costs nothing.
I think in this case where main and helper components are so tightly coupled, this is a great syntax. 👍

My main concern with the namespace is component reusability. For example you might want to have the same Option component for Listbox, Combobox, Select, ...
Should the user prefix the Option with the current namespace?
Is it possible to reexport the Option as part of each namespace without increasing the bundle size ?

@GrandSchtroumpf my gut tells me that it reads more nicely to have Listbox.Trigger, Combobox.Trigger, Select.Trigger even though it's the same Triggercomponent under the hood for all of them. The advantage is that you can instantly know visually that you're dealing with a Listbox sub-component and not a custom component of yours.

My main concern with the namespace is component reusability. For example you might want to have the same Option component for Listbox, Combobox, Select, ... Should the user prefix the Option with the current namespace? Is it possible to reexport the Option as part of each namespace without increasing the bundle size ?

Hm... if it's intended to be a reusable component, I don't believe it would be a namespaced component to begin with. For example, VisuallyHidden is going to remain a regular component.
The tricky part with something like a reusable listbox or option component is context.
However, what you are saying is how I believe React Aria does it. For example:
<Select>
  Favorite Animal
  <Button>
    <SelectValue />
    ▼
  </Button>
  <Popover>
    <ListBox>
      <ListBoxItem>Aardvark</ListBoxItem>
      <ListBoxItem>Cat</ListBoxItem>
      <ListBoxItem>Dog</ListBoxItem>
      <ListBoxItem>Kangaroo</ListBoxItem>
      <ListBoxItem>Panda</ListBoxItem>
      <ListBoxItem>Snake</ListBoxItem>
    </ListBox>
  </Popover>
</Select>

This is their select component API.
Every single component is able to be reusable. I believe their value proposition though is more tailored towards using their hooks, and then their own state management library, but I am still unsure how they are able to reuse everything 😅, and what the tradeoffs of that would be.
And maybe that's the direction we should go! I am still unsure of that. We have a Qwik UI meeting tomorrow if you'd like to take a stab at a much more reusable approach.

How many components are already using the dot notation vs the non-dot-notation ? If there's 10% dot notation - would it make sense to undertake such an enormous piece of work? And vice versa - if only 10% are not - make them all dot notation...

How many components are already using the dot notation vs the non-dot-notation ? If there's 10% dot notation - would it make sense to undertake such an enormous piece of work? And vice versa - if only 10% are not - make them all dot notation...

There's some components where it would be odd to do so, like . Dot notation works really great when you have "pieces" or sub-components.

implemented in 0.4


Characters like "&" in Organization Full Name are converted/displayed as html

Can you reproduce the bug at https://try.gitea.io: (ver. 1.1.0+143-g6853bf32)

[X] Yes https://try.gitea.io/ampersand

To reproduce

give "a & b" as full name to an organization.
resulting name will be a & b.

Description

Ampersand and other characters are converted to raw html when entered in "Organization Full Name"

https://github.com/go-gitea/gitea/pull/1360

The same thing for a username's full name (for example, I have an apostrophe in my last name, rather than being displayed as "Wyatt O'Day" it's displayed as "Wyatt O'Day")


cleanup and to-service traffic handling fixes

some adjustments to how svc-addressed traffic is handled
some cleanup of mutable variables and less idiomatic is_none + unwrap logic

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

PR needs rebase.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@ilrudie: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

test_ztunnel
c82e19d2c6df459057d48992b401598269d2f237
link
true
/test test

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ilrudie: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

test_ztunnel
7d1a9f0917784fa2b458b1f3e0a65f7dfd9caee7
link
true
/test test

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ilrudie: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

test_ztunnel
ee57116621a21ceee8b38d0be8dc01a643a99ad2
link
true
/test test

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest

@ilrudie: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

test_ztunnel
ee57116621a21ceee8b38d0be8dc01a643a99ad2
link
true
/test test

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


Feature request: posibility to disable source-map generation for JS but keep it for SASS / LESS

Webpack version:
1.10.x/2.x
Please tell us about your environment:
OSX 10.x / Linux / Windows 10
Current behavior:
In order to be able to generate a SASS / LESS source maps, I need to define a devtool value that leads to a JS source map generation.
module: {
    loaders: [
        {test: /\.less$/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader?sourceMap!less-loader?sourceMap')},
        {test: /\.scss$/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader?sourceMap!sass-loader?sourceMap')},
        {test: /\.sass$/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader?sourceMap!sass-loader?sourceMap')}
    ]
},

devtool: 'source-map'

Expected/desired behavior:
I tried to search for a possible solution without any luck. The desired behavior would be a posibility to disable JS source map generation in the webpack config but keep the SASS / LESS one if configured in ExtractTextPlugin like in my example.
Atleast for our use-case SASS / LESS source maps are way more important. In addition JS source-maps add an additional overhead in run / code generation where we do not use / need them at all.
Looking forward!

Have you tried the SourceMapDevToolPlugin?


[WIP] Attemp to fix https://github.com/KhronosGroup/SPIRV-Tools/issues/3909

Try to fix the point (1).

Build static mode by default (like always). for enable shared mode set -DBUILD_SHARED_LIBS=ON
Remove SPIRV-Tools-shared.pc.in. not need anymore. SPIRV-Tools.pc.in can handle both.
Let's visible always. because hide make problems when link to sprv-foo/test programs in shared mode (can' find any symbols).

Build external RE2 in static mode always

TODO:

Fix point (2) and point (3)

Point (4) is out of my scope. i'm not coder

i have done a V2. need test in real environment. in local build ok only static, only shared and both. also pases each ctest
need test when is integrated  or use (.cmake) in a project.
the list of changes is:
- Try to fix the point (1).
  - Build static unconditionally. but is only used for link all `spirv-foo` programs. because all of them (or partial) need all symbols which is only provided by static libs. for install it. see below
    This can increase the size a bit.
  - Now exist two defines witch control what type of library is installed/builded*:
     - `SPIRV_TOOLS_BUILD_SHARED_LIBS`   -> this control if you want build shared libs. and if is builded, install it when invoke `make install`
     - `SPIRV_TOOLS_INSTALL_STATIC_LIBS`  -> this not control the build static library (because is ON unconditionality), but can control the installation when invoke `make install`
     -- I do this because some distros needs only static libs, other only shared libs, other both, or other simply what install only the programs
     --- Table of individual use:

        `SPIRV_TOOLS_BUILD_SHARED_LIBS` not set   -> Disable build and installation of shared libraries
        `SPIRV_TOOLS_BUILD_SHARED_LIBS=ON'        -> Enable build and install shared libs
        `SPIRV_TOOLS_INSTALL_STATIC_LIBS` not set -> Enable by default. enable the installation the libraries when invoke `make install`
        `SPIRV_TOOLS_INSTALL_STATIC_LIBS=ON`      -> Same as not set

    --- Table of conjuntion use:

        `SPIRV_TOOLS_BUILD_SHARED_LIBS=ON'  and `SPIRV_TOOLS_INSTALL_STATIC_LIBS=ON`  -> Build and install the wrole project. include programs, static and shared libs
        `SPIRV_TOOLS_BUILD_SHARED_LIBS=OFF' and `SPIRV_TOOLS_INSTALL_STATIC_LIBS=ON`  -> Build the programs and static libs, and install the static libs and the programs when invoke `make install` (Default)
        `SPIRV_TOOLS_BUILD_SHARED_LIBS=ON'  and `SPIRV_TOOLS_INSTALL_STATIC_LIBS=OFF` -> build the programs, shared and static libs, and only install the programs and the shared libs when invoke `make install`
        `SPIRV_TOOLS_BUILD_SHARED_LIBS=OFF' and `SPIRV_TOOLS_INSTALL_STATIC_LIBS=OFF` -> build the programs and the static libs, but not install when invoke `make install`

       * In all cases, always install the headers

  - The generation of the `.cmake` files is changed. now generate two flavors: one for static (without any sufix), and other for shared (whit `shared` sufix). both can install with the two defines described above. (and not colided between both)
    -- This need HARD test. this need a CMakeLists.txt test case wich can get the info when use static libs or use shared libs. and test if can linked with other things.
       I have desing this for can coinstall shared and static in same time, an let the user what need in your project. cmake can search one or other with only need add `STATIC` or `SHARED` in the `findpackage(FOO >TYPE<)`.
  - The files `libSPIRV-Tools-shared.so` and `SPIRV-Tools-shared.pc` is completely gone. no need anymore. is a duplicate lib when build shared libs, and useless whe build static libs (who ise a shared lib when the dev use static libs?)
  - By design, the common `SPIRV-Tools.pc` can be used in both build modes. the `pkg-config` stack can handle the information of static libs with `--static` flag when exist static libs in the library path, and normal use when is used as shared lib.
    Maybe need ajust for include this information (if exist in the project) into `SPIRV-Tools.pc.in` and setup in the `CMakeFiles.txt`.
  - The visiblility of the shared/static libs is untouched: Hiden for `libSPIRV-Tools.so` and full visible for static.. the other libs originally have ones hiden and other full visible. i leave it untouch. but need test if is all ok.

TODO:
  - Fix point (2) and point (3)

- Point (4) is out of my scope. i'm not coder

notes:
maybe need update to newer cmake (now uses from 2.8)
i'm really sure can be shifted a lot with better code skills. if anyone have inporvement. i'm happy to add it
greetings


chore: trying to update deps

The problem is the @tresjs/post-processing package, there is no default subpackage export and so resolvePath cannot resolve the real path (nuxt kit will check for the entry point).
We can remove @tresjs/post-processing from the packages to read adding @tresjs/post-processing/three and @tresjs/post-processing/pnmdrs when @tresjs/post-processing  found, but then we have some name collision:

We can change the names for those 3 components and the composable adding some hint to the docs.


Refactors Account Struct to have methods

Moves the helper methods out of the Account Controller and BYOC files in
order to put them directly on the struct where they make more sense.

/hold

Thanks for the updates @iamkirkbater.
/lgtm

/hold
There's a bit of work still to be done with some of the recent changes that have gone in with InitRegions.

@rogbas please test locally and lgtm

/label tide/merge-method-squash

/hold cancel
All remaining work has been completed, this should be ready for primetime now :)

/hold

Oh boo :(  That's what I get for trying to do this the easy way :( [re: squash-commit message]

@iamkirkbater thanks for the refactor, it's much clearer to read/follow.
Reviewed and tested locally.
/lgtm

/hold cancel

/hold

/hold cancel


Leakage body CSS style

We use Ketcher-react v2.4.1 in our Datagrok platform.
After opening Ketcher form, the style of the main window has been changing.

Problem in body CSS

Is it posiible to avoid modification of the body CSS?

Dear @dmoskalenko-datagrok ,
it will be fixed as a part of release 2.4.2 (in should be done in  two  weeks).
Regards,
Andrei

Hi @dmoskalenko-datagrok ,
I'm trying to reproduce your ussue, but I'm going to need a little more information to track it down. A couple of questions:

ketcher-react package does not have a ketcher.css file. Are you sure it's imported from the package and not from somewhere else?
Some styles might leak indeed, we'll fix it. Are the ones on your screenshots the only ones you believe are leaking?

Feel free to provide any additional context, that will help. And thank you for using Ketcher!

@karen-sarkisyan I after the cleaning folder and getting ketcher-react 2.4.2 again problem is solved.
Perhaps it was the css-style file of the previous version.
Thank you for your assistance and quick feedback.


GEODE-4010: Don't use gossip with new protocol on locator

Signed-off-by: Sarge<EMAIL_ADDRESS>Thank you for submitting a contribution to Apache Geode.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
@PivotalSarge @galen-pivotal @upthewaterspout @bschuchardt
For all changes:

[x] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[x] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[x] Is your initial contribution a single, squashed commit?

[x] Does gradlew build run cleanly?

[x] Have you written or updated unit tests to verify your changes?

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and
submit an update to your PR as soon as possible. If you need help, please send an
email to<EMAIL_ADDRESS>

This change is now incorporated into GEODE-4059, see pull request at https://github.com/apache/geode/pull/1137


Add support for tvOS

This patch adds support to the pod to be used on a tvOS app project.
I have a development kit and have verified it working on my AppleTV app.

Awesome! Thanks very much.

Got a bit excited... Will merge this into master when tvOS comes out of beta. Thanks again!

I'd keep it in a separate branch that others may reference in their Podfile. That will certainly help people who are working to get an app ready on release day.


安装pandas库报错

root@qinglong:/ql/config $ pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple  pandas
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting pandas
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/4d/aa/e7078569d20f45e8cf6512a24bf2945698f13a7975650773c01366ea96dc/pandas-1.4.0.tar.gz (4.9 MB)
Installing build dependencies ... error
error: subprocess-exited-with-error
× pip subprocess to install build dependencies did not run successfully.
│ exit code: 1
╰─> [272 lines of output]
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting setuptools>=51.0.0
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/ad/65/7b98718c0ecebbdae5a5251fffc43dd3800ff3d1a6f7cc1aa09cfbcf17a5/setuptools-60.8.2-py3-none-any.whl (1.1 MB)
Collecting wheel
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/27/d6/003e593296a85fd6ed616ed962795b2f87709c3eee2bca4f6d0fe55c6d00/wheel-0.37.1-py2.py3-none-any.whl (35 kB)
Collecting Cython<3,>=0.29.24
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/6f/f5/18bb7c9b9e992141f4212dc358a7b06d24c79dee6b9c51658c7e86c767e1/Cython-0.29.27-cp39-cp39-musllinux_1_1_x86_64.whl (2.1 MB)
Collecting oldest-supported-numpy>=0.10
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/45/77/6ccb4e20a4e86e8711c512ae88bd7db8d8e895692eba8c2f519eccbb619e/oldest_supported_numpy-2022.1.30-py3-none-any.whl (3.9 kB)
Collecting numpy==1.19.3
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/cb/c0/7b3d69e6ee68bc54c97ba51f8c3c3e43ff1dbc7bd97347cc19a1f944e60a/numpy-1.19.3.zip (7.3 MB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing metadata (pyproject.toml): started
Preparing metadata (pyproject.toml): finished with status 'error'
error: subprocess-exited-with-error
    × Preparing metadata (pyproject.toml) did not run successfully.
    │ exit code: 1
    ╰─> [240 lines of output]
        Running from numpy source directory.
        setup.py:480: UserWarning: Unrecognized setuptools command, proceeding with generating Cython sources and expanding templates
          run_build = parse_setuppy_commands()
        Processing numpy/random/_bounded_integers.pxd.in
        Processing numpy/random/_generator.pyx
        Processing numpy/random/bit_generator.pyx
        Processing numpy/random/_bounded_integers.pyx.in
        Processing numpy/random/mtrand.pyx
        Processing numpy/random/_common.pyx
        Processing numpy/random/_mt19937.pyx
        Processing numpy/random/_philox.pyx
        Processing numpy/random/_sfc64.pyx
        Processing numpy/random/_pcg64.pyx
        Cythonizing sources
        blas_opt_info:
        blas_mkl_info:
        customize UnixCCompiler
          libraries mkl_rt not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/']
          NOT AVAILABLE

        blis_info:
          libraries blis not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/']
          NOT AVAILABLE

        openblas_info:
          libraries openblas not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/']
          NOT AVAILABLE

        atlas_3_10_blas_threads_info:
        Setting PTATLAS=ATLAS
          libraries tatlas not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/']
          NOT AVAILABLE

        atlas_3_10_blas_info:
          libraries satlas not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/']
          NOT AVAILABLE

        atlas_blas_threads_info:
        Setting PTATLAS=ATLAS
          libraries ptf77blas,ptcblas,atlas not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/']
          NOT AVAILABLE

        atlas_blas_info:
          libraries f77blas,cblas,atlas not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/']
          NOT AVAILABLE

        accelerate_info:
          NOT AVAILABLE

        /tmp/pip-install-tri9ob95/numpy_2637367dd1c74d4f9aac9b92245d9ad0/numpy/distutils/system_info.py:1914: UserWarning:
            Optimized (vendor) Blas libraries are not found.
            Falls back to netlib Blas library which has worse performance.
            A better performance should be easily gained by switching
            Blas library.
          if self._calc_info(blas):
        blas_info:
          libraries blas not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/']
          NOT AVAILABLE

        /tmp/pip-install-tri9ob95/numpy_2637367dd1c74d4f9aac9b92245d9ad0/numpy/distutils/system_info.py:1914: UserWarning:
            Blas (http://www.netlib.org/blas/) libraries not found.
            Directories to search for the libraries can be specified in the
            numpy/distutils/site.cfg file (section [blas]) or by setting
            the BLAS environment variable.
          if self._calc_info(blas):
        blas_src_info:
          NOT AVAILABLE

        /tmp/pip-install-tri9ob95/numpy_2637367dd1c74d4f9aac9b92245d9ad0/numpy/distutils/system_info.py:1914: UserWarning:
            Blas (http://www.netlib.org/blas/) sources not found.
            Directories to search for the sources can be specified in the
            numpy/distutils/site.cfg file (section [blas_src]) or by setting
            the BLAS_SRC environment variable.
          if self._calc_info(blas):
          NOT AVAILABLE

        non-existing path in 'numpy/distutils': 'site.cfg'
        lapack_opt_info:
        lapack_mkl_info:
          libraries mkl_rt not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/']
          NOT AVAILABLE

        openblas_lapack_info:
          libraries openblas not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/']
          NOT AVAILABLE

        openblas_clapack_info:
          libraries openblas,lapack not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/']
          NOT AVAILABLE

        flame_info:
          libraries flame not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/']
          NOT AVAILABLE

        atlas_3_10_threads_info:
        Setting PTATLAS=ATLAS
          libraries lapack_atlas not found in /usr/local/lib
          libraries tatlas,tatlas not found in /usr/local/lib
          libraries lapack_atlas not found in /usr/lib
          libraries tatlas,tatlas not found in /usr/lib
          libraries lapack_atlas not found in /usr/lib/
          libraries tatlas,tatlas not found in /usr/lib/
        <class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
          NOT AVAILABLE

        atlas_3_10_info:
          libraries lapack_atlas not found in /usr/local/lib
          libraries satlas,satlas not found in /usr/local/lib
          libraries lapack_atlas not found in /usr/lib
          libraries satlas,satlas not found in /usr/lib
          libraries lapack_atlas not found in /usr/lib/
          libraries satlas,satlas not found in /usr/lib/
        <class 'numpy.distutils.system_info.atlas_3_10_info'>
          NOT AVAILABLE

        atlas_threads_info:
        Setting PTATLAS=ATLAS
          libraries lapack_atlas not found in /usr/local/lib
          libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib
          libraries lapack_atlas not found in /usr/lib
          libraries ptf77blas,ptcblas,atlas not found in /usr/lib
          libraries lapack_atlas not found in /usr/lib/
          libraries ptf77blas,ptcblas,atlas not found in /usr/lib/
        <class 'numpy.distutils.system_info.atlas_threads_info'>
          NOT AVAILABLE

        atlas_info:
          libraries lapack_atlas not found in /usr/local/lib
          libraries f77blas,cblas,atlas not found in /usr/local/lib
          libraries lapack_atlas not found in /usr/lib
          libraries f77blas,cblas,atlas not found in /usr/lib
          libraries lapack_atlas not found in /usr/lib/
          libraries f77blas,cblas,atlas not found in /usr/lib/
        <class 'numpy.distutils.system_info.atlas_info'>
          NOT AVAILABLE

        lapack_info:
          libraries lapack not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/']
          NOT AVAILABLE

        /tmp/pip-install-tri9ob95/numpy_2637367dd1c74d4f9aac9b92245d9ad0/numpy/distutils/system_info.py:1748: UserWarning:
            Lapack (http://www.netlib.org/lapack/) libraries not found.
            Directories to search for the libraries can be specified in the
            numpy/distutils/site.cfg file (section [lapack]) or by setting
            the LAPACK environment variable.
          return getattr(self, '_calc_info_{}'.format(name))()
        lapack_src_info:
          NOT AVAILABLE

        /tmp/pip-install-tri9ob95/numpy_2637367dd1c74d4f9aac9b92245d9ad0/numpy/distutils/system_info.py:1748: UserWarning:
            Lapack (http://www.netlib.org/lapack/) sources not found.
            Directories to search for the sources can be specified in the
            numpy/distutils/site.cfg file (section [lapack_src]) or by setting
            the LAPACK_SRC environment variable.
          return getattr(self, '_calc_info_{}'.format(name))()
          NOT AVAILABLE

        numpy_linalg_lapack_lite:
          FOUND:
            language = c
            define_macros = [('HAVE_BLAS_ILP64', None), ('BLAS_SYMBOL_SUFFIX', '64_')]

        /usr/lib/python3.9/distutils/dist.py:274: UserWarning: Unknown distribution option: 'define_macros'
          warnings.warn(msg)
        running dist_info
        running build_src
        build_src
        building py_modules sources
        creating build
        creating build/src.linux-x86_64-3.9
        creating build/src.linux-x86_64-3.9/numpy
        creating build/src.linux-x86_64-3.9/numpy/distutils
        building library "npymath" sources
        Could not locate executable gfortran
        Could not locate executable f95
        Could not locate executable ifort
        Could not locate executable ifc
        Could not locate executable lf95
        Could not locate executable pgfortran
        Could not locate executable nvfortran
        Could not locate executable f90
        Could not locate executable f77
        Could not locate executable fort
        Could not locate executable efort
        Could not locate executable efc
        Could not locate executable g77
        Could not locate executable g95
        Could not locate executable pathf95
        Could not locate executable nagfor
        don't know how to compile Fortran code on platform 'posix'
        /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find Scrt1.o: No such file or directory
        /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find crti.o: No such file or directory
        /usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lssp_nonshared
        collect2: error: ld returned 1 exit status
        Traceback (most recent call last):
          File "/tmp/tmpoawf0bs0_in_process.py", line 363, in <module>
            main()
          File "/tmp/tmpoawf0bs0_in_process.py", line 345, in main
            json_out['return_val'] = hook(**hook_input['kwargs'])
          File "/tmp/tmpoawf0bs0_in_process.py", line 164, in prepare_metadata_for_build_wheel
            return hook(metadata_directory, config_settings)
          File "/tmp/pip-build-env-76dejotd/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 157, in prepare_metadata_for_build_wheel
            self.run_setup()
          File "/tmp/pip-build-env-76dejotd/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 248, in run_setup
            super(_BuildMetaLegacyBackend,
          File "/tmp/pip-build-env-76dejotd/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 142, in run_setup
            exec(compile(code, __file__, 'exec'), locals())
          File "setup.py", line 508, in <module>
            setup_package()
          File "setup.py", line 500, in setup_package
            setup(**metadata)
          File "/tmp/pip-install-tri9ob95/numpy_2637367dd1c74d4f9aac9b92245d9ad0/numpy/distutils/core.py", line 169, in setup
            return old_setup(**new_attr)
          File "/tmp/pip-build-env-76dejotd/overlay/lib/python3.9/site-packages/setuptools/__init__.py", line 165, in setup
            return distutils.core.setup(**attrs)
          File "/usr/lib/python3.9/distutils/core.py", line 148, in setup
            dist.run_commands()
          File "/usr/lib/python3.9/distutils/dist.py", line 966, in run_commands
            self.run_command(cmd)
          File "/usr/lib/python3.9/distutils/dist.py", line 985, in run_command
            cmd_obj.run()
          File "/tmp/pip-build-env-76dejotd/overlay/lib/python3.9/site-packages/setuptools/command/dist_info.py", line 31, in run
            egg_info.run()
          File "/tmp/pip-install-tri9ob95/numpy_2637367dd1c74d4f9aac9b92245d9ad0/numpy/distutils/command/egg_info.py", line 24, in run
            self.run_command("build_src")
          File "/usr/lib/python3.9/distutils/cmd.py", line 313, in run_command
            self.distribution.run_command(command)
          File "/usr/lib/python3.9/distutils/dist.py", line 985, in run_command
            cmd_obj.run()
          File "/tmp/pip-install-tri9ob95/numpy_2637367dd1c74d4f9aac9b92245d9ad0/numpy/distutils/command/build_src.py", line 144, in run
            self.build_sources()
          File "/tmp/pip-install-tri9ob95/numpy_2637367dd1c74d4f9aac9b92245d9ad0/numpy/distutils/command/build_src.py", line 155, in build_sources
            self.build_library_sources(*libname_info)
          File "/tmp/pip-install-tri9ob95/numpy_2637367dd1c74d4f9aac9b92245d9ad0/numpy/distutils/command/build_src.py", line 288, in build_library_sources
            sources = self.generate_sources(sources, (lib_name, build_info))
          File "/tmp/pip-install-tri9ob95/numpy_2637367dd1c74d4f9aac9b92245d9ad0/numpy/distutils/command/build_src.py", line 378, in generate_sources
            source = func(extension, build_dir)
          File "numpy/core/setup.py", line 663, in get_mathlib_info
            raise RuntimeError("Broken toolchain: cannot link a simple C program")
        RuntimeError: Broken toolchain: cannot link a simple C program
        [end of output]

    note: This error originates from a subprocess, and is likely not a problem with pip.
  error: metadata-generation-failed

  × Encountered error while generating package metadata.
  ╰─> See above for output.

  note: This is an issue with the package mentioned above, not pip.
  hint: See above for details.
  [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error
× pip subprocess to install build dependencies did not run successfully.
│ exit code: 1
╰─> See above for output.
note: This error originates from a subprocess, and is likely not a problem with pip.

我这边也安装成功了，具体过程很曲折的，先安装的numpy，在安装的pandas库，具体怎么成功的不太清楚

hhh,安装后跑脚本发现还有时区的问题，刚刚解决，可太难了

市区问题怎么解决的呢

分享一下我的办法

添加linux依赖gcc gfortran build-base freetype-dev libpng-dev openblas-dev lapack-dev python3-dev
添加python依赖numpy
添加python依赖pandas


need callback for each internal requests

how many internally call http requests? if file exists one head request, is it only this call? or have another?
i need to get header ("auth") of the head request and set new one on next request.
any apis to achieve this?

You can disable grab's HEAD requests by setting Request.NoResume = true. Naturally, this will also prevent grab from being able to resume incomplete downloads.
If you want both features, you will need three request:

first you send a HEAD request to get the auth header
second, grab will send HEAD request to determine file size, resume-ability, etc.
last, grab will send GET request to download the file

If your program is not particularly latency sensitive, this additional HEAD request seem inexpensive to me.


Add freeze option to articles

Currently, each time the site is rendered via quarto render, every .qmd file is re-rendered and executed. This may cause issues in the future, as the R and R packages are updated old code can cause warnings, errors, or changes in results in previously accurate comparisons. It could also be harder to add new packages with conflicting dependencies (less of an issue in R, but more so in Python).
I think it would be beneficial to avoid this, by adding to the Quarto yaml header the freeze option:
execute:
  freeze: true  # never re-render during project render

or
execute:
  freeze: auto  # re-render only when source changes

We would also need to include details of when the page was last updated and the package versions used to execute a page.

We actually kind of want those issues. If someone needs to up versions a package that causes someone else's page to break I would rather it errors such that it will fail the checks we have in place.

I guess that makes sense, it's whether the site is an up-to-date state of the comparison, or an archive of the changes. I had thought it could be too much work to keep all pages up to date, so better to freeze them as-of publication and then updating when necessary. But happy to close this if that's not the direction


chore(MSFDG): add common datatypes

Description
This PR adds some common datatypes and methods used in game and DA.
Tests
go test ./...

Looks like op-challenger2 is a snapshot of op-challenger, and changes are based on the snapshot.
How to merge future upstream changes of op-challenger into op-challenger2?

Before actual review, I've a question about the overall process:
Looks like op-challenger2 is a snapshot of op-challenger, and changes are based on the snapshot.
How to merge future upstream changes of op-challenger into op-challenger2?

Following Qi's advice, currently, it's mainly for develop usage. If we want to merge future upstream changes of op-challenger into op-challenger2, we can do it manually by cp -r  op-challenger/* op-challenger2 and do cherry-pick.


polish: On 10000/ auth errors, we should log details about the token

A significant number of bug reports/issues are about auth and tokens and stuff. While there are bugs that we should fix, some of it is just configuration. So when wrangler fails with a 10000 error, we should log details related to the token so it's easier to debug/report. (api for getting permission groups: https://api.cloudflare.com/#permission-groups-list-permission-groups)

This is very similar to (perhaps even a duplicate of) https://github.com/cloudflare/wrangler2/issues/761.

A significant number of bug reports/issues are about auth and tokens and stuff. While there are bugs that we should fix, some of it is just configuration. So when wrangler fails with a 10000 error, we should log details related to the token so it's easier to debug/report. (api for getting permission groups: https://api.cloudflare.com/#permission-groups-list-permission-groups)

Is this referring to the instance of people having a token that doesn't have correct permissions somewhere not getting information necessary, I remember someone had mentioned showing the token and some additional information from the permissions error. I don't remember that scenario completely, but it may help to know it to differentiate the work in issue 761


Update bug assigning children string value.

Doing something like:
mylabel.children['text'] = 'new text value'
the ui is not updated.

Seems to be related to the use of a list and a dictionary when adding a child. Assigning a string value, the children dictionary gets updated and the Tag.repr function finds the change. The new representation is created on the _render_children_list that (with surprise) don't contains the update. It contains an old copy of the widget instead.


Adding base styles does not work

Following the Tailwind docs on how to add base styles (https://tailwindcss.com/docs/adding-base-styles)
I changed the styles.css to the following:
/* Tailwind base - put variables under: tailwind.config.js */
@import "node_modules/tailwindcss/base";
/* Tailwind component classes registered by plugins*/
@import "node_modules/tailwindcss/components";
/* Site Specific */
@import "assets/css/site";
/* Tailwind's utility classes - generated based on config file */
@import "node_modules/tailwindcss/utilities";

@layer base {
  h1 {
    @apply text-2xl font-bold;
  }
  h2 {
    @apply text-xl font-bold;
  }
}

As I added these extra lines on the first reload of the page (just using hugo server) the styles appear correctly.
But once I click through the pages or do a manual reload of the page, the headers become unstyled again and stay that way.
I do not understand how this could happen, any idea?

Works on my machine *. Do you get any errors? I tried it with tailwind 2.0 and background colors.
/* Tailwind base - put variables under: tailwind.config.js */
@import "node_modules/tailwindcss/base";
/* Tailwind component classes registered by plugins*/
@import "node_modules/tailwindcss/components";
/* Site Specific */
@import "assets/css/site";
/* Tailwind's utility classes - generated based on config file */
@import "node_modules/tailwindcss/utilities";

@layer base {
  h1 {
    @apply text-5xl bg-red-400;
  }
  h2 {
    @apply text-3xl bg-green-700;
  }
}

Works on my machine *. Do you get any errors? I tried it with tailwind 2.0 and background colors.
/* Tailwind base - put variables under: tailwind.config.js */
@import "node_modules/tailwindcss/base";
/* Tailwind component classes registered by plugins*/
@import "node_modules/tailwindcss/components";
/* Site Specific */
@import "assets/css/site";
/* Tailwind's utility classes - generated based on config file */
@import "node_modules/tailwindcss/utilities";

@layer base {
  h1 {
    @apply text-5xl bg-red-400;
  }
  h2 {
    @apply text-3xl bg-green-700;
  }
}

I did not get any errors. I switched to a different theme now, so can't test it anymore.
If it works for you, it was probably some problem with my setup then.

I did not get any errors. I switched to a different theme now, so can't test it anymore.
If it works for you, it was probably some problem with my setup then.


Register PSR-7 response.

The intent is to allow controllers and middleware to typehint against Response and having one injected.

I spent an hour or so trying to figure out how to write a test for this and I wasn't able to figure out how to get an application, register just this one provider to it, create a request, dispatch it, and have get to the point that the controller was being triggered. If there is an example of how to wire up a service provider and make requests against the application/dispatcher after the fact, I'd be happy to add a test for this.

Hmm, this doesn't look quite right. Surely all our transformer code needs to be updated?

@GrahamCampbell What would need to be updated? This isn't for transforming anything, but just to be able to typehint a empty response, to use as basis to prepare the actual response, right?
The transorming of the Response already happens here: https://github.com/laravel/framework/blob/36d50ba04f268fda5ed648320ecbf8f5b4f654de/src/Illuminate/Routing/Router.php#L1222-L1223
But that doesn't care how the Response is created.

I was just coming to write a response when I see @barryvdh said exactly what I was going to. Unless I misunderstand @GrahamCampbell's concern/question, I would agree that this is for the purpose of satisfying dependencies for controllers or middleware that expect to receive a Response instance. This will be a good step to making it easier to integrate some of the other PSR-7 controller/middleware variants out there that include a response in the method signature.

I'm saying we should be creating the response in the same way in both places.

So you want to use HttpMessageFactoryInterface to create a new (empty) PSR-7 Response?
protected function registerPsrResponse()
{
    $this->app->bind('Psr\Http\Message\ResponseInterface', function ($app) {
        return (new DiactorosFactory)->createResponse(new Response);
    });
}

Which would have pretty much the same, but probably be a bit slower?
I would agree that it would make more sense if we would bind any Factory, but right now it's just Diactoros anyways, so would it matter?

Yes, I would not think we would want to do it that way, either.
Also, people would be able to bind to another factory if they wanted to, right? That is, if they wanted to use another PSR-7 Response implementation, they could override this? (I'm still a bit new to the Container stuff and Laravel in general, so I could be way wrong on my assumption here)
I also just noticed that neither the bridge nor diactoros are actually required anywhere in either the root composer.json or routing's composer.json. is that to be expected?
If it is acceptable to register these things w/o having them actually be there with the understanding that projects will have to opt-in to requiring them on their own, I'm fine w/ that. If that was an oversight I can send another PR to get those required (or maybe even just suggested?).

I think it was omitted on purpose. I asked @taylorotwell to add it, because the transforming of the PSR Response to Symfony Response wasn't easily possible without being added to the core like it is now.
The resolving of the Request (and Response) could be in a package, but was provided to make it simpler. I guess Response resolving wasn't added because we just didn't have an actual use case. But if you do have a valid one, I'm +1 for adding this :)
And the diactoros/bridge is probably not added to keep it a bit more 'light' as PSR-7 isn't yet really much used yet. Same goes for doctrine/guzzle/aws/pusher/ironIO, that are available but you need to manually pull it in. (It would be good to add this in the suggest section though..)
See the http://laravel.com/docs/5.1/requests#psr7-requests section where it's explicitly mentioned that you need to require those packages.

And yes, people could just register their own bindings for Psr\Http\Message\ResponseInterface/ResponseInterface to override the Diactoros factory and use their own.

@simensen :+1: for this pull request.
Fun to see you here, too. :)


Feature - Cloud Saves working in tandem with the Save State Manager

This allows the user to upload and download save states through rclone provided they have it setup. To enable the feature, the must have rclone enable and a working config for es-drive.
You need to have the following PR of EmuELEC and re-compile your build:
https://github.com/EmuELEC/EmuELEC/pull/997
In Emuelec config file you should also list the system you want the auto cloud save states activated for provided you want it to automatically occur when launching and exiting emulators.
So in for example nintendo64 it would be it's platform id = 1. So in /emuelec/configs/emuele.conf
n64.cloud_sync = 1

So in /storage/.config/rclone/rclone.conf they should have a setup that looks like this which can be obtained with the command rclone config (this is a google drive example). The drive must be labelled ra-drive.
[ra-drive]
type = drive
client_id = [CLIENT_ID]
client_secret = [CLIENT_SECRET]
scope = drive
token = {"access_token":"[YOUR_ACCESS_TOKEN]","expiry":"[TIMSTAMP]"}
team_drive =
auth_owner_only = true

Next in /storage/.config/emulationstation/es_features.cfg and in the retroarch emulators features you add "cloudsave" into it and restart EmulationStation.
Look for emulator libretro and add cloudsave to it's features.
<emulator name="libretro" features="ratio, smooth, shaders, pixel_perfect, decoration, latency_reduction, game_translation, nativevideo, cloudsave">

Provided you have set it up correctly for that emulator you should be able to modify your saves automatically in ES's Save States Manager.

shanti now that I know C++ coding a bit better I'll try and fix up some of my older patches so they aren't making the existing files as complex as they need to be.

Can be committed.

Actually, this needs to be re-done so the user can select to enable it in Advanced Game Options and it only looks at the system emuelec.conf to enable saving/loading from the cloud.

Tested and working. cloudsave first needs to be in the emulator, retroarch is only currently supported. Then you can enable it for the system provided it's core selected is a child of the emulator.
You can commit this too.


[WIP] Argument validator

Adds an argument validation component to the Arguments class -- could be used to great benefit for plugins which may have multiple subcommands which need specific validation; ideally could also be used in combination with a pre-built handful of "default"/included validators (e.g. args.requiredString("player").validator(Validators.isOnlinePlayer) or something).
Still a bit of a WIP:

I feel the Validator interface could be changed a bit to be more type safe (theorycrafting that I could do something with type checking based on the argument validation is being done on)
Would like to push with a set of default validators based on common in-command validations
Possibly would like to add some default return messages/a way to pre-define error responses, but would need to play with how it integrates with the ExitCode system more (currently just causes Arguments.valid() to fail and lets the onError function handle those bits)
Probably need to rethink how addValidator()'s response codes work. Currently just checks parsed args and returns a bool that is basically ignored but... this could be done better?

That said, the validation system is functional and does what it says on the tin -- just could be cleaned up. Would love to hear any thoughts on what could be more beneficial for this application.

Closing this as the arguments parser is being rewritten in V3.

Closing this as the arguments parser is being rewritten in V3.

@ZachyFoxx given that arguments parser rewrite is still on hold due for ENOTIME and we've currently experienced some uncomfort with validation when investigating the rewrite for StickyCommands, perhaps we should revisit this?


RepoInfo structure now includes new field representing RepoSummary

What type of PR is this?
feature

Which issue does this PR fix:
ExpandedRepoInfo currently returns RepoInfo that is a list of Manifests.
To comply with the newest UI requirements, a new field called Summary,
referring to RepoSummary structure, was added.
What does this PR do / Why do we need it:
UI
If an issue # is not available please add repro steps and logs showing the issue:
Testing done on this change:

Automation added to e2e:

Will this break upgrades or downgrades?
Does this PR introduce any user-facing change?:

This PR closes #644
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Shall we rename some of the fields from https://github.com/project-zot/zot/pull/696/files#diff-84af1556304ab2f0edbb3541ee90f5e8eb88e4dde65c0a8069e517dea758c210R125 in this PR or separately (thinking of Manifests under RepoInfo)
Since this replacement of 'manifests' with 'imageSummary' would inflict lots of changes in the ExpandedRepoInfo logic, I suggest fixing it in another PR.

Gave the wrong link: https://github.com/project-zot/zot/pull/696/files#diff-84af1556304ab2f0edbb3541ee90f5e8eb88e4dde65c0a8069e517dea758c210R23
but ok, let's do it in a separate PR.


Add batching support

Needs validation and configuration options

Hi!
I'm currently running my project on top of your feature branch as I transitioned from Graphene over to Strawberry before learning that batching was not supported.
Everything works great! I have yet to run into any issues. Is there a particular reason why integration into main has stalled?
Thank you!

@luisbc92 just time! thanks for the ping, I'll add to my list of things to do in the next few days 😊

Wow! Fastest response I've ever gotten. You should get a trophy.
Thank you for your work!

Hi! This would be an awesome feature to have soon, as we're currently thinking of transitioning our project over to using Strawberry and batching is a feature we use a lot.


Duplicate patients with multiple last names not matching

Summary
When sending through the attached patient payload twice to the link-record endpoint, both calls result in a "match not found" result.  The algorithm should find the second patient record, which has the exact same PII as the first, matches the person generated in the first call.
Impact
This could be a bug in the algorithm, but it could also be a design flaw of DIBBS_BASIC.  We need to investigate further to see what exactly is causing this to be not a match.
Steps to reproduce

Start up the API server using scripts/local_server.sh
Download the attached Patient bundle json file
Send the payload to the API server with curl
a. curl -X POST --header "Content-Type: application/json" -d @bundle.json "http://localhost:8000/link-record"
The response should indicate no match was found (this is correct since the database was empty)
Edit the bundle.json file to have a new UUID on line 9
Repeat step 3
The response should indicate no match was found (this is incorrect since we should match the existing patient in the database)

Expected behavior
No match on the first call and a match on the second call
Additional context
bundle.json

Draft
Summary
TODO
Approach

Used the Python logging module to log the similarity scores and resulting match/non-match decisions for each of the fields evaluated for matching. This provides transparency & explainability into why the RL algorithm determined two Patient records were a match or not.

Findings
When reproducing the error above, the DIBBs Basic algorithm resulted in not a match (incorrect), while the DIBBs Enhanced algorithm resulted in a match (correct).
 (DIBBs Basic)
Let's call the original bundle.json Patient record i.
The RL service expects every payload to have a unique id (otherwise it throws an error). After seeding the MPI with the original Patient record i, we change the id of the record in order to send it back to test. Let's call this Patient record j.
The results of the RL algorithm when running it on Patient record j (the exact same as Patient record i, just with a different id) are detailed below.

Note: Interestingly, when first seeding the MPI with Patient record i, the RL algorithm stores 1 Patient record (with 1 unique Person ID). However, during matching, the algorithm evaluates this single Patient record i 2 times: once with the 'official' name and once with the 'maiden' name, both stored in bundle.json. Both these candidates have the same Patient ID and Person ID. That tells us that, if a single incoming Patient record has 2 names stored (e.g., Patient.name.where(use='official') and Patient.name.where(use='maiden')), the RL algorithm considers this both data during matching.

Pass 1
Blocking
When Blocking, the RL algorithm successfully identified Patient record i as a candidate for Patient record j (they have the exact same DOB, last 4 of MRN, and Sex).
Matching
1st Candidate ('official' name)
First Name
Patient Record i

First Name: "Verónica383 Eva64"

Patient Record j

First Name: "Verónica383 Eva64 Verónica383 Eva64" 👈🏼 bug

🐛 We should ensure the list of First Name values are unique before concatenating into a string.

When comparing "Verónica383 Eva64" and "Verónica383 Eva64 Verónica383 Eva64", the similarity score is 0.8971428571428571. This is less than the threshold 0.9, so Patient record i and Patient record j are deemed not a match in First Name.
Last Name
Patient Record i

Last Name: "Reynoso837"

Patient Record j

Last Name: "Reynoso837"

When comparing "Reynoso837" and "Reynoso837", the similarity score is 1.0 (exact match). Since the evaluation match function used is feature_match_exact(), the similarity score is not evaluated against a threshold; the result is either a match (1.0) or not (< 1.0). Thus, Patient record i and Patient record j are deemed a match in Last Name.
Pass 1, 1st Candidate: Match or Non-Match?
In the DIBBs Basic algorithm, in Pass 1, Patient record i and Patient record j must be deemed a match in both the matching fields evaluated: First Name and Last Name. Because Patient record i and Patient record j were deemed a match in Last Name but not a match in First Name, the RL algorithm decides in Pass 1 that Patient record i and Patient record j are not a match.
2nd Candidate ('maiden' name)
Interestingly, the RL algorithm runs Pass 1 again on another set of data: the same Patient record i, but with the 'maiden' Last Name (rather than the 'official' Last Name, which was used above; 'official' and 'maiden' Last Name are stored separately in the bundle.json.)
First Name
Patient Record i

First Name: "Verónica383 Eva64"

Patient Record j

First Name: "Verónica383 Eva64 Verónica383 Eva64" 👈🏼 bug (same as above)

Again, when comparing "Verónica383 Eva64" and "Verónica383 Eva64 Verónica383 Eva64", the similarity score is 0.8971428571428571. This is less than the threshold 0.9, so Patient record i and Patient record j are deemed not a match in First Name.
Last Name
Patient Record i

Last Name: "Reynoso837"

Patient Record j

Last Name: "Arenas932"

When comparing "Reynoso837" and "Arenas932", the similarity score is 0.0 (non-match). Thus, Patient record i and Patient record j are deemed a not a match in Last Name.
Pass 1, 2nd Candidate: Match or Non-Match?
Because Patient record i and Patient record j were deemed not a match in both First Name and Last Name, the RL algorithm decides in Pass 1 that Patient record i and Patient record j are not a match.
Pass 2
Blocking
When Blocking, the RL algorithm successfully identified Patient record i as a candidate match for Patient record j (they have the exact same Zip Code, first 4 of First Name, first 4 of Last Name, Sex).
Matching
1st Candidate ('official' name)
Address
Patient Record i

Address: "240 Rippin Ranch Apt 66"

Patient Record j

Address: "240 Rippin Ranch Apt 66"

When comparing "240 Rippin Ranch Apt 66" and "240 Rippin Ranch Apt 66", the similarity score is 1.0 (exact match). This is greater than the threshold 0.9, so Patient record i and Patient record j are deemed a match in Address.
DOB
Patient Record i

DOB: 1980-09-05

Patient Record j

DOB: 1980-09-05

When comparing 1980-09-05 and 1980-09-05, for some reason the similarity score is 0.0 (non-match). 👈🏼 bug

🐛 This is likely a typing issue (because the values are not of the same data type, e.g. string vs. datetime, their equality is evaluated as false). The code inconsistently transforms DOB values from string to datetime; this can be optimized.

Pass 2, 1st Candidate: Match or Non-Match?
In the DIBBs Basic algorithm, in Pass 2, Patient record i and Patient record j must be deemed a match in both the matching fields evaluated: Address and DOB. Because Patient record i and Patient record j were deemed a match in Address but not a match in DOB, the RL algorithm decides in Pass 2 that Patient record i and Patient record j are not a match.
2nd Candidate ('maiden' name)
The results are same as above using 'maiden' name, since Last Name is not evaluated for matching in Pass 2.

🐛 Note, however, that this identifies a bug in the Blocking code: a record with Last Name of "Arenas932" ("maiden") should not have been identified as a candidate in Pass 2, because Blocking should be on first 4 of Last Name (i.e., candidates should only include records that match exactly on first 4 of Last Name, and "Aren" != "Reyn".)

Pass 2, 2nd Candidate: Match or Non-Match?
In the DIBBs Basic algorithm, in Pass 2, Patient record i and Patient record j must be deemed a match in both the matching fields evaluated: Address and DOB. Because Patient record i and Patient record j were deemed a match in Address but not a match in DOB, the RL algorithm decides in Pass 2 that Patient record i and Patient record j are not a match.

@alhayward this is awesome, you uncovered two bugs, when I was thinking there might just be one!  Regarding the issue with the feature_match_exact function.  Is the data parsed from the payload (so incoming Patient data) a string and the data queried from the DB (existing Patient data) a datetime.date object?

@ericbuckley The above comment is a draft - will continue to update with my findings and address this question!

@alhayward this is awesome, you uncovered two bugs, when I was thinking there might just be one! Regarding the issue with the feature_match_exact function. Is the data parsed from the payload (so incoming Patient data) a string and the data queried from the DB (existing Patient data) a datetime.date object?

@ericbuckley Correct, the birthdate parsed from the incoming Patient record is of type str, whereas the birthdate parsed from the existing Patient record in the MPI is of type datetime.date.


LiveEvent and configuration changes

I was under the impression that using LiveEvent, we would be able to use these events to trigger dialogs in a Fragment. E.g.
class MyFragment : Fragment(){
    override fun onCreateView(inflater: LayoutInflater,
                              container: ViewGroup?,
                              savedInstanceState: Bundle?): View? {

        val binding = // inflate view using Databinding
        binding.viewModel = // some viewModel
        viewModel.events().observe(viewLifecycleOwner, Observer { event ->
                showDialog(event)
        })
        return binding.root
    }
}

This is the ViewModel:
class MyViewModel : ViewModel(){
    private val events = MutableLiveData<DialogEvent>()
    fun events(): LiveData<DialogEvent> = events.toSingleEvent()

    fun onClick() = events.postValue(DialogEvent)
}

object DialogEvent

So, whenever I click a button, a dialog is shown.
However, when I rotate the screen, the dialog is shown again.
This makes sense, because on orientation change, the observer is removed, added again, and will receive the latest value...
Am I wrong that LiveEvent can be used in these scenario's?
Or am I missing something obvious?

I think you should change the events() method in you ViewModel to property:
private val _events = MutableLiveData<DialogEvent>()
val events: LiveData<DialogEvent> = _events.toSingleEvent()

In the current implementation, every time you observe the event LiveData, the new LiveEvent is created, so the value wii be emitted again.

As @tobikster explained correctly, the lifecycle of LiveEvent and the ViewModel must be the same, which means you must create a LiveEvent, or a LiveData, once per a ViewModel instance.


fix: broken link issue on perfomance management

Description
Remove broken link and add valid once
This PR fixes #1841
Notes for Reviewers
Signed commits

[X] Yes, I signed my commits.

@amitamrutiya Please add this too the meeting minutes!


test: add test for modern bundle size

Types of changes

[ ] Bug fix (a non-breaking change which fixes an issue)
[ ] New feature (a non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Description

Checklist:

[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly. (PR: #)
[ ] I have added tests to cover my changes (if not applicable, please state why)
[ ] All new and existing tests are passing.

Codecov Report

Merging #6302 into dev will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##             dev   #6302   +/-   ##
=====================================
  Coverage   95.7%   95.7%
=====================================
  Files         79      79
  Lines       2652    2652
  Branches     683     683
=====================================
  Hits        2538    2538
  Misses        98      98
  Partials      16      16

Flag
Coverage Δ

#e2e
100% <ø> (ø)
:arrow_up:

#fixtures
50.56% <ø> (+0.33%)
:arrow_up:

#unit
92.3% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

I've wondered for some time, but what exactly is being tested here? Just how big the bundle sizes are (as the title of this pr suggests) or is there some server setting for first/max payload size? Where does the 196 come from, i.e. the test talk about size boundaries but how/where are those size boundaries defined? Is it a config number or is it just an arbitrary number specific for the async-config fixture?
And to continue my questions, if its just about bundle size why do you have to through html/cheerio? Cant you look them up on the fs instead?

The original test is from @manniL ,I suppose the reason why used cheerio is for find all script in html easily. And the test is as an bundle size indicator for new feature came in for monitoring Nuxt basic bundle size.

Thanks for your explanation. Would it maybe be possible to use modern: 'client' and just load the client/modern manifests from the dist/server folder and then find the largest file included in the manifest? Saves the trouble of starting a server, especially one on <IP_ADDRESS>
Also assign the 196 to a variable with a proper defined name so its easier to understand why 196 is 196 and eg not 195 or 197? If I understand correctly its a bit arbitrary though so maybe something like const maxKnownClientBundleSize = 196

Checking manifest with fs api is OK for me, even modern ‘client’ is not necessary since server mode also has an accurate manifest file, but I think we’d better discuss with @manniL , I suppose this test is for async config and because it’s almost an emtpy app, so @manniL put size-limitation inside it. And the value 196 is not a random value, it’s the current bundle size of this almost emtpy app which means the size is equal to nuxt size, I’ll extract them into more readable and meaningful variables.

Not trying to be a know it all, but the largest bundle size seems to be currently 152K. This means a PR could add 40 kilobyte to the bundle and this test still doesnt trigger. Which doesnt make it really effective I guess.
Maybe we could store the largest bundle size on each Nuxt.js release (some sort of snapshot) and check against that value?

The bundle size doesn’t mean the largest bundle file,the largest mainly contains node_moudles, there are also other bundle files like app which contains other  nuxt vue-app and some shared components

I ran ./packages/cli/bin/nuxt-cli.js start test/fixtures/async-config/ and checked the Network console. There is no app.js etc, just the bundle files from dist/client.

Try analyze ? I’m on mobile right now, I’ll have a look tomorrow

app.is is above commons.app.js in your screenshot which is 40K

Ah right, it counts the sum. Sorry about that.
Maybe this test should also fail when the bundle is too small, so keep the size within an upper & lower boundary instead of just an upper. Eg that should prevent/detect any issues with my app.features pr

Yep, a range could be a good idea

Thanks for your patience. While we are at it, should we just test individual bundle file sizes as well? The sizes are distinguishable enough that we can say that we eg expect a file of less then 500 bytes, one between 2.3 and 2.5KB, around 40KB and one around 152KB and in total not more then 196.
Otherwise the increase of one file could be hidden by the decrease of another.

It could be more accurate as you said, but it could also be a correct case because of webpack optimization, like moving some shared files from app.js into commons or splitting one chunk file into multiple files

@pimlie I change from server and cherrio to read manifest and fs api