jupyverse 0.7.2__tar.gz → 0.7.4__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.
Files changed (265) hide show
  1. {jupyverse-0.7.2 → jupyverse-0.7.4}/CHANGELOG.md +30 -2
  2. {jupyverse-0.7.2 → jupyverse-0.7.4}/PKG-INFO +1 -1
  3. jupyverse-0.7.4/jupyverse/__init__.py +1 -0
  4. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/__init__.py +1 -1
  5. jupyverse-0.7.4/plugins/auth/fps_auth/__init__.py +1 -0
  6. jupyverse-0.7.4/plugins/auth_fief/fps_auth_fief/__init__.py +1 -0
  7. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_jupyterhub/fps_auth_jupyterhub/__init__.py +1 -1
  8. jupyverse-0.7.4/plugins/auth_jupyterhub/fps_auth_jupyterhub/main.py +29 -0
  9. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_jupyterhub/fps_auth_jupyterhub/routes.py +21 -12
  10. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_jupyterhub/pyproject.toml +1 -1
  11. jupyverse-0.7.4/plugins/contents/fps_contents/__init__.py +1 -0
  12. jupyverse-0.7.4/plugins/frontend/fps_frontend/__init__.py +1 -0
  13. jupyverse-0.7.4/plugins/jupyterlab/fps_jupyterlab/__init__.py +1 -0
  14. jupyverse-0.7.4/plugins/kernels/fps_kernels/__init__.py +1 -0
  15. jupyverse-0.7.4/plugins/lab/fps_lab/__init__.py +1 -0
  16. jupyverse-0.7.4/plugins/login/fps_login/__init__.py +1 -0
  17. jupyverse-0.7.4/plugins/nbconvert/fps_nbconvert/__init__.py +1 -0
  18. jupyverse-0.7.4/plugins/noauth/fps_noauth/__init__.py +1 -0
  19. jupyverse-0.7.4/plugins/notebook/fps_notebook/__init__.py +1 -0
  20. jupyverse-0.7.4/plugins/resource_usage/fps_resource_usage/__init__.py +1 -0
  21. jupyverse-0.7.4/plugins/terminals/fps_terminals/__init__.py +1 -0
  22. jupyverse-0.7.4/plugins/webdav/fps_webdav/__init__.py +1 -0
  23. jupyverse-0.7.4/plugins/yjs/fps_yjs/__init__.py +1 -0
  24. jupyverse-0.7.2/jupyverse/__init__.py +0 -1
  25. jupyverse-0.7.2/plugins/auth/fps_auth/__init__.py +0 -1
  26. jupyverse-0.7.2/plugins/auth_fief/fps_auth_fief/__init__.py +0 -1
  27. jupyverse-0.7.2/plugins/auth_jupyterhub/fps_auth_jupyterhub/main.py +0 -34
  28. jupyverse-0.7.2/plugins/contents/fps_contents/__init__.py +0 -1
  29. jupyverse-0.7.2/plugins/frontend/fps_frontend/__init__.py +0 -1
  30. jupyverse-0.7.2/plugins/jupyterlab/fps_jupyterlab/__init__.py +0 -1
  31. jupyverse-0.7.2/plugins/kernels/fps_kernels/__init__.py +0 -1
  32. jupyverse-0.7.2/plugins/lab/fps_lab/__init__.py +0 -1
  33. jupyverse-0.7.2/plugins/login/fps_login/__init__.py +0 -1
  34. jupyverse-0.7.2/plugins/nbconvert/fps_nbconvert/__init__.py +0 -1
  35. jupyverse-0.7.2/plugins/noauth/fps_noauth/__init__.py +0 -1
  36. jupyverse-0.7.2/plugins/notebook/fps_notebook/__init__.py +0 -1
  37. jupyverse-0.7.2/plugins/resource_usage/fps_resource_usage/__init__.py +0 -1
  38. jupyverse-0.7.2/plugins/terminals/fps_terminals/__init__.py +0 -1
  39. jupyverse-0.7.2/plugins/webdav/fps_webdav/__init__.py +0 -1
  40. jupyverse-0.7.2/plugins/yjs/fps_yjs/__init__.py +0 -1
  41. {jupyverse-0.7.2 → jupyverse-0.7.4}/.devcontainer/devcontainer.json +0 -0
  42. {jupyverse-0.7.2 → jupyverse-0.7.4}/.devcontainer/requirements.txt +0 -0
  43. {jupyverse-0.7.2 → jupyverse-0.7.4}/.github/workflows/check-release.yml +0 -0
  44. {jupyverse-0.7.2 → jupyverse-0.7.4}/.github/workflows/test.yml +0 -0
  45. {jupyverse-0.7.2 → jupyverse-0.7.4}/.gitignore +0 -0
  46. {jupyverse-0.7.2 → jupyverse-0.7.4}/.pre-commit-config.yaml +0 -0
  47. {jupyverse-0.7.2 → jupyverse-0.7.4}/CONTRIBUTING.md +0 -0
  48. {jupyverse-0.7.2 → jupyverse-0.7.4}/COPYING.md +0 -0
  49. {jupyverse-0.7.2 → jupyverse-0.7.4}/README.md +0 -0
  50. {jupyverse-0.7.2 → jupyverse-0.7.4}/binder/environment.yml +0 -0
  51. {jupyverse-0.7.2 → jupyverse-0.7.4}/binder/jupyter_notebook_config.py +0 -0
  52. {jupyverse-0.7.2 → jupyverse-0.7.4}/binder/postBuild +0 -0
  53. {jupyverse-0.7.2 → jupyverse-0.7.4}/binder/start +0 -0
  54. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/index.md +0 -0
  55. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/install.md +0 -0
  56. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/jupyter.svg +0 -0
  57. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/plugins/auth.md +0 -0
  58. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/plugins/contents.md +0 -0
  59. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/plugins/frontend.md +0 -0
  60. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/plugins/jupyterlab.md +0 -0
  61. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/plugins/kernels.md +0 -0
  62. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/plugins/lab.md +0 -0
  63. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/plugins/login.md +0 -0
  64. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/plugins/nbconvert.md +0 -0
  65. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/plugins/notebook.md +0 -0
  66. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/plugins/resource_usage.md +0 -0
  67. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/plugins/terminals.md +0 -0
  68. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/plugins/yjs.md +0 -0
  69. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/tutorials/jupyterhub_jupyverse_deployment.md +0 -0
  70. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/tutorials/standalone_jupyverse_deployment.md +0 -0
  71. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/usage/microservices.md +0 -0
  72. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/usage/multi_user.md +0 -0
  73. {jupyverse-0.7.2 → jupyverse-0.7.4}/docs/usage/single_user.md +0 -0
  74. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse/py.typed +0 -0
  75. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/COPYING.md +0 -0
  76. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/README.md +0 -0
  77. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/app/__init__.py +0 -0
  78. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/auth/__init__.py +0 -0
  79. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/auth/models.py +0 -0
  80. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/cli.py +0 -0
  81. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/contents/__init__.py +0 -0
  82. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/contents/models.py +0 -0
  83. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/exceptions.py +0 -0
  84. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/frontend/__init__.py +0 -0
  85. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/jupyterlab/__init__.py +0 -0
  86. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/kernels/__init__.py +0 -0
  87. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/kernels/models.py +0 -0
  88. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/lab/__init__.py +0 -0
  89. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/login/__init__.py +0 -0
  90. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/main/__init__.py +0 -0
  91. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/nbconvert/__init__.py +0 -0
  92. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/notebook/__init__.py +0 -0
  93. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/py.typed +0 -0
  94. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/resource_usage/__init__.py +0 -0
  95. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/terminals/__init__.py +0 -0
  96. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/terminals/models.py +0 -0
  97. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/yjs/__init__.py +0 -0
  98. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/jupyverse_api/yjs/models.py +0 -0
  99. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/pyproject.toml +0 -0
  100. {jupyverse-0.7.2 → jupyverse-0.7.4}/jupyverse_api/tests/test_resource_lock.py +0 -0
  101. {jupyverse-0.7.2 → jupyverse-0.7.4}/mkdocs.yml +0 -0
  102. {jupyverse-0.7.2 → jupyverse-0.7.4}/notebooks/admin_users.ipynb +0 -0
  103. {jupyverse-0.7.2 → jupyverse-0.7.4}/notebooks/admin_users.py +0 -0
  104. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth/COPYING.md +0 -0
  105. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth/README.md +0 -0
  106. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth/fps_auth/backends.py +0 -0
  107. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth/fps_auth/config.py +0 -0
  108. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth/fps_auth/db.py +0 -0
  109. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth/fps_auth/main.py +0 -0
  110. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth/fps_auth/models.py +0 -0
  111. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth/fps_auth/py.typed +0 -0
  112. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth/fps_auth/routes.py +0 -0
  113. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth/pyproject.toml +0 -0
  114. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_fief/COPYING.md +0 -0
  115. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_fief/README.md +0 -0
  116. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_fief/fps_auth_fief/backend.py +0 -0
  117. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_fief/fps_auth_fief/config.py +0 -0
  118. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_fief/fps_auth_fief/main.py +0 -0
  119. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_fief/fps_auth_fief/py.typed +0 -0
  120. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_fief/fps_auth_fief/routes.py +0 -0
  121. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_fief/pyproject.toml +0 -0
  122. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_jupyterhub/COPYING.md +0 -0
  123. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_jupyterhub/README.md +0 -0
  124. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_jupyterhub/fps_auth_jupyterhub/config.py +0 -0
  125. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_jupyterhub/fps_auth_jupyterhub/db.py +0 -0
  126. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_jupyterhub/fps_auth_jupyterhub/launch.py +0 -0
  127. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_jupyterhub/fps_auth_jupyterhub/models.py +0 -0
  128. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/auth_jupyterhub/fps_auth_jupyterhub/py.typed +0 -0
  129. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/contents/COPYING.md +0 -0
  130. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/contents/README.md +0 -0
  131. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/contents/fps_contents/fileid.py +0 -0
  132. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/contents/fps_contents/main.py +0 -0
  133. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/contents/fps_contents/py.typed +0 -0
  134. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/contents/fps_contents/routes.py +0 -0
  135. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/contents/pyproject.toml +0 -0
  136. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/frontend/COPYING.md +0 -0
  137. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/frontend/README.md +0 -0
  138. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/frontend/fps_frontend/main.py +0 -0
  139. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/frontend/fps_frontend/py.typed +0 -0
  140. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/frontend/pyproject.toml +0 -0
  141. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/jupyterlab/COPYING.md +0 -0
  142. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/jupyterlab/README.md +0 -0
  143. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/jupyterlab/fps_jupyterlab/index.py +0 -0
  144. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/jupyterlab/fps_jupyterlab/main.py +0 -0
  145. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/jupyterlab/fps_jupyterlab/py.typed +0 -0
  146. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/jupyterlab/fps_jupyterlab/routes.py +0 -0
  147. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/jupyterlab/pyproject.toml +0 -0
  148. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/kernels/COPYING.md +0 -0
  149. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/kernels/README.md +0 -0
  150. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/kernels/fps_kernels/kernel_driver/__init__.py +0 -0
  151. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/kernels/fps_kernels/kernel_driver/connect.py +0 -0
  152. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/kernels/fps_kernels/kernel_driver/driver.py +0 -0
  153. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/kernels/fps_kernels/kernel_driver/kernelspec.py +0 -0
  154. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/kernels/fps_kernels/kernel_driver/message.py +0 -0
  155. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/kernels/fps_kernels/kernel_driver/paths.py +0 -0
  156. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/kernels/fps_kernels/kernel_server/__init__.py +0 -0
  157. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/kernels/fps_kernels/kernel_server/message.py +0 -0
  158. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/kernels/fps_kernels/kernel_server/server.py +0 -0
  159. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/kernels/fps_kernels/main.py +0 -0
  160. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/kernels/fps_kernels/py.typed +0 -0
  161. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/kernels/fps_kernels/routes.py +0 -0
  162. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/kernels/pyproject.toml +0 -0
  163. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/lab/COPYING.md +0 -0
  164. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/lab/README.md +0 -0
  165. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/lab/fps_lab/main.py +0 -0
  166. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/lab/fps_lab/py.typed +0 -0
  167. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/lab/fps_lab/routes.py +0 -0
  168. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/lab/fps_lab/static/favicon.ico +0 -0
  169. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/lab/pyproject.toml +0 -0
  170. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/COPYING.md +0 -0
  171. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/README.md +0 -0
  172. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/fps_login/main.py +0 -0
  173. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/fps_login/py.typed +0 -0
  174. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/fps_login/routes.py +0 -0
  175. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/fps_login/static/favicons/favicon-busy-1.ico +0 -0
  176. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/fps_login/static/favicons/favicon-busy-2.ico +0 -0
  177. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/fps_login/static/favicons/favicon-busy-3.ico +0 -0
  178. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/fps_login/static/favicons/favicon-file.ico +0 -0
  179. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/fps_login/static/favicons/favicon-notebook.ico +0 -0
  180. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/fps_login/static/favicons/favicon-terminal.ico +0 -0
  181. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/fps_login/static/favicons/favicon.ico +0 -0
  182. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/fps_login/static/index.html +0 -0
  183. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/fps_login/static/logo/github.svg +0 -0
  184. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/fps_login/static/logo/logo.png +0 -0
  185. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/fps_login/static/style/index.css +0 -0
  186. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/login/pyproject.toml +0 -0
  187. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/nbconvert/COPYING.md +0 -0
  188. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/nbconvert/README.md +0 -0
  189. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/nbconvert/fps_nbconvert/main.py +0 -0
  190. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/nbconvert/fps_nbconvert/py.typed +0 -0
  191. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/nbconvert/fps_nbconvert/routes.py +0 -0
  192. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/nbconvert/pyproject.toml +0 -0
  193. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/noauth/COPYING.md +0 -0
  194. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/noauth/README.md +0 -0
  195. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/noauth/fps_noauth/backends.py +0 -0
  196. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/noauth/fps_noauth/main.py +0 -0
  197. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/noauth/fps_noauth/py.typed +0 -0
  198. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/noauth/pyproject.toml +0 -0
  199. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/notebook/COPYING.md +0 -0
  200. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/notebook/README.md +0 -0
  201. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/notebook/fps_notebook/main.py +0 -0
  202. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/notebook/fps_notebook/py.typed +0 -0
  203. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/notebook/fps_notebook/routes.py +0 -0
  204. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/notebook/pyproject.toml +0 -0
  205. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/resource_usage/COPYING.md +0 -0
  206. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/resource_usage/README.md +0 -0
  207. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/resource_usage/fps_resource_usage/main.py +0 -0
  208. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/resource_usage/fps_resource_usage/py.typed +0 -0
  209. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/resource_usage/fps_resource_usage/routes.py +0 -0
  210. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/resource_usage/pyproject.toml +0 -0
  211. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/terminals/COPYING.md +0 -0
  212. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/terminals/README.md +0 -0
  213. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/terminals/fps_terminals/main.py +0 -0
  214. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/terminals/fps_terminals/py.typed +0 -0
  215. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/terminals/fps_terminals/routes.py +0 -0
  216. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/terminals/fps_terminals/server.py +0 -0
  217. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/terminals/fps_terminals/win_server.py +0 -0
  218. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/terminals/pyproject.toml +0 -0
  219. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/webdav/COPYING.md +0 -0
  220. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/webdav/README.md +0 -0
  221. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/webdav/fps_webdav/config.py +0 -0
  222. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/webdav/fps_webdav/main.py +0 -0
  223. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/webdav/fps_webdav/py.typed +0 -0
  224. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/webdav/fps_webdav/routes.py +0 -0
  225. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/webdav/pyproject.toml +0 -0
  226. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/webdav/tests/conftest.py +0 -0
  227. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/webdav/tests/test_webdav.py +0 -0
  228. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/COPYING.md +0 -0
  229. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/README.md +0 -0
  230. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/main.py +0 -0
  231. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/py.typed +0 -0
  232. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/routes.py +0 -0
  233. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ydocs/__init__.py +0 -0
  234. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ydocs/utils.py +0 -0
  235. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ydocs/ybasedoc.py +0 -0
  236. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ydocs/yblob.py +0 -0
  237. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ydocs/yfile.py +0 -0
  238. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ydocs/ynotebook.py +0 -0
  239. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ydocs/yunicode.py +0 -0
  240. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ywebsocket/__init__.py +0 -0
  241. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ywebsocket/asgi_server.py +0 -0
  242. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ywebsocket/awareness.py +0 -0
  243. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ywebsocket/django_channels_consumer.py +0 -0
  244. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ywebsocket/websocket.py +0 -0
  245. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ywebsocket/websocket_provider.py +0 -0
  246. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ywebsocket/websocket_server.py +0 -0
  247. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ywebsocket/yroom.py +0 -0
  248. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ywebsocket/ystore.py +0 -0
  249. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ywebsocket/yutils.py +0 -0
  250. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ywidgets/__init__.py +0 -0
  251. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/fps_yjs/ywidgets/widgets.py +0 -0
  252. {jupyverse-0.7.2 → jupyverse-0.7.4}/plugins/yjs/pyproject.toml +0 -0
  253. {jupyverse-0.7.2 → jupyverse-0.7.4}/pyproject.toml +0 -0
  254. {jupyverse-0.7.2 → jupyverse-0.7.4}/pytest.ini +0 -0
  255. {jupyverse-0.7.2 → jupyverse-0.7.4}/tests/conftest.py +0 -0
  256. {jupyverse-0.7.2 → jupyverse-0.7.4}/tests/data/notebook0.ipynb +0 -0
  257. {jupyverse-0.7.2 → jupyverse-0.7.4}/tests/data/notebook1.ipynb +0 -0
  258. {jupyverse-0.7.2 → jupyverse-0.7.4}/tests/test_app.py +0 -0
  259. {jupyverse-0.7.2 → jupyverse-0.7.4}/tests/test_auth.py +0 -0
  260. {jupyverse-0.7.2 → jupyverse-0.7.4}/tests/test_contents.py +0 -0
  261. {jupyverse-0.7.2 → jupyverse-0.7.4}/tests/test_execute.py +0 -0
  262. {jupyverse-0.7.2 → jupyverse-0.7.4}/tests/test_kernels.py +0 -0
  263. {jupyverse-0.7.2 → jupyverse-0.7.4}/tests/test_server.py +0 -0
  264. {jupyverse-0.7.2 → jupyverse-0.7.4}/tests/test_settings.py +0 -0
  265. {jupyverse-0.7.2 → jupyverse-0.7.4}/tests/utils.py +0 -0
@@ -2,6 +2,36 @@
2
2
 
3
3
  <!-- <START NEW CHANGELOG ENTRY> -->
4
4
 
5
+ ## 0.7.4
6
+
7
+ ([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.7.3...3dee770cdcb8ae2529874a0a73592d2744eed63e))
8
+
9
+ ### Merged PRs
10
+
11
+ - Fix fps-auth-jupyterhub [#460](https://github.com/jupyter-server/jupyverse/pull/460) ([@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=2025-02-17&to=2025-02-17&type=c))
16
+
17
+ [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2025-02-17..2025-02-17&type=Issues)
18
+
19
+ <!-- <END NEW CHANGELOG ENTRY> -->
20
+
21
+ ## 0.7.3
22
+
23
+ ([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.7.2...2c046e8db0203c7d90476bf11ab11b89c0b0af51))
24
+
25
+ ### Merged PRs
26
+
27
+ - Fix fps-auth-jupyterhub dependency [#459](https://github.com/jupyter-server/jupyverse/pull/459) ([@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=2025-02-15&to=2025-02-17&type=c))
32
+
33
+ [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2025-02-15..2025-02-17&type=Issues)
34
+
5
35
  ## 0.7.2
6
36
 
7
37
  ([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.7.1...4d739c76ef3891c6fe8b6e7397e215efe348e95b))
@@ -16,8 +46,6 @@
16
46
 
17
47
  [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2025-02-14..2025-02-15&type=Issues)
18
48
 
19
- <!-- <END NEW CHANGELOG ENTRY> -->
20
-
21
49
  ## 0.7.1
22
50
 
23
51
  ([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.7.0...96cb8831e330527089ebbf41d649cbe9c8b32053))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jupyverse
3
- Version: 0.7.2
3
+ Version: 0.7.4
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>
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -5,7 +5,7 @@ from pydantic import BaseModel
5
5
 
6
6
  from .app import App
7
7
 
8
- __version__ = "0.7.2"
8
+ __version__ = "0.7.4"
9
9
 
10
10
 
11
11
  class Singleton(type):
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -1,3 +1,3 @@
1
- __version__ = "0.7.2"
1
+ __version__ = "0.7.4"
2
2
 
3
3
  from .launch import launch # noqa
@@ -0,0 +1,29 @@
1
+ from anyio import create_task_group
2
+ from fps import Module
3
+
4
+ from jupyverse_api.app import App
5
+ from jupyverse_api.auth import Auth, AuthConfig
6
+
7
+ from .config import AuthJupyterHubConfig
8
+ from .routes import auth_factory
9
+
10
+
11
+ class AuthJupyterHubModule(Module):
12
+ def __init__(self, name: str, **kwargs):
13
+ super().__init__(name)
14
+ self.auth_jupyterhub_config = AuthJupyterHubConfig(**kwargs)
15
+
16
+ async def prepare(self) -> None:
17
+ self.put(self.auth_jupyterhub_config, AuthConfig)
18
+ app = await self.get(App)
19
+
20
+ self.auth_jupyterhub = auth_factory(app, self.auth_jupyterhub_config)
21
+
22
+ async with create_task_group() as self.tg:
23
+ await self.tg.start(self.auth_jupyterhub.start)
24
+ self.put(self.auth_jupyterhub, Auth)
25
+ self.done()
26
+
27
+ async def stop(self) -> None:
28
+ await self.auth_jupyterhub.stop()
29
+ self.tg.cancel_scope.cancel()
@@ -6,14 +6,14 @@ from datetime import datetime
6
6
  from functools import partial
7
7
  from typing import Any, Awaitable, Callable, Dict, List, Optional, Tuple, Union
8
8
 
9
- from anyio import TASK_STATUS_IGNORED, Lock, create_task_group
9
+ from anyio import TASK_STATUS_IGNORED, Lock, create_task_group, sleep
10
10
  from anyio.abc import TaskStatus
11
11
  from fastapi import APIRouter, Cookie, Depends, HTTPException, Request, WebSocket, status
12
12
  from fastapi.responses import RedirectResponse
13
13
  from httpx import AsyncClient
14
14
  from jupyterhub.services.auth import HubOAuth
15
15
  from jupyterhub.utils import isoformat
16
- from sqlalchemy.ext.asyncio import AsyncSession
16
+ from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
17
17
  from sqlalchemy.future import select
18
18
  from typing_extensions import Annotated
19
19
 
@@ -21,18 +21,22 @@ from jupyverse_api import Router
21
21
  from jupyverse_api.app import App
22
22
  from jupyverse_api.auth import Auth, User
23
23
 
24
- from .db import UserDB
24
+ from .config import AuthJupyterHubConfig
25
+ from .db import Base, UserDB
25
26
  from .models import JupyterHubUser
26
27
 
27
28
 
28
29
  def auth_factory(
29
30
  app: App,
30
- db_session: AsyncSession,
31
- http_client: AsyncClient,
31
+ auth_jupyterhub_config: AuthJupyterHubConfig,
32
32
  ):
33
33
  class AuthJupyterHub(Auth, Router):
34
34
  def __init__(self) -> None:
35
35
  super().__init__(app)
36
+ self.db_engine = create_async_engine(auth_jupyterhub_config.db_url)
37
+ self.db_session = AsyncSession(self.db_engine)
38
+
39
+ self.http_client = AsyncClient()
36
40
  self.hub_auth = HubOAuth()
37
41
  self.db_lock = Lock()
38
42
  self.activity_url = os.environ.get("JUPYTERHUB_ACTIVITY_URL")
@@ -57,14 +61,14 @@ def auth_factory(
57
61
  token = self.hub_auth.token_for_code(code)
58
62
  hub_user = await self.hub_auth.user_for_token(token, use_cache=False, sync=False)
59
63
  async with self.db_lock:
60
- db_session.add(
64
+ self.db_session.add(
61
65
  UserDB(
62
66
  token=token,
63
67
  name=hub_user["name"],
64
68
  username=hub_user["name"],
65
69
  ),
66
70
  )
67
- await db_session.commit()
71
+ await self.db_session.commit()
68
72
 
69
73
  next_url = self.hub_auth.get_next_url(cookie_state)
70
74
  response = RedirectResponse(next_url)
@@ -115,7 +119,7 @@ def auth_factory(
115
119
  )
116
120
 
117
121
  async with self.db_lock:
118
- user_db = await db_session.scalar(
122
+ user_db = await self.db_session.scalar(
119
123
  select(UserDB).filter_by(token=jupyverse_jupyterhub_token)
120
124
  )
121
125
  user = JupyterHubUser.model_validate(user_db)
@@ -154,13 +158,18 @@ def auth_factory(
154
158
  return _
155
159
 
156
160
  async def start(self, *, task_status: TaskStatus[None] = TASK_STATUS_IGNORED) -> None:
161
+ async with self.db_engine.begin() as conn:
162
+ await conn.run_sync(Base.metadata.create_all)
163
+
157
164
  async with create_task_group() as tg:
158
165
  self.task_group = tg
159
166
  task_status.started()
167
+ await sleep(float("inf"))
160
168
 
161
169
  async def stop(self) -> None:
162
170
  await self.http_client.aclose()
163
- self.task_group.cancel_scope.cancel()
171
+ await self.db_session.close()
172
+ await self.db_engine.dispose()
164
173
 
165
174
  async def update_user(
166
175
  self, jupyverse_jupyterhub_token: Annotated[Union[str, None], Cookie()] = None
@@ -168,12 +177,12 @@ def auth_factory(
168
177
  async def _(data: Dict[str, Any]) -> JupyterHubUser | None:
169
178
  if jupyverse_jupyterhub_token is not None:
170
179
  async with self.db_lock:
171
- user_db = await db_session.scalar(
180
+ user_db = await self.db_session.scalar(
172
181
  select(UserDB).filter_by(token=jupyverse_jupyterhub_token)
173
182
  )
174
183
  for k, v in data.items():
175
184
  setattr(user_db, k, v)
176
- await db_session.commit()
185
+ await self.db_session.commit()
177
186
  user = JupyterHubUser.model_validate(user_db)
178
187
  return user
179
188
  return None
@@ -191,7 +200,7 @@ def auth_factory(
191
200
  if "jupyverse_jupyterhub_token" in websocket._cookies:
192
201
  jupyverse_jupyterhub_token = websocket._cookies["jupyverse_jupyterhub_token"]
193
202
  async with self.db_lock:
194
- user_db = await db_session.scalar(
203
+ user_db = await self.db_session.scalar(
195
204
  select(UserDB).filter_by(token=jupyverse_jupyterhub_token)
196
205
  )
197
206
  if user_db:
@@ -9,7 +9,7 @@ keywords = ["jupyter", "server", "fastapi", "plugins"]
9
9
  dynamic = ["version"]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
- "asphalt-sqlalchemy >=5.0.1,<6",
12
+ "aiosqlite",
13
13
  "httpx >=0.24.1,<1",
14
14
  "jupyterhub >=4.0.1,<5",
15
15
  "jupyverse-api >=0.7.0,<1",
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
@@ -1,34 +0,0 @@
1
- import httpx
2
- from fps import Module
3
- from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
4
-
5
- from jupyverse_api.app import App
6
- from jupyverse_api.auth import Auth, AuthConfig
7
-
8
- from .config import AuthJupyterHubConfig
9
- from .db import Base
10
- from .routes import auth_factory
11
-
12
-
13
- class AuthJupyterHubModule(Module):
14
- def __init__(self, name: str, **kwargs):
15
- super().__init__(name)
16
- self.auth_jupyterhub_config = AuthJupyterHubConfig(**kwargs)
17
-
18
- async def prepare(self) -> None:
19
- self.put(self.auth_jupyterhub_config, AuthConfig)
20
- app = await self.get(App)
21
- self.db_engine = create_async_engine(self.auth_jupyterhub_config.db_url)
22
- self.db_session = AsyncSession(self.db_engine)
23
-
24
- self.http_client = httpx.AsyncClient()
25
- auth_jupyterhub = auth_factory(app, self.db_session, self.http_client)
26
- self.put(auth_jupyterhub, Auth)
27
-
28
- async with self.db_engine.begin() as conn:
29
- await conn.run_sync(Base.metadata.create_all)
30
-
31
- async def stop(self) -> None:
32
- await self.http_client.aclose()
33
- await self.db_session.close()
34
- await self.db_engine.dispose()
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
@@ -1 +0,0 @@
1
- __version__ = "0.7.2"
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