jupyverse 0.5.3__tar.gz → 0.6.0__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.5.3 → jupyverse-0.6.0}/.pre-commit-config.yaml +1 -1
- {jupyverse-0.5.3 → jupyverse-0.6.0}/CHANGELOG.md +30 -2
- {jupyverse-0.5.3 → jupyverse-0.6.0}/PKG-INFO +1 -1
- jupyverse-0.6.0/jupyverse/__init__.py +1 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/__init__.py +1 -1
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/terminals/__init__.py +1 -1
- jupyverse-0.6.0/plugins/auth/fps_auth/__init__.py +1 -0
- jupyverse-0.6.0/plugins/auth_fief/fps_auth_fief/__init__.py +1 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/__init__.py +1 -1
- jupyverse-0.6.0/plugins/contents/fps_contents/__init__.py +1 -0
- jupyverse-0.6.0/plugins/frontend/fps_frontend/__init__.py +1 -0
- jupyverse-0.6.0/plugins/jupyterlab/fps_jupyterlab/__init__.py +1 -0
- jupyverse-0.6.0/plugins/kernels/fps_kernels/__init__.py +1 -0
- jupyverse-0.6.0/plugins/lab/fps_lab/__init__.py +1 -0
- jupyverse-0.6.0/plugins/login/fps_login/__init__.py +1 -0
- jupyverse-0.6.0/plugins/nbconvert/fps_nbconvert/__init__.py +1 -0
- jupyverse-0.6.0/plugins/noauth/fps_noauth/__init__.py +1 -0
- jupyverse-0.6.0/plugins/notebook/fps_notebook/__init__.py +1 -0
- jupyverse-0.6.0/plugins/resource_usage/fps_resource_usage/__init__.py +1 -0
- jupyverse-0.6.0/plugins/terminals/fps_terminals/__init__.py +1 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/fps_terminals/routes.py +8 -9
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/fps_terminals/server.py +35 -31
- jupyverse-0.6.0/plugins/webdav/fps_webdav/__init__.py +1 -0
- jupyverse-0.6.0/plugins/yjs/fps_yjs/__init__.py +1 -0
- jupyverse-0.5.3/jupyverse/__init__.py +0 -1
- jupyverse-0.5.3/plugins/auth/fps_auth/__init__.py +0 -1
- jupyverse-0.5.3/plugins/auth_fief/fps_auth_fief/__init__.py +0 -1
- jupyverse-0.5.3/plugins/contents/fps_contents/__init__.py +0 -1
- jupyverse-0.5.3/plugins/frontend/fps_frontend/__init__.py +0 -1
- jupyverse-0.5.3/plugins/jupyterlab/fps_jupyterlab/__init__.py +0 -1
- jupyverse-0.5.3/plugins/kernels/fps_kernels/__init__.py +0 -1
- jupyverse-0.5.3/plugins/lab/fps_lab/__init__.py +0 -1
- jupyverse-0.5.3/plugins/login/fps_login/__init__.py +0 -1
- jupyverse-0.5.3/plugins/nbconvert/fps_nbconvert/__init__.py +0 -1
- jupyverse-0.5.3/plugins/noauth/fps_noauth/__init__.py +0 -1
- jupyverse-0.5.3/plugins/notebook/fps_notebook/__init__.py +0 -1
- jupyverse-0.5.3/plugins/resource_usage/fps_resource_usage/__init__.py +0 -1
- jupyverse-0.5.3/plugins/terminals/fps_terminals/__init__.py +0 -1
- jupyverse-0.5.3/plugins/webdav/fps_webdav/__init__.py +0 -1
- jupyverse-0.5.3/plugins/yjs/fps_yjs/__init__.py +0 -1
- {jupyverse-0.5.3 → jupyverse-0.6.0}/.devcontainer/devcontainer.json +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/.devcontainer/requirements.txt +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/.github/workflows/check-release.yml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/.github/workflows/test.yml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/.gitignore +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/CONTRIBUTING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/MANIFEST.in +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/binder/environment.yml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/binder/jupyter_notebook_config.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/binder/postBuild +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/binder/start +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/config.yaml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/index.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/install.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/jupyter.svg +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/auth.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/contents.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/frontend.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/jupyterlab.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/kernels.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/lab.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/login.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/nbconvert.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/notebook.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/resource_usage.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/terminals.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/yjs.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/tutorials/jupyterhub_jupyverse_deployment.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/tutorials/standalone_jupyverse_deployment.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/usage/microservices.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/usage/multi_user.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/usage/single_user.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse/py.typed +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/app/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/auth/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/auth/models.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/cli.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/contents/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/contents/models.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/exceptions.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/frontend/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/jupyterlab/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/kernels/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/kernels/models.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/lab/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/login/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/main/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/nbconvert/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/notebook/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/py.typed +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/resource_usage/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/terminals/models.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/yjs/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/yjs/models.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/mkdocs.yml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/notebooks/admin_users.ipynb +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/notebooks/admin_users.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/MANIFEST.in +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/fps_auth/backends.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/fps_auth/config.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/fps_auth/db.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/fps_auth/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/fps_auth/models.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/fps_auth/py.typed +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/fps_auth/routes.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/MANIFEST.in +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/fps_auth_fief/backend.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/fps_auth_fief/config.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/fps_auth_fief/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/fps_auth_fief/routes.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/config.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/db.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/launch.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/models.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/routes.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/MANIFEST.in +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/fps_contents/fileid.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/fps_contents/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/fps_contents/py.typed +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/fps_contents/routes.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/frontend/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/frontend/MANIFEST.in +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/frontend/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/frontend/fps_frontend/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/frontend/fps_frontend/py.typed +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/frontend/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/MANIFEST.in +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/fps_jupyterlab/index.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/fps_jupyterlab/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/fps_jupyterlab/py.typed +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/fps_jupyterlab/routes.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/MANIFEST.in +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/connect.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/driver.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/kernelspec.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/message.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/paths.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_server/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_server/message.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_server/server.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/routes.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/lab/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/lab/MANIFEST.in +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/lab/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/lab/fps_lab/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/lab/fps_lab/routes.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/lab/fps_lab/static/favicon.ico +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/lab/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/MANIFEST.in +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/routes.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-busy-1.ico +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-busy-2.ico +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-busy-3.ico +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-file.ico +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-notebook.ico +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-terminal.ico +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon.ico +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/index.html +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/logo/github.svg +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/logo/logo.png +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/style/index.css +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/nbconvert/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/nbconvert/MANIFEST.in +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/nbconvert/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/nbconvert/fps_nbconvert/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/nbconvert/fps_nbconvert/routes.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/nbconvert/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/noauth/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/noauth/MANIFEST.in +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/noauth/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/noauth/fps_noauth/backends.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/noauth/fps_noauth/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/noauth/fps_noauth/py.typed +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/noauth/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/notebook/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/notebook/MANIFEST.in +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/notebook/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/notebook/fps_notebook/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/notebook/fps_notebook/routes.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/notebook/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/resource_usage/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/resource_usage/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/resource_usage/fps_resource_usage/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/resource_usage/fps_resource_usage/routes.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/resource_usage/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/MANIFEST.in +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/fps_terminals/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/fps_terminals/win_server.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/fps_webdav/config.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/fps_webdav/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/fps_webdav/py.typed +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/fps_webdav/routes.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/tests/test_webdav.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/COPYING.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/MANIFEST.in +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/README.md +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/main.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/py.typed +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/routes.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/utils.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/ybasedoc.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/yblob.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/yfile.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/ynotebook.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/yunicode.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/asgi_server.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/awareness.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/django_channels_consumer.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/websocket.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/websocket_provider.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/websocket_server.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/yroom.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/ystore.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/yutils.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywidgets/__init__.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywidgets/widgets.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/pyproject.toml +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/pytest.ini +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/conftest.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/data/notebook0.ipynb +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/data/notebook1.ipynb +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/test_app.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/test_auth.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/test_contents.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/test_execute.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/test_kernels.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/test_server.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/test_settings.py +0 -0
- {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/utils.py +0 -0
@@ -2,6 +2,36 @@
|
|
2
2
|
|
3
3
|
<!-- <START NEW CHANGELOG ENTRY> -->
|
4
4
|
|
5
|
+
## 0.6.0
|
6
|
+
|
7
|
+
([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.5.4...74a20c5aba350ae2dac605ff303d4e75f72eff40))
|
8
|
+
|
9
|
+
### Merged PRs
|
10
|
+
|
11
|
+
- Fix terminals [#414](https://github.com/jupyter-server/jupyverse/pull/414) ([@davidbrochart](https://github.com/davidbrochart))
|
12
|
+
|
13
|
+
### Contributors to this release
|
14
|
+
|
15
|
+
([GitHub contributors page for this release](https://github.com/jupyter-server/jupyverse/graphs/contributors?from=2024-05-14&to=2024-05-22&type=c))
|
16
|
+
|
17
|
+
[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2024-05-14..2024-05-22&type=Issues)
|
18
|
+
|
19
|
+
<!-- <END NEW CHANGELOG ENTRY> -->
|
20
|
+
|
21
|
+
## 0.5.4
|
22
|
+
|
23
|
+
([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.5.3...9f208a6e2e13396f6723a80e23bef688285611e5))
|
24
|
+
|
25
|
+
### Merged PRs
|
26
|
+
|
27
|
+
- Improve terminals [#413](https://github.com/jupyter-server/jupyverse/pull/413) ([@davidbrochart](https://github.com/davidbrochart))
|
28
|
+
|
29
|
+
### Contributors to this release
|
30
|
+
|
31
|
+
([GitHub contributors page for this release](https://github.com/jupyter-server/jupyverse/graphs/contributors?from=2024-05-13&to=2024-05-14&type=c))
|
32
|
+
|
33
|
+
[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2024-05-13..2024-05-14&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Apre-commit-ci+updated%3A2024-05-13..2024-05-14&type=Issues)
|
34
|
+
|
5
35
|
## 0.5.3
|
6
36
|
|
7
37
|
([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.5.2...d5a5b178b93172a9bb8b90459d45ed20a1b734c5))
|
@@ -16,8 +46,6 @@
|
|
16
46
|
|
17
47
|
[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2024-05-02..2024-05-13&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Apre-commit-ci+updated%3A2024-05-02..2024-05-13&type=Issues)
|
18
48
|
|
19
|
-
<!-- <END NEW CHANGELOG ENTRY> -->
|
20
|
-
|
21
49
|
## 0.5.2
|
22
50
|
|
23
51
|
([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.5.1...0bd54d15a6ad7fbfe7c54f5a06ed4546de4ad90d))
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -26,7 +26,12 @@ class _Terminals(Terminals):
|
|
26
26
|
self,
|
27
27
|
user: User,
|
28
28
|
):
|
29
|
-
|
29
|
+
name_int = 1
|
30
|
+
while True:
|
31
|
+
if str(name_int) not in TERMINALS:
|
32
|
+
break
|
33
|
+
name_int += 1
|
34
|
+
name = str(name_int)
|
30
35
|
terminal = Terminal(
|
31
36
|
name=name,
|
32
37
|
last_activity=datetime.utcnow().isoformat() + "Z",
|
@@ -40,9 +45,7 @@ class _Terminals(Terminals):
|
|
40
45
|
name: str,
|
41
46
|
user: User,
|
42
47
|
):
|
43
|
-
|
44
|
-
TERMINALS[name]["server"].quit(websocket)
|
45
|
-
del TERMINALS[name]
|
48
|
+
await TERMINALS[name]["server"].exit(TERMINALS, name)
|
46
49
|
return Response(status_code=HTTPStatus.NO_CONTENT.value)
|
47
50
|
|
48
51
|
async def terminal_websocket(
|
@@ -54,8 +57,4 @@ class _Terminals(Terminals):
|
|
54
57
|
return
|
55
58
|
websocket, permissions = websocket_permissions
|
56
59
|
await websocket.accept()
|
57
|
-
await TERMINALS[name]["server"].serve(websocket, permissions)
|
58
|
-
if name in TERMINALS:
|
59
|
-
TERMINALS[name]["server"].quit(websocket)
|
60
|
-
if not TERMINALS[name]["server"].websockets:
|
61
|
-
del TERMINALS[name]
|
60
|
+
await TERMINALS[name]["server"].serve(websocket, permissions, TERMINALS, name)
|
@@ -6,8 +6,6 @@ import shlex
|
|
6
6
|
import struct
|
7
7
|
import termios
|
8
8
|
|
9
|
-
from fastapi import WebSocketDisconnect
|
10
|
-
|
11
9
|
from jupyverse_api.terminals import TerminalServer
|
12
10
|
|
13
11
|
|
@@ -25,27 +23,26 @@ class _TerminalServer(TerminalServer):
|
|
25
23
|
def __init__(self):
|
26
24
|
self.fd = open_terminal()
|
27
25
|
self.p_out = os.fdopen(self.fd, "w+b", 0)
|
28
|
-
self.websockets = []
|
29
|
-
|
30
|
-
async def serve(self, websocket, permissions):
|
31
|
-
self.websocket = websocket
|
32
|
-
self.websockets.append(websocket)
|
33
|
-
self.event = asyncio.Event()
|
34
26
|
self.loop = asyncio.get_event_loop()
|
35
|
-
|
36
|
-
|
27
|
+
self.data_from_terminal = asyncio.Queue()
|
28
|
+
self.websockets = []
|
37
29
|
|
38
30
|
def on_output():
|
39
31
|
try:
|
40
|
-
|
41
|
-
self.event.set()
|
32
|
+
data = self.p_out.read(65536).decode()
|
42
33
|
except Exception:
|
43
|
-
|
44
|
-
|
45
|
-
self.
|
46
|
-
self.event.set()
|
34
|
+
self.data_from_terminal.put_nowait(None)
|
35
|
+
else:
|
36
|
+
self.data_from_terminal.put_nowait(data)
|
47
37
|
|
48
38
|
self.loop.add_reader(self.p_out, on_output)
|
39
|
+
|
40
|
+
async def serve(self, websocket, permissions, terminals, name):
|
41
|
+
self.websocket = websocket
|
42
|
+
self.websockets.append(websocket)
|
43
|
+
|
44
|
+
task = asyncio.create_task(self.send_data(terminals, name)) # noqa: F841
|
45
|
+
|
49
46
|
await websocket.send_json(["setup", {}])
|
50
47
|
can_execute = permissions is None or "execute" in permissions.get("terminals", [])
|
51
48
|
try:
|
@@ -57,22 +54,29 @@ class _TerminalServer(TerminalServer):
|
|
57
54
|
elif msg[0] == "set_size":
|
58
55
|
winsize = struct.pack("HH", msg[1], msg[2])
|
59
56
|
fcntl.ioctl(self.fd, termios.TIOCSWINSZ, winsize)
|
60
|
-
except
|
61
|
-
|
57
|
+
except Exception:
|
58
|
+
if websocket in self.websockets:
|
59
|
+
self.websockets.remove(websocket)
|
62
60
|
|
63
|
-
async def send_data(self):
|
61
|
+
async def send_data(self, terminals, name):
|
64
62
|
while True:
|
65
|
-
await self.
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
else:
|
70
|
-
for websocket in self.websockets:
|
71
|
-
await websocket.send_json(["stdout", self.data_or_disconnect])
|
63
|
+
data = await self.data_from_terminal.get()
|
64
|
+
if data is None:
|
65
|
+
await self.exit(terminals, name)
|
66
|
+
return
|
72
67
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
68
|
+
for websocket in self.websockets:
|
69
|
+
await websocket.send_json(["stdout", data])
|
70
|
+
|
71
|
+
async def exit(self, terminals, name):
|
72
|
+
for websocket in self.websockets:
|
73
|
+
try:
|
74
|
+
await websocket.send_json(["disconnect", 1])
|
75
|
+
except Exception:
|
76
|
+
pass
|
77
|
+
self.websockets.clear()
|
78
|
+
try:
|
78
79
|
self.loop.remove_reader(self.p_out)
|
80
|
+
except Exception:
|
81
|
+
pass
|
82
|
+
del terminals[name]
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.6.0"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.3"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|