Unable to verify covid certificate due to failing date rules

Hi,
I'm writing a node app to verify a covid certificate, scanned from a QR code.
I have a test certificate, with this sc field:
sc: '2021-09-23T14:55:00Z',

When I try to validate this, I get an error:
      'TR-CH-0004': {
        errorMessage: 'rule evaluated to a non-boolean: "2021-09-23T14:55:00Z"'
      },

The rule is:
     {
        "inputParameter":"[\"t.0\",\"t.0.sc\"]",
        "description":"Date of sample collection must exist",
        "id":"TR-CH-0004",
        "logic":{
           "if":[
              {
                 "var":"payload.t.0"
              },
              {
                 "var":"payload.t.0.sc"
              },
              true
           ]
        }
     },

For the date validation rules TR-CH-0005 and TR-CH-0006 also get errors:
I tried various formats for the validationClock. When I pass
      validationClock: '2021-09-30T14:50:52',
      validationClock: '2021-09-30T15:18:07+02:00', // [As actually specified](https://ec.europa.eu/health/sites/default/files/ehealth/docs/eu-dcc_validation-rules_en.pdf)
      validationClock: '2021-09-30T13:29:28Z',
      validationClock: '2021-09-30',
      validationClock:<PHONE_NUMBER>,
      validationClock: '1633006310',

For the ISO date formats I get errorMessage: 'rule evaluation errored out: all operands of a comparison operation must be of integer type'
For<PHONE_NUMBER> I get errorMessage: 'rule evaluation errored out: date argument of "plusTime" must be a string'
For '1633006310' I get errorMessage: 'rule evaluation errored out: not an allowed date or date-time format:<PHONE_NUMBER>'

Here are the rules TR-CH-0005 and TR-CH-0006
     {
        "inputParameter":"[\"t.0\",\"t.0.sc\"]",
        "description":"The date of sample collection must be before the validation date",
        "id":"TR-CH-0005",
        "logic":{
           "if":[
              {
                 "var":"payload.t.0"
              },
              {
                 "<":[
                    {
                       "plusTime":[
                          {
                             "var":"payload.t.0.sc"
                          },
                          0,
                          "day"
                       ]
                    },
                    {
                       "plusTime":[
                          {
                             "var":"external.validationClock"
                          },
                          0,
                          "day"
                       ]
                    }
                 ]
              },
              true
           ]
        }
     },
     {
        "inputParameter":"[\"t.0.tt\",\"t.0.sc\"]",
        "description":"If the test type is \"RAT\" then the validation date must be before the date of sample collection plus 48 hours",
        "id":"TR-CH-0006",
        "logic":{
           "if":[
              {
                 "===":[
                    {
                       "var":"payload.t.0.tt"
                    },
                    "LP217198-3"
                 ]
              },
              {
                 "<":[
                    {
                       "plusTime":[
                          {
                             "var":"external.validationClock"
                          },
                          0,
                          "day"
                       ]
                    },
                    {
                       "plusTime":[
                          {
                             "var":"payload.t.0.sc"
                          },
                          48,
                          "hour"
                       ]
                    }
                 ]
              },
              true
           ]
        }
     },

What do I miss here? Since it seems to me, that I followed the specification and I just downloaded the rule-set from an API, I can't figure out what I'm doing wrong. Maybe there is a bug in certlogic-js but I assume I missed something. I'd be glad for some help.
Thanks :)

It seems like you're not using certlogic-js from this repo directly, but a wrapped one. Most of the error messages (' texts) are not generated by certlogic-js itself. Without the full context I can't help a lot.
Please have a look at https://certlogic-fiddle.vercel.app/ : that might help in validating some assumptions.
The TR-CH-0004 rule indeed doesn't evaluate to a boolean, which is demanded by the rule engines relying on CertLogic. I haven't looked into the other rules yet, because I'd like to have an idea of the full context first.

I have fetched the rules from this API: https://github.com/admin-ch/CovidCertificate-Apidoc/blob/main/open-api/verifier.yaml#L161
So I assumed they are valid.
And I have installed "certlogic-js": "^1.0.0", via yarn as a dependency of my project.
I did not want to write the rules by myself but find rules and some engine, that I could use to verify scanned covid certs. - This was the only js / ts implementation to verify certificates in a node app, that I could find.
What context could I provide?
To apply the rules, I found inspiration in the rules runner implementation. https://github.com/ehn-dcc-development/dgc-business-rules/tree/main/rules-runner/javascript/rules-runner-js

To compare dates, you have to use the after, before, not-after, not-before operators instead of the numeric ones (>, <, <=, >=, respectively).
Non-ISO datetime/timestamp formats are not supported by CertLogic at all, so that explains the last two errors.

To compare dates, you have to use the after, before, not-after, not-before operators instead of the numeric ones (>, <, <=, >=, respectively).

Ok, so I have to check, why the rules of the Swiss Admin API are wrong. - I suppose I have to open an issue there as well.

Non-ISO datetime/timestamp formats are not supported by CertLogic at all, so that explains the last two errors.

Yeah, that's why I started with ISO times. It's also defined in the specification. - I'll check if I can find a better rule set. - Thanks.

You could have a look at https://github.com/eu-digital-green-certificates/dgc-business-rules-testdata
The rules in there are validated by CI to be compliant to the specification, and also have tests.

Thanks for the reference. Unfortunately I did not find any public API to get a current rule set for a given country. - The testdata is only for testing, but not for actual production use.

I'm also having date validation issues. Can someone explain what's wrong with the following?
{   "after": [     {       "var": "dt"     },     "2021-05-04T13:37:42.000Z"   ] }
{   "dn":2,   "ma":"ORG-100001699",   "vp":"J07BX03",   "dt":"2021-06-10",   "co":"UA",   "ci":"URN:UVCI:V1:DE:3RCVMTLAI70VB8D0L5N2K0VXNJ",   "mp":"EU/1/20/1507",   "is":"Issuer Certifcate",   "sd":2,   "tg":"840539006" }
https://certlogic-fiddle.vercel.app/?expr={
++"after"%3A+[
++++{
++++++"var"%3A+"dt"
++++}%2C
++++"2021-05-04T13%3A37%3A42.000Z"
++]
}&data={
++"dn"%3A2%2C
++"ma"%3A"ORG-100001699"%2C
++"vp"%3A"J07BX03"%2C
++"dt"%3A"2021-06-10"%2C
++"co"%3A"UA"%2C
++"ci"%3A"URN%3AUVCI%3AV1%3ADE%3A3RCVMTLAI70VB8D0L5N2K0VXNJ"%2C
++"mp"%3A"EU%2F1%2F20%2F1507"%2C
++"is"%3A"Issuer+Certifcate"%2C
++"sd"%3A2%2C
++"tg"%3A"840539006"
}

The dates are not recognised as dates because they're not wrapped using the plusTime operation, which effectively “lifts” them to date(-time) type. The following does work, and is correct according to the spec.: https://certlogic-fiddle.vercel.app/?expr={
++"after"%3A+[
++++{
++++++"var"%3A+"dt"
++++}%2C
++++"2021-05-04T13%3A37%3A42.000Z"
++]
}&data={
++"dn"%3A2%2C
++"ma"%3A"ORG-100001699"%2C
++"vp"%3A"J07BX03"%2C
++"dt"%3A"2021-06-10"%2C
++"co"%3A"UA"%2C
++"ci"%3A"URN%3AUVCI%3AV1%3ADE%3A3RCVMTLAI70VB8D0L5N2K0VXNJ"%2C
++"mp"%3A"EU%2F1%2F20%2F1507"%2C
++"is"%3A"Issuer+Certifcate"%2C
++"sd"%3A2%2C
++"tg"%3A"840539006"
}

Many thanks for your guidance. I had been using this as a starting point for creating rules, but it seems to be invalid in more than one way https://github.com/eu-digital-green-certificates/dgc-certlogic-android/blob/main/engine/src/test/resources/rule.json


Adds support for opening links in new tabs with meta key

Fixes #24, making it possible to open a link in a new tab by holding down cmd/ctrl and clicking a link.

Thanks @danprince ;)


Feature/always use generateLutNew algorithm

It simplifies the code by removing duplicate, and it does not change the behavior because when when modalityLUT and voiLUT are undefined, generateLutNew does the same calculation as generateLut.

Changes Unknown when pulling e0b983199d259984d0649073be287d8770370fc7 on adreyfus:feature/always_use_generateLutNew_algorithm into ** on chafey:master**.


Almost 6 months no PRs merged, dead project?

There hasn't been much activity on etcd operator lately so I'm wondering if there are any plans to keep supporting it, or should it be forked and maintained elsewhere.
There are even community patches like this:
https://github.com/coreos/etcd-operator/pull/2074
https://github.com/coreos/etcd-operator/pull/2072
that have been made but not merged or commented on in a while.
Looks like the last PR that was merged was May 23rd https://github.com/coreos/etcd-operator/pull/2082
Are the plans to get these changes moving again? I'd like to use this project more and maybe contribute but the lack of merging that is going on makes me apprehensive.
Maybe it can be transitioned over to https://github.com/etcd-io?

Or at least MAINTAINERS file should be updated or something.

Any word on this?

Yea its very unfortunate to see this project is unmaintained at the moment, for now we have created a fork at https://github.com/cbws/etcd-operator. We have already merged in some PR that were waiting to be merged here.

Happy new year! :)
@hongchaodeng maybe could give us some insight ?
Thank you!

Hi,
I left CoreOS (the original company where I created and sustained the project) about two years ago. After that I didn't have any access/permission to this project anymore.
Feel free to fork this project if there is no ongoing support :)

Thank you for your answer @hongchaodeng :)
We'll keep an eye on this operator and see how it goes!

It would be great to know as this is a project I use. I was at kubecon in nov/2018 and there was a meeting about it, the presenters said the had alot of ideas and worked planned for it. After that though the redhat buyout of coreos happened and I'm guessing this fell off the radar after that.

In the blogpost where Red Hat talks about contributing the project the CNCF they mention their plan to continue work on the etcd Operator:

Red Hat plans to continue extending etcd with the etcd Operator to bring even more security and operational ease, enabling users to configure and manage the complexities of etcd using a declarative configuration that creates, configures, and manages etcd clusters.

Source:
https://www.redhat.com/en/blog/red-hat-contributes-etcd-cornerstone-kubernetes-cloud-native-computing-foundation
Can anyone from Red Hat provide an update? It's worrying that it is growing more and more unmaintained every day.

Does anyone at redhat look at this?


recommendations for module template which is ES6 based pattern

Here are my suggestions for the template:

move to ES6 from the beginning
metadata in the appc.js so that we don't have to parse random files to figure it out
scope the appc.js for timodule and re-use guid (we support this already i believe)
use dotted notation for module id as today's pattern
provide an "app" object and "module" object when loading a hyperloop module as part of the lifecycle
module exports internal classes it wants to expose
plugin (optional) directory to allow module to hook into build system
add concept of a plugin API version in the appc.js to make it easier to move to new API changes and also to make it discoverable as part of registry, etc which modules would be impacted.
added unit tests and mocks to validate syntax

We could also provide a utility set of helper classes if we wanted to provide some of the more common routines for modules although i think this should just be a module itself and not part of the framework per se.  I think we should avoid stuff like forcing a base class or bloating with a bunch of extra fluff like check args stuff. If we want to have that, let's create a small module for module devs to use as a convenience.

@cb1kenobi @hansemannn updated the template based on conversation with chris and also added gulp file and tests to validate.  if you run gulp before you npm publish it will now push the compiled module.

Looks great! If we want to use ES6 from the beginning, I'm not sure if we can get everything ready (main thread issues, native JS Core, module CLI) for the currently intended release 5.4.0 in June.

Sorry to chime in but I really don‘t understand the rationale behind most of the data in appc.js. My doubts (to most of which I’m sure you already have an answer) are:

No need for timodule.minsdk since we have engines in package.json
No need for timodule.guid, guid itself is ok even in package.json
No need for timodule.platforms, plarforms itself is ok (properties on the obj can be of type boolean | object)
No need for timodule.moduleidsince we have name in package.json
Why keeping with minsdk when we could easily check for semver match?
Why using JS for the configuration? If the answer is «comments» I don’t even want to open the discussion 👐

Also I’m not that into the fact that modules can change the way my app/project is built.
If they were distributed as npm packages I could explicitly specify it in my app. Super fantasy unicorn tiapp package.json follows:
{
  "name": "AwesomeApp",
  "titanium": {
    "plugins": [
      "a-cool-hl-module/plugin",
      "remove-useless-stuff"
  },
  "dependencies": {
    "a-cool-hl-module": "*"
  },
  "devDependencies": {
    "titanium-plugin-remove-useless-stuff": "*"
  }
}

Of course that titanium property can be moved off its own .titaniumrc.

1 & 2. A package.json should only contain information relevant to the package manager. It should not contain build/configuration settings.
3. I think I agree that timodule.platforms is unnecessary.
4. moduleid != name. The moduleid is a universally unique identifier. name is just a name.
5. I think we can get rid of minsdk since we have apiversion. If we have an apiversion mismatch, then the Titanium build will fail out and you'll have to update the module or downgrade to a Titanium SDK that supports version of the apiversion.
6. JSON files are horrible for configuration. You can't comment stuff out. appc.js solves this and gives us lots of flexibility and the ability to support dynamic values such as those based on environment variables. We've standardized appc.js and are starting to use it instead of JSON or XML files. Here's the spec: https://github.com/appcelerator/cspec-appc-appc.js.
Most modules won't have to change the way your app is built. It's only there just in case a module has to.

Thanks for following up.
About 1 & 2, IMHO you are wrong. The package.json file is the package definition. The fact that Package Managers depend on it its completely tangential but totally predictable :stuck_out_tongue:
About 4 I’m not that sure. The name property of package.json is unique, the issue we have at hand is that it’s unique on a namespace you/we don’t control which is npm’s. I am personally totally fine with this, but I do understand it could not be the case for you.
If you need something to differentiate even more between possible module collision you already have guid. Adding moduleid doesn’t add any more hardening on this IMHO.
About 6… I don’t want to talk about it. Seriously, let’s treat it as a taboo.

On timodule.platforms being unnecessary. I originally was going to just say we could use convention to figure it out -- which i always prefer.  i worry if we generate a skeleton project with iOS, android and windows but you only implement iOS, i worry that we will believe that you support all 3 because of the existence of these skeleton files but in actuality you won't.  So as long as we can resolve that I'm good with removing.
I agree on apiversion vs. minsdk so i'll remove minsdk in favor of the other.

@cb1kenobi one thing i just thought of on minsdk vs. apiversion.
is there a case where you need a newer SDK to support a new iOS feature (as an example) but the module's api version doesn't change (i.e. the module signature or some module package thing)?
seems like this could be very possible and having both would allow you to satisfy this type of situation - which seems rather common.

Hmm, well I could see that a Hyperloop module might have a dependency on a specific iOS/Android/Windows SDK version, but I don't see why the Titanium SDK version would matter beyond the API version. I was envisioning a manifest of sorts being baked into a Hyperloop module release that the Titanium build would use to validate and build the module into the app.

Since HL modules are all JS, will there be any "build" step still, or will they simply be packaged (zipped, ignoring some files) and uploaded? I'm asking because if our new Ti/HL build process/daemon will also feature Babel support - wouldn't it be unnecessary to have this in the module as well?

Approved by the working group, merging!


Fix or change Contact page so it works

Icons to email, LinkedIn, Github function. Included email address as well


Can you extend access token for at least 600 minutes?

We are not issuing access tokens, Microsoft is. They issue it for one hour and with great pain we try to refresh that before it expires if you use -k.


Fix admin permission for helm and unique image tags for each helm deployment

Fix admin permission for helm and unique image tags for each helm deployment

Successful run:

Testing the ACE API:


Publish 1.0.213 live

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

powerbi-ps/MicrosoftPowerBIMgmt.Profile/Connect-PowerBIServiceAccount.md
:white_check_mark:Succeeded
View (powerbi-ps)

powerbi-ps/MicrosoftPowerBIMgmt.Profile/Disconnect-PowerBIServiceAccount.md
:white_check_mark:Succeeded
View (powerbi-ps)

powerbi-ps/MicrosoftPowerBIMgmt.Profile/Get-PowerBIAccessToken.md
:white_check_mark:Succeeded
View (powerbi-ps)

powerbi-ps/MicrosoftPowerBIMgmt.Profile/Invoke-PowerBIRestMethod.md
:white_check_mark:Succeeded
View (powerbi-ps)

powerbi-ps/MicrosoftPowerBIMgmt.Profile/MicrosoftPowerBIMgmt.Profile.md
:white_check_mark:Succeeded
View (powerbi-ps)

powerbi-ps/MicrosoftPowerBIMgmt.Reports/Get-PowerBIReport.md
:white_check_mark:Succeeded
View (powerbi-ps)

powerbi-ps/MicrosoftPowerBIMgmt.Reports/MicrosoftPowerBIMgmt.Reports.md
:white_check_mark:Succeeded
View (powerbi-ps)

powerbi-ps/MicrosoftPowerBIMgmt.Workspaces/Add-PowerBIWorkspaceUser.md
:white_check_mark:Succeeded
View (powerbi-ps)

powerbi-ps/MicrosoftPowerBIMgmt.Workspaces/Get-PowerBIWorkspace.md
:white_check_mark:Succeeded
View (powerbi-ps)

powerbi-ps/MicrosoftPowerBIMgmt.Workspaces/MicrosoftPowerBIMgmt.Workspaces.md
:white_check_mark:Succeeded
View (powerbi-ps)

powerbi-ps/MicrosoftPowerBIMgmt.Workspaces/Remove-PowerBIWorkspaceUser.md
:white_check_mark:Succeeded
View (powerbi-ps)

powerbi-ps/MicrosoftPowerBIMgmt.Workspaces/Restore-PowerBIWorkspace.md
:white_check_mark:Succeeded
View (powerbi-ps)

powerbi-ps/MicrosoftPowerBIMgmt.Workspaces/Set-PowerBIWorkspace.md
:white_check_mark:Succeeded
View (powerbi-ps)

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


azd package hangs

Output from azd version
azd version 1.8.0 (commit 8246323c2472148288be4b3cbc3c424bd046b985)
Describe the bug
I'm running and package on the template cawams/gameleaderboard but 'azd package' just hangs while trying to run the dotnet restore command from inside the Dockerfile
To Reproduce
azd init --template cawams/gameleaderboard
azd up
Expected behavior
Expected that the the stuff got packaged and deployed
Environment
Information on your environment:
* Macos 14.4.1
* Apple M3 (ARM)
* dotnet --version: 8.0.204
* softwareupdate --install-rosetta: Done
Additional context
Running 'dotnet restore': OK
Running 'dotnet build': OK
Running 'docker build': OK
Output:
───────────── Docker Output ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
#10 transferring context: 2B done
#10 DONE 0.0s
#11 [internal] load build context
#11 transferring context: 8.19MB 0.1s done
#11 DONE 0.1s
#12 [build 4/7] RUN dotnet restore "./GameLeaderboard.csproj"
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

@Zapan2006 thanks for reporting. Tried and couldn't reproduce it. Seems similar to this one #3503
azd up

? Select an Azure Subscription to use: acme-subscription
? Select an Azure location to use: East US

Packaging services (azd package)

  (✓) Done: Packaging service GameLeaderboard
  - Image Hash: sha256:9586932333e97732a803173f719b30423f0b131a2dfcec3a6a3ff9abdbfb63be
  - Target Image: gameleaderboard/gameleaderboard-gameleaderboard:azd-deploy-1713543139

SUCCESS: Your application was packaged for Azure in 1 minute 5 seconds.

Provisioning Azure resources (azd provision)
Provisioning Azure resources can take some time.

Subscription: acme-subscription
Location: East US

  You can view detailed progress in the Azure Portal:
  https://portal.azure.com/#view/HubsExtension/DeploymentDetailsBlade/~/overview/id/...

  (✓) Done: Resource group: rg-gameleaderboard
  (✓) Done: Log Analytics workspace: log-ecyrad3fplxaq
  (✓) Done: Container Registry: crecyrad3fplxaq
  (✓) Done: Key Vault: kv-ecyrad3fplxaq
  (✓) Done: Application Insights: appi-ecyrad3fplxaq
  (✓) Done: Portal dashboard: dash-ecyrad3fplxaq
  (✓) Done: Container Apps Environment: cae-ecyrad3fplxaq


performance

changed loops and removed browser from ua()

Thanks, this may be suspect to the same issue raised in #9 ?


Migrate the deploy to Firebase workflow to use Service Account instead of Firebase Token

Why
The deploy to Firebase workflow uses Firebase-Distribution-Github-Action (which is using the Firebase Token) to deploy the build to Firebase Distribution Console.
https://github.com/nimblehq/android-templates/blob/53d318c598d0b41e4238076765aba7c4c7fee045/.cicdtemplate/.github/workflows/deploy_staging_and_production_to_firebase_app_distribution.yml#L73-L79
Firebase CLI Tools announced the depreciation of token authentication in favor of Service Account (source). This causes the action not to work properly anymore. We need to follow this migration guide to migrate this action to use Service Account instead of Firebase Token.
As this is a template, we might not need to actually create a Service Account for this migration, however, we should provide a doc (in README or wiki) to remind the developer to create the necessary Service Account to enable that workflow.
Who Benefits?
Developers

@Tuubz Sorry I missed our RFC here https://github.com/nimblehq/android-templates/discussions/328, please help me to do your next necessary actions 🙏


Libs

@vokal/webandsystems Hey look some libraries! Who wants to do a "code review"?

usually we use bower to install libraries, so we don't have to store them on a repo, but that may be a non-hack day project

Yes, i mentioned in my last PR that after hack days I'm going to talk to you guys about better ways to do all this.

You're including stuff like a pro. LGTM but yeah, highly recommended you switch to bower later on. Basically Cocoapods for the web.

@scottferg I'm not sure that's as much of a selling point as you think it is.

Oh sorry, I meant to say: Basically Cocoapods for the web except it works incredibly well


mender-on-verdin-tdx-dunfell: Add debug-tweaks to allow root login wi…

Add debug-tweaks to allow root login without password

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Api stop working?

http://uk-postcodes.com/postcode/search?utf8=✓&q=cm3+6qp&format=json&button=
Error 502
Bad gateway
?

@pezholio, any idea of when this is likely to be resolved? Can I help in any way?

I've rebooted the node for now, so hopefully should fix it. I don't really support this now though, and the postcodes are quite out of date - https://mapit.mysociety.org/ is much better, and regularly updated 😄


Godot takes a long time to open and run any project even an empty one

Godot version
4.1.2.stable.official [399c9dc39]
System information
Godot v4.1.2.stable - Windows 11 pro version 10.0.22621 - Vulkan API 1.3.260 (Mobile) - dedicated NVIDIA GeForce GTX 1080 (NVIDIA; <IP_ADDRESS>01) - AMD Ryzen 5 3500 6-Core Processor (6 Threads)
Issue description
When opening Godot 4 it displays a blank window for around 30 to 40 seconds before showing the Godot logo and same thing when running any project even a blank project. I have managed to get it working temporarily by deleting the Godot folders in appdata located at C:\Users{username}\AppData\Roaming\Godot and C:\Users{username}\AppData\Local\Godot and then restart the pc (just deleting the folders will not work). Godot then works for a few hours before doing the same again.
Steps to reproduce
I haven't found exactly what causes it. Only that the issue returns after using Godot 4 for an hour or so on any project.
Minimal reproduction project
N/A

Related to https://github.com/godotengine/godot/issues/20566.

Do you have any controllers or other USB devices connected? Check the linked issue for known problematic devices/software.

The only usb devices connected:
Keyboard:
coolermaster devastator 3 (no software)
Mouse:
corsair harpoon rgb pro. I have icue installed and is up to date. The firmware is v3.11 as v3.12 and 3.13 has a double click bug.
Headset:
Logitech g633. I have Logitech G Hub installed and up to date. The firmware is also up to date.
I did run windows disk cleanup and uninstalled hidden devices in device manager. Nvidia drivers are up to date. I did run SFC, DISM and CHKDSK commands for good measure.
Will need to test if that fixed it.

ICUE seems to be the problem for me. Uninstalled icue, deleted appdata folders in roaming and local and deleted icue registries. So far Godot is working fine.


Span.recordException must allow additional attributes according to spec

Not sure if this ought to be labelled a "bug" or "discussion". I noticed a discrepancy between span.recordException and the spec
Specifically, this part (current implementation does not allow passing additional attributes):

If RecordException is provided, the method MUST accept an optional parameter to provide any additional event attributes (this SHOULD be done in the same way as for the AddEvent method). If attributes with the same name would be generated by the method already, the additional attributes take precedence.

[x] This only affects the JavaScript OpenTelemetry library
[ ] This may affect other libraries, but I would like to get opinions here first

@dyladan regarding API being 1.0.0, can you help me understand the compatibility requirements? I have an implementation that updates the interface from
  recordException(
    exception: Exception,
    time?: TimeInput
  )

to
  recordException(
    exception: Exception,
    attributesOrTime?: SpanAttributes | TimeInput,
    time?: TimeInput
  )

This will not break current API [1.0.0] + new SDK (with new implementation), but will break new API [1.x.y] (with new signature) + current SDK [0.22.0], because if someone tries to just pass the attributes to the current SDK, it will attempt to parse them as TimeInput and fail. Is this a no-go situation?
Alternatively, I could try changing the interface by adding a third optional arg, which should not break either combination of API/SDK. It's more awkward to consume (since users would need to pass an undefined placeholder for time), and the spec calls out that the signature should match addEvent.
Another option you mentioned last week is to accept and document the discrepancy.

In a minor version bump, it is acceptable to introduce changes which break interface compatibility with the SDK, requiring the SDK to implement the change in the next version. It is not acceptable to make a change which breaks API users. Your change is acceptable because anyone calling recordException will still continue to work. If those users want to upgrade the API they are using, they will need to ensure they use an SDK which is compatible with the newer API version.

bump
	can break API callers (end users)
	can break API implementers (sdk compatibility)

major
	yes
	yes

minor
	no
	yes

patch
	no
	no

Leaving this on the back burner per https://github.com/open-telemetry/opentelemetry-js-api/pull/97#issuecomment-868485468

Not sure who could help with this, but I'll ping a few. Sorry, if I'm creating noise for you.
@Flarna @MSNev @vmarchaud @obecny @blumamir,
Is it possible to prioritize this into v1.1 release?
I have a couple of use cases where I'm doing workarounds, and it would be great if this can get in. I think the effort is minimal and there are PRs that have been related to this before such as #97 and https://github.com/open-telemetry/opentelemetry-js/pull/2298 To where it could be as simple as re-open, spot check and possibly final tweaks.
I have minimally talked with @dyladan and he suggested I bring it up to see what y'all think.

I think the https://github.com/open-telemetry/opentelemetry-js-api/pull/97 was on a good path. My main concern were the non backward compatible changes there which should be fixable.
Personally I have no special opinion if this is added in 1.1, 1.2 or later. I think it's mostly a matter of finding someone to do the actual work.

Personally I think if we want to include this feature we should do it in such a way that at least it doesn't break existing SDK, even if the feature doesn't work. For example if it is added as a new optional parameter at the end of the method then the existing SDK will just ignore it but at least won't cause compile incompatibilities or crashes.

Personally I think it would be good to include this if we can get the work done in time. @longility would you volunteer to add this? It would need to be added to both the API and the SDK.

Personally I think if we want to include this feature we should do it in such a way that at least it doesn't break existing SDK, even if the feature doesn't work. For example if it is added as a new optional parameter at the end of the method then the existing SDK will just ignore it but at least won't cause compile incompatibilities or crashes.

@dyladan I tested real quick and this contract recordException(exception: Exception, attributesOrTime?: SpanAttributes | TimeInput, time?: TimeInput): void; that is almost consistent with existing addEvent(name: string, attributesOrStartTime?: SpanAttributes | TimeInput, startTime?: TimeInput): this; will not cause compile error in sdk.
Should we go ahead an align to this contract, or do we need more input?

There are SDKs "in the wild" that depend on API ^1.0.x (example) which still receive significant downloads. These SDKs could break if someone calls recordException(exception, attributes, time) when they are expecting recordException(exception, time) (they will attempt to treat the attributes as time). I would prefer to have a true backwards compatible contract like recordException(exception: Exception, time?: TimeInput, attributes?: Attributes): void; or recordException(exception: Exception, time?: TimeInput, options: RecordExceptionOptions): void;

For simplicity and until we want to making clean breaking changes to where the ideal looks like this recordException(exception: Exception, options: RecordExceptionOptions): void;, I'm going to keep it simple and do recordException(exception: Exception, time?: TimeInput, attributes?: Attributes): void;

That works for me. What do the other @open-telemetry/javascript-maintainers think? It is unfortunate we can't match the addEvent method, but I guess it's just a compromise we have to make.

I don't want to commit to adding this for 1.1 before I get the other maintainers input

Yep, and I don't want to commit to work, until we get alignment on contract.

It is unfortunate we can't match the addEvent method, but I guess it's just a compromise we have to make.

I think maybe at some point in future, we can decide to deprecate addEvent and recordException methods for overloading methods that take in options as part of a bigger breaking change version.

Yep, and I don't want to commit to work, until we get alignment on contract.

@open-telemetry/javascript-maintainers please respond or react with 👍 / 👎 on adding an optional third parameter to recordException

@longility sounds like you have bandwidth and motivation to get this over the line 😄 If not, I can pick this back up next week.

@vreynolds heh, I'm waiting for the thumbs up and depending on when, I may or may not be available again. We will just coordinate.

Is there any workaround for this until it is fixed to be more like addEvent()?


[refactor] Add support for all conductor resource apis

Code generated from Swagger Code Gen, with some changes to be consistent with other SDKs

Still lacking unit tests, will provide at least a main.go with basic usage.


Noob question

Sorry my fellow buds and thank you in advance, but I have a simple question that probably requires slightly complicated answer, but here I go:
"What exactly is the function of tokenizer.model file in this repo?"

https://www.perplexity.ai/search/what-is-tiktoken-ad3na7LqQXa_ZKfp6XbLgA


Try loading blocks from a flat file

Motivation
Zebra takes about 6 hours to sync from the network, but less than an hour to load blocks from a file on disk.
We could share a file of blocks using a faster distributed file sharing protocol, like Bittorrent or IPFS. Then sync the final few blocks as normal, using full validation.
For now, we just want to investigate how fast it would be.
Designs
Like copy-state, load blocks into the state. But instead of using a Zebra state as the source, use a flat file containing block data.

I have some branches for this, but it was very slow.
If we implement #4909 it should be much faster.

We tried this but we don't need it right now, we can re-open it and merge those branches if we need to work with flat files of block data.


chore: fix link

Current dependencies on/for this PR:

main

PR #2535   👈

This comment was auto-generated by Graphite.


chore: use Google-specific endpoint

cc @thiagotnunes

Don't we need to add a distribution-management configuration to the samples as well?

Don't we need to add a distribution-management configuration to the samples as well?

We currently don't publish the samples in Maven Central, so we currently do not need one. I also don't think there's very much additional value in publishing these samples in Maven, as it is not something that you would add as a dependency to any other project.

Thanks for the explanation @olavloite, it seems we did publish them some time ago (see https://mvnrepository.com/artifact/com.google.cloudspannerecosystem/spanner-change-publisher-samples and https://mvnrepository.com/artifact/com.google.cloudspannerecosystem/spanner-change-watcher-samples). Did we stop publishing them recently?

Hmm... I didn't realize that, but apparently the samples are automatically published to Maven together with the actual library, because the sample projects are added as modules to the base pom.xml here. So that means that:

We are publishing the samples as well as the library (we could maybe opt to change that in a separate PR)
The samples will use the same distribution management settings as the base library, as they all share the same base pom.

Thanks, so this one looks good for now


feat: you can now remove a client once it is added

Seems odd to npm install an addon that we want to remove. :)
Should we npm uninstall after deleting the client? I realize the client is just logically deleted, but we'll go through the install step again if they want to add it back later.


Delete the session file and generate a new one?

What is the right way to delete a session. And generate a new one?
I tried with session.delete() and it seems it worked the first time but after I tried again I couldn't make it work.
The way I'm connecting is:
container = AlchemySessionContainer(DB_URI)
session = container.new_session("userbot")

I don't think that you still need this, but maybe someone need.
After session.delete() you must call session.save() and it will be deleted.


fix failing builds due to pytorch dependencies

Description
1.) Fix ci-notebook-vision pipeline after torch 2.1 release since fastai tries to uninstall the latest 2.1 version causing OS out of disk space errors
2.) Fix ci-responsibleai-text-vision-python pipeline by pinning to 1.13.1 which is the version that automl depends on since automl tries to uninstall torch 2.1 leading to OS out of disk space errors
It is unknown why uninstalling the latest pytorch 2.1 is causing out of disk space errors as this did not happen before for prior pytorch versions.
Checklist

[ ] I have added screenshots above for all UI changes.
[ ] I have added e2e tests for all UI changes.
[ ] Documentation was updated if it was needed.

Codecov Report

Merging #2389 (c7280a8) into main (03d7867) will decrease coverage by 8.34%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main    #2389      +/-   ##
==========================================
- Coverage   92.40%   84.07%   -8.34%
==========================================
  Files         108       12      -96
  Lines        5415      961    -4454
==========================================
- Hits         5004      808    -4196
+ Misses        411      153     -258

Flag
Coverage Δ

unittests
84.07% <ø> (-8.34%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.
see 120 files with indirect coverage changes


Update falcon prefill device perf following LN changes

Ticket

#9539

Problem description

Update falcon prefill device perf following LN changes

What's changed

Perf numbers for 7b device perf got better

Checklist

[ ] Post commit CI passes
[ ] Model regression CI testing passes (if applicable)
[ ] New/Existing tests provide coverage for changes

Device perf: https://github.com/tenstorrent/tt-metal/actions/runs/9646121389


[General] Better error handling UI

App version: v0.1.92
Right now, error messages are shown above / below, action buttons. Could be shown in a standard alert dialog.

Closing in favour of #174


fix: remove lib directory

The npm module is broken right now :(  We were pointing to src/index.js as main in package.json, but the file was living in src/lib/index.js.  After this, we'll need to republish the module.

LGTM
On Thu, Nov 16, 2017 at 9:25 PM Justin Beckwith<EMAIL_ADDRESS>wrote:

@JustinBeckwith https://github.com/justinbeckwith requested your review
on: google/node-gtoken#35 https://github.com/google/node-gtoken/pull/35
fix: remove lib directory.
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHub
https://github.com/google/node-gtoken/pull/35#event-1346515742, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAE0qU_oLwOA8J1-DOdVXpL2uo1iDrVNks5s3RjjgaJpZM4QhjdJ
.

Codecov Report

Merging #35 into master will not change coverage.
The diff coverage is 100%.

@@          Coverage Diff          @@
##           master    #35   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           2      2
  Lines         337    337
  Branches       30     30
=====================================
  Hits          337    337

Impacted Files
Coverage Δ

src/index.ts
100% <ø> (ø)

test/index.ts
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


Review Puppeteer

For web scraping, we mainly use Puppeteer. You can look over the docs and watch some YouTube videos on how it works. I personally used this and it was very helpful. Since this is a shared issue, once you're done you can comment "done" and the last person can close the issue.

Done


Deny use of ConfigCollection.IList indexer setter

This will throws an exception if someone tries to call setter method of ConfigCollection.IList indexer implementation, instead of just ignoring the call.

Thanks Roman.


[DUOS-2023][risk=no] Adds download links for COL and IRB provided docs.

DUOS-2023 requests links are added to DARs where the applicant provided a COL or IRB document.
DarCollectionReview was modified to pass in the necessary information to ApplicationInformation to build links to the documents.
ajax was updated to include a download function for enabling document download with the required headers.
applicaiton_information.spec was updated to include tests to ensure the links were rendered correctly.
BEFORE

AFTER

Have you read Terra's Contributing Guide lately? If not, do that first.

Label PR with a Jira ticket number and include a link to the ticket
Label PR with a security risk modifier [no, low, medium, high]
PR describes scope of changes
Get a minimum of one thumbs worth of review, preferably two if enough team members are available
Get PO sign-off for all non-trivial UI or workflow changes
Verify all tests go green
Test this change deployed correctly and works on dev environment after deployment

Great find @quazi-broad!  I'm going to create a PR to address the backend issue.
After speaking with @rushtong, we determined that members, chairs and admins should be able to see the contents.
I'll park this PR until the backend changes are approved.


Matmul and mul

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

106 of 122 (86.89%)  changed or added relevant lines in 8 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-12.7%) to 87.302%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/qutip_tensorflow/core/data/matmul.py
19
22
86.36%

src/qutip_tensorflow/core/data/dense_tensor.py
40
53
75.47%

Totals

Change from base Build<PHONE_NUMBER>:
-12.7%

Covered Lines:
110

Relevant Lines:
126

💛  - Coveralls


[BUG] Cannot view posts with multiple GIFs

Describe the bug
Posts embedding more than one GIF only show the first, with the rest inaccessible as some unclickable link.
To Reproduce
Steps to reproduce the behavior:

Go to https://twitter.com/felutiahime/status/1578329364625694721
See error

Screenshots
Fritter:

Firefox:

Device
Model: Samsung Galaxy S9+
OS: Android 10
Language: English
Fritter Version: v3.0.0-beta4

This looks like it needs Fritter to load tweet data from a different endpoint, and it returns a completely different response schema. This is going to be a major change, so I'm going to push it behind a few more urgent issues.


Proof of concept: Webtorrent

Start figuring out webtorrent as a way to syncing data.

Stuff to figuout:
Seeding, creating, downloading

How to bust seed JSON objects and not files.
After creating a torrent and seeding: second time you open the browser, how to continue just seeding.

Trackers:

Which tracker is used?
How to set up a tracker?
Can access to torrents on the tracker be protected by authentication?

Reasons to use Webtorrent'

Mature technology
Seems okay simple
Works well in the browser
Tracker infrastructure exists
Trackers also seems simple enough

Drawbacks:

Per user access
Have to figure out how to make it fit the business plan. Maybe it needs some changes because of how trackers works

I guess Tthe business plan will be geared more towards either public search engines or private for you only. Proof of concept will be private, running only in your (one) browser, and then it will be public if you want to sync it.

So, the development plan can be to first offer:

offline search engine only living in your browser
public search engines through webtorrent

For the webtorrent part theese are inherently read-only. To fix this there are many small steps that can be taken:

Read only. You create a public search engine and that's it.
Each time you update a new webtorrent is created. Everything is re-indexed.
Only index new & changed parts.
Create backup like schema where updates are separate webtorrents. Every update during a day is a new ..-release. Every day is a new .-release (containing all new ..-release) and every week is a full new release (containing everything).
See if it is possible to copy over old (and identical  files) from old webtorrent to new webtorrent. This way only new stuff will be downloaded. Then you could have the backup schema inside the webtorrent. This would replace 3 and 4, except for the part with indexing only new stuff.

Private torrents
Quick wins that will make you have the seed(?) hash to get to use a torrent. If the tracker is also behind login, it's a first low level security solution:

An issue on private torrents for Webtorrent tracker.
PR on better documenting private torrents + code fixes + tests.

But if you want to check if user is allowed to access this torrent, you can maybe do as suggested in the second answer to this question: I understood that I can use a private tracker and seed files privatly with these options. But is there any additional option on client side to hook in if someone requests one of my seeded files? This would make it possible to implement some security logic on the client, not on a centralized tracker, which could be untrustable from a client's perspective. In addition, you could authorize requests even with using dht.

Files seems to just be data, so both the ones that creates and seeds a torrent and the ones downloading are just keeping this in memory. How to make this persist?
Figuring this out will also maybe make the incremental backup possible to work. Where a new torrent download takes copies of existing files into memory so you don't have to download. But it will need to happen after initiating download and before actually downloading. Or maybe start, pause, copy and re-start.

Persist webtorrent in the browser:
Done by SilentBot1 on this issue: Save a complete Torrent with its Files for later reuse!

Private torrents take

Encrypt all webtorrents
When creating webtorrent: dht: false
When seeding file, set private: true

So there will be no way of finding out which torrents are seeded, you need to know the hash for it. In addition, you need to know the key. This can be stored together with the hash at i.e. Auth0 together with .
This way it will be easier to create:

private torrents, only for you
private torrents, for many
public torrents. These will not be encrypted.

For number 2 and 3, we need to figure out how to make them available to others.
2. You share a search engine with another user: "Add user" and add email address of their user. They will get an extra search engine (managed by you) in their user interface.
3. Subdomain? That's maybe too much work, and maybe for users that are almost creating their own search engine outside Nowsearch.xyz. Set it as public and have the url nowsearch.xyz/public#hashToWebtorrent which is also the ID for the search engine?


how to decode in utf-8 the data returned by query ?

The result is not utf-8? I never have this problem =/

Yes,

For utf-8 converter, I make an extension
import 'dart:convert';

extension Utf8convert on String {
  String  _utf8convert() {
    List<int> bytes = this.toString().codeUnits;
    return utf8.decode(bytes);
  }
  String get utf8convert => _utf8convert();
}

Add to a documentation as a possible problema Solution


[Bug] File descriptor not properly closed

Describe the bug
Insomnia does not properly close the file descriptor when saving a raw response from a request.
To Reproduce
Steps to reproduce the behavior:

Create a new request and input a pdf in the URL field (ex: http://www.thewritesource.com/apa/apa.pdf)
Click 'Send'
Click 'Preview', then 'Save Raw Response'
Save the file
Without closing Insomnia, try to open the file in another program. You should get an error opening the document.
6 (Extra): Close insomnia, then try reopening the file. It should work properly.

Expected behavior
You should be able to open the file in another application after Insomnia has finished saving it to the file system.
Screenshots

Desktop (please complete the following information):

OS: Windows 10
Installation Method: Windows Installer
App Version: 7.0.6

Additional context
I have only tested this for PDF file (which I then tried to open with Adobe Acrobat) but I am confident that this behaviour does not depend on content type or application used. Also, it might be a Windows-only bug.

Just was about to open exactly the same issue.
Can't tell since what version this problem occurs but I know for sure it was not present some versions ago (facing this issue after switching to a new machine about three weeks ago). Saving a ZIP-File from Raw-Response, served by an Asp.NET Core App (2.1.1) returned as Microsoft.AspNetCore.Mvc FileContentResult
Can confirm that the handle is still open after download using Sysinternals Process Explorer. Closing the handle from there releases the file without any side effects, so no app crash, no corrupted file.
Output of Help->About:

Version 7.0.6
Shell 3.1.13
Node 10.2.0
V8 6.6.346.32
Architecture x64
libcurl/7.57.0-DEV OpenSSL/1.0.2o zlib/1.2.11 libssh2/1.7.0_DEV

OS:

Win 10 Pro
1909
Build 18363.592

Hi @NewLunarFire
Do you see the same behavior with our latest release located here: https://github.com/Kong/insomnia/releases/tag/core%402022.6.0-beta.4


Kubernetes 1.22 Challenge stuck at pending : Waiting for HTTP-01 challenge propagation: wrong status code '404', expected '200'

**I am using Kubernetes 1.22 provided by Scaleway ( Kapsule ) https://www.scaleway.com/fr/kubernetes-kapsule/ and CertManager v1.6.1 and for consecutive days I have been trying to generate SSL certificates with Let's Encrypt, but the http01 challenge gets always stuck at 'pending' status with the error 404.
After going to the CertManager documentation (https://cert-manager.io/docs/faq/acme/#got-404-status-code), i made sure that the domain is working and accessible thourgh the internet, I typed the path storek8s.igesa.it//.well-known/acme-challenge/ and I got a response from my browser, with the thumbprint code. Also the ACME solver pod is running smoothly.
This may help but when I curl the acme-challenge path, I get an empty response ( still with 200 status code with no error ), unlike the browser.
These are the issuer and the ingress configuration :
Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    #certmanager.k8s.io/issuer: letsencrypt-prod
    cert-manager.io/issuer: letsencrypt-prod
    acme.cert-manager.io/http01-edit-in-place: "true"
    kubernetes.io/tls-acme: "true"
spec:
  ingressClassName: nginx
  rules:
    - host: storek8s.igesa.it
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: ecom-fo-svc-populus
                port:
                  number: 80

  tls:
  - hosts:
    - storek8s.igesa.it
    secretName: storek8s-igesa-it

Issuer
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    # You must replace this email address with your own.
    # Let's Encrypt will use this to contact you about expiring
    # certificates, and issues related to your account.
    email<EMAIL_ADDRESS>    server: https://acme-staging-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      # Secret resource that will be used to store the account's private key.
      name: scaleway-acme-secret
    # Add a single challenge solver, HTTP01 using nginx
    solvers:
    - http01:
        ingress:
          class: "nginx"

Cert Manager pods running in the cert-manager namespace
kubectl get pods -n cert-manager
NAME                                      READY   STATUS    RESTARTS   AGE
cert-manager-55658cdf68-v2978             1/1     Running   0          3h54m
cert-manager-cainjector-967788869-lwvjr   1/1     Running   0          3h54m
cert-manager-webhook-6668fbb57d-j9j8x     1/1     Running   0          3h54m

Logs of the CertManager pod :
kubectl logs pod/cert-manager-55658cdf68-v2978 -n cert-manager
 "dnsName"="storek8s.igesa.it" "related_resource_kind"="Service" "related_resource_name"="cm-acme-http-solver-tz6hj" "related_resource_namespace"="default" "related_resource_version"="v1" "resource_kind"="Challenge" "resource_name"="storek8s-igesa-it-secret-h7w7s-3629794593-1072885531" "resource_namespace"="default" "resource_version"="v1" "type"="HTTP-01"
E1206 20:23:33.487254       1 sync.go:186] cert-manager/controller/challenges "msg"="propagation check failed" "error"="wrong status code '404', expected '200'" "dnsName"="storek8s.igesa.it" "resource_kind"="Challenge" "resource_name"="storek8s-igesa-it-secret-h7w7s-3629794593-1072885531" "resource_namespace"="default" "resource_version"="v1" "type"="HTTP-01

Description of the certificate resource generated by CertManager :
kubectl describe certs
Name:         storek8s-igesa-it
Namespace:    default
Labels:       <none>
Annotations:  acme.cert-manager.io/http01-override-ingress-name: nginx-ingress
              cert-manager.io/issue-temporary-certificate: true
API Version:  cert-manager.io/v1
Kind:         Certificate
Metadata:
  Creation Timestamp:  2021-12-06T20:35:46Z
  Generation:          1
  Managed Fields:
    API Version:  cert-manager.io/v1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .:
          f:acme.cert-manager.io/http01-override-ingress-name:
          f:cert-manager.io/issue-temporary-certificate:
        f:ownerReferences:
          .:
          k:{"uid":"7af0141c-f1d6-4c5b-92c0-7a2d544109f9"}:
      f:spec:
        .:
        f:dnsNames:
        f:issuerRef:
          .:
          f:group:
          f:kind:
          f:name:
        f:secretName:
        f:usages:
    Manager:      controller
    Operation:    Update
    Time:         2021-12-06T20:35:46Z
    API Version:  cert-manager.io/v1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        .:
        f:conditions:
        f:nextPrivateKeySecretName:
        f:notAfter:
        f:notBefore:
        f:renewalTime:
    Manager:      controller
    Operation:    Update
    Subresource:  status
    Time:         2021-12-06T20:35:47Z
  Owner References:
    API Version:           networking.k8s.io/v1
    Block Owner Deletion:  true
    Controller:            true
    Kind:                  Ingress
    Name:                  nginx-ingress
    UID:                   7af0141c-f1d6-4c5b-92c0-7a2d544109f9
  Resource Version:<PHONE_NUMBER>
  UID:                     9fc0d6e8-5ec8-400d-907b-4790d3d8cee5
Spec:
  Dns Names:
    storek8s.igesa.it
  Issuer Ref:
    Group:      cert-manager.io
    Kind:       Issuer
    Name:       letsencrypt-prod
  Secret Name:  storek8s-igesa-it
  Usages:
    digital signature
    key encipherment
Status:
  Conditions:
    Last Transition Time:        2021-12-06T20:35:46Z
    Message:                     Issuing certificate as Secret does not exist
    Observed Generation:         1
    Reason:                      DoesNotExist
    Status:                      True
    Type:                        Issuing
    Last Transition Time:        2021-12-06T20:35:47Z
    Message:                     Certificate is up to date and has not expired
    Observed Generation:         1
    Reason:                      Ready
    Status:                      True
    Type:                        Ready
  Next Private Key Secret Name:  storek8s-igesa-it-257jg
  Not After:                     2022-03-06T20:35:47Z
  Not Before:                    2021-12-06T20:35:47Z
  Renewal Time:                  2022-02-04T20:35:47Z
Events:
  Type    Reason     Age   From          Message
  ----    ------     ----  ----          -------
  Normal  Issuing    11m   cert-manager  Issuing certificate as Secret does not exist
  Normal  Generated  11m   cert-manager  Stored new private key in temporary Secret resource "storek8s-igesa-it-257jg"
  Normal  Requested  11m   cert-manager  Created new CertificateRequest resource "storek8s-igesa-it-t6dtt"
  Normal  Issuing    11m   cert-manager  Issued temporary certificate

Description of the challenge that keeps failing with the 404 status
kubectl describe challenges
Name:         storek8s-igesa-it-t6dtt-3629794593-1072885531
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  acme.cert-manager.io/v1
Kind:         Challenge
Metadata:
  Creation Timestamp:  2021-12-06T20:35:48Z
  Finalizers:
    finalizer.acme.cert-manager.io
  Generation:  1
  Managed Fields:
    API Version:  acme.cert-manager.io/v1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:finalizers:
          .:
          v:"finalizer.acme.cert-manager.io":
        f:ownerReferences:
          .:
          k:{"uid":"49a1a731-e949-4fb8-9e39-6efce1e8c403"}:
      f:spec:
        .:
        f:authorizationURL:
        f:dnsName:
        f:issuerRef:
          .:
          f:group:
          f:kind:
          f:name:
        f:key:
        f:solver:
          .:
          f:http01:
            .:
            f:ingress:
              .:
              f:name:
        f:token:
        f:type:
        f:url:
        f:wildcard:
    Manager:      controller
    Operation:    Update
    Time:         2021-12-06T20:35:48Z
    API Version:  acme.cert-manager.io/v1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        .:
        f:presented:
        f:processing:
        f:reason:
        f:state:
    Manager:      controller
    Operation:    Update
    Subresource:  status
    Time:         2021-12-06T20:35:49Z
  Owner References:
    API Version:           acme.cert-manager.io/v1
    Block Owner Deletion:  true
    Controller:            true
    Kind:                  Order
    Name:                  storek8s-igesa-it-t6dtt-3629794593
    UID:                   49a1a731-e949-4fb8-9e39-6efce1e8c403
  Resource Version:<PHONE_NUMBER>
  UID:                     a86b3061-ea15-4044-85c5-ae9dd9ee6710
Spec:
  Authorization URL:  https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/1109653358
  Dns Name:           storek8s.igesa.it
  Issuer Ref:
    Group:  cert-manager.io
    Kind:   Issuer
    Name:   letsencrypt-prod
  Key:      8XRP9hEe9uyIDUzQjBRSI2Ee0kO_n-LnkjnuPufLriw.LEz4NLDi6OSEcosv_N9ic7NSIIMEJk9DWuXl8h-IEWk
  Solver:
    http01:
      Ingress:
        Name:  nginx-ingress
  Token:       8XRP9hEe9uyIDUzQjBRSI2Ee0kO_n-LnkjnuPufLriw
  Type:        HTTP-01
  URL:         https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/1109653358/Rl-9PQ
  Wildcard:    false
Status:
  Presented:   true
  Processing:  true
  Reason:      Waiting for HTTP-01 challenge propagation: wrong status code '404', expected '200'
  State:       pending
Events:
  Type    Reason     Age   From          Message
  ----    ------     ----  ----          -------
  Normal  Started    13m   cert-manager  Challenge scheduled for processing
  Normal  Presented  13m   cert-manager  Presented challenge using HTTP-01 challenge mechanism

Description of the Ingress resource.
kubectl get ingress
NAME            CLASS   HOSTS               ADDRESS                          PORTS     AGE
nginx-ingress   nginx   storek8s.igesa.it   <IP_ADDRESS>,<IP_ADDRESS>   80, 443   14m
PS C:\Users\lenovo\Desktop\MSS\New Ecommerce\Scaleway resources> kubectl describe ingress
Name:             nginx-ingress
Namespace:        default
Address:          <IP_ADDRESS>,<IP_ADDRESS>
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
TLS:
  storek8s-igesa-it terminates storek8s.igesa.it
Rules:
  Host               Path  Backends
  ----               ----  --------
  storek8s.igesa.it
                     /.well-known/acme-challenge/8XRP9hEe9uyIDUzQjBRSI2Ee0kO_n-LnkjnuPufLriw   cm-acme-http-solver-xw76j:8089 (<IP_ADDRESS>:8089)
                     /                                                                         ecom-fo-svc-populus:80 (<IP_ADDRESS>:4000,<IP_ADDRESS>:4000)
Annotations:         acme.cert-manager.io/http01-edit-in-place: true
                     cert-manager.io/issuer: letsencrypt-prod
                     kubernetes.io/tls-acme: true
Events:
  Type    Reason             Age                From                      Message
  ----    ------             ----               ----                      -------
  Normal  CreateCertificate  14m                cert-manager              Successfully created Certificate "storek8s-igesa-it.cert"
  Normal  CreateCertificate  13m                cert-manager              Successfully created Certificate "storek8s-igesa-it"
  Normal  DeleteCertificate  13m                cert-manager              Successfully deleted unrequired Certificate "storek8s-igesa-it.cert"
  Normal  Sync               13m (x4 over 14m)  nginx-ingress-controller  Scheduled for sync
  Normal  Sync               13m (x4 over 14m)  nginx-ingress-controller  Scheduled for sync

Making sure that the acme http solver pod is running :
kubectl get pods
NAME                                READY   STATUS    RESTARTS   AGE
cm-acme-http-solver-467wd           1/1     Running   0          21m
fo-populus-56c4db7c4c-cdnm5         1/1     Running   0          3d5h
fo-populus-56c4db7c4c-q2rrk         1/1     Running   0          3d5h

It looks like the ACME http solver pod is not reachable as it's stuck in this one log :
kubectl logs cm-acme-http-solver-467wd
I1206 20:35:50.602838       1 solver.go:39] cert-manager/acmesolver "msg"="starting listener"  "expected_domain"="storek8s.igesa.it" "expected_key"="..." "expected_token"="..." "listen_port"=8089

Expected behaviour:
CertManager generating SSL certificates and enabling HTTPS communication with my website.
Steps to reproduce the bug:

Preparing a cluster with the same Kubernetes version and CertManager version.
Creating the issuer and the ingress through the files I provided with a DNS pointing to your ingress Load Balancer

Anything else we need to know?:
I tried deleting and installing CertManager, modifying the annotations of the ingress resource, going through different forums but despite this being a bug encountered often, it lacks troubleshooting clear details and steps.
Environment details::

Kubernetes version:
Cloud-provider/provisioner: Scaleway
cert-manager version:  1.6.1
Install method:  static manifests ( kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.6.1/cert-manager.yaml )

/kind bug

I've typically found this means that your ingress controller isn't reading the ingress object, or some other ingress supersedes a path collision. I most recently ran into this issue because I didn't have an IngressClass object. I've also run into this issue for not having the proper annotations setup correctly in the (Cluster)Issuer (same thing as an IngressClass before the ingress spec was marked as stable)

@jelel-fliss I too have the same issue, cert-manager version is 1.6.1 and k8s cluster version is 1.20.1. For the first deployment certificate was issued but now for all the new deplyments challenge and order both are in pending state

Somehow, I was able to resolve this. I could not find the real cause of this problem but I tried restarting the nginx service in the ingress controller containers and suddenly, the certificates were issued successfully.
kubectl exec -it <ingress-controller-pod> nginx -s reload

I did the same but it didn't solve my problem

@sureshkachwa did you try a different version of cert-manager ? Before reloading the nginx-controller, I downgraded to the version 1.5.0. It still did not work after recreating the issuer and the ingress object. Also there are some changes I made to the Ingress that may have helped solving the issue. Still, only reloading NGINX in the ingress triggered the success of issuing the certificates.
metadata:
  name: nginx-ingress
  annotations:
    kubernetes.io/ingress.allow-http: "true"
    kubernetes.io/ingress.class: nginx
    cert-manager.io/issuer: letsencrypt-prod
    acme.cert-manager.io/http01-edit-in-place: "true"
    kubernetes.io/tls-acme: "true"
spec:
  #ingressClassName: nginx

I removed the ingressClassName field in spec

@sureshkachwa did you try a different version of cert-manager ? Before reloading the nginx-controller, I downgraded to the version 1.5.0. It still did not work after recreating the issuer and the ingress object. Also there are some changes I made to the Ingress that may have helped solving the issue. Still, only reloading NGINX in the ingress triggered the success of issuing the certificates.
metadata:
  name: nginx-ingress
  annotations:
    kubernetes.io/ingress.allow-http: "true" # I added this
    kubernetes.io/ingress.class: nginx # I added this
    cert-manager.io/issuer: letsencrypt-prod
    acme.cert-manager.io/http01-edit-in-place: "true"
    kubernetes.io/tls-acme: "true"
spec:
  #ingressClassName: nginx # I commented this

I removed the ingressClassName field in spec

@jelel-fliss , we are using helm to install ingress controller ,ingress controller is getting deployed with "webhook validation error" moreover I installed cert-manager 1.6.0 and nginx controller 4.0.8 but still the same issue, challenge is still pending,there is something that we need to work on, I'll see if I get a solution and share it here.

@jelel-fliss , I think ingress controller settings needs to tweaked ,I'll edit running controller and add the annotations shared by you.

@jelel-fliss still same issue. I'll give a try with new k8s cluster and cert-manager with version 1.5.0, edit the ing object with above annotations and see if it helps.

@sureshkachwa can you share the logs of the ingress, certmanager pods and the events of the challenge ?

@jelel-fliss created a new cluster with cert-manager 1.6.0 and ingress controller 1.0.5.
Right now I see the below thing in the cluster:
NAMESPACE    NAME                        CLASS    HOSTS                        ADDRESS           PORTS     AGE
devops17     cm-acme-http-solver-886vl   nginx    devops17.nasty.orbitbi.com   <IP_ADDRESS>   80        6m45s
devops17     devops17-orbit-ing           devops17.nasty.orbitbi.com   <IP_ADDRESS>   80, 443   6m50s
Will wait for 15 more min and share all the logs here

@jelel-fliss logs for ing,cert-manager pods,acme pod, nginx controller is a huge file, can you share your email id I will share the logs

If the issuer's http01 class is istio, the istio ingressClass resource is required.
Ignressclass yaml example
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: istio
  namespace: istio-system
spec:
  controller: istio.io/ingress-controller

Issue resolved after pods started resolving the fqdn for what ever domain the certificate needs to be issued, we earlier had a setup in oracle cloud OCI where we wanted our resources in a specific VCN to look at VCN DNS for resolution and not public DNS, removed that specific zone setting in OCI and that helped.

If the issuer http01 class is istio, the istio ingressClass resource is required.
Ignressclass yaml example
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: istio
  namespace: istio-system
spec:
  controller: istio.io/ingress-controller

This worked exceptionally! Resolved my issue.
Thank YOU!!!

If the issuer http01 class is istio, the istio ingressClass resource is required.
Ignressclass yaml example
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: istio
  namespace: istio-system
spec:
  controller: istio.io/ingress-controller

This worked exceptionally! Resolved my issue.
Thank YOU!!!

Had the same problem with an ingressClassname: traefik-cert-manager.
I looked for IngressClass on my cluster and found it was just traefik.
I replaced it in the ClusterIssuer and the certificate has finally been issue properly !

running on kubernetes 1.21.x on azure here. same issue. BUT only when i was trying to install grafana on a specific path like: monitoring.<FQDN>.io/grafana.
cert-manager:
  chart:
    spec:
      chart: cert-manager
      sourceRef:
        kind: HelmRepository
        name: jetstack
        namespace: unstable
      version: v1.7.0

nginx:
  chart:
    spec:
      chart: ingress-nginx
      sourceRef:
        kind: HelmRepository
        name: ingress-nginx
        namespace: unstable
      version: 4.0.16

here is how i solved the issue for the moment:

edit the .well-known ingress which was created by cert-manager and added IngressClassName: nginx-external into the .spec section of the cm-* ingress - save.... and et voila the 404 changed to a 202.

its a temp fix but at least i could create the cert for the moment.
just wanted to share my finding.

In my case I had a duplicated ingress for foo.it which was overlapping with the one created by cert-manager
This my ingress excerpt
//...
 spec:
   ingressClassName: nginx
   rules:
     - host: foo.it // <-- remove
     - host: www.foo.it
   tls:
     - hosts:
         - foo.it // <-- remove
         - www.foo.it
       secretName: foo-tls

If the issuer http01 class is istio, the istio ingressClass resource is required.
Ignressclass yaml example
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: istio
  namespace: istio-system
spec:
  controller: istio.io/ingress-controller

Could you please elaborate on that? I have created this resource, started http01 verification, but the requests are still routed to the virtual service instead of the cert-manager service. I have created both ingressClassName and annotation manually, but no luck to get it passed.

@sureshkachwa did you try a different version of cert-manager ? Before reloading the nginx-controller, I downgraded to the version 1.5.0. It still did not work after recreating the issuer and the ingress object. Also there are some changes I made to the Ingress that may have helped solving the issue. Still, only reloading NGINX in the ingress triggered the success of issuing the certificates.
metadata:
  name: nginx-ingress
  annotations:
    kubernetes.io/ingress.allow-http: "true" # I added this
    kubernetes.io/ingress.class: nginx # I added this
    cert-manager.io/issuer: letsencrypt-prod
    acme.cert-manager.io/http01-edit-in-place: "true"
    kubernetes.io/tls-acme: "true"
spec:
  #ingressClassName: nginx # I commented this

I removed the ingressClassName field in spec

@jelel-fliss , we are using helm to install ingress controller ,ingress controller is getting deployed with "webhook validation error" moreover I installed cert-manager 1.6.0 and nginx controller 4.0.8 but still the same issue, challenge is still pending,there is something that we need to work on, I'll see if I get a solution and share it here.

It worked for me, while we have clusterIssuer nginx.
Thanks a lot!!


SAAPI Series Handler

Right now, selecting a series in the gui for a recording only tags the MP3 with the name of the series.
Need to implement proper handling to associate a sermon with a series after it's created, and implement creating a series if it doesn't already exist.

Closing the settings window should also refresh the series option menu, currently you need to close and reopen Service Recorder if you change the Member ID.


batch of images with different weights

when sending a batch of images for the conditioning, how would you go at giving a different weight at each of them?

@cubiq hi, can you give a description of how to implement multiple images?

you can send a batch of tensors in the form of like (4, 224, 224, 3) for 4 images (you can just stack them).
this is an example with 4 images:

@cubiq this is achieved by concat the image features of 4 images ( 16 x 4 = 64 tokens)? I see another blog https://civitai.com/articles/2345, I am not sure that if your implementation is same as that.

yes exactly.
the blog you linked uses my code.

Could someone please provide an example of how to use multiple images outside of Comfy?

Would something like this work perhaps? Is my understanding correct?
image_paths = ["img1", "img2", "img3", "img4"]
image_tensors = []

transform = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor()
])

for path in image_paths:
    image = Image.open(path)
    image_tensor = transform(image)
    image_tensors.append(image_tensor)

image_batch = torch.stack(image_tensors)
print(image_batch.shape)  # Should print torch.Size([4, 3, 224, 224])

images = ip_model.generate(pil_images=image_batch, num_samples=num_samples, num_inference_steps=30, seed=42)

yes, stacking should work

Hmm since the get_image_embeds method is designed work with PIL images, would something like this suffice?
pil_images = [Image.open(path).resize((224, 224)) for path in image_paths]

btw looks like Comfy is using this node type for image batching: https://github.com/comfyanonymous/ComfyUI/blob/213976f8c3ea3f45f0c692dd8aac2fd9fea433e3/nodes.py#L1490

So far my results are terrible 🥲

that looks like you are sending the cond images to the uncond as well

when i try this method, output images are generated based on distinct images of the batch. However, as i understand output images should be a synthesis based on all the images in the batch. which is it ? If it is the second one how should i pass the images to the ip-adapter generate function ?

please note that I work mainly with comfyui so I wasn't aware of the diffusers situation.
I had a quick look at the code and it seems that only the first image is prompted no matter how many images are sent. The image encoder works as expected and correctly encodes all the images so there must be some clipping happening somewhere down the line.
I'll work on a diffuser project soon so I might be looking into this

Thanks @cubiq! If you have a github sponsor or kofi link I would be happy to help support development of this feature!

I was able to implement image weighting in ComfyUI @xiaohu2015
In the image below you can see two different results using the same 2 images with different weights

as always the code here https://github.com/cubiq/ComfyUI_IPAdapter_plus
Regarding Diffusers the thing is a bit more complicated, the current implementation offered by tencent-ailab is a bit too "rigid" and it would require some refactoring... a more dynamic approach would be for the library to only exports the embeds and then the user can integrate those into any pipeline (given the right combination of encoder/ipadapter model/main checkpoint). Alternatively the official API should be followed a bit more closely. I'll look into it in the coming days

Okay good news, I was able to replicate all the comfyui features in diffusers.
On the left is the diffusers image that as you can see is very close to the image on the right generated with 2 images in ComfyUI (the difference in sharpness is caused by different sampling algorithms used for the image encoder).

It's just a matter merging the image embeds and increasing the number or tokens in the attention processor. I'll do some code clean up and post the code somewhere!

That is huge 💪 Can't wait to test it out!

More info about the new code here #99
You can find the code and examples in my repo https://github.com/cubiq/Diffusers_IPAdapter
It's still a bit experimental, but should be enough to get you started. Have fun!


Project update

The upstream project (Pocket Sphinx) was updated recently, so I'd like to update this project in turn.  The notable changes to be made are as follows:

[x] Remove the old extension code altogether, since it is now quite out-of-date.
It would be nice to make use of it, but I don't see much point.
[x] Release a new version of this package that requires a version of the pocketsphinx package with binaries for Python 2.7.
This is to finalise the sphinxwrapper package and Python 2.7 support.
[ ] Change the project name from "sphinxwrapper" to "simplepocketsphinx".
This name is more descriptive; the callback approach used in this project is simpler if one needs to do processing when speech begins and when it ends.
[ ] Release a new version of this package under the simplepocketsphinx name.

Since there have been many breaking changes to Pocket Sphinx, I will not be updating the project to use version 5.  I may do this at some point in the future.

One good reason to update this project to use pocketsphinx version 5, aside from upstream bug fixes, is that it is currently uninstallable on Windows using Python version 3.10 or higher.  This is due to the use of a deprecated distutils symbol in the pocketsphinx version 0.1.15 installer code.


Application failed

=2024-02-01T07:58:20+0000 lvl=crit msg="Application failed"                  message="failed to setup: unable to create the rollup node: failed to init L1: failed to validate the L1 config: failed to get L1 genesis blockhash: failed to fetch header by num 17481768: not found"

@imaiops
Hello, is this on your first, initial sync or did this start occurring after? Are you running using the Docker container?

@imaiops
Hi there! Is this on your first, initial sync or did this start occurring after?
Are you running using the Docker container?

use docker

@imaiops Thanks for the additional information. It looks like it's having a problem connecting to the L1 RPC that was provided; could you please share more details on what you have set up there?
If you're running your own node, are you able to reach it from the command line and get a successful response from the same environment you're starting the docker container in?

@wbnns do you have any public L1 RPC address?

Nevermind,  I left laziness behind and set up a Prysm node Lol.

@gklipel

do you have any public L1 RPC address?

Heya, yes, there are several node providers that offer free plans that you can use:
https://docs.base.org/tools/node-providers/

=2024-02-01T07:58:20+0000 lvl=crit msg="Application failed"                  message="failed to setup: unable to create the rollup node: failed to init L1: failed to validate the L1 config: failed to get L1 genesis blockhash: failed to fetch header by num 17481768: not found"

@imaiops
Heya! Since it has been a while and we haven't heard back, closing this issue for now. If you're still having problems, just let us know and we'll be happy to assist. 👍


UP006: autofix does not work if there is a method of the same name

Example:
from typing import Set

class FooBar:
    def set(self, data: str) -> None:
        ...

    def prefetch(self, fields: Set[str]) -> None:
        ...

Output:
$ ruff --fix --select UP006 ruff_errors/UP006.py
ruff_errors/UP006.py:8:32: UP006 Use `set` instead of `Set` for type annotation
Found 1 error.

This is intentional though -- you can't use set there. If you do, Mypy gives you:
foo.py:8: error: Function "foo.FooBar.set" is not valid as a type  [valid-type]
foo.py:8: note: Perhaps you need "Callable[...]" or a callback protocol?

And Pyright gives you:
/Users/crmarsh/workspace/staging/foo.py
  /Users/crmarsh/workspace/staging/foo.py:8:32 - error: Expected type expression but received "(self: Self@FooBar, data: str) -> None" (reportGeneralTypeIssues)
1 error, 0 warnings, 0 informations

So, I think it's correct to warn but not fix here.


Movable popup windows

Pop-up windows in the front page (Filter by users and Filter by label) should be movable so that they don't block information behind

Originally posted by @knudsvik in https://github.com/equinor/MAD-VSM-WEB/issues/229#issuecomment-1031442176

This should be fixed by #197

Resolved by #197


NULL value for more readability

Example:
long window = glfwCreateWindow(640, 480, "Inception", 0, 0);
At the moment I'm doing something like that:
public static final Integer GLFW_NULL = 0;
...
long window = glfwCreateWindow(640, 480, "Inception", GLFW_NULL, GLFW_NULL);

Such a value does already exist. (See org.lwjgl.system.MemoryUtil.NULL)
For convenience I suggest using import static org.lwjgl.system.MemoryUtil.*;. This way your method call looks like this: glfwCreateWindow(640, 480, "Inception", NULL, NULL);

Thank you very much!


Clean up render.js

Currently props and slots are always passed from server side so no need for default values, there are never applied.

There should be no need to delete require.cache because elixir-nodejs does it already on every call.

Object.fromEntries will always return an object so || {} is not needed after the call.

context is already new Map() by default so can be removed from options.

Great improvement! I remember needing the delete require.cache code before but it seems to work without it now :)


Ispivey/revert

Manually down with https://github.com/cloudflare/cloudflare-docs-engine/commit/0ca870f08e28afc20ffd00c2e90983be6ff0a6b0 instead.


Hue does not correctly change lamp color

Using the Adapter version 0.3.1 i have an issue when changing the color of Philips hue lamps attached to a raspbee:
If i change the hue through the phoscon app, the hue value changes in the range of 0 to 65535.
if i try to change the hue from ioBroker, i can only enter values between 0 and 360. These will change the hue of the lamp, but deconz updates the value with 0 to 65535.
for me, this fix:
Fixing hue from range 0-65535 to 0-360
did not work.

Afterthought: I had to roll back to 0.3.0 to get things back to work.


gitAndTools.delta: 0.4.0 -> 0.4.1

https://github.com/dandavison/delta/releases/tag/0.4.1

Motivation for this change
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[x] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Reviewed points

[x] package name fits guidelines
[x] package version fits guidelines
[x] package build on Darwin
[x] executables tested on Darwin
[ ] all depending packages build

Possible improvements
Comments


Fix path to python native helpers

While working on python native helpers, I was running python/helpers/build after making changes to install native helpers to the proper location. However, my changes were not being picked up.
Turns out Dependabot was using /opt/python/helpers, the path were helpers are originally copied:
https://github.com/dependabot/dependabot-core/blob/70805187fb63ff1f012446bd32a3d22a6220cc43/Dockerfile#L271
Not the path were helpers are originally installed:
https://github.com/dependabot/dependabot-core/blob/70805187fb63ff1f012446bd32a3d22a6220cc43/python/helpers/build#L10
Initially I just fixed the path but thinking about it more, this file tree duplication seems unnecessary and confusing, specifically for interpreted language (where installed files are exactly the same as copied files).
Should we instead remove any file copying from build scripts any use the copied tree directly like it was already done for python?

Initially I just fixed the path but thinking about it more, this file tree duplication seems unnecessary and confusing, specifically for interpreted language (where installed files are exactly the same as copied files).

Should we instead remove any file copying from build scripts any use the copied tree directly like it was already done for python?

After a bit more thought, I don't have great ideas here, and I wouldn't like to spend too much time on this, so I'll just leave this as is.
Let me know if I'm missing something!

This has been annoying for a long time so it would be great to sort it out, thanks for taking it on @deivid-rodriguez!
One thing I'm curious about is if I run the CLI:
script/debug update go_modules rsc/quote --dry-run --updater-image=ghcr.io/dependabot/dependabot-updater:785959b2ed553e3c4ffdda4366e12237a713ad05

We have two directories that seem confusingly identical:
dependabot@200e3450e402:~/dependabot-updater$ ls /opt/python/
helpers  lib  requirements.txt  run.py
dependabot@200e3450e402:~/dependabot-updater$ ls /opt/python/helpers/
build  lib  requirements.txt  run.py

If we don't need both it might go a long way to fixing confusion if they weren't duplicated.

Yes, they are indeed!
The way I understand it,  /opt/python/helpers/ holds the "sources" for native helpers, while "/opt/pythin" hols the compiled versions installed at the final location. But this distinction does not make much sense for interpreted languages and results in this duplication.
I'm not sure what's best to do. One idea would be to eliminate the intermediate "source locations" (/opt/python/helpers) and build native helpers directly from our source tree.

@pavera any thoughts around this? I know you also dug into this at one point.

The duplication is confusing, but it's how all the ecosystems work, so having one be different feels even more confusing to me. I think the larger proposed change would mean moving a bunch of copy commands from the various build scripts into the Dockerfile and would make the dockerfile aware of helper contents for each specific ecosystem whereas currently this is abstracted away by the build scripts. Since some ecosystems produce different output in /opt// vs their respective /opt//helpers content I think leaving this as is maybe the least bad option?
If we wanted to make a larger change maybe breaking the "source" and "dist" trees out would make this distinction more clear?  IE /opt/helpers-source// is where we copy the helper source for each ecosystem in the Dockerfile, then the build scripts all target /opt// and all code targets /opt//. Might make it easier to spot/avoid issues like the one this PR fixes.

The duplication is confusing, but it's how all the ecosystems work, so having one be different feels even more confusing to me.

Agreed! Any better solution to this would need to be applied consistently across ecosystems.

I think the larger proposed change would mean moving a bunch of copy commands from the various build scripts into the Dockerfile and would make the dockerfile aware of helper contents for each specific ecosystem whereas currently this is abstracted away by the build scripts. Since some ecosystems produce different output in /opt// vs their respective /opt//helpers content I think leaving this as is may be the least bad option?

Actually my idea is to not COPY the sources at all to /opt. Instead, run each native helper build script directly from the original repo structure.
I'll merge this for now, in any case!


Runtime error: module 'xformers.ops' has no attribute 'MemoryEfficientAttentionTritonFwdFlashBwOp'

I'm trying to Apply Stable Fast UNet but I've got this error on Xformers library.
Am I missing any requirement?

I followed the process on Stable fast and this node
I'm using CUDA 12.1 on Linux
My model is a custom TurboXL, but the issue seems to be related to Xformers or dependencies on install
Also using LCM lora

Here is the full error description:
`Error occurred when executing KSamplerAdvanced:
module 'xformers.ops' has no attribute 'MemoryEfficientAttentionTritonFwdFlashBwOp'
File "/workspace/ComfyUI/execution.py", line 151, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "/workspace/ComfyUI/execution.py", line 81, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "/workspace/ComfyUI/execution.py", line 74, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "/workspace/ComfyUI/nodes.py", line 1403, in sample
return common_ksampler(model, noise_seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, denoise=denoise, disable_noise=disable_noise, start_step=start_at_step, last_step=end_at_step, force_full_denoise=force_full_denoise)
File "/workspace/ComfyUI/nodes.py", line 1339, in common_ksampler
samples = comfy.sample.sample(model, noise, steps, cfg, sampler_name, scheduler, positive, negative, latent_image,
File "/workspace/ComfyUI/comfy/sample.py", line 100, in sample
samples = sampler.sample(noise, positive_copy, negative_copy, cfg=cfg, latent_image=latent_image, start_step=start_step, last_step=last_step, force_full_denoise=force_full_denoise, denoise_mask=noise_mask, sigmas=sigmas, callback=callback, disable_pbar=disable_pbar, seed=seed)
File "/workspace/ComfyUI/comfy/samplers.py", line 704, in sample
return sample(self.model, noise, positive, negative, cfg, self.device, sampler, sigmas, self.model_options, latent_image=latent_image, denoise_mask=denoise_mask, callback=callback, disable_pbar=disable_pbar, seed=seed)
File "/workspace/ComfyUI/comfy/samplers.py", line 609, in sample
samples = sampler.sample(model_wrap, sigmas, extra_args, callback, noise, latent_image, denoise_mask, disable_pbar)
File "/workspace/ComfyUI/comfy/samplers.py", line 548, in sample
samples = self.sampler_function(model_k, noise, sigmas, extra_args=extra_args, callback=k_callback, disable=disable_pbar, **self.extra_options)
File "/usr/local/lib/python3.10/dist-packages/torch/utils/_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
File "/workspace/ComfyUI/comfy/k_diffusion/sampling.py", line 745, in sample_lcm
denoised = model(x, sigmas[i] * s_in, **extra_args)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1520, in _call_impl
return forward_call(*args, **kwargs)
File "/workspace/ComfyUI/comfy/samplers.py", line 286, in forward
out = self.inner_model(x, sigma, cond=cond, uncond=uncond, cond_scale=cond_scale, model_options=model_options, seed=seed)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1520, in _call_impl
return forward_call(*args, **kwargs)
File "/workspace/ComfyUI/comfy/samplers.py", line 273, in forward
return self.apply_model(*args, **kwargs)
File "/workspace/ComfyUI/comfy/samplers.py", line 270, in apply_model
out = sampling_function(self.inner_model, x, timestep, uncond, cond, cond_scale, model_options=model_options, seed=seed)
File "/workspace/ComfyUI/comfy/samplers.py", line 250, in sampling_function
cond_pred, uncond_pred = calc_cond_uncond_batch(model, cond, uncond_, x, timestep, model_options)
File "/workspace/ComfyUI/comfy/samplers.py", line 222, in calc_cond_uncond_batch
output = model_options['model_function_wrapper'](model.apply_model, {"input": input_x, "timestep": timestep_, "c": c, "cond_or_uncond": cond_or_uncond}).chunk(batch_chunks)
File "/workspace/ComfyUI/custom_nodes/ComfyUI_stable_fast/node.py", line 59, in __call__
self.stable_fast_model = build_lazy_trace_module(
File "/workspace/ComfyUI/custom_nodes/ComfyUI_stable_fast/module/sfast_pipeline_compiler.py", line 116, in build_lazy_trace_module
_enable_xformers(None)
File "/usr/local/lib/python3.10/dist-packages/sfast/compilers/diffusion_pipeline_compiler.py", line 321, in _enable_xformers
from sfast.libs.xformers.xformers_attention import xformers_memory_efficient_attention
File "/usr/local/lib/python3.10/dist-packages/sfast/libs/xformers/xformers_attention.py", line 14, in
ops.MemoryEfficientAttentionTritonFwdFlashBwOp:`

Another note, I thought it could be related to Xformer library was an issue from 2022, but it should not be the case now:
https://github.com/facebookresearch/xformers/issues/611
main library versions installed:
xformers                  0.0.25.dev761
triton                    2.2.0
torch                     2.2.0+cu121

me too. I'm using Camfyui in windows, Installed WSL but further I can go... please any advice will be good!
Error occurred when executing KSampler:
module 'xformers.ops' has no attribute 'MemoryEfficientAttentionTritonFwdFlashBwOp'
File "C:\matrix\Data\Packages\ComfyUI\execution.py", line 151, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "C:\matrix\Data\Packages\ComfyUI\execution.py", line 81, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "C:\matrix\Data\Packages\ComfyUI\custom_nodes\deforum-comfy-nodes\deforum_nodes\exec_hijack.py", line 55, in map_node_over_list
return orig_exec(obj, input_data_all, func, allow_interrupt)
File "C:\matrix\Data\Packages\ComfyUI\custom_nodes\ComfyUI-0246\utils.py", line 381, in new_func
res_value = old_func(*final_args, **kwargs)
File "C:\matrix\Data\Packages\ComfyUI\execution.py", line 74, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "C:\matrix\Data\Packages\ComfyUI\nodes.py", line 1366, in sample
return common_ksampler(model, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, denoise=denoise)
File "C:\matrix\Data\Packages\ComfyUI\nodes.py", line 1336, in common_ksampler
samples = comfy.sample.sample(model, noise, steps, cfg, sampler_name, scheduler, positive, negative, latent_image,
File "C:\matrix\Data\Packages\ComfyUI\custom_nodes\ComfyUI-Impact-Pack\modules\impact\sample_error_enhancer.py", line 9, in informative_sample
return original_sample(*args, **kwargs) # This code helps interpret error messages that occur within exceptions but does not have any impact on other operations.
File "C:\matrix\Data\Packages\ComfyUI\custom_nodes\ComfyUI-AnimateDiff-Evolved\animatediff\sampling.py", line 267, in motion_sample
return orig_comfy_sample(model, noise, *args, **kwargs)
File "C:\matrix\Data\Packages\ComfyUI\comfy\sample.py", line 100, in sample
samples = sampler.sample(noise, positive_copy, negative_copy, cfg=cfg, latent_image=latent_image, start_step=start_step, last_step=last_step, force_full_denoise=force_full_denoise, denoise_mask=noise_mask, sigmas=sigmas, callback=callback, disable_pbar=disable_pbar, seed=seed)
File "C:\matrix\Data\Packages\ComfyUI\comfy\samplers.py", line 704, in sample
return sample(self.model, noise, positive, negative, cfg, self.device, sampler, sigmas, self.model_options, latent_image=latent_image, denoise_mask=denoise_mask, callback=callback, disable_pbar=disable_pbar, seed=seed)
File "C:\matrix\Data\Packages\ComfyUI\comfy\samplers.py", line 609, in sample
samples = sampler.sample(model_wrap, sigmas, extra_args, callback, noise, latent_image, denoise_mask, disable_pbar)
File "C:\matrix\Data\Packages\ComfyUI\comfy\samplers.py", line 548, in sample
samples = self.sampler_function(model_k, noise, sigmas, extra_args=extra_args, callback=k_callback, disable=disable_pbar, **self.extra_options)
File "C:\matrix\Data\Packages\ComfyUI\venv\lib\site-packages\torch\utils_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
File "C:\matrix\Data\Packages\ComfyUI\comfy\k_diffusion\sampling.py", line 154, in sample_euler_ancestral
denoised = model(x, sigmas[i] * s_in, **extra_args)
File "C:\matrix\Data\Packages\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1511, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "C:\matrix\Data\Packages\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1520, in _call_impl
return forward_call(*args, **kwargs)
File "C:\matrix\Data\Packages\ComfyUI\comfy\samplers.py", line 286, in forward
out = self.inner_model(x, sigma, cond=cond, uncond=uncond, cond_scale=cond_scale, model_options=model_options, seed=seed)
File "C:\matrix\Data\Packages\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1511, in _wrapped_call_impl
return self.call_impl(*args, **kwargs)
File "C:\matrix\Data\Packages\ComfyUI\venv\lib\site-packages\torch\nn\modules\module.py", line 1520, in call_impl
return forward_call(*args, **kwargs)
File "C:\matrix\Data\Packages\ComfyUI\comfy\samplers.py", line 273, in forward
return self.apply_model(*args, **kwargs)
File "C:\matrix\Data\Packages\ComfyUI\comfy\samplers.py", line 270, in apply_model
out = sampling_function(self.inner_model, x, timestep, uncond, cond, cond_scale, model_options=model_options, seed=seed)
File "C:\matrix\Data\Packages\ComfyUI\comfy\samplers.py", line 250, in sampling_function
cond_pred, uncond_pred = calc_cond_uncond_batch(model, cond, uncond, x, timestep, model_options)
File "C:\matrix\Data\Packages\ComfyUI\comfy\samplers.py", line 222, in calc_cond_uncond_batch
output = model_options['model_function_wrapper'](model.apply_model, {"input": input_x, "timestep": timestep, "c": c, "cond_or_uncond": cond_or_uncond}).chunk(batch_chunks)
File "C:\matrix\Data\Packages\ComfyUI\custom_nodes\ComfyUI_stable_fast\node.py", line 59, in call
self.stable_fast_model = build_lazy_trace_module(
File "C:\matrix\Data\Packages\ComfyUI\custom_nodes\ComfyUI_stable_fast\module\sfast_pipeline_compiler.py", line 116, in build_lazy_trace_module
_enable_xformers(None)
File "C:\matrix\Data\Packages\ComfyUI\venv\lib\site-packages\sfast\compilers\diffusion_pipeline_compiler.py", line 321, in _enable_xformers
from sfast.libs.xformers.xformers_attention import xformers_memory_efficient_attention
File "C:\matrix\Data\Packages\ComfyUI\venv\lib\site-packages\sfast\libs\xformers\xformers_attention.py", line 14, in
ops.MemoryEfficientAttentionTritonFwdFlashBwOp:

See chengzeyi/stable-fast#135 and chengzeyi/stable-fast#136