Debugging in same  chrome instance will occur "Unable to attach to browser"

VSCode Version: 1.50
OS Version: macOS 10.14.6
nodejs 10.21.0

Steps to Reproduce:
project A launch.json
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome localhost",
"url": "http://localhost:8000",
"webRoot": "${workspaceFolder}",
"userDataDir": false,
}
]
project B launch.json
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome localhost",
"url": "http://localhost:8001",
"webRoot": "${workspaceFolder}",
"userDataDir": false,
}
]

Run debug on project A and vscode launch a chrome instance, "http://localhost:8000" will display in chrome tab's address bar。The page displays normally too.
Run debug on project B and vscode open a new chrome tab on previous chrome window。But this time the page can't
display normally, and "about:blank" displays in this new chrome tab's address bar. Vscode will get a error: "Unable to attach to browser"

Does this issue occur when all extensions are disabled?: Yes/No
No

This is because you have "userDataDir": false, -- by default we can only attach to the instance of Chrome that we control, since we pass in pipes for communication when launching the process. If the launch "merges" with an existing instance of Chrome, this doesn't happen. You have two options:

Remove userDataDir: false so that each launch will use a different data dir, or
Set a port number to listen on. This is less secure but could work if required for your scenario.


Running the docker compose locally does not start the API correctly

As noted in #231, the README suggests that cloning the package and calling make run should start the API but:
$ curl http://localhost:8080/docs
Empty reply from server.

The test performed in the CI also succeeds locally:
$ nc -vz localhost 8080
Connection to localhost port 8080 [tcp/http-alt] succeeded!

but unless I missed it, that is no check of the content with curl or similar. The output of make run is below and looks similar to that of the CI (ex.: step 3 of https://github.com/pyronear/pyro-api/actions/runs/3348292566/jobs/5547200913). @frgfm, could it be that you have those variables set locally so you have access to QARNOT ?
docker-compose up -d --build
WARNING: The QARNOT_TOKEN variable is not set. Defaulting to a blank string.
WARNING: The BUCKET_NAME variable is not set. Defaulting to a blank string.
WARNING: The BUCKET_MEDIA_FOLDER variable is not set. Defaulting to a blank string.
WARNING: The S3_ENDPOINT_URL variable is not set. Defaulting to a blank string.
WARNING: The S3_ACCESS_KEY variable is not set. Defaulting to a blank string.
WARNING: The S3_SECRET_KEY variable is not set. Defaulting to a blank string.
WARNING: The S3_REGION variable is not set. Defaulting to a blank string.
WARNING: The SENTRY_DSN variable is not set. Defaulting to a blank string.
WARNING: The SENTRY_SERVER_NAME variable is not set. Defaulting to a blank string.
Creating network "pyro-api_default" with the default driver
Building backend
[+] Building 4.5s (13/13) FINISHED
 => [internal] load build definition from Dockerfile                                                                                0.1s
 => => transferring dockerfile: 633B                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.1s
 => => transferring context: 2B                                                                                0.1s
 => [internal] load metadata for docker.io/tiangolo/uvicorn-gunicorn-fastapi:python3.8-alpine3.10                                                                      4.1s
 => [auth] tiangolo/uvicorn-gunicorn-fastapi:pull token for registry-1.docker.io                                                                                0.0s
 => [1/7] FROM docker.io/tiangolo/uvicorn-gunicorn-fastapi:python3.8-alpine3.10@sha256:c9102d06868412c85f81646ad541f4a0c889fdceb4296f27f4f197039f1a49eb                0.0s
 => [internal] load build context                                                                                0.1s
 => => transferring context: 115.72kB                                                                                0.1s
 => CACHED [2/7] WORKDIR /app                                                                                0.0s
 => CACHED [3/7] COPY app/requirements.txt /app/requirements.txt                                                                                0.0s
 => CACHED [4/7] RUN set -eux     && apk add --no-cache --virtual .build-deps build-base postgresql-dev gcc libffi-dev libressl-dev musl-dev     && pip install -r /a  0.0s
 => CACHED [5/7] COPY app /app/app                                                                                0.0s
 => CACHED [6/7] COPY alembic.ini /app/alembic.ini                                                                                0.0s
 => CACHED [7/7] COPY alembic /app/alembic                                                                                0.0s
 => exporting to image                                                                                0.0s
 => => exporting layers                                                                                0.0s
 => => writing image sha256:b1c69c24135494447e6dba3f957cae2aaa16e0dee6854149de6798180dbc9fd6                                                                           0.0s
 => => naming to docker.io/library/pyro-api_backend                                                                                0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
Building proxy
[+] Building 3.5s (8/8) FINISHED
 => [internal] load build definition from Dockerfile                                                                                0.1s
 => => transferring dockerfile: 36B                                                                                0.1s
 => [internal] load .dockerignore                                                                                0.1s
 => => transferring context: 2B                                                                                0.1s
 => [internal] load metadata for docker.io/library/nginx:latest                                                                                3.3s
 => [auth] library/nginx:pull token for registry-1.docker.io                                                                                0.0s
 => [internal] load build context                                                                                0.0s
 => => transferring context: 32B                                                                                0.0s
 => [1/2] FROM docker.io/library/nginx:latest@sha256:943c25b4b66b332184d5ba6bb18234273551593016c0e0ae906bab111548239f                                                  0.0s
 => CACHED [2/2] COPY nginx.conf /etc/nginx/nginx.conf                                                                                0.0s
 => exporting to image                                                                                0.0s
 => => exporting layers                                                                                0.0s
 => => writing image sha256:450d2e9a5fd5ce5dc21221620f1ae60df000ce00cf7a1a0de8c779212a8d5e3d                                                                           0.0s
 => => naming to docker.io/library/pyro-api_proxy                                                                                0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
Creating pyro-api_db_1 ... done
Creating pyro-api_backend_1 ... done
Creating pyro-api_proxy_1   ... done

Hey there :)
Thanks for reporting this!
So I can see two topics here:

about curl, there is no content is the server didn't start / crashed. So that check should be equivalent to the server start (and we cannot draft a unittest for the exact HTML that will be spit out)
regarding "Running the docker compose locally does not start the API correctly", in your PR description you raise a question about Qarnot. There are two underlying questions:

first, the PR description doesn't show where the process fails? :thinking: The console snippet you shared doesn't indicate whether the containers stay up afterwards (perhaps add the docker logs so we can investigate)
second, about Qarnot & configs, as specified here yes there are some variables that need to be set for the service to work :sweat_smile:

Let me know if there are still some dark areas :)

Thanks for the reply @frgfm .

I agree we cannot check the exact content but checking if the server spits some HTML or nothing should be enough
The part of the README that you mention comes after the Quick Tour, so to me the comment on #231 is valid. And the issue seems to come from the connection to Qarnot indeed:

(pyro-api) blenzi@dphpmcc213:pyro-api$ docker compose ps
WARN[0000] The "QARNOT_TOKEN" variable is not set. Defaulting to a blank string.
WARN[0000] The "BUCKET_NAME" variable is not set. Defaulting to a blank string.
WARN[0000] The "BUCKET_MEDIA_FOLDER" variable is not set. Defaulting to a blank string.
WARN[0000] The "S3_ENDPOINT_URL" variable is not set. Defaulting to a blank string.
WARN[0000] The "S3_ACCESS_KEY" variable is not set. Defaulting to a blank string.
WARN[0000] The "S3_SECRET_KEY" variable is not set. Defaulting to a blank string.
WARN[0000] The "S3_REGION" variable is not set. Defaulting to a blank string.
WARN[0000] The "SENTRY_DSN" variable is not set. Defaulting to a blank string.
WARN[0000] The "SENTRY_SERVER_NAME" variable is not set. Defaulting to a blank string.
NAME                 COMMAND                  SERVICE             STATUS              PORTS
pyro-api_backend_1   "uvicorn app.main:ap…"   backend             running             <IP_ADDRESS>:8080->8080/tcp
pyro-api_db_1        "docker-entrypoint.s…"   db                  running             <IP_ADDRESS>:5432->5432/tcp
pyro-api_proxy_1     "/docker-entrypoint.…"   proxy               running             <IP_ADDRESS>:80->80/tcp, <IP_ADDRESS>:443->443/tcp

(pyro-api) blenzi@dphpmcc213:pyro-api$ docker compose logs --follow
WARN[0000] The "QARNOT_TOKEN" variable is not set. Defaulting to a blank string.
WARN[0000] The "BUCKET_NAME" variable is not set. Defaulting to a blank string.
WARN[0000] The "BUCKET_MEDIA_FOLDER" variable is not set. Defaulting to a blank string.
WARN[0000] The "S3_ENDPOINT_URL" variable is not set. Defaulting to a blank string.
WARN[0000] The "S3_ACCESS_KEY" variable is not set. Defaulting to a blank string.
WARN[0000] The "S3_SECRET_KEY" variable is not set. Defaulting to a blank string.
WARN[0000] The "S3_REGION" variable is not set. Defaulting to a blank string.
WARN[0000] The "SENTRY_DSN" variable is not set. Defaulting to a blank string.
WARN[0000] The "SENTRY_SERVER_NAME" variable is not set. Defaulting to a blank string.
backend_1  | INFO:     Will watch for changes in these directories: ['/app']
backend_1  | INFO:     Uvicorn running on http://<IP_ADDRESS>:8080 (Press CTRL+C to quit)
backend_1  | INFO:     Started reloader process [1] using WatchGod
backend_1  | Process SpawnProcess-1:
backend_1  | Traceback (most recent call last):
backend_1  |   File "/usr/local/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
backend_1  |     self.run()
backend_1  |   File "/usr/local/lib/python3.8/multiprocessing/process.py", line 108, in run
backend_1  |     self._target(*self._args, **self._kwargs)
backend_1  |   File "/usr/local/lib/python3.8/site-packages/uvicorn/_subprocess.py", line 76, in subprocess_started
backend_1  |     target(sockets=sockets)
backend_1  |   File "/usr/local/lib/python3.8/site-packages/uvicorn/server.py", line 60, in run
backend_1  |     return asyncio.run(self.serve(sockets=sockets))
backend_1  |   File "/usr/local/lib/python3.8/asyncio/runners.py", line 43, in run
backend_1  |     return loop.run_until_complete(main)
backend_1  |   File "uvloop/loop.pyx", line 1501, in uvloop.loop.Loop.run_until_complete
backend_1  |   File "/usr/local/lib/python3.8/site-packages/uvicorn/server.py", line 67, in serve
backend_1  |     config.load()
backend_1  |   File "/usr/local/lib/python3.8/site-packages/uvicorn/config.py", line 479, in load
backend_1  |     self.loaded_app = import_from_string(self.app)
backend_1  |   File "/usr/local/lib/python3.8/site-packages/uvicorn/importer.py", line 21, in import_from_string
backend_1  |     module = importlib.import_module(module_str)
backend_1  |   File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
backend_1  |     return _bootstrap._gcd_import(name[level:], package, level)
backend_1  |   File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
backend_1  |   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
backend_1  |   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
backend_1  |   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
backend_1  |   File "<frozen importlib._bootstrap_external>", line 783, in exec_module
backend_1  |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
backend_1  |   File "./app/main.py", line 15, in <module>
backend_1  |     from app.api.routes import (
backend_1  |   File "./app/api/routes/media.py", line 21, in <module>
backend_1  |     from app.services import bucket_service, resolve_bucket_key
backend_1  |   File "./app/services/__init__.py", line 1, in <module>
backend_1  |     from .services import *
backend_1  |   File "./app/services/services.py", line 11, in <module>
backend_1  |     bucket_service = QarnotBucket()
backend_1  |   File "./app/services/bucket/s3.py", line 28, in __init__
backend_1  |     self._connect_to_storage()
backend_1  |   File "./app/services/bucket/qarnot.py", line 25, in _connect_to_storage
backend_1  |     self._s3 = Connection(client_token=cfg.QARNOT_TOKEN)._s3client
backend_1  |   File "/usr/local/lib/python3.8/site-packages/qarnot/connection.py", line 188, in __init__
backend_1  |     user = self.user_info
backend_1  |   File "/usr/local/lib/python3.8/site-packages/qarnot/connection.py", line 329, in user_info
backend_1  |     resp = self._get(get_url('user'))
backend_1  |   File "/usr/local/lib/python3.8/site-packages/qarnot/_retry.py", line 29, in _with_retry
backend_1  |     raise UnauthorizedException()
backend_1  | qarnot.exceptions.UnauthorizedException
db_1       |
proxy_1    | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
proxy_1    | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
proxy_1    | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
proxy_1    | 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
proxy_1    | 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
proxy_1    | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
proxy_1    | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
proxy_1    | /docker-entrypoint.sh: Configuration complete; ready for start up
db_1       | PostgreSQL Database directory appears to contain a database; Skipping initialization
db_1       |
db_1       | 2022-11-09 22:47:46.049 UTC [1] LOG:  starting PostgreSQL 12.1 on x86_64-pc-linux-musl, compiled by gcc (Alpine 9.2.0) 9.2.0, 64-bit
db_1       | 2022-11-09 22:47:46.049 UTC [1] LOG:  listening on IPv4 address "<IP_ADDRESS>", port 5432
db_1       | 2022-11-09 22:47:46.049 UTC [1] LOG:  listening on IPv6 address "::", port 5432
db_1       | 2022-11-09 22:47:46.051 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1       | 2022-11-09 22:47:46.068 UTC [21] LOG:  database system was shut down at 2022-11-08 22:51:55 UTC
db_1       | 2022-11-09 22:47:46.072 UTC [1] LOG:  database system is ready to accept connections

Oh if that's about the order of sections in the README, that could be an improvement. The thing is that quick tour should provide a quick overlook, and subtle setup/tricks come later (such as the setup of storage connection).
So are we talking about a documentation problem? or an actual codebase bug?

If that works for you, it is probably only a documentation problem, although I cannot test it :)

What do you mean?
My point is that:

if going through the steps in the "Setup" section before running the service solves the issue
then it's only a section ordering problem
if the problem remains, then the issue is of another nature and we need to address it :sweat_smile:

So, what do you mean by "I cannot test it"? With the .env set, you can't run the service? :thinking: (it's also a major issue considering the CI is doing it at every PR, so if a user cannot, there is a misalignment between the CI & the actual behaviour)

I created an account in Qarnot and now I can run it and see the API doc. The next step would be to know how to authenticate and use the API.
So yes, it is a documentation issue, and it would be nice to guide the developers, either inverting the sections or adding a link to anticipate how the configuration works. Plus explicitly saying what is needed (accounts, ...) and how to run.

Closing this since this has been solved :)


fix(plugin-theme-data): fix theme-data sensitive with route object

useThemeLocaleData() is sensitive with route object (including route.hash and route.path), so everything based on it will be recalculated when scrolling page and switching pages in same locale.
This issue is related to https://github.com/vuepress/vuepress-next/pull/1253, while that fix is valid for routeLocale itself, but not hacky way plugin-theme-data is doing. This PR adds extract check by watching routeLocale ref on app._context
This bug has serious performance impact on large sites, please merge it and release new version.

Any update with this?

Closed by 9d85d4f5b4fe0bc4bca392b466e168240d156dd3


Can I help maintain this package?

Hi there!
Thank you very much for this package. I'd like to make use of it in my own projects, but it looks like the package on crates.io is not in sync with the code in this repository. I can totally understand the difficulty of maintaining lots of packages, which is why I'd like to propose becoming a maintainer of this package.
Let me know what you think!

Well, I've just taken a quick look at the package and its implementation is a bit different than I thought. The offer still stands, though :slightly_smiling_face:

Thanks for offering to help! This crate is very small though, so there is not a lot to do.

it looks like the package on crates.io is not in sync with the code in this repository

Isn’t it? https://crates.io/crates/utf-8/0.7.5 was published on 2019-01-07 which is also the date of the latest commit in https://github.com/SimonSapin/rust-utf8/commits/master

the implementation is a bit different than I thought

What were you expecting?

Hi, oh sorry, that's my mistake! Was a bit too quick. Ion't believe I can be of any value then.

What were you expecting?

I thought to find a naive implementation of the algorithm, but it seems like you leverage the existing std features. Pretty neat I must say!
I'll close this issue.


Improve subject regex

#Motivation

Up to now getting the channel or group id from a subject fails if the [#...] part is not at the beginning of the subject
Thus, emails which are replied to are delivered to the default group instead of delivering it to the specified group
E.g. Re: [#...] is problematic

Solution

Allow arbitrary letters and signs and colons in front of the channel or group definition in the subject line.

Thanks @mharrend !
I didn't test, but removing the ^\s*? from the beginning of the regex don't work?
var channelRegex = regexp.MustCompile(`\[\s*?([#@][A-Za-z0-9\-_]*)\s*?\]`)

Other thing is to add more tests in mattermail_test.go to validate this.
If is possible stash your commits too ;)

Added this option in release 3.0.13


IE11: Code snippet minimum height makes horizontal scroll bar overflow

Windows is going to show scroll bars. But if you look at the focus state in MacOS Chrome you can the textarea is larger than it needs to be.

This can be cleaned up to look better in IE11.

Windows is going to show scroll bars. But if you look at the focus state in MacOS Chrome you can the textarea is larger than it needs to be.

@mattrosno The text area is larger so that the scrollbar would be below the code snippet container (as per the design specs for it). Would adding something like outline: none; for its focus style fix that? The text isn't focusable in Chrome or Safari so users can't really see that it's taller than the container.

@jnm2377 per that first screenshot, it's not consistent between code-example and bx--snippet. Since scrollbar sizes are different per OS and browser, I'd keep it simple and not have the focusable snippet container overflow outside of the snippet element.


masterconfig maxperformance is not working

when i install it is just like normal tf2 shadow are enabled facial expression are enabled gibs ragdoll everything is enabled please help

try this, and also in launch options set dxlevel to 95
https://www.youtube.com/watch?v=6S8J07C1OXw&feature=youtu.be


Fix conda installs on travis

and re-enable master branch merges requiring travis passing

See https://travis-ci.org/quantopian/zipline/builds/316621178 for breakage info

This tentatively appears to have been fixed by https://github.com/quantopian/zipline/commit/b5eaec6bf91b52f6ed2c860a48b20eaf28e97f97

Nice @ssanderson ! Updated branch protection. Closing for now.


Removed duplicate code

You should be creating PRs against main napalm repo and not against my repo.

Only your repo has the required functions and tests.
Do you want me to duplicate them or somehow make a friend?

Yes, you should duplicate/copy that as I am not working on that get_vlans() so your PRs would just get stranded in my repository/branch.
Regards, Kirk


Links are broken in the documentation

Hello,
I wanted to read the docs and understand how this new component creator works / behaves. However the wiki page links are broken (giving me 404).
Most of the links on the below page are broken.
https://github.com/Talend/components/wiki/4.-Component-Definition
Regards,
Balázs

Hello, thank you for the issue found.
I have updated this wiki page.
https://github.com/Talend/components/wiki/4.-Component-Definition
Regards,
Ivan


Alter varlink API for ListContainerMounts to return a map

We want to return a map of containermounts where the key is container
id and it points to the mountpath.
Issue #2215
Signed-off-by: baude<EMAIL_ADDRESS>

/lgtm


UI Tests

[ ] start with adding snapshots for style consistency
[ ] add workflow for UI tests

Create a new function view still has the card view with display: flex instead of display: block, snapshots + style rule tests could've spotted this


feat(firebase/rules): setup testing for firebase security rules

Addresses #688

This LGTM now

Great to have this finally working!

Yay 🎉


CME when breaking piles

https://gist.github.com/primetoxinz/b96c88a2574bae4b9c32fc09a20a6582

This looks like the multipart removed itself from the world while the world was still updating it. I don't think either of the try/catches in PartIngot would cause it since we iterate through like you're supposed to.

You saying this could be a direct multipart bug?

I wouldn't assume it just yet, but it is weird. The game crashes while the world is iterating over the tiles so I would assume something is modifying the tile during this process

it's not crashing while iterating over the tile, it's crashing while iterating over an entity of some sort

Tiles are entities(sorta) welcome to notch code

Scratch that you're right.

lol

in updateTrackedEntities something is removing from EntityTracker.trackedEntities

trace the remove call when the game crashes

more descriptive log https://gist.github.com/primetoxinz/3e3fedd379fbeeac3d6340951d2d937c

it's all the items that are being spawn

Its because you're spawning them on a seperate thread causing the game to add them to the world while its updating them

yep, so take this out of a separate thread?

i don't see why it needs to be in one in the first place so ues

I only put it in one because the placement was in one as well and used sleep to cause the delay

There's ways to do it without a pause or seperate threads.

But since you're using an iterator there shouldn't be a possibility of a CME as long as it all stays in the main thread

yep, it's fine how it is

I have an idea on how to do the whole delay thing nicely without using a seperate thread. I'll look into it when I get home tomorrow

Also would allow for variable timing on the delay like people seem to want


Use gulp-shell instead of gulp-bg

I am not able to run server-nodemon (on Windows) if the gulp-bg is used.

Steps to reproduce
Run gulp on Windows.
Expected Behavior
Should start este in development mode.
Actual Behavior
End with an error and the message does not help me. :)
[14:34:34] Requiring external module babel-core/register
(node:8860) fs: re-evaluating native module sources is not supported. If you are using the graceful-fs module, please update it to a more recent version.
[14:34:35] Using gulpfile E:\Projects\pixla\gui\www\gulpfile.babel.js
[14:34:35] Starting 'env'...
[14:34:35] Finished 'env' after 95 μs
[14:34:35] Starting 'server'...
[14:34:35] Starting 'server-hot'...
[bg] Starting node ./webpack/server
[14:34:35] Finished 'server-hot' after 35 ms
[14:34:35] Starting 'server-nodemon'...
[bg] Starting node_modules\.bin\nodemon --ignore webpack-assets.json src\js\server
[14:34:35] Finished 'server-nodemon' after 1.56 ms
[14:34:35] Finished 'server' after 41 ms
[14:34:35] Starting 'default'...
[14:34:35] Finished 'default' after 1.43 μs
events.js:160
      throw er; // Unhandled 'error' event
      ^

Error: spawn node_modules\.bin\nodemon ENOENT
    at exports._errnoException (util.js:953:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:182:32)
    at onErrorNT (internal/child_process.js:348:16)
    at _combinedTickCallback (internal/process/next_tick.js:74:11)
    at process._tickCallback (internal/process/next_tick.js:98:9)
    at Function.Module.runMain (module.js:577:11)
    at startup (node.js:160:18)
    at node.js:449:3

@tomaskulich Can you please fix it? The bug is confirmed by me. I just installed last Node 5, did clean checkout, then npm... Even gulp-shell for windows only is good. Thank you!

I'll see to it.

@tomaskulich Can you fix it asap?
I've opened PR, could you please check if it works for you? Similar approach have fixed this on one (other) windows computer (and other project, we've bumped into the same issue almost simultaneously to this ticket).
Sadly, I'm not able to do more testing right now.
If you don't like how it is currently implemented, feel free to revert to using gulp-shell (or, I can do it, if you don't have time for that).

I cleaned the code and tested it both on Mac and Windows, now it works. Thank you very much sir :-)


Give redis-multi the ability to use cloud networks

best_ip_for() returns service net IP addresses
https://github.com/jarosser06/chef-sugar-rackspace
Gives the ability to use private networks

I'm concerned that community / non-Rackspace users would end up hitting some of the fail calls in chef-sugar-rackspace, which fail if cloud networks are not present. How about the ability to pass a block to redis-multi to use any code to get the IP of another node? Then the caller could simply pass best_rackspace_ip_for as the block.

Perhaps we could just do cloud_networks() ourselves and if it's result is empty use best_ip_for instead of best_rackspace_ip_for


compile: add result in the infinite loop is wrong

What version of Go are you using (go version)?

$ go version
go version devel go1.17-4a7effa418 Wed Apr 28 14:01:59 2021 +0000 darwin/amd64

Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/leonardwang/Library/Caches/go-build"
GOENV="/Users/leonardwang/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/leonardwang/Project/GOPATH/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/leonardwang/Project/GOPATH"
GOPRIVATE=""
GOPROXY="https://goproxy.io,direct"
GOROOT="/Users/leonardwang/Local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/Users/leonardwang/Local/go/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="devel go1.17-4a7effa418 Wed Apr 28 14:01:59 2021 +0000"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/leonardwang/Project/GOPATH/src/github.com/WangLeonard/gostudy/0419/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/1z/j7mt1cf9537cnh20_8tj4n7m0000gn/T/go-build1160547914=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?

package main

import (
	"fmt"
	"time"
)

func main() {
	var x int64 = 0
	for i := 0; i < 20; i++ {
		go func() {
			for {
				x++
			}
		}()
	}
	time.Sleep(time.Second * 10)
	fmt.Println(x)
}

I know this example may not be appropriate, there is a data rece
But it always prints 0
go build -gcflags="-N -l -S -m=2" ./main.go
"".main.func1 STEXT nosplit size=8 args=0x8 locals=0x0 funcid=0x0
        0x0000 00000 (main.go:11)     TEXT    "".main.func1(SB), NOSPLIT|ABIInternal, $0-8
        0x0000 00000 (main.go:11)     FUNCDATA        $0, gclocals·2a5305abe05176240e61b8620e19a815(SB)
        0x0000 00000 (main.go:11)     FUNCDATA        $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
        0x0000 00000 (main.go:12)     JMP     2
        0x0002 00002 (main.go:14)     JMP     4
        0x0004 00004 (main.go:14)     JMP     6
        0x0006 00006 (main.go:14)     JMP     2

In the assembly code of go func,
It's just jmp, but no add.
I add some extra code to go func, such as print, or modifying it to atomic, it will not print 0 anymore.
What did you expect to see?
not 0
What did you see instead?
0

A program with a data race in it is not a valid Go program and it could do anything. In this case, it look like the compiler decided that it is allowed to remove the writes to x, so the program will print 0. We usually don't consider this kind of issues (of a racy program) as bugs.

In fact, it can be reproduced like this. Is this also considered to be a race?
func main() {
	var x int64 = 0
	go func() {
		for {
			x++
		}
	}()
	time.Sleep(time.Second * 1)
	fmt.Println(x)
}

@WangLeonard you may be interetested in https://blog.golang.org/race-detector
Unlike many projects, the Go project does not use GitHub Issues for general discussion or asking questions. GitHub Issues are used for tracking bugs and proposals only.
For questions please refer to https://github.com/golang/go/wiki/Questions

Anything that running with go run -race test.go prints race detector warning is almost surely a race. As @seankhliao pointed out, the race-detector post on the blog may be interesting to you.

Anything that when run under go run -race test.go prints race detector warnings is almost surely a race. As @seankhliao pointed out, the race-detector post on the blog may be interesting to you.
Ok, after this example is modified, it is confirmed that data race still exists( use go run -race test.go).
Optimizing undefined behavior also looks fine.
Thank you. @ALTree  @seankhliao

If you are really interested in understanding the underlying formalism that explains what a race is in Go, see https://golang.org/ref/mem.


Running process in the background

In my pipeline, I am trying to spawn new agents. To do so, my environment hook looks like this:
#!/bin/bash

set -uo pipefail

buildkite-agent start --config buildkite-agent.cfg

This works fine. A new agent is now running in the same machine of the currently running agent. However, the pipeline keeps hanging as the process is running. Therefore I make it run as a background process, like this: buildkite-agent start --config buildkite-agent.cfg &
Then I do ps aux | grep buildkite-agentwithin the hook and the new agent is there. But as soon as the execution of the hook ends, so does the agent I just spawn. The process does not seem to live after the full execution of the hook. Is this an expected behavior? If so, is there a workaround for this?

This sounds brain-bending! Can you tell us a bit more about what problem you are trying to solve with dynamically spawning agents from another agent?

The process does not seem to live after the full execution of the hook. Is this an expected behavior? If so, is there a workaround for this?

This is how shells work! When they exit they send a SIGHUP to child processes. If you REALLY wanted the spawned agents to survive you could use the [nohup](https://en.wikipedia.org/wiki/Nohup) utility that is designed for specifically this usecase.

So basically, I don't want each user to be able to run every command they want within the agent. And whitelisting these commands is also an exhaustive amount of work. Therefore, in the environments hook, I dynamically spawn an agent running under the user. That way, the user privileges are left to the OS the agent is running and not to the agent itself. That was my idea..

I am now using the nohup. It works. I now have a running agent spawned in the pipeline creation step. The I then have to steps:

I upload an artifact in the new agent
I download the artifact in the new agent

However I get an error in the second step:
```FATAL  Missing artifact download path. See: `buildkite-agent artifact download --help````
According to the documentation, "The buildkite-agent artifact download command only works within the context of a running build" which is true, these two steps are part of the same build.

That's a really interesting idea @rena2damas! I'd never considered dropping user privileges per-job.
Sounds like it would be a perfect fit for the [bootstrap-script](buildkite-agent bootstrap script) configuration option. The agent listens for work and then runs a sub-process for each job. This used to be a bash script, but it's now a sub-command of the buildkite-agent binary. This makes for a perfect extension point for a wrapper around the whole job execution process.
Say if you had a script like drop-agent-privs.sh that you set as the bootstrap-script, you could do something like:
#!/bin/bash
set -euo pipefail

case "$BUILDKITE_BUILD_CREATOR_EMAIL" in
<EMAIL_ADDRESS>  echo "~~~ Executing bootstrap as lachlan"
  sudo -u lachlan -g buildkite-agent --preserve-env -- buildkite-agent bootstrap
  ;;
*)
  echo "No user found for $BUILDKITE_BUILD_CREATOR_EMAIL"
  exit 1
  ;;
esac

I hope that helps!

Another trick along these lines is running each bootstrap inside a docker container, which you could apply a similar approach to:
https://github.com/buildkite/docker-bootstrap-example

There's also another doc I just remembered, which might be of use @rena2damas:
https://buildkite.com/docs/agent/v3/securing#customizing-the-bootstrap
If this is a useful approach for some situations, it could be a good example to add to that Securing your Buildkite Agent guide. We'll see how you go!

Hi guys,
thank you so much for the suggestions. I ended up following the suggestion from @lox . I wrapped the bootstrap execution in my own script. I then have a bootstrap-wrapper script:
sudo -u $username -E /bin/bash -i -c buildkite-agent bootstrap

Is it something we should consider adding to the "Securing" guide do you think?

I found this approach particularly useful if you want to run your job with the same privileges as the user that is triggering the pipeline. That way you free yourself from whitelisting the shell commands the user allowed to run in the machine the agent is running on.

Guys, do come up with a way to identify which step is running in runtime? Let's say that in my own bootstrap script bootstrap-wrapper (the same mentioned above), I want to perform a certain action only if the step running is the pipeline submission. I went through the environment variables and I did not find anything useful except for the BUILDKITE_COMMAND.
[...]
if [ "${BUILDKITE_COMMAND}" == "buildkite-agent pipeline upload .buildkite/pipeline.yml" ]; then
    # Some other action
fi
[...]

Is there any prettier way to check which of the steps is currently running?

There is an id attribute you can set on a step, and it becomes available as the env var BUILDKITE_STEP_IDENTIFIER — perhaps that’s better suited?

That seems perfect :) thank you

Hey @toolmantim . I just gave it a try to that id attribute. That would have been great if you could not assign the same id to different steps. The thing is that I want to make skip command validation only in the pipeline build step. So a pseudo code that represents this, would be like:
if this is pipeline build step:
   skip command validation
otherwise
    validate commands whitelisting

If I use id to run that verification, then another user can simply add the same id to be able to skip command validation process in order to run eventual malicious code. Shouldn't it be ensured that id is unique among the steps of the pipeline?


Add playsinline to make videos work on mobile (for Learning from Language blog post)

this should now be live.


feat: wrap vue web app in electron

Signed-off-by: ShubhamPalriwala<EMAIL_ADDRESS>Summary
Wraps the existing Vue web app using the electron-builder vue plugin.
Steps Used:
pnpm install vue-cli-plugin-electron-builder
vue add electron-builder
yarn electron:serve (To start dev mode)

Demo:
Demo Video
Description for the changelog
Fixes #334

Hello @ShubhamPalriwala - looks good and I will checkout the code and run it
Your editor has reformatted the package.json to have indents of 4 spaces, but we want to keep to indents of 2 spaces - could you go back to 2 space indent for this file please? Thanks - and I will have a look at the desktop version

Oh! Sorry for the trouble! I've pushed another commit with the fix in tab size. Lmk if you want me to squash both of them into 1 when you have tested it.
You can test the the feature using:
yarn electron:build: To build the app (Production),
yarn electron:serve: To run the app (Development),

This is looking great, thanks so much for tackling this one @ShubhamPalriwala !
I think it'd be best if we were to remove the need to run vue add electron-builder.  I didn't read your clearly written instructions before attempting to run it, and ran into an error. :sweat_smile: I was able to electron:serve (without running the vue cli command) by adding electron-builder as a dev dependency.  This would just eliminate a step for anyone who tries to build/run locally in the future.  I don't think we would want to utilize a pre-install script or similar, as that might add some overhead to the docker builds.  This is not critical, just my thoughts!
I tested on Ubuntu, and I'll have a check on Mac/Windows in the next day or two just to confirm.  I wouldn't let that hold this up though, as it's a new feature and we can raise bugs if anything breaks.
Again, awesome work @ShubhamPalriwala!

I think this is only wrapping td.vue - we also need td.server. I can look into this if you like @ShubhamPalriwala ?

I think this is only wrapping td.vue - we also need td.server. I can look into this if you like @ShubhamPalriwala ? I think others have the same problem : https://stackoverflow.com/questions/69322243/electron-building-issue-for-server-along-with-the-front-end
when running command v2-electron/td.vue$ yarn electron:serve and accessing github we get
Proxy error: Could not proxy request /api/login/github from localhost:8080 to http://localhost:3000.
See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ECONNREFUSED).

If I first run the server from the command line with v2-electron$ npm run dev:server then the v2-electron/td.vue$ yarn electron:serve can access github as expected

My original plan was to add some wrapping to the auth methods to lock it down to local only when it's running in electron.  I do have a selector in td.vue somewhere to determine if it's running in an electron instance, it's just un-tested and not implemented yet.
We don't have to do it that way though, we could wrap the server in electron as well.  I did some really light research on it a while ago, but haven't ever actually done it.
All that said, that feels like work for another day.  This is a huuuuuuge step forward and great start. <3

This is looking great, thanks so much for tackling this one @ShubhamPalriwala !
I think it'd be best if we were to remove the need to run vue add electron-builder. I didn't read your clearly written instructions before attempting to run it, and ran into an error. sweat_smile I was able to electron:serve (without running the vue cli command) by adding electron-builder as a dev dependency. This would just eliminate a step for anyone who tries to build/run locally in the future. I don't think we would want to utilize a pre-install script or similar, as that might add some overhead to the docker builds. This is not critical, just my thoughts!
I tested on Ubuntu, and I'll have a check on Mac/Windows in the next day or two just to confirm. I wouldn't let that hold this up though, as it's a new feature and we can raise bugs if anything breaks.
Again, awesome work @ShubhamPalriwala!

I am totally in for anything that makes the user's life easier. I have added the electron-builder as a dev dependency and tested the same. Thanks for the quick feedback!

Hello @ShubhamPalriwala - this is a great first step. I had some comments about the default names / package revisions, if you could have a look at them.
The electron tests did not run for me:

 FAIL  tests/unit/electron.spec.js (55.769s)
  ✕ Window Loads Properly (50026ms)

  ● Window Loads Properly

    : Timeout - Async callback was not invoked within the 50000ms timeout specified by jest.setTimeout.Timeout - Async callback was not invoked within the 50000ms timeout specified by jest.setTimeout.Error:

       6 | jest.setTimeout(50000);
       7 |
    >  8 | test('Window Loads Properly', async () => {
         | ^
       9 |     // Wait for dev server to start
      10 |     const { app, stopServe } = await testWithSpectron(spectron);
      11 |     const win = app.browserWindow;

      at new Spec (node_modules/.pnpm/jest-jasmine2@24.9.0/node_modules/jest-jasmine2/build/jasmine/Spec.js:116:22)
      at Object.<anonymous> (tests/unit/electron.spec.js:8:1)

I'll take a look at this and push a fix for the tests. Thank you for pointing this out, really sorry I missed it.

Pushed a commit w all the suggestions incorporated till now. Only thing left is the Electron test issue for which I have opened an issue as I saw a lot of people facing the same issue but none of their solutions worked for us.
Waiting for the response for it here

If you are fine with adding the test file later then I can remove the failing test file and then we can merge it!

All done, thanks again @ShubhamPalriwala

Hey @jgadsden We had to remove the failing test case file :((
Should I open another PR removing that file?
Because right now the entire tests suite will fail due to this one test case

No problem - you should have write access? It will make sure we fix it ... I would rather fix it than remove it? I can look at getting the tests running this morning

Thank you so much! I'm waiting for the update here https://github.com/nklayman/vue-cli-plugin-electron-builder/issues/1657.
See if you can do anything!


Fix makefile go flags

The go flags were previously set prior to the run of the command,
resulting in two issues:

The exit code of the make build command was always 0 since -mod=mod
would always return 0
The go commands didn't actually receive the flag

Note that go mod and go fmt don't accept/honor the -mod flag, so the
GOFLAGS have been removed from those.
Verified with:
$ make ; echo $?
Makefile:29: warning: overriding recipe for target 'skopeo-push'
standard.mk:40: warning: ignoring old recipe for target 'skopeo-push'
go fmt ./...
go mod tidy
go build -mod=mod .
0

$ echo "BREAK" >> pkg/cloudclient/aws/aws.go

$ make ; echo $?


Fix plot surface

Reference issue
Fixes #7015
What does this implement/fix?
Removed config_opts from the call to plot_source_estimates(). Some functionalities that were once served by config_opts may have been lost. I don't know what use case this parameter was previously fulfilling.
Fixed an issue with transparency. Now, if transparent has been set to None when calling plot_source_estimates(), it is set to True (the default for plot_source_estimates()) before calling brain.add_data(**kwargs).
Adding PySurfer in the dependencies.

Travis gives two errors:
1 - ModuleNotFoundError: No module named 'vtk'
2 - KeyError: 'Key "SUBJECTS_DIR" not found in the environment or in the mne-python [...]
These two errors seem to be associated with setting up continuous integration so that it manages gracefully the dependencies of PySurfer. Not sure how to handle these but I am sure some of you have experience with these issues given the overlap in developers involved in Python-MNE and PySurfer.

The CI error is unrelated to this PR. It failed while reading and H5 file. If you have no further comments, I seem ready to merge.

@christian-oreilly can you rebase and fix conflicts. CIs should come back green again.

@christian-oreilly something bad happened in your rebase. I don't know how this happened.
 I am not a git wiz. I used
git branch --set-upstream-to=origin/master fix-plot-surface
git pull --rebase
# fix conflict
git rebase --continue
# The push in the banch was failing, so I further did
git pull christian-fork fix-plot-surface  --rebase
git rebase --continue
# fix conflict
git push christian-fork

please revert these changes to see if CIs complain

@agramfort What change are you refering to specifically? The rebase?

@agramfort All green!

thx @christian-oreilly
the transparent issue is fine. Our code is not DRY but it works


Mobile type format for MD region

version
"giggsey/libphonenumber-for-php":"7.0.2"
http://giggsey.com/libphonenumber/?phonenumber=%2B373+68+111+111&country=MD&language=&region=MD
show (it's mobile type)
+373 681 11 111
must be formatted as: +373 68 111 111
For local (landline) phonenumber - all good
http://giggsey.com/libphonenumber/?phonenumber=%2B373 22 111 111&country=MD&language=&region=MD

What type of format does AsYouTypeFornatter return? For example, a number "011234567" in Slovenia, PhoneNumberUtil.format(number, PhoneNumberFormat.NATIONAL) will return "(01) 123 45 67", but AsYouTypeFormatter will format it to "01 123 45 67"(without brackets).

Hi ruscon, can you provide us with evidence that mobile numbers in Moldova must be formatted the same as landline numbers?
The libphonenumber demo is at http://libphonenumber.appspot.com/. We don't modify the code for http://giggsey.com/libphonenumber. If you need the PHP libphonenumber updated please file a similar bug at https://github.com/giggsey/libphonenumber-for-php.

Hi @keghani, you can see formats in wiki
https://en.wikipedia.org/wiki/Telephone_numbers_in_Moldova
0-xx-xx-xx-xx call between localities and mobile phone companies
+373-xx-xx-xx-xx call to Moldova from abroad

I can't see anything on that page that suggests that mobile numbers must be formatted as
+373 xx xxx xxx
If I understand correctly that's what you're claiming by this issue.

Yep, thats the problem, any Moldavian phone number in international format, should be formated as
"+373 xx xxx xxx" or "+373 xx xx xx xx", first two digits after the country code it is the code of mobile operator or city (landline).

The National Regulatory Agency for Electronic Communications and Information Technology of the Republic of Moldova appears to treat the first group as a block of 3 rather than 2:
http://en.anrceti.md/resurse_numerotare_tel_mobila
It might be that either 3 or 2 digits are acceptable, but unless there's official governmental documentation saying otherwise, there isn't a good reason to change this.

ok, thx


Feature proposal: waitForAJAX could take AJAX URL as param

What are you trying to achieve?
Improved assertion if codecept can wait for a particular AJAX call.
What do you get instead?
waitForAJAX takes only interval as parameter for now which is helping but seems more relevant if it can wait for a particular network call rather than interval.

The issue can be closed as the API is not relevant to codeceptJS


Error: uninitialized constant Homebrew::Service

I am experiencing a similar issue with Backrest (provided in a third-party tap)
What I'm doing
$ brew services restart garethgeorge/backrest-tap/backrest

Error: uninitialized constant Homebrew::Service
Warning: Removed Sorbet lines from backtrace!
/opt/homebrew/Library/Homebrew/formula.rb:1264:in `service'
/opt/homebrew/Library/Homebrew/formula.rb:1235:in `plist_name'
/opt/homebrew/Library/Taps/homebrew/homebrew-services/lib/service/formula_wrapper.rb:49:in `service_name'
/opt/homebrew/Library/Taps/homebrew/homebrew-services/lib/service/formula_wrapper.rb:211:in `status_output_success_type'
/opt/homebrew/Library/Taps/homebrew/homebrew-services/lib/service/formula_wrapper.rb:104:in `loaded?'
/opt/homebrew/Library/Taps/homebrew/homebrew-services/lib/service/commands/restart.rb:21:in `block in run'
/opt/homebrew/Library/Taps/homebrew/homebrew-services/lib/service/commands/restart.rb:20:in `each'
/opt/homebrew/Library/Taps/homebrew/homebrew-services/lib/service/commands/restart.rb:20:in `run'
/opt/homebrew/Library/Taps/homebrew/homebrew-services/cmd/services.rb:135:in `run'
/opt/homebrew/Library/Homebrew/brew.rb:95:in `<main>'
If reporting this issue please do so at (not Homebrew/brew or Homebrew/homebrew-core):
  https://github.com/homebrew/homebrew-services/issues/new

with --debug --verbose
/opt/homebrew/Library/Homebrew/brew.rb (Formulary::FromNameLoader): loading backrest
Error: uninitialized constant Homebrew::Service
/opt/homebrew/Library/Homebrew/formula.rb:1264:in `service'
/opt/homebrew/Library/Homebrew/formula.rb:1235:in `plist_name'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.3.0/gems/sorbet-runtime-0.5.11481/lib/types/private/methods/call_validation.rb:270:in `bind_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.3.0/gems/sorbet-runtime-0.5.11481/lib/types/private/methods/call_validation.rb:270:in `validate_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.3.0/gems/sorbet-runtime-0.5.11481/lib/types/private/methods/_methods.rb:277:in `block in _on_method_added'
/opt/homebrew/Library/Taps/homebrew/homebrew-services/lib/service/formula_wrapper.rb:49:in `service_name'
/opt/homebrew/Library/Taps/homebrew/homebrew-services/lib/service/formula_wrapper.rb:211:in `status_output_success_type'
/opt/homebrew/Library/Taps/homebrew/homebrew-services/lib/service/formula_wrapper.rb:104:in `loaded?'
/opt/homebrew/Library/Taps/homebrew/homebrew-services/lib/service/commands/restart.rb:21:in `block in run'
/opt/homebrew/Library/Taps/homebrew/homebrew-services/lib/service/commands/restart.rb:20:in `each'
/opt/homebrew/Library/Taps/homebrew/homebrew-services/lib/service/commands/restart.rb:20:in `run'
/opt/homebrew/Library/Taps/homebrew/homebrew-services/cmd/services.rb:135:in `run'
/opt/homebrew/Library/Homebrew/brew.rb:95:in `<main>'
If reporting this issue please do so at (not Homebrew/brew or Homebrew/homebrew-core):
  https://github.com/homebrew/homebrew-services/issues/new

brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: Some installed casks are deprecated or disabled.
You should find replacements for the following casks:
  schildichat

Warning: Some installed formulae are deprecated or disabled.
You should find replacements for the following formulae:
  python-packaging

None of the packages above should matter here, as they're not dependencies of this Formula
brew config
HOMEBREW_VERSION: 4.3.9-154-gb9da669
ORIGIN: https://github.com/Homebrew/brew
HEAD: b9da669ef25c7da0757f5ae1d418985b19efb321
Last commit: 14 minutes ago
Core tap HEAD: 25c2eae0b65332a1496be01e3ea968f631e373df
Core tap last commit: 35 minutes ago
Core tap JSON: 14 Jul 14:58 UTC
Core cask tap HEAD: 358947238dd8946bafd9ffca2d036b2aaa57a4f3
Core cask tap last commit: 49 minutes ago
Core cask tap JSON: 14 Jul 14:58 UTC
HOMEBREW_PREFIX: /opt/homebrew
HOMEBREW_BAT: set
HOMEBREW_BAT_THEME: OneHalfDark
HOMEBREW_BROWSER: open
HOMEBREW_CASK_OPTS: ["--no-quarantine"]
HOMEBREW_CLEANUP_MAX_AGE_DAYS: 30
HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS: 7
HOMEBREW_EDITOR: micro
HOMEBREW_MAKE_JOBS: 8
HOMEBREW_NO_ANALYTICS: set
HOMEBREW_NO_ENV_HINTS: set
HOMEBREW_NO_INSTALL_CLEANUP: set
HOMEBREW_SORBET_RUNTIME: set
Homebrew Ruby: 3.3.4 => /opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.3.4/bin/ruby
CPU: octa-core 64-bit arm_firestorm_icestorm
Clang: 15.0.0 build 1500
Git: 2.45.2 => /opt/homebrew/bin/git
Curl: 8.4.0 => /usr/bin/curl
macOS: 13.6.7-arm64
CLT: <IP_ADDRESS>.1.1700200546
Xcode: N/A
Rosetta 2: false

It is also worth mentioning that every brew services command causes this, including the one without any arguments

See also https://github.com/Homebrew/homebrew-core/issues/177327

See also Homebrew/homebrew-core#177327

So what should I do? brew update?

same error。

Warning: Calling brew services'. This command needs to be refactored, as it is written in a style that is deprecated! Use inherits from Homebrew::AbstractCommand' ( see https://docs.brew.sh/External-Commands ) instead.
Please report this issue to the Homebrew/homebrew-services tap, or even better, submit a PR to fix it:
/opt/homebrew/Library/Taps/homebrew/homebrew-services/cmd/services.rb:9

It's worked:
cd /usr/local/Homebrew/Library/Taps/homebrew/
rm -rf homebrew-services
brew tap homebrew/services


[DOCUMENTATION] InterruptionResponsiveness value scale

According to the description:
/// <summary>
/// If <see cref="Interruptible"/> is enabled, sets how responsive the interruption listener while waiting for keypress.
/// <para>If zero, this means instant, but causes 100% CPU usage.</para>
/// <para>If more than zero, this means that the listener will sleep for assigned number of seconds before detecting the next keys.</para>
/// <para>Use this carefully, because it can cause missed keys depending on the application.</para>
/// </summary>
public static int InterruptionResponsiveness { get; set; } = 0;

The value represents seconds.
But the usage:
Thread.Sleep(InterruptionResponsiveness);

Accepts milliseconds,

Thanks for reporting documentation problem! We'll be working on it shortly.

Fixed in commit https://github.com/Aptivi/ReadLine.Reboot/commit/c41a7b67b00bb113c05f5514bedd1063d6a11e14


dropdown menu - typo error in docs

Hello, I've noticed a typo error in dropdown-menu component documentation regarding events.
In documentation it is marked:

show.zf.dropdownMenu    Fires when the new dropdown pane is visible.
hide.zf.dropdownMenu     Fires when the open menus are closed.

instead events should be without CamelCase like this:
show.zf.dropdownmenu and hide.zf.dropdownmenu

Thanks for this report! Are you able to submit a Pull Request so we can update this quicker? Or hit https://github.com/zurb/foundation-sites/edit/master/docs/pages/dropdown-menu.md

Hello @rafibomb. I've tried to use the link you sent, but Preventing FOUC
is the last section in dropdown-menu.md. The typo I've noticed is in the JavaScript Reference / Events section. Where could I find that part to edit and make a PR?

Oh - gotcha. It's in the auto generated docs, so you can do this through traditional PR in the JS file:
https://github.com/zurb/foundation-sites/blob/develop/js/foundation.dropdownMenu.js#L310

The issue isn't with the JS file but with the formatJsEventName Foundation Docs helper: https://github.com/zurb/foundation-docs/blob/master/lib/handlebars/javascript.js#L109
And actually, this isn't even the problem.
--
The problem is some events are camelCased (down.zf.accordionMenu, up.zf.accordionMenu) but some other aren't (show.zf.dropdownmenu, hide.zf.dropdownmenu).
This is sometimes not even consistent inside components: click.zf.accordionMenu vs keydown.zf.accordionmenu
The formatJsEventName helper did his job if we want camelCased event names (e.g. event.zf.someThing).
I personally prefer camelCased event names (or maybe PascalCased) because it's more JS friendly but I guess we need to discuss this before modifying anything.
You may want to read this SO answer about JS event names convention (as defined by W3C): https://stackoverflow.com/a/19071821

Camel Case is the right case for JS... No questions about it
I concur with @Deckluhm !

@Deckluhm great clarification of the issue. I didn't notice that some events were camelCased and others weren't. Consistency should be applied, and my vote for camelCase as well!

We should close this issue by correctly camelCasing all the events, and duplicate the incorrectly cased events so that they log a console message that the event name has been changed. Let's get this in 6.5. /ht @colin-marshall for the fix

This will be fixed by https://github.com/zurb/foundation-docs/pull/24

@DanielRuf doesn't zurb/foundation-docs#24 only change the event name in the docs to be properly camel cased? The problem is there are inconsistencies in the JS code when it came to naming events.
See:
https://github.com/zurb/foundation-sites/blob/develop/js/foundation.dropdownMenu.js#L315
So the now the docs are going to display show.zf.dropdownMenu while the actual event is really still show.zf.dropdownmenu.

The new docs will also show show.zf.dropdownmenu which you can verify by applying the patch from the merged PR to node_modules/foundation-sites and running npm run deploy:docs.

They will all be lowercased like they are and always were internally triggered.

If the events in the js docs are not consistent yet, can you open an issue? We can then check together all trigger statements.

instead events should be without CamelCase like this:
show.zf.dropdownmenu and hide.zf.dropdownmenu

The title suggests something different.
How should we decide to go on? The formatJsEventName handlebars helper is meant to make it lowerCamelcased or just all lowercase?
https://github.com/zurb/foundation-docs/blob/master/lib/handlebars/javascript.js#L104

cc @ncoden

@ncoden are we having event names be all lower case or camel case? I noticed in the recent foundation-docs update that you are now using this.memberof to get the plugin name, which prints the event as camel case in the docs. The problem is we have events named inconsistently (some all lowercase like hide.zf.dropdownmenu) when they are triggered so they don't match the camel casing in the recent docs update.
Changing the name in the trigger to be camel case is somewhat of a breaking change, so I'm not sure where to go from here until we hit 6.5 where it's ok to break.

As far as I can see trigger in the components sometimes uses lowerCamelcase and sometimes lowercase.
See Dorpdown Menu show.zf.dropdownmenu vs Accordion Menu down.zf.accordionMenu

So It seems we have to revert the change from https://github.com/zurb/foundation-docs/pull/24, and change the triggered event name in Dropdown Menu and others.

Be consistent in the event naming is good, but not useful enough to be a breaking change, not in a pre-v7 version. Also I don't understand the issue with zurb/foundation-docs#24. Does the format helper make the event name or namespace incorrect ?

Hm, I'll check it. It seems only Dropdown Menu is the issue.

The change in the docs was correct. We just always kept the event names in the Dropdown Menu as they were and tried to solve it in the docs which was not right. I've created a PR to finally trigger the right event names in the Dropdown Menu component.
Sorry for the confusion.

Or should I move this to the v7 milestone?

@ncoden the docs change was fine overall, but it displays the dropdown menu event names camel cases when they are all lowercase.
For, now we could add a conditional to the formatJsEventName helper so that it changes only dropdown menu events to all lowercase.

I don’t see a problem with making it a breaking change in 6.5.

Ok I think I finally understand the problem:
For a plugin named:
title: Plugin Name

Event are described with:
// @event PluginName#eventname

And trigger:
.trigger('eventname.zf.pluginName')

But OffCanvas and DropdownMenu trigger x.zf.offcanvas and x.zf.dropdownmenu... So or the comment or the triggered event is incorrect.
According to the JSDoc documentation, @event expect a classname (so in PascalCase). But there is an additional parameter :event which allow to specify a "namespace". I am not able to figure out if it is an "event namespace" if it has a particular role within JSDoc.
So, or we continue to investigate on the namespace parameter, or we change the events to camel case. For the 2nd option, retrieve the event listeners to display a deprecation notice when the event is triggered. So we can trigger 2 events and only document new last one.
But honestly I don't think it worth it (to change code and add deprecation notices) for what is basically a documentation problem and a tiny inconsistency, not without v6.6 planned.

@ncoden quick and dirty fix for this so that docs match event triggers across the board is edit the formatJsEventName function in foundation-docs/lib/handlebars/javascript.js to this:
handlebars.registerHelper('formatJsEventName', function(name, title) {
  if (title === 'DropdownMenu' || title === 'OffCanvas') {
    title = title.toLowerCase();
  } else {
    title = title.charAt(0).toLowerCase() + title.slice(1);
  }
  return format('{0}.zf.{1}', [name, title.replace(/(-| )/, '')]);
});

@colin-marshall Hahaha
No.
Please, no.

Ya it sucks but it was just a temporary suggestion until you figure out the proper way to do it with JSDoc namespaces.

Best case: we use JSDoc namespaces. Worst case, we deprecate events and create lowercase ones.

At least, I fear so, we have to break something to be fully consistent in the future.

So after further investigations:

This is not a Documentation issue since this has been resolved in https://github.com/zurb/foundation-docs/pull/24. Dropdownmenu is fixed and only OffCanvas doc is out of date. It's only a consistency issue.
SuperCollider rely on an old version of jsdoc-api which does not support event namespaces, are JSDoc namespaces does not seem to have the same purpose as "jQuery event namespaces".

Also, since we are already deprecating events at https://github.com/zurb/foundation-sites/pull/10949, I think we can try to clean our whole event API for v6.5.0 without caring too much about backwards compatibility, as long as we provide a simple migration guide.

@DanielRuf What do you think ?
If we're all Ok with this you can continue your work on https://github.com/zurb/foundation-sites/pull/10965 (and add offCanvas and smoothScroll to it) 😉

I would finish the PR and also adjust the other two components to have some consistency so far.
For 6.5.0 we definitely need an overhauled event system and documentation with more consistent name schemes.


Validator#hasValue not judge the string is non blank

 Validator<Integer> pageNoV = ctx.queryParamAsClass("pageNo", Integer.class);
 if (pageNoV.hasValue()) {
     pageNo = pageNoV.get();
}

Actual behavior (the bug)
When pageNo is input to "" a exception TYPE_CONVERSION_FAILED throw
Expected behavior
without exception
To Reproduce
above
Additional context
Validator#hasValue not judge the string is non blank

Thanks @CoolLoong, would you like to submit a fix for this?

Thanks for the quick reply, but I'm not familiar with kotlin

That's okay @CoolLoong. I added a test for your case:
@Test
fun `hasValue does not throw exception if value is missing`() = TestUtil.test { app, http ->
    app.get("/") { ctx ->
        val hasValue = ctx.queryParamAsClass<Int>("my-qp").hasValue()
        ctx.result("$hasValue")
    }
    assertThat(http.get("/").body).isEqualTo("false")
}

But it seems to be passing, maybe you are seeing something else?

assertThat(http.get("/?my-qp=").body).isEqualTo("false")

Now hasValue=true, then hasValue.get() will throw ValidationException

Thanks @CoolLoong, this has been fixed in https://github.com/javalin/javalin/commit/384a79f8b4a5e47e5fda5b66f44cda214e93ed3f 😊


Lambda question mark

An experiment to see if running in Lambda is a good idea

I'm pretty confident that this is the right approach.  However, I have been fiddling with it all over the place and it needs a proper tidy-up, and to be cracked into sensible PRs.
Also on the TODO list is to populate the terraform for it.

I am giving up on this and switching to run on ECS.
Basically, Lambda is just too capricious.  There seems to be little correspondence between whether and how something runs in the RIE in a local container, vs how it runs as an actual Lambda function.
Adding a dependency can cause things to stop working, and attempts to contact the Secrets Manager at runtime just timeout.


Inform user about initial download of dvm-helper

We should provide info about dvm-helper being downloaded, similar to our old shell status bar.

The current output displays what is being downloaded.


epaint: Memoize individual lines during text layout

This is an almost complete implementation of the approach described by emilk in this comment, excluding CoW semantics for LayoutJob (but including them for Row).
It supersedes the previous unsuccessful attempt here: https://github.com/emilk/egui/pull/4000.
Draft because:

[X] Currently individual rows will have ends_with_newline always set to false.
This breaks selection with Ctrl+A (and probably many other things)
[X] The whole block for doing the splitting and merging should probably become a function (I'll do that later).
[X] I haven't run the check script, the tests, and haven't made sure all of the examples build (although I assume they probably don't rely on Galley internals).
[x] Layout is sometimes incorrect (missing empty lines, wrapping sometimes makes text overlap).
A lot of text-related code had to be changed so this needs to be properly tested to ensure no layout issues were introduced, especially relating to the now row-relative coordinate system of Rows. Also this requires that we're fine making these very breaking changes.

It does significantly improve the performance of rendering large blocks of text (if they have many newlines), this is the test program I used to test it (adapted from https://github.com/emilk/egui/issues/3086):

code
use eframe::egui::{self, CentralPanel, TextEdit};
use std::fmt::Write;

fn main() -> Result<(), eframe::Error> {
    let options = eframe::NativeOptions {
        ..Default::default()
    };

    eframe::run_native(
        "editor big file test",
        options,
        Box::new(|_cc| Ok(Box::<MyApp>::new(MyApp::new()))),
    )
}

struct MyApp {
    text: String,
}

impl MyApp {
    fn new() -> Self {
        let mut string = String::new();
        for line_bytes in (0..50000).map(|_| (0u8..50)) {
            for byte in line_bytes {
                write!(string, " {byte:02x}").unwrap();
            }
            write!(string, "\n").unwrap();
        }
        println!("total bytes: {}", string.len());
        MyApp { text: string }
    }
}

impl eframe::App for MyApp {
    fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
        CentralPanel::default().show(ctx, |ui| {
            let start = std::time::Instant::now();
            egui::ScrollArea::vertical().show(ui, |ui| {
                let code_editor = TextEdit::multiline(&mut self.text)
                    .code_editor()
                    .desired_width(f32::INFINITY)
                    .desired_rows(40);
                let response = code_editor.show(ui).response;
                if response.changed() {
                    println!("total bytes now: {}", self.text.len());
                }
            });
            let end = std::time::Instant::now();
            let time_to_update = end - start;
            if time_to_update.as_secs_f32() > 0.5 {
                println!("Long update took {:.3}s", time_to_update.as_secs_f32())
            }
        });
    }
}

I think the way to proceed would be to make a new type, something like PositionedRow, that would wrap an Arc<Row> but have a separate pos and ends_with_newline (that would mean Row only holds a size instead of a rect). This type would of course have getters that would allow you to easily get a Rect from it and probably a Deref to the underlying Row.
I haven't done this yet because I wanted to get some opinions whether this would be an acceptable API first. This is now implemented, but of course I'm still open to discussion about this approach and whether it's what we want to do.
Breaking changes (currently):

The Galley::rows field has a different type.
There is now a PlacedRow wrapper for Row.
Row now uses an absolute coordinate system relative to itself instead of the Galley.

Closes https://github.com/emilk/egui/issues/3086
[X] I have followed the instructions in the PR template

Okay, so I did the thing and implemented the Row wrapper. This turned out to be more difficult than expected, and requires changing the semantics of Rows themselves. glyphs and the mesh(_bounds) must be relative to the Row itself, instead of the whole Galley, as otherwise repositioning them wouldn't work (unless we did something hacky like store two different offsets). Currently I also implemented Deref<Target = Row> for the PlacedRow wrapper (bike-shedding appreciated) which may not be the best idea as it makes it easy to confuse the different coordinate systems of the offset and non-offset Row.
Currently this "somewhat" works, I've managed to fix the selection issues I was seeing, but there is some layout issues you can actually see in the live demo above where the text is overlapping sometimes when wrapped (since this was present before the whole PlacedRow mess, I think this may be related to galley-merging).

So I've managed to make this look pretty correct, these are the remaining issues:

Rows now have very weird semantics because an empty Row that is in-between two non-empty lines will actually have a size of zero. This could be solved by actually incorporating the line-terminating newline into the cached job, but there is one issue with that approach because then each of the line galleys will now contain a trailing Row that would have to be treated specially by the merging code.
I've definitely introduced changes in rounding which is probably what makes the snapshot tests fail (apart from the fact that they sometimes segfault on my machine).

I think I've made some good progress:

Made Row hold ends_with_newline again and just dropped excess rows during galley-merging, this means Row once again has pretty sensible semantics.
Properly respecting LayoutJob::round_output_size_to_nearest_ui_point fixed a lot of the snapshot test failures.

The remaining test failures are:

All rendering tests seem to have slight differences but in separators not in text which suggests that sizing might be ever so slightly wrong.
The "Misc Demos" snapshot test also seems to fail, possibly due to a slightly incorrect alignment after the button widget?

I'm wondering whether it is worth fixing fixing these tests, should I just regenerate the snapshots instead?

I wonder how we best test and/or benchmark this though 🤔
I defiantly feel we should have a benchmark to justify this code, i.e. something that shows a big speedup before/after this PR.

I agree having a benchmark would be nice, currently the only thing I have is "it looks quicker" in when you have a lot of text (deletion of small segments works instantly for example).
At first I wanted to suggest a kittest benchmark but then I looked in crates/egui_demo_lib/benches/benchmark.rs and noticed there already seem to be text layout benchmarks, so it'd probably be relatively easy to do something like:

Have a big (few megabytes) block of text
Lay it out
In the benchmark loop:

Randomly remove an N-byte segment from it (into a copy)
Lay it out

As for tests, I've encountered issues with selection drawing multiple times while working on this at this point, so maybe it would be beneficial if this was actually checked by the test suite, it looks like mouse events are supported in kittest so maybe that's a good start. Especially since I also think selection visuals might be another good place for optimization because currently selecting the whole text will force all Rows to be cloned again.
It also looks like the rendering_test tests still seem to be failing on CI. The diffs seem to contain three lines near the middle that look like the bottom of the text background, maybe the background is slightly too small/large?

I added a benchmark similar to the scenario I described above.
On master it takes about 100ms per iteration on average, on cache_galley_lines it takes 825µs which is an improvement of around 123x. I believe this may be enough to justify the code.

I tried to merge in master and push to your branch, but it fails despite

This thread makes me suspect git lfs. Can you try enabling it on your repository and see if it fixes my problem? I'd love to collaborate on getting this PR merged.

I tried to merge in master and push to your branch, but it fails despite
This thread makes me suspect git lfs. Can you try enabling it on your repository and see if it fixes my problem? I'd love to collaborate on getting this PR merged.

I don't see an option anywhere on github pertaining to enabling LFS, so I don't think it's actually toggleable?
From what I could infer during my short investigation this appears to be an error that occurs while LFS objects are being pushed right? Then maybe the solution would be for you to (temporarily) remove the LFS pre-push hook on your side and it would not try pushing the LFS objects?
I've never really used git LFS so it's just a shot in the dark but I can't see anything I can do from my side to fix it.

You can merge in my branch cache_galley_lines to get the merge conflicts solved


Any news or updates for Intel Core Ultra?

Hi!
Any news or updates for Intel Core Ultra?
Thank you for this hard work.

I want to get Core Ultra to update my kexts, but I haven't bought it yet. Core Ultra is too expensive in my country...

Can I generate something? Let me know if you need logs or files.

@AnaCarolina1980 APIC.aml would be helpful.

Here we go! ACPI.zip
Thank you!


AttributeError: 'NoneType' object has no attribute 'split'`

Thank you for the script. It works fine for a few books, then I get the following error:
`Traceback (most recent call last):
File "/Users//pinotate-0.3/pinotate.py", line 44, in
main(args)
File "/Users//pinotate-0.3/pinotate.py", line 30, in main
worker.export_all(args)
File "/Users//pinotate-0.3/core/worker.py", line 44, in export_all
self.__export(title, args.out, args.headings, args.sort)
File "/Users//pinotate-0.3/core/worker.py", line 51, in __export
highlights = self.highlights(asset_id)
File "/Users//pinotate-0.3/core/worker.py", line 37, in highlights
return self.dispatcher.get_highlights(self.ann_db, asset_id)
File "/Users//pinotate-0.3/core/db.py", line 141, in get_highlights
chapter = int(location.split('[')[0].split('/')[2].replace(',', ''))
AttributeError: 'NoneType' object has no attribute 'split'
I’d would be happy if this could be fixed, the script seems to be the last resort to export hightlights from Apple Books.
Thank you!

@arkhandir,thank you for reporting this issue!

The issue should be fixed in the version 0.3.1.

Thank you for fixing it. Your tool fills a gap left by Apple.


Cleaner error propagation in hystrix core

This is continuation of https://github.com/Netflix/Hystrix/issues/241 which was implemented only in Javanica? Why not in Hystrix core?

No one has asked for it, and it's not a use-case we've needed internally
Javanica is annotation-based and annotations are a natural fit for a solution here.

OK. So now we have one person asking for it ;-)
I've prepared fix in my private branch which solves my problem but I'm not sure if it is right place for this enhancement.

I'm happy to take a look at a PR and we can see how it would work within hystrix-core.

Please take a look at PR: https://github.com/Netflix/Hystrix/pull/1379

I think this has been addressed via a review of #1379, which was eventually subsumed by #1414.  Please reopen if there's more to discuss

Yes. https://github.com/Netflix/Hystrix/pull/1414 fixed my case. Special thanks to @tbvh !


v1.7.2-rc4 - Application of line length limits to reformatted text

While testing out v1.7.2-rc4, I realized the reformatted text wasn't always being reformatted to reach the specified line length.
In these examples, the line length is being controlled by the --black setting to a length of 88. It appears there is some length setting that is triggering the reflow of the :param xxx: docs...but it doesn't seem to be the same length controlling how other parts of the docs are changed.
The body of the docstring here is reformatted to reach 88 chars:
 def is_process_dead(pid: int) -> bool:
     """Returns True if a PID is not assigned to a process.

-    Checking if a PID exists is only a semi-safe proxy to determine
-    if a process is dead since PIDs can be re-used. Therefore, this
-    function should only be used via constant monitoring of a PID
-    to identify when the process goes from existing to not existing.
+    Checking if a PID exists is only a semi-safe proxy to determine if a process is dead
+    since PIDs can be re-used. Therefore, this function should only be used via constant
+    monitoring of a PID to identify when the process goes from existing to not existing.

     :param pid: integer value to be checked if assigned as a PID.
     :return: True if PID does not exist; False otherwise.

Here again we see the body being reformatted to 88 chars but the param xxx: docs, while being reformatted, are not being extended to reach the length limit:
class Example:
     def stream_output(
         self,
         label: str,
         popen_process: subprocess.Popen,
         stop_func: Callable[[], bool] = lambda: False,
         filter_func: Callable[[str], Iterator[str]] | None = None,
     ):
         """Stream the output of a Popen process until the process exits. If the user
         sends CTRL+C, the process will be terminated.

-        This is useful for starting a process via Popen such as tailing a
-        log file, then initiating a non-blocking process that populates that
-        log, and finally streaming the original process's output here.
+        This is useful for starting a process via Popen such as tailing a log file, then
+        initiating a non-blocking process that populates that log, and finally streaming
+        the original process's output here.

         :param label: A description of the content being streamed; used for
             to provide context in logging messages.
         :param popen_process: a running Popen process with output to print
         :param stop_func: a Callable that returns True when output streaming
             should stop and the popen_process should be terminated.
-        :param filter_func: a callable that will be invoked on every line
-            of output that is streamed. The function accepts the "raw" line
-            of input (stripped of any trailing newline); it returns a generator
+        :param filter_func: a callable that will be invoked on every line of
+            output that is streamed. The function accepts the "raw" line of
+            input (stripped of any trailing newline); it returns a generator
             that yields the filtered output that should be displayed to the user.
             Can raise StopStreaming to terminate the output stream.
         """

Additionally, if I manually reflow these :param xxx: docs to the 88 char max, docformatter doesn't attempt to shorten them:
class Example:
     def stream_output(
         self,
         label: str,
         popen_process: subprocess.Popen,
         stop_func: Callable[[], bool] = lambda: False,
         filter_func: Callable[[str], Iterator[str]] | None = None,
     ):
         """Stream the output of a Popen process until the process exits. If the user
         sends CTRL+C, the process will be terminated.

-        This is useful for starting a process via Popen such as tailing a
-        log file, then initiating a non-blocking process that populates that
-        log, and finally streaming the original process's output here.
+        This is useful for starting a process via Popen such as tailing a log file, then
+        initiating a non-blocking process that populates that log, and finally streaming
+        the original process's output here.

-        :param label: A description of the content being streamed; used for
-            to provide context in logging messages.
+        :param label: A description of the content being streamed; used for to provide
+            context in logging messages.
         :param popen_process: a running Popen process with output to print
-        :param stop_func: a Callable that returns True when output streaming
-            should stop and the popen_process should be terminated.
-        :param filter_func: a callable that will be invoked on every line
-            of output that is streamed. The function accepts the "raw" line
-            of input (stripped of any trailing newline); it returns a generator
-            that yields the filtered output that should be displayed to the user.
-            Can raise StopStreaming to terminate the output stream.
+        :param stop_func: a Callable that returns True when output streaming should
+            stop and the popen_process should be terminated.
+        :param filter_func: a callable that will be invoked on every line of output
+            that is streamed. The function accepts the "raw" line of input (stripped of
+            any trailing newline); it returns a generator that yields the filtered
+            output that should be displayed to the user. Can raise StopStreaming to
+            terminate the output stream.
         """

@rmartin16 should be fixed in v1.7.2-rc5.

Good deal; I'm seeing the examples above now extending the docs for :params xxx: to the specified line length.
Although, it seems it can be a little over-aggressive when compressing in to one line. It appears the underlying problem is only the docs for the parameter are being compared to the line length instead of how long the entire line will become when composed.
class Example:
    def _write_requirements_file(self, app, requires, requirements_path):
        """Configure application requirements by writing a requirements.txt file.

         :param app: The app configuration
         :param requires: The full list of requirements
-        :param requirements_path: The full path to a requirements.txt file that
-            will be written.
+        :param requirements_path: The full path to a requirements.txt file that will be written.
         """

class Example:
    def _build_app(self, app, update, update_requirements, update_resources, update_support, no_update, test_mode, **options):
        """Internal method to invoke a build on a single app. Ensures the app exists,
        and has been updated (if requested) before attempting to issue the actual build
        command.

         :param app: The application to build
         :param update: Should the application be updated before building?
-        :param update_requirements: Should the application requirements be
-            updated before building?
-        :param update_resources: Should the application resources be updated
-            before building?
+        :param update_requirements: Should the application requirements be updated before building?
+        :param update_resources: Should the application resources be updated before building?
         :param update_support: Should the application support be updated?
         :param no_update: Should automated updates be disabled?
         :param test_mode: Is the app being build in test mode?

class Example:
    def update_emulator_config(self, avd, updates):
         """Update the AVD configuration with specific values.

         :params avd: The AVD whose config will be updated
-        :params updates: A dictionary containing the new key-value to
-            add to the device configuration.
+        :params updates: A dictionary containing the new key-value to add to the device configuration.
         """

@rmartin16 you were correct, the field name wasn't being accounted for in the length of the line.  Should be fixed in v1.7.2-rc6.

That fixes it. Thanks.


Changing name of link

The name is inconsistent with what the name of the package is. Looking up "application insights windows service" in nugget package manager within visual studio doesn't bring up windows server package up to the top.

Hi @juliusl, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

It looks like you're working at Microsoft (juliusl). If you're full-time, we DON'T require a contribution license agreement.

If you are a vendor, DO please sign the electronic contribution license agreement. It will take 2 minutes and there's no faxing! https://cla.azure.com.

TTYL, AZPRBOT;

@juliusl : Thanks for your contribution to the Azure documentation! The author, @soubhagyadash, has been notified to review your proposed change.

Thanks - please go ahead merge/update.

Hi, I don't have write access. Could you merge the pull request?


Upgrade to tekton buildpacks v0.3

Signed-off-by: Benjamin<EMAIL_ADDRESS>

/assign @tpiperatgod


Added Country Map : New Visualization tools

Hello,
For a UC, I need to put metrics on regions of a specific country.
I created this feature in a generic way to add the different countries we want to implement.
For now, I have booted the feature with France and Spain. The addition of a new country is simple.
This is a component with D3.js
Good reading :)
At your disposal for more information.

Wondering if there's a package (or an api) who has the geojsons so we don't have to add them one by one.

I don't know if package or api exist. I can create this but i don't know if it's good idea because, if user don't have network, user will don't have tools.

Do I need to reload the database?

Hi,
I have just corrected all the remarks.
I think the creation of the component can be a complement to deck.gl. It brings a static side to visualization.
I added a lot of new country maps.
I also add a whole new documentation page.
I changed the system. We go through IDs rather than department, region, or province codes.
I also fixed some bugs.
What do you think ?

The netherlands have two geojson too.

Hi @xrmx @mistercrunch !
 Files are very big! I m not saw before push!
I can reduce all files ! It's not a problem.
But before reduce files, i have question.
I can put the department number or the code of a region for each country. However, this is a manual action to be performed before the files are integrated into the SUPERSET application.
Current IDs are more or less arbitrary numbers. I think this is an identifier generated by og2r according to the order of display of the regions on the map.
I would also prefer a department code or a region code for these IDs. On the other hand, a small manual action is to be carried out. I can write it in the documentation.
What do you think?

For example, the world map supports many different ISO codes for country mapping, trying to cater to whatever standard data you might have.
Now for things like regions there should be an obvious standard code, like the number of the french departments, the USA state 2 letter code, USA zip codes, ... In some cases it can be nice to also allow to point to the label but as in California instead of ca or Alsace instead of the department number, but that's not a requirement here and now, and that stuff gets tricky/imperfect with case, unicode and accentuation...

Hi !
Sorry for late answer ! So, i implemented a new mechanical based of ISO 3166-2.
ISO 3166-2 is part of the ISO 3166 standard published by the International Organization for Standardization (ISO), and defines codes for identifying the principal subdivisions (e.g., provinces or states) of all countries coded in ISO 3166-1
I think it's great solution because that work with all countries
Size of geojson are bellow 1 Mo
Documentation is up to date.
What do you think?

@ymatagne Greetings. It is possible to add Ukraine to the list of countries. Thank you.

@bbs2009  I added Ukraine's map.

Hi @mistercrunch
It's ok for example... sorry.
I added new feature that change region's color based on metrics too.

Hi @mistercrunch
I think it's finally good!
I had not seen the existence of the color component. We agree, it was the same thing!
It's ok for you ?

Awesome PR, solid work @ymatagne !

@mistercrunch  Thanks !


Deprecate (and then remove) xml-based configuration

Outcome of #352 and other tickets: Let's get rid of the XML-based config.
Should be deprecated and removed ASAP, removed in 2.0 the latest.

Code for 1.3.0 will print a warning on stderr when xml config files are read.


Run interdomain tests on all clusters

Combinations:
aks - aws
gke - aks
aws - gke
packet - aws
packet - gke
packet  - aws

@edwarnicke What do you think about this?

@edwarnicke Could you please add the secrets of our cluster providers?  OR just send access to the clusters internally then will do this by myself :)


upbound: 0.26.0 -> 0.28.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/upbound/up/releases.
meta.description for upbound is: CLI for interacting with Upbound Cloud, Upbound Enterprise, and Universal Crossplane (UXP)
meta.homepage for upbound is: https://upbound.io
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.28.0 with grep in /nix/store/8v7i4drqq974k3y9kzkl3z0vb77j25nx-upbound-0.28.0
found 0.28.0 in filename of file in /nix/store/8v7i4drqq974k3y9kzkl3z0vb77j25nx-upbound-0.28.0

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
upbound

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/8v7i4drqq974k3y9kzkl3z0vb77j25nx-upbound-0.28.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A upbound https://github.com/r-ryantm/nixpkgs/archive/909948edb5753b97648850896116827fae73a3de.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/909948edb5753b97648850896116827fae73a3de#upbound

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/8v7i4drqq974k3y9kzkl3z0vb77j25nx-upbound-0.28.0
ls -la /nix/store/8v7i4drqq974k3y9kzkl3z0vb77j25nx-upbound-0.28.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review --extra-nixpkgs-config '{ allowInsecurePredicate = x: true; }' run on x86_64-linux 1

1 package built:

upbound

Maintainer pings
cc @lucperkins for testing.

Result of nixpkgs-review pr 302217 run on x86_64-linux 1

1 package built:

upbound


As a restaurant owner I want to remove ingredients from the food inventory

... so that I can remove an ingredient I have used.

Added user story in DG. Linked PR for the change

Closing this issue because is fixed with #48


Updated kemalyst model to granite-orm and added Crelease.

Updated kemalyst model to granite-orm and added CRelease which is a shard that helps version and git tag your shards.

Thank you 👍


feat: get emails from azure groups

Currently in the system who gets what email has two different setups. For notification emails going to onshore or offshore installations the emails are fetched from SQL storage. For chemical responsible notifications it's taken from a config file which references some emails stored in keyvault.
None of these approaches are ideal, instead it should have some logic for which azure groups to fetch the correct email adresses. So that there isnt a static source of who gets emails, but that it is shaped by who has the different roles.

Just got a feature request from a user. They want to be able to manage the list of email recipients themselves, as they are one of the main access-granters to chemcom.  When they add or remove someone's access to a platform, they now have to send us an email with requested changes to the email recipient list.
The suggestion was for a way to manage the list in the UI of the chemcom solution itself,  but if we can implement a way of doing it through role assignments for them, that would probably be sufficient.

It's something we'll have to check up with them on. I feel like the best option would be that who gets emails is defined by role memberships. E.g. if you're a member of Sture you get a notification when something happens at Sture and so on.  And thus no administration is needed and people are removed automatically (when role is expires).
But, if not everyone should get a notification within a group then we'll have to have a look at a UI solution where this can be administered more spesifically.


Is this dead?

2000 open issues, 300 open PRs, no commits in 4 months.
Is this dead?

@almson If you do, you'll have to take up all the responsibilities that come with it:

Actually, you already do, congratz

I think everything is dead within a second.


Additional custom parsers

fixes #150
Heavily inspired by json.loads, which has several parse_* arguments. Also shamelessly copied some of the optimizations from https://github.com/hukkin/tomli/pull/146
_re.py actually lost some lines and most of the additional lines in _parser.py are just definitions on multiple lines since black really likes to spread those out.

That's strange. mypy tomli/ tests/ doesn't give any errors on my computer with either Python 3.9 or 3.10.

Thanks so much for all the effort, but I think I'll reject this for now for reasons discussed here https://github.com/hukkin/tomli/issues/150#issuecomment-990738750
I'm open to reconsider in the future if someone has a good use case!


Align release-v0.1 to main

Align release-v0.1 to main

@rszwajko @sjd78 hi, we moved forward after the split.
backporting latest changes to v0.1.
p.s.
I also want to bacmport (when ready):
moving to use core sdk webpack by @sjd78
updating confirm modal by @rszwajko