Update custom-functions-troubleshooting.md

Docs Build status updates of commit 47f529a:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/excel/custom-functions-troubleshooting.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 1eb76ef:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/excel/custom-functions-troubleshooting.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Support passing cache expiry properties as String

Typically some users store properties in files, and load into a java properties file, and passed in to kafka client which then passes these as strings values to SchemaRegistryClient.
Currently where a setting is a number the code simply casts this to (Number) and then calls .longValue which causes a class cast issue if properties are loaded like above, and the user wishes to override.
Changing to Long.valueOf handles this nicely as will return a long still if long/int is passed in but also will parse a string to a long.

see PR: https://github.com/hortonworks/registry/pull/458


Armhf support?

Mentioning this run: https://github.com/RedstoneWizard08/bitnami-compat/actions/runs/1821189108

I'm updating bitnami minideb with support for arm64

@RedstoneWizard08 There are packages that only provide arm64 binaries. So it seems difficult to pull it right now. As you know, the minideb image does not support armhf. The way the platform is chosen as a whole is therefore difficult to agree on. It would be better to select a possible platform for each Docker image.

The ideal method seems to be to record the platforms supported by each package, and to calculate and use the platforms supported by the included packages at the time of build.

@RedstoneWizard08 There is also no armhf package in https://archive.mariadb.org/mariadb-10.6.5/repo/debian/pool/main/m/mariadb-10.6/ , http://apt.postgresql.org/pub/repos/apt/dists/buster-pgdg/15/. For now, this PR will stop many builds. Currently, there is a problem with using these packages in armhf. Nevertheless, if you want to support armhf, you should choose to support armhf selectively rather than using it for all images.

Okay.


[Doc Improvement- Update teams-apps-in-meetings]

Minor format fix

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/apps-in-teams-meetings/teams-apps-in-meetings.md
100
1
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Docs Build status updates of commit 4744aa2:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/apps-in-teams-meetings/teams-apps-in-meetings.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


[BUG] AWS DocumentDB does not work with 1.14.0 - Not found for _id: ...

Describe the bug
I noticed, that since I updated to beanie 1.14.0, my program does not work with AWS DocumentDB anymore.
This has not been a problem prior, and the same code works perfectly with 1.13.1
Additionally, the code works perfectly fine with 1.14.0 against the local MongoDB test database in version 5.0.10.
The error message is not very helpful, the requested resources can simply be not found (although they are there)
NotFound '<some_OID>' for '<class 'mongodb.model.user.odm.User'>'
not found in database 'User' with id '<some_OID>' not found in database

To verify, that the resource is there I use a tool like NoSQLBooster or Robo3T
db.user.find( {"_id" : ObjectId("<some_OID>")}  )
   .projection({})
   .sort({_id:-1})
   .limit(100)

To Reproduce
# Nothing special, just a simple find command
result = await model.find_one(model.id == oid)

Expected behavior
I expected beanie 1.14.0 to work with AWS DocumentDB the same way as 1.13.1
Additional context
I am glad to provide further information, or I can make some tests against DocumentDB if someone can give me hints what to do.

Hi,
Most likely you use Collection inner class to set up the collection name. Since 1.14 it is not supported more. Please, use Settings inner class instead.

Firstly, thanks for answering so fast, I really appreciate it!
So, if I understand you correctly, I should change the following code
class Stock(Document):
    symbol: str

    class Collection:
        name = "stock"                            # <-- This is the problem with 1.14.0?

    class Settings:
        use_state_management = True  # Be able to use 'obj_updated.save_changes()'

to something like this
class Stock(Document):
    symbol: str

#    class Collection:
#        name = "stock"                            # <-- Deprecated

    class Settings:
        name = "stock"                            # <-- Is this the correct way with 1.14.0?
        use_state_management = True  # Be able to use 'obj_updated.save_changes()'

I will give it a try.
But why does it work with MongoDB (in my local test database) and not with DocumentDB?

So, I changed my code according to your recommendation and used the Settings class as proposed as:
class Stock(Document):
    symbol: str

    class Settings:
        name = "stock"
        use_state_management = True

I can confirm, that it works now with v1.15.0 and DocumentDB.
I greatly appreciate your help!
And thanks for this wonderful library!

Nice!
It was working for the local db bc you inserted documents there using the same config (which was ignored and used the default collection name instead). While in the DocumentDB you already created docs in the collection with the specified name.

It was working for the local db bc you inserted documents there using the same config (which was ignored and used the default collection name instead). While in the DocumentDB you already created docs in the collection with the specified name.

Hm, ok, I see. This would work in the test scenario, when the database was freshly built, so the table name would be "Stock" (capital S) instead of (stock). Is that what you mean?
That might explain the CI/CD build success with the local db. But it also worked with my local dev db, which has already been created before (including tables and data) with the old settings (that means lower case letters for tables like "stock").
I mean, I do not think it is necessary to put much thought in here right now because it works now with the new and recommended settings.
It's just my observation, that might be interesting for future matters.

Hm, then it is weird.
Anyway, I'll add the warning message to the next few versions in case the Collection inner class was used to be sure I did everything I could :)

Hm, then it is weird. Anyway, I'll add the warning message to the next few versions in case the Collection inner class was used to be sure I did everything I could :)

Awesome! I mean, ultimately, it was my fault not reading the release notes.
And having just written
# requirements.txt
beanie

without version (and thus automatically fetch the latest version in CI/CD) was also not helpful in my case ;)


Feature/ts

We will keep feature/ts branch and re-open pull request when we have enough resources to complete this work.


Write FFMPEG Library Bindings for IFrame Extraction of Video Files

We need to extract IFRAMES from Video files for scanning. This should be done by using FFMPEG and Interop (Application Pipes) between Pamaxie and the FFmpeg process. If anyone requires help doing that feel free to reach out to me I will provide support along the way. This is a separate library and should be implemented as such (please put the library into Assemblies with all other libs). FFMPEG needs to be delivered during install as well.

https://stackoverflow.com/questions/45899585/pipe-input-in-to-ffmpeg-stdin This is relevant for Application piping (didn't look into if this makes sense or not)

https://github.com/deamonicnet/Pamaxie.FFmpeg We added a fork to FFmpeg for us to make sure the one that is delivered with systems does not cause stability issues.

For now we'll solve this in the future.


Register local IP address as the host in routes config

I need to be able to make a request to the host with yarp running with its local ip address.
Like http://<ip address of the host>/
How can I match it from the config?
I've tried something like this:
  "ReverseProxy": {
    "Routes": [
      {
        "RouteId": "route1",
        "ClusterId": "cluster1",
        "Match": {
          "Hosts": [
            "localhost",
            "<IP_ADDRESS>",
            "<IP_ADDRESS>"
          ]
  }

But it doesn't work

To clarify, what is the public url you want and what is the destination address? Something like this?
Client -> http://localhost -> YARP -> http://{destinationIP} -> destination
Inbound ports are configured through kestrel and then you use routes to decide what to forward.
{
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://localhost:5000"
      },
  },
  "ReverseProxy": {
    "Routes": [
      {
        "RouteId": "route1",
        "ClusterId": "cluster1",
        "Match": {
          "Hosts": [
            "localhost"
          ]
      }
     "Clusters" ....
  }
}

This needs to be made clear in the YARP documentation.

@Tratcher Not exactly
Like this: Client -> http://{yarpIP} -> YARP -> http://{destinationIP} -> destination

And the problem is how to specify that yarpIP in the Hosts array.

The scenario: YARP here is just a node in a bigger cluster with another load balancer and that load balancer healthchecks its nodes by IPs.

The Hosts array is optional, if you just want to forward all requests you can do it like this:
    "Routes": [
      {
        "RouteId": "route1",
        "ClusterId": "cluster1",
        "Match": {
          "Path": "/{**catch-all}"
         }
      }

Never thought of that! Thanks!

Triage: Answered above.


README section on fatal errors is inaccurate

The README gives this example on fatal errors, which I was trying to use to test generating a fatal error for an issue I'm having:
var connection = require('mysql').createConnection({
  port: 84943, // WRONG PORT
});

connection.connect(function(err) {
  console.log(err.code); // 'ECONNREFUSED'
  console.log(err.fatal); // true
});

connection.query('SELECT 1', function (error, results, fields) {
  console.log(error.code); // 'ECONNREFUSED'
  console.log(error.fatal); // true
});

However the code to log err.code is never reached:
$ node .
internal/validators.js:217
    throw new ERR_SOCKET_BAD_PORT(name, port, allowZero);
    ^

RangeError [ERR_SOCKET_BAD_PORT]: Port should be >= 0 and < 65536. Received 84943.
    at validatePort (internal/validators.js:217:11)
    at lookupAndConnect (net.js:1002:5)
    at Socket.connect (net.js:978:5)
    at Object.connect (net.js:189:17)
    at Connection.connect (node_modules/mysql/lib/Connection.js:76:13)
    at Object.<anonymous> (app.js:7:12)
    at Module._compile (internal/modules/cjs/loader.js:1072:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
    at Module.load (internal/modules/cjs/loader.js:937:32)
    at Function.Module._load (internal/modules/cjs/loader.js:778:12) {
  code: 'ERR_SOCKET_BAD_PORT'
}

Not only that, but the error that is thrown does not have err.fatal set. Using this code:
var connection = require('mysql').createConnection({
  port: 84943, // WRONG PORT
});

try {
  connection.connect(function (err) {
    if (err) {
      console.error('error: ' + err.stack);
    }
  });
} catch (err) {
  console.log('err.code=', err.code);
  console.log('err.fatal=', err.fatal);
}

I get this output:
$ node .
err.code= ERR_SOCKET_BAD_PORT
err.fatal=

Maybe it would be better to use a different example? Thanks!

It looks like Node.js changed how it handles bad ports like that, which is why the example is not working with the current Node.js . It should still work, so it may just be a bug in the module now and not an issue with the docs.

Would you happen to have another suggestion as to how I can reproduce a fatal error?
For a little bit of background, I'm indirectly using this library via loopback-connector-mysql. Admittedly without a full understanding of either library, I believe what's happening is the pool connections are encountering a fatal error, and since that library doesn't seem to have any provisions for dealing with fatal errors, those connections do not get reused, and then of course the pool becomes unusable because it's full of dead connections:
Error: Cannot enqueue Query after fatal error.
    at Protocol._validateEnqueue (/usr/src/app/node_modules/mysql/lib/protocol/Protocol.js:212:16)
    at Protocol._enqueue (/usr/src/app/node_modules/mysql/lib/protocol/Protocol.js:138:13)
    at PoolConnection.query (/usr/src/app/node_modules/mysql/lib/Connection.js:198:25)
    at runQuery (/usr/src/app/node_modules/loopback-connector-mysql/lib/mysql.js:197:16)

This becomes a problem because then the application completely hangs. I would even prefer that the application crashed, because at least that way Kubernetes could restart the pod.
More specifically, this seems to be the error that's causing the above error, so I am trying to figure out how to reproduce it; if I can manage that, I should be able to file a bug with loopback-connector-mysql:
Error: read ETIMEDOUT
    at TCP.onStreamRead (internal/stream_base_commons.js:209:20)
    at TCP.callbackTrampoline (internal/async_hooks.js:126:14)
    --------------------
    at Protocol._enqueue (/usr/src/app/node_modules/mysql/lib/protocol/Protocol.js:144:48)
    at PoolConnection.query (/usr/src/app/node_modules/mysql/lib/Connection.js:198:25)
    at runQuery (/usr/src/app/node_modules/loopback-connector-mysql/lib/mysql.js:197:16)

I've been going through the suggestions here on how to reproduce a timeout error: https://stackoverflow.com/q/100841/399105
e.g.
nc -l 3306

(https://stackoverflow.com/a/37465639/399105)
But rather than hit that error, I get this one:
Error: Handshake inactivity timeout
    at Handshake.<anonymous> (/home/bmaupin/workspace/work/netcmdb-api/node_modules/mysql/lib/protocol/Protocol.js:160:17)
    at Handshake.emit (events.js:400:28)
    at Handshake._onTimeout (/home/bmaupin/workspace/work/netcmdb-api/node_modules/mysql/lib/protocol/sequences/Sequence.js:124:8)
    at Timer._onTimeout (/home/bmaupin/workspace/work/netcmdb-api/node_modules/mysql/lib/protocol/Timer.js:32:23)
    at listOnTimeout (internal/timers.js:557:17)
    at processTimers (internal/timers.js:500:7)
    --------------------
    at Protocol._enqueue (/home/bmaupin/workspace/work/netcmdb-api/node_modules/mysql/lib/protocol/Protocol.js:144:48)
    at Protocol.handshake (/home/bmaupin/workspace/work/netcmdb-api/node_modules/mysql/lib/protocol/Protocol.js:51:23)
    at PoolConnection.connect (/home/bmaupin/workspace/work/netcmdb-api/node_modules/mysql/lib/Connection.js:116:18)
    at Pool.getConnection (/home/bmaupin/workspace/work/netcmdb-api/node_modules/mysql/lib/Pool.js:48:16)

I'm not sure what the difference is; maybe Handshake inactivity timeout isn't a fatal error, so the pool is able to terminate the connection and create a new one? At any rate, it doesn't trigger the Error: Cannot enqueue Query after fatal error. that I'm trying to reproduce in order to file the bug.
Thanks!

Hmm, I think my hunch was wrong. I called some long-running queries and killed the database while they were running. Using this I was able to determine that the connection received fatal errors:
connection.on("error", function (err) {
  console.log("DEBUG: err.code=", err.code);
  console.log("DEBUG: err.fatal=", err.fatal);
});

Object.keys(txError)= [ 'fatal', 'code' ]
txError.fatal= true
2021-09-17T14:38:47.223Z [netcmdb-api] error undefined - Error: Connection lost: The server closed the connection.
    at Protocol.end (node_modules/mysql/lib/protocol/Protocol.js:112:13)
    at Socket.<anonymous> (node_modules/mysql/lib/Connection.js:94:28)
    at Socket.<anonymous> (node_modules/mysql/lib/Connection.js:526:10)
    at Socket.emit (events.js:412:35)
    at endReadableNT (internal/streams/readable.js:1317:12)
    at processTicksAndRejections (internal/process/task_queues.js:82:21)
    --------------------
    at Protocol._enqueue (node_modules/mysql/lib/protocol/Protocol.js:144:48)

Once I restarted the database, everything worked fine again.
So while I understood this to mean that a connection couldn't be added to the queue after a fatal error without some extra work, I must've misunderstood: Cannot enqueue Query after fatal error.
So I still don't understand the original issue I ran into, more specifically why the application needed to be restarted to connect to the database. There must be some kind of special scenario where a database connection fails in a way that it can't recover from. So maybe this is an issue with this library after all? I guess I'll open a separate bug for it.

I updated the README to use a commonly blocked port instead of an invalid port, which addresses your main issue. I will also follow up with a fix to forward thrown errors from Node.js connect to the callback as well.


Why does MicrosoftDocs require GitHub "Resources" permissions?

Hello,
This is not related to visualstudio-docs per-se but I didn't find an appropriate or better place for this, so hopefully someone can help and/or answer here. It is related to the VS docs after all (which I've been browsing).
The new docs commenting system is awesome, but why does it require the GitHub permission "Resources: Determine what resources both you and docs.microsoft.com can access"? I tried to find information about it on GitHub and information is scarce but it seems this allows reading what repos (public and private) and organisations a user has access to. This seems very excessive to me and a permission that I'd not like to give to Microsoft by default, just for commenting on their docs.
Am I misunderstanding something?
Thanks!

@jdanyow are you the appropriate person to address this concern? If not can you tag the correct person? Thanks!

Sure, I can provide more info on this.
During the oauth flow, GitHub will display an authorization page that looks something like this:

docs.microsoft.com by MicrosoftDocs
would like access to:
Your Account
Verify your GitHub account
Resources
Determine what resources both you and docs.microsoft.com can access
Actions
Enable you to trigger actions on GitHub from within docs.microsoft.com

I believe the question here is what does "determine what resources both you and docs.microsoft.com can access" mean?  First some info on our app...
GitHub has two types of apps: "OAuth Apps" and "GitHub Apps".  docs.microsoft.com uses the second kind, a "GitHub App".  These types of apps cannot act on repos where they are not installed. They also  have more granular permission scheme than OAuth Apps. Here's the page where you would configure the permissions: https://github.com/settings/apps/new. We've installed our app on the MicrosoftDocs and Azure GitHub organizations and configured the app with read/write permissions on issues only.
Ultimately the permissions the authorization will grant our app is the intersection of your personal permissions and our GitHub App's permissions. This means we'll only be able to read/write issues on repos in the MicrosoftDocs and Azure orgs via the docs.microsoft.com app.
Hope this helps!  More reading here if you'd like:

https://developer.github.com/apps/building-github-apps/authentication-options-for-github-apps/
https://developer.github.com/apps/differences-between-apps/#what-can-github-apps-and-oauth-apps-access

cc @tysonn @ShevaDas @DuncanmaMSFT @adkinn ^^^

@jdanyow Okay, cool! Thank you very much for this explanation.
If I understand correctly, the important part is:

Determine what resources both you and docs.microsoft.com can access

Ultimately the permissions the authorization will grant our app is the intersection of your personal permissions and our GitHub App's permissions

So this is an "and" in the literal sense. That sounds great and nothing to worry about. :-)
It's a bit of a shame that GitHub doesn't make this more clear. Now that I know, I understand, but I am pretty sure that few people will really understand when they're clicking to give their permission.
Thank you!


rosnode list to arch.yml

Currently in ROSdiscover we process the set of launch files. One other way to do this would be to inspect a running system. This would give us a kind of "ground truth" about the architecture that is actually present, and may help to uncover bugs/unimplemented parts of ROSdiscover. The idea would be to:

Run a robot in simulation
Through roswire or the command line use rosnode -list to get the information about components/topics/services and produce a file similar to what rosdiscover does with the launch --output arch.yml option
Write new code that takes this file and produces the NodeSummary datastructure to feed into architecture construction.

So, the feature would be two parts:

Code to list the nodes and topics/services in them to a YML file that is the same format as arch.yml above
Code to ingest arch.yml and produce the architecture, bypassing the launch file processing that is currently done.

Actually, but rosnode -list, what I mean is something that does:
nodes = rosnode list
foreach node in node:
  pubs, subs, provides, params = rosnode info node

Essentially, we want this information to generate something like:
- action-clients: []
  action-servers: []
  filename: /opt/ros/melodic/share/gazebo_ros/launch/empty_world.launch
  fullname: /gazebo_gui
  kind: gzclient
  name: gazebo_gui
  namespace: /
  nodelet: false
  package: gazebo_ros
  placeholder: true
  provides: []
  pubs: []
  reads: []
  subs: []
  uses: []
  writes: []

for each running node.

As discussed earlier, we should probably use ROSWire for this task. We should be able to get most of this information using the ROSWire API. If there's anything that we can't get, then that's likely missing functionality in ROSWire that should be added.
We can use ROSWire to bring up a Docker container for a given system, and then use ROSWire's API to collect much of this information. (Internally, ROSDiscover already uses ROSWire to collect information about message types and to parse Launch XML files.)
Documentation for ROSWire can be found here: https://www.christimperley.co.uk/roswire/
Since ROSWire is relatively big, it's likely that some useful information may not be included in the documentation. If that's the case, then don't hesitate to let me know and I'll patch it up.


testOnly runs all test

I have two test classes in the src/it/scala/com/mycompany/myapp/ directory. Let's say the classes are TestA and TestB. When I run sbt gatling-it:testOnly com.mycompany.myapp.TestB, both tests are run. I'd expect only TestB to be run in this example.

Which version of sbt do you use? Works fine with sbt 0.13.16 for me.
If you can only reproduce with sbt 1.0, I suggest opening an issue against sbt.

I'm using SBT 0.13.15

Then please upgrade to 0.13.16 and provide a reproducer.

I have installed SBT 0.13.16 and the problem still exists. I have created a minimal project to reproduce the problem, please see https://github.com/bartkummel/reproduceGatlingProblem for details.

I'd say you're not using sbt properly.
If you want to directly launch sbt and pass a full command as a parameter, you have to wrap it with double quotes: sbt "gatling-it:testOnly com.mycompany.myapp.TestB".
Or go in interactive mode:
sbt
> gatling-it:testOnly com.mycompany.myapp.TestB

I guess you're right. That's a nasty problem in SBT then. I'd say testOnly should throw an error when it doesn't get an argument. But that's not of your concern of course. ;) Thanks for helping me out!

That's a nasty problem in SBT then.

Frankly, I'm not versed enough in the sbt arcanes to have an opinion on this :)
There's probably a good reason for this.
Could be an interesting question for the sbt mailing list or SoF then.

have this problem with jenkins sbr-plugin now. sbt version 1.2.8


Give mobile app registration sensors etc. a proper name

Register 3 devices currently (at least 0.102.3).
Gives sensors as:
sensor.battery_level
sensor.battery_level_2
sensor.battery_level_3

Proposed:
sensor.device-name.battery_level
sensor.device-name.battery_level
sensor.device-name.battery_level

Normally this device name could be the host name of the phone, yet, I was surprised to see that updating to iOS 13 (at least for some) reset the hostname to Iphone which obviously does not help in distinguishing.
Using the username probably is not a good idea as it is not telling for which device it is.
Maybe the app can detect when the host name is Iphone and then urge the user to manually enter a unique device name.

This isn't a bug. For feature proposals, please use the HASS Community Forum.


New package: AwsC v1.0.0

Registering package: AwsC
Repository: https://github.com/JuliaServices/AwsC.jl
Created by: @quinnj
Version: v1.0.0
Commit: 5aedad30ba06f8349c4e8b580a6a19824e5af8bc
Reviewed by: @quinnj
Reference: https://github.com/JuliaServices/AwsC.jl/commit/5aedad30ba06f8349c4e8b580a6a19824e5af8bc#commitcomment-139133199

Maybe AWSCCommon?

Hmmmm......I really like how short and sweet it is. Maybe AwsCommon. I have a couple of packages coming like AwsIO, AwsHTTP, etc. Doing all caps AWS just feels like way too many caps for some of these names.

"Short" tends to be a quite problematic for Julia packages, and especially if you have to name a set of packages with a common prefix. So I would not make that a goal. In principle, AWS is also an acronym, so it would actually be better if it stays in caps. To avoid the "too many caps", I would consider a naming scheme like AWSToolsIO, AWSToolsHTTP, and then maybe AWSToolsC for this package. (Maybe there's a better word than "Tools", but you get the idea)

Although given your track record, I'm going to give you some leeway ;-)
If you really want AwsC, there's probably someone who can merge it.

Sorry I forgot about this. Let's ping @fredrikekre, @StefanKarpinski, @KristofferC, and @Octogonapus to get their opinions. Namely, I have a suite of packages I'd like to register, mirroring the aws-c-X set of C libraries (https://docs.aws.amazon.com/sdkref/latest/guide/common-runtime.html). Doing AWSCommon, AWSIO, AWSHTTP, AWSS3 all feel excessively capitalized, so I think my preference is to do AwsC, AwsIO, AwsHTTP, AwsS3. These aren't meant to necessarily be widely used public packages, but more as building blocks for higher-level interfaces (like replacing the internals of HTTP w/ AwsHTTP).

(also thanks for the quick review/feedback @goerz!)

Doing AWSCommon, AWSIO, AWSHTTP, AWSS3 all feel excessively capitalized, so I think my preference is to do AwsC, AwsIO, AwsHTTP, AwsS3.

I think it is not clear, especially for AwsS3, that these package names refer to generated C bindings and a little filler, and not something higher level. I'd want to adopt a naming scheme like AwsCrt* e.g. AwsCrtS3, AwsCrtIO, etc. Also I agree with the AwsCrt* scheme instead of the AwsC* scheme because some of the CRT packages do not have -c- in their names, e.g. aws-lc which could be registered as AwsCrtLC.
This package also mixes high and low level functionality. Some decisions are made for the user, like in this init function, which makes these packages less composable. For example, my AWSCRT work would not compose well with this package. It would be better if you registered the generated bindings as separate LibAwsCrt* packages (containing only bindings).

@Octogonapus and I have come up w/ a new plan outlined in this slack thread where we'll implement LibAwsCommon, LibAwsIO, LibAwsHTTP etc libraries.
This PR can be closed.

Replying late, but LibAws prefix is a good approach 👍🏻


Integration fails to load due to protobuf version

I just updated to v1.0.10 and rebooted. But the integration is not loading due to the fact that my HA version 2024.10.4 has an older protobuf version. Here's what I see in the logs:
Setup failed for custom integration 'lucidmotors': Requirements for lucidmotors not found: ['lucidmotors==1.1.9'].

Unable to install package lucidmotors==1.1.9: × No solution found when resolving dependencies: ╰─▶ Because lucidmotors==1.1.9 depends on protobuf>=5.28.3,<6.0.0 and protobuf==4.25.4, we can conclude that lucidmotors==1.1.9 cannot be used. And because you require lucidmotors==1.1.9, we can conclude that your requirements are unsatisfiable.

Looks like this is happening due to this commit aab9db0 in the python-lucidmotors repo, but since it's affecting the HA integration I'm reporting it here.
I'm going to take a look at what version of protobuf is included with HA 2024.11.2. If it's new enough I'll try updating to make this problem go away.

HA 2024.11 has protobuf version 5.28.2. Updating to 2024.11.2 fixed the problem, so I'm closing this issue.


Options values notation with "::" doesn't seem to work.

When I use the '::' to point to an option value, the compiler doesn't seem to know this anymore (worked in previous release).

You see the red line .. it gives me this output:

I have this for all options in my app:

Ok, nevermind .. I restarted VScode and now it works ..


[VTA][Relay] Relay Compilation + AutoTVM compatible operator libraries for VTA

Currently a WIP PR. The goal here is to bring AutoTVM-compatible TOPI operators to VTA so we can leverage the autotuner to quickly search good schedules, instead of using the old scheduler that was ad-hoc and bug-prone.
Added the conv2d operator, but will be adding group_conv2d (for mobilenets variants), conv2d_transpose (for DCGAN), and dense for MLPs/RNNs.
Credit for most of the AutoTVM support goes to @merrymercy; relay bitpacking to @jroesch and @MarisaKirisame who helped build the first prototype for Relay to VTA compilation.
EDIT: this PR has grown to include front-end support with Relay of VTA. Support for quantization, graph packing, and topi operator support are now grouped in this rather sizeable PR. In terms of operator coverage, group_conv2d and conv2d_transpose will be added in later PRs.

Extending the scope of this PR: in addition to AutoTVM support of VTA TOPI operators, we are working on making Relay to VTA compilation work on off-the-shelf Gluon models.

@merrymercy @eqy some changes have been made to autotvm to support VTA
@jroesch @ZihengJiang changes have also been applied to the quantization pass to support VTA
Please review

Currently some CI tests fail due to missing packages on the CI machine. Following up with @tqchen to get that resolved.

Please move autotvm_task_extraction.py to tutorials and remove resnet from the integeration test(as that is also part of the tutorials.
Tutorials will get automatically built and tested in the docs stage, and the CI env in the docs stage has the necessary dependencies

@tqchen I've added a tutorial on AutoTVM for VTA

@merrymercy can you take a look at the AutoTVM part of the change

@jroesch @ZihengJiang please review

@tqchen @merrymercy your comments have been addressed

@tqchen @vinx13 @merrymercy please let me know if there are other changes that you'd like to request

@tqchen let me know if I've addressed the changes you requested

Thanks, @merrymercy @vinx13 @ZihengJiang @tmoreau89 , this PR is now merged


Add long-read support

Improvement Description
Add long-read support
Current Behavior
We've added support for PacBio long-read amplicon sequencing to the devel version of the R package and it seems to work quite well. Preprint: High-throughput amplicon sequencing of the full-length 16S rRNA gene with single-nucleotide resolution.
Proposed Behavior
I think it will make sense to add this as a tech-specific denoise-pacbio command in the plugin. This is similar to the denoise-pyro approach already in the plugin, with the purpose of having a dedicated command being to automatically turn on the right flags and options for PacBio data rather than relying on the user to do so. There is a downside in the repetition of much of the code between the different denoise-[technology] commands.
References

Preprint: High-throughput amplicon sequencing of the full-length 16S rRNA gene with single-nucleotide resolution.

This won't be in the 2019Q2 update. Tentatively targeting this for end-of-year 2019.

What's the current status? People love those long reads! 🧬

Waiting on the R package 1.12 to propagate through bioconda to Q2, as that made some important long read improvements.

IMO, this is the next bit of functionality I'd really like to propagate through to the plugin.
First step would be to upgrade Q2 to the 1.14 version of the package or later. Then, it will be pretty straightforward to add a denoise-pacbio command that basically uses denoise_single/_denoise_single just like denoise-pyro does to avoid much repetition.
Also consider adding denoise-loop in similar fashion (for Loop Genomics tech).

Are we ready to try to do this? It looks like we're still on bioconductor-dada2 version 1.10.0

Can't add this functionality until Q2's version bioconductor-dada2 is upgraded to 1.14 or later.
Versions up to 1.16 are already available through bioconda: https://bioconda.github.io/recipes/bioconductor-dada2/README.html

I finished installing qiime2 recently, and DADA2 is still 1.10.
When are the upgrades planned to incorporate PacBio Long Reads?
@benjjneb Would you suggest upgrading the installed version and modifying the existing script (for Pyro or single ends) to incorporate PacBio specific error profiles?

@harish0201 DADA2 1.10 is an excellent release of DADA2 that hold up to this day. That said, yes it is missing some features needed for long-read amplicon sequencing.
I don't know when the Q2 DADA2 version will be updated.
Until then, on could modify the the script in place on a Q2 install to achieve something like PacBio long-read processing, but I couldn't in good faith recommend that. Can you do the initial data processing in R, and then import into Q2? That would probably be a better idea at this ponit in time.

Thanks for the idea! I'm planning to do the same, but I had a doubt.
I'll have to run dada2 till bimera removal and taxon assignments? Once that
is done, can I export the outcome in a biom format? Or should I go towards
phyloseq and get it done?
On Tue, Oct 20, 2020, 22:51 Benjamin Callahan<EMAIL_ADDRESS>wrote:

@harish0201 https://github.com/harish0201 DADA2 1.10 is an excellent
release of DADA2 that hold up to this day. That said, yes it is missing
some features needed for long-read amplicon sequencing.
I don't know when the Q2 DADA2 version will be updated.
Until then, on could modify the the script in place on a Q2 install to
achieve something like PacBio long-read processing, but I couldn't in good
faith recommend that. Can you do the initial data processing in R, and then
import into Q2? That would probably be a better idea at this ponit in time.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/qiime2/q2-dada2/issues/101#issuecomment-713016666,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACFMFNYTTL2ERYTPRIVYG6TSLXBIBANCNFSM4FWL3CWA
.

I'll have to run dada2 till bimera removal and taxon assignments?

Or even just until chimera removal if you want to go back to QIIME2 and use one of their taxonomy tools.

can I export the outcome in a biom format?

I think so, but I suspect there is a straightforward guide for moving data to/from R and QIIME2 already out there somewhere. Might want to search the QIIME2 forum, I think something like that has been posted there before.

Or should I go towards phyloseq and get it done?

You can also do downstream analysis in R/phyloseq if you are more comfortable with that route. But I don't think moving data between R/Q2 will be that hard assuming that guide can be found.

@harish0201 DADA2 1.10 is an excellent release of DADA2 that hold up to this day. That said, yes it is missing some features needed for long-read amplicon sequencing.
I don't know when the Q2 DADA2 version will be updated.
Until then, on could modify the the script in place on a Q2 install to achieve something like PacBio long-read processing, but I couldn't in good faith recommend that. Can you do the initial data processing in R, and then import into Q2? That would probably be a better idea at this ponit in time.

I think I have implemented the method denoise-pacbio (I named it as denoise-ccs since pacbio also has a CLR mode) in current qiime2-2020.8 and bioconductor-dada2=1.10.1. The modified python and R script are in my repo sixvable/q2-dada2-CCS.
But the behavior is a little bit different between the qiime2 version and the R version in filterAndTrim step.
I select Zymo dataset in your paper, remove primers with R code and get the same result.
Then I compare the filterAndTrim result between the original R version and the qiime2 version. While the R code give the same result compared to your rmarkdown result (73057 to 69369) even in different paltform(Linux and Windows), the same parameters in qiime2 version gives a different result(73057 to 72940).
$qiime dada2 denoise-ccs --i-demultiplexed-seqs rawdata/demux.qza --p-trunc-len 0 --p-min-len 1000 --p-max-len 1600  --p-n-threads 0 --output-dir dada_ccs --verbose
Running external command line application(s). This may print messages to stdout and/or stderr.
The command(s) being run are below. These commands cannot be manually re-run as they will depend on temporary files that no longer exist.

Command: run_dada_single.R /tmp/qiime2-archive-_kly5rep/b8cfafb4-4836-4ef3-a4ee-d9a7a592fb3e/data /tmp/tmphc5igyje/output.tsv.biom /tmp/tmphc5igyje/track.tsv /tmp/tmphc5igyje 0 0 2.0 2 1600 independent consensus 3.5 0 1000000 NULL 32 1000

R version 3.5.1 (2018-07-02)
Loading required package: Rcpp
DADA2: 1.10.1 / Rcpp: 1.0.5 / RcppParallel: 5.0.2
1) Filtering .
2) Learning Error Rates
107576595 total bases in 72940 reads from 1 samples will be used for learning the error rates.
3) Denoise samples .
4) Remove chimeras (method = consensus)
5) Report read numbers through the pipeline
6) Write output

I have already change the R package into same version:
dada2=1.10.1 Rcpp 1.0.5 RcppParallel 5.0.2
I am not sure why those two ways behave different.

@sixvable Interesting! Will evaluate and get to you!

@sixvable Great work!

Then I compare the filterAndTrim result between the original R version and the qiime2 version. While the R code give the same result compared to your rmarkdown result (73057 to 69369) even in different paltform(Linux and Windows), the same parameters in qiime2 version gives a different result(73057 to 72940).

I'll note that the Zymo processing in the paper was done on DADA2 version 1.12.1, not 1.10.
Are you seeing different results between running the Q2 version and in R when both are fixed to the same version (1.10)?

@sixvable Great work!

Then I compare the filterAndTrim result between the original R version and the qiime2 version. While the R code give the same result compared to your rmarkdown result (73057 to 69369) even in different paltform(Linux and Windows), the same parameters in qiime2 version gives a different result(73057 to 72940).

I'll note that the Zymo processing in the paper was done on DADA2 version 1.12.1, not 1.10.
Are you seeing different results between running the Q2 version and in R when both are fixed to the same version (1.10)?

Test the R code version at 1.10.1,1.12.1 and 1.16.1 at both linux and windows. Always got the same result! I do not think it is because of the dada2 version. Could you try the qiime2 version?

My guess (also from my own experience) is that the discrepancy then is caused by a mismatch in how arguments are passed from the Q2 call into the R script. Unforunately because the R script depends entirely on positional arguments, it is more susceptible to difficult to recognize errors at that step.
Is it possible to have the Rscript echo out the exact arguments it is using in the filterAndTrim call, and then investigate if there are any differences between that output when running via R, and then when running via the Q2 python interface?

Is it possible to have the Rscript echo out the exact arguments it is using in the filterAndTrim call, and then investigate if there are any differences between that output when running via R, and then when running via the Q2 python interface?

Sorry , that is beyond my code ability. Have no idea to implement that.

I think adding the following code directly before the filterAndTrim call should do the trick:
filt.args <- c("unfilts", "filts", "truncLen", "trimLeft", "maxEE", "truncQ", "multithread", "minLen", "maxLen")
for(varName in filt.args) {
  cat(varName, "=", get(varName), "\n")
}

I think adding the following code directly before the filterAndTrim call should do the trick:
filt.args <- c("unfilts", "filts", "truncLen", "trimLeft", "maxEE", "truncQ", "multithread", "minLen", "maxLen")
for(varName in filt.args) {
  cat(varName, "=", get(varName), "\n")
}

I find a mistake in _denoise.py that I actually do not use the run_dada_ccs.R I created, but the old run_dada_single.R. That is why the result is not the same with R code  version.
I have fixed it. The result is same with R code version now. Check my repo sixvable/q2-dada2-CCS. It should work well.
I guess we just wait for a new version of bioconductor-dada2 in qiime2 and add a qiime dada2 removePrimerCCS I guess.
Any way, thank you @benjjneb for patiently answer my questions!

It looks like dada2 1.18 has been incorporated into the latest Q2 branch. fb5b7ff617f2aa5950649fd3e0de8b839c6c36ab
Pending busywork updates to make sure it is passing, this would now enable straightforward implementation of an official denoise_pacbio workflow.

I think q2-demux summarize also need to be updated to accommodate the high quality values of Pacbio CCS.
Danger: Some of the forward PHRED quality values are out of range. This is likely because an incorrect PHRED offset was chosen on import of your raw data. You can learn how to choose your PHRED offset during import in the importing tutorial.

the high quality values of Pacbio CCS

Does Pacbio CCS use something different than PHRED 33 for encoding quality scores? Can you provide some links or other information?

Does Pacbio CCS use something different than PHRED 33 for encoding quality scores? Can you provide some links or other information?

Pacbio CCS use the same PHRED 33 but normally with higher Q value than illumina (most of the CCS sequences base quality ascii character is ~ as 92 for q-value). The Quality Plot in q2-demux summarize only shows base q-value less than 45 I assume. Therefore most of the CCS base have no boxplot bar.
Check this qzv
demux.qzv.zip

Pacbio CCS use the same PHRED 33 but normally with higher Q value than illumina (most of the CCS sequences base quality ascii character is ~ as 92 for q-value).

This is the key difference -- much, much higher Q scores in the fastqs produced by PacBio CCS basecaller than in other technologies.

I think adding the following code directly before the filterAndTrim call should do the trick:
filt.args <- c("unfilts", "filts", "truncLen", "trimLeft", "maxEE", "truncQ", "multithread", "minLen", "maxLen")
for(varName in filt.args) {
  cat(varName, "=", get(varName), "\n")
}

I find a mistake in _denoise.py that I actually do not use the run_dada_ccs.R I created, but the old run_dada_single.R. That is why the result is not the same with R code version.
I have fixed it. The result is same with R code version now. Check my repo sixvable/q2-dada2-CCS. It should work well.
Any way, thank you @benjjneb for patiently answering my questions!

Hello @sixvable! Thank you so much for your efforts on making this new function! I've followed the instruction on your GitHub page, and run my data with the following commands. However, it is stuck at "An error was encountered while running DADA2 in R (return code 127)". Detailed information of the error are attached below. Do you have any ideas about which part went wrong? Any help from you will be greatly appreciated!
--i-demultiplexed-seqs single-end-demux34.qza --p-front AGRGTTTGATCMTGGCTCAG --p-adapter GGGTTACCTTGTTACGACTT --p-trunc-len 0 --p-min-len 1000 --p-max-len 1600 --p-n-threads 0 --output-dir dada_ccs --verbose
Running external command line application(s). This may print messages to stdout and/or stderr.
The command(s) being run are below. These commands cannot be manually re-run as they will depend on temporary files that no longer exist.
Command: run_dada_ccs.R /var/folders/xb/yclwjhdn4b93p249x541cg3c0000gn/T/qiime2-archive-w7ksn8h7/2c82a2ca-8402-46d1-8fb7-e0cfc427a21b/data /var/folders/xb/yclwjhdn4b93p249x541cg3c0000gn/T/tmpuyh28ely/output.tsv.biom /var/folders/xb/yclwjhdn4b93p249x541cg3c0000gn/T/tmpuyh28ely/track.tsv /var/folders/xb/yclwjhdn4b93p249x541cg3c0000gn/T/tmpuyh28ely/nop /var/folders/xb/yclwjhdn4b93p249x541cg3c0000gn/T/tmpuyh28ely/filt AGRGTTTGATCMTGGCTCAG GGGTTACCTTGTTACGACTT 2 False 0 0 2.0 2 1000 1600 independent consensus 3.5 0 1000000
env: Rscript\r: No such file or directory
Traceback (most recent call last):
File "/Users/yidagao/miniconda3/envs/qiime2-2021.2/lib/python3.6/site-packages/q2_dada2/_denoise.py", line 534, in denoise_ccs
run_commands([cmd])
File "/Users/yidagao/miniconda3/envs/qiime2-2021.2/lib/python3.6/site-packages/q2_dada2/_denoise.py", line 42, in run_commands
subprocess.run(cmd, check=True)
File "/Users/yidagao/miniconda3/envs/qiime2-2021.2/lib/python3.6/subprocess.py", line 438, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['run_dada_ccs.R', '/var/folders/xb/yclwjhdn4b93p249x541cg3c0000gn/T/qiime2-archive-w7ksn8h7/2c82a2ca-8402-46d1-8fb7-e0cfc427a21b/data', '/var/folders/xb/yclwjhdn4b93p249x541cg3c0000gn/T/tmpuyh28ely/output.tsv.biom', '/var/folders/xb/yclwjhdn4b93p249x541cg3c0000gn/T/tmpuyh28ely/track.tsv', '/var/folders/xb/yclwjhdn4b93p249x541cg3c0000gn/T/tmpuyh28ely/nop', '/var/folders/xb/yclwjhdn4b93p249x541cg3c0000gn/T/tmpuyh28ely/filt', 'AGRGTTTGATCMTGGCTCAG', 'GGGTTACCTTGTTACGACTT', '2', 'False', '0', '0', '2.0', '2', '1000', '1600', 'independent', 'consensus', '3.5', '0', '1000000']' returned non-zero exit status 127.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/yidagao/miniconda3/envs/qiime2-2021.2/lib/python3.6/site-packages/q2cli/commands.py", line 329, in call
results = action(**arguments)
File "", line 2, in denoise_ccs
File "/Users/yidagao/miniconda3/envs/qiime2-2021.2/lib/python3.6/site-packages/qiime2/sdk/action.py", line 245, in bound_callable
output_types, provenance)
File "/Users/yidagao/miniconda3/envs/qiime2-2021.2/lib/python3.6/site-packages/qiime2/sdk/action.py", line 390, in callable_executor
output_views = self._callable(**view_args)
File "/Users/yidagao/miniconda3/envs/qiime2-2021.2/lib/python3.6/site-packages/q2_dada2/_denoise.py", line 547, in denoise_ccs
" and stderr to learn more." % e.returncode
Exception: An error was encountered while running DADA2 in R (return code 127), please inspect stdout and stderr to learn more.
Plugin error from dada2:
An error was encountered while running DADA2 in R (return code 127), please inspect stdout and stderr to learn more.

env: Rscript\r: No such file or directory

That is strange. I guess your QIIME2 environment is broken. Try to remove and reinstall the whole environment and follow the instruction in repo https://github.com/sixvable/q2-dada2-CCS.

env: Rscript\r: No such file or directory

That is strange. I guess your QIIME2 environment is broken. Try to remove and reinstall the whole environment and follow the instruction in repo https://github.com/sixvable/q2-dada2-CCS.

Thank you very much! I will try for it. Do I need to prepare anything in R? Downloading certain packages? It was said that the error was encountered while running in R.

Just checking on this, we have a few local researchers inquiring about using QIIME2 for PacBio (at the moment we're steering them to using DADA2 directly).


Fix rule for block grid.

Fix rule for block grid.
In this example you can see http://codepen.io/anon/pen/obvdaN that grid inside block grid doesn't work correctly. It's apply size from block grid instead from grid definition.

This has actually been fixed for 6.0.5, that was an old CDN link
This pen has a new one.
http://codepen.io/zurbrandon/pen/YwzXJx
Thanks though we always appreciate the help.


Add duration preference type

@EliotBerriot based on our discussion in #8 I've added DurationPreference first as I might be needing this. Implementation was straightforward as I expected.
Could you take a look into it and see if it makes sense?

Ah I didn't wait for the checks to pass the first time. They pass now :)
What I did here was to use django.utils.duration.duration_string which serializes timedelta into strings like below,
7 00:00:00  -> 1 week
00:01:00 -> 1 minute

I'd definitely prefer to serialize to ISO 8601 duration format. But having to add a library just to do makes me cringe a little. I like libraries which don't depend on other libraries to do simple things. Also considering that users of django-dynamic-preferences who are on Django 1.11(which is when duration_iso_string was introduced) can just create their own serializers and preference types which use the ISO format to serialize/deserialize records I think it makes sense to not import a library just to do this.
Another reason I chose duration_string was because thats currently being used in Django's DurationField for backward compatibility reasons I assume. So duration_string should be here to stay IMO.

I agree with you : avoiding extra dependencies is a plus, and using the built-in  duration_string is okay for me, even if less "clean" than serializing to iso.
Let's merge!

Awesome! Appreciate your quick response 👍

Is there any plan to release a new version with the above changes anytime soon? It would help to start using it.

I was actually waiting a few days to give you time to work on the two other date-related preferences, but I should have tell you, sorry!
I can probably publish a new release tonight or tomorrow, I'll keep you updated :)

Ah alright. I thought it would better to add a separate PR for those two. I'll do that soon!

Yeah, it's fine to have separate PRs for that purpose, I just wanted to avoid doing multiple release, each one containing only a single change if possible.


Make Auth and ServletUtils webserver-agnostic

Auth and ServletUtils depend heavily on the java servlet API, but not all Java web frameworks use this - for example, the Play framework. The current advice is to copy-paste these classes and tailor them as necessary, but that seems a bit heavyweight.
Since there is already an abstraction over HttpRequest, it should be possible to make Auth and ServletUtils depend only on this interface (might be necessary to add a similar HttpResponse interface) and then provide adapters for the javax.servlet.http.HttpServletRequest and javax.servlet.http.HttpServletResponse.
It would then be trivial to plug java-saml into other web frameworks by only providing new HttpRequest/Response classes.

At #71 we removed servlet dependency on the core of java-saml. It separated out the dependency on HttpServletRequest.
"Servlet" users will still depend on java-saml, and interact with the Auth class, while users that don't want it can use java-saml-core directly.
If your solution don't break compatibility with the current environments, I'm open to accept a PR.
If the solution breaks backward compatible, maybe instead of rewirte the toolkit package, make more sense to implement a new package based on it, but independent from javax.servlet so users will be able to use it instead of the toolkit package.

If you want this to be a point release to the existing version 2, then yes we should absolutely ensure back-compatibility.
However, would you consider taking this PR and publishing a new version 3, which does break compatibility? I think there are several benefits (although obviously I'm biased because I wrote the code :P):

with the new wrapper API, it's trivial to add support for a new container - you just need to write implementations for HttpRequest and HttpResponse which typically will map directly to methods on the underlying server API (e.g. HttpServletRequest in the case of JavaEE). There's no need to duplicate any logic out of the Auth and ServletUtils classes as there would be currently.

the existing APIs are somewhat mutable (generally a bad idea), and it's not always clear when you need an HttpServletRequest and when you need an HttpRequest - and in fact, as I found when I was trying to use the library - because we construct HttpRequest as effectively a deep copy, it's possible for the two to get out of sync. With wrappers, there's no such possibility since we always delegate to the underlying object.

a lot of methods on the old HttpRequest class are there only really for testing - such as being able to add extra parameter values. By splitting this out to a mock, we make sure that nobody can depend on this behaviour in production code.

If I publish 3.X, then I will need to maintain 2.X and 3.X branch. (double of work. Something that I really want to avoid)
Do you think is too much complicate to provide a back-compatibility solution, or create a new package toolkit-servletless with the changes you introduced, but without modifying the current java-saml-core java-saml-toolkit?

Fair point! Let me have a think - it might be possible to do something like create abstract base classes for Auth and ServletUtils so we can share code between different containers (it would be a shame to have to duplicate all the logic).

I already thought on base classes, but then what you gonna do?

At toolkit create BaseAuth, Auth and AuthServertless?   (cons: use a different class name)
New toolkit-servletless with Auth that extends from BaseAuth... but where to place that base class?
a) in a new toolkit-base package?  (cons: handle 2 new packages)
b) move to core.. (cons: I wanted to keep on core only low level related with SAML, no high level methods


[Feature Proposal] Ability to save the positions of each table

Hey 👋 ,
First thanks for this great tool 🙏🏻.
Can you please add the ability to store somewhere the positions of each table (for example in a layout.json so we can load on each diagram)
Thanks in advance.

Hey, this was already done.
I've just released it in version 0.1.0 🔥

Thanks for adding this feature, it really helps! But could you consider saving it to a .vscode directory, to some file instead of Local/Session storage of VSCode itself? It would be much more convenient because we could share positions of tables between developers using git, for example


advertisement for new client plugin

@bparees @jupierce @csrwng FYI - ad for the new plugin in the old plugin's readme

lgtm


[release/v1.5] Move the kubeone-e2e image to Quay

What this PR does / why we need it:
This PR is a manual cherry-pick of #2463 to the release/v1.5 branch.
What type of PR is this?
/kind chore
Does this PR introduce a user-facing change? Then add your Release Note here:
The `kubeone-e2e` image is moved from Docker Hub to Quay (`quay.io/kubermatic/kubeone-e2e`)

Documentation:
NONE

/lgtm
/approve

/retest

/retest


[C++] Adding ExecNode with Sort and Fetch capability

In Substrait integrations with ACERO, a functionality required is the ability to fetch records sorted and unsorted.
Fetch operation is defined as selecting K number of records with an offset. For instance pick 10 records skipping the first 5 elements. Here we can define this as a Slice operation and records can be easily extracted in a sink-node.
Sort and Fetch operation applies when we need to execute a Fetch operation on sorted data. The main issue is we cannot have a sort node followed by a fetch. The reason is that all existing node definitions supporting sort are based on sink nodes. Since there cannot be a node followed by sink, this functionality has to take place in a single node.
But this is not a perfect solution for fetch and sort, but one way to do this is define a sink node where the records are sorted and then a set of items are fetched.
Another dilema is what if sort is followed by a fetch. In that case, there has to be a flag to enable the order of the operations.
The objective of this ticket is to discuss a viable efficient solution and include new nodes or a method to execute such a logic.

Reporter: Vibhatha Lakmal Abeykoon / @vibhatha
Subtasks:

[ ] [C++] Create a Fetch Node
[ ] [Docs] Create Documentation for Fetch Sink Node
[ ] [C++] Optimize Fetch Node to avoid collecting all records for non-sort setting

Note: This issue was originally created as ARROW-17183. Please see the migration documentation for further details.

@westonpace this is redundant now, correct?

Agreed


Release Google.Cloud.StorageTransfer.V1 version 2.5.0

Changes in this release:
New features

Change netstandard2.1 target to netstandard2.0 (commit 82bea85)

Created release for Google.Cloud.StorageTransfer.V1-2.5.0


Automator: update proxy@master in istio/istio@master

Generated by Automator - 2022-07-07T23:18:02+00:00

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

Test name
Commit
Details
Required
Rerun command

integ-security-multicluster_istio
f79e08e64729cb4a8ee63d64c2fea4628d960efc
link
true
/test integ-security-multicluster_istio

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

/test integ-security-multicluster_istio


Fixed crash when resizing a window to a zero-height/width size

This patches #984.
@caupetit can you give it a try?

All fine for me with your fix. Nice !

Cool! Thanks for the feedback.

This PR has been added to my merge list, meaning it will be merged soon, unless someone raises any concerns.


Can't rename space success

obsidian version 1.6.7 win11

Do you have the setting Alias turned on?

When I first opened the plugin, the name of my space was the same as my root folder name. However, after performing some operations, it changed to 'vault'. When I continued to try to modify the name, it didn't take effect. I don't understand what you mean by 'alias'.


Allow users to update or edit profile image

What should be the flow?

In the profile page, Add a + icon by the side of the profile image
When the user clicks on that icon, open up the gallery & allow him to select an image
Open up a photo editor that crops the image into a square.
Compress the image (256x256) and create a link using Cloudinary API ( https://cloudinary.com/documentation/solution_overview )
Send the created link to below endpoint:
POST request on update-profile-image
parameter : profile-image-url

I would like to work on this issue.

Sure.  So I'm gonna have to start all over again :(

Checkout reflog command. It might help you to recover lost changes.


fix(data/encodable): make decidable_eq_of_encodable priority 0

Should I also add some unit test or something?

I don't think a unit test is necessary, we generally don't have them in mathlib. But I would like to see a comment why priority 0 it is required. In a couple of weeks nobody will remember its reason.

Sorry this took forever. [I must be honest -- when I realised real mathlib had more commits than my fork I used this as an excuse to learn about git in general (clone, fork, merge, rebase, managing master +  origin/master + remote/master)]. I added a comment.

This is now in the repo.
Sorry for the delay!


Scalable route configuration

The existing Envoy RouteConfiguration must be evaluated linearly and contains match criteria with hard to predict execution time (regular expressions). For scale-up Envoy instances where very large route configurations for a host may be present (let's say O(1m)) or multi-tenant Envoy instances, this becomes problematic.
There are many ways this could be solved:

Envoy could optimize based on presented configuration, for example a trie could be recovered from repeated patterns or a specific match order. This is challenging if the existing linear semantics are to be preserved and involves Envoy complexity.
We could have variants of regular expressions, e.g. prefix/suffix/glob or RE2 that are cheaper and more predictable to evaluate.
We could have a parallel RouteConfiguration with trie-like semantics, where evaluation order is designed for efficiency.

Some combination of (2) and (3) seems likely to yield a clean solution IMHO, but I'm keen to hear from others.
@jmarantz @mattklein123 @dmitri-d @yanavlasov

I've thought about this for a while and IMO we need to do (3) which is to have a parallel configuration which supports a much more limited set of matching options designed for sub-linear execution. Optimally, the configuration would allow embedding a "legacy" route configuration inside of it so that once a sub-linear match is done, the user can further do a linear match if desired for extra features.

I think a combination of (2) and (3) work. Not sure re: full-on regex implementation in (2), but some form of simple pattern (a subset of bash pattern-matching perhaps?)/prefix and/or suffix matching might be sufficient for our purposes.

I've been messing around with RE2 vs std::regex benchmarking on my Mac on the plane, and there's a pretty significant speedup. This includes dramatic improvements executing regular expressions that are thought of as pathologically slow. I will publish a bit later.
However, I think sublinear is the only way to scale, one way or another we need to get to at trie.
I was also thinking it might be possible in some cases to compile a restricted subset of existing Envoy config into a trie, but I haven't sorted out the details. There's some value in being able to simply make the existing configurations run faster. This is because there are layers (e.g. Istio) that already mirror the existing Envoy configs.
Going with (3) would be easier though (less of a science project).

@louiscryan

Just for the record: Intel Hyperscan is specifically designed to match strings against a set of regular expressions; and (I believe) it uses vector instructions, so constants should be good too.

Re. implementation of regex matching... I think it's possible to speed up even a linear list of matchers if to scan an input string against all the regexes used in the list at once. Here we loose the ability to craft manually an optimized list by scanning the regexes lazily, but enable HW optimizations.
RE2 has got the RE2::Set interface that can be used to build a single NFA out of many regexes. Then one scan is enough to mark all the predicates in the list either true or false. There is a nuance though: RE2 builds DFA lazily for explored states at scan time and caches the result to reuse for future scans. This make memory consumption unpredictable and may trigger error thresholds.
Hyperscan is designed to perform matches against many patterns: it builds a single NFA, decomposes to subcomponents, reduces redundancies, translates the subcomponents to various implementations of DFA, NFA and literal matchers depending on what suites better. The literal matchers are SIMD accelerated. DFA/NFA subcomponents are SIMD accelerated when possible. The problem is this compilation takes more time than in case of RE2. But memory consumption is less and guaranteed to be constant at scan time. Also for SIMD acceleration at least SSSE3 is required.

Re. implementation of regex matching... I think it's possible to speed up even a linear list of matchers if to scan an input string against all the regexes used in the list at once. Here we loose the ability to craft manually an optimized list by scanning the regexes lazily, but enable HW optimizations.
RE2 has got the RE2::Set interface that can be used to build a single NFA out of many regexes. Then one scan is enough to mark all the predicates in the list either true or false. There is a nuance though: RE2 builds DFA lazily for explored states at scan time and caches the result to reuse for future scans. This make memory consumption unpredictable and may trigger error thresholds.
Hyperscan is designed to perform matches against many patterns: it builds a single NFA, decomposes to subcomponents, reduces redundancies, translates the subcomponents to various implementations of DFA, NFA and literal matchers depending on what suites better. The literal matchers are SIMD accelerated. DFA/NFA subcomponents are SIMD accelerated when possible. The problem is this compilation takes more time than in case of RE2. But memory consumption is less and guaranteed to be constant at scan time. Also for SIMD acceleration at least SSSE3 is required.

I think with MatcherTrees, it's possible to have a map from regex to next nodes. In that situation, you could build a single NFA, subject to the limits you describe.

I think with MatcherTrees, it's possible to have a map from regex to next nodes. In that situation, you could build a single NFA, subject to the limits you describe.

Hi Envoy team, what is the current status of MatcherTree feature and any timeline for GA?
A little background, we have 1k+ microservices and plan to build a global service mesh. the O(N) routing match algorithm isn't scalabe.

Just another quick question, Does scoped routing configuration match key to route with O(1) or O(n) algorithm? Thanks!

Hi Envoy team, what is the current status of MatcherTree feature and any timeline for GA?
A little background, we have 1k+ microservices and plan to build a global service mesh. the O(N) routing match algorithm isn't scalabe.

FWIW, in our Thrift mesh we worked around this via #8994. cc: @fishcakez

@snowp @mattklein123 should we consider this work closed by the generic matchers?

@snowp @mattklein123 should we consider this work closed by the generic matchers?

Does it allow making sub-linear route matching for action selection? (e.g. we are interested in an ability to select cluster & add some per-route metadata for stats/access logs)

Actually, scratch my comment, I've just noticed that envoy has generic matchers support for routing, which covers my use case.
Should marking it as stable be considered as a pre-requisite for closing the issue though?

Actually, scratch my comment, I've just noticed that envoy has generic matchers support for routing, which covers my use case.
Should marking it as stable be considered as a pre-requisite for closing the issue though?

Yeah we should just go ahead and mark this stable IMO. It's been out for long enough. cc @snowp @kyessenov

Looking more into the implementation, it looks like current matcher api in route config has no support for runtime fractions (as well as other existing matcher flavors). It's somehow complicated by the fact that it does not support embedding existing routing config (or a list of routes) as a final leaf as well.
Should a new issue (issues) be created to track it?

This bug is still open. Does it mean there are plans to address it? Specifically for the following mentioned in the first comment.

We could have a parallel RouteConfiguration with trie-like semantics, where evaluation order is designed for efficiency.

This is something we would be really interested in (unless we can achieve this through the generic matcher API?)


Reload expandable-recycler-view

Hi. Thank for great library!
I implement this expandable-recycler-view for my project, but I don't know how to reload data for it.
You can write a tutorial or  sample code?
Thank so much!

Hi, I do have same question. I tried to implement SwipeRefreshLayout with your library but I can not. Help us bro!

Hi, the library does not currently allow for refreshing the data with the existing adapter. That is a definitely a feature we want to add down the line

Hi, thanks for your valuable reply. I'm waiting.

Hi,
One solution towards this is creating a new adapter every time I have new pieces of data. Are there any other solutions you would recommend?

Even when I create new adapter, some of the groups are not expanding. I checked items and they are populated. I'm using recyclerview's method swapadapter: recyclerView.swapAdapter(catalogAdapter, true);
to change adapter, but as I said some of the groups are not expanding. Did anybody found a solution?

I think it would be good to add this limitation to the readme file, I just lost some time to make it work with this library to only then learn about that limitation.

Although, I could use a workaround recreating the layout manager and the adapter. It is not so performatic but is did the trick for me.

How did you recreate layout manager? I created new adapter and changed the old one with swapAdapter method and it worked partly, as I said some groups are not expanding. So Can you say what did you do in detail to work around this issue?

Is it possible save the state of adapter if i recreate it to update the data? Or does anybody made workaround solution to populate adapter's data dynamically without recreating it?

I think there is not some enhancement :(

I found a way to reload the expandable recycler view. The trick is to save the expand/collapsed states in a Bundle:
Bundle bundle = new Bundle();
oldAdapter.onSaveInstanceState(bundle); // save expand/collapsed states
recyclerView.setAdapter(...) // set a new adapter to show model changes
newAdapter.onRestoreInstanceState(bundle); // restore expand/collapsed states in the new adapter

The problem is in constructor in a class com.thoughtbot.expandablerecyclerview.models.ExpandableList.
  public ExpandableList(List<? extends ExpandableGroup> groups) {
    this.groups = groups;

    expandedGroupIndexes = new boolean[groups.size()];
    for (int i = 0; i < groups.size(); i++) {
      expandedGroupIndexes[i] = false;
    }
  }

As you can see there are two lists of data.
You can change "groups" but you can't change "expandedGroupIndexes".
The field "expandedGroupIndexes" has a public access, but instance of this class has protected access. (in com.thoughtbot.expandablerecyclerview.ExpandableRecyclerViewAdapter class)
A solution is:

Create a package com.thoughtbot.expandablerecyclerview in your project.
Create a class in this package, for example ExpandableListUtils
Create a method for update the field "expandedGroupIndexes"

package com.thoughtbot.expandablerecyclerview;

public class ExpandableListUtils {

    public static void notifyGroupDataChanged(ExpandableRecyclerViewAdapter adapter) {
        adapter.expandableList.expandedGroupIndexes = new boolean[adapter.getGroups().size()];
        for (int i = 0; i < adapter.getGroups().size(); i++) {
            adapter.expandableList.expandedGroupIndexes[i] = false;
        }
    }
}

Call this method in your adapter, before you call notifyDataSetChanged();

    public void addAll(List<GroupItem> groups) {
        ((List<GroupItem>)getGroups()).addAll(groups);
        ExpandableListUtils.notifyGroupDataChanged(this);
        notifyDataSetChanged();
    }

The method from DmitryBrenvald works for me.
It should merge to source code!

The method from DmitryBrenvald works for me.
It should merge to source code!

Hi, @fantasy1022  can you pls point me towards right direction.
How u resolve issue ?
Please share exact code logic to handle this?

Actually there is even better solution than the provided one by DmitryBrenvald - you just have to simply extend the ExpandableRecyclerViewAdapter with your own custom class and then add previously mentioned notifyGroupDataChanged() method. It will be something like this:
public abstract class CustomExpandableRecyclerViewAdapter<GVH extends GroupViewHolder, CVH extends ChildViewHolder> extends ExpandableRecyclerViewAdapter<GVH, CVH> {

    public CustomExpandableRecyclerViewAdapter(List<? extends ExpandableGroup> groups) {
        super(groups);
    }

    public void notifyGroupDataChanged() {
        expandableList.expandedGroupIndexes = new boolean[getGroups().size()];
        for (int i = 0; i < getGroups().size(); i++) {
            expandableList.expandedGroupIndexes[i] = false;
        }
    }
}

Then make your adapter class extend CustomExpandableRecyclerViewAdapter instead of ExpandableRecyclerViewAdapter and now in order to update the data in the recycler view you have to do like DmitryBrenvald said:

Call this method in your adapter, before you call notifyDataSetChanged();
public void addAll(List<GroupItem> groups) {
     ((List<GroupItem>)getGroups()).addAll(groups);
     notifyGroupDataChanged();
     notifyDataSetChanged();
 }

Actually there is even better solution than the provided one by DmitryBrenvald - you just have to simply extend the ExpandableRecyclerViewAdapter with your own custom class and then add previously mentioned notifyGroupDataChanged() method. It will be something like this:
public abstract class CustomExpandableRecyclerViewAdapter<GVH extends GroupViewHolder, CVH extends ChildViewHolder> extends ExpandableRecyclerViewAdapter<GVH, CVH> {

    public CustomExpandableRecyclerViewAdapter(List<? extends ExpandableGroup> groups) {
        super(groups);
    }

    public void notifyGroupDataChanged() {
        expandableList.expandedGroupIndexes = new boolean[getGroups().size()];
        for (int i = 0; i < getGroups().size(); i++) {
            expandableList.expandedGroupIndexes[i] = false;
        }
    }
}

Then make your adapter class extend CustomExpandableRecyclerViewAdapter instead of ExpandableRecyclerViewAdapter and now in order to update the data in the recycler view you have to do like DmitryBrenvald said:

Call this method in your adapter, before you call notifyDataSetChanged();
public void addAll(List<GroupItem> groups) {
     ((List<GroupItem>)getGroups()).addAll(groups);
     notifyGroupDataChanged();
     notifyDataSetChanged();
 }

The problem is in constructor in a class com.thoughtbot.expandablerecyclerview.models.ExpandableList.
  public ExpandableList(List<? extends ExpandableGroup> groups) {
    this.groups = groups;

    expandedGroupIndexes = new boolean[groups.size()];
    for (int i = 0; i < groups.size(); i++) {
      expandedGroupIndexes[i] = false;
    }
  }

As you can see there are two lists of data.
You can change "groups" but you can't change "expandedGroupIndexes".
The field "expandedGroupIndexes" has a public access, but instance of this class has protected access. (in com.thoughtbot.expandablerecyclerview.ExpandableRecyclerViewAdapter class)
A solution is:

Create a package com.thoughtbot.expandablerecyclerview in your project.
Create a class in this package, for example ExpandableListUtils
Create a method for update the field "expandedGroupIndexes"

package com.thoughtbot.expandablerecyclerview;

public class ExpandableListUtils {

    public static void notifyGroupDataChanged(ExpandableRecyclerViewAdapter adapter) {
        adapter.expandableList.expandedGroupIndexes = new boolean[adapter.getGroups().size()];
        for (int i = 0; i < adapter.getGroups().size(); i++) {
            adapter.expandableList.expandedGroupIndexes[i] = false;
        }
    }
}

Call this method in your adapter, before you call notifyDataSetChanged();

    public void addAll(List<GroupItem> groups) {
        ((List<GroupItem>)getGroups()).addAll(groups);
        ExpandableListUtils.notifyGroupDataChanged(this);
        notifyDataSetChanged();
    }

With this solution items are flicking when we have large amount of items bind to the recyelverview .

Actually there is even better solution than the provided one by DmitryBrenvald - you just have to simply extend the ExpandableRecyclerViewAdapter with your own custom class and then add previously mentioned notifyGroupDataChanged() method. It will be something like this:
public abstract class CustomExpandableRecyclerViewAdapter<GVH extends GroupViewHolder, CVH extends ChildViewHolder> extends ExpandableRecyclerViewAdapter<GVH, CVH> {

    public CustomExpandableRecyclerViewAdapter(List<? extends ExpandableGroup> groups) {
        super(groups);
    }

    public void notifyGroupDataChanged() {
        expandableList.expandedGroupIndexes = new boolean[getGroups().size()];
        for (int i = 0; i < getGroups().size(); i++) {
            expandableList.expandedGroupIndexes[i] = false;
        }
    }
}

Then make your adapter class extend CustomExpandableRecyclerViewAdapter instead of ExpandableRecyclerViewAdapter and now in order to update the data in the recycler view you have to do like DmitryBrenvald said:

Call this method in your adapter, before you call notifyDataSetChanged();
public void addAll(List<GroupItem> groups) {
     ((List<GroupItem>)getGroups()).addAll(groups);
     notifyGroupDataChanged();
     notifyDataSetChanged();
 }

The problem is in constructor in a class com.thoughtbot.expandablerecyclerview.models.ExpandableList.
  public ExpandableList(List<? extends ExpandableGroup> groups) {
    this.groups = groups;

    expandedGroupIndexes = new boolean[groups.size()];
    for (int i = 0; i < groups.size(); i++) {
      expandedGroupIndexes[i] = false;
    }
  }

As you can see there are two lists of data.
You can change "groups" but you can't change "expandedGroupIndexes".
The field "expandedGroupIndexes" has a public access, but instance of this class has protected access. (in com.thoughtbot.expandablerecyclerview.ExpandableRecyclerViewAdapter class)
A solution is:

Create a package com.thoughtbot.expandablerecyclerview in your project.
Create a class in this package, for example ExpandableListUtils
Create a method for update the field "expandedGroupIndexes"

package com.thoughtbot.expandablerecyclerview;

public class ExpandableListUtils {

    public static void notifyGroupDataChanged(ExpandableRecyclerViewAdapter adapter) {
        adapter.expandableList.expandedGroupIndexes = new boolean[adapter.getGroups().size()];
        for (int i = 0; i < adapter.getGroups().size(); i++) {
            adapter.expandableList.expandedGroupIndexes[i] = false;
        }
    }
}

Call this method in your adapter, before you call notifyDataSetChanged();

    public void addAll(List<GroupItem> groups) {
        ((List<GroupItem>)getGroups()).addAll(groups);
        ExpandableListUtils.notifyGroupDataChanged(this);
        notifyDataSetChanged();
    }

With this solution items are flicking when we have large amount of items in recyelverview . Can any one have idea how to avoid this behaviour?

public void collapseAll() {
        int groupSize = groupList.size();
        for (int i = 0; i < groupSize; i++) {
            expandableItemManager.collapseGroup(i);
        }
    }

It working for me.


Add Free AI Tool to the AI Directories list

Add Free AI Tool to the AI Directories list

Nice Directory!
You can also submit it on Directories Wiki and Awesome Directories.


Rename to "Abstract types should not have public constructors"

I think the title is a bit misleading. Since the suggested fix does not remove the constructor entirely, but rather changes it from 'public' to 'protected', a better title would be something like 'Abstract types should not have public constructors'.

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

ID: 8e78e1ff-9239-a6c2-f5ab-186b9fa45678
Version Independent ID: 651023fb-2fe0-c581-52e0-76409bec2ba4
Content: CA1012: Abstract types should not have constructors - Visual Studio
Content Source: docs/code-quality/ca1012.md
Product: visual-studio-windows
Technology: vs-ide-code-analysis
GitHub Login: @Mikejo5000
Microsoft Alias: mikejo

@Danghor Product needs an update for this fix. Would you reopen this issue on /dotnet/roslyn-analyzers/issues ? Thanks.


add “day” as a value type

Accepts an integer as the value for comparison to the creation date.

Updated all of my packages locally and ran tests, which reproduced the error. Rebased from master and tests are passing. Force pushed, so this should pass too in a few minutes.

hmm... i guess there was some confusion on what this was supposed to be doing.

OK, I think this is what you were after. Rebased and retested. There should be test coverage for every new line of code.
“age_in_days” might be a little wordy. Let me know if you want to change it. Also, I wasn’t sure whether to use - or _. The operators seem to use -, but the only other multi-word value type was using _.
FWIW, I faked some values for “now” that were just before and just after midnight, as that’s where these sorts of things tend to break down. Tests still passed.

OK, I think factoring out the tests for both value and sentinel together would make it messier and harder to follow. But we could create a couple of individual utility functions (one for datetime, one for int) that would take the raw value and return the correct type, or the fall-back.
Let me know if you want me to do that.

I’ve factored things into two new utilities and added tests for them.

#2465 handles this a bit more flexibly


Make compile --with-ipv6 & setproctitle

If compiling with IPv6 support and setproctitle two places are using
the wrong type (char *) instead of (ushort) or a non-existent variable.
Fix these to make --with-ipv6 compile on FreeBSD.

Sorry, I don't know.  I have since moved to other projects and don't know exactly what I tried and with which options.


Warning: Failed prop type: Invalid prop textStyle of type array supplied to Cell, expected object.     at Cell

Hi! 👋
Firstly, thanks for your work on this project! 🙂
Today I used patch-package to patch<EMAIL_ADDRESS>for the project I'm working on.

Here is the diff that solved my problem:
diff --git a/node_modules/react-native-table-component/components/rows.js b/node_modules/react-native-table-component/components/rows.js
index 40cecc6..b096fe4 100644
--- a/node_modules/react-native-table-component/components/rows.js
+++ b/node_modules/react-native-table-component/components/rows.js
@@ -26,7 +26,8 @@ export class Row extends Component {
               width={wth}
               height={height}
               flex={flex}
-              textStyle={[cellTextStyle && cellTextStyle(item), textStyle]}
+              // textStyle={[cellTextStyle && cellTextStyle(item), textStyle]}
+              textStyle={{...(cellTextStyle ? cellTextStyle(item) : {}), ...textStyle}}
               {...props}
             />
           );

This issue body was partially generated by patch-package.

Hey, I had rewrote it in typescript and I'll optimizing it in react-native-reanimated.  react-native-reanimated-table 🌴

react-native-reanimated-table

the link repository is missing buddy ?

react-native-reanimated-table

the link repository is missing buddy ?

I haven't published it to GitHub yet.


xonsh hangs when running carapace _carapace

Current Behavior
Any command beginning carapace _carapace  hangs - xonsh is taking up 180% CPU
Expected Behavior
I assume just runs to an end
Steps To Reproduce
Just run carapace _carapace xonsh or replace xonsh by any other file name.
Version
1.0.1
OS

[ ] Linux
[X] OSX
[ ] Windows

Shell

[ ] Bash
[ ] Elvish
[ ] Fish
[ ] Nushell
[ ] Oil
[ ] Powershell
[X] Xonsh
[ ] Zsh

Anything else?
The command does run in fish
It is also unclear what should be set in xonsh.
the test https://github.com/carapace-sh/carapace/blob/db7e596f45c5491e96964658de49ca0e1242086d/example/_test/invoke_xonsh#L7 sets no environment.
https://github.com/carapace-sh/carapace-bin says
# xonsh (~/.config/xonsh/rc.xsh)
COMPLETIONS_CONFIRM=True
exec($(carapace _carapace))

But the first line is not setting an environment variable so I think makes no effect. (It needs a $ to begin with)
Also the command show elsewhere is carapace _carapace xonsh (or any other shell name)
This documentation issue means that I am uncertain how to start carapace.

Cannot reproduce this issue so I need a bit more information.
Maybe logs give some insight? https://carapace-sh.github.io/carapace-bin/setup/environment.html#carapace_log
$CARAPACE_LOG=1
exec($(carapace _carapace))

Tried logging but there is nothing in /tmp and in $TMPDIR/carapace just a zero byte file.
Even carapace --help hangs (but only sometimes)
However doing an xonsh --no-rc and then calling carapace in another shell works.
It seems only to happen when xonsh is called directly from iTerm or terminal. Even in that case if I then run zsh from that shell and then xonsh it works.
ie steps to reproduce
Open Terminal.app
Choose Run Command
In that do xonsh --no-rc
Then run /carapace _carapace
I have tries with xonsh from macports (both 0.15.1 and 0.16.0) and nix but carapace only in nix as it is not in macports

So I tried the macports version of xonsh but still no luck.
Only issue I can see so far is that the shell detection doesn't work since neither in brew or macports the parent process is named xonsh (just Python).

I don't think the issue is which version of xonsh is used. I got the issue with both macports and nix, and different versions.
The difference seems to be is xonsh launched from another shell or not.
Did you run from Terminal.app without going through another shell?  Unfortunately I don't think this is testable automatically as most test environments set up a shell.
I would note that carapace _carapace fish (or bash or zsh or rubbish) also hangs for me under a bare xonsh so it might not be the shell detection. Looking at https://github.com/carapace-sh/carapace/blob/master/internal/shell/shell.go I think that if I do pass in a shell name then the shell detection should not be called.  They all work if I call xonsh from another shell first. (carapace _carapace rubbish gives the list of supported shells)
From xonsh the current process name is python3.11 in nix.  This is true if run from inside another shell.

I suspect https://github.com/xonsh/xonsh/issues/5244 might be a related issue

I'm having the same issue on nushell with carapace-bin 1.1.0 on macOS.
carapace _carapace nushell and carapace _carapace zsh both eat a ton of CPU and hang when I run them from nushell. If I run the same commands from zsh, they work fine.
I verified that $SHELL is set correctly in nushell.

@LoganWalls

How is carapace installed?
Do you have the same behaviour with the default nushell config?
Other shells are fine? (e.g. carapace _carapace bash)

@LoganWalls
* How is carapace installed?

* Do you have the same behaviour with the default nushell config?

* Other shells are fine? (e.g. `carapace _carapace bash`)

Via nix (nixpkgs rev d70bd19e0a38ad4790d3913bf08fcbfc9eeca507)
Both calls seem to work if I load nushell with --no-config-file
carapace _carapace {value} hangs for any value when called from nushell with my config.
I have zsh and bash bridges enabled, but commenting out CARAPACE_BRIDGES doesn't fix the issue.

I'm not sure what about my config would be causing this.

I'm not sure what about my config would be causing this.

Yeah, nothing that catches my eye there yet :thinking: .

edit: tried the config in a container where it works fine

My apologies, I hadn't pushed the latest version.
There are no changes to the nushell / carapace configuration at all, but I hadn't pushed my commits that updated the nixpkgs versions.

Ah, I just tried the nushell config. - Probably can use the whole repo to setup nix environment?

Ah, I just tried the nushell config. - Probably can use the whole repo to setup nix environment?

Oh, if you just tried the nushell config then that's fine. That probably means it's version related or nix related, I think.
I have nushell version 0.100.0 and carapace version 1.1.0


Implement Topology CRD validations testing

What type of PR is this?
/kind cleanup
What this PR does / why we need it:
We used to implement validation and mutating testing based on webhooks and markers in the /test/integration/webhook/core.
However, for Topology, we do not have any testing for those.
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?

NONE

/lgtm
Thanks!

/hold

/lgtm
/approve
I think the PR is ready. We can think how to improve readability of the tests in a follow up more holistically.

/hold cancel


Need a way to import repo keys.

Basically, I'm trying to use dokku-apt to run the commands mentioned in script - https://get.docker.com/ubuntu/
It requires repo keys to be imported. Seems dokku-apt doesn't have a way to use repo keys.

It might be a little bit hacky, but importing the key in apt-env seems to 'work'

Okay this should be relatively easy to add support for. I'll do it in the next minor.


Make the package build with Stack LTS 6.3

LTS 6.3 is the latest version.
persistent-database-url/src/Database/Persist/URL.hs:33:40:
Not in scope: ‘uriAuthority’
Perhaps you meant data constructor ‘Authority’ (imported from URI.ByteString)
Unfortunately, it fails to build on LTS 5.11:
Module ‘URI.ByteString’ does not export ‘URIRef(..)’

I don't know how to make this package build with both LTS 5.11 and 6.3.

Some ideas:

Use preprocessor statements to check the uri-bytestring version?
Release one version compatible with LTS 5.x and one version compatible with LTS 6.x?

Ready for re-review.
I confirmed that it works on LTS 5.11 and LTS 6.3 by doing the following for both versions:

Changing the version in stack.yaml
Running rm -rf .stack-work && stack build

Also: I thought I'd need other-extensions: CPP in the cabalfile, but it works fine with just the LANGUAGE directive.

I believe CI is failing because the Launchpad is timing out: https://launchpad.net/~hvr/+archive/ubuntu/ghc
I'll rebuild later.

The build passed!

This looks good to me.
Note, we probably want to reference the package via a Git URL in stack.yaml instead of releasing a new version, because we still haven't worked out the best types to make this easy to use.

Note, we probably want to reference the package via a Git URL in stack.yaml instead of releasing a new version

You mean when using this package, right, and that there are no Git-URL-related changes required to the stack.yaml in this project?

You mean when using this package, right?

Sorry, I wasn't very clear. I was trying to say that:

Although it builds on more versions of Stack, this doesn't fix the usability issues we have
I'm not sure it's worth releasing a new version of this package now

Ah, yeah, agreed. It sounds like those are good issues to open on this repo. (Also, I don't know how to release a new version, so no worries from me on that front.)


Forge Timer as HUD element

Have the forge timer available as a toggleable HUD element, possibly below coordinates or above coins display.

bro really reset my bedrock progress


Fix OAuth authentication

Fix #1518.

This currently results in a 400 when it tries to get a token.

If I change line 50 to have redirectUri: redirectUri + '/',, I get a new error:
{"error":"invalid_grant","error_description":"PKCE verification failed"}