[FEATURE] Add universal dependency support

It can often be useful to essentially add an app-wide dependency. Suppose, for example, you want to enforce http basic auth on non-production environments:
async def basic_auth(credentials: HTTPBasicCredentials = Depends(security)):
    if (settings.SITEWIDE_BASIC_AUTH and (
            credentials.username != settings.SITEWIDE_BASIC_AUTH_USERNAME or
            credentials.password != settings.SITEWIDE_BASIC_AUTH_PASSWORD)):
        raise HTTPException(
            status_code=HTTP_401_UNAUTHORIZED,
            detail="Incorrect email or password",
            headers={"WWW-Authenticate": "Basic"},
        )

app.add_dependency(basic_auth)

Now, you could do something similar with middleware, but then you'd miss out on dependency injection. You can already do something similar for included routers, but not for the entire app.
Just a thought.

LGTM. If i understood it right, add_dependency function simply will update all router routes dependencies?

You can achieve this for the full app now via:

app_router = APIRouter()
Add all desired routes to app_router
Call app.include_router(app_router, dependencies=app_dependencies)

Maybe you realized this already, just wanted to share in case it's useful (I use this pattern myself).

Yeah, @dmontagu, that's more or less where I got the idea.
It's just sub-optimal because it requires that I factor out my use of app to app_router just to accommodate password-protecting the site, which seems inelegant.

Yeah, there's a couple of things that can be declared at router instantiation and at .router_include, bot others not. I agree it would be better to have consistency.
Being able to define dependencies and other stuff in .router_include is still valuable as it would allow re-using a router with different dependencies, tags, etc. under different paths, or by different apps. So I don't think removing those params from .include_router should be the way to go. But I agree it would make sense to have these things available for setting at instantiation.
I think the most difficult issue is handling defaults and overrides. Each point that can take parameters would have some default values or generate them at instantiation. That's normally handled with is None, but that works when there's a single place where a parameter could be declared. In our case, if a default is populated at some point then it's not possible to override that, at least not detectable with a simple is None, as it was already overwritten.
Nevertheless, I think I solved that (or something quite similar) in Typer. With some more complex extra tricks. Maybe we can replicate that here.
The other thing/issue is that currently, dependencies (and all those parameters) are actually stored at the APIRoute class level (for each function), not at the levels of the APIRouter and FastAPI classes. So, that would require quite some refactor, and tests.
I think it's worth it, but it requires quite some effort.

Python also has a topological sort builtin starting at 3.9: https://docs.python.org/3/library/graphlib.html?highlight=graph
which might be helpful when dealing with the logic of when which dependencies can/need to be run.

If I use .include_router(router, dependencies=Depends(security)) and then one of the endpoints needs to see the credentials that security decoded from the Authorization header field, how do I go about that?

is there a way to poke at router dependency values somehow?
should I explicitly include that dependency in the special endpoint?

will fastapi eval it once and cache the result?


Build Failed. Error: exited with error code: 127

Describe the issue
Actually, I wanted to build the android application. But when I ran the command:
yarn gulp build --platform=android
I was getting an error saying 'gulp' not found.
So, I fixed it by installing gulp (both: locally and globally). But after that, I ran the command:
yarn run clean && yarn && yarn gulp build --platform=android
And I got this (error is at the end):
WIN 10@Family ~/outline-client-master
$ yarn run clean && yarn && gulp build --platform=android
yarn run v1.22.4
$ rm -rf build www node_modules platforms/* plugins/*
Done in 46.69s.
yarn install v1.22.4
[1/4] Resolving packages...
[2/4] Fetching packages...
info<EMAIL_ADDRESS>The platform "win32" is incompatible with this module.
info<EMAIL_ADDRESS>is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning " ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>warning "polymer-build ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>[4/4] Building fresh packages...
$ bower install || echo no bower needed
bower ShadowsocksConfig#^v0.0.8 cached https://github.com/Jigsaw-Code/outline-shadowsocksconfig.git#0.0.8
bower ShadowsocksConfig#^v0.0.8         validate 0.0.8 against https://github.com/Jigsaw-Code/outline-shadowsocksconfig.git#^v0.0.8
bower iron-icons#^2.0.1                   cached https://github.com/PolymerElements/iron-icons.git#2.1.1
bower iron-icons#^2.0.1                 validate 2.1.1 against https://github.com/PolymerElements/iron-icons.git#^2.0.1
bower iron-iconset-svg#^2.1.0             cached https://github.com/PolymerElements/iron-iconset-svg.git#2.2.1
bower iron-iconset-svg#^2.1.0           validate 2.2.1 against https://github.com/PolymerElements/iron-iconset-svg.git#^2.1.0
bower iron-pages#^2.0.0                   cached https://github.com/PolymerElements/iron-pages.git#2.1.1
bower iron-pages#^2.0.0                 validate 2.1.1 against https://github.com/PolymerElements/iron-pages.git#^2.0.0
bower app-layout#^2.0.2                   cached https://github.com/PolymerElements/app-layout.git#2.1.1
bower app-layout#^2.0.2                 validate 2.1.1 against https://github.com/PolymerElements/app-layout.git#^2.0.2
bower paper-card#^2.0.0                   cached https://github.com/PolymerElements/paper-card.git#2.1.0
bower paper-card#^2.0.0                 validate 2.1.0 against https://github.com/PolymerElements/paper-card.git#^2.0.0
bower app-localize-behavior#^2.0.1        cached https://github.com/PolymerElements/app-localize-behavior.git#2.0.2
bower app-localize-behavior#^2.0.1      validate 2.0.2 against https://github.com/PolymerElements/app-localize-behavior.git#^2.0.1
bower paper-behaviors#^2.0.0              cached https://github.com/PolymerElements/paper-behaviors.git#2.1.1
bower paper-behaviors#^2.0.0            validate 2.1.1 against https://github.com/PolymerElements/paper-behaviors.git#^2.0.0
bower paper-dialog#^2.0.0                 cached https://github.com/PolymerElements/paper-dialog.git#2.1.1
bower paper-dialog#^2.0.0               validate 2.1.1 against https://github.com/PolymerElements/paper-dialog.git#^2.0.0
bower font-roboto#^1.1.0                  cached https://github.com/PolymerElements/font-roboto-local.git#1.1.0
bower font-roboto#^1.1.0                validate 1.1.0 against https://github.com/PolymerElements/font-roboto-local.git#^1.1.0
bower paper-button#^2.0.0                 cached https://github.com/PolymerElements/paper-button.git#2.1.3
bower paper-button#^2.0.0               validate 2.1.3 against https://github.com/PolymerElements/paper-button.git#^2.0.0
bower paper-icon-button#^2.0.1            cached https://github.com/PolymerElements/paper-icon-button.git#2.2.1
bower paper-icon-button#^2.0.1          validate 2.2.1 against https://github.com/PolymerElements/paper-icon-button.git#^2.0.1
bower paper-input#^2.1.1                  cached https://github.com/PolymerElements/paper-input.git#2.2.3
bower paper-input#^2.1.1                validate 2.2.3 against https://github.com/PolymerElements/paper-input.git#^2.1.1
bower paper-item#^2.0.0                   cached https://github.com/PolymerElements/paper-item.git#2.1.1
bower paper-item#^2.0.0                 validate 2.1.1 against https://github.com/PolymerElements/paper-item.git#^2.0.0
bower paper-dropdown-menu#^2.0.0          cached https://github.com/PolymerElements/paper-dropdown-menu.git#2.1.0
bower paper-dropdown-menu#^2.0.0        validate 2.1.0 against https://github.com/PolymerElements/paper-dropdown-menu.git#^2.0.0
bower paper-listbox#^2.0.0                cached https://github.com/PolymerElements/paper-listbox.git#2.1.1
bower paper-listbox#^2.0.0              validate 2.1.1 against https://github.com/PolymerElements/paper-listbox.git#^2.0.0
bower paper-ripple#^2.0.1                 cached https://github.com/PolymerElements/paper-ripple.git#2.1.1
bower paper-ripple#^2.0.1               validate 2.1.1 against https://github.com/PolymerElements/paper-ripple.git#^2.0.1
bower app-route#^2.0.0                    cached https://github.com/PolymerElements/app-route.git#2.1.2
bower app-route#^2.0.0                  validate 2.1.2 against https://github.com/PolymerElements/app-route.git#^2.0.0
bower polymer#^2.1.0                      cached https://github.com/Polymer/polymer.git#2.8.0
bower polymer#^2.1.0                    validate 2.8.0 against https://github.com/Polymer/polymer.git#^2.1.0
bower paper-menu-button#^2.0.0            cached https://github.com/PolymerElements/paper-menu-button.git#2.1.1
bower paper-menu-button#^2.0.0          validate 2.1.1 against https://github.com/PolymerElements/paper-menu-button.git#^2.0.0
bower paper-toast#^2.0.0                  cached https://github.com/PolymerElements/paper-toast.git#2.1.2
bower paper-toast#^2.0.0                validate 2.1.2 against https://github.com/PolymerElements/paper-toast.git#^2.0.0
bower paper-styles#^2.0.0                 cached https://github.com/PolymerElements/paper-styles.git#2.1.0
bower paper-styles#^2.0.0               validate 2.1.0 against https://github.com/PolymerElements/paper-styles.git#^2.0.0
bower outline-i18n#^0.0.7                 cached https://github.com/Jigsaw-Code/outline-i18n.git#0.0.7
bower outline-i18n#^0.0.7               validate 0.0.7 against https://github.com/Jigsaw-Code/outline-i18n.git#^0.0.7
bower web-animations-js#^2.3.1            cached https://github.com/web-animations/web-animations-js.git#2.3.2
bower web-animations-js#^2.3.1          validate 2.3.2 against https://github.com/web-animations/web-animations-js.git#^2.3.1
bower webcomponentsjs#^1.0.12             cached https://github.com/Polymer/webcomponentsjs.git#1.3.3
bower webcomponentsjs#^1.0.12           validate 1.3.3 against https://github.com/Polymer/webcomponentsjs.git#^1.0.12
bower punycode#^1.4.1                     cached https://github.com/bestiejs/punycode.js.git#1.4.1
bower punycode#^1.4.1                   validate 1.4.1 against https://github.com/bestiejs/punycode.js.git#^1.4.1
bower iron-meta#1 - 2                     cached https://github.com/PolymerElements/iron-meta.git#2.1.1
bower iron-meta#1 - 2                   validate 2.1.1 against https://github.com/PolymerElements/iron-meta.git#1 - 2
bower iron-resizable-behavior#1 - 2       cached https://github.com/PolymerElements/iron-resizable-behavior.git#2.1.1
bower iron-resizable-behavior#1 - 2     validate 2.1.1 against https://github.com/PolymerElements/iron-resizable-behavior.git#1 - 2
bower iron-selector#1 - 2                 cached https://github.com/PolymerElements/iron-selector.git#2.1.0
bower iron-selector#1 - 2               validate 2.1.0 against https://github.com/PolymerElements/iron-selector.git#1 - 2
bower iron-flex-layout#1 - 2              cached https://github.com/PolymerElements/iron-flex-layout.git#2.0.3
bower iron-flex-layout#1 - 2            validate 2.0.3 against https://github.com/PolymerElements/iron-flex-layout.git#1 - 2
bower iron-media-query#1 - 2              cached https://github.com/PolymerElements/iron-media-query.git#2.1.0
bower iron-media-query#1 - 2            validate 2.1.0 against https://github.com/PolymerElements/iron-media-query.git#1 - 2
bower iron-scroll-target-behavior#1 - 2   cached https://github.com/PolymerElements/iron-scroll-target-behavior.git#2.1.1
bower iron-scroll-target-behavior#1 - 2 validate 2.1.1 against https://github.com/PolymerElements/iron-scroll-target-behavior.git#1 - 2
bower iron-icon#1 - 2                     cached https://github.com/PolymerElements/iron-icon.git#2.1.0
bower iron-icon#1 - 2                   validate 2.1.0 against https://github.com/PolymerElements/iron-icon.git#1 - 2
bower iron-image#1 - 2                    cached https://github.com/PolymerElements/iron-image.git#2.2.1
bower iron-image#1 - 2                  validate 2.2.1 against https://github.com/PolymerElements/iron-image.git#1 - 2
bower intl-messageformat#^1.0.0           cached https://github.com/yahoo/intl-messageformat.git#1.3.0
bower intl-messageformat#^1.0.0         validate 1.3.0 against https://github.com/yahoo/intl-messageformat.git#^1.0.0
bower iron-ajax#1 - 2                     cached https://github.com/PolymerElements/iron-ajax.git#2.1.3
bower iron-ajax#1 - 2                   validate 2.1.3 against https://github.com/PolymerElements/iron-ajax.git#1 - 2
bower iron-behaviors#1 - 2                cached https://github.com/PolymerElements/iron-behaviors.git#2.1.1
bower iron-behaviors#1 - 2              validate 2.1.1 against https://github.com/PolymerElements/iron-behaviors.git#1 - 2
bower iron-checked-element-behavior#1 - 2 cached https://github.com/PolymerElements/iron-checked-element-behavior.git#2.1.1
bower iron-checked-element-behavior#1 - 2         validate 2.1.1 against https://github.com/PolymerElements/iron-checked-element-behavior.git#1 - 2
bower iron-overlay-behavior#1 - 2                   cached https://github.com/PolymerElements/iron-overlay-behavior.git#2.3.4
bower iron-overlay-behavior#1 - 2                 validate 2.3.4 against https://github.com/PolymerElements/iron-overlay-behavior.git#1 - 2
bower neon-animation#1 - 2                          cached https://github.com/PolymerElements/neon-animation.git#2.2.1
bower neon-animation#1 - 2                        validate 2.2.1 against https://github.com/PolymerElements/neon-animation.git#1 - 2
bower paper-dialog-behavior#1 - 2                   cached https://github.com/PolymerElements/paper-dialog-behavior.git#2.2.2
bower paper-dialog-behavior#1 - 2                 validate 2.2.2 against https://github.com/PolymerElements/paper-dialog-behavior.git#1 - 2
bower iron-form-element-behavior#1 - 2              cached https://github.com/PolymerElements/iron-form-element-behavior.git#2.1.3
bower iron-form-element-behavior#1 - 2            validate 2.1.3 against https://github.com/PolymerElements/iron-form-element-behavior.git#1 - 2
bower iron-validatable-behavior#1 - 2               cached https://github.com/PolymerElements/iron-validatable-behavior.git#2.1.0
bower iron-validatable-behavior#1 - 2             validate 2.1.0 against https://github.com/PolymerElements/iron-validatable-behavior.git#1 - 2
bower iron-a11y-keys-behavior#1 - 2                 cached https://github.com/PolymerElements/iron-a11y-keys-behavior.git#2.1.1
bower iron-a11y-keys-behavior#1 - 2               validate 2.1.1 against https://github.com/PolymerElements/iron-a11y-keys-behavior.git#1 - 2
bower iron-autogrow-textarea#1 - 2                  cached https://github.com/PolymerElements/iron-autogrow-textarea.git#2.2.0
bower iron-autogrow-textarea#1 - 2                validate 2.2.0 against https://github.com/PolymerElements/iron-autogrow-textarea.git#1 - 2
bower iron-input#1 - 2                              cached https://github.com/PolymerElements/iron-input.git#2.1.3
bower iron-input#1 - 2                            validate 2.1.3 against https://github.com/PolymerElements/iron-input.git#1 - 2
bower iron-menu-behavior#1 - 2                      cached https://github.com/PolymerElements/iron-menu-behavior.git#2.1.1
bower iron-menu-behavior#1 - 2                    validate 2.1.1 against https://github.com/PolymerElements/iron-menu-behavior.git#1 - 2
bower iron-location#1 - 2                           cached https://github.com/PolymerElements/iron-location.git#2.2.2
bower iron-location#1 - 2                         validate 2.2.2 against https://github.com/PolymerElements/iron-location.git#1 - 2
bower iron-dropdown#1 - 2                           cached https://github.com/PolymerElements/iron-dropdown.git#2.2.1
bower iron-dropdown#1 - 2                         validate 2.2.1 against https://github.com/PolymerElements/iron-dropdown.git#1 - 2
bower iron-fit-behavior#1 - 2                       cached https://github.com/PolymerElements/iron-fit-behavior.git#2.2.1
bower iron-fit-behavior#1 - 2                     validate 2.2.1 against https://github.com/PolymerElements/iron-fit-behavior.git#1 - 2
bower shadycss#^v1.1.0                              cached https://github.com/webcomponents/shadycss.git#1.9.1
bower shadycss#^v1.1.0                            validate 1.9.1 against https://github.com/webcomponents/shadycss.git#^v1.1.0
bower iron-a11y-announcer#1 - 2                     cached https://github.com/PolymerElements/iron-a11y-announcer.git#2.1.0
bower iron-a11y-announcer#1 - 2                   validate 2.1.0 against https://github.com/PolymerElements/iron-a11y-announcer.git#1 - 2
bower polymer                             extra-resolution Unnecessary resolution: polymer#^2.1.0
bower webcomponentsjs                     extra-resolution Unnecessary resolution: webcomponentsjs#^1.0.12
bower ShadowsocksConfig#^v0.0.8                    install ShadowsocksConfig#0.0.8
bower iron-pages#^2.0.0                            install iron-pages#2.1.1
bower iron-iconset-svg#^2.1.0                      install iron-iconset-svg#2.2.1
bower app-layout#^2.0.2                            install app-layout#2.1.1
bower iron-icons#^2.0.1                            install iron-icons#2.1.1
bower paper-card#^2.0.0                            install paper-card#2.1.0
bower app-localize-behavior#^2.0.1                 install app-localize-behavior#2.0.2
bower paper-behaviors#^2.0.0                       install paper-behaviors#2.1.1
bower paper-dialog#^2.0.0                          install paper-dialog#2.1.1
bower font-roboto#^1.1.0                           install font-roboto#1.1.0
bower paper-item#^2.0.0                            install paper-item#2.1.1
bower paper-icon-button#^2.0.1                     install paper-icon-button#2.2.1
bower paper-dropdown-menu#^2.0.0                   install paper-dropdown-menu#2.1.0
bower paper-input#^2.1.1                           install paper-input#2.2.3
bower paper-button#^2.0.0                          install paper-button#2.1.3
bower paper-listbox#^2.0.0                         install paper-listbox#2.1.1
bower paper-ripple#^2.0.1                          install paper-ripple#2.1.1
bower app-route#^2.0.0                             install app-route#2.1.2
bower paper-menu-button#^2.0.0                     install paper-menu-button#2.1.1
bower polymer#^2.1.0                               install polymer#2.8.0
bower paper-toast#^2.0.0                           install paper-toast#2.1.2
bower paper-styles#^2.0.0                          install paper-styles#2.1.0
bower outline-i18n#^0.0.7                          install outline-i18n#0.0.7
bower web-animations-js#^2.3.1                     install web-animations-js#2.3.2
bower punycode#^1.4.1                              install punycode#1.4.1
bower webcomponentsjs#^1.0.12                      install webcomponentsjs#1.3.3
bower iron-meta#1 - 2                              install iron-meta#2.1.1
bower iron-resizable-behavior#1 - 2                install iron-resizable-behavior#2.1.1
bower iron-selector#1 - 2                          install iron-selector#2.1.0
bower iron-flex-layout#1 - 2                       install iron-flex-layout#2.0.3
bower iron-media-query#1 - 2                       install iron-media-query#2.1.0
bower iron-scroll-target-behavior#1 - 2            install iron-scroll-target-behavior#2.1.1
bower iron-icon#1 - 2                              install iron-icon#2.1.0
bower iron-image#1 - 2                             install iron-image#2.2.1
bower intl-messageformat#^1.0.0                    install intl-messageformat#1.3.0
bower iron-ajax#1 - 2                              install iron-ajax#2.1.3
bower iron-behaviors#1 - 2                         install iron-behaviors#2.1.1
bower iron-checked-element-behavior#1 - 2          install iron-checked-element-behavior#2.1.1
bower iron-overlay-behavior#1 - 2                  install iron-overlay-behavior#2.3.4
bower neon-animation#1 - 2                         install neon-animation#2.2.1
bower paper-dialog-behavior#1 - 2                  install paper-dialog-behavior#2.2.2
bower iron-form-element-behavior#1 - 2             install iron-form-element-behavior#2.1.3
bower iron-validatable-behavior#1 - 2              install iron-validatable-behavior#2.1.0
bower iron-a11y-keys-behavior#1 - 2                install iron-a11y-keys-behavior#2.1.1
bower iron-autogrow-textarea#1 - 2                 install iron-autogrow-textarea#2.2.0
bower iron-input#1 - 2                             install iron-input#2.1.3
bower iron-menu-behavior#1 - 2                     install iron-menu-behavior#2.1.1
bower iron-location#1 - 2                          install iron-location#2.2.2
bower iron-dropdown#1 - 2                          install iron-dropdown#2.2.1
bower iron-fit-behavior#1 - 2                      install iron-fit-behavior#2.2.1
bower shadycss#^v1.1.0                             install shadycss#1.9.1
bower iron-a11y-announcer#1 - 2                    install iron-a11y-announcer#2.1.0

ShadowsocksConfig#0.0.8 www\bower_components\ShadowsocksConfig
ΓööΓöÇΓöÇ punycode#1.4.1

iron-pages#2.1.1 www\bower_components\iron-pages
Γö£ΓöÇΓöÇ iron-resizable-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-selector#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

iron-iconset-svg#2.2.1 www\bower_components\iron-iconset-svg
Γö£ΓöÇΓöÇ iron-meta#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

app-layout#2.1.1 www\bower_components\app-layout
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
Γö£ΓöÇΓöÇ iron-media-query#2.1.0
Γö£ΓöÇΓöÇ iron-resizable-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-scroll-target-behavior#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

iron-icons#2.1.1 www\bower_components\iron-icons
Γö£ΓöÇΓöÇ iron-icon#2.1.0
Γö£ΓöÇΓöÇ iron-iconset-svg#2.2.1
ΓööΓöÇΓöÇ polymer#2.8.0

paper-card#2.1.0 www\bower_components\paper-card
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
Γö£ΓöÇΓöÇ iron-image#2.2.1
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

app-localize-behavior#2.0.2 www\bower_components\app-localize-behavior
Γö£ΓöÇΓöÇ intl-messageformat#1.3.0
Γö£ΓöÇΓöÇ iron-ajax#2.1.3
ΓööΓöÇΓöÇ polymer#2.8.0

paper-behaviors#2.1.1 www\bower_components\paper-behaviors
Γö£ΓöÇΓöÇ iron-behaviors#2.1.1
Γö£ΓöÇΓöÇ iron-checked-element-behavior#2.1.1
Γö£ΓöÇΓöÇ paper-ripple#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

paper-dialog#2.1.1 www\bower_components\paper-dialog
Γö£ΓöÇΓöÇ iron-overlay-behavior#2.3.4
Γö£ΓöÇΓöÇ neon-animation#2.2.1
Γö£ΓöÇΓöÇ paper-dialog-behavior#2.2.2
ΓööΓöÇΓöÇ polymer#2.8.0

font-roboto#1.1.0 www\bower_components\font-roboto

paper-item#2.1.1 www\bower_components\paper-item
Γö£ΓöÇΓöÇ iron-behaviors#2.1.1
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-icon-button#2.2.1 www\bower_components\paper-icon-button
Γö£ΓöÇΓöÇ iron-icon#2.1.0
Γö£ΓöÇΓöÇ paper-behaviors#2.1.1
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-dropdown-menu#2.1.0 www\bower_components\paper-dropdown-menu
Γö£ΓöÇΓöÇ iron-a11y-keys-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-form-element-behavior#2.1.3
Γö£ΓöÇΓöÇ iron-icon#2.1.0
Γö£ΓöÇΓöÇ iron-iconset-svg#2.2.1
Γö£ΓöÇΓöÇ iron-validatable-behavior#2.1.0
Γö£ΓöÇΓöÇ paper-behaviors#2.1.1
Γö£ΓöÇΓöÇ paper-input#2.2.3
Γö£ΓöÇΓöÇ paper-menu-button#2.1.1
Γö£ΓöÇΓöÇ paper-ripple#2.1.1
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-input#2.2.3 www\bower_components\paper-input
Γö£ΓöÇΓöÇ iron-a11y-keys-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-autogrow-textarea#2.2.0
Γö£ΓöÇΓöÇ iron-behaviors#2.1.1
Γö£ΓöÇΓöÇ iron-form-element-behavior#2.1.3
Γö£ΓöÇΓöÇ iron-input#2.1.3
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-button#2.1.3 www\bower_components\paper-button
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
Γö£ΓöÇΓöÇ paper-behaviors#2.1.1
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-listbox#2.1.1 www\bower_components\paper-listbox
Γö£ΓöÇΓöÇ iron-behaviors#2.1.1
Γö£ΓöÇΓöÇ iron-menu-behavior#2.1.1
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-ripple#2.1.1 www\bower_components\paper-ripple
Γö£ΓöÇΓöÇ iron-a11y-keys-behavior#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

app-route#2.1.2 www\bower_components\app-route
Γö£ΓöÇΓöÇ iron-location#2.2.2
ΓööΓöÇΓöÇ polymer#2.8.0

paper-menu-button#2.1.1 www\bower_components\paper-menu-button
Γö£ΓöÇΓöÇ iron-a11y-keys-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-behaviors#2.1.1
Γö£ΓöÇΓöÇ iron-dropdown#2.2.1
Γö£ΓöÇΓöÇ iron-fit-behavior#2.2.1
Γö£ΓöÇΓöÇ neon-animation#2.2.1
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

polymer#2.8.0 www\bower_components\polymer
Γö£ΓöÇΓöÇ shadycss#1.9.1
ΓööΓöÇΓöÇ webcomponentsjs#1.3.3

paper-toast#2.1.2 www\bower_components\paper-toast
Γö£ΓöÇΓöÇ iron-a11y-announcer#2.1.0
Γö£ΓöÇΓöÇ iron-fit-behavior#2.2.1
Γö£ΓöÇΓöÇ iron-overlay-behavior#2.3.4
ΓööΓöÇΓöÇ polymer#2.8.0

paper-styles#2.1.0 www\bower_components\paper-styles
Γö£ΓöÇΓöÇ font-roboto#1.1.0
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
ΓööΓöÇΓöÇ polymer#2.8.0

outline-i18n#0.0.7 www\bower_components\outline-i18n

web-animations-js#2.3.2 www\bower_components\web-animations-js

punycode#1.4.1 www\bower_components\punycode

webcomponentsjs#1.3.3 www\bower_components\webcomponentsjs

iron-meta#2.1.1 www\bower_components\iron-meta
ΓööΓöÇΓöÇ polymer#2.8.0

iron-resizable-behavior#2.1.1 www\bower_components\iron-resizable-behavior
ΓööΓöÇΓöÇ polymer#2.8.0

iron-selector#2.1.0 www\bower_components\iron-selector
ΓööΓöÇΓöÇ polymer#2.8.0

iron-flex-layout#2.0.3 www\bower_components\iron-flex-layout
ΓööΓöÇΓöÇ polymer#2.8.0

iron-media-query#2.1.0 www\bower_components\iron-media-query
ΓööΓöÇΓöÇ polymer#2.8.0

iron-scroll-target-behavior#2.1.1 www\bower_components\iron-scroll-target-behavior
ΓööΓöÇΓöÇ polymer#2.8.0

iron-icon#2.1.0 www\bower_components\iron-icon
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
Γö£ΓöÇΓöÇ iron-meta#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

iron-image#2.2.1 www\bower_components\iron-image
ΓööΓöÇΓöÇ polymer#2.8.0

intl-messageformat#1.3.0 www\bower_components\intl-messageformat

iron-ajax#2.1.3 www\bower_components\iron-ajax
ΓööΓöÇΓöÇ polymer#2.8.0

iron-behaviors#2.1.1 www\bower_components\iron-behaviors
Γö£ΓöÇΓöÇ iron-a11y-keys-behavior#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

iron-checked-element-behavior#2.1.1 www\bower_components\iron-checked-element-behavior
Γö£ΓöÇΓöÇ iron-form-element-behavior#2.1.3
Γö£ΓöÇΓöÇ iron-validatable-behavior#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

iron-overlay-behavior#2.3.4 www\bower_components\iron-overlay-behavior
Γö£ΓöÇΓöÇ iron-a11y-keys-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-fit-behavior#2.2.1
Γö£ΓöÇΓöÇ iron-resizable-behavior#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

neon-animation#2.2.1 www\bower_components\neon-animation
Γö£ΓöÇΓöÇ iron-resizable-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-selector#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-dialog-behavior#2.2.2 www\bower_components\paper-dialog-behavior
Γö£ΓöÇΓöÇ iron-overlay-behavior#2.3.4
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

iron-form-element-behavior#2.1.3 www\bower_components\iron-form-element-behavior
ΓööΓöÇΓöÇ polymer#2.8.0

iron-validatable-behavior#2.1.0 www\bower_components\iron-validatable-behavior
Γö£ΓöÇΓöÇ iron-meta#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

iron-a11y-keys-behavior#2.1.1 www\bower_components\iron-a11y-keys-behavior
ΓööΓöÇΓöÇ polymer#2.8.0

iron-autogrow-textarea#2.2.0 www\bower_components\iron-autogrow-textarea
Γö£ΓöÇΓöÇ iron-behaviors#2.1.1
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
Γö£ΓöÇΓöÇ iron-validatable-behavior#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

iron-input#2.1.3 www\bower_components\iron-input
Γö£ΓöÇΓöÇ iron-a11y-announcer#2.1.0
Γö£ΓöÇΓöÇ iron-validatable-behavior#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

iron-menu-behavior#2.1.1 www\bower_components\iron-menu-behavior
Γö£ΓöÇΓöÇ iron-a11y-keys-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
Γö£ΓöÇΓöÇ iron-selector#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

iron-location#2.2.2 www\bower_components\iron-location
ΓööΓöÇΓöÇ polymer#2.8.0

iron-dropdown#2.2.1 www\bower_components\iron-dropdown
Γö£ΓöÇΓöÇ iron-behaviors#2.1.1
Γö£ΓöÇΓöÇ iron-overlay-behavior#2.3.4
Γö£ΓöÇΓöÇ neon-animation#2.2.1
ΓööΓöÇΓöÇ polymer#2.8.0

iron-fit-behavior#2.2.1 www\bower_components\iron-fit-behavior
ΓööΓöÇΓöÇ polymer#2.8.0

shadycss#1.9.1 www\bower_components\shadycss

iron-a11y-announcer#2.1.0 www\bower_components\iron-a11y-announcer
ΓööΓöÇΓöÇ polymer#2.8.0
Done in 351.35s.
[08:17:51] Using gulpfile G:\cygwin64\home\WIN 10\outline-client-master\gulpfile.js
[08:17:51] Starting 'build'...
[08:17:51] Starting 'buildWebApp'...
yarn run v1.22.4
$ bash ./scripts/do_action.sh src/www/build
++ git rev-parse --show-toplevel
fatal: not a git repository (or any of the parent directories): .git
+ export ROOT_DIR=
+ ROOT_DIR=
[Running src/www/build]
+ export BUILD_DIR=/build
+ BUILD_DIR=/build
+ export -f do_action
+ do_action src/www/build
+ local action=src/www/build
+ echo '[Running src/www/build]'
+ shift
+ /src/www/build_action.sh
./scripts/do_action.sh: line 26: /src/www/build_action.sh: No such file or directory
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
[08:17:52] 'buildWebApp' errored after 887 ms
[08:17:52] Error: exited with error code: 127
    at ChildProcess.onexit (G:\cygwin64\home\WIN 10\outline-client-master\node_modules\end-of-stream\index.js:39:36)
    at ChildProcess.emit (events.js:198:13)
    at ChildProcess.EventEmitter.emit (domain.js:466:23)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
[08:17:52] 'build' errored after 891 ms

Environment

OS: Windows 10 Pro
Yarn version: 1.22.4
Node.js version: 10.16.3
Gulp version: CLI version: 2.2.1, Local version: 4.0.2
Electron version: 8.2.5
Polymer version: 1.9.11

Just a clear shot of the error:

Additional context
I had installed everything. Then why such an error?

+ git rev-parse --show-toplevel
fatal: not a git repository (or any of the parent directories): .git

It can't find the .git folder.

I created the .git folder using git init then later I also added all the files using git add -A and after that I commited using git commit -m "message"
Now, I ran the command in cygwin64: yarn run clean && yarn && gulp build --platform=android
Yet, this is what I got:
WIN 10@Family ~/outline-client-master
$ yarn run clean && yarn && gulp build --platform=android
yarn run v1.22.4
$ rm -rf build www node_modules platforms/* plugins/*
Done in 43.48s.
yarn install v1.22.4
[1/4] Resolving packages...
[2/4] Fetching packages...
info<EMAIL_ADDRESS>The platform "win32" is incompatible with this module.
info<EMAIL_ADDRESS>is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning " ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>warning "polymer-build ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>[4/4] Building fresh packages...
$ bower install || echo no bower needed
bower ShadowsocksConfig#^v0.0.8 cached https://github.com/Jigsaw-Code/outline-shadowsocksconfig.git#0.0.8
bower ShadowsocksConfig#^v0.0.8         validate 0.0.8 against https://github.com/Jigsaw-Code/outline-shadowsocksconfig.git#^v0.0.8
bower app-localize-behavior#^2.0.1        cached https://github.com/PolymerElements/app-localize-behavior.git#2.0.2
bower app-localize-behavior#^2.0.1      validate 2.0.2 against https://github.com/PolymerElements/app-localize-behavior.git#^2.0.1
bower app-route#^2.0.0                    cached https://github.com/PolymerElements/app-route.git#2.1.2
bower app-route#^2.0.0                  validate 2.1.2 against https://github.com/PolymerElements/app-route.git#^2.0.0
bower app-layout#^2.0.2                   cached https://github.com/PolymerElements/app-layout.git#2.1.1
bower app-layout#^2.0.2                 validate 2.1.1 against https://github.com/PolymerElements/app-layout.git#^2.0.2
bower iron-icons#^2.0.1                   cached https://github.com/PolymerElements/iron-icons.git#2.1.1
bower iron-icons#^2.0.1                 validate 2.1.1 against https://github.com/PolymerElements/iron-icons.git#^2.0.1
bower iron-pages#^2.0.0                   cached https://github.com/PolymerElements/iron-pages.git#2.1.1
bower iron-pages#^2.0.0                 validate 2.1.1 against https://github.com/PolymerElements/iron-pages.git#^2.0.0
bower paper-card#^2.0.0                   cached https://github.com/PolymerElements/paper-card.git#2.1.0
bower paper-card#^2.0.0                 validate 2.1.0 against https://github.com/PolymerElements/paper-card.git#^2.0.0
bower paper-behaviors#^2.0.0              cached https://github.com/PolymerElements/paper-behaviors.git#2.1.1
bower paper-behaviors#^2.0.0            validate 2.1.1 against https://github.com/PolymerElements/paper-behaviors.git#^2.0.0
bower iron-iconset-svg#^2.1.0             cached https://github.com/PolymerElements/iron-iconset-svg.git#2.2.1
bower iron-iconset-svg#^2.1.0           validate 2.2.1 against https://github.com/PolymerElements/iron-iconset-svg.git#^2.1.0
bower paper-button#^2.0.0                 cached https://github.com/PolymerElements/paper-button.git#2.1.3
bower paper-button#^2.0.0               validate 2.1.3 against https://github.com/PolymerElements/paper-button.git#^2.0.0
bower paper-dialog#^2.0.0                 cached https://github.com/PolymerElements/paper-dialog.git#2.1.1
bower paper-dialog#^2.0.0               validate 2.1.1 against https://github.com/PolymerElements/paper-dialog.git#^2.0.0
bower paper-input#^2.1.1                  cached https://github.com/PolymerElements/paper-input.git#2.2.3
bower paper-input#^2.1.1                validate 2.2.3 against https://github.com/PolymerElements/paper-input.git#^2.1.1
bower font-roboto#^1.1.0                  cached https://github.com/PolymerElements/font-roboto-local.git#1.1.0
bower font-roboto#^1.1.0                validate 1.1.0 against https://github.com/PolymerElements/font-roboto-local.git#^1.1.0
bower outline-i18n#^0.0.7                 cached https://github.com/Jigsaw-Code/outline-i18n.git#0.0.7
bower outline-i18n#^0.0.7               validate 0.0.7 against https://github.com/Jigsaw-Code/outline-i18n.git#^0.0.7
bower paper-icon-button#^2.0.1            cached https://github.com/PolymerElements/paper-icon-button.git#2.2.1
bower paper-icon-button#^2.0.1          validate 2.2.1 against https://github.com/PolymerElements/paper-icon-button.git#^2.0.1
bower paper-dropdown-menu#^2.0.0          cached https://github.com/PolymerElements/paper-dropdown-menu.git#2.1.0
bower paper-dropdown-menu#^2.0.0        validate 2.1.0 against https://github.com/PolymerElements/paper-dropdown-menu.git#^2.0.0
bower paper-item#^2.0.0                   cached https://github.com/PolymerElements/paper-item.git#2.1.1
bower paper-item#^2.0.0                 validate 2.1.1 against https://github.com/PolymerElements/paper-item.git#^2.0.0
bower paper-menu-button#^2.0.0            cached https://github.com/PolymerElements/paper-menu-button.git#2.1.1
bower paper-menu-button#^2.0.0          validate 2.1.1 against https://github.com/PolymerElements/paper-menu-button.git#^2.0.0
bower paper-ripple#^2.0.1                 cached https://github.com/PolymerElements/paper-ripple.git#2.1.1
bower paper-ripple#^2.0.1               validate 2.1.1 against https://github.com/PolymerElements/paper-ripple.git#^2.0.1
bower paper-styles#^2.0.0                 cached https://github.com/PolymerElements/paper-styles.git#2.1.0
bower paper-styles#^2.0.0               validate 2.1.0 against https://github.com/PolymerElements/paper-styles.git#^2.0.0
bower polymer#^2.1.0                      cached https://github.com/Polymer/polymer.git#2.8.0
bower polymer#^2.1.0                    validate 2.8.0 against https://github.com/Polymer/polymer.git#^2.1.0
bower paper-listbox#^2.0.0                cached https://github.com/PolymerElements/paper-listbox.git#2.1.1
bower paper-listbox#^2.0.0              validate 2.1.1 against https://github.com/PolymerElements/paper-listbox.git#^2.0.0
bower web-animations-js#^2.3.1            cached https://github.com/web-animations/web-animations-js.git#2.3.2
bower web-animations-js#^2.3.1          validate 2.3.2 against https://github.com/web-animations/web-animations-js.git#^2.3.1
bower paper-toast#^2.0.0                  cached https://github.com/PolymerElements/paper-toast.git#2.1.2
bower paper-toast#^2.0.0                validate 2.1.2 against https://github.com/PolymerElements/paper-toast.git#^2.0.0
bower webcomponentsjs#^1.0.12             cached https://github.com/Polymer/webcomponentsjs.git#1.3.3
bower webcomponentsjs#^1.0.12           validate 1.3.3 against https://github.com/Polymer/webcomponentsjs.git#^1.0.12
bower punycode#^1.4.1                     cached https://github.com/bestiejs/punycode.js.git#1.4.1
bower punycode#^1.4.1                   validate 1.4.1 against https://github.com/bestiejs/punycode.js.git#^1.4.1
bower iron-icon#1 - 2                     cached https://github.com/PolymerElements/iron-icon.git#2.1.0
bower iron-icon#1 - 2                   validate 2.1.0 against https://github.com/PolymerElements/iron-icon.git#1 - 2
bower iron-location#1 - 2                 cached https://github.com/PolymerElements/iron-location.git#2.2.2
bower iron-location#1 - 2               validate 2.2.2 against https://github.com/PolymerElements/iron-location.git#1 - 2
bower iron-ajax#1 - 2                     cached https://github.com/PolymerElements/iron-ajax.git#2.1.3
bower iron-ajax#1 - 2                   validate 2.1.3 against https://github.com/PolymerElements/iron-ajax.git#1 - 2
bower intl-messageformat#^1.0.0           cached https://github.com/yahoo/intl-messageformat.git#1.3.0
bower intl-messageformat#^1.0.0         validate 1.3.0 against https://github.com/yahoo/intl-messageformat.git#^1.0.0
bower iron-scroll-target-behavior#1 - 2   cached https://github.com/PolymerElements/iron-scroll-target-behavior.git#2.1.1
bower iron-scroll-target-behavior#1 - 2 validate 2.1.1 against https://github.com/PolymerElements/iron-scroll-target-behavior.git#1 - 2
bower iron-flex-layout#1 - 2              cached https://github.com/PolymerElements/iron-flex-layout.git#2.0.3
bower iron-flex-layout#1 - 2            validate 2.0.3 against https://github.com/PolymerElements/iron-flex-layout.git#1 - 2
bower iron-media-query#1 - 2              cached https://github.com/PolymerElements/iron-media-query.git#2.1.0
bower iron-media-query#1 - 2            validate 2.1.0 against https://github.com/PolymerElements/iron-media-query.git#1 - 2
bower iron-resizable-behavior#1 - 2       cached https://github.com/PolymerElements/iron-resizable-behavior.git#2.1.1
bower iron-resizable-behavior#1 - 2     validate 2.1.1 against https://github.com/PolymerElements/iron-resizable-behavior.git#1 - 2
bower iron-selector#1 - 2                 cached https://github.com/PolymerElements/iron-selector.git#2.1.0
bower iron-selector#1 - 2               validate 2.1.0 against https://github.com/PolymerElements/iron-selector.git#1 - 2
bower iron-image#1 - 2                    cached https://github.com/PolymerElements/iron-image.git#2.2.1
bower iron-image#1 - 2                  validate 2.2.1 against https://github.com/PolymerElements/iron-image.git#1 - 2
bower iron-behaviors#1 - 2                cached https://github.com/PolymerElements/iron-behaviors.git#2.1.1
bower iron-behaviors#1 - 2              validate 2.1.1 against https://github.com/PolymerElements/iron-behaviors.git#1 - 2
bower iron-checked-element-behavior#1 - 2 cached https://github.com/PolymerElements/iron-checked-element-behavior.git#2.1.1
bower iron-checked-element-behavior#1 - 2         validate 2.1.1 against https://github.com/PolymerElements/iron-checked-element-behavior.git#1 - 2
bower iron-meta#1 - 2                               cached https://github.com/PolymerElements/iron-meta.git#2.1.1
bower iron-meta#1 - 2                             validate 2.1.1 against https://github.com/PolymerElements/iron-meta.git#1 - 2
bower iron-overlay-behavior#1 - 2                   cached https://github.com/PolymerElements/iron-overlay-behavior.git#2.3.4
bower iron-overlay-behavior#1 - 2                 validate 2.3.4 against https://github.com/PolymerElements/iron-overlay-behavior.git#1 - 2
bower neon-animation#1 - 2                          cached https://github.com/PolymerElements/neon-animation.git#2.2.1
bower neon-animation#1 - 2                        validate 2.2.1 against https://github.com/PolymerElements/neon-animation.git#1 - 2
bower paper-dialog-behavior#1 - 2                   cached https://github.com/PolymerElements/paper-dialog-behavior.git#2.2.2
bower paper-dialog-behavior#1 - 2                 validate 2.2.2 against https://github.com/PolymerElements/paper-dialog-behavior.git#1 - 2
bower iron-autogrow-textarea#1 - 2                  cached https://github.com/PolymerElements/iron-autogrow-textarea.git#2.2.0
bower iron-autogrow-textarea#1 - 2                validate 2.2.0 against https://github.com/PolymerElements/iron-autogrow-textarea.git#1 - 2
bower iron-form-element-behavior#1 - 2              cached https://github.com/PolymerElements/iron-form-element-behavior.git#2.1.3
bower iron-form-element-behavior#1 - 2            validate 2.1.3 against https://github.com/PolymerElements/iron-form-element-behavior.git#1 - 2
bower iron-input#1 - 2                              cached https://github.com/PolymerElements/iron-input.git#2.1.3
bower iron-input#1 - 2                            validate 2.1.3 against https://github.com/PolymerElements/iron-input.git#1 - 2
bower iron-a11y-keys-behavior#1 - 2                 cached https://github.com/PolymerElements/iron-a11y-keys-behavior.git#2.1.1
bower iron-a11y-keys-behavior#1 - 2               validate 2.1.1 against https://github.com/PolymerElements/iron-a11y-keys-behavior.git#1 - 2
bower iron-validatable-behavior#1 - 2               cached https://github.com/PolymerElements/iron-validatable-behavior.git#2.1.0
bower iron-validatable-behavior#1 - 2             validate 2.1.0 against https://github.com/PolymerElements/iron-validatable-behavior.git#1 - 2
bower iron-dropdown#1 - 2                           cached https://github.com/PolymerElements/iron-dropdown.git#2.2.1
bower iron-dropdown#1 - 2                         validate 2.2.1 against https://github.com/PolymerElements/iron-dropdown.git#1 - 2
bower iron-fit-behavior#1 - 2                       cached https://github.com/PolymerElements/iron-fit-behavior.git#2.2.1
bower iron-fit-behavior#1 - 2                     validate 2.2.1 against https://github.com/PolymerElements/iron-fit-behavior.git#1 - 2
bower shadycss#^v1.1.0                              cached https://github.com/webcomponents/shadycss.git#1.9.1
bower shadycss#^v1.1.0                            validate 1.9.1 against https://github.com/webcomponents/shadycss.git#^v1.1.0
bower iron-menu-behavior#1 - 2                      cached https://github.com/PolymerElements/iron-menu-behavior.git#2.1.1
bower iron-menu-behavior#1 - 2                    validate 2.1.1 against https://github.com/PolymerElements/iron-menu-behavior.git#1 - 2
bower iron-a11y-announcer#1 - 2                     cached https://github.com/PolymerElements/iron-a11y-announcer.git#2.1.0
bower iron-a11y-announcer#1 - 2                   validate 2.1.0 against https://github.com/PolymerElements/iron-a11y-announcer.git#1 - 2
bower polymer                             extra-resolution Unnecessary resolution: polymer#^2.1.0
bower webcomponentsjs                     extra-resolution Unnecessary resolution: webcomponentsjs#^1.0.12
bower ShadowsocksConfig#^v0.0.8                    install ShadowsocksConfig#0.0.8
bower iron-icons#^2.0.1                            install iron-icons#2.1.1
bower app-localize-behavior#^2.0.1                 install app-localize-behavior#2.0.2
bower app-route#^2.0.0                             install app-route#2.1.2
bower app-layout#^2.0.2                            install app-layout#2.1.1
bower iron-pages#^2.0.0                            install iron-pages#2.1.1
bower paper-card#^2.0.0                            install paper-card#2.1.0
bower paper-behaviors#^2.0.0                       install paper-behaviors#2.1.1
bower iron-iconset-svg#^2.1.0                      install iron-iconset-svg#2.2.1
bower paper-button#^2.0.0                          install paper-button#2.1.3
bower paper-dialog#^2.0.0                          install paper-dialog#2.1.1
bower font-roboto#^1.1.0                           install font-roboto#1.1.0
bower outline-i18n#^0.0.7                          install outline-i18n#0.0.7
bower paper-input#^2.1.1                           install paper-input#2.2.3
bower paper-icon-button#^2.0.1                     install paper-icon-button#2.2.1
bower paper-dropdown-menu#^2.0.0                   install paper-dropdown-menu#2.1.0
bower paper-item#^2.0.0                            install paper-item#2.1.1
bower paper-menu-button#^2.0.0                     install paper-menu-button#2.1.1
bower paper-ripple#^2.0.1                          install paper-ripple#2.1.1
bower paper-styles#^2.0.0                          install paper-styles#2.1.0
bower polymer#^2.1.0                               install polymer#2.8.0
bower paper-listbox#^2.0.0                         install paper-listbox#2.1.1
bower web-animations-js#^2.3.1                     install web-animations-js#2.3.2
bower paper-toast#^2.0.0                           install paper-toast#2.1.2
bower webcomponentsjs#^1.0.12                      install webcomponentsjs#1.3.3
bower punycode#^1.4.1                              install punycode#1.4.1
bower iron-icon#1 - 2                              install iron-icon#2.1.0
bower iron-location#1 - 2                          install iron-location#2.2.2
bower iron-ajax#1 - 2                              install iron-ajax#2.1.3
bower intl-messageformat#^1.0.0                    install intl-messageformat#1.3.0
bower iron-scroll-target-behavior#1 - 2            install iron-scroll-target-behavior#2.1.1
bower iron-flex-layout#1 - 2                       install iron-flex-layout#2.0.3
bower iron-media-query#1 - 2                       install iron-media-query#2.1.0
bower iron-resizable-behavior#1 - 2                install iron-resizable-behavior#2.1.1
bower iron-selector#1 - 2                          install iron-selector#2.1.0
bower iron-behaviors#1 - 2                         install iron-behaviors#2.1.1
bower iron-checked-element-behavior#1 - 2          install iron-checked-element-behavior#2.1.1
bower iron-meta#1 - 2                              install iron-meta#2.1.1
bower iron-overlay-behavior#1 - 2                  install iron-overlay-behavior#2.3.4
bower neon-animation#1 - 2                         install neon-animation#2.2.1
bower paper-dialog-behavior#1 - 2                  install paper-dialog-behavior#2.2.2
bower iron-image#1 - 2                             install iron-image#2.2.1
bower iron-autogrow-textarea#1 - 2                 install iron-autogrow-textarea#2.2.0
bower iron-form-element-behavior#1 - 2             install iron-form-element-behavior#2.1.3
bower iron-input#1 - 2                             install iron-input#2.1.3
bower iron-a11y-keys-behavior#1 - 2                install iron-a11y-keys-behavior#2.1.1
bower iron-validatable-behavior#1 - 2              install iron-validatable-behavior#2.1.0
bower iron-dropdown#1 - 2                          install iron-dropdown#2.2.1
bower iron-fit-behavior#1 - 2                      install iron-fit-behavior#2.2.1
bower shadycss#^v1.1.0                             install shadycss#1.9.1
bower iron-a11y-announcer#1 - 2                    install iron-a11y-announcer#2.1.0
bower iron-menu-behavior#1 - 2                     install iron-menu-behavior#2.1.1

ShadowsocksConfig#0.0.8 www\bower_components\ShadowsocksConfig
ΓööΓöÇΓöÇ punycode#1.4.1

iron-icons#2.1.1 www\bower_components\iron-icons
Γö£ΓöÇΓöÇ iron-icon#2.1.0
Γö£ΓöÇΓöÇ iron-iconset-svg#2.2.1
ΓööΓöÇΓöÇ polymer#2.8.0

app-localize-behavior#2.0.2 www\bower_components\app-localize-behavior
Γö£ΓöÇΓöÇ intl-messageformat#1.3.0
Γö£ΓöÇΓöÇ iron-ajax#2.1.3
ΓööΓöÇΓöÇ polymer#2.8.0

app-route#2.1.2 www\bower_components\app-route
Γö£ΓöÇΓöÇ iron-location#2.2.2
ΓööΓöÇΓöÇ polymer#2.8.0

app-layout#2.1.1 www\bower_components\app-layout
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
Γö£ΓöÇΓöÇ iron-media-query#2.1.0
Γö£ΓöÇΓöÇ iron-resizable-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-scroll-target-behavior#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

iron-pages#2.1.1 www\bower_components\iron-pages
Γö£ΓöÇΓöÇ iron-resizable-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-selector#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-card#2.1.0 www\bower_components\paper-card
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
Γö£ΓöÇΓöÇ iron-image#2.2.1
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-behaviors#2.1.1 www\bower_components\paper-behaviors
Γö£ΓöÇΓöÇ iron-behaviors#2.1.1
Γö£ΓöÇΓöÇ iron-checked-element-behavior#2.1.1
Γö£ΓöÇΓöÇ paper-ripple#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

iron-iconset-svg#2.2.1 www\bower_components\iron-iconset-svg
Γö£ΓöÇΓöÇ iron-meta#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

paper-button#2.1.3 www\bower_components\paper-button
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
Γö£ΓöÇΓöÇ paper-behaviors#2.1.1
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-dialog#2.1.1 www\bower_components\paper-dialog
Γö£ΓöÇΓöÇ iron-overlay-behavior#2.3.4
Γö£ΓöÇΓöÇ neon-animation#2.2.1
Γö£ΓöÇΓöÇ paper-dialog-behavior#2.2.2
ΓööΓöÇΓöÇ polymer#2.8.0

font-roboto#1.1.0 www\bower_components\font-roboto

outline-i18n#0.0.7 www\bower_components\outline-i18n

paper-input#2.2.3 www\bower_components\paper-input
Γö£ΓöÇΓöÇ iron-a11y-keys-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-autogrow-textarea#2.2.0
Γö£ΓöÇΓöÇ iron-behaviors#2.1.1
Γö£ΓöÇΓöÇ iron-form-element-behavior#2.1.3
Γö£ΓöÇΓöÇ iron-input#2.1.3
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-icon-button#2.2.1 www\bower_components\paper-icon-button
Γö£ΓöÇΓöÇ iron-icon#2.1.0
Γö£ΓöÇΓöÇ paper-behaviors#2.1.1
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-dropdown-menu#2.1.0 www\bower_components\paper-dropdown-menu
Γö£ΓöÇΓöÇ iron-a11y-keys-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-form-element-behavior#2.1.3
Γö£ΓöÇΓöÇ iron-icon#2.1.0
Γö£ΓöÇΓöÇ iron-iconset-svg#2.2.1
Γö£ΓöÇΓöÇ iron-validatable-behavior#2.1.0
Γö£ΓöÇΓöÇ paper-behaviors#2.1.1
Γö£ΓöÇΓöÇ paper-input#2.2.3
Γö£ΓöÇΓöÇ paper-menu-button#2.1.1
Γö£ΓöÇΓöÇ paper-ripple#2.1.1
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-item#2.1.1 www\bower_components\paper-item
Γö£ΓöÇΓöÇ iron-behaviors#2.1.1
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-menu-button#2.1.1 www\bower_components\paper-menu-button
Γö£ΓöÇΓöÇ iron-a11y-keys-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-behaviors#2.1.1
Γö£ΓöÇΓöÇ iron-dropdown#2.2.1
Γö£ΓöÇΓöÇ iron-fit-behavior#2.2.1
Γö£ΓöÇΓöÇ neon-animation#2.2.1
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-ripple#2.1.1 www\bower_components\paper-ripple
Γö£ΓöÇΓöÇ iron-a11y-keys-behavior#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

paper-styles#2.1.0 www\bower_components\paper-styles
Γö£ΓöÇΓöÇ font-roboto#1.1.0
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
ΓööΓöÇΓöÇ polymer#2.8.0

polymer#2.8.0 www\bower_components\polymer
Γö£ΓöÇΓöÇ shadycss#1.9.1
ΓööΓöÇΓöÇ webcomponentsjs#1.3.3

paper-listbox#2.1.1 www\bower_components\paper-listbox
Γö£ΓöÇΓöÇ iron-behaviors#2.1.1
Γö£ΓöÇΓöÇ iron-menu-behavior#2.1.1
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

web-animations-js#2.3.2 www\bower_components\web-animations-js

paper-toast#2.1.2 www\bower_components\paper-toast
Γö£ΓöÇΓöÇ iron-a11y-announcer#2.1.0
Γö£ΓöÇΓöÇ iron-fit-behavior#2.2.1
Γö£ΓöÇΓöÇ iron-overlay-behavior#2.3.4
ΓööΓöÇΓöÇ polymer#2.8.0

webcomponentsjs#1.3.3 www\bower_components\webcomponentsjs

punycode#1.4.1 www\bower_components\punycode

iron-icon#2.1.0 www\bower_components\iron-icon
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
Γö£ΓöÇΓöÇ iron-meta#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

iron-location#2.2.2 www\bower_components\iron-location
ΓööΓöÇΓöÇ polymer#2.8.0

iron-ajax#2.1.3 www\bower_components\iron-ajax
ΓööΓöÇΓöÇ polymer#2.8.0

intl-messageformat#1.3.0 www\bower_components\intl-messageformat

iron-scroll-target-behavior#2.1.1 www\bower_components\iron-scroll-target-behavior
ΓööΓöÇΓöÇ polymer#2.8.0

iron-flex-layout#2.0.3 www\bower_components\iron-flex-layout
ΓööΓöÇΓöÇ polymer#2.8.0

iron-media-query#2.1.0 www\bower_components\iron-media-query
ΓööΓöÇΓöÇ polymer#2.8.0

iron-resizable-behavior#2.1.1 www\bower_components\iron-resizable-behavior
ΓööΓöÇΓöÇ polymer#2.8.0

iron-selector#2.1.0 www\bower_components\iron-selector
ΓööΓöÇΓöÇ polymer#2.8.0

iron-behaviors#2.1.1 www\bower_components\iron-behaviors
Γö£ΓöÇΓöÇ iron-a11y-keys-behavior#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

iron-checked-element-behavior#2.1.1 www\bower_components\iron-checked-element-behavior
Γö£ΓöÇΓöÇ iron-form-element-behavior#2.1.3
Γö£ΓöÇΓöÇ iron-validatable-behavior#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

iron-meta#2.1.1 www\bower_components\iron-meta
ΓööΓöÇΓöÇ polymer#2.8.0

iron-overlay-behavior#2.3.4 www\bower_components\iron-overlay-behavior
Γö£ΓöÇΓöÇ iron-a11y-keys-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-fit-behavior#2.2.1
Γö£ΓöÇΓöÇ iron-resizable-behavior#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

neon-animation#2.2.1 www\bower_components\neon-animation
Γö£ΓöÇΓöÇ iron-resizable-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-selector#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

paper-dialog-behavior#2.2.2 www\bower_components\paper-dialog-behavior
Γö£ΓöÇΓöÇ iron-overlay-behavior#2.3.4
Γö£ΓöÇΓöÇ paper-styles#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

iron-image#2.2.1 www\bower_components\iron-image
ΓööΓöÇΓöÇ polymer#2.8.0

iron-autogrow-textarea#2.2.0 www\bower_components\iron-autogrow-textarea
Γö£ΓöÇΓöÇ iron-behaviors#2.1.1
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
Γö£ΓöÇΓöÇ iron-validatable-behavior#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

iron-form-element-behavior#2.1.3 www\bower_components\iron-form-element-behavior
ΓööΓöÇΓöÇ polymer#2.8.0

iron-input#2.1.3 www\bower_components\iron-input
Γö£ΓöÇΓöÇ iron-a11y-announcer#2.1.0
Γö£ΓöÇΓöÇ iron-validatable-behavior#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0

iron-a11y-keys-behavior#2.1.1 www\bower_components\iron-a11y-keys-behavior
ΓööΓöÇΓöÇ polymer#2.8.0

iron-validatable-behavior#2.1.0 www\bower_components\iron-validatable-behavior
Γö£ΓöÇΓöÇ iron-meta#2.1.1
ΓööΓöÇΓöÇ polymer#2.8.0

iron-dropdown#2.2.1 www\bower_components\iron-dropdown
Γö£ΓöÇΓöÇ iron-behaviors#2.1.1
Γö£ΓöÇΓöÇ iron-overlay-behavior#2.3.4
Γö£ΓöÇΓöÇ neon-animation#2.2.1
ΓööΓöÇΓöÇ polymer#2.8.0

iron-fit-behavior#2.2.1 www\bower_components\iron-fit-behavior
ΓööΓöÇΓöÇ polymer#2.8.0

shadycss#1.9.1 www\bower_components\shadycss

iron-a11y-announcer#2.1.0 www\bower_components\iron-a11y-announcer
ΓööΓöÇΓöÇ polymer#2.8.0

iron-menu-behavior#2.1.1 www\bower_components\iron-menu-behavior
Γö£ΓöÇΓöÇ iron-a11y-keys-behavior#2.1.1
Γö£ΓöÇΓöÇ iron-flex-layout#2.0.3
Γö£ΓöÇΓöÇ iron-selector#2.1.0
ΓööΓöÇΓöÇ polymer#2.8.0
Done in 361.41s.
[12:51:07] Using gulpfile G:\cygwin64\home\WIN 10\outline-client-master\gulpfile.js
[12:51:07] Starting 'build'...
[12:51:07] Starting 'buildWebApp'...
yarn run v1.22.4
$ bash ./scripts/do_action.sh src/www/build
++ git rev-parse --show-toplevel
+ export 'ROOT_DIR=G:/cygwin64/home/WIN 10/outline-client-master'
+ ROOT_DIR='G:/cygwin64/home/WIN 10/outline-client-master'
[Running src/www/build]
+ export 'BUILD_DIR=G:/cygwin64/home/WIN 10/outline-client-master/build'
+ BUILD_DIR='G:/cygwin64/home/WIN 10/outline-client-master/build'
+ export -f do_action
+ do_action src/www/build
+ local action=src/www/build
+ echo '[Running src/www/build]'
+ shift
+ G:/cygwin64/home/WIN 10/outline-client-master/src/www/build_action.sh
./scripts/do_action.sh: line 26: G:/cygwin64/home/WIN: No such file or directory
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
[12:51:07] 'buildWebApp' errored after 816 ms
[12:51:07] Error: exited with error code: 127
    at ChildProcess.onexit (G:\cygwin64\home\WIN 10\outline-client-master\node_modules\end-of-stream\index.js:39:36)
    at ChildProcess.emit (events.js:198:13)
    at ChildProcess.EventEmitter.emit (domain.js:466:23)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
[12:51:07] 'build' errored after 822 ms

A thing which I noticed is that ```

G:/cygwin64/home/WIN 10/outline-client-master/src/www/build_action.sh
./scripts/do_action.sh: line 26: G:/cygwin64/home/WIN: No such file or directory
error Command failed with exit code 127.

So, is it something related to that?

Look at do_action.sh line 26: https://github.com/Jigsaw-Code/outline-client/blob/master/scripts/do_action.sh#L26
That script fails on paths containing spaces, because it doesn't put quotes around the path, like: "$ROOT_DIR"

I put the quote "$ROOT_DIR" but yet I'm getting an error. When I ran the command yarn run clean && yarn && yarn gulp build --platform=android I get an error on line 20 (same file) saying the same thing. So, just for some test, I changed it to: export BUILD_DIR=${BUILD_DIR:- "$ROOT_DIR/build"}
But I guess that that was a bad move. Any solution?

Also experiencing countless build errors one after another.
Can we expect the maintainer team do a thorough review of the build instructions and make more explicit suggestions for ALL users. It would be of great help to assume one is building the outline-client on a freshly rebuilt windows/MacOS system.
There are way too many assumptions from the team on the users should have done this or must have already installed that....

We hear that. @JonathanDCohen worked on some build improvements today. As you know, we support a number of platforms and it's challenging to account for ALL the different host/platforms combinations.
Regarding this particular case, building the android client on windows is not part of the team's workflow development, so it's largely untested. We appreciate your willingeness to try out and develop Outline.
@iamsid47, I suggest you export the escaped ROOT_DIR and BUILD_DIR variables prior to building.

@alalamav Thanks for reaching out. Actually, I tried that but yet no good.
It gives this error:
WIN 10@Family ~/outline-client-master
$ $  yarn gulp build --platform=android
$ "G:\cygwin64\home\WIN 10\outline-client-master\node_modules\.bin\gulp" build --platform=android
[12:00:16] Using gulpfile G:\cygwin64\home\WIN 10\outline-client-master\gulpfile.js
[12:00:16] Starting 'build'...
[12:00:16] Starting 'buildWebApp'...
$ bash ./scripts/do_action.sh src/www/build
++ git rev-parse --show-toplevel
+ export 'ROOT_DIR=G:/cygwin64/home/WIN 10/outline-client-master'
+ ROOT_DIR='G:/cygwin64/home/WIN 10/outline-client-master'
[Running src/www/build]
+ export 'BUILD_DIR= G:/cygwin64/home/WIN 10/outline-client-master/build'
+ BUILD_DIR=' G:/cygwin64/home/WIN 10/outline-client-master/build'
+ export -f do_action
+ do_action src/www/build
+ local action=src/www/build
+ echo '[Running src/www/build]'
+ shift
+ 'G:/cygwin64/home/WIN 10/outline-client-master/src/www/build_action.sh'
+ tsc -p src/www
+ rsync -ac --exclude '*.ts' src/www/ www/
G:/cygwin64/home/WIN 10/outline-client-master/src/www/build_action.sh: line 20: rsync: command not found
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
[12:00:22] 'buildWebApp' errored after 6.55 s
[12:00:22] Error: exited with error code: 127
    at ChildProcess.onexit (G:\cygwin64\home\WIN 10\outline-client-master\node_modules\end-of-stream\index.js:39:36)
    at ChildProcess.emit (events.js:198:13)
    at ChildProcess.EventEmitter.emit (domain.js:466:23)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
[12:00:22] 'build' errored after 6.55 s
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.-bash: $: command not found

I really want to figure out that what exactly is going wrong. Can someone please explain in detail?

@JonathanDCohen @alalamav ,

Appreciate your response on our queries.
Haven't seen any updates on the build instruction, I'm curious when we can expect an update? Can't wait to follow your new instructions to build outline-client android app on Windows.
Cheers.

G:/cygwin64/home/WIN 10/outline-client-master/src/www/build_action.sh: line 20: rsync: command not found

@iamsid47, you need to rsync on cygwin.
@DonZheng, the build commands are accurate to the best of our knowledge. Please try them and let us know what fails.

@iamsid47 to clarify alalamav's comment, you need to install rsync from the cygwin installer.
I would be interested if anybody here attempted to develop from WSL.  We have our hands tied behind our backs a bit with respect to developing on WSL since Google doesn't allow corporate Windows machines to run it yet.

@JonathanDCohen thanks for clarification. I'll surely install rsync from cygwin installer and hook up again with an update.
I hope the best!


1.5 docs backport

@roldanbob, this PR backports a few docs issues which fell through the cracks so far:

https://issues.redhat.com/browse/DBZ-3402
https://issues.redhat.com/browse/DBZ-3416
https://issues.redhat.com/browse/DBZ-3300
https://issues.redhat.com/browse/DBZ-3412
https://issues.redhat.com/browse/DBZ-3410
https://issues.redhat.com/browse/DBZ-2334
https://issues.redhat.com/browse/DBZ-3518
A range of [docs] commits

Could you build upstream and downstream docs from this PR and see whether this looks good? In general, let's make sure that:

Any Jira issue that needs backporting has a comment stating that fact
Any change that needs backporting has a Jira issue (I feel the number of issues solely tagged with [docs] here is too large, this should only really be the case for small-ish typo fixes)
If you push something to upstream yourself (aforementioned small [docs] commits, either ping Jiri or me to backport if needed, or simply apply to 1.5 (or whatever the current downstream branch is) yourself; otherwise we have no chance for catching these
Let's try and limit changes as much as possible to upstream master, as the backporting business is quite a hassle; I understand I kinda went against this rule with backporting the [docs] changes here. I did it though, so to facilitate the backporting of the other issues

Hope that all makes sense, please let me know if not.

@gunnarmorling So regarding the following:

Let's try and limit changes as much as possible to upstream master, as the backporting business is quite a hassle.

I agree with the general guidelines that you set out. One thing that I could use clarification about, though. And I guess this only applies to content that I merge on my own (for small changes, with or without a Jira issue) -- as opposed to when I simply submit a PR:Is it still Ok if I commit to master? Or should I apply it only to the current release branch? If you think that's it's still OK that I apply directly to master, if I want the commit also applied to the current release branch, should I cherry-pick it myself?

We generally should start by pushing changes to master and then back port if needed. If something gets applied to an older branch only, chances are super high the forward part to master gets forgotten (as it's something we don't expect, so nobody will notice such commit).

should I cherry-pick it myself?

Yes, that'd be easiest. I'd say:

If you push small [docs] commits to master, also take care of the cherry-picking yourself
If you create a PR for a larger change for master, always use a Jira issue and express the desire to have it backported (or, alternatively, create a PR with the same change for the older branch yourself)

Taking a step back, the things we should aspire are:

Minimizing overhead in general (e.g. by doing small docs changes without Jira issue)
Minimizing overhead for backporting (by backporting conservatively and if we do it, ensure a smooth process)
Preventing any desired but missed backports (by tracking all relevant changes in Jira)

I've done a local Antora build with the files from your branch and everything looks good (although I did detect an unrelated typo in the MongoDB doc. Doing the downstream build is a bit more involved, so tomorrow I'll copy the files, run the file-split and link-normalization tools, and then see where we stand. Pretty confident that we'll be in good shape.

Could you build upstream and downstream docs from this PR and see whether this looks good?

@gunnarmorling I was proceeding cautiously, so this took a little while and a bit of tweaking on the downstream end, but I was able to build, and I can confirm that the content from the commits that backported in your 1.5 branch look good! Huge thanks for getting this squared away and unblocking my progress.
AFAIC, this can now be merged.


Review somatic muscles

'somatic muscle' does not feature highly in OLS search for 'skeletal muscle', despite (related) synonym being present. Based on quick Google searches, 'skeletal' doesn't seem to be strongly favoured over 'somatic', but perhaps synonym could be made exact? Need to find definitions of each.
'adult somatic muscle', 'embryonic somatic muscle', 'embryonic/larval somatic muscle', 'embryonic/larval hypodermal muscle' don't have 'skeletal' synonyms.
We might also want some 'striated' synonyms.
Some muscles also seem like they might be in the wrong place - should 'gut suspension muscle' and 'cardiac outflow muscle' really be 'hypodermal' (larval body wall)? Are all pharyngeal muscles really 'hypodermal'? Need to check some refs.

Most of the concerns have been addressed by #1087. Further concerns about the place of 'hypodermal' warrant a dedicated issue (#1088). Closing here.


Http request failed with status code 400

Question.
Hello,
Our team has written data layer with Kotlin-Native and using it across both Android and iOS platforms. Android queries seems to work properly, however in iOS requests fails with:
Request: common.GetUserQuery@2bf94d8
ApiQL : Request query document: query GetUser { currentUser { __typename user { __typename id emailAddress contact { __typename firstName lastName address { __typename country } } userRoles { __typename name } locale termsOfUseAccepted } } }
ApiQL : Request query variables: {}
ApiQL : Request error com.apollographql.apollo.ApolloHttpException: Http request failed with status code `400`

Logs don't show much. Any ideas on how to expand logging and get more insight?

In these cases, I would setup a Charles Proxy or any other proxy, run the iOS and Android code and compare the requests. Watch for different HTTP headers, method and/or body.
If proxying isn't an option, you can dump the whole request with a OkHttp HttpLogginInterceptor on Android, like here for an example.
I'm not sure how to do the same thing on iOS. @designatednerd any ideas?

@Klaudas any luck with a proxy? Looking at NSURLSession, I found https://github.com/muukii-archive/HTTPLogger. Maybe that can help you dump the request on iOS if a proxy is not feasible?

I'm closing this issue, please leave a message if you want me to reopen it.


Assign Fault Domain during VM Create

Resource Provider

Compute RP
Description of Feature or Work Requested

When creating a virtual machine that is added to a VMSS flex, customer can now specific the fault domain where they would like the VM to land
VMSS Maximum FD count per region available via SKUs API
/skus
Type = availabilitySet
Name = Aligned
Capabilities[0].name=MaximumPlatformDomainCount.value
VM must be in a VMSS flex with FDCount > 1
FD is 0-indexed, based on FD Count of the VMSS Flex
If VMSS FDCount = 3, V can have FD of 0,1,2
Api-version 2020-12-01
This property cannot be updated after VM create
https://microsoft.sharepoint.com/:w:/t/vmssvmorchestrationmode/Edo-u2Trix1DgPrk2DLl3ncBFLTjUMs04p8PM4lBTFP4mw?e=DgZfNc
Minimum API Version Required

2020-12-01
Swagger Link

Target Date

1/13

hi @qwordy could you pls take care of this? thanks.

Hi Jerry, what's the current status of 2020-12-01. It is not in master branch yet.


Callback trait to keep all common callbacks in common place

Cool. Good idea!

@chasethenag420 could you and some comments the the trait so that the phpdox has some info on this?


Hide window on login

I know this has been addressed before, but I am still experiencing nvALT not hiding on login. I am currently using v2.2b (110) on Mac OS X 10.6.8
Best,
-Aaron

In System Preferences > Users & Groups > Current User > Login Items, tick nvALT's "Hide" checkbox.


Feature request prestoDB additional Parameters to support SSL

Is your feature request related to a problem? Please describe.
I work with multiple prestoDB instances that need to use slightly different pre-supplied keystores but I can't configure those in DBeaver without editing the driver itself
the JDBC url is of the form:
jdbc:presto://some-server:4039?SSL=true&SSLTrustStorePath=C:/some-keystore.jks&SSLTrustStorePassword=somepass
So additional parameter are
SSL  (true or false)
SSLTrustStorePath (some file path)
SSLTrustStorePassword (some password)
Describe the solution you'd like
Add additional parameters to the driver so these can be configured at the connection level

thanks for suggestion


Allow np.ndarray inputs for subpnt, subslr, and pxform

I often find myself writing np.vectorize calls to allow SpiceyPy functions to take vector inputs. I'd like to see this moved into SpiceyPy itself.
AFAIK, all array input handling is done on the Python side as CSPICE functions never accept array inputs. An example is spkezr, which loops through the array input values in Python, iteratively calling spkezr_c. However, not all wrappers have implemented this convenience.
There are many other routines which would benefit from this type of array input handling. As a start, I suggest pxform, subslr, and subpnt, possibly accepting user suggestions for others.
An alternative implementation could be to write a C extension library that performs these loops in C rather than python to improve performance but that would probably add a lot of additional installation and maintenance headache for @AndrewAnnex.

PR's are certainly welcome to add additional functions to accept arrays using the style we developed for spekezr but the speed ups are marginal relative to a simple for loop or using np.vectorize. I'd say these additions make easy PRs for me to accept, but they are relatively low priority for me to work on by myself as they only provide slight convenience. You can look at #192 #310 #317 and #324 for examples.
The other topic you raise is an important one but something that will take a lot more time and I want to see if I can apply to get funding for. Issue #363 sort of tracks this issue, I've found that the most likely way I will implement this is by using cython as it may simplify some of the other build tooling when combined with Cmake. But there is also a rust cspice library that could be wrapped with python. Other than these two ideas just implementing them as pure c files in the codebase could also work and present less of a headache, but I am trying to avoid memory management. Theoretically the NAIF could supply these also... In any case, dropping the loops to a lower level language is certainly of interest but it's tricky to do that and reuse the existing ctypes code at the same time.


Gradle Quick-Start docs producing "unexpected token" error

Expected Behavior
When I copy & paste the Gradle documentation from the README and fulfill the minimum requirement (Gradle 5+), Gradle should build fine.
Observed Behavior
I'm getting an error for this part of the code:
tasks {
    withType<Detekt> { // <-- 78: unexpected token: > @ line 78, column 20
        // Target version of the generated JVM bytecode. It is used for type resolution.
        this.jvmTarget = "1.8"
    }
}

Steps to Reproduce
Copy and paste README code to build.gradle in an Android project and click "Sync Now" in Android Studio.
Your Environment

Version of detekt used: 1.6.0
Version of Gradle used (if applicable): 3.6.1 (Android Studio 3.6.1)
Operating System and version: macOS 1.15.3
Link to your project (if it's a public repository): –

On Android this has to be configured differently. I hope that I find some time to write a blog post about it.
Please consult #2259 and report back whether the mentioned solution helps you.

I'm seeing the same issue, but it's not on Android.
I'm using gradle 5.6.4, with a standard (non-kotlin) build.gradle.
I am using kotlin-gradle-plugin 1.3.70, and am targeting JDK8 for both java and kotlin.
I am using detekt 1.6.0, and running it under IntelliJ IDEA Ultimate 2019.3.3.
Adding the snippet mentioned above makes the gradle configuration blow up with the unexpected token error.

Please try if tasks.detekt.jvmTarget = "1.8" works for you.
The quick-start example uses the kotlin dsl. I will open a PR to add a groovy example.


Adds moonbeam to hosted service

This PR adds Moonbeam to the hosted service page. Also clarifies that mbase is Moonbeam/Moonriver TestNet.

@azf20 Feedback done 😃

Thanks


LLP does not clean up temp fils when TMPDIR environment variable is used

after running this:
time RUST_MIN_STACK=100000000 TMPDIR=`pwd`/tmp/ webgraph llp -g "-1,-2,-3,-4,-5,0-0" -j 72 /poolswh/softwareheritage/vlorentz/datasets/2023-09-06-recompressed/compressed/graph-bfs-simplified llp.perm &> llp.log

I noticed that temp files have not been cleaned from the local temp dir:
$ du -sh tmp
1,5T    tmp
$ ls -l tmp
total<PHONE_NUMBER>
-rw-rw-r--+ 1 szacchiroli tss<PHONE_NUMBER>72 apr 11 17:27 labels_0.bin
-rw-rw-r--+ 1 szacchiroli tss<PHONE_NUMBER>72 apr 11 20:29 labels_1.bin
-rw-rw-r--+ 1 szacchiroli tss<PHONE_NUMBER>72 apr 11 23:24 labels_2.bin
-rw-rw-r--+ 1 szacchiroli tss<PHONE_NUMBER>72 apr 12 02:52 labels_3.bin
-rw-rw-r--+ 1 szacchiroli tss<PHONE_NUMBER>72 apr 12 06:59 labels_4.bin
-rw-rw-r--+ 1 szacchiroli tss<PHONE_NUMBER>72 apr 12 15:15 labels_5.bin

@progval have you ever encountered this? I'm surprised we didn't notice before… (maybe because you independently cleanup the same dir in the swh-graph pipeline?)

I don't, I just don't usually look in my tmp directory

Yeah, confirmed: this can be reproduced trivially even with ./pipeline.sh tests/data/cnr-2000 which leaves 11 labels.bin file in /tmp, so it doesn't even depend on TMPDIR.
And indeed there is no code removing them in src/algo/llp/mod.rs at all.
I'll file a PR about this.


NetBox 2.8 release

This introduces feature support for NetBox 2.8. If you can test this branch out by upgrading an existing installation (or copy of one), please do so and report back. Confirmations of successful upgrades will result in a quicker merge (as I'm having some test suite issues I need to resolve currently).
To deploy NetBox 2.8, use ansible-galaxy to install this branch:
ansible-galaxy install https://github.com/lae/ansible-role-netbox/archive/feature/netbox-2.8.tar.gz,v0.10.0-pre,lae.netbox --force

Changes
If I'm missing anything, please leave a comment.

Requirement conditions for Python 3.6+ (complete)
Plugins/additional Python dependencies support (complete)

Also, I'm considering marking this release as 1.0, since it has generally been stable for a while now. Thoughts?

For remote authentication from https://github.com/netbox-community/netbox/issues/2328 were you thinking just to allow that to be implemented from the netbox_config variable? That seems to be the simplest solution but I am wondering what will happen if you enable LDAP + that?

Yeah, from what I've read (release notes and the documentation) it sounds like it can just be managed through the netbox_config variable. Do you think this role should do more with regards to it?
I'd expect admins to be aware if they're enabling both - but if there's an issue with enabling both together then we could add an assert task to the validate_variables.yml tasks file.

I just started looking into updating my environment to support it. Right now we do LDAP auth and want to switch to SAML auth which I am sure a lot of people are interested in so I really think it's more of an issue of upgrade paths than anything at least right now. If you upgrade from a 2.7 instance with LDAP turned on to a 2.8 instance what happens to the existing LDAP based users? Will they be picked up in the header based auth as existing users? Will they still be able to login with straight LDAP?
If there is something weird in that whole process, my only thought on how to deal with it is to have either a conversion or user cleanup play that can be called in that scenario to either convert the users in the database or to wipe out the user tables to allow people to start from scratch.

Ah, I see. This might be a good question to pose on the netbox-discuss mailing list, since Jeremy or someone else might be able to provide advice regarding that.
If it's something we can implement here as an upgrade task, we can consider it, though at the moment we're not tracking what version of NetBox is currently installed, I think, which may or may not pose an issue (maybe not?).

From another thread:

I just need a confirmation that upgrading from 2.7 to 2.8 works fine - I may get to this soon (I don't have access to an existing install currently so I need to make one), but if anyone else confirms it, it'll be merged and released.

If you've tried upgrading already with this branch and didn't have any issues, please +1 this post or leave a comment.

Are we foregoing python version checking?

Ah, right.
Pushed a commit that I think should work well for existing and new installations.

The main issue with that is that for new installations, Python 3 may not be installed yet (the role installs them in the appropriate package installation tasks), so we can't really check,

The main issue with that is that for new installations, Python 3 may not be installed yet (the role installs them in the appropriate package installation tasks), so we can't really check.

In that case I wouldn't expect netbox_python_binary to be defined yet since we will define that in load_variables.yml if the role is handling the installation. Obviously if we are letting the role handle it we will be setting the variable to a known good one.

The role does handle it by default, but per #32 the python packages can be overridden by power users (maybe to switch to something like PyPy), so just parsing out the Python versions from the variables specified under vars/ wouldn't be good enough, I think.

Tested upgrade on Ubuntu 18 locally (+ confirmation about cent7 earlier)


Implemented isDependency and isExclusiveDevDependency

Current dependencies on/for this PR:

main

PR #7   👈

This comment was auto-generated by Graphite.

@CatChen queued this pull request to merge with Graphite.

@CatChen merged this pull request with Graphite.


Advertisements with Google Adsense

[ ] Finish the Google Adsense account signup when the site is pushed live.
[ ] Create an AdvertisementCard Class that displays an advertisement.
[ ] Show an AdvertisementCard once every X number of content cards.

@omarchehab98 This should come after the API related changes are finished,


[blog] Add "Why Fluss" and "Introducing Fluss" blog posts

Purpose
Add a blog post for Fluss. This is my keynote presentation on Flink Forward Asia. I separated it into 2 blog posts because the content is too long.

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

LGTM


⚠ Minecraft has degraded performance

In 1938a78, Minecraft (https://www.minecraft.net) experienced degraded performance:

HTTP code: 200
Response time: 1063 ms

Resolved: Minecraft performance has improved in 02b2e51.


[task] PRD for webhook response

Please share what is  expected behaviour if custom return type is mentioned . if not are we defaulting to current response type which includes workflow runid.
also include acceptance criteria, what is the concurrency expected etc

Please add your planning poker estimate with Zenhub @ayushpahwa

PRD


Add support for Gemini API

I'm creating this issue to request support on the Gemini API, currently, tracked calls for the Gemini API do not show any information on the token/cost breakdown, therefore, please enable support as you have for Mistral, and Anthropic.

Hi,
I am one of the developer for weave, I can add cost support for gemini apis.
Could you send the link to the project your are working in so I can ensure that my fix works for your project?

Dear Josiah
I am grateful for your commitment and your support, here is the link to my
project.
https://wandb.ai/lighthouseai/QA-monitoring/weave/traces
Thanks,
Mohammed Ali
On Wed, Jul 3, 2024 at 8:11 PM Josiah Lee @.***> wrote:

Hi,
I am one of the developer for weave, I can add cost support for gemini
apis.
Could you send the link to the project your are working in so I can ensure
that my fix works for your project?
—
Reply to this email directly, view it on GitHub
https://github.com/wandb/weave/issues/1879#issuecomment-2206722645, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AKJXGPKZ7PO25EU7RRU7KWTZKQPCVAVCNFSM6AAAAABKJJE5OCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMBWG4ZDENRUGU
.
You are receiving this because you authored the thread.Message ID:
@.***>

@masterbatcoderman10 just to let you know that @soumik12345 is working on a PR at the moment to add support for Google AI Studio
https://github.com/wandb/weave/pull/2078

The integration is merged now; I think token usage should be there: https://github.com/wandb/weave/pull/2399

Thanks for the notification.
On Fri, 18 Oct 2024 at 2:13 PM Thomas Capelle @.***>
wrote:

The integration is merged now; I think token usage should be there: #2399
https://github.com/wandb/weave/pull/2399
—
Reply to this email directly, view it on GitHub
https://github.com/wandb/weave/issues/1879#issuecomment-2422083322, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AKJXGPMXTQQSN7UFLDAJ26LZ4DNMHAVCNFSM6AAAAABKJJE5OCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMRSGA4DGMZSGI
.
You are receiving this because you were mentioned.Message ID:
@.***>

@tcapelle this is still not working if using the vertexai library, which is the preferred method if accessing Gemini via GCP. Any chance it can be implemented?

@ramon-prieto Thanks for raising the issue with the vertexai integration. I have raised a PR https://github.com/wandb/weave/pull/3110 to fix it.


Update all field validation to match latest treasury requirements

Reported mismatches from Ozzie on 2022-07-21

Project Upload Testing
18_229233
(Type_of_Capital_Expenditure__c) : Type of Capital Expenditure: bad value for restricted picklist field: "Mitigation measures in small businesses, nonprofits and impacted industries"
(Sub_Category__c) : bad value for restricted picklist field: 1.8-COVID-19 Assistance to Small Businesses
(Small_Businesses_Served__c) : Small Businesses Served is required for started projects with EC 1.8, 2.29-2.33
215218
(Type_of_Capital_Expenditure__c) : Type of Capital Expenditure: bad value for restricted picklist field: "Affordable housing, supportive housing, or recovery housing"
Subrecipient
(Unique_Entity_Identifier__c) : The UEI Number of VJH9NBK6Q2N3 is not a valid or unique UEI number.
Subaward
(Edited_Subaward_Amount_Explanation__c) : Award Amount has changed. Please provide an explanation.
(Place_of_Performance_Zip__c) : Zip code must be a 5 digit number
(Primary_Sector__c) : Primary Sector: bad value for restricted picklist field: Family or childcare
(Recipient_EIN__c) : 50354769 Does not exist in the system. Please enter a valid EIN Number.
Expenditures > 50000
(Sub_Award_Lookup__c) : Subaward No is invalid
Expenditures < 50000
(Quarterly_Expenditure_Amt_Aggregates__c) : Total Period Expenditure Amount must be less than or equal to Cumulative Obligations

OH also reports that no variation of "Mitigation measures in small businesses, nonprofits and impacted industries" seems to pass bulk upload validation in treasury.

Here's a report on each of these issues and their cause/fix:

(Type_of_Capital_Expenditure__c) : Type of Capital Expenditure: bad value for restricted picklist field: "Mitigation measures in small businesses, nonprofits and impacted industries"

We still don't know what the correct value is supposed to be here. We have a new ticket to track that issue, since it requires input from treasury. https://github.com/usdigitalresponse/arpa-reporter/issues/478

(Sub_Category__c) : bad value for restricted picklist field: 1.8-COVID-19 Assistance to Small Businesses
(Small_Businesses_Served__c) : Small Businesses Served is required for started projects with EC 1.8, 2.29-2.33
215218

This was caused because the input cover sheet was set to EC 1.8, the project was added, then the user realized they were working on the wrong EC. They changed the EC and continued to add other projects. When the form was eventually uploaded, it included the (now hidden) 1.8 project incorrectly. That was fixed in https://github.com/usdigitalresponse/arpa-reporter/pull/466

(Type_of_Capital_Expenditure__c) : Type of Capital Expenditure: bad value for restricted picklist field: "Affordable housing, supportive housing, or recovery housing"

This issue was tracked and fixed here: https://github.com/usdigitalresponse/arpa-reporter/issues/427
Subrecipient

(Unique_Entity_Identifier__c) : The UEI Number of VJH9NBK6Q2N3 is not a valid or unique UEI number.

This error occurs because the treasury won't allow you to edit existing subrecipients via bulk-upload. Admins will have to remove this from the export csv and manually update the recipient if there were changes.
Subaward

(Edited_Subaward_Amount_Explanation__c) : Award Amount has changed. Please provide an explanation.

This field isn't available in the bulk-upload files, so they have to be edited by admins in the Treasury portal input forms manually.

(Place_of_Performance_Zip__c) : Zip code must be a 5 digit number

Excel sometimes trims leading 0s from numeric values, which causes problems for RI zipcodes that start with a 0. This is related to another excel bug that we can't resolve until we get access to the Treasury portal again. That issue is being tracked here: https://github.com/usdigitalresponse/arpa-reporter/issues/443

(Primary_Sector__c) : Primary Sector: bad value for restricted picklist field: Family or childcare

This issue was tracked and fixed here: https://github.com/usdigitalresponse/arpa-reporter/issues/427

(Recipient_EIN__c) : 50354769 Does not exist in the system. Please enter a valid EIN Number.

It looks like maybe a user typo'd a recipient id, since they are supposed to be 9 digit numbers?
Expenditures > 50000

(Sub_Award_Lookup__c) : Subaward No is invalid

This happens if a subrecipient was reported but they have no subawards yet. Admins should delete the subrecipient from the export.
Expenditures < 50000

(Quarterly_Expenditure_Amt_Aggregates__c) : Total Period Expenditure Amount must be less than or equal to Cumulative Obligations

This happened because of the accidental double-reporting of a project from an incorrect upload mentioned in the second issue above


Continuously differentiable eigendecomposition

System information

TensorFlow version (you are using): 1.12
Are you willing to contribute it (Yes/No): Yes, but I'd probably need some guidance.

Describe the feature and the current behavior/state.
Currently, when any two eigenvalues are equal, the tf.gradients( tf.self_adjoint_eig(matrix), matrix)  function returns NaN.
It was proposed to return a subgradient (https://github.com/tensorflow/tensorflow/issues/12853) in this case, which equals v_k^T*v_k for kth eigenvalue. However, there exists a procedure which allows to generate continuously differentiable eigendecomposition. This allows to have calculate true gradient (of a particluar decomposition) as soon as eigenbasis exists. Intuitively, if we choose a particular consistent way to choose eigenvectors from subspace, the eigendecomposition would be well defined.
Possibly related issue (same about SVD): https://github.com/tensorflow/tensorflow/issues/13641
Will this change the current api? How? The eigendecomposition will probably change in cases it is not unique.
Who will benefit with this feature? People dealing with optimizations based on eigenvalues/eigenvectors.

ping

@rmlarsen as far as I understand, you are the prime developer of linalg related stuff. Could you mentor me on this one or propose someone who could mentor me?

@Randl,
Sorry for the delayed response. Can you please let us know if tf.linalg.eigh is the API that you are looking for? Thanks!

Yes, I think it was fixed by introducing Lorenz broadening here: https://github.com/tensorflow/tensorflow/pull/33808/files#diff-589f3bb3ae164fc660ae23ebe4eceabf5700612ecef44785c47ce788bd8e4584R712


No resources about building community prisma generators

Discussed in https://github.com/prisma/prisma/discussions/10721

Originally posted by YassinEldeeb December 16, 2021
Currently the only way for the community to build amazing prisma generators is to look for the already built generators code to see how to use @prisma/generator-helper and the @prisma/sdk cause there's zero resources about them neither officially nor from the community.
So I would like to write a guide on how to get started with developing a prisma generator so we can eliminate the struggle of developers to start developing their amazing ideas cause I find it extremely demotivating when I started to make my own generator when I couldn't find a single resource on how to get started.
so what I would like to create is:

Make a little CLI tool for people to use to setup all of the boilerplate needed to start developing a new prisma generator which will contain:

Private yarn workspace for testing the generator.
Two projects in the workspace:

Generator package.
Simple Node.js project that has prisma already setup with a sample definations with the generator package symlink-ed in package.json that a user can test running prisma generate to see the generated output.

Illustrate the different concepts they'll come across when developing prisma generators like dmmf, generator configs ..etc
Illustrate the power of using @prisma/generator-helper which will help saving a lot of time and effort.
Illustrate the basic usage for @prisma/sdk.
Publishing the package to npm.
Explaining how to write tests for the generator.

I would like to hear your opinion about this idea 🤗
The question is:
where would you like to put this guide? in a .md file on this repo just like CONTRIBUTING.md or on prisma/docs in an mdx file to be on prisma.io or perhaps somewhere else 🤔
and can the CLI tool for setting up the boilerplate be merged with the prisma ecosystem or It must be a community maintained thing and if yes where should it be placed?

First part is completed @janpio  🎉
Please help making it better: discussion

just published a blog on dev.to explaining the hello world prisma generator that comes with this CLI
Check it out


[question]  consensus protocol for ios

[question]
@heidi-ann
is ios the implementation of A Generalised Solution to Distributed Consensus?
which consensus protocol it is using?

No, Ios predates this work. It's built on a custom consensus algorithm which I did not get around to publishing.

@heidi-ann thanks for the confirmation, is there any implementation based on A Generalised Solution to Distributed Consensus?

Not that I know of

thanks


feat: add functionality to travel to next/previous function or method

This is a POC and WIP. Would you be interested in me polishing this and adding a documentation? I kinda miss that functionality to move to the next/previous method/function after working in Goland, so I tried to take a stab at treesitter and Lua.

Don't we have this functionality in nvim-treesitter/nvim-treesitter-textobjects yet?

This is embarrassing. You're right, I totally missed it.

I guess your approach is a bit different because you would go directly to the identifier of the function and not to the start/end of the whole function definition or function body

I think this PR enables to do something similar to your PR https://github.com/nvim-treesitter/nvim-treesitter-textobjects/pull/60
It would allow you to use locals as textobjects, e.g. to travel to previous/next function
require'nvim-treesitter.configs'.setup {
  textobjects = {
     move = {
      enable = true,
      goto_next_start = {
        ["]F"] = {<EMAIL_ADDRESS>"locals" },
      },
      goto_previous_start = {
        ["[F"] = {<EMAIL_ADDRESS>"locals" },
      },
    }
  }
}


WidgetMixin init breaks when attrs is None

Hello, I found this unexpected behavior when using ListSelect2 in a MultiWidget.  Basically __init__ breaks if attrs is None.
Django MultiWidget  has the following signature
def __init__(self, widgets, attrs=None):
    ...

But in  dal.widgets.WidgetMixin.__init__ happens this
def __init__(self, url=None, forward=None, *args, **kwargs):
     ...
     self.placeholder = kwargs.get("attrs", {}).get("data-placeholder")
     ...

In other words WidgetMixin assume attrs is either a dict or is not in kwargs, but in the base class Widgets it defaults  to None.
Not a big dial, it can be easily worked around, but I think that it should be allowed to blindly pass attrs to all subwidget of a MultiWidget (that's what works with a plain Select at last).
Regards

Agreed, None should be supported


Publish libp2p metrics for peercount, msg size and connection count.

Thank you for contributing to Mina! Please see CONTRIBUTING.md if you haven't
yet. In that doc, there are more details around how to start our CI.
Explain your changes here.
branching off #7726 removing changes in #7724
Explain how you tested your changes here.
go test ./...  -v -run TestLib2pMetrics
Checklist:

[ ] Document code purpose, how to use it

Mention expected invariants, implicit constraints

[ ] Tests were added for the new behavior

Document test purpose, significance of failures
Test names should reflect their purpose

[ ] All tests pass (CI will check this if you didn't)
[ ] Serialized types are in stable-versioned modules
[ ] Does this close issues? List them:

Closes #0000
Closes #0000

!approved-for-mainnet

!ci-build-me

@noot Would you mind pulling the latest compatible changes up into this branch? I believe it should fix some of the CI issues that are occurring on this branch atm. Either a rebase or a merge should work.

!ci-build-me

!ci-build-me


Recommendation best result and column name doesn't match

The label for best quality is RMSE, while in output panel it's r-square

Both values now say RSquared. Verified.


@opentelemetry/instrumentation crashes when used with typescript esModuleInterop: true

What version of OpenTelemetry are you using?
{
  "dependencies": {
    "@opentelemetry/auto-instrumentations-node": "^0.36.4",
    "@opentelemetry/exporter-trace-otlp-http": "^0.36.1",
    "@opentelemetry/instrumentation": "^0.36.1",
    "@opentelemetry/instrumentation-aws-lambda": "^0.35.0",
    "@opentelemetry/instrumentation-aws-sdk": "^0.34.0",
    "@opentelemetry/instrumentation-dns": "^0.31.2",
    "@opentelemetry/instrumentation-http": "^0.36.1",
    "@opentelemetry/resources": "^1.10.1",
    "@opentelemetry/sdk-node": "^0.36.1",
    "@opentelemetry/sdk-trace-base": "^1.10.1",
    "@opentelemetry/sdk-trace-node": "^1.10.1",
    "@opentelemetry/semantic-conventions": "^1.10.1"
  }
}

What version of Node are you using?
18
What did you do?
I recently started instrumenting my Node Lambda Functions with the OpenTelemetry JS SDK. We write them in TypeScript and transpile them using esbuild. We have typescript configured using esModuleInterop: true. During the build the following error is shown
▲ [WARNING] Calling "RequireInTheMiddle" will crash at run-time because it's an import namespace object, not a function [call-import-namespace]

    ../../.yarn/__virtual__/@opentelemetry-instrumentation-virtual-4be7f7a678/0/cache/@opentelemetry-instrumentation-npm-0.36.1-606efe6525-07401e23e0.zip/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.js:63:8:
      63 │         RequireInTheMiddle(
         ╵         ~~~~~~~~~~~~~~~~~~

  Consider changing "RequireInTheMiddle" to a default import instead:

    ../../.yarn/__virtual__/@opentelemetry-instrumentation-virtual-4be7f7a678/0/cache/@opentelemetry-instrumentation-npm-0.36.1-606efe6525-07401e23e0.zip/node_modules/@opentelemetry/instrumentation/build/esm/platform/node/RequireInTheMiddleSingleton.js:27:7:
      27 │ import * as RequireInTheMiddle from 'require-in-the-middle';
         │        ~~~~~~~~~~~~~~~~~~~~~~~
         ╵        RequireInTheMiddle

the build succeeds anyway. If I then invoke the function I get the following error in the logs:
2023-03-27T16:46:22.383Z	undefined	ERROR	Uncaught Exception
{
    "errorType": "TypeError",
    "errorMessage": "RequireInTheMiddle3 is not a function",
    "stack": [
        "TypeError: RequireInTheMiddle3 is not a function",
        "    at RequireInTheMiddleSingleton3._initialize (/var/task/index.js:53274:9)",
        "    at new RequireInTheMiddleSingleton3 (/var/task/index.js:53270:14)",
        "    at RequireInTheMiddleSingleton3.getInstance (/var/task/index.js:53317:91)",
        "    at new InstrumentationBase3 (/var/task/index.js:53386:75)",
        "    at new AwsInstrumentation2 (/var/task/index.js:55209:9)",
        "    at Object.<anonymous> (/var/task/index.js:82015:5)",
        "    at Module._compile (node:internal/modules/cjs/loader:1218:14)",
        "    at Module._extensions..js (node:internal/modules/cjs/loader:1272:10)",
        "    at Module.load (node:internal/modules/cjs/loader:1081:32)",
        "    at Module._load (node:internal/modules/cjs/loader:922:12)"
    ]
}

What did you expect to see?
That the import works as expected without crashing.
What did you see instead?
Build warnings and crashes.
Additional context
This StackOverflow answer suggests that the culprit is indeed esModuleInterop: true.

Will reopen in https://github.com/open-telemetry/opentelemetry-js