jupyverse 0.3.0__tar.gz → 0.4.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.3.0/.github/workflows/main.yml → jupyverse-0.4.0/.github/workflows/test.yml +31 -18
- {jupyverse-0.3.0 → jupyverse-0.4.0}/.gitignore +3 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/.pre-commit-config.yaml +1 -6
- {jupyverse-0.3.0 → jupyverse-0.4.0}/CHANGELOG.md +23 -2
- {jupyverse-0.3.0 → jupyverse-0.4.0}/PKG-INFO +5 -3
- {jupyverse-0.3.0 → jupyverse-0.4.0}/README.md +1 -2
- jupyverse-0.4.0/jupyverse/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/__init__.py +1 -2
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/app/__init__.py +1 -2
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/auth/models.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/contents/__init__.py +3 -2
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/contents/models.py +8 -8
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/jupyterlab/__init__.py +3 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/kernels/__init__.py +2 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/kernels/models.py +1 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/lab/__init__.py +2 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/login/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/nbconvert/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/resource_usage/__init__.py +3 -2
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/retrolab/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/terminals/__init__.py +2 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/yjs/__init__.py +2 -1
- jupyverse-0.4.0/plugins/auth/fps_auth/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth/fps_auth/db.py +1 -2
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth/fps_auth/models.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth/fps_auth/routes.py +2 -3
- jupyverse-0.4.0/plugins/auth_fief/fps_auth_fief/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_fief/fps_auth_fief/backend.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_fief/fps_auth_fief/config.py +2 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_fief/fps_auth_fief/main.py +2 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_fief/fps_auth_fief/routes.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/__init__.py +1 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/config.py +2 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/main.py +3 -2
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/models.py +2 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/routes.py +4 -3
- jupyverse-0.4.0/plugins/contents/fps_contents/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/contents/fps_contents/fileid.py +5 -4
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/contents/fps_contents/main.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/contents/fps_contents/routes.py +2 -1
- jupyverse-0.4.0/plugins/frontend/fps_frontend/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/frontend/fps_frontend/main.py +1 -0
- jupyverse-0.4.0/plugins/jupyterlab/fps_jupyterlab/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/jupyterlab/fps_jupyterlab/main.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/jupyterlab/fps_jupyterlab/routes.py +7 -2
- jupyverse-0.4.0/plugins/kernels/fps_kernels/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/kernels/fps_kernels/kernel_driver/driver.py +131 -43
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/kernels/fps_kernels/kernel_driver/message.py +2 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/kernels/fps_kernels/kernel_server/server.py +1 -2
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/kernels/fps_kernels/main.py +2 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/kernels/fps_kernels/routes.py +11 -7
- jupyverse-0.4.0/plugins/lab/fps_lab/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/lab/fps_lab/main.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/lab/fps_lab/routes.py +0 -1
- jupyverse-0.4.0/plugins/login/fps_login/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/fps_login/main.py +2 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/fps_login/routes.py +1 -0
- jupyverse-0.4.0/plugins/nbconvert/fps_nbconvert/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/nbconvert/fps_nbconvert/main.py +2 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/nbconvert/fps_nbconvert/routes.py +1 -0
- jupyverse-0.4.0/plugins/noauth/fps_noauth/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/noauth/fps_noauth/backends.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/noauth/fps_noauth/main.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/noauth/pyproject.toml +2 -2
- jupyverse-0.4.0/plugins/resource_usage/fps_resource_usage/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/resource_usage/fps_resource_usage/main.py +2 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/resource_usage/fps_resource_usage/routes.py +1 -0
- jupyverse-0.4.0/plugins/retrolab/fps_retrolab/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/retrolab/fps_retrolab/main.py +2 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/retrolab/fps_retrolab/routes.py +1 -0
- jupyverse-0.4.0/plugins/terminals/fps_terminals/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/terminals/fps_terminals/main.py +2 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/terminals/fps_terminals/routes.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/terminals/fps_terminals/server.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/terminals/fps_terminals/win_server.py +5 -4
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/terminals/pyproject.toml +1 -0
- jupyverse-0.4.0/plugins/webdav/fps_webdav/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/webdav/fps_webdav/main.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/webdav/fps_webdav/routes.py +1 -2
- jupyverse-0.4.0/plugins/yjs/fps_yjs/__init__.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/yjs/fps_yjs/main.py +1 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/yjs/fps_yjs/routes.py +21 -15
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ydocs/__init__.py +8 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ydocs/utils.py +26 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ydocs/ybasedoc.py +77 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ydocs/yblob.py +39 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ydocs/yfile.py +5 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ydocs/ynotebook.py +146 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ydocs/yunicode.py +33 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ywebsocket/__init__.py +5 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ywebsocket/asgi_server.py +92 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ywebsocket/awareness.py +65 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ywebsocket/django_channels_consumer.py +196 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ywebsocket/websocket.py +58 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ywebsocket/websocket_provider.py +139 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ywebsocket/websocket_server.py +205 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ywebsocket/yroom.py +239 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ywebsocket/ystore.py +447 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ywebsocket/yutils.py +155 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ywidgets/__init__.py +1 -0
- jupyverse-0.4.0/plugins/yjs/fps_yjs/ywidgets/widgets.py +52 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/yjs/pyproject.toml +7 -3
- {jupyverse-0.3.0 → jupyverse-0.4.0}/pyproject.toml +21 -5
- jupyverse-0.4.0/tests/data/notebook1.ipynb +55 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/tests/test_auth.py +2 -3
- {jupyverse-0.3.0 → jupyverse-0.4.0}/tests/test_contents.py +2 -2
- jupyverse-0.4.0/tests/test_execute.py +150 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/tests/test_server.py +103 -5
- {jupyverse-0.3.0 → jupyverse-0.4.0}/tests/test_settings.py +1 -2
- jupyverse-0.3.0/jupyverse/__init__.py +0 -1
- jupyverse-0.3.0/plugins/auth/fps_auth/__init__.py +0 -1
- jupyverse-0.3.0/plugins/auth_fief/fps_auth_fief/__init__.py +0 -1
- jupyverse-0.3.0/plugins/contents/fps_contents/__init__.py +0 -1
- jupyverse-0.3.0/plugins/frontend/fps_frontend/__init__.py +0 -1
- jupyverse-0.3.0/plugins/jupyterlab/fps_jupyterlab/__init__.py +0 -1
- jupyverse-0.3.0/plugins/kernels/fps_kernels/__init__.py +0 -1
- jupyverse-0.3.0/plugins/lab/fps_lab/__init__.py +0 -1
- jupyverse-0.3.0/plugins/login/fps_login/__init__.py +0 -1
- jupyverse-0.3.0/plugins/nbconvert/fps_nbconvert/__init__.py +0 -1
- jupyverse-0.3.0/plugins/noauth/fps_noauth/__init__.py +0 -1
- jupyverse-0.3.0/plugins/resource_usage/fps_resource_usage/__init__.py +0 -1
- jupyverse-0.3.0/plugins/retrolab/fps_retrolab/__init__.py +0 -1
- jupyverse-0.3.0/plugins/terminals/fps_terminals/__init__.py +0 -1
- jupyverse-0.3.0/plugins/webdav/fps_webdav/__init__.py +0 -1
- jupyverse-0.3.0/plugins/yjs/fps_yjs/__init__.py +0 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/.devcontainer/devcontainer.json +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/.devcontainer/requirements.txt +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/.github/workflows/check-release.yml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/CONTRIBUTING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/MANIFEST.in +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/binder/environment.yml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/binder/jupyter_notebook_config.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/binder/postBuild +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/binder/start +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/config.yaml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/index.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/install.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/jupyter.svg +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/plugins/auth.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/plugins/contents.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/plugins/frontend.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/plugins/jupyterlab.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/plugins/kernels.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/plugins/lab.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/plugins/login.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/plugins/nbconvert.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/plugins/resource_usage.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/plugins/retrolab.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/plugins/terminals.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/plugins/yjs.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/tutorials/jupyterhub_jupyverse_deployment.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/tutorials/standalone_jupyverse_deployment.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/usage/microservices.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/usage/multi_user.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/docs/usage/single_user.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse/py.typed +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/auth/__init__.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/cli.py +1 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/exceptions.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/frontend/__init__.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/main/__init__.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/py.typed +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/terminals/models.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/jupyverse_api/yjs/models.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/jupyverse_api/pyproject.toml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/mkdocs.yml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/notebooks/admin_users.ipynb +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/notebooks/admin_users.py +3 -3
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth/MANIFEST.in +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth/fps_auth/backends.py +2 -2
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth/fps_auth/config.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth/fps_auth/main.py +2 -2
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth/fps_auth/py.typed +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth/pyproject.toml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_fief/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_fief/MANIFEST.in +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_fief/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_fief/pyproject.toml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_jupyterhub/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_jupyterhub/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/db.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/launch.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/auth_jupyterhub/pyproject.toml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/contents/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/contents/MANIFEST.in +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/contents/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/contents/fps_contents/py.typed +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/contents/pyproject.toml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/frontend/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/frontend/MANIFEST.in +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/frontend/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/frontend/fps_frontend/py.typed +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/frontend/pyproject.toml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/jupyterlab/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/jupyterlab/MANIFEST.in +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/jupyterlab/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/jupyterlab/fps_jupyterlab/index.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/jupyterlab/fps_jupyterlab/py.typed +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/jupyterlab/pyproject.toml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/kernels/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/kernels/MANIFEST.in +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/kernels/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/kernels/fps_kernels/kernel_driver/__init__.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/kernels/fps_kernels/kernel_driver/connect.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/kernels/fps_kernels/kernel_driver/kernelspec.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/kernels/fps_kernels/kernel_driver/paths.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/kernels/fps_kernels/kernel_server/__init__.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/kernels/fps_kernels/kernel_server/message.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/kernels/pyproject.toml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/lab/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/lab/MANIFEST.in +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/lab/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/lab/fps_lab/static/favicon.ico +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/lab/pyproject.toml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/MANIFEST.in +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/fps_login/static/favicons/favicon-busy-1.ico +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/fps_login/static/favicons/favicon-busy-2.ico +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/fps_login/static/favicons/favicon-busy-3.ico +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/fps_login/static/favicons/favicon-file.ico +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/fps_login/static/favicons/favicon-notebook.ico +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/fps_login/static/favicons/favicon-terminal.ico +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/fps_login/static/favicons/favicon.ico +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/fps_login/static/index.html +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/fps_login/static/logo/github.svg +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/fps_login/static/logo/logo.png +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/fps_login/static/style/index.css +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/login/pyproject.toml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/nbconvert/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/nbconvert/MANIFEST.in +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/nbconvert/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/nbconvert/pyproject.toml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/noauth/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/noauth/MANIFEST.in +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/noauth/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/noauth/fps_noauth/py.typed +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/resource_usage/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/resource_usage/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/resource_usage/pyproject.toml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/retrolab/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/retrolab/MANIFEST.in +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/retrolab/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/retrolab/pyproject.toml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/terminals/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/terminals/MANIFEST.in +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/terminals/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/webdav/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/webdav/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/webdav/fps_webdav/config.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/webdav/fps_webdav/py.typed +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/webdav/pyproject.toml +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/webdav/tests/test_webdav.py +1 -1
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/yjs/COPYING.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/yjs/MANIFEST.in +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/yjs/README.md +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/plugins/yjs/fps_yjs/py.typed +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/pytest.ini +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/tests/conftest.py +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/tests/data/notebook0.ipynb +0 -0
- {jupyverse-0.3.0 → jupyverse-0.4.0}/tests/test_app.py +2 -2
- {jupyverse-0.3.0 → jupyverse-0.4.0}/tests/test_kernels.py +3 -3
- {jupyverse-0.3.0 → jupyverse-0.4.0}/tests/utils.py +1 -1
@@ -1,4 +1,4 @@
|
|
1
|
-
name:
|
1
|
+
name: test
|
2
2
|
|
3
3
|
on:
|
4
4
|
push:
|
@@ -13,8 +13,31 @@ concurrency:
|
|
13
13
|
cancel-in-progress: true
|
14
14
|
|
15
15
|
jobs:
|
16
|
+
types:
|
17
|
+
name: Types
|
18
|
+
runs-on: ubuntu-latest
|
19
|
+
steps:
|
20
|
+
- name: Checkout
|
21
|
+
uses: actions/checkout@v3
|
22
|
+
- uses: actions/setup-python@v4
|
23
|
+
with:
|
24
|
+
python-version: '3.11'
|
25
|
+
cache: 'pip'
|
26
|
+
- name: Install hatch
|
27
|
+
run: |
|
28
|
+
python3 -m pip install --upgrade pip
|
29
|
+
python3 -m pip install hatch
|
30
|
+
- name: Check types
|
31
|
+
run: |
|
32
|
+
hatch run dev.jupyterlab-noauth:typecheck
|
33
|
+
hatch run dev.jupyterlab-auth:typecheck
|
34
|
+
hatch run dev.jupyterlab-auth_fief:typecheck
|
35
|
+
hatch run dev.retrolab-noauth:typecheck
|
36
|
+
hatch run dev.retrolab-auth:typecheck
|
37
|
+
hatch run dev.retrolab-auth_fief:typecheck
|
38
|
+
|
16
39
|
test:
|
17
|
-
name:
|
40
|
+
name: Tests
|
18
41
|
runs-on: ${{ matrix.os }}
|
19
42
|
strategy:
|
20
43
|
fail-fast: false
|
@@ -31,23 +54,13 @@ jobs:
|
|
31
54
|
python-version: ${{ matrix.python-version }}
|
32
55
|
cache: 'pip'
|
33
56
|
|
34
|
-
- name:
|
35
|
-
run: python3 -m pip install --upgrade pip
|
36
|
-
|
37
|
-
- name: Create jupyterlab-auth dev environment
|
57
|
+
- name: Install hatch
|
38
58
|
run: |
|
39
|
-
pip install
|
40
|
-
|
59
|
+
python3 -m pip install --upgrade pip
|
60
|
+
python3 -m pip install hatch
|
41
61
|
|
42
|
-
- name:
|
43
|
-
run:
|
44
|
-
hatch run dev.jupyterlab-noauth:typecheck
|
45
|
-
hatch run dev.jupyterlab-auth:typecheck
|
46
|
-
hatch run dev.jupyterlab-auth_fief:typecheck
|
47
|
-
hatch run dev.retrolab-noauth:typecheck
|
48
|
-
hatch run dev.retrolab-auth:typecheck
|
49
|
-
hatch run dev.retrolab-auth_fief:typecheck
|
62
|
+
- name: Create jupyterlab-auth dev environment
|
63
|
+
run: hatch env create dev.jupyterlab-auth
|
50
64
|
|
51
65
|
- name: Run tests
|
52
|
-
run:
|
53
|
-
hatch run dev.jupyterlab-auth:test
|
66
|
+
run: hatch run dev.jupyterlab-auth:test
|
@@ -15,13 +15,8 @@ repos:
|
|
15
15
|
- id: check-builtin-literals
|
16
16
|
- id: trailing-whitespace
|
17
17
|
|
18
|
-
- repo: https://github.com/psf/black
|
19
|
-
rev: 23.9.1
|
20
|
-
hooks:
|
21
|
-
- id: black
|
22
|
-
|
23
18
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
24
|
-
rev: v0.
|
19
|
+
rev: v0.1.7
|
25
20
|
hooks:
|
26
21
|
- id: ruff
|
27
22
|
args: ["--fix"]
|
@@ -2,6 +2,29 @@
|
|
2
2
|
|
3
3
|
<!-- <START NEW CHANGELOG ENTRY> -->
|
4
4
|
|
5
|
+
## 0.4.0
|
6
|
+
|
7
|
+
([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.3.0...73a16c326e333838aaa8ec2321c40d5d13a96f05))
|
8
|
+
|
9
|
+
### Merged PRs
|
10
|
+
|
11
|
+
- Check types in a separate CI job [#373](https://github.com/jupyter-server/jupyverse/pull/373) ([@davidbrochart](https://github.com/davidbrochart))
|
12
|
+
- Add pytest color [#372](https://github.com/jupyter-server/jupyverse/pull/372) ([@davidbrochart](https://github.com/davidbrochart))
|
13
|
+
- Update pycrdt v0.7.2 [#371](https://github.com/jupyter-server/jupyverse/pull/371) ([@davidbrochart](https://github.com/davidbrochart))
|
14
|
+
- Implement server-side ypywidgets rendering [#364](https://github.com/jupyter-server/jupyverse/pull/364) ([@davidbrochart](https://github.com/davidbrochart))
|
15
|
+
- Improve data read [#362](https://github.com/jupyter-server/jupyverse/pull/362) ([@davidbrochart](https://github.com/davidbrochart))
|
16
|
+
- Replace black with ruff formatter [#361](https://github.com/jupyter-server/jupyverse/pull/361) ([@davidbrochart](https://github.com/davidbrochart))
|
17
|
+
- Replace Ypy with pycrdt [#359](https://github.com/jupyter-server/jupyverse/pull/359) ([@davidbrochart](https://github.com/davidbrochart))
|
18
|
+
- Set optional contents API model fields to None by default [#358](https://github.com/jupyter-server/jupyverse/pull/358) ([@davidbrochart](https://github.com/davidbrochart))
|
19
|
+
|
20
|
+
### Contributors to this release
|
21
|
+
|
22
|
+
([GitHub contributors page for this release](https://github.com/jupyter-server/jupyverse/graphs/contributors?from=2023-10-10&to=2023-12-16&type=c))
|
23
|
+
|
24
|
+
[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2023-10-10..2023-12-16&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Apre-commit-ci+updated%3A2023-10-10..2023-12-16&type=Issues)
|
25
|
+
|
26
|
+
<!-- <END NEW CHANGELOG ENTRY> -->
|
27
|
+
|
5
28
|
## 0.3.0
|
6
29
|
|
7
30
|
([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.2.5...88f061e58d22963f7b195b5677c983a7b1056b94))
|
@@ -17,8 +40,6 @@
|
|
17
40
|
|
18
41
|
[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2023-09-06..2023-10-10&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Apre-commit-ci+updated%3A2023-09-06..2023-10-10&type=Issues)
|
19
42
|
|
20
|
-
<!-- <END NEW CHANGELOG ENTRY> -->
|
21
|
-
|
22
43
|
## 0.2.5
|
23
44
|
|
24
45
|
([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.2.4...18f312eb8b3dee262fb512af7e7ec3996674c4d4))
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: jupyverse
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.4.0
|
4
4
|
Summary: A set of FPS plugins implementing a Jupyter server
|
5
5
|
Project-URL: Homepage, https://jupyter.org
|
6
6
|
Author-email: Jupyter Development Team <jupyter@googlegroups.com>
|
@@ -43,12 +43,14 @@ Requires-Dist: pytest-env; extra == 'test'
|
|
43
43
|
Requires-Dist: pytest-rerunfailures; extra == 'test'
|
44
44
|
Requires-Dist: pytest-timeout; extra == 'test'
|
45
45
|
Requires-Dist: requests; extra == 'test'
|
46
|
+
Requires-Dist: ruff>=0.1.2; extra == 'test'
|
46
47
|
Requires-Dist: types-setuptools; extra == 'test'
|
47
48
|
Requires-Dist: websockets; extra == 'test'
|
49
|
+
Requires-Dist: ypywidgets-textual<0.3.0,>=0.2.2; extra == 'test'
|
50
|
+
Requires-Dist: ypywidgets<0.7.0,>=0.6.4; extra == 'test'
|
48
51
|
Description-Content-Type: text/markdown
|
49
52
|
|
50
|
-
[](https://github.com/psf/black)
|
53
|
+
[](https://github.com/jupyter-server/jupyverse/actions)
|
52
54
|
|
53
55
|
# jupyverse
|
54
56
|
|
@@ -1,5 +1,4 @@
|
|
1
|
-
[](https://github.com/psf/black)
|
1
|
+
[](https://github.com/jupyter-server/jupyverse/actions)
|
3
2
|
|
4
3
|
# jupyverse
|
5
4
|
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.4.0"
|
@@ -1,15 +1,14 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
import logging
|
4
|
-
from datetime import datetime, timezone
|
5
4
|
from collections import defaultdict
|
5
|
+
from datetime import datetime, timezone
|
6
6
|
from typing import Dict, List
|
7
7
|
|
8
8
|
from fastapi import FastAPI, Request
|
9
9
|
|
10
10
|
from ..exceptions import RedirectException, _redirect_exception_handler
|
11
11
|
|
12
|
-
|
13
12
|
logger = logging.getLogger("app")
|
14
13
|
|
15
14
|
|
@@ -4,11 +4,12 @@ from pathlib import Path
|
|
4
4
|
from typing import Dict, List, Optional, Union
|
5
5
|
|
6
6
|
from fastapi import APIRouter, Depends, Request, Response
|
7
|
+
|
7
8
|
from jupyverse_api import Router
|
8
9
|
|
9
|
-
from .models import Checkpoint, Content, SaveContent
|
10
|
-
from ..auth import Auth, User
|
11
10
|
from ..app import App
|
11
|
+
from ..auth import Auth, User
|
12
|
+
from .models import Checkpoint, Content, SaveContent
|
12
13
|
|
13
14
|
|
14
15
|
class FileIdManager(ABC):
|
@@ -11,24 +11,24 @@ class Checkpoint(BaseModel):
|
|
11
11
|
class Content(BaseModel):
|
12
12
|
name: str
|
13
13
|
path: str
|
14
|
-
last_modified: Optional[str]
|
15
|
-
created: Optional[str]
|
16
|
-
content: Optional[Union[List[Dict], str, Dict]]
|
17
|
-
format: Optional[str]
|
18
|
-
mimetype: Optional[str]
|
19
|
-
size: Optional[int]
|
14
|
+
last_modified: Optional[str] = None
|
15
|
+
created: Optional[str] = None
|
16
|
+
content: Optional[Union[List[Dict], str, Dict]] = None
|
17
|
+
format: Optional[str] = None
|
18
|
+
mimetype: Optional[str] = None
|
19
|
+
size: Optional[int] = None
|
20
20
|
writable: bool
|
21
21
|
type: str
|
22
22
|
|
23
23
|
|
24
24
|
class CreateContent(BaseModel):
|
25
|
-
ext: Optional[str]
|
25
|
+
ext: Optional[str] = None
|
26
26
|
path: str
|
27
27
|
type: str
|
28
28
|
|
29
29
|
|
30
30
|
class SaveContent(BaseModel):
|
31
|
-
content: Optional[Union[str, Dict]]
|
31
|
+
content: Optional[Union[str, Dict]] = None
|
32
32
|
format: str
|
33
33
|
path: str
|
34
34
|
type: str
|
@@ -2,10 +2,11 @@ from abc import ABC, abstractmethod
|
|
2
2
|
|
3
3
|
from fastapi import APIRouter, Depends, Request
|
4
4
|
from fastapi.responses import HTMLResponse
|
5
|
+
|
5
6
|
from jupyverse_api import Config, Router
|
6
7
|
|
7
|
-
from ..auth import Auth, User
|
8
8
|
from ..app import App
|
9
|
+
from ..auth import Auth, User
|
9
10
|
|
10
11
|
|
11
12
|
class JupyterLab(Router, ABC):
|
@@ -88,3 +89,4 @@ class JupyterLab(Router, ABC):
|
|
88
89
|
|
89
90
|
class JupyterLabConfig(Config):
|
90
91
|
dev_mode: bool = False
|
92
|
+
server_side_execution: bool = False
|
@@ -3,9 +3,10 @@ from pathlib import Path
|
|
3
3
|
from typing import List, Optional
|
4
4
|
|
5
5
|
from fastapi import APIRouter, Depends, Request
|
6
|
-
from jupyverse_api import Router, Config
|
7
6
|
from pydantic import Field
|
8
7
|
|
8
|
+
from jupyverse_api import Config, Router
|
9
|
+
|
9
10
|
from ..app import App
|
10
11
|
from ..auth import Auth, User
|
11
12
|
from .models import Session
|
@@ -5,11 +5,12 @@ from typing import List, Optional, Tuple
|
|
5
5
|
|
6
6
|
from fastapi import APIRouter, Depends, Request, Response
|
7
7
|
from fastapi.staticfiles import StaticFiles
|
8
|
+
|
8
9
|
from jupyverse_api import Router
|
9
10
|
from jupyverse_api.jupyterlab import JupyterLabConfig
|
10
11
|
|
11
|
-
from ..auth import Auth, User
|
12
12
|
from ..app import App
|
13
|
+
from ..auth import Auth, User
|
13
14
|
|
14
15
|
|
15
16
|
class Lab(Router, ABC):
|
@@ -1,10 +1,11 @@
|
|
1
1
|
from abc import ABC, abstractmethod
|
2
2
|
|
3
3
|
from fastapi import APIRouter, Depends
|
4
|
-
from jupyverse_api import Router, Config
|
5
4
|
|
6
|
-
from
|
5
|
+
from jupyverse_api import Config, Router
|
6
|
+
|
7
7
|
from ..app import App
|
8
|
+
from ..auth import Auth, User
|
8
9
|
|
9
10
|
|
10
11
|
class ResourceUsage(Router, ABC):
|
@@ -2,11 +2,12 @@ from abc import ABC, abstractmethod
|
|
2
2
|
from typing import List
|
3
3
|
|
4
4
|
from fastapi import APIRouter, Depends
|
5
|
+
|
5
6
|
from jupyverse_api import Router
|
6
7
|
|
7
|
-
from .models import Terminal
|
8
8
|
from ..app import App
|
9
9
|
from ..auth import Auth, User
|
10
|
+
from .models import Terminal
|
10
11
|
|
11
12
|
|
12
13
|
class Terminals(Router, ABC):
|
@@ -2,10 +2,11 @@ from abc import ABC, abstractmethod
|
|
2
2
|
from typing import Any
|
3
3
|
|
4
4
|
from fastapi import APIRouter, Depends, Request, Response
|
5
|
+
|
5
6
|
from jupyverse_api import Router
|
6
7
|
|
7
|
-
from ..auth import Auth, User
|
8
8
|
from ..app import App
|
9
|
+
from ..auth import Auth, User
|
9
10
|
|
10
11
|
|
11
12
|
class Yjs(Router, ABC):
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.4.0"
|
@@ -5,8 +5,8 @@ from pathlib import Path
|
|
5
5
|
from typing import Any, AsyncGenerator, List
|
6
6
|
|
7
7
|
from fastapi import Depends
|
8
|
-
from fastapi_users.db import SQLAlchemyBaseOAuthAccountTableUUID
|
9
8
|
from fastapi_users.db import (
|
9
|
+
SQLAlchemyBaseOAuthAccountTableUUID,
|
10
10
|
SQLAlchemyBaseUserTableUUID,
|
11
11
|
SQLAlchemyUserDatabase,
|
12
12
|
)
|
@@ -16,7 +16,6 @@ from sqlalchemy.orm import DeclarativeBase, Mapped, relationship
|
|
16
16
|
|
17
17
|
from .config import _AuthConfig
|
18
18
|
|
19
|
-
|
20
19
|
logger = logging.getLogger("auth")
|
21
20
|
|
22
21
|
|
@@ -5,19 +5,18 @@ import random
|
|
5
5
|
from typing import Any, Callable, Dict, List, Optional, Tuple
|
6
6
|
|
7
7
|
from fastapi import APIRouter, Depends
|
8
|
+
from sqlalchemy import select # type: ignore
|
9
|
+
|
8
10
|
from jupyverse_api import Router
|
9
11
|
from jupyverse_api.app import App
|
10
12
|
from jupyverse_api.auth import Auth
|
11
13
|
from jupyverse_api.frontend import FrontendConfig
|
12
|
-
from sqlalchemy import select # type: ignore
|
13
14
|
|
14
15
|
from .backends import get_backend
|
15
16
|
from .config import _AuthConfig
|
16
17
|
from .db import get_db
|
17
|
-
|
18
18
|
from .models import UserCreate, UserRead, UserUpdate
|
19
19
|
|
20
|
-
|
21
20
|
logger = logging.getLogger("auth")
|
22
21
|
|
23
22
|
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.4.0"
|
@@ -5,6 +5,7 @@ from fastapi import Depends, HTTPException, Request, Response, WebSocket, status
|
|
5
5
|
from fastapi.security import APIKeyCookie
|
6
6
|
from fief_client import FiefAccessTokenInfo, FiefAsync, FiefUserInfo
|
7
7
|
from fief_client.integrations.fastapi import FiefAuth
|
8
|
+
|
8
9
|
from jupyverse_api.auth import User
|
9
10
|
|
10
11
|
from .config import _AuthFiefConfig
|
@@ -5,6 +5,7 @@ import httpx
|
|
5
5
|
from fastapi import APIRouter, Depends, Query, Request, Response
|
6
6
|
from fastapi.responses import RedirectResponse
|
7
7
|
from fief_client import FiefAccessTokenInfo
|
8
|
+
|
8
9
|
from jupyverse_api import Router
|
9
10
|
from jupyverse_api.app import App
|
10
11
|
from jupyverse_api.auth import Auth, User
|
@@ -1,9 +1,10 @@
|
|
1
1
|
import httpx
|
2
2
|
from asphalt.core import Component, ContainerComponent, Context, context_teardown
|
3
|
-
from jupyverse_api.auth import Auth, AuthConfig
|
4
|
-
from jupyverse_api.app import App
|
5
3
|
from sqlalchemy.ext.asyncio import AsyncEngine, AsyncSession
|
6
4
|
|
5
|
+
from jupyverse_api.app import App
|
6
|
+
from jupyverse_api.auth import Auth, AuthConfig
|
7
|
+
|
7
8
|
from .config import AuthJupyterHubConfig
|
8
9
|
from .db import Base
|
9
10
|
from .routes import auth_factory
|
@@ -5,18 +5,19 @@ import json
|
|
5
5
|
import os
|
6
6
|
from datetime import datetime
|
7
7
|
from typing import Any, Callable, Dict, List, Optional, Tuple, Union
|
8
|
-
from typing_extensions import Annotated
|
9
8
|
|
10
9
|
import httpx
|
11
10
|
from fastapi import APIRouter, Cookie, Depends, HTTPException, Request, WebSocket, status
|
12
11
|
from fastapi.responses import RedirectResponse
|
13
12
|
from jupyterhub.services.auth import HubOAuth
|
14
13
|
from jupyterhub.utils import isoformat
|
14
|
+
from sqlalchemy.ext.asyncio import AsyncSession
|
15
|
+
from sqlalchemy.future import select
|
16
|
+
from typing_extensions import Annotated
|
17
|
+
|
15
18
|
from jupyverse_api import Router
|
16
19
|
from jupyverse_api.app import App
|
17
20
|
from jupyverse_api.auth import Auth, User
|
18
|
-
from sqlalchemy.ext.asyncio import AsyncSession
|
19
|
-
from sqlalchemy.future import select
|
20
21
|
|
21
22
|
from .db import UserDB
|
22
23
|
from .models import JupyterHubUser
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.4.0"
|
@@ -5,9 +5,10 @@ from uuid import uuid4
|
|
5
5
|
|
6
6
|
import aiosqlite
|
7
7
|
from anyio import Path
|
8
|
-
from jupyverse_api import Singleton
|
9
8
|
from watchfiles import Change, awatch
|
10
9
|
|
10
|
+
from jupyverse_api import Singleton
|
11
|
+
|
11
12
|
logger = logging.getLogger("contents")
|
12
13
|
|
13
14
|
|
@@ -49,7 +50,7 @@ class FileIdManager(metaclass=Singleton):
|
|
49
50
|
async with self.lock:
|
50
51
|
async with aiosqlite.connect(self.db_path) as db:
|
51
52
|
async with db.execute("SELECT id FROM fileids WHERE path = ?", (path,)) as cursor:
|
52
|
-
async for idx, in cursor:
|
53
|
+
async for (idx,) in cursor:
|
53
54
|
return idx
|
54
55
|
return None
|
55
56
|
|
@@ -58,7 +59,7 @@ class FileIdManager(metaclass=Singleton):
|
|
58
59
|
async with self.lock:
|
59
60
|
async with aiosqlite.connect(self.db_path) as db:
|
60
61
|
async with db.execute("SELECT path FROM fileids WHERE id = ?", (idx,)) as cursor:
|
61
|
-
async for path, in cursor:
|
62
|
+
async for (path,) in cursor:
|
62
63
|
return path
|
63
64
|
return None
|
64
65
|
|
@@ -174,7 +175,7 @@ class FileIdManager(metaclass=Singleton):
|
|
174
175
|
async def get_mtime(path, db) -> Optional[float]:
|
175
176
|
if db:
|
176
177
|
async with db.execute("SELECT mtime FROM fileids WHERE path = ?", (path,)) as cursor:
|
177
|
-
async for mtime, in cursor:
|
178
|
+
async for (mtime,) in cursor:
|
178
179
|
return mtime
|
179
180
|
# deleted file is not in database, shouldn't happen
|
180
181
|
return None
|
@@ -9,6 +9,8 @@ from typing import Dict, List, Optional, Union, cast
|
|
9
9
|
|
10
10
|
from anyio import open_file
|
11
11
|
from fastapi import HTTPException, Response
|
12
|
+
from starlette.requests import Request
|
13
|
+
|
12
14
|
from jupyverse_api.auth import User
|
13
15
|
from jupyverse_api.contents import Contents
|
14
16
|
from jupyverse_api.contents.models import (
|
@@ -18,7 +20,6 @@ from jupyverse_api.contents.models import (
|
|
18
20
|
RenameContent,
|
19
21
|
SaveContent,
|
20
22
|
)
|
21
|
-
from starlette.requests import Request
|
22
23
|
|
23
24
|
from .fileid import FileIdManager
|
24
25
|
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.4.0"
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.4.0"
|