jupyterhub support

Hello Jan,
great work, I try to get it running on jupyterhub, but seems its unable to start the prebuild container:

Running Jupyterhub Docker Based on  3.0

jupyter/scipy-notebook runs without issues.
Is it possible that the entrypoint for hub based images is different?

start-single_notebook.sh vs. jupyter lab (gonb)

https://github.com/jupyter/docker-stacks/tree/main/images/base-notebook
upyterhub | [I 2024-03-12 04:34:54.074 JupyterHub app:3160] JupyterHub is now running at http://:8000
jupyterhub | [I 2024-03-12 04:35:03.546 JupyterHub log:186] 200 GET /hub/home<EMAIL_ADDRESS>51.33ms
jupyterhub | [I 2024-03-12 04:35:12.859 JupyterHub log:186] 200 GET /hub/spawn/malte (malte@157.xxx.xxx.xxx)) 7.48ms
jupyterhub | [W 2024-03-12 04:35:17.659 JupyterHub dockerspawner:92] DemoFormSpawner.container_image is deprecated in DockerSpawner 0.9.*, use DemoFormSpawner.image instead
jupyterhub | [I 2024-03-12 04:35:17.695 JupyterHub provider:651] Creating oauth client jupyterhub-user-malte
jupyterhub | [I 2024-03-12 04:35:17.730 JupyterHub dockerspawner:988] Container 'jupyter-malte' is gone
jupyterhub | [I 2024-03-12 04:35:17.747 JupyterHub dockerspawner:1272] Created container jupyter-malte (id: d5fed29) from image janpfeifer/gonb_jupyterlab:v0.9.6
jupyterhub | [I 2024-03-12 04:35:17.747 JupyterHub dockerspawner:1296] Starting container jupyter-malte (id: d5fed29)
jupyterhub | [I 2024-03-12 04:35:18.662 JupyterHub log:186] 302 POST /hub/spawn/malte -> /hub/spawn-pending/malte<EMAIL_ADDRESS>1006.74ms
jupyterhub | [I 2024-03-12 04:35:18.695 JupyterHub pages:394] malte is pending spawn
jupyterhub | [I 2024-03-12 04:35:18.696 JupyterHub log:186] 200 GET /hub/spawn-pending/malte (malte@157.xxx.xxx.xxx)) 3.58ms
jupyterhub | [I 2024-03-12 04:35:27.666 JupyterHub dockerspawner:988] Container 'jupyter-malte' is gone
jupyterhub | [W 2024-03-12 04:35:27.666 JupyterHub dockerspawner:963] Container not found: jupyter-malte
jupyterhub | Task exception was never retrieved
jupyterhub | future: <Task finished name='Task-48' coro=<BaseHandler.spawn_single_user() done, defined at /usr/local/lib/python3.10/dist-packages/jupyterhub/handlers/base.py:844> exception=HTTPError()>
jupyterhub | Traceback (most recent call last):
jupyterhub |   File "/usr/local/lib/python3.10/dist-packages/jupyterhub/handlers/base.py", line 1051, in spawn_single_user
jupyterhub |     await gen.with_timeout(
jupyterhub | asyncio.exceptions.TimeoutError: Timeout
jupyterhub |
jupyterhub | During handling of the above exception, another exception occurred:
jupyterhub |
jupyterhub | Traceback (most recent call last):
jupyterhub |   File "/usr/local/lib/python3.10/dist-packages/jupyterhub/handlers/base.py", line 1085, in spawn_single_user
jupyterhub |     raise web.HTTPError(
jupyterhub | tornado.web.HTTPError: HTTP 500: Internal Server Error (Spawner failed to start [status=0]. The logs for malte may contain details.)
jupyterhub | [I 2024-03-12 04:35:48.084 JupyterHub dockerspawner:988] Container 'jupyter-malte' is gone
jupyterhub | [W 2024-03-12 04:35:48.085 JupyterHub dockerspawner:963] Container not found: jupyter-malte
jupyterhub | [W 2024-03-12 04:36:01.731 JupyterHub user:881] malte's server never showed up at http://<IP_ADDRESS>:8888/user/malte/ after 30 seconds. Giving up.
jupyterhub |
jupyterhub |     Common causes of this timeout, and debugging tips:
jupyterhub |
jupyterhub |     1. The server didn't finish starting,
jupyterhub |        or it crashed due to a configuration issue.
jupyterhub |        Check the single-user server's logs for hints at what needs fixing.
jupyterhub |     2. The server started, but is not accessible at the specified URL.
jupyterhub |        This may be a configuration issue specific to your chosen Spawner.
jupyterhub |        Check the single-user server logs and resource to make sure the URL
jupyterhub |        is correct and accessible from the Hub.
jupyterhub |     3. (unlikely) Everything is working, but the server took too long to respond.
jupyterhub |        To fix: increase `Spawner.http_timeout` configuration
jupyterhub |        to a number of seconds that is enough for servers to become responsive.
jupyterhub |
jupyterhub | [I 2024-03-12 04:36:01.737 JupyterHub dockerspawner:988] Container 'jupyter-malte' is gone
jupyterhub | [W 2024-03-12 04:36:01.737 JupyterHub dockerspawner:963] Container not found: jupyter-malte
jupyterhub | [E 2024-03-12 04:36:01.799 JupyterHub gen:630] Exception in Future <Task finished name='Task-49' coro=<BaseHandler.spawn_single_user.<locals>.finish_user_spawn() done, defined at /usr/local/lib/python3.10/dist-packages/jupyterhub/handlers/base.py:954> exception=TimeoutError("Server at http://<IP_ADDRESS>:8888/user/malte/ didn't respond in 30 seconds")> after timeout
jupyterhub |     Traceback (most recent call last):
jupyterhub |       File "/usr/local/lib/python3.10/dist-packages/tornado/gen.py", line 625, in error_callback
jupyterhub |         future.result()
jupyterhub |       File "/usr/local/lib/python3.10/dist-packages/jupyterhub/handlers/base.py", line 961, in finish_user_spawn
jupyterhub |         await spawn_future
jupyterhub |       File "/usr/local/lib/python3.10/dist-packages/jupyterhub/user.py", line 862, in spawn
jupyterhub |         await self._wait_up(spawner)
jupyterhub |       File "/usr/local/lib/python3.10/dist-packages/jupyterhub/user.py", line 906, in _wait_up
jupyterhub |         raise e
jupyterhub |       File "/usr/local/lib/python3.10/dist-packages/jupyterhub/user.py", line 876, in _wait_up
jupyterhub |         resp = await server.wait_up(
jupyterhub |       File "/usr/local/lib/python3.10/dist-packages/jupyterhub/utils.py", line 288, in wait_for_http_server
jupyterhub |         re = await exponential_backoff(
jupyterhub |       File "/usr/local/lib/python3.10/dist-packages/jupyterhub/utils.py", line 236, in exponential_backoff
jupyterhub |         raise asyncio.TimeoutError(fail_message)
jupyterhub |     asyncio.exceptions.TimeoutError: Server at http://<IP_ADDRESS>:8888/user/malte/ didn't respond in 30 seconds

hi @maltegrosse , thanks for pointing it out.
I didn't even know about JupyterHub ... and it sounds interesting -- although I didn't understand exactly what it does from its description page. I assume is a multi-tenancy Jupyter server thing ?
Anyway, I tried to install it under a single user -- I replaced it to the DummyAuthenticator, because I was not sure what user/password it was asking for, and I won't trust it not to share my password -- but then I got the following error:
500 : Internal Server Error
Redirect loop detected. Notebook has jupyterhub version unknown (likely < 0.8), but the Hub expects 4.0.2. Try installing jupyterhub==4.0.2 in the user environment if you continue to have problems.

Checking with pip install I did install exactly versino 4.0.2, so the error seems wrong.
Notice I haven't even been able to run jupyter yet.
Would you have any idea how to get jupyterhub to work in a single developer mode so I can try to make GoNB to work ?
cheers
ps.: I'm sorry during the week I dont' have much time, I just quickly checked it, likely I'm missing something obvious ...

From the command line logs:
[W 2024-03-12 17:28:29.641 JupyterHub base:1656] Redirect loop detected on /hub/user/janpf/?redirects=1
[I 2024-03-12 17:28:31.643 JupyterHub log:191] 302 GET /hub/user/janpf/?redirects=1 -> /user/janpf/?redirects=2<EMAIL_ADDRESS>2006.25ms
[I 2024-03-12 17:28:31.647 JupyterHub log:191] 302 GET /user/janpf/?redirects=2 -> /hub/user/janpf/?redirects=2 (@<IP_ADDRESS>) 0.70ms
[W 2024-03-12 17:28:31.651 JupyterHub web:1873] 500 GET /hub/user/janpf/?redirects=2 (<IP_ADDRESS>): Redirect loop detected. Notebook has jupyterhub version unknown (likely < 0.8), but the Hub expects 4.0.2. Try installing jupyterhub==4.0.2 in the user environment if you continue to have problems.

Odd error message ... maybe they assume the version 4.0.2 has fixed some redirect loop bug ?

Ugh, I found the issue: I was using port 8081 -- the one JupyterHub uses -- and I should instead be using port 8000, the one of the nodejs proxy thing. Their error reporting could be better ... it was very misleading.
Anyway ... once I opened it in the right port, everything worked, JupyterHub started a JupyterLab, which in turn started GoNB, no issues. Everything worked ...

So we know now it should work, and your issue must be some installation issue.
I don't know much (or anything) about the https://github.com/jupyter/docker-stacks/tree/main/images/base-notebook docker ... does it work with normal Python ?
Maybe you can change its Dockerfile to install GoNB, following what GoNB's Dockerfile do ?
Apologies, I'm trying to help in the dark. If you give me more details on what you are trying to do maybe I can help ?

Dear Jan,
thank you for your help.
Jupyterhub is a nice tool for multi-tenancy (comparable to colab?) with some feature like authentication and killing idling environments. I use it in a docker environment and a kubernetes environment so I can scale it up for hundreds of users easily.
I am abit confused of that port thing ;-)
As it seems both container using the same port 8888:

https://github.com/janpfeifer/gonb/blob/main/Dockerfile#L84
https://github.com/jupyter/docker-stacks/blob/main/images/base-notebook/Dockerfile#L55

where did you change the ports?

Apologies if I'm repeating something you already know, but the bits and pieces of that I gathered that may answer your question:

I didn't explicitly chose 8888, it's the default JupyterLab port, so I exposed it in the Dockerfile. I'm happy to see your pointer to Jupyter's own Dockerfile also exposes the same port.
One shouldn't connect directly to JupyterHub (based on this diagram), but rather to npm's configurable-http-proxy, which at least in Ubuntu I installed with sudo apt install node-configurable-http-proxy, and defaults to port 8000. This was the source of my issues above. The proxy will in turn talk to JupyterHub, which in turn talks to JupyterLab (the _Spawners_in the picture I believe). I'm just guessing, I didn't dig deep. See also the first line of the output of your JupyterHub run: ... JupyterHub is now running at http://:8000

So it seems if you want a container that runs JupyterHub, you will need to also install the proxy, and expose port 8000.
I'm surprised that the Jupyter's Dockerfile you mentioned includes JupyterHub, but doesn't seem to install the proxy (see that installation instructions include installing of the proxy), but maybe it gets installed through some indirect dependency ?
Last thing is that when running the container, one wants to add the flags to expose the port again (I think). I usually run with a line like:
docker run -it --rm -p 8888:8888 -v "${PWD}":/home/jovyan/work janpfeifer/gonb_jupyterlab:latest

But I suppose for JupyterHub you will want to run replacing 8888 by 8000 above.
Just a few things to consider, I hope it helps you figure it out. Pls, let me know if you find out how to run it. I would love to create a sub-section into GoNB installation section with JupyterLab.
Btw, how are you handling authentication ? How do you create users in JupyterHub running inside the Docker container ?

Thank you Jan.
just some general notes regarding jupyterhub:
I am not using the notebook/lab container directly, I have a hub instance (including the proxy) directly running all time, if u want to simple test, thats my docker-compose: (k8s setup is way more complex as I use alot of customization like pvcs, postgres etc // I use traefik as a reverse proxy and to handle https certificates)
(adopted from official jupyterhub, could be outdated)
version: "3.5"

services:
  hub:
    build:
      context: .
      dockerfile: Dockerfile.jupyterhub
      args:
        JUPYTERHUB_VERSION: 3.0.0
    restart: always
    image: jupyterhub
    container_name: jupyterhub
    networks:
      - jupyterhub-network
      - web
    volumes:
      # The JupyterHub configuration file
      - "./jupyterhub_config.py:/srv/jupyterhub/jupyterhub_config.py:ro"
      - "./js/admin-react.js:/usr/local/share/jupyterhub/static/js/admin-react.js:ro"
      # Bind Docker socket on the host so we can connect to the daemon from
      # within the container
      - "/var/run/docker.sock:/var/run/docker.sock:rw"
      # Bind Docker volume on host for JupyterHub database and cookie secrets
      - "./data:/data"

      # -rw-r--r--
    ports:
      - "8000:8000"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.hub.rule=Host(`hub.somedomain.com`)"
      - "traefik.http.routers.hub.entrypoints=websecure"
      - "traefik.http.routers.hub.tls.certResolver=le"
      - "traefik.docker.network=traefik_default"
      - "traefik.http.services.hub.loadbalancer.server.port=8000"
    environment:
      # This username will be a JupyterHub admin
      JUPYTERHUB_ADMIN: admin
      # All containers will join this network
      DOCKER_NETWORK_NAME: jupyterhub-network
      # JupyterHub will spawn this Notebook image for users
      DOCKER_NOTEBOOK_IMAGE: jupyter/minimal-notebook:latest
      # Notebook directory inside user image
      DOCKER_NOTEBOOK_DIR: /home/jovyan/work
      # Using this run command
      DOCKER_SPAWN_CMD: start-singleuser.sh

    command: >
      jupyterhub -f /srv/jupyterhub/jupyterhub_config.py

volumes:
  jupyterhub-data:
  jupyterhub-shared:

networks:
  jupyterhub-network:
    name: jupyterhub-network
  web:
    external:
      name: traefik_default

including the hub config which simple refers to existing lab containers:
jupyterhub_config.py
# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.

# Configuration file for JupyterHub
import os
from dockerspawner import DockerSpawner
# from qhub_jupyterhub_theme import theme_extra_handlers, theme_template_paths

c = get_config()

# We rely on environment variables to configure JupyterHub so that we
# avoid having to rebuild the JupyterHub container every time we change a
# configuration parameter.

# Spawn single-user servers as Docker containers
c.JupyterHub.spawner_class = "dockerspawner.DockerSpawner"

# Spawn containers from this image
c.DockerSpawner.image = os.environ["DOCKER_NOTEBOOK_IMAGE"]

# JupyterHub requires a single-user instance of the Notebook server, so we
# default to using the `start-singleuser.sh` script included in the
# jupyter/docker-stacks *-notebook images as the Docker run command when
# spawning containers.  Optionally, you can override the Docker run command
# using the DOCKER_SPAWN_CMD environment variable.
spawn_cmd = os.environ.get("DOCKER_SPAWN_CMD", "start-singleuser.sh")
c.DockerSpawner.cmd = spawn_cmd

# Connect containers to this Docker network
network_name = os.environ["DOCKER_NETWORK_NAME"]
c.DockerSpawner.use_internal_ip = True
c.DockerSpawner.network_name = network_name

# Explicitly set notebook directory because we'll be mounting a volume to it.
# Most jupyter/docker-stacks *-notebook images run the Notebook server as
# user `jovyan`, and set the notebook directory to `/home/jovyan/work`.
# We follow the same convention.
notebook_dir = os.environ.get("DOCKER_NOTEBOOK_DIR") or "/home/jovyan/work"
c.DockerSpawner.notebook_dir = notebook_dir
c.DockerSpawner.mem_limit = None
c.Spawner.mem_limit = None
c.DockerSpawner.volumes = {
          'jupyterhub-user-{username}': '/home/jovyan/work',
         'jupyterhub-shared': '/home/jovyan/work/shared',

}
#c.DockerSpawner.extra_create_kwargs = {'runtime': 'nvidia'}
#c.DockerSpawner.extra_host_config = {'runtime': 'nvidia'}
import docker
c.DockerSpawner.extra_host_config = {
    "device_requests": [
        docker.types.DeviceRequest(
            count=-1,
            capabilities=[["gpu"]],
        ),
    ],
}
# Mount the real user's Docker volume on the host to the notebook user's
# notebook directory in the container
#c.DockerSpawner.volumes = {"jupyterhub-user-{username}": notebook_dir}

# Remove containers once they are stopped
c.DockerSpawner.remove = True
c.DockerSpawner.default_url = '/lab'
# For debugging arguments passed to spawned containers
c.DockerSpawner.debug = True

# User containers will access hub by container name on the Docker network
c.JupyterHub.hub_ip = "jupyterhub"
c.JupyterHub.hub_port = 8080

# Persist hub data on volume mounted inside container
c.JupyterHub.cookie_secret_file = "/data/jupyterhub_cookie_secret"
c.JupyterHub.db_url = "sqlite:////data/jupyterhub.sqlite"

# Authenticate users with Native Authenticator
#c.JupyterHub.authenticator_class = "nativeauthenticator.NativeAuthenticator"

# Allow anyone to sign-up without approval
#c.NativeAuthenticator.open_signup = True

#custom template
#c.JupyterHub.template_paths=['/usr/local/share/jupyterhub/']
#c.JupyterHub.template_paths = ['/etc/jupyterhub/custom/templates']

# Allowed admins
admin = os.environ.get("JUPYTERHUB_ADMIN")
if admin:
    c.Authenticator.admin_users = [admin]
c.Authenticator.admin_users = {'me'}
from oauthenticator.generic import GenericOAuthenticator
c.JupyterHub.authenticator_class = GenericOAuthenticator
c.JupyterHub.authenticator_class = 'generic-oauth'
c.OAuthenticator.login_service = "auth"
c.OAuthenticator.username_key = "preferred_username"

c.OAuthenticator.client_id = "jh"
c.OAuthenticator.client_secret = "somesecret"
c.OAuthenticator.oauth_callback_url =   "https://hub.somedomain.com/hub/oauth_callback"
c.OAuthenticator.authorize_url =        "https://auth.somedomain.com/realms/lab/protocol/openid-connect/auth"
c.OAuthenticator.token_url =            "https://auth.somedomain.com/realms/lab/protocol/openid-connect/token"
c.OAuthenticator.userdata_url =         "https://auth.somedomain.com/realms/lab/protocol/openid-connect/userinfo"
c.OAuthenticator.userdata_params = {"state": "state"}
c.OAuthenticator.tls_verify = False

class DemoFormSpawner(DockerSpawner):
    def _options_form_default(self):
        default_stack = "jupyter/minimal-notebook"
        return """
        <label for="stack">Select your desired stack</label>
        <select name="stack" size="1">
        <option value="jupyter/scipy-notebook">SciPy</option>

        </select>
        """.format(stack=default_stack)

    def options_from_form(self, formdata):
        options = {}
        options['stack'] = formdata['stack']
        container_image = ''.join(formdata['stack'])
        print("SPAWN: " + container_image + " IMAGE" )
        self.container_image = container_image
        return options
c.Spawner.http_timeout = int(60)
c.JupyterHub.spawner_class = DemoFormSpawner

the   <option value="jupyter/scipy-notebook">SciPy</option> can simple be extended by adding another line refering to your container. There I normally just add other environments like R, C, or GPU supported environments. By adding your container, it fails as mentioned above.
As far as I understood, the docker stack of jupyterhub got all the required components available (like proxy etc), so you actually dont have to take care about them.
As you c an see above, I am using an oauth authenticator, in my case a keycloak instance, which handles the user management. Only some anual cleanup needs to be done, which can be done simple by the hub admin panel (delete all people who havent signed in since...)

hi Malte, thanks for the explanation, now I have a better appreciation of what is going on.
I'm not sure I'm able to figure out what is going wrong, but if you have any suggestions of changes to GoNB's Dockerfile that would fix it, I would be happy to apply the fix.
One way of making this work might be to take a Dockerfile with JupyterLab that works for your JupyterHub, and just include the GoNB installation lines to it:
#######################################################################################################
# Go and GoNB Libraries
#######################################################################################################
ENV GO_VERSION=1.22.0
ENV GONB_VERSION="v0.9.6"
ENV GOROOT=/usr/local/go
ENV GOPATH=/opt/go
ENV PATH=$PATH:$GOROOT/bin:$GOPATH/bin

# Create Go directory for user -- that will not move if the user home directory is moved.

 I tested the basic examples from your tutorial.ipynb (first few) and it works.
thank you alot for your help.
Dunno if others are interested in that solution, if so, you can simple change your dockerfile. ( remember its based on minimal-notebook, so abit bigger than the base image)


cmd/go/internal/modfetch: treat malformed versions as “not found” on the proxy path

For Go 1.11 and 1.12, I have in my go.mod something like:
replace (
        github.com/lxn/walk => golang.zx2c4.com/wireguard/windows pkg/walk
        github.com/lxn/win => golang.zx2c4.com/wireguard/windows pkg/walk-win
)

I use this to indicate that usage of github.com/lxn/walk should be replaced with the latest contents of a branch called pkg/walk from golang.zx2c4.com/wireguard/windows.
With 1.13beta1, this now breaks with a message:
/home/zx2c4/Projects/wireguard-windows/go.mod:16: replace golang.zx2c4.com/wireguard/windows: version "pkg/walk" invalid: version "pkg/walk" invalid: disallowed version string
/home/zx2c4/Projects/wireguard-windows/go.mod:17: replace golang.zx2c4.com/wireguard/windows: version "pkg/walk-win" invalid: version "pkg/walk-win" invalid: disallowed version string

This poses a significant problem.

/cc @bcmills

Should this have the release-blocker tag? It's certainly a regression from 1.11 and 1.12.

It dues to modload.Query does not allow branch.

@bcmills @jayconrod I think this is a side-effect of changing GOPROXY.

$ GOOS=windows GOPROXY=direct GONOSUM=.* go1.13beta get golang.zx2c4.com/wireguard/windows@pkg/walk
go: finding golang.zx2c4.com/wireguard/windows pkg/walk

The problem can be reproducible with go1.12 if GOPROXY is set.

GOOS=windows GOPROXY=https://proxy.golang.org GONOSUM=.* go get golang.zx2c4.com/wireguard/windows@pkg/walk
go: finding golang.zx2c4.com/wireguard/windows pkg/walk
go: finding golang.zx2c4.com/wireguard pkg/walk
go: finding golang.zx2c4.com pkg/walk
go get golang.zx2c4.com/wireguard/windows@pkg/walk: disallowed version string "pkg/walk"

Such version strings are not accepted by golang.org/x/mod/module package that is used by both go command and proxy.golang.org as well. The module proxy protocol doc (go help goproxy) does not specify an acceptable set of version strings.

@zx2c4, can you confirm that setting GOPROXY=direct continues to allow the branch-names in question? (That probably determines whether this gets the release-blocker label.)

This might be a limitation in the proxy, rather than the Go command.
With go1.13beta1, the command below succeeds:
$ GOPROXY=direct go mod download -json golang.zx2c4.com/wireguard/windows@pkg/walk

However, it fails with GOPROXY=https://proxy.golang.org/. Specifically, this query fails:
$ curl<EMAIL_ADDRESS>bad request: invalid escaped version "pkg/walk": invalid char '/'

When the proxy is enabled, this is the first request the Go command will send in order to find out the canonical version for pkg/walk.

@zx2c4, can you confirm that setting GOPROXY=direct continues to allow the branch-names in question? (That probably determines whether this gets the release-blocker label.)

Set GOPROXY=direct works for me:
cuonglm :: /tmp/test » GOPROXY=direct go mod tidy
golang.zx2c4.com/wireguard/windows pkg/walk
go: finding golang.zx2c4.com/wireguard/windows pkg/walk
golang.zx2c4.com/wireguard/windows pkg/walk-win
go: finding golang.zx2c4.com/wireguard/windows pkg/walk-win

@hyangah

Such version strings are not accepted by golang.org/x/mod/module package

The general solution here may be for the proxy to treat any (non-pseudo-) version that fails module.Check as a potential branch name.

@bcmills @jayconrod
Note that the same code is being used in the go command.
The golang.org/x/mod/module package is a copy of src/cmd/go/internal/module package. The error message users observed is probably before hitting the network. (src/cmd/go/internal/modfetch/proxy.go)
@rsc

It wasn't clear to me, so for the record: the problem is that the module.Escape/UnescapeVersion functions, which are only used on the proxy code paths in the go command, don't allow slashes. So, yes, proxy.golang.org doesn't support them, but more importantly, the go command never even gets that far because it can't encode the request properly.

@zx2c4, can you confirm that setting GOPROXY=direct continues to allow the branch-names in question?

Confirmed.

Looking at the above, there appears to be some kind of bizarre tug-a-war with the milestone tags. I assume this is 1.13 material, considering this is some form of regression and we're in the beta period where we're supposed to be investigating those.

@zx2c4, @andybons is in the process of re-milestoning all of the non-release-blocking Go1.13 issues and this probably got swept up in a search. Probably this should be release-blocking, and then it won't get caught in that query. 🙂

Thinking about this some more: even if the proxy path in the go command is fundamentally broken, and even if the fix for that bug is not small enough for Go 1.13, there is a simple fix within the proxy itself: specifically, to serve a 404 or 410 (“I can't help you with that.”) instead of a 400 (“Nobody can help you with that.”)

Retitling to accurately reflect the immediate fix. Once that's addressed, we can look in greater depth at the go command's proxy path in general (probably for 1.14, but I'll see if @jayconrod or @rsc have any ideas that we could implement in the shorter term).

Note: the go command failed before sending a request to proxy.
On Tue, Jul 9, 2019, 6:34 PM Bryan C. Mills<EMAIL_ADDRESS>wrote:

Thinking about this some more: even if the proxy path in the go command
is fundamentally broken, and even if the fix for that bug is not small
enough for Go 1.13, there is a simple fix within the proxy itself:
specifically, to serve a 404 or 410 (“I can't help you with that.”)
instead of a 400 (“Nobody can help you with that.”)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/golang/go/issues/32955?email_source=notifications&email_token=ABGESL2F6BHDGULN464FMT3P6UG5RA5CNFSM4H6KJO22YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZRXJKA#issuecomment-509834408,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABGESL3VR3Z3GCVOMDJ27HTP6UG5RANCNFSM4H6KJO2Q
.

Ah, right. Got it. Sorry for my confusion!

This has an interesting secondary interaction with proxy fallback. Since we can't ask the proxy about the requested version string at all, we don't know whether the proxy would have rejected that version, so we can't safely proceed to direct in the fallback list (https://github.com/golang/go/issues/31913#issuecomment-490507980).

The fix is complicated and the workaround of an explicit GOPROXY=direct continues to work, so unlabeling as release-blocker.

Thanks @bcmills.
I hoped to see the module package and the protocol accept wider variety of version strings rather than workaround. The vcs branch, tag names may have a wider range of characters than the encoding/decoding functions in module package would assume.

I'm hoping we can widen the accepted strings too, but I think any change to the escaping logic is probably too subtle to make 1.13.

I agree that changes here are too subtle for Go 1.13.
For Go 1.14 the first question is "should we make direct mode and proxy mode match as far as what they accept for versions" and the second is "if so, how? restrict direct mode or loosen proxy mode?"
Are slashes in git branch names very common?

Are slashes in git branch names very common?

Yes, extremely common. For example, some projects use it to denote the owner of the branch jd/something. Others use it for particular version partions.

fyi - proxy.golang.org now serves 404/410 for this

$ curl -i<EMAIL_ADDRESS>HTTP/1.1 410 Gone
Content-Type: text/plain; charset=UTF-8
...
bad request: invalid escaped version "pkg/walk": invalid char '/'

This bug also affects module imports from a subdirectory of another module.
Here's an example tree for a repo:
github.com/foo/bar
├── pkg
│       └── baz
│           └── go.mod
└── go.mod

If I were to import package github.com/foo/bar/pkg/baz then go would try to fetch tag pkg/baz/v1.0.0 automatically (that would fail).
What're the next steps for that one - do we want to fix go or proxy (athens)?

@utrack, the versions in the proxy protocol are not the same as the tags in the underlying repo. The tag for the module in the pkg/baz subdirectory is indeed pkg/baz/v1.0.0, but once the module is extracted into the module cache that version is encoded as simply v1.0.0 (because the pkg/baz portion is already encoded in the module cache).

@utrack try the -x flag to see how the go command works with the proxy. That will show the behavior @bcmills described above.  go get<EMAIL_ADDRESS>or go get github.com/foo/bar/pkg/baz will work as expected.
go get<EMAIL_ADDRESS>won't due to this issue but not sure how often ppl want to fetch a module/package in that way.

Using the hash of the branch git rev-parse did it for me, see the comment: https://github.com/golang/go/issues/34175#issuecomment-529502530

Are slashes in git branch names very common?

As much as I don't personally use them, I'm afraid they are common. Where I work, pretty much everyone works in branches like feat/some-feature or fix/some-bug. For example: https://github.com/ipfs/go-ipfs/branches

+1 fix this

Any chance that this gets fixed at any point? Slashes in branch names are very common and it's frustrating to have to work around this limitation all the time.

I am building a main app that will optionally support one or more database drivers. I wonder if I could branch each type of database driver and allow users to go get/install from respective branches if they only need one database type.
package main

import (
        // ...

	_ "github.com/go-sql-driver/mysql"
	_ "github.com/jackc/pgx/v5/stdlib"
	_ "github.com/mattn/go-sqlite3"
	_ "github.com/microsoft/go-mssqldb"
	_ "github.com/sijms/go-ora/v2"
	_ "modernc.org/sqlite"
)

It seems it works as of go 1.20.1.
I created several branches, all, mysql, sqlite3, and etc., loading only corresponding drivers. And I was able to install the different branches by:
$ go install github.com/elgs/gosqlapi@mysql
$ go install github.com/elgs/gosqlapi@sqlite3
$ go install github.com/elgs/gosqlapi@all

I am quite satisfied as it is. But I am not sure if I overlooked anything.

@elgs this issue is about interacting with branches that have a forward slash (/) in them - e.g. branch/name.

Setting GOPROXY='https://proxy.golang.org|direct' can also be used as a workaround instead of the default GOPROXY=https://proxy.golang.org,direct. This means for any error from the first URL, fall back to direct as per go1.15 release notes

replace github.com/kopia/kopia =><EMAIL_ADDRESS>
This with or without direct goproxy also result in
(replaced by github.com/project-velero/kopia@v0.17.0-velero-patch): verifying go.mod<EMAIL_ADDRESS>reading<EMAIL_ADDRESS>404 Not Found
        server response: not found<EMAIL_ADDRESS>invalid version: resolves to version v0.17.0-velero.1.0.20240829032136-7fca59662a06 (v0.17.0-velero-patch is not a tag)


howto: fluentd: add details for shimv2

shimv2/containerd logs are placed and formatted differently than for
kata CRI-O. Add some details to the Fluentd parsing document to aid
in parsing those.
Fixes: #610
Signed-off-by: Graham Whaley<EMAIL_ADDRESS>

Let's see what the spellchecker thinks...

/test

Wow, GitHub really needs to learn how to highlight fluentd files correctly viewing this file currently is visually painful ;(

yeah, they are in their own 'special format' - not json, not yaml, not toml... I searched, I tried, I failed to find any way to get github to syntax highlight them... I didn't even find a decent grammar or standards definition for them..


#6223: remove redundant call to context switch

Somehow also avoids a hang.
@aliuTT or @ubcheema, do either of you have any insight why this redundant context switch would cause a hang?

FYI @cfjchu


Update Community Grafana operator to the same version from Upstream Community

Hello,
The current operator for Grafana published on the community catalog has some issues that have been fixed on recent builds. The Upstream Community catalog has the release 3.2.0 (https://github.com/operator-framework/community-operators/tree/master/upstream-community-operators/grafana-operator/3.2.0).
Could you please publish this version on the Community catalog as well?
Thanks,

+1
Same goes to OpenShift users. in OPC 4.5 the Grafana operator is still 2.0


testing process met error.

After I met this error, then I add a try+except command to output variable p and indices when an error appears.  Its output content is as follows:
0 [ 1  1  1  1  1  1  0  0  0  0  0  0 -1 -1 -1 -1 -1 -1 -1 -2 -2 -2 -2 -2 -2]
Can you help me figure out where is the bug? Thank you!

solved

@qijiezhao I encounter the same error, how do you solve it?

Hi, @qijiezhao   The same problem I meet, could you please give your file of ucf101_flow_val_split_1.txt  and  dataset.py  to me , thanks a lot!  my e-mail is<EMAIL_ADDRESS>


[BUG] conflicting expectations for compact flag

Describe the bug
Using the newest SDK.
When passing compact to  createDocument, unlike wait which takes a string, the sdk expects a boolean. Passing a boolean returns an error: Unexpected value for key compact: true. Value should be serialized to string first
If I pass a string, I then get a different error: options.compact with value true must be of type boolean
So both possible options fail.
To Reproduce
let affindaClient: AffindaAPI //boilerplate creds etc
    const result = await affindaClient.createDocument({
      fileName: document.name,
      file: document.stream,
      wait: 'true',
      collection: document.collection,
      //INFO: leave them for a bit for debugging and then clean them up
      expiryTime: new Date(new Date().setDate(new Date().getDate() + EXPIRY_DAYS)).toISOString(),
      compact: true
    })

Expected behavior
Either a string or a bool should work, whichever the SDK asks for
Stacktrace / Screenshts
Unexpected value for key compact: true. Value should be serialized to string first
options.compact with value true must be of type boolean
Environment

Client version: 7.3.0
NodeJS version v20.17.0

Additional context
This is happening when uploading a resume to a v3 parser collection which returns the debug model by default. The v2 parser collection returns a compact model by default.

@bot2600 Thanks for reporting this! The issue should be resolved by the latest release 7.3.1. The flag compact should be passed in as a string.


Fixed warnings for ROS2 Humble

In ROS2 Humble, you receive the following warnings when building the driver:
Starting >>> adma_ros2_driver
--- stderr: adma_ros2_driver
In file included from /home/albers/autoware/src/sensor_component/rst/adma_ros_driver/adma_ros2_driver/src/parser/adma2ros_parser_v32.cpp:3:
/opt/ros/humble/include/tf2_geometry_msgs/tf2_geometry_msgs/tf2_geometry_msgs.h:35:2: warning: #warning This header is obsolete, please include tf2_geometry_msgs/tf2_geometry_msgs.hpp instead [-Wcpp]
   35 | #warning This header is obsolete, please include tf2_geometry_msgs/tf2_geometry_msgs.hpp instead
      |  ^~~~~~~
In file included from /home/albers/autoware/src/sensor_component/rst/adma_ros_driver/adma_ros2_driver/src/parser/adma2ros_parser.cpp:3:
/opt/ros/humble/include/tf2_geometry_msgs/tf2_geometry_msgs/tf2_geometry_msgs.h:35:2: warning: #warning This header is obsolete, please include tf2_geometry_msgs/tf2_geometry_msgs.hpp instead [-Wcpp]
   35 | #warning This header is obsolete, please include tf2_geometry_msgs/tf2_geometry_msgs.hpp instead
      |  ^~~~~~~
In file included from /home/albers/autoware/src/sensor_component/rst/adma_ros_driver/adma_ros2_driver/src/parser/adma_parse_deprecated.cpp:8:
/opt/ros/humble/include/tf2_geometry_msgs/tf2_geometry_msgs/tf2_geometry_msgs.h:35:2: warning: #warning This header is obsolete, please include tf2_geometry_msgs/tf2_geometry_msgs.hpp instead [-Wcpp]
   35 | #warning This header is obsolete, please include tf2_geometry_msgs/tf2_geometry_msgs.hpp instead
      |  ^~~~~~~
In file included from /usr/include/string.h:535,
                 from /usr/include/c++/11/cstring:42,
                 from /home/albers/autoware/src/sensor_component/rst/adma_ros_driver/adma_ros2_driver/src/parser/adma_parse_deprecated.cpp:4:
In function ‘void* memcpy(void*, const void*, size_t)’,
    inlined from ‘void getgpsauxdata2(const string&, adma_msgs::msg::AdmaData&)’ at /home/albers/autoware/src/sensor_component/rst/adma_ros_driver/adma_ros2_driver/src/parser/adma_parse_deprecated.cpp:1255:11:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:29:33: warning: ‘void* __builtin_memcpy(void*, const void*, long unsigned int)’ reading 32 bytes from a region of size 4 [-Wstringop-overread]
   29 |   return __builtin___memcpy_chk (__dest, __src, __len,
      |          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
   30 |                                  __glibc_objsize0 (__dest));
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/albers/autoware/src/sensor_component/rst/adma_ros_driver/adma_ros2_driver/src/parser/adma_parse_deprecated.cpp: In function ‘void getgpsauxdata2(const string&, adma_msgs::msg::AdmaData&)’:
/home/albers/autoware/src/sensor_component/rst/adma_ros_driver/adma_ros2_driver/src/parser/adma_parse_deprecated.cpp:1254:10: note: source object ‘gps_basenr’ of size 4
 1254 |     char gps_basenr[] = {local_data[498],local_data[499],local_data[500],local_data[501]};
      |          ^~~~~~~~~~
---
Finished <<< adma_ros2_driver [3.10s]

This PR fixes these warnings.
Since the tf2_geometry_msgs.hpp was introduced in Humble, this probably breaks the Galactic build (which could be moved to another branch).

Thank you for your response. I also had these deprecated warnings with ROS2 Humble, but at the moment we don't have enough informations about the mostly used ROS distribution. We will discuss internaly which distribution will be our main one (master branch) and how to handle legacy versions. Until then, this PR will leaved open.

Thanks for merging the other PRs!
ROS2 Galactic reached its end of life in December 2022, and Foxy will follow in May 2023 (https://docs.ros.org/en/rolling/Releases.html).
I propose to keep the main branch up to date for current distributions: Either for Humble as the current long-term-support version (until 2027) or for Rolling with an additional branch for Humble. This fix is necessary for both.


First increment for frequency plot done.

Staging link: https://ui-ffuyjoshh1p96iwqq6b8e8at7c.scp-staging.biomage.net/experiments/5e959f9c9f4b120771249001/plots-and-tables/frequency


[Feature]: Add sprint planning guidelines

Description
No response
Definition of Done
No response

Fixed in #344


Add Variation fields

[x] name | STRING | NULLABLE
[x] variation_type | STRING | NULLABLE
[x] allele_id | STRING | NULLABLE
[x] release_date | DATE | NULLABLE
[x] subclass_type | STRING | NULLABLE
[x] protein_change | STRING | REPEATED
[x] content | STRING | NULLABLE
[x] id | STRING | NULLABLE
[x] descendant_ids | STRING | REPEATED
[x] num_chromosomes | INTEGER | NULLABLE
[x] num_copies | INTEGER | NULLABLE
[x] child_ids | STRING | REPEATED

@larrybabb did they discontinue the @NumberOfCopies field in the XML? (mapped to num_copies)
SELECT count(*)
FROM `clingen-stage.clinvar_2019_07_31_v1_2_0.variation`
WHERE num_copies is not null
-- 404

SELECT count(*)
FROM `clingen-stage.clinvar_2019_09_02_v1_1_0_m2.variation`
WHERE num_copies is not null
-- 0

SELECT count(*)
FROM `clingen-stage.clinvar_2023_11_12_v1_6_61.variation`
WHERE num_copies is not null
-- 0

Closed in #20


No matching distribution found for smart-open==1.8.1

Could you upload new version to PyPi please? Thanks

We will upload in the next day or so. I'll post again here once it's done.

@hexvolt where did you get / see this error? Can you provide context?

@mpenkov @piskvorky
yes, exactly pip install smart_open==1.8.1. And pip install smart-open used to install 1.8.0 as a latest version. It works now, thanks a lot! The new version features are very handy.

@mpenkov is this really a bug fix release? Looking at the release notes, there are significant new features (implying 1.9.0), or even 2.0 because of that backward-incompatible open() function.
I worry that presenting this as a mere bug-fix release may be misleading.

There's nothing backwards incompatible about this release. Open is a new function in the API. The existing smart_open function works the same as before, preserving backwards compatibility, with the only visible change in behavior being a deprecation warning.
We added some minor features, like the compressor registry, but they don't really justify a major release imho.

They do justify minor release though, IMO. This doesn't look like a bugfix release.
I mean, it's already done, but a note for the future.

Ok, how about instead of doing 1.8.2 to fix the xz stuff, we release 1.9.0?

@piskvorky I'd like to make a new release soon to resolve the problem in this ticket, can you let me know which you prefer:

Release as 1.9.0
Release as 1.8.2
Something else?

@mpenkov sorry, was on holiday this week. Super impressed to see the amount of work (and notifications) produced in the mean while :-)
My preference here: 1.8.2.
My preference in general:

incrementing bugfix (1.8.X) only for innocuous changes and bug fixes
incrementing minor (1.X.0) for anything more serious, new features
major bumps (2.0.0) for API rewrites (but not necessarily dropping of any odd deprecated API param, as 100% strict semver would dictate -- I personally would find that confusing and silly).

Let me know your thoughts or suggestions, I'd like us to be on the same boat.

@piskvorky In general, I agree with your preference. For the next couple of releases, I'll double check the version number with you before proceeding.


optimize helm crds

What type of PR is this?

What this PR does / why we need it:
Move crds to crds dir to make sure the helm install successfully.
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

Optimize helm crds.

@cleverhu We have migrated the chart to the https://github.com/clusterpedia-io/clusterpedia-helm for maintenance, please submit pr to the https://github.com/clusterpedia-io/clusterpedia-helm, thank you!


Modifying ublox documentation for indigo, jade, kinetic distros

Changed link for ublox package to a maintained repo which actually runs (original linked repo doesn't run).

I re-forked and submitted a new pull request because there were weird issues with the previous pull request.

Thanks, the diff looks good now :+1:


Feature/skosgi/remove profile exclusion

Critical Changes
Changes
Issues Closed
New Metadata
Deleted Metadata
Testing Notes
Removing TDTM Profile exclusion
TDTM Trigger object should not have the profile field.
TDTM Trigger layout should not have the profile field.
Creating a contact with TDTM Triggers enabled should auto-create administrative accounts.
Taking a user-excluded action on a TDTM Trigger should function as not running for that user.

Passes QA
Will Close WI


feat: add typings support

Adds typings support for this library.

Related issue: #3 nestjs/terminus#233
Tested with @nestjs/terminus.

LGTM, Thank you! :)

@Alex-D thanks mate! Would you mind publish a new version on npm? It is currently blocking a release of @nestjs/terminus. Nonetheless, thank you for this quick contribution!  :)

I will do that soon :)

@Alex-D ping :ping_pong:

Done: 2.1.0 :)


Doesn't work within bootstrap tabs + knockout model

It seems that your component doesn't work with knockout properly. If I have wrapper like this:

It doens't work. It shows styled buttons, but 'toggle' part doesn't work.
More over this div is part of bootstrap tabs and first this tab is hidden, data into MyModel are loadd only when user is navigating to the tab. So it happens dynamically after document is ready. I guess this causes some problems. I am not sure.

I agree. I wasn't able to get it working with Knockout either.
Styled ok but the switches wouldn't change.

Got the same issue, it does not work in bootstrap tabs

it seems not to work in bootstrap tabs, not sure though. It shows correctly for me but it's not included in the form results, when I move it outside the tab it is.

I am having visual issues with tabs where the size of the switch is only shown properly on the first tab.  However, my toggle data appears to be submitted properly.

similar issue with knockout, but not related to tabs. problem is with generic binding e.g.
<input type="checkbox" data-toggle="toggle" data-bind="checked: knockoutObservable />

debugging shows knockoutObservable is true, but the toggle initially renders in the off state.

It seems this is an issue with Knockout itself, as checking a checkbox via $element.prop('checked', true)  fails to update the property in the view model, even with a plain old checkbox. I managed a quick and dirty workaround for this:
Toggle.prototype.on = function (silent) {
	if (this.$element.prop('disabled')) return false
	this.$toggle.removeClass(this._offstyle + ' off').addClass(this._onstyle)
	this.$element.prop('checked', true)
	this.$element.triggerHandler('click')   // added by PJA to fix knockout binding
	if (!silent) this.trigger()
}

Toggle.prototype.off = function (silent) {
	if (this.$element.prop('disabled')) return false
	this.$toggle.removeClass(this._onstyle).addClass(this._offstyle + ' off')
	this.$element.prop('checked', false)
	this.$element.triggerHandler('click')   // added by PJA fix knockout binding
	if (!silent) this.trigger()
}

I am not using Knockout at all but having problems with any toggles which are not on the first tab of a tab set.  The height of those tabs ends up being 0px.

Hrm, still not working with Knockout.

Are there plans to fix this?

Hi all,
I created a binding for knockout: https://github.com/aAXEe/knockout-bootstrap-toggle
See PR #91.

Hi all,
I created a binding for knockout: https://github.com/aAXEe/knockout-bootstrap-toggle
See PR #91.


Fixed typos on a few pages.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/design/add-in-design-language.md
:white_check_mark:Succeeded

docs/design/add-in-design.md
:white_check_mark:Succeeded

docs/design/content-add-ins.md
:white_check_mark:Succeeded

docs/design/ux-design-patterns.md
:white_check_mark:Succeeded

docs/develop/office-versions-and-requirement-sets.md
:white_check_mark:Succeeded

docs/develop/understanding-the-javascript-api-for-office.md
:white_check_mark:Succeeded

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


MNOWFREE Ari Kytsya Viral Leaks Video On Social Media X Twitter[2180K]

1 minute ago Ari Kytsya, MNOWFREE Ari Kytsya Viral Leaks Video On Social Media X Twitter[2180K]

Ari Kytsya's latest video has rapidly gained traction across various social media platforms, captivating audiences and igniting extensive discussions. This talented digital creator has garnered significant attention for her engaging content, particularly her recent Spiderman-themed video, which has gone viral. Viewers are actively seeking out where to watch the full video, with many turning to platforms like Instagram, Twitter (X), and Discord for access.
As the excitement surrounding Ari Kytsya continues to build, fans are sharing their reactions and enthusiasm online. The viral success of her video underscores the influential role social media plays in elevating creators to prominence. With her distinctive style and innovative approach, Katherinne has quickly established herself as a noteworthy figure in the digital arena, leaving audiences eager to learn more about her upcoming projects and content.

FG

vf

fgfg

FG

vf

fgfg


Add basic CI infrastructure

Welcome to Codecov :tada:
Once merged to your default branch, Codecov will compare your coverage reports and display the results in this comment.
Thanks for integrating Codecov - We've got you covered :open_umbrella:


fix: Improve dropdown z-index

🟡 Heimdall Review Status

Requirement
Status
More Info

Reviews

🟡
0/1

Denominator calculation

Show calculation

1 if user is bot
0

1 if user is external
0

From .codeflow.yml

1

Additional review requirements

Show calculation

Max
0

0

From CODEOWNERS

0

Global minimum
0

Max

1

1

1 if commit is unverified
0

Sum
1


Is it necessary to save ffm model to hdfs?

Very glad to see a ffm model implement on spark. Is there any plan to save the model after training? Thanks very much.

yes, on our plan list, but meanwhile any PR for this feature is welcome

function added!  Issue closed. thanks.


Add style checks

Consider ktfmt, https://github.com/facebookincubator/ktfmt
https://github.com/google/android-fhir/discussions/246

The approach in the PR will use Spotless - similar to what Google has done. I think the main selling point is that you can add multiple linters to augment each other's strengths.
One thing I don't like too much is that the linting process fails as part of the main Github Actions workflow that builds/compiles the code (I guess it's possible to break it off though).
Another option is to use Codacy, similar to OpenSRP projects atm, which uses detekt as a linter - seems quite popular and under active development. Codacy UI is nicer and provides a separate enforceable code-quality check on Github.
Either way, I think Spotless is good enough for now and provides a uniform set of rules as what we'd expect in the Android FHIR SDK. Since we'll be contributing to it, it would be better if we can have familiar workflows across both projects.

Cool, yea agree w/that, there are be trade-offs but staying aligned forces our hand


Commented code at the end of a method doesn't collapse with method

I've gotten so use to how it worked before, please help me fix this issue unless it was intentionally changed or there is a setting that needs to be changed. This has just happened recently.
Issue -
Expected result - Commented code at the end of a method should collapse with the method.
Actual result - Commented code at the end of a method doesn't collapse with the method. Please see screenshots
The whole method including commented code at the end, collapse after I disable pylance.
I've checked all 17 pages of issues and didn't find anything related.
Python version 3.8.10
System - Ubuntu
Visual Studio Code

Thank you,
David Catalfano
<EMAIL_ADDRESS>
Environment data

Language Server version: XXX
OS and version: XXX
Python version (& distribution if applicable, e.g. Anaconda): XXX

Expected behaviour
XXX
Actual behaviour
XXX
Logs

XXX

Code Snippet / Additional information

XXX

I have an attempt at a fix in https://github.com/debonte/pyrx/tree/issue2321_foldingTrailingFunctionComment. It works for comments after functions, but not comments after if blocks. Here are my notes from when I was working on this:

Figured out why this folding wasn't happening as I expected for comments after if statements and the like. It's because the start character of those statements is the : of the suite, not the start of the statement, and I'm determining which comments should be included by comparing the comment's # indent against the indent of the range's start node.
I'm really not sure how to handle this. Should we limit the functionality to comments after functions and classes? The behavior currently is a bit strange

Comments after if statements (and the like) are folded only if heavily over-indented (past the : column)
Comments above the next function would be folded with the current/previous function. This is the worse issue. Not sure yet how to differentiate the two. I guess if there's no newline between the comment and the next block/node/function/class/whatever?

I don't think there's a good reason to include the ":" token in the suite parse node. I don't recall any reason why I would have included that when writing the parser, so it might have just been an oversight. So if it helps to omit the ":" from the suite node, you could change the parser accordingly.

This issue has been fixed in prerelease version 2023.2.11, which we've just released. You can find the changelog here: CHANGELOG.md


Error: You need to be activate Adapty once

Even though I check the status with Adapty().isActivated() before activation, Adapty().activate(...) returns error 3005.
The Adapty().isActivated() method returns false.
It seems like it’s not working correctly.
adapty_flutter: ^3.2.2
Flutter: 3.24.5 (stable)
Dart: 3.5.4 (stable)
iOS: 18.1.1

Error:
 (code: 3005, message: You need to be activate Adapty once, detail: {"detail":"AdaptyError.activateOnceError([3.2.0]: Adapty\/Adapty+Activate.swift#65)","adapty_code":3005,"message":"You need to be activate Adapty once"})
late final initJob = JobResultAsync<bool>(
    () async {
      if (isActivated) {
        return true;
      }

      final nativeCheck = await Adapty().isActivated();
      if (nativeCheck) {
        return true;
      }

      await Adapty().activate(
        configuration: AdaptyConfiguration(
          apiKey: AppArgs.adaptyKey,
        ),
      );

      return true;
    },
    onError: (result) {
      print(result.error);
    },
  );

It also happens for when running on iOS: once I added the API key to Info.plist file, it started happening only on hot restarts even though I ran flutter clean after.

Having same issue

After updating to version 3+, I started experiencing the same issue.

@x401om , @vladd-g we're experiencing the same issue on Android. When we first install, it is working normally. But when you perform hot restart, adapty prints this error.
E/Adapty_v3.1.0(29444): ERROR: Adapty was already activated. If you want to provide new customerUserId, please call 'identify' function instead.
We tried to check with isActivated but no luck. I think in native side, it continue to keep last activation even if hot restart happens.

@x401om , @vladd-g we're experiencing the same issue on Android. When we first install, it is working normally. But when you perform hot restart, adapty prints this error.
E/Adapty_v3.1.0(29444): ERROR: Adapty was already activated. If you want to provide new customerUserId, please call 'identify' function instead.
We tried to check with isActivated but no luck. I think in native side, it continue to keep last activation even if hot restart happens.

I have checked that isActivated method and it calls this function on native side. Still, it returns incorrect answer.

Hi everyone! Thank you for your patience. We’ve just released version 3.2.3, which ensures that isActivated correctly returns the native SDK activation status.
Please make sure to use Adapty().setupAfterHotRestart() and AdaptyUI.setupAfterHotRestart(observer:) after a hot restart so the plugin can properly receive messages from the native side.
I assume you’ll implement the activation flow something like this:
import 'package:adapty_flutter/adapty_flutter.dart';
import 'package:flutter/foundation.dart';

Future<void> activateAdaptyIfNeeded() async {
    try {
        var isActivated = false;

        // Please consider not using this in production to avoid any unwanted effects
        if (kDebugMode) {
            isActivated = await Adapty().isActivated();
        } else {
            isActivated = false;
        }

        if (!isActivated) {
            await Adapty().activate(configuration: <YOUR_CONFIGURATION_OBJECT>);
            await AdaptyUI().activate(observer: <YOUR_OBSERVER_OBJECT>);
        } else {
            Adapty().setupAfterHotRestart();
            AdaptyUI().setupAfterHotRestart(observer: this);
        }
    } catch (e) {
        // handle the error
    }
}


fix: restrict start block correctly

ref https://github.com/paradigmxyz/reth/issues/2457
fixes a condition where the start block was restricted incorrectly, resulting in empty ranges

🤖 Generated by Copilot at 069a46c
Fixed a log filter bug and added unit tests in logs_utils.rs. Enabled cloning of ChainInfo struct to support the bug fix.

Codecov Report

Merging #2460 (069a46c) into main (eba1e88) will decrease coverage by 53.23%.
The diff coverage is 2.50%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@             Coverage Diff             @@
##             main    #2460       +/-   ##
===========================================
- Coverage   71.46%   18.24%   -53.23%
===========================================
  Files         486      486
  Lines       60069    60107       +38
===========================================
- Hits        42929    10965    -31964
- Misses      17140    49142    +32002

Flag
Coverage Δ

integration-tests
18.24% <2.50%> (-0.03%)
:arrow_down:

unit-tests
?

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

crates/rpc/rpc/src/eth/logs_utils.rs
0.00% <0.00%> (ø)

crates/primitives/src/chain/info.rs
10.00% <100.00%> (ø)

... and 335 files with indirect coverage changes


Add ESP32-C3 support in Haas-Python

Support ESP32-C3 4MB and 2MB, with ESP-IDF v4.4

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.HonestQiao seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

感谢提交 Pull Requests！
Thanks for submitting a pull request.

Security Check : 65c3ec0f9f78b4e23abb503eae3073069ceb2854

auto build success,number:36

autotest success,number:1069


fix(example): fix bug in defaultExample

Great library/site!
I was playing around with the examples and noticed there is a small issue with the code for the default example (first one here: https://react-hook-form.com/get-started).
The two issues are:

The error object is checking the wrong field for errors (checking errors from the example field, not the exampleRequired field)
The error span, is being rendered a string instead of html.

This fixes both of those issues.
Thanks!

Here is an updated codeSandbox for the example as well: https://codesandbox.io/embed/react-hook-form-get-started-m07wd (with some minor additional css to highlight the validation text)

so good! thank you very much. ❤


Need overlay option, please consider to release the next version

Hello, webpack-hot-middleware helps me to resolve the problem of my dev environment, it's awesome!
Now we need the overlay option to prevent minor messages (ex: ESLint) breaks down our work.
Please consider to release the next version.
Thanks!

Whoops! Published as 1.2.0.

Thanks a lot! :smile:


Client to client call between accounts

Description
Is it possible to make a client to client call between two sub account? If it is not possible, can I register the same device for VOIP across accounts?
Voice iOS SDK
6.0.0 via CocoaPods
Xcode
12
iOS Version
14
iOS Device
iPhone X

Hi @Dhivysh
The same device can be used to register with different Twilio account credentials as long as the app bundle IDs and PushKit device tokens are different. The combination is used to associate with an unique binding entry on a specific device.
And you probably already figured out - Twilio accounts do not communicate with each other, even between the main and subaccounts.
-bobie

Thanks @bobiechen-twilio !


Precise Typechecking for remaining libs

Packages impacted by this PR

@azure/container-registry
@azure/digital-twins-core
@azure/iot-modelrepository
@azure/functions-authentication-events
@azure/mixed-reality-authentication
@azure/create-microsoft-playwright-testing
@azure/quantum-jobs
@azure/mixed-reality-remote-rendering
@azure/template-dpg

Issues associated with this PR
N/A
Describe the problem that is addressed by this PR
Tests are not being typechecked and linting isn't configured correctly. This PR migrates those libraries to precise typechecking setup introduced in https://github.com/Azure/azure-sdk-for-js/pull/31786
What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen?
Are there test cases added in this PR? (If not, why?)
N/A
Provide a list of related PRs (if any)
https://github.com/Azure/azure-sdk-for-js/pull/31786
Command used to generate this PR:**(Applicable only to SDK release request PRs)
Checklists

[x] Added impacted package name to the issue description
[ ] Does this PR needs any fixes in the SDK Generator?** (If so, create an Issue in the Autorest/typescript repository and link it here)
[ ] Added a changelog (if necessary)

API change check
API changes are not detected in this pull request.


Make tag for 1.2.3

The podspec latest version says 1.2.3 but there's no 1.2.3 tag so the latest version on cocoapods is still 1.2.2

Dang, sorry about that! I'll try and get to it this weekend.

Added!

Thanks @garrettmoon. Appreciate you being so swift!

Sorry to bother you again, but do you know if Cocoapods should automatically pick up this change, or there's something more to be done? Because it still shows the older version. https://cocoapods.org/pods/PINRemoteImage


ngAnnotate() with ng-strict-di

Thanks for providing the uniminified version in bower main!  I have one more request.  I use ng-strict-di="true" on my application, and when I pull in the unminified version it is throwing errors.  Do you suppose you could add the ngAnnotate() build step before producing the unminified js file as well and not just as a part of the uglify step?
That way both the uniminified and minified versions would pass the ng-strict checks.

I'll try to have a look into it on the weekend. Feel free to provide a PR until then :) Just wondering: Why would you use ngStrictDi?

I have found that in some cases ng-annotate drops the ball.  This annotation give you immediate feedback by throwing an error if something is not minification safe.  That way you don't have nasty surprises when you deploy minified code but develop with unminified code.  Also the errors are then meaningful and its easy to track down versus the ones you get on the unminified version.  It is also the recommendation to use it, as stated in ng-annotate docs.

FYI here is an topic on it.
https://github.com/olov/ng-annotate/issues/142

I added the annotation task a little earlier. ngStrictDi should now work.


pytest verbosity

🚀 Pull Request
Description

We are currently both increasing and decreasing the verbosity of pytest in our CI, because we set the -v and -q flags in different places.  If we remove these flags

I think the CI output will be the same (can check in a minute!)
Developers who want more verbose output when running locally may use the -v flag.  Currently it doesn't work because the -q setting in the pyproject.toml is picked up, and the settings cancel each other out.

Consult Iris pull request check list

Test output from this PR
Test output from last commit to main
Look the same to me 🙂

Thanks @bjlittle 😊


Enhance Mobile Hamburger Menu Behavior and Styling #531

Issue:
Enhance Mobile Navbar Behavior and Styling #531
Description:
The hamburger menu should close when the user clicks anywhere on the screen, outside of the navigation menu. And the hamburger menu and the page background should have a clear visual distinction for better usability.
Feature flag for closing hamburger menu upon clicking anywhere on the screen:
https://github.com/Real-Dev-Squad/website-dashboard/assets/140648846/73857b6b-1500-4c37-9a69-6e200d5a2f83
Implementation of CSS for the hamburger menu:
Before

After

Test:

This pull request had encountered testing issues due to problems with npm installation. However, after gaining access to the RDS GitHub organization, I've successfully addressed these issues and all tests are now passing. As a result, I'm closing this PR and have opened a new one with the necessary changes and functioning tests for review- fix/mobile-navbar: fixed issues in hamburger menu #571

This pull request had encountered testing issues due to problems with npm installation. However, after gaining access to the RDS GitHub organization, I've successfully addressed these issues and all tests are now passing. As a result, I'm closing this PR and have opened a new one with the necessary changes and functioning tests for review- fix/mobile-navbar: fixed issues in hamburger menu #571


Fix: doc typo

doc typo

@hlbris you  will need to fix DCO - see here for more information
https://github.com/envoyproxy/envoy/blob/master/CONTRIBUTING.md#dco-sign-your-work

I have followed the instructions and seen a Signed-off-by by the end of commit message. Please check if it's correct.

all seems good now - thanks @hbrls


Cut a release for text => plain fix

Thanks for the reminder.

Another reminder!
For other readers, you can also install using git.
gem 'phlex-markdown', git: 'https://github.com/phlex-ruby/phlex-markdown'

@joeldrapper You planning to tag a new release with this change?


nixosTests.nixops.unstable.legacyNetwork: Use system.includeBuildDependencies

Description of changes
A use case and test case for

https://github.com/NixOS/nixpkgs/pull/195511

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

All green. Thanks for the ping!


Updated docker compose file to include leveldb

Moved fig.yml to docker-compose.yml and changed out redis configuration for leveldb.
Also corrected minor typo in function name.

Well the typo definitely needs to be fixed. But the leveldb I'm using is internal to the index, so adding it externally does no good, it is not setup for an external leveldb instance.


Remove application-chart in 2.5

Issue: https://github.com/stolostron/backlog/issues/20441
Signed-off-by: Jakob Gray<EMAIL_ADDRESS>

/lgtm


[Bug Report] component tabs, set stretch to true, when resize, the location and size of the tabbar is not right

Element UI version
2.10.0
OS/Browsers version
macOS 10.14.5, chrome75
Vue version
2.6.10
Reproduction Link
https://codepen.io/yj0zhang/pen/PrOYpJ?editors=1010
Steps to reproduce
打开链接，缩放预览窗口大小
What is Expected?
缩放窗口大小，tabbar位置正确，大小正确
What is actually happening?
缩放窗口大小，tabbar位置错误，大小错误

pr welcome


MaterialService.Use2022Materials is serialized internally as Use2022MaterialsXml

Currently, as of whatever version of rbx-dom rojo 7.2.1 uses, attempting to write to MaterialService.Use2022Materials results in the property not being saved properly. It is successfully written to the place file, but Roblox overrides it because it serializes it differently internally.
How rbx-dom writes the property:

How Roblox serializes the property:

Workaround in a rojo *.project.json file:

Worth noting, remodel has the same problem.


Feature request: “All Articles” smart folder

The other day I was searching for an article I had read the day before.  I was surprised to find that there doesn’t seem to be a way to search through ALL articles downloaded to NetNewsWire 6 for iOS.  I couldn’t remember which feed it came through, so I couldn’t find it.
Can there be an “All Articles” smart folder added to NetNewsWire, so we can easily browse through all articles (not just today’s), and search through them as well?

You can go into All Unread, scroll down a bit to reveal the search bar, and the tap the "All Articles" option on the scope bar.

We can't create an "All Articles" smart folder because it would load the entire articles database into memory. We would never get this to perform satisfactorily.
As @stuartbreckenridge points out, you can search all articles on iOS.


create changefeed failed with error: Access denied for user xxx to database 'information_schema'

What did you do?
Create changefeed when the downstream is a mysql cluster with a workload balancer, and the workload balancer is accessed using a domain name;
What did you expect to see?
Create changefeed success;
What did you see instead?
Create changefeed failed with error: Access denied for user xxx to database 'information_schema'
Versions of the cluster
nightly

/found customer


Normalize test class and filenames

Seemed like SomethingTest and SomethingTest.swift were the most popular, so I went with those. While I was at it, I also sorted the exercises in the Project navigator so that it was easier to find things.

This one looks good! Thank you


Check earlier if Istio source code is in the right place

Thus we get a more informative error message. For example,
if one clones Istio in their $HOME and try to run make:
Before:
$ make
Checking that Gopkg.* are in sync with vendor/ submodule:
if this fails, 'make pull' and/or seek on-call help
diff Gopkg.toml vendor/
diff Gopkg.lock vendor/
mkdir: cannot create directory ‘//out’: Permission denied
make: *** [//out/linux_amd64/release] Error 1

After this patch:
$ make
Istio not found in GOPATH/src/istio.io. Make sure to clone Istio on that path.
make: *** [Makefile:185: check-tree] Error 1

/lgtm

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: ldemailly
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [ldemailly]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@jwendell: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e-v1alpha3.sh
0d8af8b81f3384b3b585e25ec8ccb0edb3e5eb24
link
/test istio-pilot-e2e-v1alpha3

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@jwendell: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e-v1alpha3.sh
0d8af8b81f3384b3b585e25ec8ccb0edb3e5eb24
link
/test istio-pilot-e2e-v1alpha3

prow/e2e-bookInfoTests.sh
0d8af8b81f3384b3b585e25ec8ccb0edb3e5eb24
link
/test e2e-bookInfo

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest

@jwendell: you can't request testing unless you are a istio member.

In response to this:

/retest

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

ok, sir. Although I'm sure those failures are not my fault :)

merged - unrelated failures


fix: handle annotation level references

Current dependencies on/for this PR:

main

PR #73

PR #74

PR #75   👈

PR #76

This comment was auto-generated by Graphite.


need a spec for profiles

We need a spec for profiles, in particular:

what meta-keys are we going to allow? e.g. resources.memory = 25%
we're storing these in a DB (i.e. not in the LXC config file), so what does the schema look like (this is probably pretty simple)
what happens if someone sets a lxc.foo key instead of one of our predefined ones above? I guess we want to provide some way to set (and get?) arbitrary lxc.* keys, perhaps it is via this mechanism.

Any specific reason to use DB over simple file?
I think, simple config file + entry points for simple(shell) provisioning scripts would be useful to user.
i.e define LXC configuration like memory, cpu, storage, networking etc + any provisioning code like installing some packages or copying some config file.
something like vagrantfile or Dockerfile.
If profiles are stored in DB, There need to be an additional configuration tool, which should accept users input to generate config file.

Sounds like the first part of the database spec will have to be "why a database?" :)
And it's a fair question.
We actually didn't think we'd gain anything by using one until pretty recently (and that's why it's not already part of LXD).
The main goal behind using a database (and we're talking sqlite here, not a big fancy engine) is so we can do very quick queries without having to parse thousands of files.
We expect LXD to be able to handle several thousands containers even on relatively common hardware (I'm doing that on my Haswell i5 laptop with just 8GB of RAM), that means that answering "what containers are using br25" becomes a very expensive query which requires lxd to parse every single container config.
The LXD API and command line have also been designed to abstract the container technology away (though we will let users set lxc.* keys in their configs and profiles) so we really shouldn't be using LXC's own config files to store lxd config properties.
As a result the current thought is that we will:

Store the container settings, server settings, profiles, certificates, ... in a sqlite database.
On container startup, the LXC config files will be generated from the database config

Also to clarify exactly what profiles are. A profile is simply a set of config keys and it's meant as a way to avoid needless container config duplication.
An example without profiles would be:
lxc create images:lxc-images/ubuntu/trusty/amd64/default ct1
lxc config ct1 resources.cpus 2
lxc config ct1 resources.memory 2G
lxc config ct1 resources.networks lxcbr0,br1
lxc start ct1
lxc create images:lxc-images/ubuntu/trusty/amd64/default ct2
lxc config ct2 resources.cpus 2
lxc config ct2 resources.memory 2G
lxc config ct2 resources.networks lxcbr0,br1
lxc start ct2
Now with profiles, it'd be:
lxc config profile create test
lxc config profile set test resources.cpus 2
lxc config profile set test resources.memory 2G
lxc config profile set test resources.networks lxcbr0,br1
lxc start images:lxc-images/ubuntu/trusty/amd64/default ct1 -p test
lxc start images:lxc-images/ubuntu/trusty/amd64/default ct2 -p test

Thanks for background of this approach.
It sounds well aligned with the problem you mentioned.
I was thinking from user/programmers perspective, who want to define LXC machine with distribute them among teams / clients etc.
A simple use-case.
Migrating old RHEL/CentOS instances running on baremetal to LXC instances,
One can write provisioning code along with machine definition, and could use this for build those instances in one command.
I was thinking from orchestration point of view.
May be a different tool, can be implemented to provide such feature.

Sounds like the first part of the database spec will have to be "why a database?" :)

In the future I think a fancy database backed could pay off. Let me do and example: powedns. It uses a modular backend architecture (mysql, postgres and others). This allows it to use native mysql's replication to make an HA setup easier (in fact dns replication is entirely realized via mysql).
So lxd could implement a pluggable backend architecture that allow to start simple and small (sqllite which doesn not need any daemon at all, just files on disk). My experience with mysql replication in production is very positive, it just works.

Well, I certainly see how it makes sense for a service but not so much for lxd.
lxd runs on each compute node of your cluster. If you loose a compute node, having a duplicate of its database will be no good to you since you'll have lost the containers anyway.
What needs to be HA is whatever talks to lxd and keeps track of containers at an higher level. That's typically going to be OpenStack which does support multiple databases and HA properly.


Add logging for internals

Track if AppSignal is starting and if the OpenTelemetry instrumentations are added.
[skip changeset]
Closes #34

This print could/should also be done through the internal logger, I think: https://github.com/appsignal/appsignal-python/blob/a98c196e9964522bb5c7ead57f196228e7c9fe79/src/appsignal/agent.py#LL36C36-L36C36


Update community files (#3179)

Signed-off-by: Knative Automation<EMAIL_ADDRESS>

/retest

OCF Webhook is merging this PR


There are no simulators for tvOS

There is no way to build and run applications for tvOS

Hello! Thank you for opening the issue. I recently added tvOS support in version 0.1.41

And thank you, @hyzyla!


Service worker competency

Very similar format to Web Worker Competency so if you provide any general feedback I'll apply it to both of them where applicable.

awwww, conflicts.

@codeallthethingz - conflicts resolved!


Better argument parsing

Currently mods with spaces in the name cannot be installed, removed or updated

Duplicate of #7


Add default social image to repository settings

Scratch that, didn't realise we had this functionality already.


Change default on enter behaviour

How can I change default on enter behaviour. I can press ctl-t  to open file in new tab, but I want to make enter open file in new tab.  It it possible to configure plugin like this?

let g:rnvimr_action = {
            \ '<CR>': 'NvimEdit tabedit'
            \ }

:h rnvimr_action for detail

Is there an option to switch to existing tab if already opened?

drop seemly doesn't work in rnvimr, I will fix it later.

update the repo and
let g:rnvimr_action = {
            \ '<CR>': 'NvimEdit drop'
            \ }

How would this be done with l key, which - when at a file - also opens it in ranger by default?
Because if I did it like this...
let g:rnvimr_action = {
            \ 'l': 'NvimEdit drop'
            \ '<CR>': 'NvimEdit drop'
            \ }

...then I can't use l to navigate around ranger :(

How would this be done with l key, which - when at a file - also opens it in ranger by default?
Because if I did it like this...
let g:rnvimr_action = {
            \ 'l': 'NvimEdit drop',
            \ '<CR>': 'NvimEdit drop'
            \ }

...then I can't use l to navigate around ranger :(

Upgrade code and  let g:rnvimr_edit_cmd = 'drop'

How would this be done with l key, which - when at a file - also opens it in ranger by default?
Because if I did it like this...
let g:rnvimr_action = {
            \ 'l': 'NvimEdit drop',
            \ '<CR>': 'NvimEdit drop'
            \ }

...then I can't use l to navigate around ranger :(

Sorry, meant this:
let g:rnvimr_action = {
            \ 'l': 'NvimEdit tabedit',
            \ '<CR>': 'NvimEdit tabedit'
            \ }

So I'd want l to of course navigate as normal, but also open file in new tab (instead of in ranger popup)

How would this be done with l key, which - when at a file - also opens it in ranger by default?
Because if I did it like this...
let g:rnvimr_action = {
            \ 'l': 'NvimEdit drop',
            \ '<CR>': 'NvimEdit drop'
            \ }

...then I can't use l to navigate around ranger :(

Sorry, meant this:
let g:rnvimr_action = {
            \ 'l': 'NvimEdit tabedit',
            \ '<CR>': 'NvimEdit tabedit'
            \ }

So I'd want l to of course navigate as normal, but also open file in new tab (instead of in ranger popup)

Remove your g:rnvimr_action

Remove your g:rnvimr_action

What do I then add instead?


prevent yielded progress data from being swallowed

fixes #23

@sneal when you have a chance, could you release the gem or feel free to add me as owner and I can do it. Thanks for your help on this!

This is released now v0.2.3


Community Guidelines

I was unable to find any community guidelines in the repository.
Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Thanks @peilun-he


PVC creation support

Description:
In the failover deployment scenario, the siddhi applications should maintain the persistence in two levels.

Messaging system (NATS/KAFKA)
Siddhi application level

The messaging system level persistence will handle by NATS or KAFKA. In order to handle siddhi application level persistence, siddhi app deployment needs a persistence volume. The creation of PV is an infrastructure configuration. Therefore the user should have to create a PV manually. However, the creation of PVC and bound it to the deployment pod can be done by siddhi operator.
To do that user can specify PV configurations like below and relevant PVC should be created by the siddhi operator according to this configs.
persistence.volume:
  access.modes:
    - ReadWriteOnce
  volume.mode: Filesystem
  storageClassName: standard
  resources:
    requests:
      storage: 1Gi

Suggested Labels:
type/new-feature

The automatic PVC creation support will be added in the next failover support release. Users have to create kubernetes PV by themselves and the relevant configurations of the PVC should be added to the SiddhiProcess CR object.
Siddhi operator will create PVC and mount it into the process app deployment. The persistence support only enables for the process app of the failover deployment. The passthrough app will be a stateless app.

Fixed in https://github.com/siddhi-io/siddhi-operator/pull/34 by Buddhi..


[WIP] Modify Base64 APIs based on API review and update uses

Made some changes to the Base64 APIs based on https://github.com/dotnet/corefx/issues/24568#issuecomment-337427063.
Open Questions:

How can we incorporate isFinalBlock true/false to the "in place" methods? Since they are destructive, if someone passes isFinalBlock false to EncodeToUtf8InPlace, what are we expected to do?
I am not sure if we can change DecodeFromUtf8InPlace to return bool instead of OperationStatus. We lose the OperationStatus.NeedMoreData state which we need for partial processing. If we return bool, what do we do in the case where the input buffer contains data that is not a multiple of 4 (i.e. the following scenario)?

Span<byte> buffer; // data that is a multiple of 4
int splitLocation; //some arbitrary location, not at a multiple of 4
Span<byte> input1 = buffer.Slice(0, splitLocation);
DecodeFromUtf8InPlace(input1, out consumed, out written); // returns NeedMoreData
Span<byte> input2 = intput1.Slice(consumed) + buffer.Slice(splitLocation);
DecodeFromUtf8InPlace(input2.CopyTo(buffer.Slice(written)), out consumed, out written); // returns Done

cc @KrzysztofCwalina, @GrabYourPitchforks

IMO partial processing doesn't make sense for the in-place transforms. The point of partial processing it to support streaming scenarios, and in these cases you're shuttling data from a source to a sink. With in-place transformations you're only ever operating on a single buffer, so there's an implicit expectation that all of the data on which to operate is already self-contained within that buffer. So there's no loop mechanism, hence no "is final block?" parameter needed. It's an implicit one-shot operation.

Also, regarding the return type and behavior of in-place transforms, you have three potential outcomes.
First, the transform could expand the input data, such as in the case of Base64Encode. As stated earlier, you can't possibly perform a partial transform, since you're necessarily overwriting some of the input data with the output. This causes the "remainder" of the input data to be lost, which means the method cannot be called in a loop. "Expand" transforms are therefore necessarily one-shot.
Second, the transform could shrink the input data, such as in the case of Base64Decode. In theory it's possible to support partial transforms here if you introduce an int bytesConsumed out parameter. But now you run into the issue that on the next iteration of the loop, the "start reading from here" and "start writing to here" references point to different locations in the buffer. The way to address this is to have ReadOnlySpan<byte> source and Span<byte> sink parameters, but then you've reinvented the non-in-place signature. Alternatively, the caller could always memmove the input data so that on each iteration it's properly aligned, but... why? It just seems like extra work for the caller when there's already a perfectly good non-in-place transform API. So "shrink" transforms are also presumably one-shot in the sense that they're not adding significant value for streaming scenarios.
The final option is a transform whose output length matches its input length. This is the only possible in-place transform that could be called in a loop correctly, which means that it could be used for non-one-shot scenarios. But there are still two problems. First, we don't have any transforms under consideration that maintain the data length during transform, so we don't know of any practical use case for this. Second, if you do assume that this is used in a streaming scenario, then you're also assuming that you're operating on multiple disjointed buffers. The looping code still needs to take care of stitching if a single block of data exists between multiple buffers, which means that there's a temporary buffer being used for this purpose, which means data is being copied between the temporary buffer and the actual data buffers, so why not just skip the memcpy step and pass the two buffer references directly to the non-in-place transform API? Like the "shrink" transform, the "keep" transform would in practice end up being one-shot since it's not adding significant value for streaming scenarios.
If everything is one-shot, then the input buffer is presumed to contain all of the data, which means that NeedsMoreData and OutputTooSmall return codes are meaningless. The operation either completes entirely or fails entirely, which implies a bool return type.

My intuition tells me re-entrant in-place transformations can be done (even for the expanding ones), but the APIs might be very wacky, and the implementation tricky.

The operation either completes entirely or fails entirely, which implies a bool return type.

In the case you return false, the input buffer that the user provided most likely get partially trampled on(unless we validate the input buffer first, which means walking it twice). What is the user expected to do when we return false? Given there is no recourse for the user, other than the user try to get back the original input from its source, should we throw instead and have in place APIS that return void rather than a TryX?


Update XCResultKit to 0.5.7 fixing #166

Bumps XCResultKit to 0.5.7 which fixes #166.
Tested on configuration which was failing with previous v0.5.5 version of XCResultKit: 4 devices with 39 test cases = 156 test cases in total

@chrisballinger Is there any ETA when this fix will get released?

@chrisballinger Do you plan to release a new version with this fix?

@nadiakasem, if you installing it via brew and using https://github.com/TitouanVanBelle/XCTestHTMLReport/blob/develop/xchtmlreport.rb file, then PR https://github.com/TitouanVanBelle/XCTestHTMLReport/pull/176 should allow you to use develop version waiting for a new release.

Thanks @krin-san! Unfortunately I use the curl method with install script, so the release would be very helpful.
@TitouanVanBelle are you planning any releases soon? :)


Submodule update, refs #0

@loganharbour what's up with container errors on Cardinal?

it's two months old

ah cool. Fixed now thanks!


New Extension: Kit-DnD + Material-DnD

New material-ui extension with multiple widgets and components to build a drag and drop UI Schema editor optimized for block based content input with clean data output. For usages this extension would replace the whole UISchema at the consumer component.

own extension package
using react-dnd ~react-beautiful-dnd (as, yeah, good UX and beautiful)~

~problem: does not support grid/different sizes, workaround: multi dropzones in grid layout (to be tested)~
new solution: using react-dnd and providing an custom "non-UI logic package, containing the needed DnD detection and store updating"

copy-from-selection logic ~(not transfer list)~
~selection uses $defs with e.g. grouping/filtering keywords to know which schemas can be added to the dropzones~
~root dropzones are build by the object properties~
supported are

"multiple droppable zones": root object with arrays as properties, where the array items are an object
"single droppable zone": root array , where the array items are an object

nested grids
include multiple layouts, like: roots as list, roots as tabs, roots as pages
include multiple widgets like: AccordionList, SimpleList etc.
~support for $ref to external URLs inside $defs, with additionally $blockScope keyword and e.g. t, title, description for labeling~
support generating new schema as array tuples when using $ref in definitions, this way conditional validations inside the root would work to restrict e.g droppable blocks, backend validation by user added/moved blocks
it should be possible to combine hard-schemas with dynamic parts, e.g. having three roots main, sidebar and event, where event is a hard schema that must be filled out for the page e.g. Event Page / Event, and main and sidebar are droptargets for adding blocks dynamically
it should be possible to tell that a root must only have 2 blocks, no subblocks etc.

// todo: add more requirements

Split up in two issues and archiving this one.


Revising Bucket Analysis Notebook

This PR revises the Bucket Analysis notebook, with an emphasis on cleaning up aesthetics, fixing broken visualizations, minor word changes, and adding a table of contents. In addition, I've updated the READMEs accordingly.

Much cleaner read than the previous version! Thank you for taking the time to update this.
Three comments:

When running the readme generator, make sure to update latest so it generates updated tags for notebooks on the latest version. The readme shows this notebook is on 0.8.9 but is rendering grey.
With the next AUI 5.1.15 release, one will be able to adjust the number of subplots in a chart. This might be of interest to you for both the existing jupyterlab widgets and on the dashboard. Might even be worth waiting a week :)
While we're tinkering with this, we might as well update the banners on this to the new ones.

When running the readme generator, make sure to update latest so it generates updated tags for notebooks on the latest version. The readme shows this notebook is on 0.8.9 but is rendering grey.

This is fixed!

With the next AUI 5.1.15 release, one will be able to adjust the number of subplots in a chart. This might be of interest to you for both the existing jupyterlab widgets and on the dashboard. Might even be worth waiting a week :)

Yup agreed, going to tackle these during the next upgrade cycle (which is soon).

While we're tinkering with this, we might as well update the banners on this to the new ones.

Done!

Please remove the NBviewer comment - since it was last tested, the preview on GH was fixed. Also, same comment about the banners (center, from s3).

Discussed with @printhellohetal, this has been resolved with the new release of the Atoti UI 5.1.15 release, therefore resolving this.

View entire conversation on ReviewNB

Please remove the NBviewer comment - since it was last tested, the preview on GH was fixed. Also, same comment about the banners (center, from s3).

ReviewNB comment has been resolved! In terms of the banner stuff, copying and pasting from my comment over at https://github.com/atoti/atoti/pull/824#issuecomment-1971410981.
Ahh thank you for that, I glossed over this aspect (S3 + centering). I updated the corresponding banners on S3, but it looks like perhaps AWS needs to refresh on their end until the new images replace the old images at the same endpoint.
As an example + test, I uploaded new-banner.png just now and this works at https://data.atoti.io/notebooks/banners/new-banner.png, while https://data.atoti.io/notebooks/banners/Discover-Atoti-now.png still points to the old banner (as of this writing). So I guess we need to just wait 🤷, but if this persists, then I'll fix these banners in the notebooks by pointing to a new endpoint during the upgrade cycle.

View / edit / reply to this conversation on ReviewNB
printhellohetal commented on 2024-03-01T21:34:27Z ----------------------------------------------------------------
Please remove the note to use NB Viewier, that was an issue that was fixed in an earlier release.

Ahhhh at first I thought you meant to resolve the ReviewNB comment (as in hit the "Resolve Conversation" button) 😛 — the ReviewNB comment at the top the notebook is now removed.

Ah, I actually took this image out along with the gifs at the top since I didn't think they were really necessary: My rationale is as follows... In regards to the gifs: Not sure if we wanted so much Atoti advertising/exposition as this detracts away from getting to the code (in my experience, developers don't want to read a wall of text before they get to the actual exercise).  In regards to the data loading image: I figured every notebook is going to have a step where we set up the cube and load the data, therefore should this same image be in all our notebooks then? I would argue no, and that perhaps this image belongs in a more fundamental tutorial notebook, but we should be balancing succinctness vs. verbosity, especially in the context of a more developer-oriented audience. Regardless, I've added these images and gifs back in so that we can decide what to do with them (re-branding or otherwise).

View entire conversation on ReviewNB

I read the AP style guidelines at https://activeviam.atlassian.net/wiki/spaces/ATOTI/pages/24118412/Communication+Guidelines+and+Materials, specifically for the link https://writer.com/blog/a-comprehensive-guide-to-the-ap-style-of-writing/#:~:text=Generally%20speaking%2C%20AP%20style%20uses,pronouns%2C%20adjectives%2C%20and%20adverbs. and upon reading this I think we should use Title Casing on the title of our notebooks and on our level 2 headers, namely because I think the aesthetics looks better with capitalization at these levels, and it looks like we are given the following allowance: AP style guidelines for headlines may differ from what certain content writers or marketers are used to. Generally speaking, AP style uses title case for headlines, which means all words are capitalized except for certain short words, such as articles and short prepositions.  This being said. I can agree that the level 3 headers (or sub-steps) can be in sentence casing.

View entire conversation on ReviewNB

This is done!

View entire conversation on ReviewNB


problem in Pkcs11Interop with new dll from epass 2003

dear sir,
IPkcs11Library pkcs11Library = factories.Pkcs11LibraryFactory.LoadPkcs11Library(factories, DllLibPath, AppType.MultiThreaded);
give null value ptr with new dll from epass 2003 version<IP_ADDRESS>9 with feitian token
will be there an update or a fix for this problem package Pkcs11Interop 5.1.2
thanks for your patience

Could you please include the logs generated by PKCS11-LOGGER while running your application? This will help me understand and address the problem more precisely.

I am closing this issue due to prolonged inactivity.


Extend chain.json source being the source chain to the whole file

As part of #431 @xbalbinus brought up that we can have the chain provide the source for the entire chain.json file, not just the codebase component.
I think this is a great idea!
The only problem is there are fields which the source chain should not be able to modify without review, e.g.
  "network_type": "mainnet",
  "pretty_name": "Osmosis",
  "chain_id": "osmosis-1",
  "bech32_prefix": "osmo",
  "daemon_name": "osmosisd",
  "node_home": "$HOME/.osmosisd",
  "slip44": 118,

I suggest we go with Xiangan's suggestion to extend the automation being built in #431 to allow copying the entire file, unless it has a modification in one of the above listed fields
cc @sunnya97

I can add in checks to prevent the action from running given modifications to any of these fields (or any other restricted ones, feel free to let me know) if that sounds good?

That does sound good to me.
Later on, we should probably group these into a a 'stable' heading or smth, but I don't think that should block the initial work. (and will be an annoying refactor)

At the moment, all github actions related things are working well!
Successful run:
Update branch created: https://github.com/xBalbinus/chain-registry/tree/update/version-2022-06-20T16-01-50Z

Updated chain.json result: https://github.com/xBalbinus/chain-registry/blob/update/version-2022-06-20T16-01-50Z/osmosis/chain.json


feat: WT-2156 Bridge Widget Wallet Images for WC

Hi👋, please prefix this PR's title with:

[ ] breaking-change: if you have introduced modification that necessitates immediate adjustments by this SDK's users to their applications, clients, or integrations to avert disruptions to existing features or functionalities.
[x] feat:, fix:, refactor:, docs:, or chore:.

Summary

JIRA ticket: https://immutable.atlassian.net/browse/WT-2156
Demo + screenshots: https://imtbl.slack.com/archives/C0414KQ5162/p1709005294289049
Detail and impact of the change

Added

pulled wallet ids from WC explorer into constants
in WalletConnectManager, fetch wallet image url from WC Explorer API based on provider name
extend useWalletConnect hook to getWalletLogoUrl from WalletConnectManager to be accessed in relevant components
updates WC modal background overlay colour (https://imtbl.slack.com/archives/C0414KQ5162/p1708489972283279)
implement small WC logo in top right corner in WalletNetworkButton, BridgeReviewSummary, Transactions

Looks great @sharonsheah , nice work. I'd just check if we are making the call to get listings everytime we need to get a wallet logo url. I'd say that the wallet listing metadata wouldn't change too often and it is probably safe for us to cache it


Stop sticking an MTRErrorHolder in the userInfo of NSErrors.

Otherwise the errors we create cannot be usefully encoded/decoded.
Fixes https://github.com/project-chip/connectedhomeip/issues/22388

Fast-tracking platform-specific fix with platform owner review.