jupyverse 0.7.5__tar.gz → 0.7.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {jupyverse-0.7.5 → jupyverse-0.7.6}/.github/workflows/check-release.yml +1 -1
- jupyverse-0.7.6/.github/workflows/prep-release.yml +48 -0
- jupyverse-0.7.6/.github/workflows/publish-release.yml +58 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/.pre-commit-config.yaml +1 -1
- {jupyverse-0.7.5 → jupyverse-0.7.6}/CHANGELOG.md +21 -2
- {jupyverse-0.7.5 → jupyverse-0.7.6}/PKG-INFO +1 -1
- jupyverse-0.7.6/jupyverse/__init__.py +1 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/__init__.py +1 -1
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/cli.py +26 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/pyproject.toml +1 -1
- jupyverse-0.7.6/plugins/auth/fps_auth/__init__.py +1 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth/fps_auth/main.py +10 -10
- jupyverse-0.7.6/plugins/auth_fief/fps_auth_fief/__init__.py +1 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_fief/fps_auth_fief/main.py +3 -3
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_jupyterhub/fps_auth_jupyterhub/__init__.py +1 -1
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_jupyterhub/fps_auth_jupyterhub/main.py +3 -3
- jupyverse-0.7.6/plugins/contents/fps_contents/__init__.py +1 -0
- jupyverse-0.7.6/plugins/frontend/fps_frontend/__init__.py +1 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/frontend/fps_frontend/main.py +2 -2
- jupyverse-0.7.6/plugins/jupyterlab/fps_jupyterlab/__init__.py +1 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/jupyterlab/fps_jupyterlab/main.py +3 -3
- jupyverse-0.7.6/plugins/kernels/fps_kernels/__init__.py +1 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/kernels/fps_kernels/kernel_driver/connect.py +27 -3
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/kernels/fps_kernels/kernel_driver/driver.py +11 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/kernels/fps_kernels/kernel_driver/message.py +8 -5
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/kernels/fps_kernels/kernel_server/message.py +5 -5
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/kernels/fps_kernels/kernel_server/server.py +104 -73
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/kernels/fps_kernels/main.py +4 -4
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/kernels/fps_kernels/routes.py +15 -8
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/kernels/pyproject.toml +1 -0
- jupyverse-0.7.6/plugins/lab/fps_lab/__init__.py +1 -0
- jupyverse-0.7.6/plugins/login/fps_login/__init__.py +1 -0
- jupyverse-0.7.6/plugins/nbconvert/fps_nbconvert/__init__.py +1 -0
- jupyverse-0.7.6/plugins/noauth/fps_noauth/__init__.py +1 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/noauth/fps_noauth/main.py +0 -1
- jupyverse-0.7.6/plugins/notebook/fps_notebook/__init__.py +1 -0
- jupyverse-0.7.6/plugins/resource_usage/fps_resource_usage/__init__.py +1 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/resource_usage/fps_resource_usage/main.py +2 -2
- jupyverse-0.7.6/plugins/terminals/fps_terminals/__init__.py +1 -0
- jupyverse-0.7.6/plugins/webdav/fps_webdav/__init__.py +1 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/webdav/fps_webdav/main.py +2 -2
- jupyverse-0.7.6/plugins/yjs/fps_yjs/__init__.py +1 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/main.py +2 -2
- {jupyverse-0.7.5 → jupyverse-0.7.6}/tests/conftest.py +0 -1
- {jupyverse-0.7.5 → jupyverse-0.7.6}/tests/test_kernels.py +1 -1
- jupyverse-0.7.5/jupyverse/__init__.py +0 -1
- jupyverse-0.7.5/plugins/auth/fps_auth/__init__.py +0 -1
- jupyverse-0.7.5/plugins/auth_fief/fps_auth_fief/__init__.py +0 -1
- jupyverse-0.7.5/plugins/contents/fps_contents/__init__.py +0 -1
- jupyverse-0.7.5/plugins/frontend/fps_frontend/__init__.py +0 -1
- jupyverse-0.7.5/plugins/jupyterlab/fps_jupyterlab/__init__.py +0 -1
- jupyverse-0.7.5/plugins/kernels/fps_kernels/__init__.py +0 -1
- jupyverse-0.7.5/plugins/lab/fps_lab/__init__.py +0 -1
- jupyverse-0.7.5/plugins/login/fps_login/__init__.py +0 -1
- jupyverse-0.7.5/plugins/nbconvert/fps_nbconvert/__init__.py +0 -1
- jupyverse-0.7.5/plugins/noauth/fps_noauth/__init__.py +0 -1
- jupyverse-0.7.5/plugins/notebook/fps_notebook/__init__.py +0 -1
- jupyverse-0.7.5/plugins/resource_usage/fps_resource_usage/__init__.py +0 -1
- jupyverse-0.7.5/plugins/terminals/fps_terminals/__init__.py +0 -1
- jupyverse-0.7.5/plugins/webdav/fps_webdav/__init__.py +0 -1
- jupyverse-0.7.5/plugins/yjs/fps_yjs/__init__.py +0 -1
- {jupyverse-0.7.5 → jupyverse-0.7.6}/.devcontainer/devcontainer.json +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/.devcontainer/requirements.txt +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/.github/workflows/test.yml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/.gitignore +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/CONTRIBUTING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/binder/environment.yml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/binder/jupyter_notebook_config.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/binder/postBuild +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/binder/start +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/index.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/install.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/jupyter.svg +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/plugins/auth.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/plugins/contents.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/plugins/frontend.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/plugins/jupyterlab.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/plugins/kernels.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/plugins/lab.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/plugins/login.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/plugins/nbconvert.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/plugins/notebook.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/plugins/resource_usage.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/plugins/terminals.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/plugins/yjs.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/tutorials/jupyterhub_jupyverse_deployment.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/tutorials/standalone_jupyverse_deployment.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/usage/microservices.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/usage/multi_user.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/docs/usage/single_user.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/app/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/auth/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/auth/models.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/contents/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/contents/models.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/exceptions.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/frontend/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/jupyterlab/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/kernels/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/kernels/models.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/lab/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/login/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/main/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/nbconvert/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/notebook/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/resource_usage/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/terminals/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/terminals/models.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/yjs/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/jupyverse_api/yjs/models.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/jupyverse_api/tests/test_resource_lock.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/mkdocs.yml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/notebooks/admin_users.ipynb +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/notebooks/admin_users.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth/fps_auth/backends.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth/fps_auth/config.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth/fps_auth/db.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth/fps_auth/models.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth/fps_auth/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth/fps_auth/routes.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_fief/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_fief/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_fief/fps_auth_fief/backend.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_fief/fps_auth_fief/config.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_fief/fps_auth_fief/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_fief/fps_auth_fief/routes.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_fief/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_jupyterhub/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_jupyterhub/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_jupyterhub/fps_auth_jupyterhub/config.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_jupyterhub/fps_auth_jupyterhub/db.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_jupyterhub/fps_auth_jupyterhub/launch.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_jupyterhub/fps_auth_jupyterhub/models.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_jupyterhub/fps_auth_jupyterhub/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_jupyterhub/fps_auth_jupyterhub/routes.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/auth_jupyterhub/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/contents/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/contents/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/contents/fps_contents/fileid.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/contents/fps_contents/main.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/contents/fps_contents/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/contents/fps_contents/routes.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/contents/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/frontend/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/frontend/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/frontend/fps_frontend/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/frontend/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/jupyterlab/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/jupyterlab/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/jupyterlab/fps_jupyterlab/index.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/jupyterlab/fps_jupyterlab/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/jupyterlab/fps_jupyterlab/routes.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/jupyterlab/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/kernels/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/kernels/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/kernels/fps_kernels/kernel_driver/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/kernels/fps_kernels/kernel_driver/kernelspec.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/kernels/fps_kernels/kernel_driver/paths.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/kernels/fps_kernels/kernel_server/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/kernels/fps_kernels/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/lab/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/lab/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/lab/fps_lab/main.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/lab/fps_lab/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/lab/fps_lab/routes.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/lab/fps_lab/static/favicon.ico +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/lab/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/fps_login/main.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/fps_login/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/fps_login/routes.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/fps_login/static/favicons/favicon-busy-1.ico +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/fps_login/static/favicons/favicon-busy-2.ico +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/fps_login/static/favicons/favicon-busy-3.ico +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/fps_login/static/favicons/favicon-file.ico +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/fps_login/static/favicons/favicon-notebook.ico +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/fps_login/static/favicons/favicon-terminal.ico +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/fps_login/static/favicons/favicon.ico +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/fps_login/static/index.html +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/fps_login/static/logo/github.svg +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/fps_login/static/logo/logo.png +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/fps_login/static/style/index.css +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/login/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/nbconvert/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/nbconvert/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/nbconvert/fps_nbconvert/main.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/nbconvert/fps_nbconvert/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/nbconvert/fps_nbconvert/routes.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/nbconvert/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/noauth/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/noauth/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/noauth/fps_noauth/backends.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/noauth/fps_noauth/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/noauth/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/notebook/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/notebook/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/notebook/fps_notebook/main.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/notebook/fps_notebook/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/notebook/fps_notebook/routes.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/notebook/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/resource_usage/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/resource_usage/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/resource_usage/fps_resource_usage/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/resource_usage/fps_resource_usage/routes.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/resource_usage/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/terminals/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/terminals/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/terminals/fps_terminals/main.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/terminals/fps_terminals/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/terminals/fps_terminals/routes.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/terminals/fps_terminals/server.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/terminals/fps_terminals/win_server.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/terminals/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/webdav/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/webdav/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/webdav/fps_webdav/config.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/webdav/fps_webdav/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/webdav/fps_webdav/routes.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/webdav/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/webdav/tests/conftest.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/webdav/tests/test_webdav.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/COPYING.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/README.md +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/py.typed +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/routes.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ydocs/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ydocs/utils.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ydocs/ybasedoc.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ydocs/yblob.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ydocs/yfile.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ydocs/ynotebook.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ydocs/yunicode.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ywebsocket/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ywebsocket/asgi_server.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ywebsocket/awareness.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ywebsocket/django_channels_consumer.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ywebsocket/websocket.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ywebsocket/websocket_provider.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ywebsocket/websocket_server.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ywebsocket/yroom.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ywebsocket/ystore.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ywebsocket/yutils.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ywidgets/__init__.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/fps_yjs/ywidgets/widgets.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/plugins/yjs/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/pyproject.toml +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/pytest.ini +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/tests/data/notebook0.ipynb +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/tests/data/notebook1.ipynb +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/tests/test_app.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/tests/test_auth.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/tests/test_contents.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/tests/test_execute.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/tests/test_server.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/tests/test_settings.py +0 -0
- {jupyverse-0.7.5 → jupyverse-0.7.6}/tests/utils.py +0 -0
@@ -0,0 +1,48 @@
|
|
1
|
+
name: "Step 1: Prep Release"
|
2
|
+
on:
|
3
|
+
workflow_dispatch:
|
4
|
+
inputs:
|
5
|
+
version_spec:
|
6
|
+
description: "New Version Specifier"
|
7
|
+
default: "next"
|
8
|
+
required: false
|
9
|
+
branch:
|
10
|
+
description: "The branch to target"
|
11
|
+
required: false
|
12
|
+
post_version_spec:
|
13
|
+
description: "Post Version Specifier"
|
14
|
+
required: false
|
15
|
+
# silent:
|
16
|
+
# description: "Set a placeholder in the changelog and don't publish the release."
|
17
|
+
# required: false
|
18
|
+
# type: boolean
|
19
|
+
since:
|
20
|
+
description: "Use PRs with activity since this date or git reference"
|
21
|
+
required: false
|
22
|
+
since_last_stable:
|
23
|
+
description: "Use PRs with activity since the last stable git tag"
|
24
|
+
required: false
|
25
|
+
type: boolean
|
26
|
+
jobs:
|
27
|
+
prep_release:
|
28
|
+
runs-on: ubuntu-latest
|
29
|
+
permissions:
|
30
|
+
contents: write
|
31
|
+
steps:
|
32
|
+
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
|
33
|
+
|
34
|
+
- name: Prep Release
|
35
|
+
id: prep-release
|
36
|
+
uses: jupyter-server/jupyter_releaser/.github/actions/prep-release@v2
|
37
|
+
with:
|
38
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
39
|
+
version_spec: ${{ github.event.inputs.version_spec }}
|
40
|
+
# silent: ${{ github.event.inputs.silent }}
|
41
|
+
post_version_spec: ${{ github.event.inputs.post_version_spec }}
|
42
|
+
branch: ${{ github.event.inputs.branch }}
|
43
|
+
since: ${{ github.event.inputs.since }}
|
44
|
+
since_last_stable: ${{ github.event.inputs.since_last_stable }}
|
45
|
+
|
46
|
+
- name: "** Next Step **"
|
47
|
+
run: |
|
48
|
+
echo "Optional): Review Draft Release: ${{ steps.prep-release.outputs.release_url }}"
|
@@ -0,0 +1,58 @@
|
|
1
|
+
name: "Step 2: Publish Release"
|
2
|
+
on:
|
3
|
+
workflow_dispatch:
|
4
|
+
inputs:
|
5
|
+
branch:
|
6
|
+
description: "The target branch"
|
7
|
+
required: false
|
8
|
+
release_url:
|
9
|
+
description: "The URL of the draft GitHub release"
|
10
|
+
required: false
|
11
|
+
steps_to_skip:
|
12
|
+
description: "Comma separated list of steps to skip"
|
13
|
+
required: false
|
14
|
+
|
15
|
+
jobs:
|
16
|
+
publish_release:
|
17
|
+
runs-on: ubuntu-latest
|
18
|
+
environment: release
|
19
|
+
permissions:
|
20
|
+
id-token: write
|
21
|
+
steps:
|
22
|
+
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
|
23
|
+
|
24
|
+
- uses: actions/create-github-app-token@v1
|
25
|
+
id: app-token
|
26
|
+
with:
|
27
|
+
app-id: ${{ vars.APP_ID }}
|
28
|
+
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
29
|
+
|
30
|
+
- name: Populate Release
|
31
|
+
id: populate-release
|
32
|
+
uses: jupyter-server/jupyter_releaser/.github/actions/populate-release@v2
|
33
|
+
with:
|
34
|
+
token: ${{ steps.app-token.outputs.token }}
|
35
|
+
branch: ${{ github.event.inputs.branch }}
|
36
|
+
release_url: ${{ github.event.inputs.release_url }}
|
37
|
+
steps_to_skip: ${{ github.event.inputs.steps_to_skip }}
|
38
|
+
|
39
|
+
- name: Finalize Release
|
40
|
+
id: finalize-release
|
41
|
+
env:
|
42
|
+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
43
|
+
uses: jupyter-server/jupyter_releaser/.github/actions/finalize-release@v2
|
44
|
+
with:
|
45
|
+
token: ${{ steps.app-token.outputs.token }}
|
46
|
+
release_url: ${{ steps.populate-release.outputs.release_url }}
|
47
|
+
|
48
|
+
- name: "** Next Step **"
|
49
|
+
if: ${{ success() }}
|
50
|
+
run: |
|
51
|
+
echo "Verify the final release"
|
52
|
+
echo ${{ steps.finalize-release.outputs.release_url }}
|
53
|
+
|
54
|
+
- name: "** Failure Message **"
|
55
|
+
if: ${{ failure() }}
|
56
|
+
run: |
|
57
|
+
echo "Failed to Publish the Draft Release Url:"
|
58
|
+
echo ${{ steps.populate-release.outputs.release_url }}
|
@@ -2,6 +2,27 @@
|
|
2
2
|
|
3
3
|
<!-- <START NEW CHANGELOG ENTRY> -->
|
4
4
|
|
5
|
+
## 0.7.6
|
6
|
+
|
7
|
+
([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.7.5...510ab6902fb8701df90fb542511b7daa2f7a9537))
|
8
|
+
|
9
|
+
### Merged PRs
|
10
|
+
|
11
|
+
- Convert repo to use releaser from repo [#474](https://github.com/jupyter-server/jupyverse/pull/474) ([@davidbrochart](https://github.com/davidbrochart))
|
12
|
+
- Fix kernel shutdown [#473](https://github.com/jupyter-server/jupyverse/pull/473) ([@davidbrochart](https://github.com/davidbrochart))
|
13
|
+
- Bump FPS v0.1.5 [#467](https://github.com/jupyter-server/jupyverse/pull/467) ([@davidbrochart](https://github.com/davidbrochart))
|
14
|
+
- Use zmq-anyio [#466](https://github.com/jupyter-server/jupyverse/pull/466) ([@davidbrochart](https://github.com/davidbrochart))
|
15
|
+
- Fix connection to existing kernel [#463](https://github.com/jupyter-server/jupyverse/pull/463) ([@davidbrochart](https://github.com/davidbrochart))
|
16
|
+
- Bump FPS v0.1.3 [#462](https://github.com/jupyter-server/jupyverse/pull/462) ([@davidbrochart](https://github.com/davidbrochart))
|
17
|
+
|
18
|
+
### Contributors to this release
|
19
|
+
|
20
|
+
([GitHub contributors page for this release](https://github.com/jupyter-server/jupyverse/graphs/contributors?from=2025-02-26&to=2025-03-28&type=c))
|
21
|
+
|
22
|
+
[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2025-02-26..2025-03-28&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Apre-commit-ci+updated%3A2025-02-26..2025-03-28&type=Issues)
|
23
|
+
|
24
|
+
<!-- <END NEW CHANGELOG ENTRY> -->
|
25
|
+
|
5
26
|
## 0.7.5
|
6
27
|
|
7
28
|
([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.7.4...3c652e450d8ce5e46d7ea1bb00c402d611c4f54f))
|
@@ -16,8 +37,6 @@
|
|
16
37
|
|
17
38
|
[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2025-02-17..2025-02-26&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Apre-commit-ci+updated%3A2025-02-17..2025-02-26&type=Issues)
|
18
39
|
|
19
|
-
<!-- <END NEW CHANGELOG ENTRY> -->
|
20
|
-
|
21
40
|
## 0.7.4
|
22
41
|
|
23
42
|
([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.7.3...3dee770cdcb8ae2529874a0a73592d2744eed63e))
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.7.6"
|
@@ -20,6 +20,26 @@ else:
|
|
20
20
|
default=False,
|
21
21
|
help="Enable debug mode.",
|
22
22
|
)
|
23
|
+
@click.option(
|
24
|
+
"--show-config",
|
25
|
+
is_flag=True,
|
26
|
+
show_default=True,
|
27
|
+
default=False,
|
28
|
+
help="Show the actual configuration.",
|
29
|
+
)
|
30
|
+
@click.option(
|
31
|
+
"--help-all",
|
32
|
+
is_flag=True,
|
33
|
+
show_default=True,
|
34
|
+
default=False,
|
35
|
+
help="Show the configuration description.",
|
36
|
+
)
|
37
|
+
@click.option(
|
38
|
+
"--backend",
|
39
|
+
show_default=True,
|
40
|
+
default="asyncio",
|
41
|
+
help="The name of the event loop to use (asyncio or trio).",
|
42
|
+
)
|
23
43
|
@click.option(
|
24
44
|
"--open-browser",
|
25
45
|
is_flag=True,
|
@@ -66,6 +86,9 @@ else:
|
|
66
86
|
)
|
67
87
|
def main(
|
68
88
|
debug: bool = False,
|
89
|
+
show_config: bool = False,
|
90
|
+
help_all: bool = False,
|
91
|
+
backend: str = "asyncio",
|
69
92
|
open_browser: bool = False,
|
70
93
|
host: str = "127.0.0.1",
|
71
94
|
port: int = 8000,
|
@@ -92,6 +115,9 @@ def main(
|
|
92
115
|
"",
|
93
116
|
set_=set_list,
|
94
117
|
config=pluggin_config,
|
118
|
+
show_config=show_config,
|
119
|
+
help_all=help_all,
|
120
|
+
backend=backend,
|
95
121
|
) # type: ignore
|
96
122
|
|
97
123
|
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.7.6"
|
@@ -16,20 +16,20 @@ log = structlog.get_logger()
|
|
16
16
|
class AuthModule(Module):
|
17
17
|
def __init__(self, name: str, **kwargs):
|
18
18
|
super().__init__(name)
|
19
|
-
self.
|
19
|
+
self.config = _AuthConfig(**kwargs)
|
20
20
|
|
21
21
|
async def prepare(self) -> None:
|
22
|
-
self.put(self.
|
22
|
+
self.put(self.config, AuthConfig)
|
23
23
|
|
24
24
|
app = await self.get(App)
|
25
25
|
frontend_config = await self.get(FrontendConfig)
|
26
26
|
|
27
|
-
auth = auth_factory(app, self.
|
27
|
+
auth = auth_factory(app, self.config, frontend_config)
|
28
28
|
self.put(auth, Auth)
|
29
29
|
|
30
30
|
await auth.db.create_db_and_tables()
|
31
31
|
|
32
|
-
if self.
|
32
|
+
if self.config.test:
|
33
33
|
try:
|
34
34
|
await auth.create_user(
|
35
35
|
username="admin@jupyter.com",
|
@@ -42,19 +42,19 @@ class AuthModule(Module):
|
|
42
42
|
|
43
43
|
try:
|
44
44
|
await auth.create_user(
|
45
|
-
username=self.
|
46
|
-
email=self.
|
45
|
+
username=self.config.token,
|
46
|
+
email=self.config.global_email,
|
47
47
|
password="",
|
48
48
|
permissions={},
|
49
49
|
)
|
50
50
|
except UserAlreadyExists:
|
51
|
-
global_user = await auth.get_user_by_email(self.
|
51
|
+
global_user = await auth.get_user_by_email(self.config.global_email)
|
52
52
|
await auth._update_user(
|
53
53
|
global_user,
|
54
|
-
username=self.
|
54
|
+
username=self.config.token,
|
55
55
|
permissions={},
|
56
56
|
)
|
57
57
|
|
58
|
-
if self.
|
58
|
+
if self.config.mode == "token":
|
59
59
|
query_params = await self.get(QueryParams)
|
60
|
-
query_params.d["token"] = self.
|
60
|
+
query_params.d["token"] = self.config.token
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.7.6"
|
@@ -9,12 +9,12 @@ from .routes import auth_factory
|
|
9
9
|
|
10
10
|
class AuthFiefModule(Module):
|
11
11
|
def __init__(self, name: str, **kwargs):
|
12
|
-
self.
|
12
|
+
self.config = _AuthFiefConfig(**kwargs)
|
13
13
|
|
14
14
|
async def prepare(self) -> None:
|
15
|
-
self.put(self.
|
15
|
+
self.put(self.config, AuthConfig)
|
16
16
|
|
17
17
|
app = await self.get(App)
|
18
18
|
|
19
|
-
auth_fief = auth_factory(app, self.
|
19
|
+
auth_fief = auth_factory(app, self.config)
|
20
20
|
self.put(auth_fief, Auth)
|
@@ -11,13 +11,13 @@ from .routes import auth_factory
|
|
11
11
|
class AuthJupyterHubModule(Module):
|
12
12
|
def __init__(self, name: str, **kwargs):
|
13
13
|
super().__init__(name)
|
14
|
-
self.
|
14
|
+
self.config = AuthJupyterHubConfig(**kwargs)
|
15
15
|
|
16
16
|
async def prepare(self) -> None:
|
17
|
-
self.put(self.
|
17
|
+
self.put(self.config, AuthConfig)
|
18
18
|
app = await self.get(App)
|
19
19
|
|
20
|
-
self.auth_jupyterhub = auth_factory(app, self.
|
20
|
+
self.auth_jupyterhub = auth_factory(app, self.config)
|
21
21
|
|
22
22
|
async with create_task_group() as self.tg:
|
23
23
|
await self.tg.start(self.auth_jupyterhub.start)
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.7.6"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.7.6"
|
@@ -6,7 +6,7 @@ from jupyverse_api.frontend import FrontendConfig
|
|
6
6
|
class FrontendModule(Module):
|
7
7
|
def __init__(self, name: str, **kwargs):
|
8
8
|
super().__init__(name)
|
9
|
-
self.
|
9
|
+
self.config = FrontendConfig(**kwargs)
|
10
10
|
|
11
11
|
async def prepare(self) -> None:
|
12
|
-
self.put(self.
|
12
|
+
self.put(self.config, FrontendConfig)
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.7.6"
|
@@ -12,15 +12,15 @@ from .routes import _JupyterLab
|
|
12
12
|
class JupyterLabModule(Module):
|
13
13
|
def __init__(self, name: str, **kwargs):
|
14
14
|
super().__init__(name)
|
15
|
-
self.
|
15
|
+
self.config = JupyterLabConfig(**kwargs)
|
16
16
|
|
17
17
|
async def prepare(self) -> None:
|
18
|
-
self.put(self.
|
18
|
+
self.put(self.config, JupyterLabConfig)
|
19
19
|
|
20
20
|
app = await self.get(App)
|
21
21
|
auth = await self.get(Auth) # type: ignore[type-abstract]
|
22
22
|
frontend_config = await self.get(FrontendConfig)
|
23
23
|
lab = await self.get(Lab) # type: ignore[type-abstract]
|
24
24
|
|
25
|
-
jupyterlab = _JupyterLab(app, self.
|
25
|
+
jupyterlab = _JupyterLab(app, self.config, auth, frontend_config, lab)
|
26
26
|
self.put(jupyterlab, JupyterLab)
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.7.6"
|
@@ -12,7 +12,7 @@ from typing import Dict, Optional, Tuple, Union
|
|
12
12
|
import zmq
|
13
13
|
from anyio import open_process
|
14
14
|
from anyio.abc import Process
|
15
|
-
from
|
15
|
+
from zmq_anyio import Socket
|
16
16
|
|
17
17
|
channel_socket_types = {
|
18
18
|
"hb": zmq.REQ,
|
@@ -22,7 +22,30 @@ channel_socket_types = {
|
|
22
22
|
"control": zmq.DEALER,
|
23
23
|
}
|
24
24
|
|
25
|
-
|
25
|
+
class HbSocket(Socket):
|
26
|
+
pass
|
27
|
+
|
28
|
+
class ShellSocket(Socket):
|
29
|
+
pass
|
30
|
+
|
31
|
+
class StdinSocket(Socket):
|
32
|
+
pass
|
33
|
+
|
34
|
+
class IOPubSocket(Socket):
|
35
|
+
pass
|
36
|
+
|
37
|
+
class ControlSocket(Socket):
|
38
|
+
pass
|
39
|
+
|
40
|
+
channel_socket_wrapper_types = {
|
41
|
+
"hb": HbSocket,
|
42
|
+
"shell": ShellSocket,
|
43
|
+
"iopub": IOPubSocket,
|
44
|
+
"stdin": StdinSocket,
|
45
|
+
"control": ControlSocket,
|
46
|
+
}
|
47
|
+
|
48
|
+
context = zmq.Context()
|
26
49
|
|
27
50
|
cfg_t = Dict[str, Union[str, int]]
|
28
51
|
|
@@ -102,7 +125,8 @@ def create_socket(channel: str, cfg: cfg_t, identity: Optional[bytes] = None) ->
|
|
102
125
|
port = cfg[f"{channel}_port"]
|
103
126
|
url = f"tcp://{ip}:{port}"
|
104
127
|
socket_type = channel_socket_types[channel]
|
105
|
-
|
128
|
+
socket_wrapper_type = channel_socket_wrapper_types[channel]
|
129
|
+
sock = socket_wrapper_type(context.socket(socket_type))
|
106
130
|
sock.linger = 1000 # set linger to 1s to prevent hangs at exit
|
107
131
|
if identity:
|
108
132
|
sock.identity = identity
|
@@ -102,6 +102,9 @@ class KernelDriver:
|
|
102
102
|
|
103
103
|
async def connect(self, startup_timeout: float = float("inf")) -> None:
|
104
104
|
self.connect_channels()
|
105
|
+
await self.task_group.start(self.iopub_channel.start)
|
106
|
+
await self.task_group.start(self.shell_channel.start)
|
107
|
+
await self.task_group.start(self.control_channel.start)
|
105
108
|
await self._wait_for_ready(startup_timeout)
|
106
109
|
self.listen_channels()
|
107
110
|
self.task_group.start_soon(self._handle_comms)
|
@@ -117,6 +120,14 @@ class KernelDriver:
|
|
117
120
|
self.task_group.start_soon(self.listen_shell)
|
118
121
|
|
119
122
|
async def stop(self) -> None:
|
123
|
+
try:
|
124
|
+
async with create_task_group() as tg:
|
125
|
+
tg.start_soon(self.iopub_channel.stop)
|
126
|
+
tg.start_soon(self.shell_channel.stop)
|
127
|
+
tg.start_soon(self.control_channel.stop)
|
128
|
+
except Exception:
|
129
|
+
pass
|
130
|
+
|
120
131
|
try:
|
121
132
|
self.kernel_process.terminate()
|
122
133
|
except ProcessLookupError:
|
@@ -5,8 +5,8 @@ from typing import Any, Dict, List, Optional, Tuple, cast
|
|
5
5
|
from uuid import uuid4
|
6
6
|
|
7
7
|
from dateutil.parser import parse as dateutil_parse
|
8
|
-
from zmq.asyncio import Socket
|
9
8
|
from zmq.utils import jsonapi
|
9
|
+
from zmq_anyio import Socket
|
10
10
|
|
11
11
|
protocol_version_info = (5, 3)
|
12
12
|
protocol_version = "%i.%i" % protocol_version_info
|
@@ -123,16 +123,19 @@ def deserialize(
|
|
123
123
|
async def send_message(
|
124
124
|
msg: Dict[str, Any], sock: Socket, key: str, change_date_to_str: bool = False
|
125
125
|
) -> None:
|
126
|
-
await sock.
|
126
|
+
await sock.asend_multipart(
|
127
|
+
serialize(msg, key, change_date_to_str=change_date_to_str),
|
128
|
+
copy=True,
|
129
|
+
).wait()
|
127
130
|
|
128
131
|
|
129
132
|
async def receive_message(
|
130
133
|
sock: Socket, timeout: float = float("inf"), change_str_to_date: bool = False
|
131
134
|
) -> Optional[Dict[str, Any]]:
|
132
135
|
timeout *= 1000 # in ms
|
133
|
-
ready = await sock.
|
136
|
+
ready = await sock.apoll(timeout).wait()
|
134
137
|
if ready:
|
135
|
-
msg_list = await sock.
|
136
|
-
idents, msg_list = feed_identities(msg_list)
|
138
|
+
msg_list = await sock.arecv_multipart().wait()
|
139
|
+
idents, msg_list = feed_identities(cast(list[bytes], msg_list))
|
137
140
|
return deserialize(msg_list, change_str_to_date=change_str_to_date)
|
138
141
|
return None
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import json
|
2
2
|
import struct
|
3
|
-
from typing import Any, Dict, List, Optional, Tuple
|
3
|
+
from typing import Any, Dict, List, Optional, Tuple, cast
|
4
4
|
|
5
|
-
from
|
5
|
+
from zmq_anyio import Socket
|
6
6
|
|
7
7
|
from ..kernel_driver.message import DELIM, deserialize, feed_identities, sign, unpack
|
8
8
|
|
@@ -38,7 +38,7 @@ async def send_raw_message(parts: List[bytes], sock: Socket, key: str) -> None:
|
|
38
38
|
msg = parts[:4]
|
39
39
|
buffers = parts[4:]
|
40
40
|
to_send = [DELIM, sign(msg, key)] + msg + buffers
|
41
|
-
await sock.
|
41
|
+
await sock.asend_multipart(to_send).wait()
|
42
42
|
|
43
43
|
|
44
44
|
def deserialize_msg_from_ws_v1(ws_msg: bytes) -> Tuple[str, List[bytes]]:
|
@@ -53,8 +53,8 @@ def deserialize_msg_from_ws_v1(ws_msg: bytes) -> Tuple[str, List[bytes]]:
|
|
53
53
|
|
54
54
|
|
55
55
|
async def get_zmq_parts(socket: Socket) -> List[bytes]:
|
56
|
-
parts = await socket.
|
57
|
-
idents, parts = feed_identities(parts)
|
56
|
+
parts = await socket.arecv_multipart().wait()
|
57
|
+
idents, parts = feed_identities(cast(list[bytes], parts))
|
58
58
|
return parts
|
59
59
|
|
60
60
|
|