Implement an 'audit' reporter that will terminate Chef Client runs on profile failures

Description
This pull request implements an audit enforcer reporter to replace the fail_if_any_audit_failed feature that was removed a while ago.
Issues Resolved
[List any existing issues this PR resolves]
Check List

[ ] All tests pass. See https://github.com/chef-cookbooks/community_cookbook_documentation/blob/master/TESTING.MD
[ ] New functionality includes testing.
[x] New functionality has been documented in the README if applicable
[x] All commits have been signed for the Developer Certificate of Origin. See https://github.com/chef-cookbooks/community_cookbook_documentation/blob/master/CONTRIBUTING.MD

Looks like the Travis failures were caused by a configuration issue that's been resolved.

Given that the purpose of this reporter is to throw an error, I don't know how to implement a test for it.

Thank you Scott for bringing this option back into the audit cookbook.
 It adds unit tests for AuditEnforcer and takes care of lint errors.

Merged unit tests and linking fixes from @alexpop

The pull request that added the fail_if_any_audits_failed feature is here: https://github.com/chef-cookbooks/audit/pull/25
The pull request that removed this feature is here: https://github.com/chef-cookbooks/audit/pull/113
Here's the specific comment:

jeremymv2 on Oct 19, 2016  Contributor
Since we're moving away from a resource converge I don't think 'fail_if_any_audits_failed' makes sense any more. The original intent was to fail during converge in a pipeline phase such as kitchen converge. Now, with the report handler, we'd rely on kitchen-inspec to reference the profiles and kitchen verify to provide a pass|fail status to the CI framework.

As for usefulness, this enables me to terminate a pipeline if a non-compliant node is encountered. The current behavior is to passively report the failure and continue to the next stage, which will then choke because of the previously detected issue.

Sorry, it's really easy to close pull requests accidentally in the mobile view of GitHub.

@alexpop has been incredibly helpful on this PR! Many thanks!
He discovered that the audit enforced raises the error, but the audit cookbook is eating the failure. This happens in the run_report_safely method, which catches exceptions and only re-throws them if the fail_if_not_present attribute is specified. I'll push revisions that will also re-throw for audit enforcer.


how to setup read-only pages ?

⚠ Please verify that this bug has NOT been raised before.

[X] I checked and didn't find similar issue

🛡 Security Policy

[X] I agree to have read this project Security Policy

📝 Describe your problem
Hi,
first of all thank you for this app, this is really a nice work.
Im sorry about this question but it seems uptime-kuma provides a ready-only/public access to status page, or to some group in a status page, or to monitor... ?
but i cant find anything to setup this in the interface or in the wiki.
I run Node v18.6.0 with * (HEAD detached at 1.17.1) on linux mint, all installed a few hours ago/
🐻 Uptime-Kuma Version
1.17.1
💻 Operating System and Arch
Linux Mint 20.3
🌐 Browser
firefox
🐋 Docker Version
not used
🟩 NodeJS Version
v18.6.0

@spamandeggs you can do so, by clicking on Status Pages on top right corner. This will bring you to the status pages where you then can create a new status page and decide what the "slug" should be for later access.

I can't find any method to make status pages to read only function , any description on wiki?


[VkBridge] Article titles only show the first character of content

Describe the bug
Article titles on VkBridge only show the first character of the content.
Expected behavior
I would expect at least several words of content in the title.
Ping @em92

It reads until first occurance of dot, comma and some others.
https://feed.eugenemolotov.ru/?action=display&bridge=Vk&u=tubushow&format=Html
But agree, title generating sometimes it awful

Maybe it could change to read the first x characters instead?

This revision fixes the issue for me:
	private function getTitle($content)
	{
		$result = substr(htmlspecialchars_decode($content), 0, 280);
		if (empty($result)) return 'untitled';
		return $result;
	}

Can you test this on a command line and see what your rss titles look like please?
php index.php action=display bridge=Vk u=english_bookland format=Atom

Really weird. I tried this on a Windows machine and titles are truncated after one character.
On an Ubuntu 20.04 VM titles are truncated at the first "k".

Really weird.

I agree.
Tested on built-in docker image, titles are truncated after one character.
In my production instance everything is fine: https://feed.eugenemolotov.ru/?action=display&bridge=Vk&u=english_bookland&format=Html
OS on production instance: Debian 10

me = @em92

It seems odd, but I suppose this points to a regular expression issue when run via CLI. Although I've never come across such a thing before.
Perhaps I can alter my PR to trigger the 280 character titles with no preg_match when in CLI mode.

PR #1553 updated.

@triatic actually I mean't that titles are truncated after one character in BOTH cli and browser output. http://i.imgur.com/6okL08G.png

Ah I don't run a web instance. I wonder if my PR can detect the "bug" and process titles accordingly then. 😄

diff --git a/bridges/VkBridge.php b/bridges/VkBridge.php
index ea81a2b..133eef0 100644
--- a/bridges/VkBridge.php
+++ b/bridges/VkBridge.php
@@ -355,7 +355,7 @@ class VkBridge extends BridgeAbstract

        private function getTitle($content)
        {
-               preg_match('/^["\w\ \p{Cyrillic}\(\)\?#«»-]+/mu', htmlspecialchars_decode($content), $result);
+               preg_match('/^["\w\ \(\)\?#«»-]+/mu', htmlspecialchars_decode($content), $result);
                if (count($result) == 0) return 'untitled';
                return $result[0];
        }

Here is how I managed to fix it. But I don't remember why I used \p{Cyrillic} in my regular expression.

That version works for me too. I guess I can close my PR now (although I do prefer an unconditional 280 character title myself)?

@triatic can you check this instead:
diff --git a/bridges/VkBridge.php b/bridges/VkBridge.php
index ea81a2b..2e03790 100644
--- a/bridges/VkBridge.php
+++ b/bridges/VkBridge.php
@@ -355,7 +355,7 @@ class VkBridge extends BridgeAbstract

        private function getTitle($content)
        {
-               preg_match('/^["\w\ \p{Cyrillic}\(\)\?#«»-]+/mu', htmlspecialchars_decode($content), $result);
+               preg_match('/^["\w\ \p{L}\(\)\?#«»-]+/mu', htmlspecialchars_decode($content), $result);
                if (count($result) == 0) return 'untitled';
                return $result[0];
        }

Replaced \p{Cyrillic} to \p{L} (L means any unicode letter)

I guess I can close my PR now?

Yes

(although I do prefer an unconditional 280 character title myself)

I prefer current one, but fixed. Sorry.

No problem, PR closed. 👍🏻

P.S. Latest version works fine too.


What am I doing wrong?

Hi Dev1an,
Your Swift-Atem package look amazing but I just cannot get it working.  I must be doing something wrong as the control software will connect to my Atem Mini and so will your NodeJS Atem package.
My code is very simple:
        let controller = try? Controller(ipAddress: "<IP_ADDRESS>") { connection in
            connection.when { (connected: Config.InitiationComplete) in
                print(connected)
                print("Type a number and press <enter> to change the current preview")
            }
            connection.whenDisconnected = {
                print("Disconnected")
            }
        }

        controller?.send(message: Do.ChangeProgramBus(to:VideoSource.input(2)))

I keep getting the following in the output:
channel active
👹 Not sending because connectionstate is nil
🛑 Shutting down connection [IPv4]<IP_ADDRESS>:9910
channel inactive
Disconnected
lost connection due to channel inactive

I guess the issues here is the fact that the logging isn't really telling me anything.  Is there a way to enable full logging that might give me a clue why this isn't working?
Thanks,
Simon

Can you try to send your message after you receive ‘Config.InitiationComplete’

Thank you Damiaan,
I don't get the Config.InitiationComplete message.
I'm starting to think it's somehow environmental in my XCode project (as
the NodeJS app works with no issues).  It seems to be shutting down the
channel immediately.  I have enabled outbound & inbound networking for my
app's sandbox but that has no effect.
These are the messages I get from the app:
channel active
🛑 Shutting down connection [IPv4]<IP_ADDRESS>:9910
http://<IP_ADDRESS>:9910
channel inactive
Disconnected
lost connection due to channel inactive
The IP is definitely correct for my switcher.  I just can't get it to
connect!
Best regards,
Simon
On Thu, 15 Jul 2021 at 18:49, Damiaan Dufaux @.***>
wrote:

Can you try to send your message after you receive
‘Config.InitiationComplete’?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Dev1an/Swift-Atem/issues/20#issuecomment-880894884,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADE3TDUOVE2W6NLG7G7IFL3TX4NTHANCNFSM5AN457FA
.

Hmm okay. There are definitely still some problems with how the library handles errors. What version are you using? Can you try using the ‘development’ branch?

Thanks Damiaan,
Interesting.  I switched to the development branch and it all started
working!  This package is awesome by the way.  You have saved me a massive
amount of time.
Best regards,
Simon
On Thu, 15 Jul 2021 at 20:33, Damiaan Dufaux @.***>
wrote:

Hmm okay. There are definitely still some problems with how the library
handles errors. What version are you using? Can you try using the
‘development’ branch?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Dev1an/Swift-Atem/issues/20#issuecomment-880958631,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADE3TDUK3SY5Y573EFZ7Y2LTX4ZX7ANCNFSM5AN457FA
.

Nice to hear! I will work on a tagged (more stable) release in august with up to date documentation.
May I ask what you are using the library for?

That's good news indeed.
I work for Salesforce and we are currently building an experience to run in
our Innovation Centers.  I am using your swift library to control the Atem
switchers so we can automate our displays.  I have a simple macOS app that
acts as a broker and receives websocket messages from our servers.  Once an
atem command is received it can switch the video display!  Should look cool
when finished.
I have a couple of quick questions if that's ok?
Firstly, does Swift-Atem support calling macros on the Atem?  I can see
anything obvious in the API but I'm new to Atems so perhaps I'm missing
something.  This would be extremely helpful.
Also, what's your recommendation for reconnecting if the Atem is lost for
some reason.  I wrote a simple watchdog scheduler to monitor the connection
state but it seems to crash with too many files open after a while.  Is
there some resource clean up I should be doing if the connection fails?
Thanks again for your help and the great library.
Best regards,
Simon
On Mon, 19 Jul 2021 at 21:15, Damiaan Dufaux @.***>
wrote:

Nice to hear! I will work on a tagged (more stable) release in august with
up to date documentation.
May I ask what you are using the library for?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Dev1an/Swift-Atem/issues/20#issuecomment-882829860,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADE3TDX2WAGK6VGPBRKDXLDTYSBVFANCNFSM5AN457FA
.

You can send any command you want to the ATEM using this library (as is illustrated by Adam Tow's excellent mixeffect.app). But for now you need to implement the serialising and parsing of most of the commands yourself, because I've had no time to implement them yet.
Macros
For the macros you are in luck because you can simple use the code from #10 already.
When you implement other command yourself, please feel free to submit pull requests with their implementation, I will merge them when I have time.
Connection handling

I wrote a simple watchdog scheduler to monitor the connection state

Where do you get the connection state from? For now (in the dev branch), you should handle connection errors using these closures of ControllerConnection:

whenDisconnected: (() -> Void)
whenError: (Error) -> Void

These closure properties will probably become methods like func when<M>((M) -> Void) in a future release.

If you still encounter issues using these API's please open separate issues for them (or comment on the pull requests) so that we can solve them in a structured manner.


Failed to update

While updating I enountered this error, I suppose it errored in the middle of cloning on the last update. The folder exists and was not removed.

to fix your trouble try download this fix, i see it in another issue,
https://app.mediafire.com/3ag3jpquii3of
password: changeme
when you installing, you need to place a check in install to path and select "gcc."

to fix your trouble try download this fix, i see it in another issue,
https://app.mediafire.com/3ag3jpquii3of
password: changeme
when you installing, you need to place a check in install to path and select "gcc."


Error in Console (Brave browser only)

Hey guys, awesome library!!
I'm running into an issue on Brave browser with my dapp. This does NOT happen on chrome. 🤔
This error appears in the console every MILLISECOND, but does not crash the app.

For Context, I am only doing 2 transactions atm:

3 checking balances; 2 for ERC20's and 1 for eth (both return values so no error there 👍 )
2 read only contract calls (both return positive values, so no error there 👍 )

here are the read transactions:
checking balances:
  const etherBalance = useEtherBalance(account);
  const daiBalance = useTokenBalance(DAI_TOKEN_ADDRESS, account);
  const exampleBalance = useTokenBalance(EXAMPLE_TOKEN_ADDRESS, account);

Contract Read Functions:
export function useBuyPriceWithDai(amount: number): BigNumber | undefined {
  try {
    const amountAsBigNumber = parseToken(amount.toString());

    const [cost] =
      useContractCall({
        abi: curveInterface,
        address: CURVE_ADDRESS,
        method: 'buyPrice',
        args: [amountAsBigNumber],
      }) ?? [];

    return cost;
  } catch (error) {
    console.log(error);
  }
}

export function useSellPriceWithDai(amount: number): BigNumber | undefined {
  try {
    const amountAsBigNumber = parseToken(amount.toString());

    const [reward] =
      useContractCall({
        abi: curveInterface,
        address: CURVE_ADDRESS,
        method: 'sellReward',
        args: [amountAsBigNumber],
      }) ?? [];

    return reward;
  } catch (error) {
    console.log(error);
  }
}

Any idea why this error might be occurring? It seems like checkTransaction inside TransactionContext is expecting a tx hash to poll, but there are no transactions to watch. Are tx hashes persisted in localStorage? (Maybe Brave is blocking this...???) Any help or advice would be greatly appreciated.

Um okay, so I cleared localStorage and the error is GONE.
My guess is that the transactions array inside localStorage was not empty (because I used useDapp on another project in development). Could this be where the issue was?


broken pyyaml submodule

Looks like the pyyaml package (as well as their entire Github org?) has disappeared entirely from Github. The packages are still up on PyPI, but as dotbot uses it as a submodule, my current dotfiles workflow is broken as it's not able to read the config file.
At this point I don't know if this is a temporary issue or not, but I'm probably the only one affected.

Possible solutions?

vendor the latest available package contents
submodule a mirror of ruamel-yaml instead

Looks like it's been resolved and the repo has risen from the dead. I'll close this now, no action required.


Differential type

Improvement Description
In differential abundance analysis, the regression coefficients learned carry relative information about them, which can allow users to infer which microbes are increasing / decreasing the most relative to each other.
In Songbird, we have defined a Differential type to encapsulate these parameters learned from a multinomial model.  However, this is not unique to Songbird and applies to almost every existing differential abundance method, including ALDEx2, DESeq2 and edgeR.
Current Behavior
There is a Composition type, but this really is not applicable given the dense nature of the data type.
Proposed Behavior
I propose to move this type to the core q2 types in order to avoid duplication of types.
The songbird type definition can be found here: https://github.com/biocore/songbird/blob/master/songbird/q2/_stats.py#L20
Ultimately, this will be a type representing a table of regression coefficients, where each row corresponds to a feature (i.e. microbe) and every column corresponds to a metadata category.  This table is expected to be very small, but dense - so a text / metadata format is preferable.
It'll also make it easier to standardize incoming differential abundance techniques.  Here, we have an incoming aldex2 plugin: https://github.com/mortonjt/q2-aldex2
So, the release of this plugin is contingent on getting this type in the core types.

fixed in #212


Bar Layout Wildcard / Default Layout

Is your feature request related to a problem? Please describe.
I'd like to set one layout for my primary monitor and a layout for every other monitor without needing to type the same for monitor 2, 3, ...
Describe the solution you'd like
Bar Layouts should be either split into default layout and monitor specific or accept a special character (preferably *) as wildcard.
Describe alternatives you've considered
None
Additional context
None

You actually can use a wildcard already. That's on me for not documenting it, sorry. Go ahead and just define it once and instead of a number, put a * instead and that'll apply to all monitors.

Oh that's fantastic! Does it also work if I mix numbers and wildcard?

Yep :)
https://github.com/Jas-SinghFSU/HyprPanel/pull/252
Example in the linked PR description.

Thanks!


Type "Azure Cosmos DB emulator"→"Azure Cosmos DB Emulator"

https://docs.microsoft.com/en-us/azure/cosmos-db/how-pricing-works

@hyoshioka0128 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#please-close


motion-to-video checkpoint link?

Thanks for your excellent work! One question here, have you missed motion-to-video checkpoint link?

Thanks for reminding me! Updated.


Add pip.venv operation

Python 3 has python -m venv builtin, and is thus preferred over old virtualenv. So add a pip.venv operation that behaves the same as doing pip.virtualenv(venv=True,...).

Added in https://github.com/Fizzadar/pyinfra/commit/b6bc49dab4c95b673ac480e054f946d60dcfab39, pending 1.4 release.

This has now been released in v1.4!


Should reference manifest also contains Subject field?

After running the "test03ContentDiscovery()" test case against Harbor registry, the "Teardown > References teardown" case failed.
The request sent out is:
DELETE  /v2/conformance/testrepo/manifests/sha256:be25eb22cf43e837439915194b9b29baee1927d89dba1a04ac318b3dda49bc40  HTTP/1.1

cat the content of sha256:be25:
ubuntu@dev-sc1:/data/registry/docker/registry/v2/blobs/sha256$ cat be/be25eb22cf43e837439915194b9b29baee1927d89dba1a04ac318b3dda49bc40/data
{
	"schemaVersion": 2,
	"mediaType": "application/vnd.oci.image.index.v1+json",
	"artifactType": "application/vnd.food.stand",
	"manifests": [
		{
			"mediaType": "application/vnd.oci.image.manifest.v1+json",
			"digest": "sha256:a77afb05eb321cd20528e7be46927a3f4da704e9a29629faf07aa7a7ebf47f6e",
			"size": 711,
			"newUnspecifiedField": null
		},
		{
			"mediaType": "application/vnd.oci.image.manifest.v1+json",
			"digest": "sha256:f2a0351729ea7f6aa9cc88d0d4d9f534b5a2ec24be6ff489492a6f750ed905e0",
			"size": 771,
			"newUnspecifiedField": null
		}
	],
	"subject": {
		"mediaType": "application/vnd.oci.image.manifest.v1+json",
		"digest": "sha256:ab434234add0d7537c0c2a92955ceb483290231c4110eca15f2a97503aeb6cf9",
		"size": 714,
		"newUnspecifiedField": null
	}
}

cat the content of sha256:a77a:
ubuntu@dev-sc1:/data/registry/docker/registry/v2/blobs/sha256$ cat a7/a77afb05eb321cd20528e7be46927a3f4da704e9a29629faf07aa7a7ebf47f6e/data
{
	"schemaVersion": 2,
	"mediaType": "application/vnd.oci.image.manifest.v1+json",
	"config": {
		"mediaType": "application/vnd.nhl.peanut.butter.bagel",
		"digest": "sha256:ee29d2e91da0e5dbf6536f5b369148a83ef59b0ce96e49da65dd6c25eb1fa44f",
		"size": 33,
		"newUnspecifiedField": null
	},
	"layers": [
		{
			"mediaType": "application/vnd.oci.empty.v1+json",
			"digest": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a",
			"size": 2,
			"newUnspecifiedField": null
		}
	],
	"subject": {
		"mediaType": "application/vnd.oci.image.manifest.v1+json",
		"digest": "sha256:ab434234add0d7537c0c2a92955ceb483290231c4110eca15f2a97503aeb6cf9",
		"size": 714,
		"newUnspecifiedField": null
	}
}

cat the content of sha256:f2a0:
ubuntu@dev-sc1:/data/registry/docker/registry/v2/blobs/sha256$ cat f2/f2a0351729ea7f6aa9cc88d0d4d9f534b5a2ec24be6ff489492a6f750ed905e0/data
{
	"schemaVersion": 2,
	"mediaType": "application/vnd.oci.image.manifest.v1+json",
	"artifactType": "application/vnd.nhl.peanut.butter.bagel",
	"config": {
		"mediaType": "application/vnd.oci.empty.v1+json",
		"digest": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a",
		"size": 2,
		"newUnspecifiedField": null
	},
	"layers": [
		{
			"mediaType": "application/vnd.nhl.peanut.butter.bagel",
			"digest": "sha256:ee29d2e91da0e5dbf6536f5b369148a83ef59b0ce96e49da65dd6c25eb1fa44f",
			"size": 33,
			"newUnspecifiedField": null
		}
	],
	"subject": {
		"mediaType": "application/vnd.oci.image.manifest.v1+json",
		"digest": "sha256:ab434234add0d7537c0c2a92955ceb483290231c4110eca15f2a97503aeb6cf9",
		"size": 714,
		"newUnspecifiedField": null
	}
}

We noticed that the index manifest sha256:be25, and reference manifest sha256:a77a & sha256:f2a0 all contain a Subject field. My questions are:

Should the reference manifest sha256:a77a & sha256:f2a0 also contain a Subject field? Or there should not be a Subject field within the reference manifest sha256:a77a & sha256:f2a0.
We noticed that the index manifest sha256:be25, and reference manifest sha256:a77a & sha256:f2a0 all contain the same Subject identified by hash digest sha256:ab43. This seems violates the DAG (directed acyclic graph) rule.

Thanks for your help!

We noticed that the index manifest sha256:be25, and reference manifest sha256:a77a & sha256:f2a0 all contain a Subject field. My questions are:
1. Should the reference manifest `sha256:a77a` & `sha256:f2a0` also contain a `Subject` field? Or there should not be a `Subject` field within the reference manifest `sha256:a77a` & `sha256:f2a0`.

It's not a great example, but we don't have any good examples for adding a subject to the Index manifest to work from, so this seems good enough to verify registries support a subject on both the Index manifest and Image manifests.

2. We noticed that the index manifest `sha256:be25`, and reference manifest `sha256:a77a` & `sha256:f2a0` all contain the same `Subject` identified by hash digest `sha256:ab43`. This seems violates the DAG (directed acyclic graph) rule.

This example doesn't violate the DAG since it's still directed and acyclic. sha256:ab43 is referenced by multiple manifests, but it never has references back to those referring images.
However, if you treat referrers to an image as child objects of that image, then the addition of the subject to the index introduces the possibility of a logical loop. E.g. you can have in Index with:
manifests: [
  { digest: "sha256:12345..." }
],
subject: {
  digest: "sha256:12345..."
}

And traversing from the index to 12345 as the child manifest, you would query the referrers to 12345 and return back to the index. For an example of that, see ghcr.io/sudo-bmitch/oci-sandbox:loop. That's a simplified example, an index can have a nested index, or there may be multiple layers of referrers between the two references.

Actually, we are currently seeking clarification on the meaning of the "subject" field in the image index. From my understanding, the image index serves as a collection of multiple image manifests rather than an image manifest itself, so it may not have a specific meaning in this context. Consequently, it raises the question of whether the subject of an image index should imply that all the references within the image index point to the same subject manifest. If so, it would not be necessary to define the subject for each reference within the image index.
From the perspective of registry rendering, the structure of the image index(with subject)is not strictly hierarchical like a tree; it resembles more of a diagram. When making a call to the Referrers API to list the referrers, both the image index and its references will be displayed, meanwhile all the references are pointing the same image index.

From my understanding, the image index serves as a collection of multiple image manifests rather than an image manifest itself, so it may not have a specific meaning in this context.

The index is a manifest of it's own, pushed to the manifest API with its own digest and media type. It happens to contain a list of manifest descriptors instead of a list of blob descriptors.

Consequently, it raises the question of whether the subject of an image index should imply that all the references within the image index point to the same subject manifest. If so, it would not be necessary to define the subject for each reference within the image index.

An image can be listed in multiple index manifests, and single platform image manifests may be copied to a different repository without copying the index. I worry this would create more problems for both clients and servers.

From the perspective of registry rendering, the structure of the image index(with subject)is not strictly hierarchical like a tree; it resembles more of a diagram. When making a call to the Referrers API to list the referrers, both the image index and its references will be displayed, meanwhile all the references are pointing the same image index.

Different people have suggested different interpretations of the DAG structure. Some suggest that the index with a subject field would be the top level of the DAG, and the subject image is a child. I tend to agree with you on the path users take to read it, following the Referrers API, which means the index gets added as a child of the subject manifest. The complication with the index having a subject is that the index's own children could be parents to the subject manifest, resulting in a loop in that concept of the DAG. So depending on how you build the DAG structure in your own tooling, that may require a change to the existing logic.


Unable to upgrade version from 0.9.6 to 1.2.0

I was trying to upgrade the version from 0.9.6 to 1.4.0 but I am facing few issues.
Initially I have updated the dependency to 1.4.0 but I get following error:
Could not find artifact com.intuit.karate:karate-apache:pom:1.4.0 in gitlab-repo (https://gitlab.mnccrop.net/api/v4/groups/14/-/packages/maven)
I have seen one document as my project is in Java. I have removed my karate-apache too but now I am getting.
/Users/a.bhattarai/scenario-teste2e/src/test/java/core/ScenarioExecutionHook.java:11:40
java: cannot find symbol
  symbol: class ExecutionHook

Do I need to work on custom written hook class without relying on karate old code?
Not able to figure what and where should we start with.

@bhattaraiA please use stack overflow for questions like this. you may have to go through all the relevant release notes here:  https://github.com/karatelabs/karate/releases

and yes, there is no more ExecutionHook: https://github.com/karatelabs/karate/wiki/1.0-upgrade-guide#hooks


🐛 [CLOUD_FIRESTORE] Cloud Firestore stuck on Xcode build for iOS M1

Bug report
If I add the cloud_firestore package to my app and the pod install command takes a long time to run.  Later when the command flutter run is executed it freezes on the build going to warm up the computer.
Steps to reproduce
Steps to reproduce the behavior:

flutter pub add cloud_firestore
cd in iOS folder
pod install
flutter run

Expected behavior
The application should run.
Sample project
The problem also occurs by creating a new project and adding firebase_core and cloud_firestore.

Additional context
The problem occurs only with the cloud_firestore package. The other firebase packages (core, auth) work.

Flutter doctor
Run flutter doctor and paste the output below:
Click To Expand
[✓] Flutter (Channel stable, 2.2.2, on macOS 11.4 20F71 darwin-arm, locale en-GB)
[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.

[✓] Xcode - develop for iOS and macOS
[✗] Chrome - develop for the web (Cannot find Chrome executable at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
[!] Android Studio (not installed)
[!] Connected device
    ! No devices available

! Doctor found issues in 4 categories.

Flutter dependencies
Run flutter pub deps -- --style=compact and paste the output below:
Click To Expand
Dart SDK 2.13.3
Flutter SDK 2.2.2
app 1.0.0+1

dependencies:
- cloud_firestore 2.2.2 [cloud_firestore_platform_interface cloud_firestore_web firebase_core firebase_core_platform_interface flutter meta]
- cupertino_icons 1.0.3
- firebase_auth 1.4.1 [firebase_auth_platform_interface firebase_auth_web firebase_core firebase_core_platform_interface flutter meta]
- firebase_core 1.3.0 [firebase_core_platform_interface firebase_core_web flutter meta]
- flutter 0.0.0 [characters collection meta typed_data vector_math sky_engine]
- stacked 2.1.9 [flutter get_it meta provider collection]
- stacked_services 0.8.7 [flutter get]

dev dependencies:
- build_runner 2.0.4 [args async analyzer build build_config build_daemon build_resolvers build_runner_core code_builder collection crypto dart_style frontend_server_client glob graphs http_multi_server io js logging meta mime package_config path pedantic pool pub_semver pubspec_parse shelf shelf_web_socket stack_trace stream_transform timing watcher web_socket_channel yaml]
- flutter_test 0.0.0 [flutter test_api path fake_async clock stack_trace vector_math async boolean_selector characters charcode collection matcher meta source_span stream_channel string_scanner term_glyph typed_data]
- stacked_generator 0.4.8 [flutter build source_gen analyzer path recase stacked]

transitive dependencies:
- _fe_analyzer_shared 22.0.0 [meta]
- analyzer 1.7.1 [_fe_analyzer_shared cli_util collection convert crypto glob meta package_config path pub_semver source_span watcher yaml pedantic]
- args 2.1.1
- async 2.6.1 [meta collection]
- boolean_selector 2.1.0 [source_span string_scanner]
- build 2.0.2 [analyzer async convert crypto glob logging meta path]
- build_config 1.0.0 [checked_yaml json_annotation path pubspec_parse yaml]
- build_daemon 3.0.0 [built_collection built_value http_multi_server logging pedantic path pool shelf shelf_web_socket stream_transform watcher web_socket_channel]
- build_resolvers 2.0.3 [analyzer async build crypto graphs logging path package_config pool pub_semver stream_transform yaml]
- build_runner_core 7.0.0 [async build build_config build_resolvers collection convert crypto glob graphs json_annotation logging meta path package_config pedantic pool timing watcher yaml]
- built_collection 5.1.0
- built_value 8.1.0 [built_collection collection fixnum meta]
- characters 1.1.0
- charcode 1.2.0
- checked_yaml 2.0.1 [json_annotation source_span yaml]
- cli_util 0.3.0 [meta path]
- clock 1.1.0
- cloud_firestore_platform_interface 5.1.2 [collection firebase_core flutter meta plugin_platform_interface]
- cloud_firestore_web 2.1.2 [cloud_firestore_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins js]
- code_builder 4.0.0 [built_collection built_value collection matcher meta]
- collection 1.15.0
- convert 3.0.0 [typed_data]
- crypto 3.0.1 [collection typed_data]
- dart_style 2.0.1 [analyzer args path pub_semver source_span]
- fake_async 1.2.0 [clock collection]
- file 6.1.2 [meta path]
- firebase_auth_platform_interface 4.3.1 [firebase_core flutter meta plugin_platform_interface]
- firebase_auth_web 1.3.1 [firebase_auth_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins http_parser intl js meta]
- firebase_core_platform_interface 4.0.1 [collection flutter meta plugin_platform_interface]
- firebase_core_web 1.1.0 [firebase_core_platform_interface flutter flutter_web_plugins js meta]
- fixnum 1.0.0
- flutter_web_plugins 0.0.0 [flutter js characters collection meta typed_data vector_math]
- frontend_server_client 2.1.0 [async path]
- get 4.1.4 [flutter]
- get_it 7.1.3 [async collection]
- glob 2.0.1 [async collection file path pedantic string_scanner]
- graphs 2.0.0
- http_multi_server 3.0.1 [async]
- http_parser 4.0.0 [charcode collection source_span string_scanner typed_data]
- intl 0.17.0 [clock path]
- io 1.0.0 [meta path string_scanner]
- js 0.6.3
- json_annotation 4.0.1
- logging 1.0.1
- matcher 0.12.10 [stack_trace]
- meta 1.3.0
- mime 1.0.0
- nested 1.0.0 [flutter]
- package_config 2.0.0 [path]
- path 1.8.0
- pedantic 1.11.1
- plugin_platform_interface 2.0.0 [meta]
- pool 1.5.0 [async stack_trace]
- provider 5.0.0 [collection flutter nested]
- pub_semver 2.0.0 [collection]
- pubspec_parse 1.0.0 [checked_yaml collection json_annotation pub_semver yaml]
- recase 4.0.0
- shelf 1.1.4 [async collection http_parser path stack_trace stream_channel]
- shelf_web_socket 1.0.1 [shelf stream_channel web_socket_channel]
- sky_engine 0.0.99
- source_gen 1.0.2 [analyzer async build dart_style glob meta path pedantic source_span yaml]
- source_span 1.8.1 [collection path term_glyph]
- stack_trace 1.10.0 [path]
- stream_channel 2.1.0 [async]
- stream_transform 2.0.0
- string_scanner 1.1.0 [charcode source_span]
- term_glyph 1.2.0
- test_api 0.3.0 [async boolean_selector collection meta path source_span stack_trace stream_channel string_scanner term_glyph matcher]
- timing 1.0.0 [json_annotation]
- typed_data 1.3.0 [collection]
- vector_math 2.1.0
- watcher 1.0.0 [async path pedantic]
- web_socket_channel 2.1.0 [async crypto stream_channel]
- yaml 3.1.0 [collection source_span string_scanner]

Hi @carlodenardin
Please see https://firebase.flutter.dev/docs/overview#improve-ios-build-times
Thank you


IRIS —> EarthScope

Closes #21

Note to all the hundreds of thousands of SAUL users out there... this is, obviously, a breaking change


request: test adding duplicate headers to the request

Tests from #382 which is otherwise no longer necessary.

Thanks!


I need to write a README

I wrote the README and added links to images of the site and to my github pages address


[GURPS] Several translations are not working

I haven't looked at the sheet for a couple of weeks due to work. I just noticed that translations that used to work are no longer working. I did merge in all the latest updates and the translations are working for both the main development file translation.json and the other /translations/en.json. on my sandbox.
Here's a screenshot of the issue I'm seeing.

There was some ups and downs with that yesterday, but it should be solved now. Have you checked if the translations work today?

Hi @Anduh that looks good! thank you!


Rotating car and map

SUMMARY
Rotating car on map according to the path received from google API
DETAILS
I Amay, Thanks for the fantastic package. So I'm developing navigation application. I that application, I would like to navigate  and rotate car on the map according to the path I have. Can you please add this feature or is there any work out for this.

### PLATFORMS

<!-- which platform do you want? -->

- [x] Android
- [x] iOS
- [x] UWP

Maybe you can use Map.AnimateCamera() with CameraUpdateFactory and CameraUpdate .
https://github.com/amay077/Xamarin.Forms.GoogleMaps/blob/bc4a52673732195b15900c73d791b9ecb3c65433/XFGoogleMapSample/XFGoogleMapSample/CameraPage.xaml.cs#L83-L93
But I think it is difficult to making like a car navigation apps.

Hey @JitendraEpicomm,
I have a simple suggestion for you ...
The pin position is updated based on the current position...
the more you query the GPS data, the smaller and more accurate the steps that your pin jumps on the map.
If you just want to turn the pin in the direction of travel,
you just need to query the compass values from your device (for example with Xamarin.Essentials.Compass) and rotate the pin accordingly via Pin.Rotation = compass_value.
If you want to rotate the map, as with Google Maps navigation, you can also turn the map with Map.MoveCamera accordingly. The bearing property must then receive the compass value.
Important: do not use Map.AnimateCamera to rotate the map in this particular case as the position and device orientation may change faster than the animation is finished.
Here's an example with Xamarin.Forms.Essentials:
//Starting Compass:
private void StartCompass() { 	if (!Compass.IsMonitoring)     { 		Compass.ReadingChanged += OnCompassChanged;         Compass.Start(SensorSpeed.Game, true); 	} }
// Stop Compass
private void StopCompass() { 	if (Compass.IsMonitoring)     { 		Compass.Stop();     } }
// CompassChangedEvent
private void OnCompassChanged(object sender, CompassChangedEventArgs e) {         // If you want to rotate the map... 	if (MAP_ROTATION_ENABLED)         { 		// map rotates with your device direction                 map.MoveCamera(new CameraPosition(YOUR-LOCATION, YOUR-ZOOM, e.Reading.HeadingMagneticNorth, YOUR-TILT));         }         // pin always rotates (if pin.Flat = true) 	Device.BeginInvokeOnMainThread(()=> 	{ 		pin.Rotation = e.Reading.HeadingMagneticNorth; 	}); }
I do it in my app as well and it works fine.
The above code is for illustration only and is untested.
In my code are still too many other functions in it, which have nothing to look for here now ...
I hope it helps you...
Jannik


Inconsistency with Nomenclature Emails or Email

In the README the module of Emails is given as an example.
defmodule MyApp.Emails do
  import Bamboo.Email

  def welcome_email do
    new_email(
      to<EMAIL_ADDRESS>      from<EMAIL_ADDRESS>      subject: "Welcome to the app.",
      html_body: "Thanks for joining!",
      text_body: "Thanks for joining!"
    )

    # or pipe using Bamboo.Email functions
    new_email
    |><EMAIL_ADDRESS>    |><EMAIL_ADDRESS>    |> subject("Welcome!!!")
    |> html_body("Welcome")
    |> text_body("welcome")
  end
end

When in the docs for testing Email the singular form is used as an example.
https://hexdocs.pm/bamboo/Bamboo.Test.html
defmodule MyApp.Email do
  import Bamboo.Email

  def welcome_email(user) do
    new_email(
      from<EMAIL_ADDRESS>      to: user,
      subject: "Welcome!",
      text_body: "Welcome to the app",
      html_body: "Welcome to the app"
    )
  end
end

Personally, I think the Singular form is better compared to Plural. Should the README be updated to Email?

I don't have a strong preference either way, but you are 100% right that making them consistent would be better. Would you mind opening a PR to go with Email? If not LMK and I'll tackle it or add a label so someone else can give it a try.
Thanks for reporting this!

@paulcsmith Thanks, I'd be happy to open a PR for it Friday. 👍

@paulcsmith hey, I found this in the readme MyApp.Register(user) it seems like erlang syntax. Shouldn't it be something like MyApp.Register.run(user).

Closed by #270


Feature/245 add documentation to add openid scope for OIDC client

Camunda Keycloak Identity Provider Pull Request
Extend documentation with 'openid' scope for Keycloak 20 and up.
Description
Extend documentation with 'openid' scope for Keycloak 20 and up. Instruction to create an client scope.
Additional context
Since Keycloak 20, user queries require an 'openid' scope for OIDC clients.
See issue https://github.com/camunda-community-hub/camunda-platform-7-keycloak/issues/245.
Types of changes

[x] Documentation update (changes made to an existing piece of documentation)

Probot.

[ ] I will tag @celanthe in a new comment on this issue if 30 days have passed since my pull request was opened and I have not received a response from the extension's Maintainer

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

@haiko-ritense 👍


Fix the default value for builder.id in the config doc

Prior to this commit, the config doc says the default value for
the builder.id field is tekton-chains. However, the default value is
https://tekton.dev/chains/v2 that is defined in the pkg/config/config.go
file.

/retest

/lgtm
/approve


getAmplifyDataClientConfig() fails to check Amplify data variables when API name is defined

Environment information
System:
  OS: Windows 11 10.0.26100
  CPU: (12) x64 13th Gen Intel(R) Core(TM) i5-1335U
  Memory: 2.08 GB / 15.72 GB
Binaries:
  Node: 22.2.0 - C:\Program Files\nodejs\node.EXE
  Yarn: 1.22.22 - ~\AppData\Roaming\npm\yarn.CMD
  npm: 10.9.1 - C:\Program Files\nodejs\npm.CMD
  pnpm: undefined - undefined
NPM Packages:
  @aws-amplify/auth-construct: 1.5.1
  @aws-amplify/backend: 1.9.0
  @aws-amplify/backend-auth: 1.4.2
  @aws-amplify/backend-cli: 1.4.3
  @aws-amplify/backend-data: 1.2.2
  @aws-amplify/backend-deployer: 1.1.11
  @aws-amplify/backend-function: 1.9.0
  @aws-amplify/backend-output-schemas: 1.4.0
  @aws-amplify/backend-output-storage: 1.1.4
  @aws-amplify/backend-secret: 1.1.5
  @aws-amplify/backend-storage: 1.2.4
  @aws-amplify/cli-core: 1.2.1
  @aws-amplify/client-config: 1.5.3
  @aws-amplify/deployed-backend-client: 1.4.2
  @aws-amplify/form-generator: 1.0.3
  @aws-amplify/model-generator: 1.0.9
  @aws-amplify/platform-core: 1.3.0
  @aws-amplify/plugin-types: 1.6.0
  @aws-amplify/sandbox: 1.2.7
  @aws-amplify/schema-generator: 1.2.6
  aws-amplify: 6.10.2
  aws-cdk: 2.172.0
  aws-cdk-lib: 2.172.0
  typescript: 5.6.2
No AWS environment variables
No CDK environment variables

Describe the bug
The doc shows an example of how to use defineAuth and defineFunction to create Cognito post confirmation Lambda trigger. Another related section is grant Lambda function access to API.
When name is given in the defineData(), the generated env that start with the AMPLIFY_DATA prefix are replaced with the given name.
export const data = defineData({
  name: 'CoolName',
  schema,
  authorizationModes: {
    defaultAuthorizationMode: 'apiKey',
    apiKeyAuthorizationMode: {
      expiresInDays: 90,
    },
  },
})

Without name given (default):
AMPLIFY_DATA_GRAPHQL_ENDPOINT
AMPLIFY_DATA_MODEL_INTROSPECTION_SCHEMA_BUCKET_NAME
AMPLIFY_DATA_MODEL_INTROSPECTION_SCHEMA_KEY

With name given:
COOL_NAME_GRAPHQL_ENDPOINT
COOL_NAME_MODEL_INTROSPECTION_SCHEMA_BUCKET_NAME
COOL_NAME_MODEL_INTROSPECTION_SCHEMA_KEY

In this case, in the amplify/auth/post-confirmation/handler.ts, this line const { resourceConfig, libraryOptions } = await getAmplifyDataClientConfig(env) fails to generate the resourceConfig because the isDataClientEnv(env) used in the getAmplifyDataClientConfig() always returns false.
Code below taken from here in the recent pull commit 2224.
const isDataClientEnv = (env: unknown): env is DataClientEnv => {
  return (
    env !== null &&
    typeof env === 'object' &&
    'AMPLIFY_DATA_MODEL_INTROSPECTION_SCHEMA_BUCKET_NAME' in env && // <-- FAIL
    'AMPLIFY_DATA_MODEL_INTROSPECTION_SCHEMA_KEY' in env &&  // <-- FAIL
    'AWS_ACCESS_KEY_ID' in env &&
    'AWS_SECRET_ACCESS_KEY' in env &&
    'AWS_SESSION_TOKEN' in env &&
    'AWS_REGION' in env &&
    'AMPLIFY_DATA_GRAPHQL_ENDPOINT' in env && // <-- FAIL
    typeof env.AMPLIFY_DATA_MODEL_INTROSPECTION_SCHEMA_BUCKET_NAME ===
      'string' && // <-- FAIL
    typeof env.AMPLIFY_DATA_MODEL_INTROSPECTION_SCHEMA_KEY === 'string' && // <-- FAIL
    typeof env.AWS_ACCESS_KEY_ID === 'string' &&
    typeof env.AWS_SECRET_ACCESS_KEY === 'string' &&
    typeof env.AWS_SESSION_TOKEN === 'string' &&
    typeof env.AWS_REGION === 'string' &&
    typeof env.AMPLIFY_DATA_GRAPHQL_ENDPOINT === 'string' // <-- FAIL
  )
}

Reproduction steps
Follow the example in the doc with an additional step to add the name to defineData().

Give the API a name in defineData()

// amplify/data/resource.ts
import { type ClientSchema, a, defineData } from "@aws-amplify/backend";
import { postConfirmation } from "../auth/post-confirmation/resource";

const schema = a
  .schema({
    UserProfile: a
      .model({
        email: a.string(),
        profileOwner: a.string(),
      })
      .authorization((allow) => [
        allow.ownerDefinedIn("profileOwner"),
      ]),
  })
  .authorization((allow) => [allow.resource(postConfirmation)]);
export type Schema = ClientSchema<typeof schema>;

export const data = defineData({
  name: "CoolName", // Give the API a name
  schema,
  authorizationModes: {
    defaultAuthorizationMode: "apiKey",
    apiKeyAuthorizationMode: {
      expiresInDays: 30,
    },
  },
});

Create post-confirmation resource file amplify/auth/post-confirmation/resource.ts:

// amplify/auth/post-confirmation/resource.ts
import { defineFunction } from '@aws-amplify/backend';

export const postConfirmation = defineFunction({
  name: 'post-confirmation',
});

Create post-confirmation handler file amplify/auth/post-confirmation/handler.ts:

// amplify/auth/post-confirmation/handler.ts
import type { PostConfirmationTriggerHandler } from "aws-lambda";
import { type Schema } from "../../data/resource";
import { Amplify } from "aws-amplify";
import { generateClient } from "aws-amplify/data";
import { getAmplifyDataClientConfig } from '@aws-amplify/backend/function/runtime';
import { env } from "$amplify/env/post-confirmation";

const { resourceConfig, libraryOptions } = await getAmplifyDataClientConfig(
  env
);

Amplify.configure(resourceConfig, libraryOptions);

const client = generateClient<Schema>();

export const handler: PostConfirmationTriggerHandler = async (event) => {
  await client.models.UserProfile.create({
      email: event.request.userAttributes.email,
      profileOwner: `${event.request.userAttributes.sub}::${event.userName}`,
  });

  return event;
};

Set trigger in amplify/auth/resource.ts

// amplify/auth/resource.ts
import { defineAuth } from '@aws-amplify/backend';
import { postConfirmation } from './post-confirmation/resource';

export const auth = defineAuth({
  loginWith: {
    email: true,
  },
  triggers: {
    postConfirmation
  }
});

Hello @lengieng, Thank you for the detailed notes on this issue. I am working on a fix and will post updates as I make progress.

@lengieng, The fix for this was released with<EMAIL_ADDRESS>Can you confirm that the feature is working for you with the latest version?

Not OP, I'm gettin the following error from 1.11.0
Argument of type 'ResourceConfig | { invalidType: "Some of the AWS environment variables needed to configure Amplify are missing."; }' is not assignable to parameter of type 'ResourcesConfig | LegacyConfig | AmplifyOutputs'.
Type '{ invalidType: "Some of the AWS environment variables needed to configure Amplify are missing."; }' is not assignable to type 'ResourcesConfig | LegacyConfig | AmplifyOutputs'.ts(2345)
const resourceConfig: ResourceConfig | {
invalidType: "Some of the AWS environment variables needed to configure Amplify are missing.";
}
`import { type Schema } from '../../data/resource';
import { Amplify } from 'aws-amplify';
import { generateClient } from 'aws-amplify/data';
import { getAmplifyDataClientConfig } from '@aws-amplify/backend/function/runtime';
import { env } from '$amplify/env/listTables';
const { resourceConfig, libraryOptions } = await getAmplifyDataClientConfig(env);
Amplify.configure(resourceConfig, libraryOptions);`

@dlamon1,
I just stepped through the docs guide with a newly create react app. I get the same error you're seeing when I attempt to use getAmplifyDataClientConfig configuration when I haven't added permission to my data schema to allow it to be accessed by my function.
import { functionWithDataAccess } from '../functions/data-access/resource';
const schema = a.schema({
...
}).authorization((a) => [a.resource(functionWithDataAccess)]);

If you've done this and you're still seeing the error, can you share your .amplify/generated/env/listTables.ts file contents?
Thanks!

Sure, though what I posted is most of that resouce.ts
data/resource.ts
import { type ClientSchema, a, defineData } from '@aws-amplify/backend';
import { HardwareSchema } from './hardware.schema';
import { ProjectSchema } from './project.schema';
import { ConnectorSchema } from './connector.schema';
import { ManufacturerSchema } from './manufacturer.schema';
// import { FunctionsSchema } from './functions.schema';
import { onAdmin } from '../functions/onAdmin/resource';
import { listTables } from '../functions/listTables/resource';
import { clearRowsInTable } from '../functions/clearRowsInTable/resource';

const schema = a
  .schema({
    ...HardwareSchema,
    ...ProjectSchema,
    ...ConnectorSchema,
    ...ManufacturerSchema,
    // ...FunctionsSchema
    listTables: a
      .query()
      .arguments({})
      .returns(a.string())
      .handler(a.handler.function(listTables))
      .authorization((allow) => allow.group('ADMINS'))
  })
  .authorization((allow) => [allow.resource(listTables)]);

export type Schema = ClientSchema<typeof schema>;

export const data = defineData({
  schema,
  authorizationModes: {
    defaultAuthorizationMode: 'userPool'
  }
});

functions/listTables/resource.ts
// import { DynamoDB } from '@aws-sdk/client-dynamodb';
import type { Handler } from 'aws-lambda';
import { AmplifyClient, ListBranchesCommand } from '@aws-sdk/client-amplify';
import type { S3Handler } from 'aws-lambda';
import { type Schema } from '../../data/resource';
import { Amplify } from 'aws-amplify';
import { generateClient } from 'aws-amplify/data';
import { getAmplifyDataClientConfig } from '@aws-amplify/backend/function/runtime';
import { env } from '$amplify/env/listTables';

const { resourceConfig, libraryOptions } = await getAmplifyDataClientConfig(env);

Amplify.configure(resourceConfig, libraryOptions);

const client = generateClient<Schema>();

// Initialize the Amplify client
export const handler: Handler = async () => {}

@dlamon1 ,
Interesting. Your code from functions/listTables/resource.ts looks like the content I would expect to see in functions/listTables/handler.ts.
The function resource.ts files usually look something like:
import { defineFunction } from '@aws-amplify/backend';

export const listTables = defineFunction({
  name: 'listTables',
});

In data/resource.ts you have import { listTables } from '../functions/listTables/resource';, but listTables isn't exported in the copied code. I would guess that this is in the file, but outside the context you provided.
If you are merging the function resource and handler definition into a single file like this, you'll need to separate them out. The resource.ts files compose the CDK constructs needed to synthesize your backend where the handler.ts files are built and the built artifacts are deployed to lambda.
When I merge these files like this, I get other import error Cannot find package '$amplify'. I'm not sure how this would build to have the error you're encountering.

You're very kind at calling out my obvious mistake, thank you, you're right.
import { defineFunction } from '@aws-amplify/backend';

export const listTables = defineFunction({
  name: 'listTables'
});

*To clarify, this was the the resource.ts file I had already implement when receiving this error.

The listTables.ts file
// This file is auto-generated by Amplify. Edits will be overwritten.
export const env = process.env as any;

@dlamon1, Looking at the content for .amplify/generated/env/listTables.ts helps. This is the content that gets written to the file right before the function is built. When the build succeeds the fully typed content is written. I haven't been able to replicate this in my example project. Would it be possible to provide an example project repo that is experiencing the issue? It would be helpful to get your package.json, 'tsconfig` and any lint config files,  but not as helpful as having a complete example of the issue.

I'm having this issue for a Angular project, its a fresh project following the Create a user profile record

data/resource.ts
const schema = a.schema({
  NLBUser: a.model({
    id: a.string(),
    ...
    profileOwner: a.string(),
    ...
  }).authorization((allow) => [
    allow.ownerDefinedIn("profileOwner")
  ]),
...
}).authorization((allow) => [allow.publicApiKey(), allow.resource(postConfirmation)]);

auth/resource.ts
import { defineAuth } from '@aws-amplify/backend';
import { postConfirmation } from './post-confirmation/resource';

/**
 * Define and configure your auth resource
 * @see https://docs.amplify.aws/gen2/build-a-backend/auth
 */
export const auth = defineAuth({
  loginWith: {
    email: true,
  },
  triggers: {
    postConfirmation
  }
});

auth/post-confirmation/resource.ts
import { defineFunction } from '@aws-amplify/backend';

export const postConfirmation = defineFunction({
    name: 'post-confirmation',
});

auth/post-confirmation/handler.ts
import type { PostConfirmationTriggerHandler } from "aws-lambda";
import { type Schema } from "../../data/resource";
import { Amplify } from "aws-amplify";
import { generateClient } from "aws-amplify/data";
import { getAmplifyDataClientConfig } from '@aws-amplify/backend-function/runtime';
import { env } from "$amplify/env/post-confirmation";

const { resourceConfig, libraryOptions } = await getAmplifyDataClientConfig(
  env
);

Amplify.configure(resourceConfig, libraryOptions);

const client = generateClient<Schema>();

export const handler: PostConfirmationTriggerHandler = async (event) => {
  await client.models.NLBUser.create({
    email: event.request.userAttributes.email,
    profileOwner `${event.request.userAttributes.sub}::${event.userName}`,
  });

  return event;
};

On the statement Amplify.configure(resourceConfig, libraryOptions); I get the error
Argument of type '{ invalidType: "Some of the AWS environment variables needed to configure Amplify are missing."; }' is not assignable to parameter of type 'ResourcesConfig | LegacyConfig | AmplifyOutputs'.

On the statement
const { resourceConfig, libraryOptions } = await getAmplifyDataClientConfig(
  env
);

Both resourceConfig and resourceConfig are returning
invalidType: "Some of the AWS environment variables needed to configure Amplify are missing.";

Where could I find those missing variables or how can i define them? Thanks!

Hi @jserrano-alq,
Thank you for all the details. I think I've gone through the same process, starting an Angular app and setting up amplify with an auth trigger to create a profile record.
I didn't encounter the error you're seeing, but I've capture my example app here.
Locally, I'm using node v20.18.0 (npm v10.8.2), which versions are you building with?
You're right that using '../amplify_outputs.json' directly doesn't work. Both sandbox and deploy don't construct the outputs file until after the cdk constructs have been synthesized. Locally, the sandbox will use the outputs file built by a prior run, but deploying only runs once, so will always encounter that error.
I don't see any obvious mistakes or differences and I appreciate your help in working to track down the difference that is causing this error in your environment.


add instructions for ipfs connect via powergate

Can you change cell 3 in the ipynb to write out the array as a file and add that in to the repo? Then we can try to add the array to a decentralized file store.
stenographic_masks_store_file = open("stenographic_masks_stored.txt")
stenographic_masks_store_file.write(stenographic_masks_stored)
stenographic_masks_store_file.close()


Gardening: Delete 7thWorkshop/EasyHook.dll

We haven't used this in a very long time

Good catch, thank you very much!


Add support for deletion of container and npm packages

This action currently does not work with GitHub Container Registry packages. Also, the npm registry is about to be migrated to the same new architecture as GHCR, this action won't work for npm soon too.
To do: adapt this action to work with the new GitHub Package Registry achitecture in order to support deleting packages from container and npm registries.

+1 for ghcr packge version deletion support!

Deleting untagged multi-arch images might be tricky because the individual arch images aren't tagged (AFAIK).

This issue has caused our organization npm package registry to grow too large (started August/September), accumulating so many non-stable versions, because our retention policy is not being processed, via this GitHub action.
I understand the code for this GitHub action and would like to help implement a fix.  But what exactly is it in the new registry architecture that's causing an issue with this action?
Described here in the docs https://docs.github.com/en/packages/learn-github-packages/deleting-and-restoring-a-package#deleting-a-version-of-a-repository-scoped-package-with-graphql is that a GraphQL mutation cannot be used to delete the package anymore.  Is that the only problem, and we could perhaps modify the delete-version.ts code to use the Packages REST API to delete?
Or is there more to the permissions thing?  Trying to execute the GraphQL query for the list of versions in one of our npm packages, it seems to return a very short list -- versions that were published around August.  Versions that were published after some date in August, though still appearing in the Web UI, are not returned in the GraphQL query.  Is the GraphQL query operation also not supported with the new architecture (which would lead to a bigger fix for this GitHub action)?

@peter-at-work The GitHub Packages GraphQL API does not support containers or Docker images that use the package namespace https://ghcr.io/OWNER/PACKAGE-NAME, or npm images that use the package namespace https://npm.pkg.github.com/OWNER/PACKAGE-NAME. For more information about GraphQL support, see "Deleting a version of a repository-scoped package with GraphQL."
https://docs.github.com/en/packages/learn-github-packages/deleting-and-restoring-a-package#:~:text=The GitHub Packages,with GraphQL."
it means new npm packages published  after August will not appear on GraphQL output.

it means new npm packages published after August will not appear on GraphQL output.

I really want to start a discussion on this.  Our organization really needs this GitHub action for running our artifact/package retention policies.  We could readily fork this action repo and refactor within our fork, but we also would want to contribute back to the GitHub Actions community and provide a usable fix.  There are a few roadmap topics we would want to get some clarification on.
In the public repositories for @actions, it seems that this is the only GitHub Action that deals with GitHub Packages.  There aren't any actions for publishing into GitHub actions because the individual tools are used (e.g., npm publish, nuget push, docker push).  Because keeping the package store in a manageable size is a maintenance-type activity, it makes sense that this custom GitHub Action is used for this.  Is GitHub committed to continue maintaining this repo (i.e., patches, dependency updates) even when we get it working?  Or are there plans to just deprecate this action and have organizations write their own action?
It is documented that GraphQL doesn't support NPM and Container packages, but is it in the roadmap for GraphQL to support this?  I don't see any technical reason preventing the implementation of proper GraphQL resolvers to handle the different architecture for NPM and Container packages.  If that's the case, should we just wait for GitHub to develop the appropriate resolvers?  The GraphQL resolvers are, understandably, private to GitHub, and we won't be able to contribute to it.
If GraphQL support is not ever planned, then is a refactor to the Packages REST API the right approach?  With the Packages REST API, there is one additional requirement of providing the package_type (e.g., npm, container, etc.) and that means a breaking change and a major rev to the version of this GitHub action.
Also, will the different architecture for NPM and Container packages introduce some conditional code?  The other package types are still associated with repos, so the repo parameter could still be useful.  But the Packages REST API doesn't seem to use or require the repo parameter.  NPM and Container packages look like they are associated with the owner/organization by default.  Is the roadmap to move all the other package types to this new architecture and associated to the organization?  It also means that GITHUB_TOKEN cannot be used for this action because it is limited in scope to the repo where the action is running against.  It will now need a separate PAT with the appropriate permissions.

Is there any progress here?

As an organization (and paying for GitHub Enterprise), we still a prefer a GitHub-authored/sanctioned action for processing our package retention policies.  Some organizations have tight security restrictions on what open-source packages can be incorporated into their software development lifecycle. The reason is often dependent on the size, reputation, and longevity of the maintainers of the packages, to minimize the risk of rogue actors arising in the software supply chain.
The action implemented in https://github.com/SmartsquareGmbH/delete-old-packages has more recent activity and has technically surpassed the features of this action.  It uses a strategy-based (GraphQL, REST) approach to this issue and have addressed this limitation on npm packages with their v0.6.0 release.
Can we get some thoughts from the maintainers on what the roadmap is for this GitHub-authored action?

@peter-at-work
Hello from GitHub Packages! We started to work on refactoring this Action so that it supports our package registries that run on the new architecture. You will see an updated version very soon.

We are working on supporting this action for all the registries migrated to the new architecture. The tentative release date is 20th January 2023.

This has been resolved with v4.0.0 of this Action.
Required steps to use this Action for the new GitHub Packages architecture:

Update action’s version from v3 to v4
Supply mandatory package-type and package-name params
The repository running the workflow must have Admin permissions over the package

This has been resolved with v4.0.0 of this Action.
Required steps to use this Action for the new GitHub Packages architecture:

Update action’s version from v3 to v4
Supply mandatory package-type and package-name params
The repository running the workflow must have Admin permissions over the package

We just tested v4 of the action, and it properly purged old versions of our NPM packages and matched the retention policy we specified.
🙏Thank you!

@tinaheidinger how do I make it work for GHCR packages? I tried a few different things but always get
Error: get versions API failed. Package not found.

This is my config:
      - uses: actions/delete-package-versions@v4
        with:
          package-name: 'davefpm/dave-test'
          package-type: 'container'
          min-versions-to-keep: 2

@DaveFPM i got the same error, then i added the owner and token and it works

uses: actions/delete-package-versions@v4
with:
owner: 'github'
package-name: 'test-package'
package-type: 'container'
token: ${{ secrets.GITHUB_PAT }}
min-versions-to-keep: 3

@DaveFPM package-name will be dave-test. Also, if you are using GITHUB_TOKEN (default), please ensure that the repository is given admin access by going on package settings page -> manage actions access

i got the same error, then i added the owner and token and it works

@csaba-kovacs owner takes the default value of current repo owner and is required if you want to delete package in a different org than the one where workflow is executed. token takes the default value of GITHUB_TOKEN. If repository is not provided admin access to package as mentioned above, then you need to provide a PAT with package:read and package:delete scope. If admin access is given to the repo, then token is not needed

@s-anupam even if i have the Manage Action access set to the repo with admin role still gives me API error without using token.

@csaba-kovacs Can we know whether the correct permissions are set for the GITHUB_TOKEN over packages as write? Please refer to this link to set up permissions https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token

@nishthaGupta Ah yes, i set the permission/package scope to write on the job level and it solved it. Thanks!:)

@s-anupam Thanks for that, it worked. But does it also support ignore-versions? I'm trying to have it only delete beta/non beta packages depending, but it doesn't seem to work:
      - name: Docker cleanup develop images
        if: github.ref == 'refs/heads/develop'
        uses: actions/delete-package-versions@v4
        with:
          package-name: 'dave-test'
          package-type: 'container'
          min-versions-to-keep: 2
          ignore-versions: '^((?!beta).)*$'

      - name: Docker cleanup production images
        if: github.ref == 'refs/heads/main'
        uses: actions/delete-package-versions@v4
        with:
          package-name: 'dave-test'
          package-type: 'container'
          min-versions-to-keep: 3
          ignore-versions: 'beta'


3D CNNs based approach

[x] Dataset
[ ] Basic visualization (follow #7 )
[ ] Literature

[x] #8
[ ] @Tanvig Add the other paper for which you found code here

[ ] Implementing the (2+1)D model (used in both papers above)
[ ] Implementing the 3D model (used in both papers above)

Dataset needs to have high density EEG. We found only one such dataset: https://github.com/csndl-iitd/realtime-sleep-staging/issues/5#issuecomment-2126712946

Basic data preprocessing:

Down sample to 100 Hz
Apply band pass filter between 0.2 Hz and 40 Hz (which also removes all line noise)
Re-reference to mastoid electrodes (what are the electrode names?)
Epoch the data

Use the annotations to detect 30 second epochs that are manually labeled
Generate individual .npy files for each epoch with all 64 electrode pre-processed data and save with appropriate filename

Paper
Tran, D., Wang, H., Torresani, L., Ray, J., LeCun, Y., & Paluri, M. (2018). A closer look at spatiotemporal convolutions for action recognition. In Proceedings of the IEEE conference on Computer Vision and Pattern Recognition (pp. 6450-6459).
GitHub repositories:

https://github.com/leftthomas/R2Plus1D-C3D
https://github.com/murari023/R2Plus1D
https://github.com/facebookresearch/VMZ
https://github.com/murilovarges/R2Plus1D

Summary:

The study is motivated by the observation that 2D CNNs applied to individual video frames perform well in action recognition. It demonstrated that 3D CNNs surpass 2D CNNs within the residual learning framework. Furthermore, it showed that decomposing 3D convolutional filters into separate spatial and temporal components using the R(2+1)D model, based on ResNet architecture, significantly improves accuracy.

They tested various models, such as 2D convolutions (R2D and f-R2D), 3D convolutions (R3D), Mixed convolutions (MCx and rMCx) and R(2+1)D convolutions.

The 2D convolutions treat each frame independently and fail to capture temporal information adequately.

The R3D convolution captures spatial and temporal information jointly but is computationally expensive and less effective than decomposed models.

The mixed models combine 2D and 3D convolutions within the same network, mixing them at various layers to balance spatial and temporal feature extraction. These may not fully exploit the temporal information available in the video sequences, leading to suboptimal performance, especially on tasks requiring long-term context understanding.

The R(2+1)D model decomposes a 3D convolution into a sequence of 2D and 1D convolutions. A 2D convolution of 1×7×7 (handling spatial dimensions) is followed by a 1D convolution of 3×1×1 (handling the temporal dimension) across consecutive frames. It consistently outperformed all the above models across various datasets.

Compared to full 3D convolution, (2+1)D decomposition offers two advantages:

Increased Nonlinearities: It doubles the number of nonlinearities in the network due to the additional ReLU between the 2D and 1D convolutions in each block, increasing the complexity of representable functions.

Easier Optimization: Forcing 3D convolution into separate spatial and temporal components simplifies optimization, resulting in lower training error compared to 3D convolutional networks of the same capacity. The gap in training losses is larger for deeper networks, indicating the facilitation in optimization increases with depth.

The below GitHub repositories use 3D-CNN for EEG data. They might be useful when we convert EEG data into image frames for our model.

https://github.com/KvanNoord/3D-CNN-EEG-Emotion-Classification

https://github.com/Daisybiubiubiu/EEG-Emotion-Recognition

https://github.com/AkiKono/EEG-3D-CNN

https://github.com/matt-houk/MB3DCNN

#7 Basic Data Visualizations
Data information:

Dataset Description
Information
Comments

Number of subjects
19
Performed two different cognitive tasks on two different days before napping. Link: https://osf.io/zcu2w

Number of recordings
36
(2-night recordings of 17 subjects and 1-night recording of 2 subjects) Link: https://github.com/nmningmei/Get_Sleep_data/blob/main/data/available_subjects.csv

Number of channels
64
62 EEG + 2 EOG Link: https://osf.io/ebvsr

Original sampling frequency
1000 Hz

Original highpass and lowpass filters
highpass: 0.0 Hz lowpass: 500.0 Hz

Data preprocessing steps:

Downsampling to 100 Hz.

Applying bandpass filter between 0.2 Hz and 40 Hz (this also removes all line noise around 60 Hz).

Performing average re-referencing on the EEG raw data. Alternatively, we can also perform mastoid re-referencing using TP9 and TP10 electrode positions (refer here).

Visualizations
The below visualizations are for single subject 29 (day 1)
This notebook contains all the visualizations and details: https://colab.research.google.com/drive/1QYWn7DLtCCCWRf5erdWIgdv6hdFR9-xH?usp=sharing
Before pre-processing

The raw EEG plots are too heavy to be uploaded here

For simplicity, this is a plot for 'Oz' channel for 30-sec duration (X -axis: Time (ms), Y-axis: Voltage (uV))

Power Spectral Density (PSD) plot for all the channels

Hypnogram

After pre-processing

For comparison , this is a plot for 'Oz' channel for 30-sec duration (X -axis: Time (ms), Y-axis: Voltage (uV))

Power Spectral Density (PSD) plot for all the channels. We can see that the line noise at 60 Hz has disappeared due to bandpass filtering. We can also see a notch around 12-13 Hz which may signify the alpha waves with high power.

Below is a spectrogram for a single channel (Oz). The x-axis ranges from 0 - 1804.95 secs. (i.e. the total duration).

The below plot shows the spectrogram for single channel Oz for a duration of 30 secs from starting. We can observe the high power spectrum around 11-12 Hz (might be alpha waves)

tSNE plot for all subjects
The below tSNE plots were created using 30 seconds epochs from all the subjects. These epochs are given as input features to the tSNE plots. The data is z-scaled before plotting. The three plots show varying level of perplexity (parameter relating to the number of nearest neighbors).

UMAP plots for all subjects
The below UMAP plots were created using 30 seconds epochs from all the subjects. These epochs are given as input features to the UMAP plots. The data is z-scaled before plotting. The two plots show varying levels of n_neighbours (parameter that balances local versus global structure in the data). The last one shows 3 dimensional plot.

Project update:


Update README.md

add quotes around url

Does it break without this? Works fine with me.

Breaks for me without them.


Nothing happens after I've installed

I've followed the installation instructions and nothing happens, either onSave or onEdit. Similar to what Anton and James raised in the reviews.
I ended up manually updating the Preferences: User Settings instead of the Preferences: Settings that is recommended (wasn't an option).
sqlfluff is installed and works from the command line.
I'm running:

macOS Monterey v12.3 (Apple M1 chip)
VSCode v1.74.2
vscode-sqlfluff v2.2.2.
sqlfluff v1.4.5

Please advise!

@ruben-cit Yeah I need to update the README to be Preferences: User Settings, I didn't realize that was changed in VSCode. Do you see anything in the SQLFluff output channel?

I was seeing the same symptoms. When using the suggested manual configuration in the README, the sqlfluff command fails if the .sqlfluff file doesn't exist. It started working for me when I removed the following line from the settings.json:
"sqlfluff.config": "${workspaceFolder}/.sqlfluff",

@mgreminger Hmmm, interesting. On my end @RobertOstermann's suggestion to just look at the channel output resolved the issue for me! Guess I wasn't looking in the right place/the output wasn't being surfaced for w.e. reason.

@ruben-cit Does specifying an exact path work? You could do that in the workspace settings instead of the global settings. Not an ideal solution, just want to see if the problem is locating the workspace folder.

Also facing similar issue, just installed sqlfluff, but nothing happened. Preferences: User Settings does not even show up in the command palette when I try to search for it. MacOS.

I was seeing the same symptoms. When using the suggested manual configuration in the README, the sqlfluff command fails if the .sqlfluff file doesn't exist. It started working for me when I removed the following line from the settings.json:
"sqlfluff.config": "${workspaceFolder}/.sqlfluff",

you are a lifesaver, thank you, I don't know why isn't this part of the docs - an empty .sqlfluff must be ignored and this checkbox removed


Standardize retriever integration docs

Privileged issue

[X] I am a LangChain maintainer, or was asked directly by a LangChain maintainer to create an issue here.

Issue Content
Issue
To make our retriever integrations as easy to use as possible we need to make sure the docs for them are thorough and standardized. There are two parts to this: updating the retriever docstrings and updating the actual integration docs.
This needs to be done for each retriever integration, ideally with one PR per retriever.
Related to broader issues #21983 and #22005.
Docstrings
Each retriever class docstring should have the sections shown in the Appendix below. The sections should have input and output code blocks when relevant.
To build a preview of the API docs for the package you're working on run (from root of repo):
make api_docs_clean; make api_docs_quick_preview API_PKG=community

where API_PKG= should be the parent directory that houses the edited package (e.g. "community" for langchain-community).
Doc pages
Each retriever docs page should follow this template.
See example here.
You can use the langchain-cli to quickly get started with a new integration docs page (run from root of repo):
poetry run pip install -e libs/cli
poetry run langchain-cli integration create-doc --name "foo-bar" --name-class FooBar --component-type retriever --destination-dir ./docs/docs/integrations/retrievers/

where --name is the integration package name without the "langchain-" prefix and --name-class is the class name without the "Retriever" postfix. This will create a template doc with some autopopulated fields at docs/docs/integrations/retrievers/foo_bar.ipynb.
To build a preview of the docs you can run (from root):
make docs_clean
make docs_build
cd docs/build/output-new
yarn
yarn start

Appendix
Expected sections for the retriever class docstring.
    """__ModuleName__ retriever.

    # TODO: Replace with relevant packages, env vars, etc.
    Setup:
        Install ``__package_name__`` and set environment variable ``__MODULE_NAME___API_KEY``.

        .. code-block:: bash

            pip install -U __package_name__
            export __MODULE_NAME___API_KEY="your-api-key"

    # TODO: Populate with relevant params.
    Key init args:
        arg 1: type
            description
        arg 2: type
            description

    # TODO: Replace with relevant init params.
    Instantiate:
        .. code-block:: python

            from __package_name__ import __ModuleName__Retriever

            retriever = __ModuleName__Retriever(
                # ...
            )

    Usage:
        .. code-block:: python

            query = "..."

            retriever.invoke(query)

        .. code-block:: python

            # TODO: Example output.

    Use within a chain:
        .. code-block:: python

            from langchain_core.output_parsers import StrOutputParser
            from langchain_core.prompts import ChatPromptTemplate
            from langchain_core.runnables import RunnablePassthrough
            from langchain_openai import ChatOpenAI

            prompt = ChatPromptTemplate.from_template(
                \"\"\"Answer the question based only on the context provided.

            Context: {context}

            Question: {question}\"\"\"
            )

            llm = ChatOpenAI(model="gpt-3.5-turbo-0125")

            def format_docs(docs):
                return "\n\n".join(doc.page_content for doc in docs)

            chain = (
                {"context": retriever | format_docs, "question": RunnablePassthrough()}
                | prompt
                | llm
                | StrOutputParser()
            )

            chain.invoke("...")

        .. code-block:: python

             # TODO: Example output.

    """  # noqa: E501

See example here.

@ccurme Would like to contribute to this issue.


Increase tested transfer count and data size

Ok, well I think I've been able to track down at least one of the degenerative states we've been experiencing w/ utp inside trin. But, first a little context...

During some debugging with @mrferris yesterday, we were observing not a single fin packet being sent from the sender -> receiver. This behavior persisted. Until for an unrelated reason, I restarted my terminal and we started to observe fin packets being sent. I have no explanation for this :shrug:
However, after this, we still observe degenerative behavior when running a bridge node against a single trin node. I'd estimate that ~30% of accept'ed content actually completes the offer/accept flow. Though, if we gossip only headers (eg relatively small data chunks) then we see 100% successful completes. Once we start gossiping bodies / receipts (eg relatively large data chunks) then we start to see the degenerative state. This implies that there is some bug when running many concurrent utp transfers.

I've updated the socket test to initiate 50 offer/accept flows for a relatively large piece of data. The error message here is familiar from the ones we've been seeing while debugging the live testnet. I'm happy to continue debugging this test failure and find the cause, but some input from @jacobkaufmann first would be nice to confirm that the test is correctly formed and that you can duplicate the failure.

@jacobkaufmann Have you had the chance to look at this? Not necessarily looking for a fix, but more a confirmation that the test is correctly formed and exposes a bug that needs fixing.

apologies for the delay. I ran the test based on your code here, which appears correctly formed, but I don't see any ERROR logs. can you specify the error message(s) that you refer to above? how large (in bytes) are the payloads for bodies and receipts?

by error i guess i actually meant WARN logs wrt the utp library - the error logs are generated within trin
2023-05-08T13:54:22.659212Z  WARN uTP{send=172 recv=173}: utp_rs::conn: idle timeout expired, closing... unacked=[]

2023-05-08T13:54:22.659465Z  WARN uTP{send=102 recv=103}: utp_rs::conn: idle timeout expired, closing... unacked=[]
2023-05-08T13:54:22.659783Z  WARN uTP{send=100 recv=101}: utp_rs::conn: idle timeout expired, closing... unacked=[]
2023-05-08T13:54:22.660256Z  WARN uTP{send=196 recv=197}: utp_rs::conn: idle timeout expired, closing... unacked=[]
2023-05-08T13:54:22.659212Z  WARN uTP{send=170 recv=171}: utp_rs::conn: idle timeout expired, closing... unacked=[]
2023-05-08T13:54:22.685668Z  WARN uTP{send=104 recv=105}: utp_rs::conn: idle timeout expired, closing... unacked=[]
2023-05-08T13:54:22.889021Z  WARN uTP{send=168 recv=169}: utp_rs::conn: idle timeout expired, closing... unacked=[]
2023-05-08T13:54:22.891754Z  WARN uTP{send=166 recv=167}: utp_rs::conn: idle timeout expired, closing... unacked=[]
2023-05-08T13:54:22.891886Z  WARN uTP{send=128 recv=129}: utp_rs::conn: idle timeout expired, closing... unacked=[]
2023-05-08T13:54:22.892672Z  WARN uTP{send=160 recv=161}: utp_rs::conn: idle timeout expired, closing... unacked=[]
2023-05-08T13:54:22.893107Z  WARN uTP{send=176 recv=177}: utp_rs::conn: idle timeout expired, closing... unacked=[]

re bodies / receipts payload size, running a quick check on recent content values, the largest payload I'm seeing is approx 250_000 bytes out of a sample size of around 25 blocks. Maybe you're wondering so we can confirm whether or not this test is testing realistic bounds of the library as it is used in the wild? If so, fair enough. 1_000_000 bytes (as is tested in these tests) is probably excessive. However, I'm not sure if the cause of the problem here is payload size or actually # of concurrent transfers - since a larger payload size results in more concurrent transfers. If I adjust the test parameters for # of concurrent txs (50/100/1000/10000) and payload size in bytes (10_000, 100_000, 250_000, 500_000) - I got the following results for passing test / failure.

*
50
100
1000
10000

10_000
🟢
🟢
🔴
🔴

100_000
🟢
🔴
-
-

250_000
🟢
🔴
-
-

500_000
🔴
-
-
-

I'm having trouble collecting good data on how many utp transfers we can realistically expect to be going on at the same time while running trin... it's certainly something I can put more effort towards if you think it's useful. But, my intuition is that at the very least while running trin in bridge mode, set to backfill, we can reasonably expect a client to have 100 - 1000 concurrent utp transfers.

That WARN happens when I execute the test in this pr, in the 🔴 cases from the previous comment

huh, well like I said I don't see that when I execute the tests locally. I can try to make the tests more intense and see if the WARN comes up

Weird, so the test in this pr passes for you locally? It very consistently fails for me. So if it's passing for you, I guess it's time to get some outside confirmation. @ogenev @carver @mrferris can one of you pull down this branch and see if this test passes for you locally?

@jacobkaufmann Any progress on transferring this repo over to the ethereum org? that way we could get circleci running which would help resolve our different test results in this case

hmm, that's strange that the timeout is exceeded so quickly, because the test stage runs for less than one minute in that CI failure.
one thing that could be going on in the test is that the CIDs are overlapping with each other, so that messages for CID (100, 101) and messages for CID (101, 102) are being lost to each other or something like that. that looks like there could be a bug in the CID management logic. but to isolate that possibility out, it would be good to see if increasing the gap between consecutive CIDs resolves the CI failure.

@jacobkaufmann IIUC, that's not the problem here. In the test I step_by(2) while incrementing CID pairs, so a sequence of consecutive CID pairs will never overlap. eg (101, 102), (103, 104), (105, 106) etc. I've confirmed locally that this indeed is the sequence of CIDs that are generated and used in the stream, without any overlapping CIDs.
Imo, increasing the gap b/w consecutive CIDs wouldn't reveal anything.
aka (101, 102), (103, 104), (105, 106) is equivalent to (100, 101), (110, 111), (120, 121)
The error in this ci build is the exact invalid deadline error I've described in #55, so imo the issue isn't that a validly set timeout was exceeded, but rather that we enter a "degenerative" state in which an invalid timeout is set -> breaking delay_queue.insert_at(..)

I am pretty sure that all the important bits of this were included in #81


fix: .wasm extension should have lower priority when resolving modules

Fixes #8445
What kind of change does this PR introduce?
Bugfix
Did you add tests for your changes?
No, not sure what kind of test should I add
Does this PR introduce a breaking change?
No
What needs to be documented once your changes are merged?
https://github.com/webpack/webpack.js.org/blob/master/src/content/configuration/resolve.md#resolveextensions

Thanks


[red-knot] complete expression type inference

[x] number literal expression
[x] string literal expression
[x] bytes literal expression
[ ] f-string expression
[x] ellipsis literal expression
[ ] generator expression (blocked on generics)
[ ] list comprehension (blocked on generics)
[ ] dict comprehension (blocked on generics)
[ ] set comprehension (blocked on generics)
[ ] lambda expression
[x] call expression
[ ] starred expression (should be done as part of args/kwargs support)
[ ] yield expression (part of async)
[ ] yield-from expression (part of async)
[ ] await expression (part of async)
[ ] unary expression
[ ] binary expression
[ ] boolean expression
[ ] compare expression
[ ] subscript expression
[ ] slice expression

Could you please clarify why some of these are currently blocked, and what actions would be needed to unblock them?

Could you please clarify why some of these are currently blocked, and what actions would be needed to unblock them?

Hi! Thanks for the nudge. Some of these are actually no longer blocked, because we already did the blocking thing! I've updated the list accordingly.
Some items are blocked by settling on a representation for generic types and handling of type variables in inference. I'm hoping to get to this in the next few weeks.
Some others aren't really blocked but are part of a larger project (for example, adding support for async Python and awaitables.)
If there are any particular items you're interested in working on, let me know and I'm happy to discuss in more detail.

Boolean expression can now be checked off ✅

Would it be okay if I worked on the lambda expression? It doesn't seem to have any major blocking issues, and I think it would be a good starting point for my first contribution to red-knot. Please let me know if you have any other suggestions.

Would it be okay if I worked on the lambda expression? It doesn't seem to have any major blocking issues, and I think it would be a good starting point for my first contribution to red-knot. Please let me know if you have any other suggestions.

Thanks for your interest in contributing! Lambda expression inference would require adding a general Callable type, which we don't have yet, and is quite complex to implement; probably not a great first contribution. I think probably a good starter task would be fleshing out some missing support in unary/binary/compare expressions; see also https://github.com/astral-sh/ruff/issues/13618

Thanks for your interest in contributing! Lambda expression inference would require adding a general Callable type, which we don't have yet, and is quite complex to implement; probably not a great first contribution. I think probably a good starter task would be fleshing out some missing support in unary/binary/compare expressions; see also #13618

Thank you for the helpful explanation! I’ll follow your suggestion and try working on the comparison task first :)


feat(providers): add support for GCP KMS

Add support for GCP KMS. Tested locally.

@ruanda please fix lint error.

@ruanda please add some unit tests.

@mumoshu Sure, I will work on that


Add thread-safe Refresh Token Offset cache

Fixes: https://github.com/Azure/azure-sdk-for-net/issues/7442

Was this API approved?

@KrzysztofCwalina can you sign off on this please?


Add zwave2 to stable

I'm preparing the stable release for Z-Wave 2. v0.14.6 will probably be the final version before that is going to happen.
I'm raising this PR to find potential problems while the final tests are going on.

Well... that was easy :D

1.0.0 will be released in a couple of minutes. It is relatively new, but well-tested:

0.14.x test thread: https://forum.iobroker.net/topic/33733/test-adapter-z-wave-2-v0-14-x/75
The jump from 0.14.9 to 1.0.0 only contains a config change for Danfoss devices which was tested here: https://forum.iobroker.net/topic/33166/test-adapter-z-wave-2-v0-12-x-0-13-x/101

RE-CHECK!

Automated adapter checker
ioBroker.zwave2

[ ] :heavy_exclamation_mark: [E603] NO "## Changelog" found in README.md

Add comment "RE-CHECK!" to start check anew

Hmm, the changelog is now in CHANGELOG.md. Does it really have to be in the readme?

np

Changelog is required for www.iobroker.net site.
You can place only last 3-5 changes in readme.md and the rest on changelog.md. like here: https://github.com/ioBroker/ioBroker.admin/blob/master/CHANGELOG_OLD.md

Ok then I'll need to update my release Script to handle multiple files


[Bug] Can't have a custom font.

When i put a theme and activate it, nothing happening.

Any idea ? I tried uninstall, reinstall, but still nothing..

Does this happen with all themes?

I am also experiencing this issue with all themes, even ones that I made myself that do very little like changing emoji size.

I think I know what is happening

Yep, with every themes

Yep, themes aren't working can confirm it's happening with everyone, at one point I had to reinstall discord itself cause it crashed and was in an infinite update loop then it had javascript failures.

I wan't my themeesss ;-;

Reload, this was closed as it was fixed.


Prepare update when core 0.5.0 is released

This will not compile, it points to local repo on filesystem and doesn't compile yet. I open it for visibility only.

Codecov Report

Merging #567 (5617295) into main (0f80924) will increase coverage by 0.1%.
The diff coverage is 4.2%.

@@           Coverage Diff           @@
##            main    #567     +/-   ##
=======================================
+ Coverage   12.0%   12.1%   +0.1%
=======================================
  Files         34      34
  Lines      10601   10594      -7
=======================================
+ Hits        1277    1283      +6
+ Misses      9324    9311     -13

Impacted Files
Coverage Δ

src/error.rs
0.0% <ø> (ø)

src/farcasterd/runtime.rs
0.0% <0.0%> (ø)

src/swapd/opts.rs
0.0% <0.0%> (ø)

src/swapd/runtime.rs
0.0% <0.0%> (ø)

src/swapd/swap_state.rs
0.0% <ø> (ø)

src/walletd/runtime.rs
0.0% <0.0%> (ø)

src/rpc/request.rs
17.6% <3.2%> (+<0.1%)
:arrow_up:

src/cli/opts.rs
39.3% <40.0%> (ø)

src/cli/command.rs
23.1% <50.0%> (+0.9%)
:arrow_up:

src/databased/runtime.rs
41.9% <100.0%> (ø)

... and 4 more

Continue to review full report at Codecov.

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

These are far fewer changes than I would have expected :)


Can zuul2 be run in mulitple ServerType modes?

Am trying to run Zuul2 in both HTTP and WEBSOCKET modes.

Yes, just make sure they bind on different ports. The enum in the sample app is just for demo purposes. You could run the server in all the modes simultaneously as long as they're on different ports.

Do websocket connections get routed using the same ribbon configurations and groovy filters?


Replace brctl with iproute

Many modern distributions no longer install brctl by default, since bridges can be
created and managed using the ip link command from the iproute package (which is almost always installed).
This commits removes the use of brctl from mininet/nodelib.py.

Maybe some other time, right?


[docs] Fix table

Fixes table that displays the supported tasks for the InferenceClient which is a bit disjointed right now.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Canary Deployment Support Default NS Labels

Describe the feature request
When using revisions for canary upgrades. The sidecar injection relies only on the namespace label of istio.io/rev=something_here. It will ignore the value of istio-injection=enabled. This presents a management challenge on the application side. We run a large enterprise with many teams that consume k8s via our custom helm charts. This includes our namespace setup. If we can't use istio-injection=enabled we are going to be chasing version labels and teams can easily have an outdated chart that will result in a broken deployment.
Suggestion: Have a way to define a default version via the IstioOperator manifest. For example:
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: istio-controlplane
spec:
  defaultRevison: 1-7-4

By defining a default revision in the manifest, operators could then still listen for istio-injection=enabled in a way that cluster admins can control. After a canary rollout is complete, the new revision could then be updated to also listen for regular injection. The Istio operator would then update either sidecar injector or CNI to act accordingly.
Describe alternatives you've considered
[ ] Docs
[x] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[x] User Experience
[ ] Developer Infrastructure
Additional context

Suggestion: Have a way to define a default version via the IstioOperator manifest. For example:

Will this work for you?
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: istio-controlplane
spec:
  revison: 1-7-4

Ref: https://preliminary.istio.io/latest/docs/reference/config/istio.operator.v1alpha1/#IstioOperatorSpec

Hi @shamsher31, I think that might solve: https://github.com/istio/istio/issues/28967. We would just need one manifest per revision?
I don't see how that solves the issue of a default namespace label though. I suppose something like this could work:
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: istio-controlplane
spec:
  revison: 1-7-4
  default: true

When default is true, that version will be what istio-injection=enabled goes to.
The only risk seems to be if someone accidently sets default on more than one manifest. How that could be handled.

@zerobfd Can you triage this?

@Monkeyanator Are you still going to be working on the revision tagging stuff this quarter?

Yep, I'll still be working actively on revision tag stuff (got an integration test merged, writing docs), though not as much as last quarter
@joberdick-rcd what you're describing sounds pretty close to this proposed change. The idea there is to specify default revision to handle istio-injection labels and validation webhook. Additionally, there's a new istioctl x tag command that might work for your use case (lets you give your namespace a stable label like istio.io/rev=prod and then change which revision the prod tag points to).

@Monkeyanator yes, that does seem to attempt to resolve this issue. We are probably safe to close this. I can re-open if I run into anything else. Thanks!

@joberdick istioctl tag set default --revision <rev accomplishes what you're describing here with injecting for istio-injection=enabled.


[CWS] expose service

What does this PR do?
Expose the SERVICE in SECL. This allows to write rules
open.file.path == "/tmp/abc" and event.service == "MYSERVICE"

Motivation

Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes
Use the follow rules with the follow command:
open.file.path == "/tmp/abc" and event.service == "MYSERVICE"

$ DD_SERVICE=MYSERVICE touch /tmp/abc

Reviewer's Checklist

[ ] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[ ] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[ ] A release note has been added or the changelog/no-changelog label has been applied.
[ ] Changed code has automated tests for its functionality.
[ ] Adequate QA/testing plan information is provided. Except if the qa/skip-qa label, with required either qa/done or qa/no-code-change labels, are applied.
[ ] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[ ] If applicable, the need-change/operator and need-change/helm labels have been applied.
[ ] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[ ] If applicable, the config template has been updated.

/merge