jupyverse 0.10.7__tar.gz → 0.10.9__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.10.7 → jupyverse-0.10.9}/CHANGELOG.md +4 -0
  2. {jupyverse-0.10.7 → jupyverse-0.10.9}/PKG-INFO +18 -18
  3. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/__init__.py +0 -35
  4. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/contents/__init__.py +2 -1
  5. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/pyproject.toml +2 -1
  6. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth/pyproject.toml +2 -2
  7. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_fief/pyproject.toml +2 -2
  8. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_jupyterhub/pyproject.toml +2 -2
  9. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/contents/pyproject.toml +2 -2
  10. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/file_id/pyproject.toml +2 -2
  11. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/frontend/pyproject.toml +2 -2
  12. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/jupyterlab/pyproject.toml +2 -2
  13. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernel_subprocess/pyproject.toml +2 -2
  14. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernel_web_worker/pyproject.toml +2 -2
  15. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/pyproject.toml +2 -2
  16. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/lab/pyproject.toml +2 -2
  17. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/pyproject.toml +2 -2
  18. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/nbconvert/pyproject.toml +2 -2
  19. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/noauth/pyproject.toml +2 -2
  20. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/notebook/pyproject.toml +2 -2
  21. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/resource_usage/pyproject.toml +2 -2
  22. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/terminals/pyproject.toml +2 -2
  23. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/webdav/pyproject.toml +2 -2
  24. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/routes.py +1 -2
  25. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/pyproject.toml +3 -2
  26. {jupyverse-0.10.7 → jupyverse-0.10.9}/pyproject.toml +17 -17
  27. jupyverse-0.10.7/jupyverse_api/tests/test_resource_lock.py +0 -57
  28. {jupyverse-0.10.7 → jupyverse-0.10.9}/.devcontainer/devcontainer.json +0 -0
  29. {jupyverse-0.10.7 → jupyverse-0.10.9}/.devcontainer/requirements.txt +0 -0
  30. {jupyverse-0.10.7 → jupyverse-0.10.9}/.github/workflows/publish-release.yml +0 -0
  31. {jupyverse-0.10.7 → jupyverse-0.10.9}/.github/workflows/test.yml +0 -0
  32. {jupyverse-0.10.7 → jupyverse-0.10.9}/.gitignore +0 -0
  33. {jupyverse-0.10.7 → jupyverse-0.10.9}/.pre-commit-config.yaml +0 -0
  34. {jupyverse-0.10.7 → jupyverse-0.10.9}/COPYING.md +0 -0
  35. {jupyverse-0.10.7 → jupyverse-0.10.9}/README.md +0 -0
  36. {jupyverse-0.10.7 → jupyverse-0.10.9}/binder/environment.yml +0 -0
  37. {jupyverse-0.10.7 → jupyverse-0.10.9}/binder/jupyter_notebook_config.py +0 -0
  38. {jupyverse-0.10.7 → jupyverse-0.10.9}/binder/postBuild +0 -0
  39. {jupyverse-0.10.7 → jupyverse-0.10.9}/binder/start +0 -0
  40. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/index.md +0 -0
  41. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/install.md +0 -0
  42. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/jupyter.svg +0 -0
  43. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/plugins/auth.md +0 -0
  44. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/plugins/contents.md +0 -0
  45. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/plugins/frontend.md +0 -0
  46. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/plugins/jupyterlab.md +0 -0
  47. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/plugins/kernels.md +0 -0
  48. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/plugins/lab.md +0 -0
  49. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/plugins/login.md +0 -0
  50. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/plugins/nbconvert.md +0 -0
  51. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/plugins/notebook.md +0 -0
  52. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/plugins/resource_usage.md +0 -0
  53. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/plugins/terminals.md +0 -0
  54. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/plugins/yjs.md +0 -0
  55. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/tutorials/jupyterhub_jupyverse_deployment.md +0 -0
  56. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/tutorials/standalone_jupyverse_deployment.md +0 -0
  57. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/usage/microservices.md +0 -0
  58. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/usage/multi_user.md +0 -0
  59. {jupyverse-0.10.7 → jupyverse-0.10.9}/docs/usage/single_user.md +0 -0
  60. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse/__init__.py +0 -0
  61. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse/py.typed +0 -0
  62. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/COPYING.md +0 -0
  63. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/README.md +0 -0
  64. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/app/__init__.py +0 -0
  65. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/asgi_websocket_transport.py +0 -0
  66. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/auth/__init__.py +0 -0
  67. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/auth/models.py +0 -0
  68. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/cli.py +0 -0
  69. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/contents/models.py +0 -0
  70. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/exceptions.py +0 -0
  71. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/file_id/__init__.py +0 -0
  72. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/frontend/__init__.py +0 -0
  73. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/jupyterlab/__init__.py +0 -0
  74. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/kernel/__init__.py +0 -0
  75. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/kernels/__init__.py +0 -0
  76. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/kernels/models.py +0 -0
  77. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/lab/__init__.py +0 -0
  78. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/login/__init__.py +0 -0
  79. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/main/__init__.py +0 -0
  80. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/nbconvert/__init__.py +0 -0
  81. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/notebook/__init__.py +0 -0
  82. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/py.typed +0 -0
  83. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/resource_usage/__init__.py +0 -0
  84. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/terminals/__init__.py +0 -0
  85. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/terminals/models.py +0 -0
  86. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/yjs/__init__.py +0 -0
  87. {jupyverse-0.10.7 → jupyverse-0.10.9}/jupyverse_api/jupyverse_api/yjs/models.py +0 -0
  88. {jupyverse-0.10.7 → jupyverse-0.10.9}/mkdocs.yml +0 -0
  89. {jupyverse-0.10.7 → jupyverse-0.10.9}/notebooks/admin_users.ipynb +0 -0
  90. {jupyverse-0.10.7 → jupyverse-0.10.9}/notebooks/admin_users.py +0 -0
  91. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth/COPYING.md +0 -0
  92. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth/README.md +0 -0
  93. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth/fps_auth/__init__.py +0 -0
  94. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth/fps_auth/backends.py +0 -0
  95. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth/fps_auth/config.py +0 -0
  96. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth/fps_auth/db.py +0 -0
  97. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth/fps_auth/main.py +0 -0
  98. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth/fps_auth/models.py +0 -0
  99. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth/fps_auth/py.typed +0 -0
  100. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth/fps_auth/routes.py +0 -0
  101. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_fief/COPYING.md +0 -0
  102. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_fief/README.md +0 -0
  103. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_fief/fps_auth_fief/__init__.py +0 -0
  104. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_fief/fps_auth_fief/backend.py +0 -0
  105. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_fief/fps_auth_fief/config.py +0 -0
  106. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_fief/fps_auth_fief/main.py +0 -0
  107. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_fief/fps_auth_fief/py.typed +0 -0
  108. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_fief/fps_auth_fief/routes.py +0 -0
  109. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_jupyterhub/COPYING.md +0 -0
  110. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_jupyterhub/README.md +0 -0
  111. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_jupyterhub/fps_auth_jupyterhub/__init__.py +0 -0
  112. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_jupyterhub/fps_auth_jupyterhub/config.py +0 -0
  113. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_jupyterhub/fps_auth_jupyterhub/db.py +0 -0
  114. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_jupyterhub/fps_auth_jupyterhub/launch.py +0 -0
  115. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_jupyterhub/fps_auth_jupyterhub/main.py +0 -0
  116. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_jupyterhub/fps_auth_jupyterhub/models.py +0 -0
  117. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_jupyterhub/fps_auth_jupyterhub/py.typed +0 -0
  118. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/auth_jupyterhub/fps_auth_jupyterhub/routes.py +0 -0
  119. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/contents/COPYING.md +0 -0
  120. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/contents/README.md +0 -0
  121. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/contents/fps_contents/__init__.py +0 -0
  122. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/contents/fps_contents/main.py +0 -0
  123. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/contents/fps_contents/py.typed +0 -0
  124. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/contents/fps_contents/routes.py +0 -0
  125. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/file_id/COPYING.md +0 -0
  126. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/file_id/README.md +0 -0
  127. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/file_id/fps_file_id/__init__.py +0 -0
  128. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/file_id/fps_file_id/file_id.py +0 -0
  129. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/file_id/fps_file_id/main.py +0 -0
  130. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/file_id/fps_file_id/py.typed +0 -0
  131. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/frontend/COPYING.md +0 -0
  132. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/frontend/README.md +0 -0
  133. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/frontend/fps_frontend/__init__.py +0 -0
  134. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/frontend/fps_frontend/main.py +0 -0
  135. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/frontend/fps_frontend/py.typed +0 -0
  136. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/jupyterlab/COPYING.md +0 -0
  137. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/jupyterlab/README.md +0 -0
  138. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/jupyterlab/fps_jupyterlab/__init__.py +0 -0
  139. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/jupyterlab/fps_jupyterlab/index.py +0 -0
  140. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/jupyterlab/fps_jupyterlab/main.py +0 -0
  141. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/jupyterlab/fps_jupyterlab/py.typed +0 -0
  142. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/jupyterlab/fps_jupyterlab/routes.py +0 -0
  143. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernel_subprocess/COPYING.md +0 -0
  144. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernel_subprocess/README.md +0 -0
  145. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernel_subprocess/fps_kernel_subprocess/__init__.py +0 -0
  146. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernel_subprocess/fps_kernel_subprocess/connect.py +0 -0
  147. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernel_subprocess/fps_kernel_subprocess/kernel_subprocess.py +0 -0
  148. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernel_subprocess/fps_kernel_subprocess/main.py +0 -0
  149. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernel_subprocess/fps_kernel_subprocess/py.typed +0 -0
  150. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernel_web_worker/COPYING.md +0 -0
  151. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernel_web_worker/README.md +0 -0
  152. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernel_web_worker/fps_kernel_web_worker/__init__.py +0 -0
  153. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernel_web_worker/fps_kernel_web_worker/kernel_web_worker.py +0 -0
  154. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernel_web_worker/fps_kernel_web_worker/main.py +0 -0
  155. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernel_web_worker/fps_kernel_web_worker/py.typed +0 -0
  156. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/COPYING.md +0 -0
  157. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/README.md +0 -0
  158. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/fps_kernels/__init__.py +0 -0
  159. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/fps_kernels/kernel_driver/__init__.py +0 -0
  160. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/fps_kernels/kernel_driver/driver.py +0 -0
  161. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/fps_kernels/kernel_driver/kernelspec.py +0 -0
  162. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/fps_kernels/kernel_driver/message.py +0 -0
  163. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/fps_kernels/kernel_driver/paths.py +0 -0
  164. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/fps_kernels/kernel_server/__init__.py +0 -0
  165. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/fps_kernels/kernel_server/message.py +0 -0
  166. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/fps_kernels/kernel_server/server.py +0 -0
  167. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/fps_kernels/main.py +0 -0
  168. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/fps_kernels/py.typed +0 -0
  169. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/fps_kernels/routes.py +0 -0
  170. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/kernels/tests/test_kernel_launcher.py +0 -0
  171. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/lab/COPYING.md +0 -0
  172. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/lab/README.md +0 -0
  173. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/lab/fps_lab/__init__.py +0 -0
  174. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/lab/fps_lab/main.py +0 -0
  175. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/lab/fps_lab/py.typed +0 -0
  176. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/lab/fps_lab/routes.py +0 -0
  177. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/lab/fps_lab/static/favicon.ico +0 -0
  178. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/COPYING.md +0 -0
  179. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/README.md +0 -0
  180. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/fps_login/__init__.py +0 -0
  181. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/fps_login/main.py +0 -0
  182. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/fps_login/py.typed +0 -0
  183. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/fps_login/routes.py +0 -0
  184. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/fps_login/static/favicons/favicon-busy-1.ico +0 -0
  185. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/fps_login/static/favicons/favicon-busy-2.ico +0 -0
  186. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/fps_login/static/favicons/favicon-busy-3.ico +0 -0
  187. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/fps_login/static/favicons/favicon-file.ico +0 -0
  188. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/fps_login/static/favicons/favicon-notebook.ico +0 -0
  189. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/fps_login/static/favicons/favicon-terminal.ico +0 -0
  190. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/fps_login/static/favicons/favicon.ico +0 -0
  191. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/fps_login/static/index.html +0 -0
  192. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/fps_login/static/logo/github.svg +0 -0
  193. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/fps_login/static/logo/logo.png +0 -0
  194. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/login/fps_login/static/style/index.css +0 -0
  195. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/nbconvert/COPYING.md +0 -0
  196. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/nbconvert/README.md +0 -0
  197. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/nbconvert/fps_nbconvert/__init__.py +0 -0
  198. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/nbconvert/fps_nbconvert/main.py +0 -0
  199. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/nbconvert/fps_nbconvert/py.typed +0 -0
  200. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/nbconvert/fps_nbconvert/routes.py +0 -0
  201. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/noauth/COPYING.md +0 -0
  202. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/noauth/README.md +0 -0
  203. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/noauth/fps_noauth/__init__.py +0 -0
  204. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/noauth/fps_noauth/backends.py +0 -0
  205. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/noauth/fps_noauth/main.py +0 -0
  206. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/noauth/fps_noauth/py.typed +0 -0
  207. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/notebook/COPYING.md +0 -0
  208. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/notebook/README.md +0 -0
  209. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/notebook/fps_notebook/__init__.py +0 -0
  210. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/notebook/fps_notebook/main.py +0 -0
  211. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/notebook/fps_notebook/py.typed +0 -0
  212. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/notebook/fps_notebook/routes.py +0 -0
  213. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/resource_usage/COPYING.md +0 -0
  214. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/resource_usage/README.md +0 -0
  215. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/resource_usage/fps_resource_usage/__init__.py +0 -0
  216. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/resource_usage/fps_resource_usage/main.py +0 -0
  217. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/resource_usage/fps_resource_usage/py.typed +0 -0
  218. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/resource_usage/fps_resource_usage/routes.py +0 -0
  219. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/terminals/COPYING.md +0 -0
  220. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/terminals/README.md +0 -0
  221. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/terminals/fps_terminals/__init__.py +0 -0
  222. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/terminals/fps_terminals/main.py +0 -0
  223. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/terminals/fps_terminals/py.typed +0 -0
  224. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/terminals/fps_terminals/routes.py +0 -0
  225. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/terminals/fps_terminals/server.py +0 -0
  226. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/terminals/fps_terminals/win_server.py +0 -0
  227. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/webdav/COPYING.md +0 -0
  228. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/webdav/README.md +0 -0
  229. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/webdav/fps_webdav/__init__.py +0 -0
  230. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/webdav/fps_webdav/config.py +0 -0
  231. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/webdav/fps_webdav/main.py +0 -0
  232. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/webdav/fps_webdav/py.typed +0 -0
  233. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/webdav/fps_webdav/routes.py +0 -0
  234. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/webdav/tests/conftest.py +0 -0
  235. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/webdav/tests/test_webdav.py +0 -0
  236. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/COPYING.md +0 -0
  237. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/README.md +0 -0
  238. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/__init__.py +0 -0
  239. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/main.py +0 -0
  240. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/py.typed +0 -0
  241. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/ywebsocket/__init__.py +0 -0
  242. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/ywebsocket/asgi_server.py +0 -0
  243. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/ywebsocket/awareness.py +0 -0
  244. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/ywebsocket/django_channels_consumer.py +0 -0
  245. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/ywebsocket/websocket.py +0 -0
  246. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/ywebsocket/websocket_provider.py +0 -0
  247. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/ywebsocket/websocket_server.py +0 -0
  248. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/ywebsocket/yroom.py +0 -0
  249. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/ywebsocket/ystore.py +0 -0
  250. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/ywebsocket/yutils.py +0 -0
  251. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/ywidgets/__init__.py +0 -0
  252. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/fps_yjs/ywidgets/widgets.py +0 -0
  253. {jupyverse-0.10.7 → jupyverse-0.10.9}/plugins/yjs/tests/test_yjs.py +0 -0
  254. {jupyverse-0.10.7 → jupyverse-0.10.9}/pytest.ini +0 -0
  255. {jupyverse-0.10.7 → jupyverse-0.10.9}/tests/conftest.py +0 -0
  256. {jupyverse-0.10.7 → jupyverse-0.10.9}/tests/data/notebook0.ipynb +0 -0
  257. {jupyverse-0.10.7 → jupyverse-0.10.9}/tests/data/notebook1.ipynb +0 -0
  258. {jupyverse-0.10.7 → jupyverse-0.10.9}/tests/test_app.py +0 -0
  259. {jupyverse-0.10.7 → jupyverse-0.10.9}/tests/test_auth.py +0 -0
  260. {jupyverse-0.10.7 → jupyverse-0.10.9}/tests/test_contents.py +0 -0
  261. {jupyverse-0.10.7 → jupyverse-0.10.9}/tests/test_execute.py +0 -0
  262. {jupyverse-0.10.7 → jupyverse-0.10.9}/tests/test_kernels.py +0 -0
  263. {jupyverse-0.10.7 → jupyverse-0.10.9}/tests/test_server.py +0 -0
  264. {jupyverse-0.10.7 → jupyverse-0.10.9}/tests/test_settings.py +0 -0
  265. {jupyverse-0.10.7 → jupyverse-0.10.9}/tests/utils.py +0 -0
@@ -1,5 +1,9 @@
1
1
  # Version history
2
2
 
3
+ ## 0.10.9
4
+
5
+ - Move `ResourceLock` to `anyioutils`.
6
+
3
7
  ## 0.10.7
4
8
 
5
9
  - Lock on collaboration room cleanup.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jupyverse
3
- Version: 0.10.7
3
+ Version: 0.10.9
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>
@@ -9,34 +9,34 @@ License-File: COPYING.md
9
9
  Keywords: fastapi,jupyter,plugins,server
10
10
  Requires-Python: >=3.9
11
11
  Requires-Dist: eval-type-backport; python_version < '3.10'
12
- Requires-Dist: fps-contents<0.11.0,>=0.10.0
13
- Requires-Dist: fps-file-id<0.3.0,>=0.2.1
14
- Requires-Dist: fps-frontend<0.10.0,>=0.9.0
15
- Requires-Dist: fps-kernel-subprocess<0.2.0,>=0.1.1
16
- Requires-Dist: fps-kernels<0.10.0,>=0.9.1
17
- Requires-Dist: fps-lab<0.10.0,>=0.9.0
18
- Requires-Dist: fps-nbconvert<0.10.0,>=0.9.0
19
- Requires-Dist: fps-terminals<0.10.0,>=0.9.0
20
- Requires-Dist: fps-yjs<0.11.0,>=0.10.2
12
+ Requires-Dist: fps-contents<0.11.0,>=0.10.1
13
+ Requires-Dist: fps-file-id<0.3.0,>=0.2.2
14
+ Requires-Dist: fps-frontend<0.10.0,>=0.9.1
15
+ Requires-Dist: fps-kernel-subprocess<0.2.0,>=0.1.2
16
+ Requires-Dist: fps-kernels<0.10.0,>=0.9.2
17
+ Requires-Dist: fps-lab<0.10.0,>=0.9.1
18
+ Requires-Dist: fps-nbconvert<0.10.0,>=0.9.1
19
+ Requires-Dist: fps-terminals<0.10.0,>=0.9.1
20
+ Requires-Dist: fps-yjs<0.11.0,>=0.10.3
21
21
  Requires-Dist: fps[anycorn,click,fastapi]<0.6.0,>=0.5.1
22
- Requires-Dist: jupyverse-api<0.11.0,>=0.10.3
22
+ Requires-Dist: jupyverse-api<0.12.0,>=0.11.0
23
23
  Requires-Dist: rich-click<2,>=1.6.1
24
24
  Provides-Extra: auth
25
- Requires-Dist: fps-auth<0.10.0,>=0.9.0; extra == 'auth'
26
- Requires-Dist: fps-login<0.10.0,>=0.9.0; extra == 'auth'
25
+ Requires-Dist: fps-auth<0.10.0,>=0.9.1; extra == 'auth'
26
+ Requires-Dist: fps-login<0.10.0,>=0.9.1; extra == 'auth'
27
27
  Provides-Extra: auth-fief
28
- Requires-Dist: fps-auth-fief<0.10.0,>=0.9.0; extra == 'auth-fief'
28
+ Requires-Dist: fps-auth-fief<0.10.0,>=0.9.1; extra == 'auth-fief'
29
29
  Provides-Extra: auth-jupyterhub
30
- Requires-Dist: fps-auth-jupyterhub<0.10.0,>=0.9.1; extra == 'auth-jupyterhub'
30
+ Requires-Dist: fps-auth-jupyterhub<0.10.0,>=0.9.2; extra == 'auth-jupyterhub'
31
31
  Provides-Extra: docs
32
32
  Requires-Dist: mkdocs; extra == 'docs'
33
33
  Requires-Dist: mkdocs-material; extra == 'docs'
34
34
  Provides-Extra: jupyterlab
35
- Requires-Dist: fps-jupyterlab<0.10.0,>=0.9.0; extra == 'jupyterlab'
35
+ Requires-Dist: fps-jupyterlab<0.10.0,>=0.9.1; extra == 'jupyterlab'
36
36
  Provides-Extra: noauth
37
- Requires-Dist: fps-noauth<0.10.0,>=0.9.1; extra == 'noauth'
37
+ Requires-Dist: fps-noauth<0.10.0,>=0.9.2; extra == 'noauth'
38
38
  Provides-Extra: notebook
39
- Requires-Dist: fps-notebook<0.10.0,>=0.9.0; extra == 'notebook'
39
+ Requires-Dist: fps-notebook<0.10.0,>=0.9.1; extra == 'notebook'
40
40
  Provides-Extra: test
41
41
  Requires-Dist: httpx; extra == 'test'
42
42
  Requires-Dist: httpx-ws>=0.4.1; extra == 'test'
@@ -1,7 +1,5 @@
1
1
  import importlib.metadata
2
- from typing import Any
3
2
 
4
- from anyio import Event
5
3
  from pydantic import BaseModel
6
4
 
7
5
  from .app import App
@@ -46,36 +44,3 @@ class Router:
46
44
 
47
45
  def add_middleware(self, middleware, *args, **kwargs) -> None:
48
46
  self._app.add_middleware(middleware, *args, **kwargs)
49
-
50
-
51
- class ResourceLock:
52
- """ResourceLock ensures that accesses cannot be done concurrently on the same resource."""
53
-
54
- _locks: dict[Any, Event]
55
-
56
- def __init__(self):
57
- self._locks = {}
58
-
59
- def __call__(self, idx: Any):
60
- return _ResourceLock(idx, self._locks)
61
-
62
-
63
- class _ResourceLock:
64
- _idx: Any
65
- _locks: dict[Any, Event]
66
- _lock: Event
67
-
68
- def __init__(self, idx: Any, locks: dict[Any, Event]):
69
- self._idx = idx
70
- self._locks = locks
71
-
72
- async def __aenter__(self):
73
- while True:
74
- if self._idx not in self._locks:
75
- break
76
- await self._locks[self._idx].wait()
77
- self._locks[self._idx] = self._lock = Event()
78
-
79
- async def __aexit__(self, exc_type, exc_value, exc_tb):
80
- self._lock.set()
81
- del self._locks[self._idx]
@@ -3,9 +3,10 @@ from __future__ import annotations
3
3
  from abc import ABC, abstractmethod
4
4
  from pathlib import Path
5
5
 
6
+ from anyioutils import ResourceLock
6
7
  from fastapi import APIRouter, Depends, Request, Response
7
8
 
8
- from jupyverse_api import ResourceLock, Router
9
+ from jupyverse_api import Router
9
10
 
10
11
  from ..app import App
11
12
  from ..auth import Auth, User
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "jupyverse_api"
7
- version = "0.10.3"
7
+ version = "0.11.0"
8
8
  description = "The public API for Jupyverse"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -31,6 +31,7 @@ dependencies = [
31
31
  "fastapi >=0.95.0,<1",
32
32
  "fps >=0.5.1,<0.6.0",
33
33
  "anyio >=3.6.2,<5",
34
+ "anyioutils >=0.7.4",
34
35
  ]
35
36
 
36
37
  [project.license]
@@ -4,14 +4,14 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_auth"
7
- version = "0.9.0"
7
+ version = "0.9.1"
8
8
  description = "An FPS plugin for the authentication API"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
12
  "aiosqlite",
13
13
  "fastapi-users[sqlalchemy,oauth] >=14.0.1,<15.0.0",
14
- "jupyverse-api >=0.10.0,<0.11.0",
14
+ "jupyverse-api >=0.11.0,<0.12.0",
15
15
  ]
16
16
 
17
17
  [[project.authors]]
@@ -4,13 +4,13 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_auth_fief"
7
- version = "0.9.0"
7
+ version = "0.9.1"
8
8
  description = "An FPS plugin for the authentication API, using Fief"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.8"
11
11
  dependencies = [
12
12
  "fief-client[fastapi]",
13
- "jupyverse-api >=0.10.0,<0.11.0",
13
+ "jupyverse-api >=0.11.0,<0.12.0",
14
14
  ]
15
15
 
16
16
  [[project.authors]]
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_auth_jupyterhub"
7
- version = "0.9.1"
7
+ version = "0.9.2"
8
8
  description = "An FPS plugin for the authentication API, using JupyterHbu"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
@@ -12,7 +12,7 @@ dependencies = [
12
12
  "aiosqlite",
13
13
  "httpx >=0.24.1,<1",
14
14
  "jupyterhub >=4.0.1,<5",
15
- "jupyverse-api >=0.10.0,<0.11.0",
15
+ "jupyverse-api >=0.11.0,<0.12.0",
16
16
  "anyio",
17
17
  ]
18
18
 
@@ -4,13 +4,13 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_contents"
7
- version = "0.10.0"
7
+ version = "0.10.1"
8
8
  description = "An FPS plugin for the contents API"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
12
  "anyio >=3.6.2,<5",
13
- "jupyverse-api >=0.10.0,<0.11.0",
13
+ "jupyverse-api >=0.11.0,<0.12.0",
14
14
  ]
15
15
  [[project.authors]]
16
16
  name = "Jupyter Development Team"
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_file_id"
7
- version = "0.2.1"
7
+ version = "0.2.2"
8
8
  description = "An FPS plugin for the file ID API"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
@@ -12,7 +12,7 @@ dependencies = [
12
12
  "watchfiles >=1.0.4,<2",
13
13
  "sqlite-anyio >=0.2.0,<0.3.0",
14
14
  "anyio>=3.6.2,<5",
15
- "jupyverse-api >=0.10.0,<0.11.0",
15
+ "jupyverse-api >=0.11.0,<0.12.0",
16
16
  ]
17
17
  [[project.authors]]
18
18
  name = "Jupyter Development Team"
@@ -4,12 +4,12 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_frontend"
7
- version = "0.9.0"
7
+ version = "0.9.1"
8
8
  description = "An FPS plugin for the frontend related configuration"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
- "jupyverse-api >=0.10.0,<0.11.0",
12
+ "jupyverse-api >=0.11.0,<0.12.0",
13
13
  ]
14
14
 
15
15
  [[project.authors]]
@@ -4,13 +4,13 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_jupyterlab"
7
- version = "0.9.0"
7
+ version = "0.9.1"
8
8
  description = "An FPS plugin for the JupyterLab API"
9
9
  keywords = [ "jupyter", "server", "fastapi", "plugins" ]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
12
  "jupyterlab-js >=4.4.2,<5",
13
- "jupyverse-api >=0.10.0,<0.11.0",
13
+ "jupyverse-api >=0.11.0,<0.12.0",
14
14
  ]
15
15
  [[project.authors]]
16
16
  name = "Jupyter Development Team"
@@ -4,12 +4,12 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_kernel_subprocess"
7
- version = "0.1.1"
7
+ version = "0.1.2"
8
8
  description = "An FPS plugin for the kernel subprocess API"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
- "jupyverse-api >=0.10.1,<0.11.0",
12
+ "jupyverse-api >=0.11.0,<0.12.0",
13
13
  "anyio",
14
14
  "pyzmq",
15
15
  "zmq-anyio >=0.3.1,<0.4.0",
@@ -4,12 +4,12 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_kernel_web_worker"
7
- version = "0.1.3"
7
+ version = "0.1.4"
8
8
  description = "An FPS plugin for the kernel web worker API"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
- "jupyverse-api >=0.10.1,<0.11.0",
12
+ "jupyverse-api >=0.11.0,<0.12.0",
13
13
  "anyio",
14
14
  ]
15
15
  [[project.authors]]
@@ -4,14 +4,14 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_kernels"
7
- version = "0.9.1"
7
+ version = "0.9.2"
8
8
  description = "An FPS plugin for the kernels API"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
12
  "python-dateutil",
13
13
  "types-python-dateutil",
14
- "jupyverse-api >=0.10.0,<0.11.0",
14
+ "jupyverse-api >=0.11.0,<0.12.0",
15
15
  "pycrdt >=0.10.3,<0.13.0",
16
16
  "anyio",
17
17
  ]
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_lab"
7
- version = "0.9.0"
7
+ version = "0.9.1"
8
8
  description = "An FPS plugin for the JupyterLab/Notebook API"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
@@ -12,7 +12,7 @@ dependencies = [
12
12
  "importlib_metadata >=3.6; python_version<'3.10'",
13
13
  "babel",
14
14
  "json5",
15
- "jupyverse-api >=0.10.0,<0.11.0",
15
+ "jupyverse-api >=0.11.0,<0.12.0",
16
16
  ]
17
17
  [[project.authors]]
18
18
  name = "Jupyter Development Team"
@@ -4,12 +4,12 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_login"
7
- version = "0.9.0"
7
+ version = "0.9.1"
8
8
  description = "An FPS plugin for the login API"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
- "jupyverse-api >=0.10.0,<0.11.0",
12
+ "jupyverse-api >=0.11.0,<0.12.0",
13
13
  ]
14
14
  [[project.authors]]
15
15
  name = "Jupyter Development Team"
@@ -4,13 +4,13 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_nbconvert"
7
- version = "0.9.0"
7
+ version = "0.9.1"
8
8
  description = "An FPS plugin for the nbconvert API"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
12
  "nbconvert",
13
- "jupyverse-api >=0.10.0,<0.11.0",
13
+ "jupyverse-api >=0.11.0,<0.12.0",
14
14
  ]
15
15
  [[project.authors]]
16
16
  name = "Jupyter Development Team"
@@ -4,12 +4,12 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_noauth"
7
- version = "0.9.1"
7
+ version = "0.9.2"
8
8
  description = "An FPS plugin for an unprotected API"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
- "jupyverse-api >=0.10.0,<0.11.0",
12
+ "jupyverse-api >=0.11.0,<0.12.0",
13
13
  ]
14
14
 
15
15
  [[project.authors]]
@@ -4,13 +4,13 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_notebook"
7
- version = "0.9.0"
7
+ version = "0.9.1"
8
8
  description = "An FPS plugin for the Notebook API"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
12
  "notebook-frontend >=7.4.2,<8.0.0",
13
- "jupyverse-api >=0.10.0,<0.11.0",
13
+ "jupyverse-api >=0.11.0,<0.12.0",
14
14
  ]
15
15
  [[project.authors]]
16
16
  name = "Jupyter Development Team"
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_resource_usage"
7
- version = "0.9.0"
7
+ version = "0.9.1"
8
8
  description = "An FPS plugin for the resource usage API"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
@@ -12,7 +12,7 @@ dependencies = [
12
12
  "psutil >=5.9.4",
13
13
  "types-psutil",
14
14
  "anyio >=3.6.2,<5",
15
- "jupyverse-api >=0.10.0,<0.11.0",
15
+ "jupyverse-api >=0.11.0,<0.12.0",
16
16
  ]
17
17
  [[project.authors]]
18
18
  name = "Jupyter Development Team"
@@ -4,13 +4,13 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_terminals"
7
- version = "0.9.0"
7
+ version = "0.9.1"
8
8
  description = "An FPS plugin for the terminals API"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
12
  "pywinpty;platform_system=='Windows'",
13
- "jupyverse-api >=0.10.0,<0.11.0",
13
+ "jupyverse-api >=0.11.0,<0.12.0",
14
14
  "anyio >=4.8.0,<5.0.0",
15
15
  ]
16
16
  [[project.authors]]
@@ -4,13 +4,13 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_webdav"
7
- version = "0.9.0"
7
+ version = "0.9.1"
8
8
  description = "An FPS plugin for the WebDAV API"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
12
  "asgiwebdav>=1.3.2,<2; python_version >= '3.10'",
13
- "jupyverse-api >=0.10.0,<0.11.0",
13
+ "jupyverse-api >=0.11.0,<0.12.0",
14
14
  ]
15
15
  [[project.authors]]
16
16
  name = "Jupyter Development Team"
@@ -7,7 +7,7 @@ from uuid import uuid4
7
7
  import structlog
8
8
  from anyio import TASK_STATUS_IGNORED, create_task_group, sleep
9
9
  from anyio.abc import TaskStatus
10
- from anyioutils import Task, create_task
10
+ from anyioutils import ResourceLock, Task, create_task
11
11
  from fastapi import (
12
12
  HTTPException,
13
13
  Request,
@@ -19,7 +19,6 @@ from jupyter_ydoc import ydocs as YDOCS
19
19
  from jupyter_ydoc.ybasedoc import YBaseDoc
20
20
  from pycrdt import Doc, YMessageType, YSyncMessageType
21
21
 
22
- from jupyverse_api import ResourceLock
23
22
  from jupyverse_api.app import App
24
23
  from jupyverse_api.auth import Auth, User
25
24
  from jupyverse_api.contents import Contents
@@ -4,16 +4,17 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_yjs"
7
- version = "0.10.2"
7
+ version = "0.10.3"
8
8
  description = "An FPS plugin for the Yjs API"
9
9
  keywords = [ "jupyter", "server", "fastapi", "plugins" ]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
12
  "importlib_metadata >=3.6; python_version<'3.10'",
13
13
  "pycrdt >=0.9.0,<0.13.0",
14
- "jupyverse-api >=0.10.0,<0.11.0",
14
+ "jupyverse-api >=0.11.0,<0.12.0",
15
15
  "sqlite-anyio >=0.2.0,<0.3.0",
16
16
  "jupyter_ydoc>3.0.1,<4.0.0",
17
+ "anyioutils >=0.7.4",
17
18
  ]
18
19
  [[project.authors]]
19
20
  name = "Jupyter Development Team"
@@ -4,22 +4,22 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "jupyverse"
7
- version = "0.10.7"
7
+ version = "0.10.9"
8
8
  description = "A set of FPS plugins implementing a Jupyter server"
9
9
  keywords = ["jupyter", "server", "fastapi", "plugins"]
10
10
  requires-python = ">=3.9"
11
11
  dependencies = [
12
12
  "fps[click,fastapi,anycorn] >=0.5.1,<0.6.0",
13
- "fps-contents >=0.10.0,<0.11.0",
14
- "fps-file-id >=0.2.1,<0.3.0",
15
- "fps-kernel-subprocess >=0.1.1,<0.2.0",
16
- "fps-kernels >=0.9.1,<0.10.0",
17
- "fps-terminals >=0.9.0,<0.10.0",
18
- "fps-nbconvert >=0.9.0,<0.10.0",
19
- "fps-yjs >=0.10.2,<0.11.0",
20
- "fps-lab >=0.9.0,<0.10.0",
21
- "fps-frontend >=0.9.0,<0.10.0",
22
- "jupyverse-api >=0.10.3,<0.11.0",
13
+ "fps-contents >=0.10.1,<0.11.0",
14
+ "fps-file-id >=0.2.2,<0.3.0",
15
+ "fps-kernel-subprocess >=0.1.2,<0.2.0",
16
+ "fps-kernels >=0.9.2,<0.10.0",
17
+ "fps-terminals >=0.9.1,<0.10.0",
18
+ "fps-nbconvert >=0.9.1,<0.10.0",
19
+ "fps-yjs >=0.10.3,<0.11.0",
20
+ "fps-lab >=0.9.1,<0.10.0",
21
+ "fps-frontend >=0.9.1,<0.10.0",
22
+ "jupyverse-api >=0.11.0,<0.12.0",
23
23
  "rich-click >=1.6.1,<2",
24
24
  "eval-type-backport; python_version<'3.10'",
25
25
  ]
@@ -39,12 +39,12 @@ text = "BSD 3-Clause License"
39
39
  Homepage = "https://jupyter.org"
40
40
 
41
41
  [project.optional-dependencies]
42
- jupyterlab = ["fps-jupyterlab >=0.9.0,<0.10.0"]
43
- notebook = ["fps-notebook>=0.9.0,<0.10.0"]
44
- auth = ["fps-auth >=0.9.0,<0.10.0", "fps-login >=0.9.0,<0.10.0"]
45
- auth-fief = ["fps-auth-fief >=0.9.0,<0.10.0"]
46
- auth-jupyterhub = ["fps-auth-jupyterhub >=0.9.1,<0.10.0"]
47
- noauth = ["fps-noauth >=0.9.1,<0.10.0"]
42
+ jupyterlab = ["fps-jupyterlab >=0.9.1,<0.10.0"]
43
+ notebook = ["fps-notebook>=0.9.1,<0.10.0"]
44
+ auth = ["fps-auth >=0.9.1,<0.10.0", "fps-login >=0.9.1,<0.10.0"]
45
+ auth-fief = ["fps-auth-fief >=0.9.1,<0.10.0"]
46
+ auth-jupyterhub = ["fps-auth-jupyterhub >=0.9.2,<0.10.0"]
47
+ noauth = ["fps-noauth >=0.9.2,<0.10.0"]
48
48
  test = [
49
49
  "ruff >=0.1.2",
50
50
  "mypy",
@@ -1,57 +0,0 @@
1
- import pytest
2
- from anyio import create_task_group, sleep
3
-
4
- from jupyverse_api import ResourceLock
5
-
6
- pytestmark = pytest.mark.anyio
7
-
8
-
9
- async def do_op(operation, resource_lock, operations):
10
- op, path = operation
11
- async with resource_lock(path):
12
- operations.append(operation + ["start"])
13
- await sleep(0.5)
14
- operations.append(operation + ["done"])
15
-
16
-
17
- async def test_resource_lock():
18
- resource_lock = ResourceLock()
19
-
20
- # test concurrent accesses to the same resource
21
- idx = "idx"
22
- operations = []
23
- async with create_task_group() as tg:
24
- tg.start_soon(do_op, [0, idx], resource_lock, operations)
25
- await sleep(0.05)
26
- tg.start_soon(do_op, [1, idx], resource_lock, operations)
27
-
28
- assert operations == [
29
- [0, idx, "start"],
30
- [0, idx, "done"],
31
- [1, idx, "start"],
32
- [1, idx, "done"],
33
- ]
34
-
35
- # test concurrent accesses to different files
36
- idx0 = "idx0"
37
- idx1 = "idx1"
38
- operations = []
39
- async with create_task_group() as tg:
40
- tg.start_soon(do_op, [0, idx0], resource_lock, operations)
41
- await sleep(0.05)
42
- tg.start_soon(do_op, [1, idx1], resource_lock, operations)
43
- await sleep(0.05)
44
- tg.start_soon(do_op, [2, idx0], resource_lock, operations)
45
- await sleep(0.05)
46
- tg.start_soon(do_op, [3, idx1], resource_lock, operations)
47
-
48
- assert operations == [
49
- [0, idx0, "start"],
50
- [1, idx1, "start"],
51
- [0, idx0, "done"],
52
- [2, idx0, "start"],
53
- [1, idx1, "done"],
54
- [3, idx1, "start"],
55
- [2, idx0, "done"],
56
- [3, idx1, "done"],
57
- ]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes