Allow indexing of headings in Related

I'm in the process of reworking the reference section of the Hugo documentation. The general idea is:

The reference section is fully scripted (to put it simply) and describes every thing in Hugo (config option, function, method, ...) briefly.
We will then have a explanation section (and some others) that explains the things in more detail. This section will be manually maintained.
I will try to maintain automatic two-way links between a definition and the explanation using one or more Related indices (which comes on top of any manual linking).

And the last bullet is the introduction to this issue. The Related Content feature works great for connecting pages on the top level, but does not handle anchor linking. And we have things in Hugo, e.g. baseURL, that isn't big enough to warrant its own page, at least not in the reference section.
So, instead of trying to build a rubber bands and paper clips solution, I thought we could expand Related to support this.
And my initial idea was to add a SetKeywords (or something) to the heading render hook context, so you could do:
{{ .SetKeywords (dict "id" "reference-baseurl") }}

Or something.
And then when that heading match is included in a result set:

.RelPermalink and .Permalink will have the correct anchoring.
.Page.RelPermalink will probably point to the page it wraps.

There are some assumptions that may be clearer when we test this, but I think that all in all this should be both doable and relatively simple.
Assumptions:

Only the best match for a given Page will be matched.

Edit: I have slept on this, and the catch 22 with the proposal above is obviously at we need to render the content before we can make the page selection. I think we instead can just make a special pageIDs index (or something), which would also be simpler:
[related]
  includeNewer = false
  threshold = 80
  toLower = false
[[related.indices]]
  name = 'pageIDs'
  weight = 100

@jmooring could this be a way to go? Any pitfalls or alternative approaches?

I need to think about this for a bit, but before I do...
Whatever we (meaning you) do here, can it "set the stage" to add headings to the content map at some point in the future?
Primary use case: verify an anchor's existence in the link render hook. Every time a content author changes a heading, they run the risk of breaking links from other pages. It's easy to forget about the impact of changing a heading.
The important bit is in the middle:
{{ $href := "" }}
{{ $u := urls.Parse .Destination }}

{{ with $page := .Page.GetPage $u.Path }}
  {{ $href = .RelPermalink }}
  {{ with $u.RawQuery }}
    {{ $href = printf "%s?%s" $href $u.RawQuery }}
  {{ end }}
  {{ with $u.Fragment }}

    {{/* Nice to have */}}
    {{ if $page.FragmentExists . }}
      {{ $href = printf "%s#%s" $href $u.Fragment }}
    {{ else }}
      {{ errorf "Fragment %q on %q does not exist" . $page.Title }}
    {{ end }}

  {{ end }}
{{ else }}
  {{ errorf "Unable to resolve link destination" }}
{{ end }}

Again, I am not asking for this now. I just want to think forward a bit. Assuming it's even possible.

If we did something like this at some point, I suggest:
.Page.Fragment.Exists "my-heading-id" --> bool
.Page.Fragment.Count "my-heading-id" --> int

The second one can be used to make sure the heading id's on a given page are unique.
Or just do the second one... it's truthy/falsy.

.Page.Fragment.Exists "my-heading-id" --> bool

Yea, I have long wanted to create a map of the rendered content so you could create your own ToC etc. With that you could add methods ala .RenderContent.GetSection "page-id" (or something). I have discussed this with the Goldmark author, and conceptually it's not that hard, but we would need a hook into the renderer so we could set some start/stop markers to map the content.
As to this issue, I have amended the intro comment.

.Page.Fragment.Exists "my-heading-id" --> bool

OK, thinking about this a second time with my adjusted approach in mind:
[related]
  includeNewer = false
  threshold = 80
  toLower = false
[[related.indices]]
  name = 'pageIDs'
  weight = 100

The above still means that we need to run the Goldmark parser to collect the page fragments. But we 1) know it before we start building and 2) We could potentially delay the rendering step for when/if we need it,
With that we could also make this information somehow available to the templates.

.Page.Fragment.Exists

What would be the use case of this?

What would be the use case of this?

Verify an anchor's existence in the link render hook. Every time a content author changes a heading, they run the risk of breaking links from other pages. It's easy to forget about the impact of changing a heading.

Verify an anchor's existence in the link render hook.

@jmooring  OK, my first implementation of this has a Fragments which returns a string slice. I have a gut feeling that we would want to add this to the RenderContent (where it would fit in the table of contents struct) before ...
One question for this particular Related feature:

When I get a list of related pages, some of them point to a sub heading, I expect to get a link to the sub heading when doing RelPermalink.
But I also want to be able to navigate to the owning document. How do I do that? With Parent?

Let's say that our related site config contains indices for both tags and fragments.
And let's say that for Post 1 the .Related method returns two items, both point to Post 2. One points to the page (the tag match), the other points to the fragment within the page (the fragment match). They are duplicates, sort of, but not really.
How is that handled?
Regarding naming... instead of changing the behavior (adding fragments) of .Permalink and .RelPermalink, could we do something like .Permalink.WithFragment. If no fragment exists, it could fall back to .Permalink.
I'm terrible with naming, but you get the idea.

How is that handled?

The best match, which I think is the only sensible behaviour.

something like .Permalink.WithFragment

Hmm ... Yea, I don't think the above would work, but it gave me an idea. I have always assumed that we somehow needed to make the fragments behave just like any other page, so you would not have to do anything special in the templates.
But you could do:
{{ range $related }}
{{ if .Fragment }}
{{ .Title }}: {{ .Fragment.Title }}: {{ .Fragment.RelPermalink }}:
{{ else }}
{{ .Title }}: {{ .RelPermalink }}
{{ end }}
{{ end }}

Looks good to me.

@jmooring OK, I have gone a few rounds with myself on this, and I think I now have a revised implementation that I'm reasonably happy with. I had a few wrong assumptions starting out with this:

The heading/fragment filtering part should be optional. Indexing of headings is a valuable feature on its own.
There will be a one to many when listing matching headers for a Page.

With that I have added some new API that should make the ToC people happy, too.
I have tested this briefly in the docs site:
[related]
  threshold    = 20
  includeNewer = true
  toLower      = false
  [[related.indices]]
    name   = "keywords"
    weight = 90
  [[related.indices]]
    name        = "fragmentrefs"
    type        = "fragments"
    applyFilter = true
    weight      = 70
  [[related.indices]]
    name    = "date"
    weight  = 10
    pattern = "2006"

And the template:
{{ $related := .Site.RegularPages.Related . | first 5 }}
{{ with $related }}

See Also

    {{ range . }}

        {{ .Title }}
        {{ with .HeadingsFiltered }}

            {{ range . }}
              {{ $link := printf "%s#%s" $.RelPermalink .ID }}

                {{ .Title }}

            {{ end }}

        {{ end }}

    {{ end }}

{{ end }}

Prints

If I disable the filtering part I get:

The other related new API on Page is:

Fragments which returns:

// Fragments holds the table of contents for a page.
type Fragments struct {
	// Headings holds the top level headings.
	Headings Headings

	// Identifiers holds all the identifiers in the ToC as a sorted slice.
	// Note that collections.SortedStringSlice has both a Contains and Count method
	// that can be used to identify missing and duplicate IDs.
	Identifiers collections.SortedStringSlice

	// HeadingsMap holds all the headings in the ToC as a map.
	// Note that with duplicate IDs, the last one will win.
	HeadingsMap map[string]*Heading
}

You use the above to build your ToC etc.
I will try to wrap this up later today, but shout if you disagree...


Windows version can't verify Let's Encrypt certificates

Describe the bug
crypto error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
When trying to forward queries to any DoT server with a Let's Encrypt certificate.
Steps to reproduce the behavior:

Use as example forwarder<EMAIL_ADDRESS>Use tls-win-cert, or tls-cert-bundle with a complete letsencrypt certs bundle. Does not matter.
Google the issue, find you did what they suggest doing to no avail.

System:

Unbound version: 1.17.1
OS: Windows 10 22H2

`unbound -V` output:
Version 1.17.1
Configure line: --host=x86_64-w64-mingw32 --build=x86_64-redhat-linux-gnu --target=x86_64-w64-mingw32 --prefix=/usr/x86_64-w64-mingw32/sys-root/mingw --exec-prefix=/usr/x86_64-w64-mingw32/sys-root/mingw --bindir=/usr/x86_64-w64-mingw32/sys-root/mingw/bin --sbindir=/usr/x86_64-w64-mingw32/sys-root/mingw/sbin --sysconfdir=/usr/x86_64-w64-mingw32/sys-root/mingw/etc --datadir=/usr/x86_64-w64-mingw32/sys-root/mingw/share --includedir=/usr/x86_64-w64-mingw32/sys-root/mingw/include --libdir=/usr/x86_64-w64-mingw32/sys-root/mingw/lib --libexecdir=/usr/x86_64-w64-mingw32/sys-root/mingw/libexec --localstatedir=/usr/x86_64-w64-mingw32/sys-root/mingw/var --sharedstatedir=/usr/x86_64-w64-mingw32/sys-root/mingw/com --mandir=/usr/x86_64-w64-mingw32/sys-root/mingw/share/man --infodir=/usr/x86_64-w64-mingw32/sys-root/mingw/share/info --enable-debug --enable-static-exe --disable-flto --disable-gost --with-ssl=/home/wouter/src/unbound/unbound-dist-EDtVCU/sslinstall --with-libexpat=/home/wouter/src/unbound/unbound-dist-EDtVCU/wxpinstall
Linked libs: event winsock (it uses WSAWaitForMultipleEvents), OpenSSL 1.1.1l  24 Aug 2021
Linked modules: dns64 respip validator iterator
scnr: that oudated openssl should count as a bug of its own

The code for this is in the connect_sslctx_create function, in util/net_help.c:1257-1283
https://github.com/NLnetLabs/unbound/blob/ed07c5424dd67d4eb851b8915b96cde3d7b2c45c/util/net_help.c#L1257-L1283
This means that it loads the certificate bundle from tls-cert-bundle first. And then, if tls-win-cert or tls-system-cert is enabled, it loads certificates from the system, both of these options set the wincert bool to true.
If I try to access the site you mention from here, it works with the system certs, on Linux. But also if I disable the system certs and load the tls-cert-bundle by itself. This is the same code that is used on both Linux and Windows, in that if the wincert option is false it does not do that. Since it works with code that is the same for Linux and Windows here, perhaps this is not windows specific but a certificate failure somehow?

Indeed it was a certifcate failure. I tried a ton of things and suddenly it was like the issue never existed. Probably an outdated certifcate in my system's bundle.


Add items to signature of hset

What do these changes do?
It allows passing items (key/value pairs as a list) to hset.
Are there changes in behavior for the user?
No regression, just new functionality.
Related issue number
https://github.com/aio-libs/aioredis-py/issues/1299
Checklist

[x] I think the code is well written
[x] Unit tests for the changes exist
[x] Documentation reflects the changes
[x] If you provide code modification, please add yourself to CONTRIBUTORS.txt

The format is <Name> <Surname>.
Please keep alphabetical order, the file is sorted by names.

[x] Add a new news fragment into the CHANGES/ folder

name it <issue_id>.<type> (e.g. 588.bugfix)
if you don't have an issue_id change it to the pr id after creating the PR
ensure type is one of the following:

.feature: Signifying a new feature.
.bugfix: Signifying a bug fix.
.doc: Signifying a documentation improvement.
.removal: Signifying a deprecation or removal of public API.
.misc: A ticket has been closed, but it is not of interest to users.

Make sure to use full sentences with correct case and punctuation, for example:
Fix issue with non-ascii contents in doctest text files.

Hi please update this at redis-py. We've migrated!

https://github.com/redis/redis-py/pull/2006


With token, 403 Invalid or non-existent authentication information

In pypa/setuptools#1817, I reported an issue where the latest version of setuptools failed to release. Setuptools uses a proven mechanical release process, but in this latest release, I switched to using token-based authentication. This wasn't my first time using token-based auth. I'd previously cut a release of configparser using a (all projects) token. I used the same token and code to inject that token into the .travis config:
def gen_pypi_token():
	pw = $(keyring get "PyPI upload" jaraco).rstrip()
	pw = 'TWINE_PASSWORD="' + pw + '"'
	repo_url = $(git remote get-url --push origin).rstrip()
	repo = repo_url.replace('https://github.com/', '')
	crypt_pw = $(echo @(pw) | travis encrypt -r @(repo)).rstrip()
	jaraco.clipboard.copy(crypt_pw.strip('"'))

aliases['gen-pypi-token'] = gen_pypi_token

Yet, when it ran, the job produced this error:
HTTPError: 403 Client Error: Invalid or non-existent authentication information. for url: https://upload.pypi.org/legacy/

Reverting the change and going back to password-based releases worked around the issue.
It's not yet obvious to me where the error lies. Benoit suggested maybe it's because Setuptools uses the default PyPI deployer and twine 1.13 but configparser uses the latest. It's also possible that I fat-fingered something in the process (though unlikely as most of the process is mechanized).
I'm filing this ticket here to capture the issue and solicit any advice and to capture any solution once identified. This issue is specifically about token-based authentication failures on Travis uploads.

Does the /legacy/ endpoint support token-based auth? What about version 1.13? Reading the twine issues, I find pypa/twine#482, which indicates that @token is the right username, although I think I've read elsewhere that __token__ is the right form (and that's what worked for configparser).
This is the kind of issue that I'd be happy to dive in and find a solution for, but I feel uneasy with the circumstances. How can I test the production release process without creating a production release? Perhaps I should consider cutting 41.1.0.postN releases for the purpose of testing. Advice here would be welcomed.

Is there anything on the backend of warehouse that you could correlate with that timestamp (2019-08-03T09:57:04, time zone unknown but probably UTC or UTC-0400)?

@jaraco The original deployment of API tokens used @token as the username, but as of #6342 and #6345 the current username is __token__ and the current token prefix is pypi-.
Can you confirm that you're using the latest username and prefix, while still seeing the error?

Yes. I confirmed the token is prefixed with pypi- and I’m using the dunderscore token username.

I've created a test build that is likely to replicate the issue.

In this build, I was able to make a release using the token and bypassing DPL (I subsequently deleted the release from PyPI). So the issue lies with using DPL or something that DPL does. I did make other changes, such as building with pep517, but I suspect that's not pertinent.

I've just had a similar issue uploading to pypi from travis. I've getting
HTTPError: 403 Client Error: Invalid or non-existent authentication information. for url: https://upload.pypi.org/legacy/

However the upload to pypi succeeded! (I'm not sure if this is the same behaviour @jaraco saw?)
All files seem to have been uploaded and the release seems to have worked fine.
I got this twice, the first time with my password, I thought it might be related to the new token workflow, so I switched to a token and got the same result.
Links:

Package: https://github.com/samuelcolvin/aiohttp-toolbox
first release log: https://travis-ci.com/samuelcolvin/aiohttp-toolbox/builds/123885202
first release: https://pypi.org/project/aiohttp-toolbox/0.5/
second release log: https://travis-ci.com/samuelcolvin/aiohttp-toolbox/builds/123888117
second release: https://pypi.org/project/aiohttp-toolbox/0.5.1/

Thanks for the report @samuelcolvin! Can you confirm that the token you're feeding to Travis includes the pypi- prefix? We currently reject non-prefixed tokens, so I'm wondering if that could be the root cause 🙂

However the upload to pypi succeeded!

Interesting. That’s very different from the behavior I saw. In my failures, no artifacts were uploaded. My build would attempt to upload both wheel and sdist artifacts. Not sure if that’s relevant.

Okay. I now think I understand the crux of my problem. It's this line:
pw = 'TWINE_PASSWORD="' + pw + '"'

In the non-DPL upload technique, the most straightforward way I've found to pass the credentials to twine is through environment variables, but because Travis expects variables to include both the key and the value, it's not possible to encrypt just the password (and travis is uninterested in supporting this use case); one is forced to encrypt the TWINE_PASSWORD= as part of the payload.
But when I tried to apply this routine to generate the encrypted form of the token for the setuptools project, which uses DPL, it expects the password/token only, and I didn't account for that in the setuptools project when changing the credential. I'm 90% certain that if I omit that prefix from the token that it will work.
That doesn't explain the issue samuelcolvin experienced, so they may wish to file a separate ticket for that.
I'm closing this ticket and will re-open if my explanation above doesn't pan out.

I've revised my gen-pypi-token alias thus:
def switch_env(pw):
	"""
	Does the .travis.yml need the environment variable treatment?
	If so, wrap the password in the environment variable.

	https://github.com/pypa/warehouse/issues/6422#issuecomment-523355317
	"""
	uses_env = 'password:' not in pathlib.Path('.travis.yml').read_text()
	if not uses_env:
		print("Using simple password (without env)")
		return pw
	return 'TWINE_PASSWORD="' + pw + '"'

def gen_pypi_token():
	pw = switch_env($(keyring get "PyPI upload" jaraco).rstrip())
	repo_url = $(git remote get-url --push origin).rstrip()
	repo = repo_url.replace('https://github.com/', '')
	crypt_pw = $(echo @(pw) | travis encrypt -r @(repo)).rstrip()
	jaraco.clipboard.copy(crypt_pw.strip('"'))

I've created the 42.2 release using this new technique.

@woodruffw yes, the token definitely included the prefix: looking back at my bash history I see travis encrypt -r samuelcolvin/aiohttp-toolbox pypi-***.
Remember also, I got the exact same failure with the v0.5 release where I was still using my standard password, as you can see from the history of .travis.yml, the deploy setup hasn't changed this year. I've made 20 or so release of the package this year, none of which failed until v0.5.
It looks like the release used setuptools-41.1.0, pip-19.2.2, wheel-0.33.6 and twine-1.13.0 if that helps.

my issue seems to have been fixed by setuptools-v41.2.

sorry, ignore that, the error seems the same: https://travis-ci.com/samuelcolvin/aiohttp-toolbox/builds/124041776


Still active?

I'm using Pagefront for a number of apps but not seeing that it's still being maintained... never received responses on Twitter or e-mail. Just doing a wellness check!

I'm on the same boat!


Update http4s-circe, http4s-client, ... to 1.0.0-M36

Updates

org.http4s:http4s-circe
org.http4s:http4s-client
org.http4s:http4s-core

from 1.0.0-M23 to 1.0.0-M36.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.http4s" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "@monthly" },
  dependency = { groupId = "org.http4s" }
}]

labels: library-update, early-semver-pre-release, semver-spec-pre-release, commit-count:1

Superseded by #87.


log exception as "error" since we are retrying anyways

Codecov Report

Merging #3238 (17ba330) into main (7c0dc7b) will decrease coverage by 3.87%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##             main    #3238      +/-   ##
==========================================
- Coverage   29.57%   25.71%   -3.87%
==========================================
  Files         332      152     -180
  Lines       39243    16336   -22907
==========================================
- Hits        11607     4200    -7407
+ Misses      27636    12136   -15500

Impacted Files
Coverage Δ

...Service/ApiService/onefuzzlib/WebhookOperations.cs
35.89% <0.00%> (ø)

... and 181 files with indirect coverage changes


operator debezium-operator (3.0.0-final)

/pipeline restart operator-hosted-pipeline

/pipeline restart operator-hosted-pipeline


is not assignable to type error with Typescript 2.4.1

TypeScript Version:  2.4.1
Code
// A *self-contained* demonstration of the problem follows...
class FactoryClass {
    public getRepository<T extends EntityClass> (target): Repository<T> {
        return new Repository<T>(target)
    }
}

abstract class EntityClass {
    public abstract getTable (): string
}

interface NxtDbColumnValuePair {
    column: string
    value: any
}

class Db {
    public insert (): Db {
        return this
    }

    public setTable (table: string) {
        return this
    }

    public setColumnsValuesPair (colValPairs: NxtDbColumnValuePair[]) {
        return this
    }

    public execute (): Promise<any> {
        return Promise.resolve({ inserId: 1 })
    }
}

class Repository<T extends EntityClass> {

    private db: Db = new Db()

    constructor (private entity) {}

    public insert (entityInstance: T): Promise<T> {
        const propertiesNameEntity = Object.getOwnPropertyNames(entityInstance)

        const colValPairs: NxtDbColumnValuePair[] = propertiesNameEntity
            .map((prop: string) => {
                return {
                    column: prop,
                    value: entityInstance[prop],
                }
            })

        return this.db.insert() // Insert value in SQL table
            .setTable(entityInstance.getTable())
            .setColumnsValuesPair(colValPairs)
            .execute()
            .then((results) => results.inserId) // Get new id inserted
            .then((id) => this.find(id)) // get entity by id and return it
    }

    public find (id?: number): Promise<T> { // I didn't put the code for this method but this is the definition
        return Promise.resolve(new this.entity())
    }
}

class User {}

class Client {}

class Token extends EntityClass {
    public user: User
    public client: Client
    public token: string

    public getTable (): string {
        return 'token'
    }
}

class MyClass {
    public generateNewToken (user: User, client: Client): Promise<Token> {
        const factory: FactoryClass = new FactoryClass()
        const token: string = '123456789' // Generated randomly

        const tokenClass: Token = new Token() // this class extends EntityClass
        tokenClass.user = user
        tokenClass.client = client
        tokenClass.token = token

        return factory.getRepository(Token).insert(tokenClass) // Error here !
    }
}

Expected behavior:
Should works with Token class (that extends EntityClass) inside Repository<T extends EntityClass> and a method : public insert (entityInstance: T): Promise<T>
Actual behavior:
Tells that Type 'Promise< EntityClass >' is not assignable to type 'Promise< Token >'. But Token extends EntityClass

Yes, looks like that happens on purpose.
In your case, getRepository<T extends EntityClass>(target) doesn't know to infer a type for T other than EntityClass, because target is implicitly of type any.  Either you need to explicitly specify Token for T as in
return factory.getRepository<Token>(Token).insert(tokenClass) // No error

or, more preferably, you should declare getRepository so that it knows it's getting a no-arg constructor:
class FactoryClass {
    public getRepository<T extends EntityClass> (target: { new(): T }): Repository<T> {

and probably also do the same for the Repository constructor:
class Repository<T extends EntityClass> {
…
  constructor(private entity: { new(): T }) { }

which allows the inference you wanted:
return factory.getRepository(Token).insert(tokenClass) // No error

Thank you, at least it was really simple, I needed an outside look

Automatically closing this issue for housekeeping purposes. The issue labels indicate that it is unactionable at the moment or has already been addressed.


Multi arch builds fail

When trying to build a multi architecture build, the build fails with the following error
#10 exporting to oci image format
--
9513 | #10 sha256:69a2560eef4d3ece902c3b5149d142e9bd132f25db0bc9e35b94201534c415d2
9514 | #10 ERROR: docker exporter does not currently support exporting manifest lists
9515 | ------
9516 | > exporting to oci image format:
9517 | ------
9518 | error: failed to solve: rpc error: code = Unknown desc = docker exporter does not currently support exporting manifest lists
9519 | time="2021-06-10T23:30:53Z" level=error msg="execution failed: exit status 1"

This was the .drone.yml file I was using
kind: pipeline
type: docker
name: default
platform:
  os: linux
  arch: arm64
steps:
- name: docker
  image: thegeeklab/drone-docker-buildx
  privileged: true
  settings:
    repo: gsp8181/calibre-web-arm
    tags: latest
    platforms: linux/arm/v7,linux/arm64/v8
    username:
      from_secret: docker_username
    password:
      from_secret: docker_password

I believe this issue is caused because --load is passed as a docker buildx argument when this should be  --push for multi architecture builds.

Thanks for your report. You are right that's related to --load which does not allow exporting manifest lists. The reason for why we use --load is that we want to separate the build and push step because otherwise the dry-run option would be difficult to handle. I'll create a test setup and try to workaround it somehow.

i have the same problem, its cost me a long night, sigh~

Related: https://github.com/docker/buildx/issues/59#issuecomment-659303756

@mingcheng @gsp8181 this should be fixed in the latest tag could one of you verify that it works as expected now?

@xoxys it seems a new issue was introduced with this fix
This works fine:
kind: pipeline
type: docker
name: default

steps:
- name: docker
  image: thegeeklab/drone-docker-buildx:latest
  privileged: true
  settings:
    context: buildx
    dockerfile: buildx/Dockerfile
    repo: bitprocessor/multiarch-drone
    tags: latest
    platforms: linux/amd64
    username:
      from_secret: docker_username
    password:
      from_secret: docker_password

But as soon as I add arm64 as platform:

kind: pipeline
type: docker
name: default

steps:
- name: docker
  image: thegeeklab/drone-docker-buildx:latest
  privileged: true
  settings:
    context: buildx
    dockerfile: buildx/Dockerfile
    repo: bitprocessor/multiarch-drone
    tags: latest
    platforms: linux/amd64,linux/arm64
    username:
      from_secret: docker_username
    password:
      from_secret: docker_password

It fails:
latest: Pulling from thegeeklab/drone-docker-buildx
Digest: sha256:6fe79725a5e707aa370a8a0d1417f0d52b56029e85e964b8effa3ee27238d4bd
Status: Image is up to date for thegeeklab/drone-docker-buildx:latest
+ /usr/local/bin/dockerd --data-root /var/lib/docker --host=unix:///var/run/docker.sock
Detected registry credentials
+ /usr/local/bin/docker version
Client:
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        370c289
 Built:             Fri Apr  9 22:42:10 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.6
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8728dd2
  Built:            Fri Apr  9 22:46:14 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
+ /usr/local/bin/docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Build with BuildKit (Docker Inc., v0.5.1)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 20.10.6
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc version: 12644e614e25b05da6fd08a38ffa0cfe1903fdec
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.15.0-143-generic
 Operating System: Alpine Linux v3.13 (containerized)
 OSType: linux
 Architecture: x86_64
 CPUs: 12
 Total Memory: 62.81GiB
 Name: c77a7c52fff3
 ID: AHB5:5WO6:SZUI:XY7Z:E35Y:TR4N:WCSU:O6HP:XZWA:FPOI:UTYZ:U5HO
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Username: ******
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  <IP_ADDRESS>/8
 Live Restore Enabled: false
 Product License: Community Engine

WARNING: No swap limit support
+ /usr/local/bin/docker buildx create --use
tender_elgamal
+ /usr/local/bin/docker buildx ls
NAME/NODE         DRIVER/ENDPOINT             STATUS   PLATFORMS
tender_elgamal *  docker-container
  tender_elgamal0 unix:///var/run/docker.sock inactive
default           docker
  default         default                     running  linux/amd64, linux/386
+ /usr/local/bin/docker buildx build --rm=true -f buildx/Dockerfile -t e0d58874f83305abd9f18e01445ad15dea56290e buildx --pull=true --build-arg DOCKER_IMAGE_CREATED=2021-07-01T08:25:54Z --push --platform linux/amd64,linux/arm64
#1 [internal] booting buildkit
#1 sha256:0a2ba0cd5ea8c52e79a7f93cbba408c05414cb8e17a43e9a13ce5940f8dd2fda
#1 pulling image moby/buildkit:buildx-stable-1
#1 pulling image moby/buildkit:buildx-stable-1 4.2s done
#1 creating container buildx_buildkit_tender_elgamal0
#1 creating container buildx_buildkit_tender_elgamal0 0.5s done
#1 DONE 4.7s

#2 [internal] load build definition from Dockerfile
#2 sha256:2d1b2c44f4abbc6fcad818c65f25288ef65b8364815b03fa5ce6c0eeecf2eb79
#2 transferring dockerfile: 51B done
#2 DONE 0.0s

#3 [internal] load .dockerignore
#3 sha256:3bb4aecf5946be306c314bb5f696e5fdf418405e11e4c17d4b06c43996e98830
#3 transferring context: 2B done
#3 DONE 0.0s

#4 [linux/arm64 internal] load metadata for docker.io/library/alpine:3
#4 sha256:465f2ae407e66c1d886aa1b086067ab5048eaf45b9ab7cc4de8f65195ebcc132
#4 ...

#6 [auth] library/alpine:pull token for registry-1.docker.io
#6 sha256:d7f1e0da8ab5a59c023ba11dbf7f3693b7ff437619e975d0b93e9b22d1d6a1b8
#6 DONE 0.0s

#5 [linux/amd64 internal] load metadata for docker.io/library/alpine:3
#5 sha256:1b81b8e0cb240d69aea10317b964ca403e3026583df1ee104e71fb8b9192dfe5
#5 DONE 1.9s

#4 [linux/arm64 internal] load metadata for docker.io/library/alpine:3
#4 sha256:465f2ae407e66c1d886aa1b086067ab5048eaf45b9ab7cc4de8f65195ebcc132
#4 DONE 1.9s

#7 [linux/arm64 1/1] FROM docker.io/library/alpine:3@sha256:234cb88d3020898631af0ccbbcca9a66ae7306ecd30c9720690858c1b007d2a0
#7 sha256:ed2c270953b2750731b144e9c735f7fc32302891e45731e7c8e94a3afa2ffc8f
#7 resolve docker.io/library/alpine:3@sha256:234cb88d3020898631af0ccbbcca9a66ae7306ecd30c9720690858c1b007d2a0 done
#7 DONE 0.0s

#8 [linux/amd64 1/1] FROM docker.io/library/alpine:3@sha256:234cb88d3020898631af0ccbbcca9a66ae7306ecd30c9720690858c1b007d2a0
#8 sha256:5deda93350bce5d963e186041c03b9fc9f03d8e5168a66519c6b7fc41675107e
#8 resolve docker.io/library/alpine:3@sha256:234cb88d3020898631af0ccbbcca9a66ae7306ecd30c9720690858c1b007d2a0 done
#8 DONE 0.0s

#10 [auth] library/e0d58874f83305abd9f18e01445ad15dea56290e:pull,push token for registry-1.docker.io
#10 sha256:5aae3f914e2b312b0f24246d1a852c9a327bc12f0c53290767a9535fbb1a252c
#10 DONE 0.0s

#9 exporting to image
#9 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00
#9 exporting layers done
#9 exporting manifest sha256:c00627643b27aeec6fdcfce041f60a6cb36796250f966cff4575d32b4594639d done
#9 exporting config sha256:2b52538fc127808cb8cf80df47778b9cfc8bb367531c163a646d021cea92be35 done
#9 exporting manifest sha256:84f970a30e36f9b03f57e6510f25b9fa74229e2c377c8ee1a9e92c3aee63b69e done
#9 exporting config sha256:6729c91422712f0bc6801eabb83948c67126a7d5f19585a70586052216b17051 done
#9 exporting manifest list sha256:3367819ef60d6cac2734de3d7ac0fbbc22ab3c3cd0c0e9326f6a7665f25ff8e7 done
#9 pushing layers
#9 ...

#11 [auth] library/e0d58874f83305abd9f18e01445ad15dea56290e:pull,push token for registry-1.docker.io
#11 sha256:2f2d09e05cb3a6bf3d1d54826b2ff8050d9535a3bd2e6e000e2590b9e6543759
#11 DONE 0.0s

#12 [auth] library/e0d58874f83305abd9f18e01445ad15dea56290e:pull,push token for registry-1.docker.io
#12 sha256:8e7db6694b9c2233ad85b8caae0265d20a04d894e5a3962a98437276de4e5098
#12 DONE 0.0s

#13 [auth] library/alpine:pull library/e0d58874f83305abd9f18e01445ad15dea56290e:pull,push token for registry-1.docker.io
#13 sha256:1074b59be64ff22e12fbfae4d9b15af80244315fa4253145e6b2e1c903626a8f
#13 DONE 0.0s

#14 [auth] library/e0d58874f83305abd9f18e01445ad15dea56290e:pull,push token for registry-1.docker.io
#14 sha256:b2c6eea312aad072e67a30e0ce065490f0cb303fd436d86231222c1264a9d808
#14 DONE 0.0s

#9 exporting to image
#9 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00
#9 ...

#15 [auth] library/e0d58874f83305abd9f18e01445ad15dea56290e:pull,push token for registry-1.docker.io
#15 sha256:847cb71531d57d2571fc78c0e8498abe4df9c00b5272d00edd84bfdecaf3e175
#15 DONE 0.0s

#9 exporting to image
#9 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00
#9 pushing layers 1.2s done
#9 ERROR: server message: insufficient_scope: authorization failed
------
 > exporting to image:
------
error: failed to solve: rpc error: code = Unknown desc = server message: insufficient_scope: authorization failed
time="2021-07-01T08:26:02Z" level=error msg="execution failed: exit status 1"

@xoxys just took a second look at the build logs of the non-multi-arch run, and there it does:
#7 DONE 0.5s
+ /usr/local/bin/docker tag f73709d09e856d030b0c405e13547606c3c38135 ******/multiarch-drone:latest
+ /usr/local/bin/docker push ******/multiarch-drone:latest
The push refers to repository [docker.io/******/multiarch-drone]
72e830a4dff5: Preparing
72e830a4dff5: Pushed
latest: digest: sha256:07b1e98d0c9ae40ceac7bd7710dce3b93f12b5c670f67f6c708f2185bcfd3a95 size: 527
+ /usr/local/bin/docker rmi f73709d09e856d030b0c405e13547606c3c38135
Untagged: f73709d09e856d030b0c405e13547606c3c38135:latest
+ /usr/local/bin/docker system prune -f
Total reclaimed space: 0B

The /usr/local/bin/docker tag f73709d09e856d030b0c405e13547606c3c38135 ******/multiarch-drone:latest part seems to be missing when specifying multiple platforms.

See https://github.com/thegeeklab/drone-docker-buildx/pull/30 for a possible fix (if it works)


BGL PR bounty hunt ($10000 overall budget)

To get more people involved and provide motivation, we are announcing Bitgesell Pull Request bounty hunt!
The rules are simple:

You can create any reasonable pull request that may contain any modifications, including, but not limited to:

Refactoring and simplification;
Test fixes (1 test group/file fixed by single PR counts!);
Cleanup of features that are no longer used (e.g. non-segwit transactions);
Documentation and comments (but if no code changes then some reasonable amount of changes should be done to count);
Bug fixes;

Every PR would be paid $500 in USDT upon approval, larger PRs could receive bigger payouts (PRs of lesser significance like comments editing or one-line changes could receive lesser payout).
Interested people are welcome to become maintainers of the project;

Please tell whether my pr refactoring extract_strings.py would be rewarded or not?

I am not getting any reply from one week or more. Please reply

0x6957d999Bbea7771C22beA4Dea4d7c0E39E8Aa1F
Please note my wallet here too (I also sent it on mail).

I made a new pr please check it out

if it is considered not in use the feature can be deleted and needs cleaning.
something that has no function can be deleted.

There was an issue stating it needed to be deleted so I did if I have not
created any further issues and have solved the bug, then can it be
considered for reward?
On Tue, 20 Jul, 2021, 8:37 pm berbagi12, @.***> wrote:

if it is considered not in use the feature can be deleted and needs
cleaning.
something that has no function can be deleted.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/BitgesellOfficial/bitgesell/issues/39#issuecomment-883469589,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AUULJTPP7YDDY5J7KVLSX33TYWGKVANCNFSM5ATBY7PA
.

Is this pr eligible for reward?

Please reply whether this is eligible or not then I will continue resolving other issues too

By eligible I mean for bug bounty of 500 usdt

Please review my pull request.

Hi, Would like to check if this is normal, or is something wrong with my setup?

To get more people involved and provide motivation, we are announcing Bitgesell Pull Request bounty hunt!
The rules are simple:

You can create any reasonable pull request that may contain any modifications, including, but not limited to:

Refactoring and simplification;
Test fixes (1 test group/file fixed by single PR counts!);
Cleanup of features that are no longer used (e.g. non-segwit transactions);
Documentation and comments (but if no code changes then some reasonable amount of changes should be done to count);
Bug fixes;

Every PR would be paid $500 in USDT upon approval, larger PRs could receive bigger payouts (PRs of lesser significance like comments editing or one-line changes could receive lesser payout).

Interested people are welcome to become maintainers of the project;

**Sir please check my PR #47 **

To get more people involved and provide motivation, we are announcing Bitgesell Pull Request bounty hunt!
The rules are simple:

You can create any reasonable pull request that may contain any modifications, including, but not limited to:

Refactoring and simplification;
Test fixes (1 test group/file fixed by single PR counts!);
Cleanup of features that are no longer used (e.g. non-segwit transactions);
Documentation and comments (but if no code changes then some reasonable amount of changes should be done to count);
Bug fixes;

Every PR would be paid $500 in USDT upon approval, larger PRs could receive bigger payouts (PRs of lesser significance like comments editing or one-line changes could receive lesser payout).

Interested people are welcome to become maintainers of the project;

sir please review my pr #47

To get more people involved and provide motivation, we are announcing Bitgesell Pull Request bounty hunt!
The rules are simple:

You can create any reasonable pull request that may contain any modifications, including, but not limited to:

Refactoring and simplification;
Test fixes (1 test group/file fixed by single PR counts!);
Cleanup of features that are no longer used (e.g. non-segwit transactions);
Documentation and comments (but if no code changes then some reasonable amount of changes should be done to count);
Bug fixes;

Every PR would be paid $500 in USDT upon approval, larger PRs could receive bigger payouts (PRs of lesser significance like comments editing or one-line changes could receive lesser payout).

Interested people are welcome to become maintainers of the project;

I request you to please have a look at my PR🙏🙏

Issue Status: 1. Open 2. Started 3. Submitted 4. Done

Please note I still have the following merge requests open at present, all of which have been open for several months:

https://github.com/BitgesellOfficial/bitgesell/pull/52 - paid ✔
https://github.com/BitgesellOfficial/bitgesell/pull/53 - awaiting proper review
https://github.com/BitgesellOfficial/bitgesell/pull/54 - awaiting proper review
https://github.com/BitgesellOfficial/bitgesell/pull/55 - awaiting proper review
https://github.com/BitgesellOfficial/bitgesell/pull/57 - awaiting proper review
https://github.com/BitgesellOfficial/bitgesell/pull/58 - awaiting proper review
https://github.com/BitgesellOfficial/bitgesell/pull/59 - awaiting proper review

Additionally, I have a PR to join some of the above changes into Janus branch, where development appears to be ahead of master:

https://github.com/BitgesellOfficial/bitgesell/pull/56

I have further contributions already committed locally, and am eager to submit them, but have not yet done so pending resolution of the discussion at https://github.com/BitgesellOfficial/bitgesell/pull/52#issuecomment-911791689
Considering the amount of time that has passed, and the low review effort from maintainers, I have little faith that this project is serious about paying its contributors. I would caution other developers to consider carefully before contributing for the bounty.

Someone please check my bounty

Contrary to the above three notifications, I have not received any further payment.  PRs remain open.
Contributors beware.

@madnadyka @janus @van-orton Please take care of this. @slowriot thanks for your patience and understanding. We would sort this out.

I see that after almost a year, the following two pull requests have finally been merged:

https://github.com/BitgesellOfficial/bitgesell/pull/52
https://github.com/BitgesellOfficial/bitgesell/pull/53

I'm glad to see my contributions are being used.  However, I have not yet received payment.  I would appreciate it if you could process payment to the addresses given in the PRs as agreed under this bounty.
Contributors:
For the benefit of other developers considering contributing, and wondering about the legitimacy of this project - I will update this message if payment has been received.


Place mark feature before mkmk. Fixes #377

See discussion in #377.

@simoncozens @ohbendy : I'm not sure the marks are placed properly now
here's the sample with the newly built font (I haven't published it yet). Ben's old submission build (when he sent us the sources we got also binaries) is reddish and the newly updated source font is greenish (see the mark positioning -- IMHO, it appears to be off by 1, but I might be wrong). Tested it for NotoLoopedLao but all of the Looped fonts have the same property.

Ok. I’m happy to look at this some more, but it highlights the need for the kind of shaping regression test framework that I recently added to fontbakery. (See https://simoncozens.github.io/tdd-for-otl/ )
Could you split off these sources to their own repos? That way I can add specific test suites for them.

Yep unfortunately that's broken in a different way, glad you didn't publish yet!
Agree there should be a testing stage. IMO the best person to do the checking would be the designers, because different people will choose to handle things in different ways, they will know the exact checks to run on each set of fonts, and will know what the desired result is. We can also check in different environments (e.g InDesign, Word, browsers) as unexpected things can occur.

I'll create notofonts/Noto-Lao and notofonts/Noto-Thai.
Looking at the Noto Looped Thai now, there are some glyphs that are not in the UI font and the PAL and SAN language systems are missing from UI as well.

That is correct. Marek advised that the minority languages won't appear in a UI environment.

OK. That makes sense. Some lookups were still there.
I merged the sources files. I guess we can drop thoses language systems when slicing the UI fonts.

Sorry for not removing those lookups, thanks for checking.
Not sure what you've merged; the document fonts and UI fonts have different outlines and behaviour.

By merging I mean put the masters of NotoLoopedLaoUI in NotoLoopedLao with an axis for the UI variation.
The behaviour differences are:

the master specific mark positioning with the lookup LaoContexualKerning,
a few missing glyphs in one or the other and the corresponding lookups.

For the master specific mark, an alternative solution would be to use a contextual composite glyph with the expected kerning. With the merged sources, lookup LaoContexualKerning would only work with the feature syntax update for font variation Simon has worked on, and the contextual composite glyph would work with current feature syntax.
Otherwise, the fix for the mark and mkmk features is to have the kern feature before the mark and mkmk feature.
I've already done most of this in the ui-as-axis branches on https://github.com/notofonts/Noto-Thai and https://github.com/notofonts/Noto-Lao.
I'll add tests to see what I may have broken in the process.

Ok. Please let me test the compiled fonts before publishing.

The point of splitting to a separate repo is that you and I can design a test suite together, and then we can gate publishing on that test suite passing.

put the masters of NotoLoopedLaoUI in NotoLoopedLao with an axis for the UI variation

The document and UI fonts also have different values for family alignment zones, WinAscent/WinDescent, underline and strikethrough thickness and position.

Some lookups were still there.

I just checked all the sources I'd sent and couldn't find anything that shouldn't have been there. Glyphs would have generated an error if there were lookups for nonexistent glyphs.

you and I can design a test suite together

Sorry, no. Please just let me test the fonts before publishing. I have all the testing documents I need already, they're not part of the deliverables we agreed. This work was completed in December. I can't work for free on designing more tools for testing.

Please just let me test the fonts before publishing. I have all the testing documents I need already, they're not part of the deliverables we agreed.

Understood. At the very least, I want to add regression tests to ensure that the original bug you reported (#377) are fixed and that whatever is going on in Marek's example above is also fixed, and to ensure that these problems don't recur in future. But I can write those myself.


DLTK's implementation of DeepMedic underperforms original.

Hello,
Let us note here to the users that DLTK's implementation of DeepMedic is significantly underperforming the original implementation (publicly available at link).
If users seek to evaluate performance of DeepMedic, eg to find the capabilities of the model, compare with other methods, etc, they must use the original version.
Please leave this issue open until the implementation of this version is brought on par with the original.
Thank you,
Konstantinos Kamnitsas

Considering this implementation comes from our group, people might expect the same performance as the original code base. I've pushed a WARNING/Note comment at the top of dltk/models/segmentation/deepmedic with https://github.com/DLTK/DLTK/commit/61afd38d1ba1dd2a3bb22d190330b682d1fc3c88 stating:
WARNING/NOTE
This implementation is work in progress and an attempt to implement a
scalable version of the original DeepMedic [1] source. It will NOT
yield the same accuracy performance as described in the paper.
If you are running comparative experiments, please refer to the
original code base in [1].

[1] https://github.com/Kamnitsask/deepmedic
If you want this highlighted better, let me know. Let's keep this thread open until this is resolved.

Looks good Martin, thanks. Yes, with the other model implementations looking good on the DLTK paper, users could take for granted that this is polished as well. So lets leave it visible for now that this model has not been mirrored/transferred from the original.
I would leave the issue open for now, to avoid confusion of users. At least that's the approach I take with issues on my project (as "strong warnings" to users), not sure it's standard engineering practice though.
I'll try to make time to look into this myself in the future.
Cheers,
K


Citizen science

Hey, this is the second time I've made this mistake, where I mean to open PRs to my own fuel and I get the wrong upstream. If you know of a way I can stop this from happening again, lemme know -- I'd like to stop bothering you.


chore: cleanup mock / appsync simulator dependencies

Cleanup unused and missing dependencies in mock and the AppSync simulator.

@cjihrig can you fix the unused warnings

@lazpavel I think the bot is saying that this fixes 3 pre-existing issues. Specifically, the 3 unused variables that this PR removes in packages/amplify-util-mock/src/__e2e__/util-method-e2e.test.ts


style: reformat backing image controller log message

Ref: longhorn/longhorn#5015

Info logs should start with uppercase V+ed or V+ing
Warn/Error logs should start with lowercase V+ed or V+ing
change Debug logs to Info, Warn or remove them

@innobead we can use this PR as example and make sure we are on the same page of logging reformat, thanks!

IIRC, @innobead  we use uppercase for the log message regardless of the level as a convention, right?
logrus.WithError(err).Error("Error....")

return fmt.Errorf("error ...")

IIRC, @innobead  we use uppercase for the log message regardless of the level as a convention, right?
logrus.WithError(err).Error("Error....")

return fmt.Errorf("error ...")

~IIRC, @innobead we use uppercase for the log message regardless of the level as a convention, right?~
We use uppercase for the log message regardless of the level as a convention. longhorn/longhorn#5015 (comment)
logrus.WithError(err).Error("Error....")

return fmt.Errorf("error ...")

Oh I misunderstood the description in #5015
For logging no matter what level, start with uppercase.
Error message means message inside error not logging, and it should start with lowercase

@Mergifyio backport v1.4.x


Plugin for Gorouter

Hi,
I develop a plugin for goRouter and I would like to know if is it possible to implement the plugin as part of the GoRouter?
Thanks.

@talmanor2 could you give us more details on your usecase

what do you hope to use your intermediary component or plugin for.
what scope do you want to use the plugin, for e.g. do you want it to be global or do you want it to apply to requests for routes in a space/org/domain?
who do you imagine having access to make these changes, is it operators or app developers or some other persona?

Could you please provide answers to the above questions? Also, as others have mentioned, our efforts are currently focused on Istio/Envoy integration, so this will likely not be prioritized.


Acrolinx quality improvements: AD-FS-supportfor-alternate-hitname-bin…

…ding-for-certificate0authentication.md

@robinharwood, @Xelu86
Can you review the proposed changes? IMPORTANT: When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team


    chore: deprecate splitVendorChunkPlugin

New updates on head repo.
https://github.com/vitejs/vite/commit/45a06daac82524cf318a4dff7ae0b5f9cf67a0b2

Please update the docs. They still reference the deprecated method.
https://v3.vitejs.dev/guide/build.html#chunking-strategy

Please update the docs. They still reference the deprecated method.
https://v3.vitejs.dev/guide/build.html#chunking-strategy

PR is welcome. Thanks.


no-find-dom-node: Does not detect named imported function

The rule no-find-dom-node does not warn about this:
import { findDOMNode } from 'react-dom';

findDOMNode();

This makes the rule effectively useless =(

In fact, it only works if you call some method, like findDOMNode(this).scrollIntoView but doesn't otherwise

Hi，there is a question, I want create a Animation component container, need to  I want to use the findDOMNode Api to continuely modify the container's height style, But the plugin chaimed me that Line 37:  Do not use findDOMNode  react/no-find-dom-node, how can I deal with it?

Two options I see:

Try using refs instead
// eslint-ignore-line react/no-find-dom-node


Generalize an isEnum helper, added to utils.dart

One more thing to eventually move into source_gen

@jakemac53 – is nice 😄


Failed write to group:root upon application launch

Marathon 1.1.1
Mesos 0.28.0
I found an interesting issue that I'm looking to gather feedback on. On Marathon 1.1.1 it seems that a proper write was made to an application's ZK path and the application was launched by Marathon.
We found that that same update did not happen to the general group:root node that seemingly stores all of the information for the global set of applications. So when we made a request to the the /apps API to check if the application was launched, it said no and it could not be searched for in the UI. But we could visit the exact path in the UI to find the running applications and seemingly hit the API at that applications exact path.
Can anyone think of a reason that the group:root node would not be updated or would be unsuccessful?
We "fixed" this by making a minor change to the 6 affected applications to trigger a new deployment of them in Marathon.

Did the root group happen to exceed 1mb and/or was there a "very strange ZK error in the logs"? While this is likely fixed in #4178 which comes in 1.4, if you can provide more data it'd be very helpful.

There are some around 400mb but not greater

I meant the size of the ZK nodes, not the size of the apps.

Yep that's the size of some of the zknodes

I should mention that this is 2 marathons at roughly 3600 apps a piece

ZK in default configuration fails to store nodes greater 1MB.
Marathon <= 1.3 stores all apps and groups into the root node (compressed).
Marathon 1.1.3 implements a size check, so it will fail if the size exceeds this maximum.
Please upgrade to this version, to see if this is the problem you are running into.

By fail does that just mean that a clients request is rejected?

That is correct yes.
On Tue, Sep 20, 2016 at 11:10 AM cmluciano<EMAIL_ADDRESS>wrote:

By fail does that just mean that a clients request is rejected?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/mesosphere/marathon/issues/4384#issuecomment-248384485,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAweZmlS0XoExcz05EUo0BI4YGUDr0sbks5qsCGdgaJpZM4J9H5d
.

Marathon 1.4 has a greatly improved zk storage layout, so we don't have this kind of limitation any longer.


[2.2 backport] Update embedded kubectl to 1.13

https://github.com/rancher/rancher/issues/19522

LGTM


Add support for FIPS multi-version openjdk exclude

Need to merge together with PRs:
https://github.com/ibmruntimes/openj9-openjdk-jdk/pull/709
https://github.com/ibmruntimes/openj9-openjdk-jdk21/pull/88
https://github.com/ibmruntimes/openj9-openjdk-jdk17/pull/293
https://github.com/ibmruntimes/openj9-openjdk-jdk11/pull/738
https://github.com/ibmruntimes/openj9-openjdk-jdk8/pull/721

Add support for FIPS multi-version openjdk exclude
Related Issue: Runtimes_backlog/1272 1188

Test Link:
hyc_grinder 36653
10:52:30  -exclude:"/home/jenkins/workspace/Grinder/aqa-tests/TKG/../openjdk/openjdk-jdk/test/jdk/ProblemList.txt" \
10:52:30  -exclude:"/home/jenkins/workspace/Grinder/aqa-tests/TKG/../../jvmtest/openjdk/excludes/ProblemList_openjdk17-openj9.txt" \
10:52:30  -exclude:"/home/jenkins/workspace/Grinder/aqa-tests/TKG/../openjdk/openjdk-jdk/test/jdk/ProblemList-FIPS140_2.txt" \

Updated the test link to hyc_grinder 36662.
It passed with the following output:
14:04:22  -exclude:"/home/jenkins/workspace/Grinder/aqa-tests/TKG/../openjdk/openjdk-jdk/test/jdk/ProblemList.txt" \
14:04:22  -exclude:"/home/jenkins/workspace/Grinder/aqa-tests/TKG/../../jvmtest/openjdk/excludes/ProblemList_openjdk17-openj9.txt" \
14:04:22  -exclude:"/home/jenkins/workspace/Grinder/aqa-tests/TKG/../openjdk/openjdk-jdk/test/jdk/ProblemList-FIPS140_2.txt" \

@LongyuZhang could back port this PR into https://github.com/adoptium/aqa-tests/tree/j9.0.42-release? Thanks


🐛 [firebase_auth] error.credential returns null when converting anonymous user to google user flutter web

Bug report
Describe the bug
I recently upgraded my Flutter to 3.3.8  and firebase packages as below:
firebase_core: ^2.1.1 firebase_auth: ^4.1.1 google_sign_in: ^5.4.1 firebase_database: ^10.0.4 firebase_analytics: ^10.0.4
I use linkwithPopup to convert the anonymous user into a google sign in
UserCredential? gCredential;
if (kIsWeb) {
GoogleAuthProvider authProvider = GoogleAuthProvider();
try {
gCredential = await anonUser?.linkWithPopup(authProvider);
If the user is already linked before to another anonymous user, I get the exception "credential-already-in-use". However error.credential is null
Steps to reproduce
Steps to reproduce the behavior:

Sign up a user anonymously using Firebase Authentication
Login with a gmail address so the anonymous user is linked to the google credential
Restart the app so there is a new anonymous sign in.
Now try to login again with the same email address.
The error is thrown but error.credential is null.

This same code was working fine with my older configuration of firebase packages which was:
firebase_core: 1.12.0 firebase_auth: ^3.3.6
Expected behavior
error.credential should be populated with the correct credentials for switching back the user to the previously linked credential.

Additional context
Also raised a SOF which describes the problem in more detail: https://stackoverflow.com/questions/74427446/after-upgrading-firebase-auth-for-credential-already-in-use-error-error-creden
Flutter doctor
Run flutter doctor and paste the output below:
Click To Expand
[√] Flutter (Channel stable, 3.3.8, on Microsoft Windows [Version 10.0.19045.2251], locale en-IN)
    • Flutter version 3.3.8 on channel stable at D:\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 52b3dc25f6 (5 days ago), 2022-11-09 12:09:26 +0800
    • Engine revision 857bd6b74c
    • Dart version 2.18.4
    • DevTools version 2.15.0

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at C:\Users\Radha\AppData\Local\Android\sdk
    • Platform android-31, build-tools 30.0.3
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop for Windows (Visual Studio Community 2022 17.0.6)
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.0.32126.317
    • Windows 10 SDK version 10.0.19041.0

[√] Android Studio (version 4.1)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[√] VS Code (version 1.73.1)
    • VS Code at C:\Users\Radha\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.24.0

[√] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.19045.2251]
    • Chrome (web)      • chrome  • web-javascript • Google Chrome 107.0.5304.107
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 107.0.1418.42

[√] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!```

</details>

---

### Flutter dependencies

Run `flutter pub deps -- --style=compact` and paste the output below:

<details><summary>Click To Expand</summary>

Dart SDK 2.18.4
Flutter SDK 3.3.8
jwdaily 1.0.0+1
dependencies:

circular_countdown_timer 0.2.3 [flutter]
confetti 0.7.0 [flutter vector_math]
cupertino_icons 1.0.5
date_picker_timeline 1.2.3 [flutter intl]
device_info_plus 8.0.0 [device_info_plus_platform_interface ffi file flutter flutter_web_plugins meta win32]
firebase_analytics 10.0.4 [firebase_analytics_platform_interface firebase_analytics_web firebase_core firebase_core_platform_interface flutter]
firebase_auth 4.1.2 [firebase_auth_platform_interface firebase_auth_web firebase_core firebase_core_platform_interface flutter meta]
firebase_core 2.2.0 [firebase_core_platform_interface firebase_core_web flutter meta]
firebase_database 10.0.4 [firebase_core firebase_core_platform_interface firebase_database_platform_interface firebase_database_web flutter]
flutter 0.0.0 [characters collection material_color_utilities meta vector_math sky_engine]
fluttertoast 8.1.1 [flutter flutter_web_plugins]
google_sign_in 5.4.2 [flutter google_sign_in_android google_sign_in_ios google_sign_in_platform_interface google_sign_in_web]
http 0.13.5 [async http_parser meta path]
image_gallery_saver 1.7.1 [flutter]
intl 0.17.0 [clock path]
path_provider 2.0.11 [flutter path_provider_android path_provider_ios path_provider_linux path_provider_macos path_provider_platform_interface path_provider_windows]
provider 6.0.4 [collection flutter nested]
screenshot 1.2.3 [flutter]
seo_renderer 0.6.0 [flutter]
share_plus 6.2.0 [cross_file meta mime flutter flutter_web_plugins share_plus_platform_interface file url_launcher_web url_launcher_windows url_launcher_linux url_launcher_platform_interface ffi win32]
shared_preferences 2.0.15 [flutter shared_preferences_android shared_preferences_ios shared_preferences_linux shared_preferences_macos shared_preferences_platform_interface shared_preferences_web shared_preferences_windows]
universal_html 2.0.8 [async csslib charcode collection html meta source_span typed_data universal_io]
url_launcher 6.1.6 [flutter url_launcher_android url_launcher_ios url_launcher_linux url_launcher_macos url_launcher_platform_interface url_launcher_web url_launcher_windows]

dev dependencies:

flutter_launcher_icons 0.10.0 [args checked_yaml cli_util image json_annotation path yaml]
flutter_test 0.0.0 [flutter test_api path fake_async clock stack_trace vector_math async boolean_selector characters collection matcher material_color_utilities meta source_span stream_channel string_scanner term_glyph]

transitive dependencies:

_flutterfire_internals 1.0.7 [cloud_firestore_platform_interface cloud_firestore_web collection firebase_core firebase_core_platform_interface flutter meta]
archive 3.3.2 [crypto path]
args 2.3.1
async 2.9.0 [collection meta]
boolean_selector 2.1.0 [source_span string_scanner]
characters 1.2.1
charcode 1.3.1
checked_yaml 2.0.1 [json_annotation source_span yaml]
cli_util 0.3.5 [meta path]
clock 1.1.1
cloud_firestore_platform_interface 5.8.4 [_flutterfire_internals collection firebase_core flutter meta plugin_platform_interface]
cloud_firestore_web 3.0.4 [_flutterfire_internals cloud_firestore_platform_interface collection firebase_core firebase_core_web flutter flutter_web_plugins js]
collection 1.16.0
cross_file 0.3.3+2 [js meta]
crypto 3.0.2 [typed_data]
csslib 0.17.2 [source_span]
device_info_plus_platform_interface 7.0.0 [flutter meta plugin_platform_interface]
fake_async 1.3.1 [clock collection]
ffi 2.0.1
file 6.1.4 [meta path]
firebase_analytics_platform_interface 3.3.12 [_flutterfire_internals firebase_core flutter meta plugin_platform_interface]
firebase_analytics_web 0.5.1+3 [_flutterfire_internals firebase_analytics_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins js]
firebase_auth_platform_interface 6.11.1 [_flutterfire_internals collection firebase_core flutter meta plugin_platform_interface]
firebase_auth_web 5.1.2 [firebase_auth_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins http_parser intl js meta]
firebase_core_platform_interface 4.5.2 [collection flutter flutter_test meta plugin_platform_interface]
firebase_core_web 2.0.1 [firebase_core_platform_interface flutter flutter_web_plugins js meta]
firebase_database_platform_interface 0.2.2+12 [_flutterfire_internals collection firebase_core flutter meta plugin_platform_interface]
firebase_database_web 0.2.1+14 [firebase_core firebase_core_web firebase_database_platform_interface flutter flutter_web_plugins js]
flutter_web_plugins 0.0.0 [flutter js characters collection material_color_utilities meta vector_math]
google_sign_in_android 6.1.1 [flutter google_sign_in_platform_interface]
google_sign_in_ios 5.5.0 [flutter google_sign_in_platform_interface]
google_sign_in_platform_interface 2.3.0 [flutter plugin_platform_interface quiver]
google_sign_in_web 0.10.2 [flutter flutter_web_plugins google_sign_in_platform_interface js]
html 0.15.1 [csslib source_span]
http_parser 4.0.2 [collection source_span string_scanner typed_data]
image 3.2.2 [archive meta xml]
js 0.6.4
json_annotation 4.7.0 [meta]
matcher 0.12.12 [stack_trace]
material_color_utilities 0.1.5
meta 1.8.0
mime 1.0.2
nested 1.0.0 [flutter]
path 1.8.2
path_provider_android 2.0.21 [flutter path_provider_platform_interface]
path_provider_ios 2.0.11 [flutter path_provider_platform_interface]
path_provider_linux 2.1.7 [ffi flutter path path_provider_platform_interface xdg_directories]
path_provider_macos 2.0.6 [flutter path_provider_platform_interface]
path_provider_platform_interface 2.0.5 [flutter platform plugin_platform_interface]
path_provider_windows 2.1.3 [ffi flutter path path_provider_platform_interface win32]
petitparser 5.1.0 [meta]
platform 3.1.0
plugin_platform_interface 2.1.3 [meta]
process 4.2.4 [file path platform]
quiver 3.1.0 [matcher]
share_plus_platform_interface 3.2.0 [cross_file flutter meta mime plugin_platform_interface path_provider uuid]
shared_preferences_android 2.0.14 [flutter shared_preferences_platform_interface]
shared_preferences_ios 2.1.1 [flutter shared_preferences_platform_interface]
shared_preferences_linux 2.1.1 [file flutter path path_provider_linux path_provider_platform_interface shared_preferences_platform_interface]
shared_preferences_macos 2.0.4 [flutter shared_preferences_platform_interface]
shared_preferences_platform_interface 2.1.0 [flutter plugin_platform_interface]
shared_preferences_web 2.0.4 [flutter flutter_web_plugins shared_preferences_platform_interface]
shared_preferences_windows 2.1.1 [file flutter path path_provider_platform_interface path_provider_windows shared_preferences_platform_interface]
sky_engine 0.0.99
source_span 1.9.0 [collection path term_glyph]
stack_trace 1.10.0 [path]
stream_channel 2.1.0 [async]
string_scanner 1.1.1 [source_span]
term_glyph 1.2.1
test_api 0.4.12 [async boolean_selector collection meta source_span stack_trace stream_channel string_scanner term_glyph matcher]
typed_data 1.3.1 [collection]
universal_io 2.0.4 [collection crypto meta typed_data]
url_launcher_android 6.0.21 [flutter url_launcher_platform_interface]
url_launcher_ios 6.0.17 [flutter url_launcher_platform_interface]
url_launcher_linux 3.0.1 [flutter url_launcher_platform_interface]
url_launcher_macos 3.0.1 [flutter url_launcher_platform_interface]
url_launcher_platform_interface 2.1.1 [flutter plugin_platform_interface]
url_launcher_web 2.0.13 [flutter flutter_web_plugins url_launcher_platform_interface]
url_launcher_windows 3.0.1 [flutter url_launcher_platform_interface]
uuid 3.0.6 [crypto]
vector_math 2.1.2
win32 3.1.1 [ffi]
xdg_directories 0.2.0+2 [meta path process]
xml 6.1.0 [collection meta petitparser]
yaml 3.1.1 [collection source_span string_scanner]```

Restart the app so there is a new anonymous sign in.
Now try to login again with the same email address.

@mcradha  What happens if you sign out as anonymous and then try to login again with same email address ? Do you still get null or not ?
Can you also provide the complete error.credential response ?

@darshankawar I havent tried signing out as anonymous user but if there is no user associated with the gmail address, then it associates the current anonymous user with the gmail address and it works fine. The issue is only happening in case where the gmail is already associated with another anonymous user and it goes into the "credential-already-in-use" exception
error.credential is null - there is nothing in it. Did you get a chance to see the SOF? I have pasted my code in there

Thanks for the update @mcradha

Did you get a chance to see the SOF? I have pasted my code in there

Yes I saw that and have been trying to see how your use case works exactly by comparing it with firebase_auth plugin example. Can you try the same, use the code from it and see if using it, you still get same behavior as or not.

Hi @darshankawar - thanks for your response
The plugin example uses signinWithCredential which is used for a first time sign in  of the user directly using Google credential. There is no conversion from anonymous user to Google user there. Secondly, the issue I am facing is actually happening when the Google user is previously linked to another anonymous user. I use the linkWithPopup function, which I could not see being used in that example

Thanks for the update. I am keeping this issue open and labeling for further insights from the team on expected behavior on the use case described, specifically when the Google user is previously linked to another anonymous user.

Just for reference - here are my anonymous sign in and google sign in functions
Future anonymousSignIn() async {
try {
userCredential = await FirebaseAuth.instance.signInAnonymously();
anonUser = userCredential?.user ?? null;
_userId = anonUser?.uid;
} catch (e) {
debugPrint('Failed anonymous sign in $e');
return false;
}
Future signInWithGoogle({required BuildContext context}) async {
UserCredential? gCredential;
if (kIsWeb) {
  GoogleAuthProvider authProvider = GoogleAuthProvider();

  try {
    debugPrint('Inside sign in with Google');
    gCredential = await anonUser?.linkWithPopup(authProvider);
    guser = gCredential?.user;

    FirebaseAuth.instance.setPersistence(Persistence
        .LOCAL); // in order to maintain session when user closes browser and opens again

    if (guser != null) {
      email = guser?.email ?? '';
      _token = await guser?.getIdToken();
      gname = guser?.displayName ?? '';
      guid = guser?.uid ?? '';
      gimage = guser?.photoURL ?? '';
      _userId = guid;
      googleSignIn = true;
    }

    debugPrint('***Google user is $guser and name is $gname');
  } on FirebaseAuthException catch (error) {
    switch (error.code) {
      case "provider-already-linked":
        debugPrint("The provider has already been linked to the user.");
        break;
      case "invalid-credential":
        debugPrint("The provider's credential is not valid.");
        break;
      case "credential-already-in-use":
        {
          debugPrint(
              'In credential in use ${error.credential} ${error.email}');

          if (error.credential != null) {
            gCredential = await FirebaseAuth.instance
                .signInWithCredential(error.credential!);
            debugPrint('After sign in with credential');

            guser = gCredential.user;
          }
          FirebaseAuth.instance.setPersistence(Persistence
              .LOCAL); // in order to maintain session when user closes browser and opens again

          if (guser != null) {
            await guser?.reload(); // reloading to fix firebase bug

            guser = FirebaseAuth.instance.currentUser;
            email = guser?.email ?? '';
            _token = await guser?.getIdToken();
            gname = guser?.displayName ?? '';
            guid = guser?.uid ?? '';
            gimage = guser?.photoURL ?? '';
            _userId = guid;
            googleSignIn = true;
            await readStats();
          }

          debugPrint(
              "The account corresponding to the credential already exists, "
              "or is already linked to a Firebase User $guser and ${anonUser?.uid}. ${error.email} ${error.credential} ${guser?.displayName}");
        }
    }
  }

In google sign in, first time sign in to a google account works since there is no anonymous id already linked to the google account. However, second time you try to sign in using the same google credentials, it does not work.

Hey @mcradha, looking at your code, we're not supporting linking with a GoogleAuthProvider directly.
You are supposed to create a credential first:
      final credential = GoogleAuthProvider.credential(
        accessToken: googleAuth.accessToken,
        idToken: googleAuth.idToken,
      );

then you can linkWithCredential on the current user.

I'll close this, feel free to reopen if it doesn't work as expected :)


Migrate lint checks to pre-commit?

Current lint checks
We have a lint workflow and script, both of which require some manual setup and can get out of sync:

https://github.com/iree-org/iree/blob/main/.github/workflows/lint.yml
https://github.com/iree-org/iree/blob/main/build_tools/scripts/lint.sh

We currently run:

Tool
Description

bazel_to_cmake
Our custom tool for translating BUILD.bazel files to CMakeLists.txt files

buildifier
Formatting BUILD.bazel files

black
Formatting Python files

pytype
Analyzing types in Python filesThis has enough false positives to remove-- we could switch to mypy

clang-format
Formatting C/C++ files

tabs
Our custom script to check source files tabs when spaces should be used

yamllint
Linting yaml files

markdownlint
Linting markdown files

path_lengths
Checking for long path lengths (problematic on Windows)

generated_cmake_files
Checking that our test suite generation scripts have been run

build_file_names
Checking that Bazel files are named BUILD.bazel instead of BUILDRemove? Helps with integration into Google's downstream repo

Pre-commit
Pre-commit is "a multi-language package manager for pre-commit hooks" that can be run easily on developer machines (no need to separately install specific versions of each tool) and on GitHub Actions via either an action or a service.
We've started using pre-commit on a few related projects and it has been helpful. See also this recent discussion on Discord.

We can also update our required status checks to block on all lint checks using this (or we could use the 'summary' style that ci.yml has. Right now we only block on clang-format, bazel_to_cmake, and yamllint:

Tip for installing pre-commit: use pipx: https://packaging.python.org/en/latest/guides/installing-stand-alone-command-line-tools/

Started testing this out in IREE with https://github.com/iree-org/iree/pull/17534 and this .pre-commit-config.yaml file:
exclude: "third_party/"

repos:
-   repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v3.2.0
    hooks:
    -   id: trailing-whitespace
    -   id: end-of-file-fixer
        exclude_types: ["image", "jupyter"]
    -   id: check-yaml
        exclude: "mkdocs.yml"  # Extensions aren't included in the schema: https://github.com/squidfunk/mkdocs-material/issues/6378
-   repo: https://github.com/psf/black
    rev: 23.3.0
    hooks:
    -   id: black

So far I'm liking the ergonomics.
 For some reason I can format Bazel files in VSCode without issues but when I run buildifier directly or via pre-commit I get a diff for every BUILD.bazel file:
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in compiler/plugins/target/LLVMCPU/Builtins/BUILD.bazel.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in compiler/plugins/target/LLVMCPU/internal/BUILD.bazel.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in compiler/plugins/target/LLVMCPU/test/BUILD.bazel.

git add . --renormalize fixes line ending stuff for me whenever I have issues - maybe could run that after

Got this mostly done. Remaining work:

[ ] Land https://github.com/iree-org/iree/pull/17538
[ ] Switch "required checks" in protected branch settings from previous lint jobs to pre-commit job
[ ] Enable end-of-file-fixer check
[ ] Enable trailing-whitespace check
[ ] Figure out how to enable buildifier check in a way that doesn't break Windows
[ ] Figure out how to enable generate_cmake_files check in a way that doesn't break Windows
[ ] Remove old pytype check
[ ] Add new mypy (https://mypy-lang.org/) check and ensure repo passes it
[ ] Test git commit hook mode (ensure it doesn't add significant overhead, a few checks are running on all files instead of changed files - may want to refactor those checks)
[ ] Add documentation to https://iree.dev/developers/general/contributing/#coding-style-guidelines

git add . --renormalize fixes line ending stuff for me whenever I have issues - maybe could run that after
(git line ending handling confuses me, so I use python build_tools/bazel_to_cmake/bazel_to_cmake.py && git add . --renormalize as my bazel-to-cmake command)

Okay, this sort of works. A few ideas for working within the limits of pre-commit:

Add a run_buildifier.py script that runs on all files in a single step then runs git add . --renormalize
Add a run_buildifier.py script that runs on a single file then runs git add {FILENAME} --renormalize (watch for git process lock if running in parallel)
Make the buildifier check optional (https://pre-commit.com/#confining-hooks-to-run-at-certain-stages makes it manual, might prefer a way to just skip it on Windows) and have the CI opt-in

Started looking at mypy on https://github.com/ScottTodd/iree/tree/pre-commit-mypy
Will need to either fix some issues or figure out how to limit how much of the repo it looks at
D:\dev\projects\iree (pre-commit-mypy)
λ pre-commit run --all-files mypy
mypy.....................................................................Failed
- hook id: mypy
- exit code: 2

build_tools\benchmarks\comparisons\common\__init__.py: error: Duplicate module named "common" (also at "build_tools\benchmarks\common\__init__.py")
build_tools\benchmarks\comparisons\common\__init__.py: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#mapping-file-paths-to-modules for more info
build_tools\benchmarks\comparisons\common\__init__.py: note: Common resolutions include: a) using `--exclude` to avoid checking one of them, b) adding `__init__.py` somewhere, c) using `--explicit-package-bases` or adjusting MYPYPATH
Found 1 error in 1 file (errors prevented further checking)

The git hook works, even via git gui:

Got a few devs specifically request getting the buildifier check running seamlessly (all platforms, ideally no manual download) here on Discord.
Can also check if there is an automatic deps adder we can use in open source. Google had an internal one but it sometimes was wrong or added extra deps (mostly across selects, which we barely use, IIRC). If such a tool / run mode exists we could try having pre-commit run it automatically.

Classic... there are two hooks for running buildifier listed at https://pre-commit.com/hooks.html, both of which assume that buildifier is already installed (despite pre-commit being a package manager), then https://github.com/bazelbuild/buildtools itself uses a third hook: https://github.com/keith/pre-commit-buildifier. That one claims it downloads buildifier, but instead of working like other pre-commit hooks and building from source (again - package manager) it uses a bash wrapper script that only supports macOS and Linux 🤦

Except for one last change (https://github.com/iree-org/iree/pull/17619) and pytype (which will be replaced with mypy), this migration is complete 🥳

All done! (except for setting up mypy for python type checking)


support TensorRT 8.2

Please make sure that this is a feature request. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:feature_template
System information

TensorFlow version (you are using): 2.7.0rc0
Are you willing to contribute it (Yes/No): Yes

Describe the feature and the current behavior/state.
Will this change the current api? How?
No
Who will benefit with this feature?
Anyone who use TensorRT
Any Other info.

@alanpurple, Can you please fill the issue template.Also can you please elaborate about your Feature and please specify the Use Cases for this feature. Thanks!


Git console error when started on a non-existing workspace folder

Create a workspace description where the first workspace folder doesn't exist
{
	"folders": [
		{
			"path": "../bla-bla"
		}
	],
	"settings": {
	}
}

Check the console:
[Extension Host] rejected promise not handled within 1 second (at Console.originalConsole.(anonymous function) [as warn] (/home/aeschli/workspaces/vscode/extensions/git/node_modules/diagnostic-channel-publishers/dist/src/console.pub.js:42:39))

@aeschli This feels very wrong to me. This should be handled somewhere above. Otherwise, you're gonna need every extension to do fs.exists. IMO the git extension shouldn't even be activated if the folder doesn't exist.

cc @bpasero


Plex WebHooks

Investigate the usage of WebHooks to provide immediate / less polling...
http://forums.indigodomo.com/viewtopic.php?f=163&t=17984

Can do this via the new inter-plugin communication method with a plugin that already supports this:
https://forums.indigodomo.com/viewtopic.php?f=138&t=22081


Update Post and PUT APIs to respond with status JSON, including messages

{
  "success": true,
  "messages": [
    "Created form with the following fname:  communication-preferences-foobar"
  ]
}

Merged.


Check and update existing node & validator guides for the incentivized testnet

For #122

Addressed in latest batch release of docs for Clash of Nodes.


use case: Authentication

I looked over the docs and seen that you had canActivate, activate, canDeactivate and deactivate on a per route basis.
I was wondering how one would handle authentication ( https://github.com/Narzerus/angular-permission ). Currently in ui-router you can't do state transitions while inside of onEnter / onExit / resolve as the $state is already in transition (please correct me if I'm wrong). To me, it seems that I would add some logic in canActivate which would return true or false? But, it might not seem right to do a transition due to the function name seems like it should return a bool value / bool promise.
I'm just wondering how this will work and if some kind of auth / auth with roles will be baked in.

On the topic of authentication, I have a common use case where the user will have a link to a particular state with query parameters (graphs for example). However, the user is unauthenticated and needs to authenticate and then be redirected to that state without losing the query parameters.

Expanding on that, It would be nice when you are redirected someplace that it has the previous state on there always. So if you don't do an in place 404 template (without modifying the state) then you can show the previous 404 url on the /404 page.
Also on authentication, I know it's a separate add-on but it would be nice to mark on a global route that this requires authentication and then on a child route of that route say no this doesn't require auth (override).

I've got a similar question, thought I haven't used the new router yet. We've got a rather large app that unfortunately still uses ng-route. We even started migrating to ui-router some time ago, but then the new router appeared and we decided to wait till it's ready.
The main reason for us to switch is that we got sections of the app that have the same (or very similar) authentication/authorization rules for all pages. Using ui-router we could put routes for each section in a separate file, define authentication rules as separate function(s) at the top and then do something like:
resolve: {
  user: authenticate, // returns a promise that returns a user when resolved successfully
  data: function (user) {
    // this is called only when "user" promise is resolved successfully
    // fetch some data for authenticated user
  }
}

Would something similar be possible with the new router?

Besides being authenticated, there needs to be a clear way to implement being authorized to access a given route, since those are two different things in an auth scheme.


Generated paths don't look like examples

I cant seem to get similar results to the examples. When running the below code I generate the following csv.
https://drive.google.com/file/d/1jdLjwmF8Lp2PzlMDfUTpHnOuJLM29De4/view?usp=sharing
#include "csvLogger.hpp"
#include "squiggles.hpp"

const double MAX_VEL     = 2.0; // in meters per second
const double MAX_ACCEL   = 3.0; // in meters per second per second
const double MAX_JERK    = 6.0; // in meters per second per second per second
const double ROBOT_WIDTH = 0.4; // in meters

squiggles::Constraints constraints = squiggles::Constraints(MAX_VEL, MAX_ACCEL, MAX_JERK);
squiggles::SplineGenerator generator = squiggles::SplineGenerator(
  constraints,
  std::make_shared<squiggles::TankModel>(ROBOT_WIDTH, constraints));

std::vector<squiggles::ProfilePoint> path = generator.generate({
  squiggles::Pose(0.0, 0.0, 1.0),
  squiggles::Pose(0.0, 2.0, 1.0)});

int main() {
  auto logs = Logs();
  logs.add(path);
  logs.writeToCSV("generationTest2.csv");
  return 0;
}

the shape looks similar to the example but looking at the scales its more compressed than the example

Thanks for bringing this to my attention, my testing wasn't sufficient to catch this error.
I'm pretty sure the root of the issue is the K_DEFAULT_VEL constant, linked below:
https://github.com/baylessj/robotsquiggles/blob/dbbae1f77e0a94cf3db311ac2ffc3b2c66fad225/main/include/spline.hpp#L94
My testing with visualizing paths had involved non-zero starting and ending velocities so this constant was not applied. The polynomials that form the path need some sort of a "dummy velocity" to make the shape of the path. This constant determines that shape -- the higher the constant, the curvier the path.
A K_DEFAULT_VEL value closer to 1.0 seems to be getting me better results in my testing. Can you try that value out with your robot and see if it works better?
Ideally I'd like to find a solution where this constant doesn't carry so much weight, either by allowing it to be an optional parameter to the generation of a path or running the path through an additional round of fit checking to get a nice looking path.

Thanks for bringing this to my attention, my testing wasn't sufficient to catch this error.
I'm pretty sure the root of the issue is the K_DEFAULT_VEL constant, linked below:
https://github.com/baylessj/robotsquiggles/blob/dbbae1f77e0a94cf3db311ac2ffc3b2c66fad225/main/include/spline.hpp#L94
My testing with visualizing paths had involved non-zero starting and ending velocities so this constant was not applied. The polynomials that form the path need some sort of a "dummy velocity" to make the shape of the path. This constant determines that shape -- the higher the constant, the curvier the path.
A K_DEFAULT_VEL value closer to 1.0 seems to be getting me better results in my testing. Can you try that value out with your robot and see if it works better?
Ideally I'd like to find a solution where this constant doesn't carry so much weight, either by allowing it to be an optional parameter to the generation of a path or running the path through an additional round of fit checking to get a nice looking path.

1.0 seemed like too much, a value of 0.75 to 0.4 seems to work great for my vex sized paths.
1.0

0.6

Definitely seems like you'd want different parameters for different sizes of paths/robot dynamics. If the solution is an optional parameter during generation I think I could PR that.

1.0 seemed like too much, a value of 0.75 to 0.4 seems to work great for my vex sized paths.
1.0

0.6

Definitely seems like you'd want different parameters for different sizes of paths/robot dynamics. If the solution is an optional parameter during generation I think I could PR that.

I've done some more testing with that constant today and I'm not sure that the current implementation with it is all that great. You're correct that a constant of 0.6 is the best fit for the path you showed above, and it's not a bad option for other paths, but it's not the best for everything.
My perspective is that the goal for the generated paths should be to minimize spikes in the curvature of the path -- we don't want a sharp turn at the beginning and end like in your original post or a sharp turn in the middle like with the 1.0 constant. I'm thinking that a more robust solution would be to modify the dummy start/end velocities in the gen_raw_path step and consider the curvature in the acceptance criteria for a good path before starting parameterization.
I'm going to tinker with that idea over the next couple of days and see if that will be a good permanent solution for the path shape issues. I'll also add the optional parameter for the default vel constant while I'm at it since that will probably involve a decent number of changes, but I really appreciate you volunteering to put in a PR for that!

I've done some more testing with that constant today and I'm not sure that the current implementation with it is all that great. You're correct that a constant of 0.6 is the best fit for the path you showed above, and it's not a bad option for other paths, but it's not the best for everything.
My perspective is that the goal for the generated paths should be to minimize spikes in the curvature of the path -- we don't want a sharp turn at the beginning and end like in your original post or a sharp turn in the middle like with the 1.0 constant. I'm thinking that a more robust solution would be to modify the dummy start/end velocities in the gen_raw_path step and consider the curvature in the acceptance criteria for a good path before starting parameterization.
I'm going to tinker with that idea over the next couple of days and see if that will be a good permanent solution for the path shape issues. I'll also add the optional parameter for the default vel constant while I'm at it since that will probably involve a decent number of changes, but I really appreciate you volunteering to put in a PR for that!

@Dr-Danimal #39 should hopefully resolve the issue you're seeing. Can you try out the code in that PR and add a review to it?

@Dr-Danimal #39 should hopefully resolve the issue you're seeing. Can you try out the code in that PR and add a review to it?

@baylessj shape looks good now. For some paths the new version fails generating a acceleration beyond constraints, where the last version would successfully generate a path.

@baylessj shape looks good now. For some paths the new version fails generating a acceleration beyond constraints, where the last version would successfully generate a path.

Thanks for the review! Can you share an example set of waypoints that are failing under the new version? I'd like to get those working and prevent any breaking changes.

Thanks for the review! Can you share an example set of waypoints that are failing under the new version? I'd like to get those working and prevent any breaking changes.

x = 0, y = 0, theta = 0
x = 0.5, y = 0.5, theta = 0

x = 0, y = 0, theta = 0
x = 0.5, y = 0.5, theta = 0

@baylessj  bump

@baylessj  bump

The path you listed generates fine on the plotting utility in the squiggles repo, could the issue be coming from a difference in our constraints? I have {max_vel: 2.0, max_accel: 4.0, max_jerk: 10.0} and no specified maximum curvature. What constraints are you testing with?

The path you listed generates fine on the plotting utility in the squiggles repo, could the issue be coming from a difference in our constraints? I have {max_vel: 2.0, max_accel: 4.0, max_jerk: 10.0} and no specified maximum curvature. What constraints are you testing with?

I'm using {max_vel: 1.5, max_accel: 0.5, max_jerk: 6}

I'm using {max_vel: 1.5, max_accel: 0.5, max_jerk: 6}

Thanks for specifying the constraints, that was the missing piece in my testing. I found that there was an error with the exit conditions for the gradient descent loop that caused the path to no longer be generated. Your test path now works in my testing, hopefully it's working well for you too.

Thanks for specifying the constraints, that was the missing piece in my testing. I found that there was an error with the exit conditions for the gradient descent loop that caused the path to no longer be generated. Your test path now works in my testing, hopefully it's working well for you too.


Fastnlight: Watch +4407983491272

Fastnlight requests the watch of the watch_number +4407983491272. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

Approved by Dragonrage in Charcoal HQ


KAFKA-13625: Fix inconsistency in dynamic application log levels

Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

@dongjinleekr Thanks for the PR. It seems that OFF was intentionally left out in KIP-412. See the rejected alternative section. Do you think that we should change our mind?

Hi @dajac,
Oh yes. As I mentioned in KIP-817, I already checked KIP-412. But IMHO, I think omitting OFF was a mistake; As you can see in the motivation section in the proposal, I found that OFF is helpful when debugging, for the loggers like kafka.request.logger.

@dongjinleekr Thanks for the explanation. I missed KIP-817 in the mailing list. Let's continue the discussion there and see what the community think about this.


Is it possible to add summaries to an existing event file ?

When I continue to train my model from last interrupted training, tf.train.SummaryWriter create a new event file.
Could I add new summaries to my existing event file?  So I can visualize the whole learning run.
P.S. What's the right way to suspend the training binary on GPU?   We share one GPU, and I always use  "Ctrl+c" ……

The SummaryWriter API doesn't let you append to an existing file, but you can use TensorBoard to visualize multiple files in the same log directory.
Assigning to @danmane in case there are any other tricks you could use.

Correct, if you point TensorBoard to the directory containing event files, then creating a new event file within that directory will be fine, and tensorboard will combine the runs.
N.b. you should use a clean directory for each separate training job.

see

TensorBoard reads data from a full directory, and organizes it into the history of a single TensorFlow execution.

at Event Files & LogDirs: How TensorBoard loads the data section in https://github.com/tensorflow/tensorboard/blob/master/README.md](url)

@decentralion, all, but how can I ensure that plotting of events of a certain event file, in the scalar plots, starts at the right training step? After restarting from a checkpoint I assumed I could make Tensorboard show new values starting from the training step it left off before the training restart.
Showing the horizontal axis in relative or wall mode is not a satisfactory solution to me: there is a big gap between the current run and the previous if there is a lot of time between the runs.
It seems such an obvious use case, I'm a bit surprised this hasn't been incorporated. Interested to hear what was the thinking not to enable this use case (if it's not possible).

Whenever you add summaries, you also include the global_step, like this: summary_writer.add_summary(summary, step).
So it's then just a matter of passing the right global_step values when you add your summaries. You can do this for example by keeping a non-trainable Tensorflow variable called global_step, which is going to be checkpointed and can be restored from the checkpoint together with all other savable variables. This 0D tensor is incremented at each training step if you pass it as part of the list of tensors to sess.run.
Some helpful operations:
global_step_tensor = tf.Variable(0, trainable=False, name='global_step')
output = self.sess.run(global_step_tensor + tensors_to_run, feed_dict=feed_dict)
global_step = output[0]

The real problem is that Tensorboard doesn't let you pick your own colors for displaying curves corresponding to different event files, which means that if you restore a training session from a checkpoint, the different parts will be displayed with different colors. This can be very annoying, especially if you compare several models at the same time.


TEAMNADO-5654: Remove edit activation key from dialog, chain to trash icon

This removes the edit option from the activation key table, and replaces the three dot menu with a trash can icon to delete.
All of these changes are gated behind the feature flag sed-frontend.activationKeysDetailsPage.

Codecov Report
Patch coverage: 71.42% and project coverage change: +0.10% :tada:

Comparison is base (db1f8d1) 51.53% compared to head (66b317a) 51.63%.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #253      +/-   ##
==========================================
+ Coverage   51.53%   51.63%   +0.10%
==========================================
  Files          89       90       +1
  Lines        1306     1313       +7
  Branches      272      276       +4
==========================================
+ Hits          673      678       +5
- Misses        633      635       +2

Files Changed
Coverage Δ

...onents/ActivationKeys/DeleteActivationKeyButton.js
66.66% <66.66%> (ø)

...ponents/ActivationKeysTable/ActivationKeysTable.js
93.75% <75.00%> (-2.68%)
:arrow_down:

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