bug: endless session routing

When looking at https://github.com/ipfs/helia-verified-fetch/pull/50, I ran into an issue: https://github.com/ipfs/helia-verified-fetch/pull/50#issuecomment-2062047400
It seems like a request for QmVP2ip92jQuMDezVSzQBWDqWFbp9nyCHNQSiciRauPLDg endlessly polls for providers of QmVP2ip92jQuMDezVSzQBWDqWFbp9nyCHNQSiciRauPLDg with the default delegated-ipfs.dev router. I think this is due to https://github.com/ipfs/helia/blob/13daa26ec9bc6c1a1552b7b56597945c5b13a87b/packages/utils/src/abstract-session.ts#L215-L254
something like maxProviders++ is occurring (i.e. https://github.com/ipfs/helia/pull/495#discussion_r1563085044), but much less obviously
Though the real fix in helia-verified-fetch is to fix tests to be offline only, we should probably provide a default timeout because i'm sure others not in test environments will also run into this.
references:

ipfs/helia-verified-fetch@647b6cb (#55) was the first fix while investigating.

If we don't handle this automatically, we should probably expose routers on https://github.com/ipfs/helia/blob/13daa26ec9bc6c1a1552b7b56597945c5b13a87b/packages/interface/src/routing.ts#L53 so session and users of sessions can determine if routers exist

running in test env locally, it seems like the problem is no providers have http/https and so we're just pausing because trustless-gateway/session.ts is not yielding any providers.
In our test environment, we have a local test kubo configured with ipfsd-ctl that should be used in the session, or fallen back to somehow
@helia/verified-fetch-interop: 2024-04-17T23:25:14.316Z helia:trustless-gateway:session allow insecure true, allow local true, all options = { redirect: 'manual', signal: undefined, minProviders: 0, allowInsecure: true, allowLocal: true }
@helia/verified-fetch-interop: 2024-04-17T23:25:14.317Z helia:trustless-gateway:session:bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q finding 0-5 new provider(s) for bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q
@helia/verified-fetch-interop: 2024-04-17T23:25:14.318Z delegated-routing-v1-http-api-client getProviders starts: bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q
@helia/verified-fetch-interop: 2024-04-17T23:25:14.396Z helia:trustless-gateway:session:bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q got provider 12D3KooWAb1rjmJAGG3Vqk35QuYxxDfDrNXLWbJPdujE1pEtbZSd for cid bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q
@helia/verified-fetch-interop: returning false for multiaddr:  /ip4/<IP_ADDRESS>/tcp/17159/p2p/12D3KooWAb1rjmJAGG3Vqk35QuYxxDfDrNXLWbJPdujE1pEtbZSd
@helia/verified-fetch-interop: 2024-04-17T23:25:14.396Z helia:trustless-gateway:session:bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q provider 12D3KooWAb1rjmJAGG3Vqk35QuYxxDfDrNXLWbJPdujE1pEtbZSd has no http-gateway addresses
@helia/verified-fetch-interop: 2024-04-17T23:25:14.396Z helia:trustless-gateway:session:bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q got provider 12D3KooWSoSgVaUvoguDQZu1doytze9RgnnANwJoiLw7KUcAXq8i for cid bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q
@helia/verified-fetch-interop: returning false for multiaddr:  /ip4/<IP_ADDRESS>/tcp/24888/p2p/12D3KooWSoSgVaUvoguDQZu1doytze9RgnnANwJoiLw7KUcAXq8i
@helia/verified-fetch-interop: 2024-04-17T23:25:14.396Z helia:trustless-gateway:session:bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q provider 12D3KooWSoSgVaUvoguDQZu1doytze9RgnnANwJoiLw7KUcAXq8i has no http-gateway addresses
@helia/verified-fetch-interop: 2024-04-17T23:25:14.397Z helia:trustless-gateway:session:bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q got provider 12D3KooWJLDwovGo1rFfqTKGcLprqUKoAvwweJVXoexk7E5bh9BL for cid bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q
@helia/verified-fetch-interop: 2024-04-17T23:25:14.397Z helia:trustless-gateway:session:bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q provider 12D3KooWJLDwovGo1rFfqTKGcLprqUKoAvwweJVXoexk7E5bh9BL has no http-gateway addresses
@helia/verified-fetch-interop: returning false for multiaddr:  /ip4/<IP_ADDRESS>/tcp/8888/p2p/12D3KooWJLDwovGo1rFfqTKGcLprqUKoAvwweJVXoexk7E5bh9BL
@helia/verified-fetch-interop: 2024-04-17T23:25:14.397Z helia:trustless-gateway:session:bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q got provider 12D3KooWB6fUFjjLSYcWfM2iAd5ScgknqVP1Dbe6pff4Kqq64CLM for cid bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q
@helia/verified-fetch-interop: 2024-04-17T23:25:14.397Z helia:trustless-gateway:session:bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q provider 12D3KooWB6fUFjjLSYcWfM2iAd5ScgknqVP1Dbe6pff4Kqq64CLM has no http-gateway addresses
@helia/verified-fetch-interop: returning false for multiaddr:  /ip4/<IP_ADDRESS>/tcp/8888/p2p/12D3KooWB6fUFjjLSYcWfM2iAd5ScgknqVP1Dbe6pff4Kqq64CLM
@helia/verified-fetch-interop: 2024-04-17T23:25:14.397Z helia:trustless-gateway:session:bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q got provider 12D3KooWJWAwD6CbJnDm6tHcFuZxvWrjhp53hDjLHM1GiP1pYXmY for cid bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q
@helia/verified-fetch-interop: 2024-04-17T23:25:14.397Z helia:trustless-gateway:session:bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q provider 12D3KooWJWAwD6CbJnDm6tHcFuZxvWrjhp53hDjLHM1GiP1pYXmY has no http-gateway addresses
@helia/verified-fetch-interop: returning false for multiaddr:  /ip4/<IP_ADDRESS>/tcp/11337/p2p/12D3KooWJWAwD6CbJnDm6tHcFuZxvWrjhp53hDjLHM1GiP1pYXmY
@helia/verified-fetch-interop: 2024-04-17T23:25:14.397Z helia:trustless-gateway:session:bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q got provider QmQzqxhK82kAmKvARFZSkUVS6fo9sySaiogAnx5EnZ6ZmC for cid bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q
@helia/verified-fetch-interop: returning false for multiaddr:  /dns4/elastic.dag.house/tcp/443/wss/p2p/QmQzqxhK82kAmKvARFZSkUVS6fo9sySaiogAnx5EnZ6ZmC
@helia/verified-fetch-interop: 2024-04-17T23:25:14.397Z helia:trustless-gateway:session:bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q provider QmQzqxhK82kAmKvARFZSkUVS6fo9sySaiogAnx5EnZ6ZmC has no http-gateway addresses
@helia/verified-fetch-interop: 2024-04-17T23:25:14.397Z helia:trustless-gateway:session:bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q got provider 12D3KooWPkHBZbbDMAYLeGavFrrxZzCrB31ifUvJWV6ZBZ5ikMQT for cid bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q
@helia/verified-fetch-interop: 2024-04-17T23:25:14.397Z helia:trustless-gateway:session:bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q provider 12D3KooWPkHBZbbDMAYLeGavFrrxZzCrB31ifUvJWV6ZBZ5ikMQT has no http-gateway addresses
@helia/verified-fetch-interop: returning false for multiaddr:  /ip4/<IP_ADDRESS>/tcp/8888/p2p/12D3KooWPkHBZbbDMAYLeGavFrrxZzCrB31ifUvJWV6ZBZ5ikMQT
@helia/verified-fetch-interop: 2024-04-17T23:25:14.403Z delegated-routing-v1-http-api-client getProviders finished: bafybeifq2rzpqnqrsdupncmkmhs3ckxxjhuvdcbvydkgvch3ms24k5lo7q

FYI I threw together https://github.com/SgtPooki/repro-kubo-not-announcing-self-as-provider which shows that kubo doesn't announce itself as a provider, so we need some solution for our tests

playing around with patch-package. I think we need some config option to allow using the gateways already provided to helia block-brokers
Here is the diff that solved my problem:
diff --git<EMAIL_ADDRESS><EMAIL_ADDRESS>index c243453..d261d57 100644
---<EMAIL_ADDRESS>+++<EMAIL_ADDRESS>@@ -70,7 +70,7 @@ export class TrustlessGatewayBlockBroker {
         return createTrustlessGatewaySession({
             logger: this.logger,
             routing: this.routing
-        }, options);
+        }, {...options, providers: this.gateways});
     }
 }
 //# sourceMappingURL=broker.js.map
diff --git<EMAIL_ADDRESS><EMAIL_ADDRESS>index 4bc6b63..b80b07b 100644
---<EMAIL_ADDRESS>+++<EMAIL_ADDRESS>@@ -17,6 +17,7 @@ class TrustlessGatewaySession extends AbstractSession {
         this.routing = components.routing;
         this.allowInsecure = init.allowInsecure ?? DEFAULT_ALLOW_INSECURE;
         this.allowLocal = init.allowLocal ?? DEFAULT_ALLOW_LOCAL;
+        this.log('allow insecure %o, allow local %o, all options = %o', this.allowInsecure, this.allowLocal, init);
     }
     async queryProvider(cid, provider, options) {
         this.log('fetching BLOCK for %c from %s', cid, provider.url);
@@ -27,9 +28,11 @@ class TrustlessGatewaySession extends AbstractSession {
     }
     async *findNewProviders(cid, options = {}) {
         for await (const provider of this.routing.findProviders(cid, options)) {
+            this.log('got provider %p for cid %c', provider.id, cid);
             // require http(s) addresses
             const httpAddresses = filterMultiaddrs(provider.multiaddrs, this.allowInsecure, this.allowLocal);
             if (httpAddresses.length === 0) {
+                this.log('provider %p has no http-gateway addresses', provider.id);
                 continue;
             }
             // take first address?
@@ -52,13 +55,18 @@ function filterMultiaddrs(multiaddrs, allowInsecure, allowLocal) {
     return multiaddrs.filter(ma => {
         if (HTTPS.matches(ma) || (allowInsecure && HTTP.matches(ma))) {
             if (allowLocal) {
+                console.log('local is allowed, returning true for multiaddr: ', ma.toString());
                 return true;
             }
             if (DNS.matches(ma)) {
+                console.log('dns matches, returning true for multiaddr: ', ma.toString());
                 return true;
             }
-            return isPrivateIp(ma.toOptions().host) === false;
+            const result = isPrivateIp(ma.toOptions().host) === false;
+            console.log('isPrivateIp result: ', result);
+            return result;
         }
+        console.log('returning false for multiaddr: ', ma.toString());
         return false;
     });
 }

This issue body was partially generated by patch-package.

https://github.com/ipfs/helia/issues/501#issuecomment-2062785995 also allows us to bypass the piping through of "allowLocal" and "allowInsecure" when we explicitly provide a local/insecure gateway in gateways: [] config.

I guess maybe we want to limit how many times we search for providers unsuccessfully before giving up.
Right now it'll give up if you pass a signal and that signal aborts (e.g. after a timeout) but maybe that's too subtle.
As an aside I do think we should pass signals into every function that accepts them in our examples, to try to normalise the practice.

I think we need some config option to allow using the gateways already provided to helia block-brokers

I was thinking about something like this but if we do that, you might as well not use the session?

I think we need some config option to allow using the gateways already provided to helia block-brokers

I was thinking about something like this but if we do that, you might as well not use the session?

I think it would still be valuable with sessions, because there's no way to know if there are valuable providers or not until you try. If we don't find https providers after a timeout (we can use signals here sure) we could use the gateways configured on the root TrustlessGateway instance

I think https://github.com/ipfs/helia/blob/be86ac7200264e1671a0091a683db83cac0865da/packages/utils/src/abstract-session.ts#L119-L124 is causing endless loop, because we're not ensuring that we don't get new providers.
We await this.findProviders and then delete the existing request, and start a new one, regardless of whether this.findProviders finds us new providers or not.

I am able to reproduce this consistently with the steps in https://github.com/ipfs/helia-verified-fetch/issues/84
Here is a section of the log, that slowly increases in the duplicates we find, and yet we still keep querying them all:
2024-05-16T21:03:56.212Z helia:trustless-gateway:session:bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a session is ready
2024-05-16T21:03:56.212Z helia:trustless-gateway:session:bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a comparing providers http://<IP_ADDRESS>:3440/ and http://<IP_ADDRESS>:3440/
2024-05-16T21:03:56.212Z helia:trustless-gateway:session:bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a found existing provider http://<IP_ADDRESS>:3440/
2024-05-16T21:03:56.212Z helia:trustless-gateway:session:bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a skipping existing provider http://<IP_ADDRESS>:3440/
2024-05-16T21:03:56.212Z helia:trustless-gateway:session:bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a comparing providers http://<IP_ADDRESS>:3440/ and http://<IP_ADDRESS>:3440/
2024-05-16T21:03:56.212Z helia:trustless-gateway:session:bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a found existing provider http://<IP_ADDRESS>:3440/
2024-05-16T21:03:56.212Z helia:trustless-gateway:session:bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a skipping existing provider http://<IP_ADDRESS>:3440/
2024-05-16T21:03:56.212Z helia:trustless-gateway:session:bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a comparing providers http://<IP_ADDRESS>:3440/ and http://<IP_ADDRESS>:3440/
2024-05-16T21:03:56.212Z helia:trustless-gateway:session:bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a found existing provider http://<IP_ADDRESS>:3440/
2024-05-16T21:03:56.212Z helia:trustless-gateway:session:bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a skipping existing provider http://<IP_ADDRESS>:3440/
2024-05-16T21:03:56.212Z helia:trustless-gateway:session:bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a comparing providers http://<IP_ADDRESS>:3440/ and http://<IP_ADDRESS>:3440/
2024-05-16T21:03:56.212Z helia:trustless-gateway:session:bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a found existing provider http://<IP_ADDRESS>:3440/
2024-05-16T21:03:56.212Z helia:trustless-gateway:session:bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a skipping existing provider http://<IP_ADDRESS>:3440/
2024-05-16T21:03:56.212Z helia:trustless-gateway:session:bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a found new providers re-retrieving bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a
2024-05-16T21:03:56.212Z helia:trustless-gateway:session:bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a fetching BLOCK for bafkreia32gpab5kxt6utjt623vchiblgyblfslhih76i2rg62ukgp6aw7a from http://<IP_ADDRESS>:3440/

I've truncated the log a lot (33M of repeatedly querying the same local gateway in less than 10 seconds) log.txt but you can see some of the issues.
I also modified abstract-session in node_modules with:
            if (found < count) {
                this.log('THROWING ERROR: found (%d) is < count (%d)', found, count);
                throw new CodeError(`Found ${found} of ${count} ${this.name} providers for ${cid}`, 'ERR_INSUFFICIENT_PROVIDERS_FOUND');
            } else {
              this.log('found (%d) is not < count (%d)', found, count);
            }

and don't see either of those lines in the log at all.

Repro test in https://github.com/ipfs/helia/pull/538


Split PBS bidder page

Currently we keep reference to server bid adapters and javascript bid adapters separated under their specific context tabs. There is decent overlap among these lists. Also, the server one isn't as easily navigable since its a single page structure and goes to a location on a page vs JS which goes to a specified page. I'm curious if we should just combine these as their own stand alone section and have a single bid adapter reference section that is searchable and links out to a reference page?
JS Bid Adapter reference - > https://docs.prebid.org/dev-docs/bidders.html
Server Bid Adapter reference -> https://docs.prebid.org/dev-docs/pbs-bidders.html

Idea

add a filter for server & client
the pbs adapter page should look similar to pbjs page


HTTP Mirrors are not working

Recently I had issues with download.qt.io not working as expected, so I wanted to switch to the mirror https://qt-mirror.dannhauer.de/official_releases/qt/
However, this doesn't work as expected since https is only allowed for download.qt.io and not for mirrors. The intermediate fix was to replace download.qt.io with qt-mirror.dannhauer.de in qt-downloader.
This is the suspicious part  in the code:
def discover_dirs(url):
  parsed_url = urllib.parse.urlparse(url)
  if parsed_url.netloc == MasterDomain: # should be parsed_url.netloc.startswith("http") or something similar
    reply = requests.get(url)
    if reply.status_code != requests.codes.ok:
      print(reply.content, file=sys.stderr)
      return []

    page = html.fromstring(reply.content)
    items = page.xpath('//table//tr[position()>2]//a[not(starts-with(@href, "/"))]/@href')
    return [item[:-1] for item in items if item.endswith('/')]
  else:
    with FTP(parsed_url.netloc) as ftp:
      ftp.login()
      ftp.cwd(parsed_url.path)
      return ftp.nlst()

@cwiede As far as I can remember, all mirrors, but download.qt.io, are FTP-based storages. That is why I opted for if parsed_url.netloc == MasterDomain check. Because, I had already written parser for download.qt.io and just wanted to add support for mirrors. Otherwise, I had to ensure that FTP-based approach works for download.qt.io as well.
Now I confirm the reproducibility of your issue. Apparently, all mirrors are good for the default HTTP-based parser. Although, this is not ideal solution, as to me, still it does the job.
See the fix in #24


Input field editing & validation

Selecting any text field (by mouse or keyboard navigation) should put it straight into Edit mode, with a cursor visible within the field.
Edited text will be  shown in traffic-light colours:

Green indicates that text is valid and potentially complete
Amber indicates a valid start, but more text would be needed on the end to become green
Red indicates that the text is invalid. This will change upon the first keystroke that causes it. This may be fixed either by backspacing on the previous character, or by making a change elsewhere in the field (using L-R cursor keys or mouse-clicks as with normal editing.

(If it is not possible to change the colour of the text in an edit field like that, then the background of the field will be used.
The text field is exited by hitting Tab (which goes to the next field) or Enter which leaves the enclosing frame selected.
If the text was green when the field is exited, it will now be rendered in its normal colouring (using the Html mark up). However, if the text was amber or red, it will remain that colour - with no additional mark up.

Covered by other tickets

Completed


Add support for Tcl

atom-script hint to me:
Command not configured for Tcl!
Add an issue on GitHub or send your own Pull Request.


Fix: BITCOUNT no key provided

Description
This pull request addresses the issue where the BITCOUNT command in DiceDB was not validating that a key is passed along with the command leading to a runtime error in the server.

Changes made:

Added Arity of -1 to the BITCOUNT command
Added a check for the number of arguments in the BITCOUNT command to ensure at least 1 argument is provided
The command returns an arity error when no argument is passed, consistent with Redis
Added integration tests to validate the number of arguments

Output

Tests run

LGTM. Thanks for the fix @shardul08


Support consul as shared config provider

It would be really cool if exhibitor can support consul as a shared config provider. It would be useful for cases where people already have consul for service discovery and as a key-value store, but needs to run a ZK cluster for hbase and hdfs.

We are using consul as our main service discovery provider and we need ZK for Kafka, so this would be an amazing feature.


runtime/metrics: /gc/scan* metrics return zero

These new metrics, introduced in Go 1.21, always return zero due to an oversight (no dependency declared in the metrics definition). https://go.dev/cl/525595 fixes this.

@gopherbot please open a backport issue for Go 1.21.
This issue means that some new metrics just don't work, and there's no workaround. Although the severity of the issue is quite low, the fix is also very safe and includes a test.


Unable to render this definition

Describe the bug
I got this on my localhost:3000/api-doc page:

I have everything like it is in tutorial:
My swagger.ts:

react-swagger.tsx:

api-doc/page.tsx:

app/api/hello/route.ts:

And I got still HTTP 500 code, during rendering api-doc page. And got that page "Unable to render this definition...".
I tried to with next 15, but also with next 14 it is not working.
And also tried with react 19 and react 18 and still not working.
What am I missing during configuration ?
Reproduction
Reproduce steps in tutorial.
System Info
My package.json:
` "dependencies": {
    "@joint/core": "^4.0.4",
    "@prisma/client": "^5.21.1",
    "antlr4ts": "^0.5.0-alpha.4",
    "bcryptjs": "^2.4.3",
    "class-variance-authority": "^0.7.0",
    "clsx": "^2.1.1",
    "lucide-react": "^0.453.0",
    "next": "15.0.0",
    "next-auth": "^5.0.0-beta.25",
    "next-swagger-doc": "^0.4.1",
    "react": "19.0.0-rc-65a56d0e-20241020",
    "react-dom": "19.0.0-rc-65a56d0e-20241020",
    "swagger-ui-react": "^5.17.2",
    "tailwind-merge": "^2.5.4",
    "tailwindcss-animate": "^1.0.7",
    "uuid": "^10.0.0",
    "openapi-types": "^12.1.3"
  },
  "devDependencies": {
    "@trivago/prettier-plugin-sort-imports": "^4.3.0",
    "@types/bcryptjs": "^2.4.6",
    "@types/node": "^20",
    "@types/react": "^18",
    "@types/react-dom": "^18",
    "@types/swagger-ui-react": "^4.18.3",
    "@types/uuid": "^10.0.0",
    "eslint": "^9.13.0",
    "eslint-config-next": "15.0.0",
    "postcss": "^8",
    "prettier": "^3.3.3",
    "prettier-plugin-tailwindcss": "^0.6.8",
    "prisma": "^5.21.1",
    "tailwindcss": "^3.4.1",
    "typescript": "^5"
  },`

Used Package Manager
npm
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A, please open a GitHub Discussion instead.
[x] The provided reproduction is a minimal reproducible of the bug.

Could you try with example app on this repo yet? @stanko04


helm docs: add extra env vars

Codecov Report

Merging #937 (ff1c866) into master (99b0c86) will decrease coverage by 0.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #937      +/-   ##
==========================================
- Coverage   44.21%   44.19%   -0.02%
==========================================
  Files         143      143
  Lines       11451    11451
==========================================
- Hits         5063     5061       -2
- Misses       5769     5770       +1
- Partials      619      620       +1

Impacted Files
Coverage Δ

catalog/cataloger_create_repository.go
62.96% <0.00%> (-3.71%)
:arrow_down:

catalog/cataloger_commit.go
79.71% <0.00%> (-2.90%)
:arrow_down:

catalog/cataloger_create_branch.go
88.67% <0.00%> (+3.77%)
: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 99b0c86...64ddbbb. Read the comment docs.


pangeo-data packages website page

We need a page that highlights the various packages related / included in pangeo.

This includes distinguishing between @lesommer 's idea of "sandboxed" packages that we are building from/motivated by and those packages that we deem actually of the quality and scope to be official pangeo projects.

Closing as this is done by the new website.


Plugin zigbee2mqtt doesn't work with bullseye raspbian 11

Dear friend,
I have installed zigbee2mqtt in a raspberry pi 3b+ with bullseye but all obtain the following errors:
2021-12-30 12:47:57.049 Error: Zigbee2MQTT: (Zigbee2MQTT) failed to load 'plugin.py', Python Path used was '/home/pi/domoticz/plugins/zigbee2mqtt/:/usr/lib/python39.zip:/usr/lib/python3.9:/usr/lib/python3.9/lib-dynload:/usr/local/lib/python3.9/dist-packages:/usr/lib/python3/dist-packages:/usr/lib/python3.9/dist-packages'.
2021-12-30 12:47:57.049 Error: Zigbee2MQTT: (Zigbee2MQTT) Module Import failed, exception: 'ModuleNotFoundError'
2021-12-30 12:47:57.049 Error: Zigbee2MQTT: (Zigbee2MQTT) Module Import failed: ' Name: DomoticzEx'
2021-12-30 12:47:57.049 Error: Zigbee2MQTT: (Zigbee2MQTT) Error Line details not available.

Any solution? thanks in advanced.
Best regards

Bullseye (11) and Domoticz is a bad combination for now anyway due to Python plugin issues. Please revert to Buster (10) or wait for fixes.

Closing as the issue is not related to the plugin


feat: controlled state test

For our app, we wanted to move to a more modern approach with React, which is to use Controlled Components/States instead of needing to instantiate a bunch of refs, pass those refs, wait for those refs.current to not be null, and then call the methods exposed to those refs.
The thought process, here, is that it is simply much easier to pass an open state (boolean) and a setOpen callback ((open: boolean) => void) to the component. From the top level, all I need to do is call setOpen(true).
This PR is probably not ready to ship at this exact moment, but I wanted to open it up for feedback and peer review. I turned on Allow edits by maintainers and welcome edits/fixes/etc.

The major change introduced, here, would allow a user to declare a modal like:
import SwipeModal from '@birdwingo/react-native-swipe-modal';
import {useState} from "react";

export const Component = () => {

  const [open, setOpen] = useState<boolean>(false);

  return (
    <SwipeModal controlled open={open} setOpen={setOpen}>
      <>{"..."}</>
    </SwipeModal>
  );

}

First of all, thank you for using and maintaining our library, we greatly appreciate it!
Let's take a closer look at the issue:
I understand what you want to achieve, but what are the advantages?

cleaner code
no waiting for a reference
smaller/no delay between launching

What are the advantages of having a reference (which was the reason):

each subsequent useState will cause your screen to redraw
with references, the screen does not redraw
we see all the public methods that can be used

As the library is modal, the reason for using a reference is that it usually needs to run after some interaction and not immediately, so null is very uncommon. You can always use useEffect with dependency to check if exists.
However, I don't see anything wrong with your solution, the only thing I would change is renaming 'controlled' to 'state'.

@Lipo11 thanks for getting back to me!

However, I don't see anything wrong with your solution, the only thing I would change is renaming 'controlled' to 'state'.

The controlled boolean was for TypeScript purposes, as it allowed for a bit better discrimination between the controlled state versus the ref-dependent state. I can try and remove it if you wish, I'm just not sure how TypeScript is going to behave with it. What are your thoughts?

thank you for the changes! we will update readme later, but enjoy the changes in the 1.2.1


Updated CODE_OF_CONDUCT.md

I found some Improper word choice as well as Improper formatting for that I have made changes and corrected that so, now It will be easier for everyone to read.
To-do list

[x] If my change impacts other components, I have tested to make sure they don't break.
[x] If my change impacts documentation, I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.

[x] This pull request is ready to merge.

Thank You @GarthDB for Reviewing and Merging my pull request

Thanks, @gargarchit !

@GarthDB I don't think this PR should have been merged; it edits our Code of Conduct, which was sourced from the Open Source team and approved by legal.

@lazd @GarthDB I think the edits are OK, though yes, not a huge amount of value in them.
@gargarchit if you want to edit the underlying documents, as @lazd pointed out, feel free to send a PR to our starter repo (where the code of conduct is revisioned) and I can work with you on the edits there.


Setup cache store, model and controller

connect #98

@carmenlau deleted the fix lint commit and rebased.
@cheungpat please review the updates.


Error when timescaledb database contains dropped chunks with tombstone

When run against a database with a dropped chunk tombstone, that is entries matching:
SELECT * FROM _timescaledb_catalog.chunk WHERE dropped;

> psql postgres://postgres:1@localhost:5433 -c "SELECT * FROM _timescaledb_catalog.chunk WHERE dropped;"
 id | hypertable_id |      schema_name      |    table_name     | compressed_chunk_id | dropped | status | osm_chunk
----+---------------+-----------------------+-------------------+---------------------+---------+--------+-----------
 20 |             2 | _timescaledb_internal | _hyper_2_20_chunk |                     | t       |      0 | f
(1 row)

timescale-doctor fails:
> timescale-doctor postgres://postgres:1@localhost:5433
Traceback (most recent call last):
  File "/home/james/workspace/doctor/venv/bin/timescale-doctor", line 8, in <module>
    sys.exit(main())
  File "/home/james/workspace/doctor/venv/lib/python3.10/site-packages/doctor/cli.py", line 57, in main
    check_rules(dsn)
  File "/home/james/workspace/doctor/venv/lib/python3.10/site-packages/doctor/__init__.py", line 83, in check_rules
    for report in rule.execute(conn, rule.message):
  File "/home/james/workspace/doctor/venv/lib/python3.10/site-packages/doctor/__init__.py", line 62, in execute
    cursor.execute(self.query) # pylint: disable=E1101
  File "/nix/store/khvw06lqds60i0npy58zs27xpwb8x0d9-python3.10-psycopg2-2.9.5/lib/python3.10/site-packages/psycopg2/extras.py", line 236, in execute
    return super().execute(query, vars)
psycopg2.errors.UndefinedTable: relation "_timescaledb_internal._hyper_2_20_chunk" does not exist

Trivial to reproduce using the following definition:
CREATE TABLE conditions(
    time TIMESTAMPTZ NOT NULL,
    device INTEGER,
    temperature FLOAT
);

SELECT * FROM create_hypertable('conditions', 'time',
       chunk_time_interval => INTERVAL '1 day');

INSERT INTO conditions
SELECT time, (random()*30)::int, random()*80 - 40
FROM generate_series(now() - '1 month'::interval,
     		     now(),
		     INTERVAL '1 min') AS time;

CREATE MATERIALIZED VIEW conditions_summary_hourly
WITH (timescaledb.continuous) AS
SELECT device,
       time_bucket('1 hour', "time") AS bucket,
       AVG(temperature),
       MAX(temperature),
       MIN(temperature)
FROM conditions
GROUP BY device, bucket
WITH NO DATA;

SELECT id AS hypertable_id
  FROM _timescaledb_catalog.hypertable
 WHERE table_name = 'conditions' \gset

SELECT count(*) FROM _timescaledb_catalog.chunk WHERE hypertable_id = :hypertable_id AND dropped;

SELECT drop_chunks('conditions', now() - '2 weeks'::interval);

The problem is in the ChunkPermission rule.


Using different security margins for collision checking

Now that classes deriving from ObstacleUserInterface handle in an homogeneous way collision checking, I would like to allow users to set different security margins for different collision pairs.
To do so, I propose to add a method setSecurityMargin to ObstacleUserInterface. this method would take as input a matrix of margins, similarly as what is done for filterCollisionPairs.
Any opinion ?

That is a good idea. I think I had in mind to do something like this and didn't because it wasn't straightforward. I cannot remember the exact reason. Here are some thoughts.
What granularity do we need : body-body or joint-joint ? I believe that we need the body-body granularity. But then, we need a way of indexing both the obstacles and the robot geometries, which aren't in the same pinocchio Model.
Another tricky point is that continuous and discrete collision checking have a very different way of handling the pairs. I don't think this is blocking. It is only making the code harder to write.

class BodyPairCollision has indeed its own CollisionRequest as a static variable in method computeDistanceLowerBound.
Concerning the granularity, it seems to me that joint-joint would be enough, at least for manipulation planning applications.

Putting a box on a table requires a null security margin, so between the box and the table. However, in our scenario, we may want to use an arbitrary security margin between that the legs of the table and the box.

I will be very interested by this too. I'd like to able to define arbitrary security margin between some joint of the robot and the environment.

Putting a box on a table - at least in our domain of application - is a short motion performed with a precise localization. I think that setting the margin to 0 for the pair (box, environment) is fine.
@nim65s, let us talk about that at the next HPP meeting.

I think continuous collision checking still needs some refactoring before proceeding further on with issue. I will open another issue.

@florent-lamiraux I think this is solved by #203, isn't it ?

Yes.


Enable releasing on NPM

This PR adds the necessary changes to build Papyros into a usable NPM module.
A README with usage instructions was added to provide general informations and a small guide on how to use the package.
Currently, an issue exists with how the worker bundles are resolved. They are correctly bundled into separate files to allow loading. However, upon spawning the workers, the application looks in the current directory for the bundle (for example /public/806.index.js, the JavaScriptWorker-bundle), but the actual location is within the node_modules of your application, i.e<EMAIL_ADDRESS>This can be fixed by copying the files from there to your local folder, allowing the application to atleast be used.
I am looking for a solution to this issue, but have not had any success so far. I used https://webpack.js.org/guides/web-workers/ to add the workers to the bundling process.
Closes #59
Closes #60

The following Webpack5 issue appears to be similar to our issue: https://github.com/webpack/webpack/issues/12719.

Another related issue mentions skipping the bundling entirely and just providing the files, or using url-loader. A final alternative would be to just provide a script in the installation instructions to copy the workers to the public directory, as mentioned earlier.

@bmesuere I found a fix by using worker-loader in combination with webpack 5 (even though the docs mention that you don't need to use it) that I believe inlines the workers so no more resolution errors occur.  In a test project, I managed to include and use Papyros and its workers. The release flow is thus simply building, packing and publishing.


Big Sur window border doesn't stay on top of window

I updated to Big Sur last night and I can't seem to figure out why the window border goes behind the window after clicking on the window
Picture for reference. The blue is the focused window, but I haven't clicked on it yet. You can see the corners of the window border on the terminal tile.

I tried uninstalling, restarting and installing yabai again and the issue doesn't seem to be resolved.
Using tail -f /usr/local/var/log/yabai/yabai.err.log there is an error stating unknown command 'insert_window_border_color' for domain 'config'
Currently on OS 11.0.1 and Yabai 3.3.3

There ist no option insert_window_border_color.
╰─➤  grep window_border yabai-3.3.1/src/message.c                                                                            2 ↵ #define COMMAND_CONFIG_BORDER                "window_border" #define COMMAND_CONFIG_BORDER_WIDTH          "window_border_width" #define COMMAND_CONFIG_BORDER_ACTIVE_COLOR   "active_window_border_color" #define COMMAND_CONFIG_BORDER_NORMAL_COLOR   "normal_window_border_color"             fprintf(rsp, "%s\n", bool_str[g_window_manager.enable_window_border]);             window_manager_set_window_border_enabled(&g_window_manager, false);             window_manager_set_window_border_enabled(&g_window_manager, true);                 window_manager_set_window_border_width(&g_window_manager, width + ((width&0x1) ? 1 : 0));                 window_manager_set_active_window_border_color(&g_window_manager, color);                 window_manager_set_normal_window_border_color(&g_window_manager, color);             window_manager_toggle_window_border(&g_window_manager, acting_window);

There is no option insert_window_border_color.
╰─➤ grep window_border yabai-3.3.1/src/message.c 2 ↵ #define COMMAND_CONFIG_BORDER "window_border" #define COMMAND_CONFIG_BORDER_WIDTH "window_border_width" #define COMMAND_CONFIG_BORDER_ACTIVE_COLOR "active_window_border_color" #define COMMAND_CONFIG_BORDER_NORMAL_COLOR "normal_window_border_color" fprintf(rsp, "%s\n", bool_str[g_window_manager.enable_window_border]); window_manager_set_window_border_enabled(&g_window_manager, false); window_manager_set_window_border_enabled(&g_window_manager, true); window_manager_set_window_border_width(&g_window_manager, width + ((width&0x1) ? 1 : 0)); window_manager_set_active_window_border_color(&g_window_manager, color); window_manager_set_normal_window_border_color(&g_window_manager, color); window_manager_toggle_window_border(&g_window_manager, acting_window);

That appeared to be something old from my .yabairc config file.
When I run the commands
sudo yabai --uninstall-sa sudo yabai --install-sa sudo yabai --load-sa
I do get the error could not retrieve task port for pid: XXXXX yabai: scripting-addition failed to inject payload into Dock.app!
It appears that after I reinstalled Yabai, it isn't asking for permission to access Dock.app. I don't know how to give Yabai access to Dock.app, and it doesn't appear as an option on the "Automation" page in my Security Preferences.

I also had problems today after upgrade to Buf Sur and Yabai 3.3.1.
Did you codesign (scripts/codesign) /path/to/yabai the binary?

Yeah I did codesign the binary. It still fails to inject the payload into Dock.app.
I mean if it's anything I am getting a notification that it fails to inject the payload now, and I wasn't getting that before. 🤷♂

Please perform all those steps separately. Which of them throws the error? The install or the load part?

Okay so I completely uninstalled Yabai, wiped my Accessibility and automation privileges and restarted my computer. Then I did the following:
brew install koekeishiya/formulae/yabai
No error
sudo yabai --install-sa
No error
I also gave Yabai Accessibility Privileges at this point
brew services start yabai
No error, but I'm still encountering the border issue.
sudo yabai --load-sa
This is where I get the error:
could not retrieve task port for pid: XXXXXX yabai: scripting-addition failed to inject payload into Dock.app!
I also followed the Big Sur instructions and added sudo yabai --load-sa into my config file while also allowing that to run without a password.
At no point was I prompted to allow Yabai access to Dock.app

Dis you disable SIP?

@peterjbachman why was this closed when the border issue still exists. Even if you restart the border issue exists essentially works only the first window focused.

@jclusso Here's the steps I took that fixed this issue:

Disable SIP in recovery mode using csrutil disable --with kext --with dtrace --with nvram --with basesystem
Follow https://github.com/koekeishiya/yabai/wiki/Installing-yabai-(latest-release) to bypass sudo privileges necessary to run sudo yabai --load-sa when Yabai is loaded, and add the command to your .yabairc

I have not run into any issues with the border since I did this.

@peterjbachman I have it entirely disabled already. Maybe it has to do with the fact that I'm running Apple Silicon?


Can't download any QGIS installer

Hello,
I think, there might be something wrong with download section on your website. Afted going to downloads on your website and clicking any of the links to installer. New tab opens and I'm being redirected to about:blank on Chrome and Firefox, and to http://qgis.org/downloads/QGIS-OSGeo4W-2.14.11-1-Setup-x86_64.exe on IE. Only thing visible is white color.
Checked that on Chrome 55, IE11 and Mozilla Firefox 40.0.3.

Hi,
Just checked. Works fine for me. Tested with both 2.14 and 2.18 64bit in Chrome on Windows.
Andreas

Also works fine (including windows related links) in Firefox on os x

Yup, it works now, I guess it was some temporary problem. I'm closing issue then. Thanks ;)


post-training processing error

After the last epoch's validation steps are complete, my runs of UNETR are failing due to an error but the exception is not informative about where it is coming from in UNETR code. Error log is attached, using the hepatic vessel test dataset.
single GPU post-train error.txt

Why is my Dice score only 78% and HD95 over 30 when running infenrence?


iWidgetGoogleSearchBar Does Nothing

Syslog - https://ghostbin.com/paste/6jzrp

It looks like this package was removed from BigBoss… and even when trying debs found on the BigBoss server it doesn't work without Opener installed (testing on iOS 8.4).


How to get uploaded file path

I had found the File class has not a method to get uploaded file path and upload can not return the path.
I want to extent this or you have the better idea?

So is there a way to do this


HSEARCH-1767 (preview) Optimize delete by term

@Sanne , this only encompasses the optimization from the Hibernate Search metadata. But I need your advice, in particular on 3c273f5 as I had to create the visitor lazily. Let me know what you think.

Specifically about 3c273f5 : do we really need the visitor to be lazily initialized?
This mutations stuff is getting complex, the LuceneBackendResources was meant to be "simple" and immutable.
I see I get an NPE in isDeleteByTermEnforced() if I try reverting that commit as you can't access the list of known indexed entities yet, but I'm wondering if the problem would be solved when you address my comment at https://github.com/emmanuelbernard/hibernate-search/commit/3c273f53e04c47e67703766625d948fb6cd481c9#commitcomment-9346792 : you'd have the full list of types already provided, so you'd avoid the chicken-egg problem with the SearchFactory not being fully available yet.

@Sanne I am not sure I can avoid the laziness problem. Can I 100% ignore the list of @Indexed and only focus on the list of ORM entities? I guess that should be safe.
Also the current optimization works for all source events, not only ORM. But that's not an immediate concern today.

@Sanne another concern I have is that I am far from SearchConfiguration and:

either I would need to provide a static list of entities + subclasses that HSearch reasons about.
or I would receive an implementation of "E is not related to M or viceversa" from SearchConfiguration

I prefer 2 but it also means that I am dragging the ORM metadata for an unknown time. When / how to release the reference to be GCed?

Can I 100% ignore the list of @Indexed and only focus on the list of ORM entities? I guess that should be safe.

I think it would be the only safe option, as compared to ORM we only have a subset.

Also the current optimization works for all source events, not only ORM. But that's not an immediate concern today.

I don't think we should generalize this to the non-ORM space - unless you implement the next suggestion 2 - as we're relying here on the specific understanding that in the ORM case the inheritance implies there is no ambiguity on the keys. A different engine might allow that, by using an alternative strategy. Infinispan for example is in a different camp: the optimisation is always valid and does not depend on the mutual inheritance relation among indexed types.

either I would need to provide a static list of entities + subclasses that HSearch reasons about.

It doesn't seem like a problem to me. Remember we'd be totally fine in limiting this optimisation to the case in which we don't allow for dynamic entity discovery.

or I would receive an implementation of "E is not related to M or viceversa" from SearchConfiguration

Nice one. What about you make a Service which has a function like
areIdValuesPotentiallyAmbiguous(Type A, Type B);

Looking at the requirements in 3c273f53e04c47e67703766625d948fb6cd481c9, such a function is all you really need from the types.
You'd not explicitly point to "inheritance rules" as that's ORM specific, so you could allow other engines to plug a different conceptual rule in theory. Also we might be able to cleanup the two booleans being exposed today, as Infinispan Query could simply implement this by returning true for any request.
Actually such an areIdValuesPotentiallyAmbiguous function would be awesome as it would allow us to easily implement the alternative optimisations I've mentioned on JIRA (those which I said we shouldn't focus on as they seem tricky) such as knowing that a Date Id type will never conflict with a Short Id type. Not something I'd want to address now, but it seems the abstraction of the function would go in the right direction.

I prefer 2 but it also means that I am dragging the ORM metadata for an unknown time. When / how to release the reference to be GCed?

I don't think ORM actually GCs its metadata? Does it? I'm expecting it to need quite some metadata runtime, but I don't know. We're not making a copy, just referring to it so not consuming more memory.

@Sanne
I've been thinking about it some more.
I can make it work with the existing SearchConfiguration contract and implementation of SearchConfigurationFromHibernateCore I can collect all the classes coming from getClassMappings()
and check that at least a superclass is present in that Iterator for each pair of classes in the index. So I don't really need a new contract areIdValuesPotentiallyAmbiguous.
Still that's based on assumption and only works for ORM as you point out. So adding areIdValuesPotentiallyAmbiguous or something approaching is a better idea. thoughts?
This method relies on keeping the ORM Configuration object around. That is not expected in the contract of ORM, that's the metadata waste I am mentioning. I don't even know if we keep around the SearchConfiguration implementation when we mutate the SearchFactory
Second point: The current algo only checking @Indexed classes is actually generic and goes beyond just ORM because I think we agreed that a hierarchy cannot have different @DocumentIds in a given class hierarchy. So the same ORM logic applies. Still want to give away this optimisation for the sake of non lazy visitors?

Still that's based on assumption and only works for ORM as you point out. So adding areIdValuesPotentiallyAmbiguous or something approaching is a better idea. thoughts?

Yes I'd like that better too. Especially as it replaces the other two booleans in SearchConfiguration. I'm fine with an iterative approach but the risk is we never get to clean it up when it's not fresh in your mind.

This method relies on keeping the ORM Configuration object around. That is not expected in the contract of ORM, that's the metadata waste I am mentioning. I don't even know if we keep around the SearchConfiguration implementation when we mutate the SearchFactory

I remember you took great care for that in old times, but I'm afraid that when we implemented the "dynamic reconfiguration" we dropped all such efforts to not keep references to ORM's configuration around as we really need it to "reboot".
It's tricky, I'm wondering how we could add a test to make sure we clean that object up, as keeping it always in mind isn't going to work.
Assuming that the damages wasn't done already - or that we might want to clean it up and with the current patch you don't want to make it harder - could you just make a copy into a hashset of all mapped entities? Such a thing could then implement the nice contract of areIdValuesPotentiallyAmbiguous .

Second point: The current algo only checking @Indexed classes is actually generic and goes beyond just ORM because I think we agreed that a hierarchy cannot have different @DocumentIds in a given class hierarchy.

I don't remember about that restriction. You have a reference to refresh my mind?
But even if they all use the same property being marked as @DocumentId, you could have entities {A, B, C}, where A is the parent of {B, C}, and only {B, C} are marked with @Indexed. If the engine component doesn't know about the existance of entity A, he can't figure out that {B, C} are not conflicting.

Still want to give away this optimisation for the sake of non lazy visitors?

Of course not :) I'm not that strict on not wanting to change the lazy visitor. Just pushing to see if there is a better solution, as we'd be missing out on optimisations && incidentally keep the visitor simpler.

@Sanne and all. The PR is in good shape to be candidate for master. Review for inclusion.

Thanks! reviewing ..

I'm done reviewing, it looks great and I'm tempted to merge right away.
Two micro suggestions are open though:

https://github.com/hibernate/hibernate-search/pull/766#commitcomment-9439634
https://github.com/hibernate/hibernate-search/pull/766#discussion_r23526939

Let me know if I should merge, or you want to address those.

mm, linking to the comments doesn't seem very helpful as there is no highlight of which one I mean.
I mean these points:

should we rather fail fast and throw IllegalArgumentException as in Gunnar's suggestion
the classname for SubANonIndexed (and SubBNonIndexed) seems odd.

@gustavonalle you'll want to have a look at this, it's a better replacement for the booleans we added two weeks ago.

That is not correct @Sanne. We will be able to get rid of the isDeleteByTermEnforced() in a SPI breaking version. But I don't think it is safe to get rid of isIndexMetadataComplete(). If you look at AbstractWorkspaceImpl.areSingleTermDeletesSafe() you will see that it has to know whether the metadata is complete to know that a single entity in an index is safe. We could twist the IdUniquenessResolver.areIdsUniqueForClasses to encompass the metadata compete trick but I think that would be a bad idea.

Why the name SubANonIndexed when it's actually @Indexed ?

I'll work on a better name.

Rebased
Change test entity names for @Sanne
Added logs when the index cannot use the optimization for @gunnarmorling

I'm aware on the changes not being enough to replace the use case from Gustavo yet, not least because of our SPI contract. Just thinking ahead on what it could become.


⚖ Register Validator: Polkachu

Network Choice
drunemeton-1
Who are you?
Polkachu is the trusted staking service provider for blockchain projects. 100% refund for downtime slash. Contact us at<EMAIL_ADDRESS>Delegator address
okp41jt9w26mpxxjsk63mvd4m2ynj0af09cslwamw42
gentx
{
  "body": {
    "messages": [
      {
        "@type": "/cosmos.staking.v1beta1.MsgCreateValidator",
        "description": {
          "moniker": "polkachu.com",
          "identity": "0A6AF02D1557E5B4",
          "website": "https://polkachu.com",
          "security_contact"<EMAIL_ADDRESS>          "details": "Polkachu is the trusted staking service provider for blockchain projects. 100% refund for downtime slash. Contact us at<EMAIL_ADDRESS>        },
        "commission": {
          "rate": "0.050000000000000000",
          "max_rate": "0.200000000000000000",
          "max_change_rate": "0.010000000000000000"
        },
        "min_self_delegation": "1",
        "delegator_address": "",
        "validator_address": "okp4valoper1jt9w26mpxxjsk63mvd4m2ynj0af09cslm6t8tt",
        "pubkey": {
          "@type": "/cosmos.crypto.ed25519.PubKey",
          "key": "tJwV3yN+YYNrYF9B/a7z2UuunBuFz6/Bz0UG0+zJcQM="
        },
        "value": { "denom": "uknow", "amount": "10000000000" }
      }
    ],
    "memo": "7261813622bd9c819b840561063599ef20a92ef3@<IP_ADDRESS>:26656",
    "timeout_height": "0",
    "extension_options": [],
    "non_critical_extension_options": []
  },
  "auth_info": {
    "signer_infos": [
      {
        "public_key": {
          "@type": "/cosmos.crypto.secp256k1.PubKey",
          "key": "As1WcJsvf1NQgRlS8a2PHuueKhHlCYrFe3VooMxQdflR"
        },
        "mode_info": { "single": { "mode": "SIGN_MODE_DIRECT" } },
        "sequence": "0"
      }
    ],
    "fee": { "amount": [], "gas_limit": "200000", "payer": "", "granter": "" },
    "tip": null
  },
  "signatures": [
    "WTlVbu5qscL70X9ATk1PamZZKXXKlOTCHogq2ais7xpWcVDFDrUQA/xPBvq8Fb2SvAZy7AwfKjBlEznkZXnShw=="
  ]
}

😉 Here is the corresponding PR: https://github.com/okp4/networks/pull/649

Done with https://github.com/okp4/networks/pull/649


Fixes issue 16

Still don't understand how to scrub the history properly, rebase does not want to be friends with me...

Ahh cool git push -f was the missing piece. Like a good Russian I'm all about rewriting history now.


OOM / SO exception counter

Keep a counter of OOM and S/O exceptions to help diagnose crash dumps.

This change is

@Microsoft/chakra-developers Can someone review this please ?

Do you just want to know that OOM/SO happened? How is the counter helping in debugging?

I want to know that an exception of this type happened. I thought about making it a bool, but a counter could be helpful.
The main reason is that when I look at a dump, I want to help direct my attention to the fact that an OOM or SO exception happened or not to end up in this state.
Most likely the user will do something like
try {
  doSomethingThatOOMs()
} catch (e) {
}
OtherOperationThatCrashes()

Since we have the dump at OtherOperationThatCrashes and not at doSomethingThatOOMs it's hard to pinpoint what could have caused us to get into this state.


Create and implement a standard for visual installers for all deep-packages

The ideal solution would be:

Create link type for example:
(VisualInstaller: Any Type ClientHandler)

or
(VisualInstaller: Any Type TSX)

or
(VisualInstaller: Any Type Selector)

Using selector may allow selecting any ClientHandler like link.
Also, it would be great to use VisualInstaller link as an outgoing link from package itself, which needs https://github.com/deep-foundation/npm-packager/issues/95 issue to be done.

Add handler that opens client handler on creation of Installed link connected with installed package. This handler should create Opened link with ClientHandler selected by VisualInstaller link.

Why is this handler called VisualInstaller? Why should it be open on package installation? What this handler should do?

Why is this handler called VisualInstaller?
Do you have better ideas?

Why should it be open on package installation?
Because in Windows and Linux it works like this, you think it is not necessary?

What this handler should do?

Make all preparations/initial settings that are required for any package to work. If there is no visual installer, the user will not see it.


Refactor Token auth to support Token refreshes.

Adds the ability to refresh a token if the token expires and it has a refresh token. This allows us to use the FHIR Client's dynamic auth_callback approach, which now checks to see if the token needs to refresh, refreshes it if needed, before creating the HTTP Authorization header.
Resolves #9.

TODO for the morning:

[ ] Misc code cleanup and documentation


How to get parameter types from function?

Hi, can you help me with how to get parameters types from function?
I can get constructor parameter type by
Reflect.getMetadata('design:paramtypes', target)
but get nothing for
Reflect.getMetadata('design:paramtypes', target.prototype.somemethod)

To get the parameter type from a method we can invoke Reflect.getMetadata('design:paramtypes', target, propertyName') from inside a decorator function.
For example:
import 'reflect-metadata';
class MathClass {
@LogParamTypes()
multiply(numA: number, numB: number ): number {
return numA * numB
}
}
function LogParamTypes() {
return LogParamTypesFactory
}
function LogParamTypesFactory(target, propertyName, descriptor) {
const paramTypes = Reflect.getMetadata('design:paramtypes', target, propertyName)
console.log("paramTypes:", paramTypes)
console.log(paramTypes[0].name)
console.log(paramTypes[1].name)
}

To achieve it,by using
Reflect.getMetadata('design:paramtypes', target.prototype,methodName)

@abdullahchaudhry Why I get paramTypes: undefined if use such decorator in Nuxt 3?
It's because of vite/esbuild?

You would need to check the generated output to see if a __metadata() call is issued for the multiply method. Unfortunately, I cannot speak to what level of support vite, esbuild, or nuxt provides for the --emitDecoratorMetadata flag.

@rbuckton now I have
paramTypes [ [Function: Object], [Function: Object] ] designType [Function: Function] returnTypes [Function: Promise]
but expect something like User, String, Number

It's because type is Partial, with User type all is ok.

Closing as it seems the original question has been answered. As far as the value of design:paramtypes, the behavior of TypeScript's --emitDecoratorMetadata behavior is better discussed on the TypeScript repository.


Seems that Media.Actions.cshtml is missing a Script.Require("JQuery")

It crashes orchard when you try to list any Media Item (document for me)

`@using Orchard.ContentManagement
@using Orchard.Core.Contents;
@using Orchard.Core.Contents.Settings
@{
Script.Require("JQuery").AtFoot();
ContentItem contentItem = Model.ContentItem;
var draftable = contentItem.TypeDefinition.Settings.GetModel().Draftable;
}

    @if (Authorizer.Authorize(Permissions.EditContent, contentItem)) {
        @Html.Link(T("Edit").Text, Url.ItemEditUrl(contentItem), new { @class = "button", id = "edit-media-link" })
    }
    @if (Authorizer.Authorize(Permissions.PublishContent, contentItem) && draftable) {
        if (contentItem.HasPublished()) {
            @Html.AntiForgeryTokenValueOrchardLink(T("Unpublish").Text, Url.Action("Unpublish", "Admin", new { Area = "Contents", contentItem.Id }), new { @class = "button", itemprop = "UnsafeUrl" })
        }
        else {
            @Html.AntiForgeryTokenValueOrchardLink(T("Publish").Text, Url.Action("Publish", "Admin", new { Area = "Contents", contentItem.Id }), new { @class = "button", itemprop = "UnsafeUrl" })
        }
    }

@using (Script.Foot()) {

}
`

Did you add that Script.Require("JQuery")" line to the view?  Because it's a lower-case j: Script.Require("jQuery")` (and you'll need it at head not foot because the javascript code in the view is not being attached to the footer and would execute before the jQuery library is loaded)
https://github.com/OrchardCMS/Orchard/blob/dev/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Parts/Media.Actions.cshtml

Well

It is now case insensitive
if you look at the code I have also added @using (Script.Foot())

Maybe   @using (Script.Foot()) is enough, I will check

It would have been easier to read if you formatted your code when you posted the issue.  Just sayin'
As for it being case sensitive "now", I think it's been case sensitive for some time... I don't think that's a new "feature".
It's three backticks to format code: ```

I used the 'three backtick', but the problem is it''s not a perfect system.
Concerning case insensitive/sensitive it could be a new bug.
1.10 is the most buggy version I have seen since I follow Orchard, v 1.5 I believe.
Anyway the bug exists, isn't it. Do you agree on this ????

And if you or your team find a better, well formatted and correctly formulated fix, I accept you make a PR.

So this file didn't change between 1.9.2 and 1.10.
What version of Orchard are you currently running?
I actually have not come across this bug myself. What page are you accessing to load that partial view?  Can you provide steps to reproduce the error on a clean 1.10 install?
Here is the file in the 1.9.2 branch
https://github.com/OrchardCMS/Orchard/blob/1.9.2/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Parts/Media.Actions.cshtml

If you engage for the PR, I could say that I created a dedicated contentItem, assembling parts, to contain Documents media, it is a listable content.
I created some of them with the medialib UI and when I list them in the content I get the js exception.
Have you succeeded reproducing ?

We have tried to display Media Items and it works on 1.10. Can you provide some repro steps, and confirm you are using the 1.10 branch?


Prioritising Quests & much requested flexible placeholders

What does your feature do?
Adds the ability for players and admins to prioritise quests.
Adds the option to set a priority value for quest in the editor, default being 0 (the least).
.           The higher priority quest being replaced in the placeholder.
Adds the command for players;
.            /quests follow [quest to prioritise]
Reason for using 'follow' over 'prioritise' is because it's shorter, very understandable, and easier to remember and type, especially for non natives.
If the  part is left empty, it should be reset, to target the server prioritised quest instead of the player targeted one.
Adds new placeholders for targeting the prioritised quest, either by being able to replace the  part in the placeholders with a word used for always targeting the prioritised quest. Or by having exclusive placeholders such as;
.            %quests_player_priority_name%,
.            %quests_player_priority_objectives%
etc.
How would people use it?
Admins would use it in a way where it's easier to make all the placeholders, as well as other displays; making for a much cleaner and faster setup.
While users themselves can, if granted the permission to, have a way to change those displays to show a quest they want to devote their time to at that moment.
In general it would allow for easier oversight of both setup and overview, and I hope there's no-one who doesn't like that.
==
I do realise it's a big feature request, in multiple areas, but since they kind of depend on each other I decided to put it in 1 ticket.
Extra credits to @CaptainAlienHD for taking the time to discuss this into detail.

Quick add-up to the things would be adding a
/questadmin follow   - Which would give options for Admins and Staff member in general to help out players in need instead having to /sudo them.
Also the feature would be useful for productive servers that are working with quests on the fly. Quests that cannot be started by players but only Questadmin give quest command. In example players that walk into NPC. Instead having to talk to it. NPC is like. Hey i have Quest for you and player automatically receive the quest. Having option to admin force priority would be really useful for admins. As they can chance follow placeholders right after they give the "flying quest". Of course if player doesn't want to go into it. He can always /quests follow  his quest he was devoted to follow.

Thanks for taking the time to write this. As I alluded to on Discord, adding this functionality purely for a few, optional placeholders seems excessive to me. Requests to auto-sort priority alphabetically, randomly, by age, by type, etc. will surely follow for a feature many are unlikely to use, but considering the amount of time it could take to manually reorder priority on every quest, I would feel obliged to comply.
However, recent updates have allowed players to select a target ("priority") quest for their Quest Compass. It has dawned on me that placeholders based on said target could be used in a similar manner, albeit with the player having control over selection by clicking, as opposed to an administrator via command. IIRC compass targets are sorted alphabetically, and because this is assigned by the plugin, I would feel more conformable fielding requests.
Let me know what you think.

Per further discussion on Discord, my suggestion has been partially implemented as https://github.com/PikaMug/PlaceholderExpansion-Quests/commit/5f2851db6d9e68561a31745156d78a200f6b7131
I write "partially" because the Quest Compass currently only points to objectives of Kill NPC, Interact NPC, Deliver Item, and Reach Location. Once I update Quests to also point to nearest Kill Player, nearest Kill Mob, etc. this ticket will be satisfied. Regardless of whether such update occurs in time, the PAPI extension will be published alongside the next release of Quests.


Pass properly updated context to a ContextAwareRandomizer

The stack of the context passed to any ContextAwareRandomizer via setRandomizerContext() does not have the actual currently processed field on top, but the enclosing/parent field instead.
This makes it impossible in a randomizer to acquire and use the current field metadata to generate a random value (e.g. based on attributes of a custom annotation on it).

LGTM. Rebased and merged as 729420b14d447e33570833e5a23bc5ae9411406e. Thank you for your contribution!


do not throw "Time Limited Exceed"

Hi.
I want to create server online for my class. I have tried many online judge but I like yours. I have a question that your judge do not throw "Time Limited Exceed" when I have double for-loop with 1e6.
Excample in C++:
vector<long long> a(1,0);
for (int i = 0; i<1e6; i++)
    for(int j = 0; j<1e6; j++)
        a[0] = i*j;

I set time limit is 1000ms but this code do not give "Time Limited Exceed".
I also see that the judge only throw "Time Limited Exceed" when I have infinity loop in submited code.
Please help.

@duchuyvp Check how C, C++ compiler works. It tries to optimize code when it runs, hence it does not throw error.
https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
You can remove "-O2" from command.
You need to make changes in https://github.com/QingdaoU/OnlineJudge/blob/64ef15420a993cbe598423d96e7024e3037ae78c/judge/languages.py#L78
"compile_command": "/usr/bin/g++ -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c++14 {src_path} -lm -o {exe_path}",
"compile_command": "/usr/bin/gcc -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c11 {src_path} -lm -o {exe_path}"


Add <GenerateDocumentationFile> and other metadata to .csproj

Resolves #167
I also added an icon, a description, and other metadata items that NuGet packages usually have.

Hi @aradalvand, looks good!
There is only a minor issue, can you format the .csproj file, so the newly added code is aligned with the rest?
// Rune

@runeanielsen Done :)

Great, I'll merge it in, thanks again! :rocket:

@aradalvand, this has now been released in version 6.8.0


lifecycle callback problem

Sails version: 0.12.3
Node version:6.1.0
NPM version:3.8.6
Operating system: Ubuntu 16.04 LTS

Recently I wanted to use the lifecycle callback which sails has exposed in my project. But I found this problem:
when I use the afterCreate callback function just like that:
afterCreate: function(category, cb){

    Category.find({name: category.name}).populate('blog').exec(function(err, blogs){
      cb();
    });
  },

It works ok.
But when I continue call the second async function just like that:
afterCreate: function(category, cb){

    Category.find({name: category.name}).populate('blog').exec(function(err, blogs){

      var numOfArticles = blogs.length;
      Category.update({name: category.name}, {numOfArticle: numOfArticles}).exec(function (err, cat){
        cb();
      });
    });

  },

Then the server will run into the infinite loop and can not return anything.
So, does the liftcycle callback can not support one more async callback ??

Hi @linxiaowu66,
I was unable to recreate your issue, but I did notice a few problems in your example.  First of all, you should be using findOne to retrieve the new Category, not find.  And unless name is the primary key of the model, you're better off searching on the id field.  Next, the argument passed to the callback of findOne will contain the Category you searched for, not Blogs.  So altogether, you should do:
afterCreate: function(category, cb){

    // Find the new category by ID and populate its blogs
    Category.findOne({id: category.id}).populate('blog').exec(function(err, category){
      // Get the number of blogs in the new category
      var numOfArticles = category.blogs.length;
      // Update the new category
      Category.update({id: category.id}, {numOfArticle: numOfArticles}).exec(function (err, cat){
        cb();
      });
    });

  },

If you still have problems with that, then the issue lies elsewhere in your code.  At that point your best bet is to attempt to reproduce the new problem using a new repo, e.g.
sails new sails-issue-3777
cd sails-issue-3777
# Now make whichever are the simplest/quickest changes which reproduce the issue,
# and when you for sure have the issue isolated, run:
git init
hub create  # or use the GitHub UI to create the repo and `git remote add` it manually
git add .
git commit -am 'Reproduces https://github.com/balderdashy/sails/issues/3777'
git push -u origin master
hub browse # or open the repo in your browser manually
# Then copy the URL of the new repo and paste it as a comment on this issue.
# We'll check it out, and since this way we'll be able to experience the problem
# ourselves, we should have no problem getting to the bottom of it.

Most of the time you'll find the issue while creating the repo, but if not, post back here with a link to the repo you created and we'll check it out!

Hi, @sgress454 :+1:
Thanks for your detail comments with patient. I has tried  what your method, but it still enter the infinite loop. So I make a minimum project as your steps,
the repo link is :https://github.com/linxiaowu66/sails-issue-3777:
And in this repo, I type these commands in the sailsjs console, just like these:
sails> Category.create({name:"Sailsjs"}).exec(function(err,cat){console.log(cat)})
undefined
sails> { name: 'Sailsjs',
  createdAt: '2016-07-09T10:30:01.346Z',
  updatedAt: '2016-07-09T10:30:01.346Z',
  id: 1 }

sails> Article.create({title:"sails",category:1}).exec(function(err, art){console.log(art)})
undefined
sails> { title: 'sails',
  category: 1,
  createdAt: '2016-07-09T10:31:10.092Z',
  updatedAt: '2016-07-09T10:31:10.092Z',
  id: 1 }

sails> Category.findOne({id:1}).populate("articles").exec(function(err,cat){console.log(cat)}))
...
sails>
sails> Category.findOne({id:1}).populate("articles").exec(function(err,cat){console.log(cat)})
undefined
sails> { articles:
   [ { title: 'sails',
       category: 1,
       createdAt: '2016-07-09T10:31:10.092Z',
       updatedAt: '2016-07-09T10:31:10.092Z',
       id: 1 } ],
  name: 'Sailsjs',
  createdAt: '2016-07-09T10:30:01.346Z',
  updatedAt: '2016-07-09T10:30:01.346Z',
  id: 1 }

sails>
sails> Category.update({id:1},{name:"Sailsjs1"}).exec(function(err,cat){console.log(cat)})
undefined
sails> { articles:
   [ { title: 'sails',
       category: 1,
       createdAt: '2016-07-09T10:31:10.092Z',
       updatedAt: '2016-07-09T10:31:10.092Z',
       id: 1 } ],
  name: 'Sailsjs1',
  createdAt: '2016-07-09T10:30:01.346Z',
  updatedAt: '2016-07-09T10:34:11.216Z',
  id: 1 }
{ articles:
   [ { title: 'sails',
       category: 1,
       createdAt: '2016-07-09T10:31:10.092Z',
       updatedAt: '2016-07-09T10:31:10.092Z',
       id: 1 } ],
  name: 'Sailsjs1',
  createdAt: '2016-07-09T10:30:01.346Z',
  updatedAt: '2016-07-09T10:34:11.228Z',
  id: 1,
  numOfArticle: 1 }
{ articles:
   [ { title: 'sails',
       category: 1,
       createdAt: '2016-07-09T10:31:10.092Z',
       updatedAt: '2016-07-09T10:31:10.092Z',
       id: 1 } ],
  name: 'Sailsjs1',
  createdAt: '2016-07-09T10:30:01.346Z',
  updatedAt: '2016-07-09T10:34:11.241Z',
  id: 1,
  numOfArticle: 1 }
......

This print will be enter infinite loop, but I don`t know why.
Maybe you can find the reason. Thanks.

HI, @sgress454
So sorry for my fault, I has known what is reason for infinite loop.  I has called the .update() method in the afterUpdate lifecycle, so this will cause the infinite loop.
I will close this issue.
Thanks for your helping.


Move default model evaluation code to DynamicPPL

Corresponding changes to DynamicPPL#43.  Removes the fallback code for assume/observe/tilde, NoDist and NamedDist, and fixes the leftovers.
assume/observe and NamedDist are still reexported.
I tested this with my local DynamicPPL in dev mode, but there still might be something overlooked concerning package things or exports.

Of course the tests fail, since they have to be performed against the corresponding updates in DPPL.

I think this is ready to merge.

Many thanks, @phipsgabler!


transaction_descriptor_16707 & 16963

2 Transactions that do not show what the transaction is:
transaction_descriptor_16707  => VotingKeyLinkTransaction
transaction_descriptor_16963  => VrfKeyLinkTransaction
These transactions are made by symbol-bootstrap
http://explorer-0.10.0.x-01.symboldev.network/accounts/TCCZ6DAUR37RWCCARM3SC3263SSSOMZRYGJNAJY
http://explorer-0.10.0.x-01.symboldev.network/transactions/9C1847075854E66A5CA13170526BD41E5E9AAEE861B93472C1B9674C04E63776
http://explorer-0.10.0.x-01.symboldev.network/transactions/A5D8BE033BA27DCB3233CCA0CEFE5276D0415B12A67406CE3F784C9E3858A03B

Thank you for the report, views have not been added yet. :+1:


concurent calls

I am not sure how to make multiple HTTP calls at once,
could you write a quick example on how to do it ?
Thanks !

Just used Promise.all seems to work pretty good


Can't add people to the VS Code extension acquisition page

Describe the bug
Can't add people to the VS Code extension acquisition page
To Reproduce
Steps to reproduce the behavior:

Go to dev.azure.com
Add the new user
New user go to acquisition page
No permission to see

Expected behavior
The acquisition page showing how many install everyday
Screenshots
User not seeing this:

Additional context
Tried adding the new user to every permission menu I can find in the Azure dev page and extension management page

any updates?

Hi @yitao-mutable If you still facing issue, please visit publisher manage page
https://marketplace.visualstudio.com/manage/publishers/, under "members" tab add required people with reader access

worked, thanks


ITelemetryClient to facilitate testing/mocking

Fix Issue #342 .
Changes
An interface of ITelemetryClient, containing all the public methods/properties available on TelemetryClient.
This allows consumers to inject an interface, rather than a concrete implementation, into their classes, which makes mocking and testing easier for consumers.
This doesn't change any behaviour around TelemetryClient currently. It just adds the ability to also inject in ITelemetryClient via DI. You can still inject in TelemetryClient. The choice is up to the consumer. Both will work.
Checklist

[x] I ran Unit Tests locally.
[x] CHANGELOG.md updated with one line description of the fix, and a link to the original issue if available.

The PR will trigger build, unit tests, and functional tests automatically. Please follow these instructions to build and test locally.
Notes for authors:

FxCop and other analyzers will fail the build. To see these errors yourself, compile localy using the Release configuration.

Notes for reviewers:

We support comment build triggers

/AzurePipelines run will queue all builds
/AzurePipelines run <pipeline-name> will queue a specific build

Great work!

/AzurePipelines run

We should be very careful adding new public APIs in this repo. The long term goal would be to leverage OpenTelemetry, so try to keep the changes here minimal, unless critical.

It's not really adding an API. It's the exact same API as current, but with the option of calling the existing methods on an interface rather than the concrete implementation.
The long term goal is fine for when it happens, but it's still a WIP and many people are left with using TelemetryClient for now until it's built out a bit more.
This has been an open issue for years and people want to be able to write tests so that they feel comfortable with their logging code.
Can I ask why it's so contentious to put an interface behind the TelemetryClient?

Please accept this small change in code (no breaking changes, no extra public api) that will result in great possibilities with automatic testing.

Polite bump @cijothomas. There is no change needed? The public api hasn't changed

@TimothyMothra could please help us in getting this PR merged? (you're the top contributor of this repo)

Unfortunately Microsoft don't seem to be willing to merge this for some reason, so I don't think you'll have any luck

@thomhurst at least the example in https://github.com/Microsoft/ApplicationInsights-dotnet/issues/342 was straight forward and I got it to work. Thanks for trying.
Happy Thanksgiving! 🦃


preload exchange rate and converted amount

@fefe982 it seems you may be missing an import of MathContext, at least according to Travis.
Could you check it?

Nevemind, I'll just merge and fix it. I have to push some stuff anyway


Builder Method

This is not a issue but more like a correction of notes. The Person class has Builder method not builder in generated swift codes. In your tutorial, by using Person.builder will cause compilation error: "does not have a member named builder"

I have corrected documentation.


Headers can be totally configurable

I am trying to use this package for bunny CDN tus upload, and it is working well except checksum mismatched error.
If i remove Upload-Checksum header then it is working fine. Upload-Checksum header is there in core code of package which can be dynamic/configurable instead of static.
For now i have extended class and override the method for remove that header.
Thanks

Never mind, i just managed with php curl.


Create python-package-conda.yml

Hi @13aalteshuva thank you for interest and effort. ShellGPT originally designed using pip package manger, I think it will make it a bit complicated if we add another package/env management tool. Therefore I'm closing this PR, but thank you for your effort.


[CIVP-14937] Add place holder app incase Shiny app not present

Going to test this tomorrow, but this is general idea.

Ignore the gray layover, it is white

@mattyb  Hey I just tested the sister ticket of this PR in staging and it works, could you LGTM This one


chore(blockifier): remove warning on unneeded conversion

This change is

#2726  👈 (View in Graphite)
main

This stack of pull requests is managed by Graphite. Learn more about stacking.


Tact compilation error: paramSet.isSubsetOf is not a function

Are you using the latest released (or pre-released, a.k.a. "next") version?

[X] I'm using the latest Tact version

Tact source code
Choose the project template
An empty contract (TACT)

Relevant Tact/build system log output
nordost@nordost-pc:~/Projects/WagerBackendRepo/telegram-web-app-backend-deploy/contract$ npm create ton@latest

? Project name Wager
? First created contract name (PascalCase) WagerContract
? Choose the project template An empty contract (TACT)

[1/3] Copying files...
[2/3] Installing dependencies...

npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '<EMAIL_ADDRESS>npm WARN EBADENGINE   required: { node: '>=22.0.0' },
npm WARN EBADENGINE   current: { node: 'v18.17.1', npm: '9.6.7' }
npm WARN EBADENGINE }
npm WARN deprecated<EMAIL_ADDRESS>This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm WARN deprecated<EMAIL_ADDRESS>Glob versions prior to v9 are no longer supported

added 441 packages, and audited 442 packages in 16s

50 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

[3/3] Creating your first contract...
Build script running, compiling WagerContract
⏳ Compiling...Tact compilation failed
TypeError: paramSet.isSubsetOf is not a function
    at resolveFunctionDescriptor (/home/nordost/Projects/WagerBackendRepo/telegram-web-app-backend-deploy/contract/Wager/node_modules/@tact-lang/compiler/dist/types/resolveDescriptors.js:600:31)
    at resolveDescriptors (/home/nordost/Projects/WagerBackendRepo/telegram-web-app-backend-deploy/contract/Wager/node_modules/@tact-lang/compiler/dist/types/resolveDescriptors.js:1243:19)
    at precompile (/home/nordost/Projects/WagerBackendRepo/telegram-web-app-backend-deploy/contract/Wager/node_modules/@tact-lang/compiler/dist/pipeline/precompile.js:18:55)
    at Object.build (/home/nordost/Projects/WagerBackendRepo/telegram-web-app-backend-deploy/contract/Wager/node_modules/@tact-lang/compiler/dist/pipeline/build.js:62:43)
    at doCompileTact (/home/nordost/Projects/WagerBackendRepo/telegram-web-app-backend-deploy/contract/Wager/node_modules/@ton/blueprint/dist/compile/compile.js:113:28)
    at doCompileInner (/home/nordost/Projects/WagerBackendRepo/telegram-web-app-backend-deploy/contract/Wager/node_modules/@ton/blueprint/dist/compile/compile.js:127:22)
    at doCompile (/home/nordost/Projects/WagerBackendRepo/telegram-web-app-backend-deploy/contract/Wager/node_modules/@ton/blueprint/dist/compile/compile.js:142:23)
    at async buildOne (/home/nordost/Projects/WagerBackendRepo/telegram-web-app-backend-deploy/contract/Wager/node_modules/@ton/blueprint/dist/build.js:21:24)
    at async create (/home/nordost/Projects/WagerBackendRepo/telegram-web-app-backend-deploy/contract/Wager/node_modules/@ton/blueprint/dist/cli/create.js:102:9)
    at async main (/home/nordost/Projects/WagerBackendRepo/telegram-web-app-backend-deploy/contract/Wager/node_modules/@ton/blueprint/dist/cli/cli.js:91:5)
Error: Could not find boc in tact compilation result

Error: Command failed: npm exec blueprint -- create WagerContract --type tact-empty
    at checkExecSyncError (node:child_process:885:11)
    at execSync (node:child_process:957:15)
    at main (/home/nordost/.npm/_npx/b56225140edd990c/node_modules/create-ton/dist/cli.js:133:34) {
  status: 1,
  signal: null,
  output: [ null, null, null ],
  pid: 24839,
  stdout: null,
  stderr: null
}

What happened?
No response
What did you expect?
Successful compilation
Steps to reproduce
nordost@nordost-pc:~/Projects/WagerBackendRepo/telegram-web-app-backend-deploy/contract$ npm create ton@latest
? Project name Wager
? First created contract name (PascalCase) WagerContract
? Choose the project template An empty contract (TACT)
How do you run Tact?
No response
Anything else?
Here’s a list of the commands I have already tried:
Uninstall and reinstall Tact:
npm uninstall @tact-lang/compiler
npm install @tact-lang/compiler
Clear npm cache:
npm cache clean --force
Reinstall all dependencies (including deleting the node_modules folder):
rm -rf node_modules package-lock.json
npm install
nordost@nordost-pc:~/Projects/WagerBackendRepo/telegram-web-app-backend-deploy/contract$ npx tact --version
1.5.2
git commit: 1fadc812ebcef732727d40b4d24e9059a316a780
nordost@nordost-pc:~/Projects/WagerBackendRepo/telegram-web-app-backend-deploy/contract$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.4 LTS
Release:        22.04
Codename:       jammy
nordost@nordost-pc:~/Projects/WagerBackendRepo/telegram-web-app-backend-deploy/contract$ node -v
v18.17.1

As the error message says, use node version 22


Add EventBuilderV2

Add layerId field to Experiment
Add EventBuilderV2 and conditionally instantiates based on datafile version
Fix some tests

@aliabbasrizvi @delikat @haleybash-optimizely @mikeng13 @alda-optimizely @wangjoshuah @jophde

I think you will have to rework some of the logic here to be able to continue supporting v1 and v2 data file changes which is limited to layer ID.

Looks pretty good to me.  How many people do we actually have running experiments using v1 events?  I question whether it's worth even back supporting this since we are still in Beta.  Why convert data files to v2 on the backend if we must?  Seems like a lot of logic to add to the SDK.  After we release > 99% of customers will be using v2 endpoints going forward.
Since nobody is on the Android event handler yet can I just make it use v2 without back support?

@aliabbasrizvi Addressed your feedback

Just minor nits now. Mostly looks good.

@aliabbasrizvi Set shouldIndex to true, but seems like it's not needed for segmentation.

LGTM


[Feature Request] Typing checking and data validation with pydantic

Required prerequisites

[X] I have searched the Issue Tracker and Discussions that this hasn't already been reported. (+1 or comment there if it has.)
[X] Consider asking first in a Discussion.

Motivation
The current data schema is implemented with data classes that do not enforce typing checking and data validation at runtime. We can introduce better data validation and settings management by replacing data classes with pydantic.
Solution
No response
Alternatives
No response
Additional context
No response

@oserikov Oleg, could you pick this up?

Sure!


Improve UI after purchasing a domain

Description
Once we have bought a domain, we stay on the purchase page, thinking that eventually we'll have to buy it again and/or use a new domain name.

PROPOSED TODO
Probably be redirected into another page.

We can just redirect to /identities when the modal is closed :)


How to use in 3D conv?

The paper and the code are both for the 2D convolution of the sn limit w, then how to deal with w in the 3D convolution?

This code should work for 3D convolutions, possibly with small modifications to spectral_normalization.py.
Note that this code (functions _update_u_v and _make_params) define the height of the kernel. This does not actually refer to the geometric height of the kernel, rather the number of channels. In spectral normalization, we flatten all of the geometric dimensions of the weight tensor (in 2D, the width and height) into the variable called width.
Because this code simply flattens all of these dimensions, it should work when the weight vector is a 4D tensor rather than a 3D tensor (CHWD rather than CHW).
Have you had any success using the SpectralNorm wrapper on 3D convolutional layers?

I don't think you need to change the code. The SpectralNorm layer should automatically flatten the last four dimensions of the weight tensor.
For 3D convolutions, the weight tensor is 5D (out_channels, in_channels, height, width, depth). The spectral norm should flatten in_channels, height, width, depth into one dimension of size in_channelsheightwidthdepth. In other words, it treats the weight tensor as a matrix with dimensions (out_channels, in_channelsheightwidthdepth).
Let me know if this works.

oh,thanks


Row(CPU)-based UDF supports metric for the run time.

This fixes https://github.com/NVIDIA/spark-rapids/issues/4092
Signed-off-by: Firestarman<EMAIL_ADDRESS>

Filed this for early review.

Verified locally and it works well.

rebased to 22.02

build

build

Close this PR since it is not easy to support this.


Add alibaba ci

Description
Integrate Alibaba cloud for the Public cloud CI
Depends on - https://github.com/cloud-bulldozer/scale-ci-deploy/pull/185
Live playground - http://amitsagtani97-add-alibaba-ci-airflow.apps.sailplane.perf.lab.eng.rdu2.redhat.com/home

Codecov Report

Merging #157 (d506294) into master (70617b3) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master     #157   +/-   ##
=======================================
  Coverage   93.45%   93.46%
=======================================
  Files          24       24
  Lines         993      994    +1
=======================================
+ Hits          928      929    +1
  Misses         65       65

Flag
Coverage Δ

gha
93.46% <100.00%> (+<0.01%)
:arrow_up:

python-3.9
93.46% <100.00%> (+<0.01%)
:arrow_up:

unit
93.46% <100.00%> (+<0.01%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...ags/openshift_nightlies/tasks/install/openshift.py
98.33% <100.00%> (+0.02%)
:arrow_up:

dags/openshift_nightlies/util/var_loader.py
96.15% <100.00%> (ø)

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 70617b3...d506294. Read the comment docs.

@amitsagtani97, needs rebase

@mohit-sheth @Harshith-umesh, can you take a look?


[Feature Request] disable listing file permissions option

When using directory listings
It would be nice to be able remove the permissions column
this could be dome by a new argument
example

Apparently, the functionality is even already implemented:
https://github.com/http-party/http-server/blob/bf4816d4487d3de0a6808ab0c0b12feb125310ee/lib/core/show-dir/index.js#L114-L116
There's just no command line option to set it... (I tried --hide-permissions and --hidePermissions, and also --no-permissions in analogy to --no-dotfiles, but all without observing any changes)
I guess it would need to be added here:
https://github.com/http-party/http-server/blob/bf4816d4487d3de0a6808ab0c0b12feb125310ee/bin/http-server#L143-L162


Native LDAP support

This PR adds native ldap support. I already played a bit while my refactor (#5007) and found out that this doesn't add that much megabytes more to the image. The docker image only grows about 6MB (from 528MB to 534MB) which is not that much.
- [x] don't require ldap system packages on bare metal install/development/gh pipeline

fixes #3746
fixes #5098
fixes #3745
fixes #4464

Do you have any suggestions how to handle installs where no native ldap dependencies are available, e.g. some bare metal, development (especially on windows), gh actions, ...
What is wrong with the dependency files? Somehow it removed a few things and ci now fails.

Disable the function ;.)
You are on 3.10, the target of the CI is 3.9 so additional dependencies are needed
Not to my knowledge, we will have to polish the experience around this a lot as the defaults are lacking compared to what SSO/built-in support rn (for example group assignments, restrictions, onboarding flow)

Disable the function ;.)

That's already done, but the problem  exists on the pip install process. If the packages are added like this, the ldap system headers are needed already for the pip install step. How can I get around this and only install these ldap packages if needed, e.g. docker file, ...
How should I handle bare metal installs and the docker pipeline?

that is difficult - maybe split out this requirement in a separate file?

And how would you trigger the install e.g. on a bare metal install?

That is a bit more difficult. We currently only provide packages for ubuntu/debian so we could add a check for those operating systems and then install the required packages. Maybe this should be tackled in the packaging stage / with an additional package that specifies the required deps and ensures lockstep-updating. I have to think about this a bit - maybe try getting it running in docker and I while report back once I have a conclusion.

Ok. It already works in docker, the only problem now is where we install the python-ldap and Django-auth-ldap package so that you could decide if you want to have those packages.

If they are this small I would just ship them with docker. On a CIS level 1 hardened ubuntu 22.04 the required apt packages add 255mb of packages so bare metal might need another way

One option would be to install them via docker/requirements.txt. That way normal installs still work and also all ci stuff. For all bare metal stuff we could add a few commands to install the required packages manually to the docs like this:
apt install build-essential python3-dev libldap2-dev libsasl2-dev
# activate venv
pip install python-ldap django-auth-ldap

Is there a simple command that can be used to activate the venv on all bare metal installs, (never used the bare metal install)?
Should I document this feature somewhere in the docs, and if so at what place?

I think we shouldn't care much about dozens of different install methods, we should focus on functionality. So I think docker and these 3 lines setup instructions should be enough. What do you mean?

This would be ready for review from my POV. Test failure is unrelated (already addressed by #5244).

I think we shouldn't care much about dozens of different install methods, we should focus on functionality. So I think docker and these 3 lines setup instructions should be enough. What do you mean?

I do not support this attitude. We support 3 different install methods in 2 variants. If we do not want to support install methods they should be removed and marked as obsolete with enough headroom for users to switch.
Docker is not a serious release method with the current security posture. Nearly none of our images pass an automated security checker. So they can not be used by people with security requirements or needs.
Moving fast and breaking things works for a social media site but not for the auth layer of a system that holds business-critical information like inventory or orders.
I will look into support for this with the installer as soon as I am done with the currently pending major refactor. Support will either require changes to the installer script or the package mechanism, should be minor though.

@matmair ok, good attitude actually, you're right, this is not just any feature, its security relevant. Thank you for taking a look sometime on the bare metal implementation. I added the requested options now.

This is ready from my POV in docker, but waiting for the package installer integration.

I do not know when I will have time to figure this out for packager install. I think adding a note about that and emerging is the prudent option.

@wolflu05 can you please add a note to the docs specifying that this is not currently available in the 'installer'

@SchrodingersGat I highlighted that this is not available by default for non docker installs now. Please let me know if that is ok, or if I should remove the docs about how to configure this with a bare metal install. I didn't checked this myself with the inventree apt package installer, but I provided the commands that were necessary to set this up in the old Debian based docker image.

This will stop working with every point release of inventree as envs are reset at that point. I would just add a line that itdoes not work with the package installer.

Ok, didn't knew that, that's why I was asking. Will do later.

Is that ok so?

LGTM

Thanks @wolflu05


Write a Julia program to convert string to snakecase

Description
Write a Julia program to convert string to snakecase
Snakecase is a style of writing in which all letters are lowercase and spaces are replaced with underscores.
Input  : "hello world"
Output : "hello_world"

How to contribute

Save the solution in program/convert-string-to-snakecase.jl file
Add convert-string-to-snakecase.jl file in convert-string-to-snakecase folder

!assign


PagingMenuController.bundle: No such file or directory

For pod install i am getting following error
/Build/Products/StageDebug-iphonesimulator## /PagingMenuController/PagingMenuController.bundle: No such file or directory
Pod version : cocoapods-1.0.0.beta.6

the actual file path is /Products/StageDebug-iphonesimulator## /PagingMenuController/PagingMenuController/PagingMenuController.bundle

Can you upgrade your Cocoapods version and try it again?

Please reopen this issue if you still see with newer version of Cocoapods.

ok will check. Thanks.

@kitasuke Thank you, fixed with newer version of Cocoapods .


How to initiate multiple requests with uniform processing status

I have two requests A and B. When the page is initialized, I need to request both A and B, and then I need to request B separately.I do now, but think it's problematic.
init {
getBanner()
getArticle(0)
}
fun getBanner() = withState { state ->
    if (state.bannerRequest is Loading) return@withState

    suspend {
        api.getBanner()

    }.execute {
        copy(
            banner = it()?.data ?: emptyList(),
            bannerRequest = it
        )
    }
}

fun getArticle(page: Int) = withState { state ->
        if (state.articleRequest is Loading) return@withState

        suspend {
            api.getArticle(page)
        }.execute {
            copy(
                articles = it()?.data ?: Article(),
                articleRequest = it
            )
        }
    }

sorry my english is not good
The effect I want is something like this
 suspend {             zip(api.getBanner()， api.getArticle(page))         }.execute {             copy(                 bannerRequest= it.bannerRequest                 articleRequest = it.articleRequest              )         }

Sounds like you got it working 😄


Large working set when using .jpgs

I noticed that an app I'm working on which uses two images at 1080p had an unusually high (over 400mb) working set. So I did some experiments and found out the following data:
Baseline (Visual studio template which just creates a window) -
at 1080p: 33mb
at 4k:  78mb
195.8mb full screened 4k
154.6mb full screen (1080p)
The test file was a1.45 MB JPG file with a resolution of: (4167x4167)
Test File2: 83k file (1920x1080)
Full screen at 4k - 87 megs
TestFile 2 (again): Resized to 1.54 MB with a resolution of (4167x4167)
150mb full screen 1080p
Code was simply adding to the default template:

I was running this on a raspberry pi 3A+ with a resolution of 1080p. That means if I hit 2 'large' images the kernel kills the app.  Is there a more efficient way to display a bitmap than image? or a way to lower resources?  Or is this just the cost of the framework?
This is on .10 Preview 3

@Geektoolkit here is my reply from gitter:
@Geektoolkit we have had a long investigation into this and significant improvments will come in preview6
and when mono/SkiaSharp#1529 is merged
we beleive we will have even further reduction in memory.
btw if you display any image fullscreen its going to take way more than 1.45mb...
the 1.45 mb is just the compressed data
you have to allocate 4bytes per pixel displayed on the screen (at least)
so on a 4k display the minimum video memory to display that jpeg fullscreen is ~35mb
in preview3 im sure it will be allocating double or triple that,

@Geektoolkit if you would like to try out a nightly build:
0.10.999-cibuild0011371-beta has the relevant fixes in... would be good to get your test results on that build.
You need the feed: https://nuget.avaloniaui.net/repository/avalonia-all/index.json

I got a 500 error when trying to add that source, so I'll have to try again later.  I tried 11383 from https://www.myget.org/F/avalonia-ci/api/v2 but that ran slightly slower, and I have a feeling the 'v2' in that means a different branch, or just that I'm not getting the latest stuff. I'll have to try again when I get time

This can be closed/resolved. I'm not seeing near the working set as of Preview six...which is great!