jupyverse 0.10.13__tar.gz → 0.10.14__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 (279) hide show
  1. {jupyverse-0.10.13 → jupyverse-0.10.14}/CHANGELOG.md +4 -0
  2. {jupyverse-0.10.13 → jupyverse-0.10.14}/PKG-INFO +2 -2
  3. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/routes.py +37 -8
  4. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/pyproject.toml +1 -1
  5. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/tests/test_yjs.py +11 -1
  6. {jupyverse-0.10.13 → jupyverse-0.10.14}/pyproject.toml +2 -2
  7. {jupyverse-0.10.13 → jupyverse-0.10.14}/.devcontainer/devcontainer.json +0 -0
  8. {jupyverse-0.10.13 → jupyverse-0.10.14}/.devcontainer/requirements.txt +0 -0
  9. {jupyverse-0.10.13 → jupyverse-0.10.14}/.github/workflows/publish-release.yml +0 -0
  10. {jupyverse-0.10.13 → jupyverse-0.10.14}/.github/workflows/test.yml +0 -0
  11. {jupyverse-0.10.13 → jupyverse-0.10.14}/.gitignore +0 -0
  12. {jupyverse-0.10.13 → jupyverse-0.10.14}/.pre-commit-config.yaml +0 -0
  13. {jupyverse-0.10.13 → jupyverse-0.10.14}/COPYING.md +0 -0
  14. {jupyverse-0.10.13 → jupyverse-0.10.14}/README.md +0 -0
  15. {jupyverse-0.10.13 → jupyverse-0.10.14}/binder/environment.yml +0 -0
  16. {jupyverse-0.10.13 → jupyverse-0.10.14}/binder/jupyter_notebook_config.py +0 -0
  17. {jupyverse-0.10.13 → jupyverse-0.10.14}/binder/postBuild +0 -0
  18. {jupyverse-0.10.13 → jupyverse-0.10.14}/binder/start +0 -0
  19. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/index.md +0 -0
  20. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/install.md +0 -0
  21. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/jupyter.svg +0 -0
  22. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/plugins/auth.md +0 -0
  23. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/plugins/contents.md +0 -0
  24. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/plugins/frontend.md +0 -0
  25. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/plugins/jupyterlab.md +0 -0
  26. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/plugins/kernels.md +0 -0
  27. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/plugins/lab.md +0 -0
  28. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/plugins/login.md +0 -0
  29. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/plugins/nbconvert.md +0 -0
  30. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/plugins/notebook.md +0 -0
  31. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/plugins/resource_usage.md +0 -0
  32. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/plugins/terminals.md +0 -0
  33. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/plugins/yjs.md +0 -0
  34. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/tutorials/jupyterhub_jupyverse_deployment.md +0 -0
  35. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/tutorials/standalone_jupyverse_deployment.md +0 -0
  36. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/usage/microservices.md +0 -0
  37. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/usage/multi_user.md +0 -0
  38. {jupyverse-0.10.13 → jupyverse-0.10.14}/docs/usage/single_user.md +0 -0
  39. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse/__init__.py +0 -0
  40. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse/py.typed +0 -0
  41. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/COPYING.md +0 -0
  42. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/README.md +0 -0
  43. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/__init__.py +0 -0
  44. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/app/__init__.py +0 -0
  45. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/asgi_websocket_transport.py +0 -0
  46. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/auth/__init__.py +0 -0
  47. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/auth/models.py +0 -0
  48. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/cli.py +0 -0
  49. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/contents/__init__.py +0 -0
  50. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/contents/models.py +0 -0
  51. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/exceptions.py +0 -0
  52. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/file_id/__init__.py +0 -0
  53. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/file_watcher/__init__.py +0 -0
  54. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/frontend/__init__.py +0 -0
  55. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/jupyterlab/__init__.py +0 -0
  56. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/kernel/__init__.py +0 -0
  57. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/kernels/__init__.py +0 -0
  58. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/kernels/models.py +0 -0
  59. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/lab/__init__.py +0 -0
  60. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/login/__init__.py +0 -0
  61. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/main/__init__.py +0 -0
  62. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/nbconvert/__init__.py +0 -0
  63. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/notebook/__init__.py +0 -0
  64. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/py.typed +0 -0
  65. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/resource_usage/__init__.py +0 -0
  66. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/terminals/__init__.py +0 -0
  67. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/terminals/models.py +0 -0
  68. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/yjs/__init__.py +0 -0
  69. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/jupyverse_api/yjs/models.py +0 -0
  70. {jupyverse-0.10.13 → jupyverse-0.10.14}/jupyverse_api/pyproject.toml +0 -0
  71. {jupyverse-0.10.13 → jupyverse-0.10.14}/mkdocs.yml +0 -0
  72. {jupyverse-0.10.13 → jupyverse-0.10.14}/notebooks/admin_users.ipynb +0 -0
  73. {jupyverse-0.10.13 → jupyverse-0.10.14}/notebooks/admin_users.py +0 -0
  74. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth/COPYING.md +0 -0
  75. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth/README.md +0 -0
  76. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth/fps_auth/__init__.py +0 -0
  77. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth/fps_auth/backends.py +0 -0
  78. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth/fps_auth/config.py +0 -0
  79. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth/fps_auth/db.py +0 -0
  80. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth/fps_auth/main.py +0 -0
  81. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth/fps_auth/models.py +0 -0
  82. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth/fps_auth/py.typed +0 -0
  83. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth/fps_auth/routes.py +0 -0
  84. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth/pyproject.toml +0 -0
  85. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_fief/COPYING.md +0 -0
  86. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_fief/README.md +0 -0
  87. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_fief/fps_auth_fief/__init__.py +0 -0
  88. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_fief/fps_auth_fief/backend.py +0 -0
  89. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_fief/fps_auth_fief/config.py +0 -0
  90. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_fief/fps_auth_fief/main.py +0 -0
  91. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_fief/fps_auth_fief/py.typed +0 -0
  92. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_fief/fps_auth_fief/routes.py +0 -0
  93. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_fief/pyproject.toml +0 -0
  94. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_jupyterhub/COPYING.md +0 -0
  95. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_jupyterhub/README.md +0 -0
  96. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_jupyterhub/fps_auth_jupyterhub/__init__.py +0 -0
  97. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_jupyterhub/fps_auth_jupyterhub/config.py +0 -0
  98. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_jupyterhub/fps_auth_jupyterhub/db.py +0 -0
  99. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_jupyterhub/fps_auth_jupyterhub/launch.py +0 -0
  100. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_jupyterhub/fps_auth_jupyterhub/main.py +0 -0
  101. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_jupyterhub/fps_auth_jupyterhub/models.py +0 -0
  102. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_jupyterhub/fps_auth_jupyterhub/py.typed +0 -0
  103. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_jupyterhub/fps_auth_jupyterhub/routes.py +0 -0
  104. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/auth_jupyterhub/pyproject.toml +0 -0
  105. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/contents/COPYING.md +0 -0
  106. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/contents/README.md +0 -0
  107. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/contents/fps_contents/__init__.py +0 -0
  108. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/contents/fps_contents/main.py +0 -0
  109. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/contents/fps_contents/py.typed +0 -0
  110. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/contents/fps_contents/routes.py +0 -0
  111. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/contents/pyproject.toml +0 -0
  112. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_id/COPYING.md +0 -0
  113. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_id/README.md +0 -0
  114. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_id/fps_file_id/__init__.py +0 -0
  115. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_id/fps_file_id/file_id.py +0 -0
  116. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_id/fps_file_id/main.py +0 -0
  117. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_id/fps_file_id/py.typed +0 -0
  118. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_id/pyproject.toml +0 -0
  119. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_watcher/COPYING.md +0 -0
  120. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_watcher/README.md +0 -0
  121. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_watcher/fps_file_watcher/__init__.py +0 -0
  122. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_watcher/fps_file_watcher/file_watcher.py +0 -0
  123. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_watcher/fps_file_watcher/main.py +0 -0
  124. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_watcher/fps_file_watcher/py.typed +0 -0
  125. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_watcher/pyproject.toml +0 -0
  126. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_watcher_poll/COPYING.md +0 -0
  127. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_watcher_poll/README.md +0 -0
  128. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_watcher_poll/fps_file_watcher_poll/__init__.py +0 -0
  129. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_watcher_poll/fps_file_watcher_poll/file_watcher.py +0 -0
  130. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_watcher_poll/fps_file_watcher_poll/main.py +0 -0
  131. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_watcher_poll/fps_file_watcher_poll/py.typed +0 -0
  132. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/file_watcher_poll/pyproject.toml +0 -0
  133. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/frontend/COPYING.md +0 -0
  134. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/frontend/README.md +0 -0
  135. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/frontend/fps_frontend/__init__.py +0 -0
  136. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/frontend/fps_frontend/main.py +0 -0
  137. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/frontend/fps_frontend/py.typed +0 -0
  138. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/frontend/pyproject.toml +0 -0
  139. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/jupyterlab/COPYING.md +0 -0
  140. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/jupyterlab/README.md +0 -0
  141. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/jupyterlab/fps_jupyterlab/__init__.py +0 -0
  142. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/jupyterlab/fps_jupyterlab/index.py +0 -0
  143. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/jupyterlab/fps_jupyterlab/main.py +0 -0
  144. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/jupyterlab/fps_jupyterlab/py.typed +0 -0
  145. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/jupyterlab/fps_jupyterlab/routes.py +0 -0
  146. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/jupyterlab/pyproject.toml +0 -0
  147. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernel_subprocess/COPYING.md +0 -0
  148. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernel_subprocess/README.md +0 -0
  149. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernel_subprocess/fps_kernel_subprocess/__init__.py +0 -0
  150. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernel_subprocess/fps_kernel_subprocess/connect.py +0 -0
  151. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernel_subprocess/fps_kernel_subprocess/kernel_subprocess.py +0 -0
  152. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernel_subprocess/fps_kernel_subprocess/main.py +0 -0
  153. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernel_subprocess/fps_kernel_subprocess/py.typed +0 -0
  154. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernel_subprocess/pyproject.toml +0 -0
  155. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernel_web_worker/COPYING.md +0 -0
  156. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernel_web_worker/README.md +0 -0
  157. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernel_web_worker/fps_kernel_web_worker/__init__.py +0 -0
  158. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernel_web_worker/fps_kernel_web_worker/kernel_web_worker.py +0 -0
  159. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernel_web_worker/fps_kernel_web_worker/main.py +0 -0
  160. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernel_web_worker/fps_kernel_web_worker/py.typed +0 -0
  161. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernel_web_worker/pyproject.toml +0 -0
  162. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/COPYING.md +0 -0
  163. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/README.md +0 -0
  164. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/fps_kernels/__init__.py +0 -0
  165. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/fps_kernels/kernel_driver/__init__.py +0 -0
  166. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/fps_kernels/kernel_driver/driver.py +0 -0
  167. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/fps_kernels/kernel_driver/kernelspec.py +0 -0
  168. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/fps_kernels/kernel_driver/message.py +0 -0
  169. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/fps_kernels/kernel_driver/paths.py +0 -0
  170. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/fps_kernels/kernel_server/__init__.py +0 -0
  171. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/fps_kernels/kernel_server/message.py +0 -0
  172. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/fps_kernels/kernel_server/server.py +0 -0
  173. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/fps_kernels/main.py +0 -0
  174. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/fps_kernels/py.typed +0 -0
  175. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/fps_kernels/routes.py +0 -0
  176. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/pyproject.toml +0 -0
  177. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/kernels/tests/test_kernel_launcher.py +0 -0
  178. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/lab/COPYING.md +0 -0
  179. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/lab/README.md +0 -0
  180. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/lab/fps_lab/__init__.py +0 -0
  181. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/lab/fps_lab/main.py +0 -0
  182. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/lab/fps_lab/py.typed +0 -0
  183. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/lab/fps_lab/routes.py +0 -0
  184. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/lab/fps_lab/static/favicon.ico +0 -0
  185. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/lab/pyproject.toml +0 -0
  186. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/COPYING.md +0 -0
  187. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/README.md +0 -0
  188. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/fps_login/__init__.py +0 -0
  189. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/fps_login/main.py +0 -0
  190. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/fps_login/py.typed +0 -0
  191. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/fps_login/routes.py +0 -0
  192. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/fps_login/static/favicons/favicon-busy-1.ico +0 -0
  193. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/fps_login/static/favicons/favicon-busy-2.ico +0 -0
  194. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/fps_login/static/favicons/favicon-busy-3.ico +0 -0
  195. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/fps_login/static/favicons/favicon-file.ico +0 -0
  196. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/fps_login/static/favicons/favicon-notebook.ico +0 -0
  197. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/fps_login/static/favicons/favicon-terminal.ico +0 -0
  198. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/fps_login/static/favicons/favicon.ico +0 -0
  199. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/fps_login/static/index.html +0 -0
  200. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/fps_login/static/logo/github.svg +0 -0
  201. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/fps_login/static/logo/logo.png +0 -0
  202. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/fps_login/static/style/index.css +0 -0
  203. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/login/pyproject.toml +0 -0
  204. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/nbconvert/COPYING.md +0 -0
  205. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/nbconvert/README.md +0 -0
  206. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/nbconvert/fps_nbconvert/__init__.py +0 -0
  207. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/nbconvert/fps_nbconvert/main.py +0 -0
  208. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/nbconvert/fps_nbconvert/py.typed +0 -0
  209. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/nbconvert/fps_nbconvert/routes.py +0 -0
  210. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/nbconvert/pyproject.toml +0 -0
  211. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/noauth/COPYING.md +0 -0
  212. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/noauth/README.md +0 -0
  213. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/noauth/fps_noauth/__init__.py +0 -0
  214. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/noauth/fps_noauth/backends.py +0 -0
  215. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/noauth/fps_noauth/main.py +0 -0
  216. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/noauth/fps_noauth/py.typed +0 -0
  217. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/noauth/pyproject.toml +0 -0
  218. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/notebook/COPYING.md +0 -0
  219. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/notebook/README.md +0 -0
  220. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/notebook/fps_notebook/__init__.py +0 -0
  221. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/notebook/fps_notebook/main.py +0 -0
  222. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/notebook/fps_notebook/py.typed +0 -0
  223. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/notebook/fps_notebook/routes.py +0 -0
  224. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/notebook/pyproject.toml +0 -0
  225. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/resource_usage/COPYING.md +0 -0
  226. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/resource_usage/README.md +0 -0
  227. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/resource_usage/fps_resource_usage/__init__.py +0 -0
  228. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/resource_usage/fps_resource_usage/main.py +0 -0
  229. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/resource_usage/fps_resource_usage/py.typed +0 -0
  230. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/resource_usage/fps_resource_usage/routes.py +0 -0
  231. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/resource_usage/pyproject.toml +0 -0
  232. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/terminals/COPYING.md +0 -0
  233. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/terminals/README.md +0 -0
  234. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/terminals/fps_terminals/__init__.py +0 -0
  235. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/terminals/fps_terminals/main.py +0 -0
  236. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/terminals/fps_terminals/py.typed +0 -0
  237. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/terminals/fps_terminals/routes.py +0 -0
  238. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/terminals/fps_terminals/server.py +0 -0
  239. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/terminals/fps_terminals/win_server.py +0 -0
  240. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/terminals/pyproject.toml +0 -0
  241. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/webdav/COPYING.md +0 -0
  242. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/webdav/README.md +0 -0
  243. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/webdav/fps_webdav/__init__.py +0 -0
  244. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/webdav/fps_webdav/config.py +0 -0
  245. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/webdav/fps_webdav/main.py +0 -0
  246. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/webdav/fps_webdav/py.typed +0 -0
  247. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/webdav/fps_webdav/routes.py +0 -0
  248. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/webdav/pyproject.toml +0 -0
  249. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/webdav/tests/conftest.py +0 -0
  250. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/webdav/tests/test_webdav.py +0 -0
  251. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/COPYING.md +0 -0
  252. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/README.md +0 -0
  253. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/__init__.py +0 -0
  254. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/main.py +0 -0
  255. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/py.typed +0 -0
  256. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/ywebsocket/__init__.py +0 -0
  257. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/ywebsocket/asgi_server.py +0 -0
  258. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/ywebsocket/awareness.py +0 -0
  259. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/ywebsocket/django_channels_consumer.py +0 -0
  260. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/ywebsocket/websocket.py +0 -0
  261. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/ywebsocket/websocket_provider.py +0 -0
  262. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/ywebsocket/websocket_server.py +0 -0
  263. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/ywebsocket/yroom.py +0 -0
  264. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/ywebsocket/ystore.py +0 -0
  265. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/ywebsocket/yutils.py +0 -0
  266. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/ywidgets/__init__.py +0 -0
  267. {jupyverse-0.10.13 → jupyverse-0.10.14}/plugins/yjs/fps_yjs/ywidgets/widgets.py +0 -0
  268. {jupyverse-0.10.13 → jupyverse-0.10.14}/pytest.ini +0 -0
  269. {jupyverse-0.10.13 → jupyverse-0.10.14}/tests/conftest.py +0 -0
  270. {jupyverse-0.10.13 → jupyverse-0.10.14}/tests/data/notebook0.ipynb +0 -0
  271. {jupyverse-0.10.13 → jupyverse-0.10.14}/tests/data/notebook1.ipynb +0 -0
  272. {jupyverse-0.10.13 → jupyverse-0.10.14}/tests/test_app.py +0 -0
  273. {jupyverse-0.10.13 → jupyverse-0.10.14}/tests/test_auth.py +0 -0
  274. {jupyverse-0.10.13 → jupyverse-0.10.14}/tests/test_contents.py +0 -0
  275. {jupyverse-0.10.13 → jupyverse-0.10.14}/tests/test_execute.py +0 -0
  276. {jupyverse-0.10.13 → jupyverse-0.10.14}/tests/test_kernels.py +0 -0
  277. {jupyverse-0.10.13 → jupyverse-0.10.14}/tests/test_server.py +0 -0
  278. {jupyverse-0.10.13 → jupyverse-0.10.14}/tests/test_settings.py +0 -0
  279. {jupyverse-0.10.13 → jupyverse-0.10.14}/tests/utils.py +0 -0
@@ -1,5 +1,9 @@
1
1
  # Version history
2
2
 
3
+ ## 0.10.14
4
+
5
+ - Fix document duplication with out-of-band changes.
6
+
3
7
  ## 0.10.13
4
8
 
5
9
  - Support separate kernel environment.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jupyverse
3
- Version: 0.10.13
3
+ Version: 0.10.14
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>
@@ -18,7 +18,7 @@ Requires-Dist: fps-kernels<0.11.0,>=0.10.3
18
18
  Requires-Dist: fps-lab<0.10.0,>=0.9.1
19
19
  Requires-Dist: fps-nbconvert<0.10.0,>=0.9.1
20
20
  Requires-Dist: fps-terminals<0.10.0,>=0.9.1
21
- Requires-Dist: fps-yjs<0.11.0,>=0.10.5
21
+ Requires-Dist: fps-yjs<0.12.0,>=0.11.0
22
22
  Requires-Dist: fps[anycorn,click,fastapi]<0.6.0,>=0.5.1
23
23
  Requires-Dist: jupyverse-api<0.12.0,>=0.11.3
24
24
  Requires-Dist: rich-click<2,>=1.6.1
@@ -256,12 +256,13 @@ class RoomManager:
256
256
  file_type,
257
257
  file_format,
258
258
  document,
259
+ room,
259
260
  )
260
261
  )
261
262
  # update the document when file changes
262
263
  if file_id not in self.watchers:
263
264
  self.watchers[file_id] = create_task(
264
- self.watch_file(file_format, file_id, document),
265
+ self.watch_file(file_format, file_id, document, room),
265
266
  self.task_group,
266
267
  )
267
268
 
@@ -317,7 +318,13 @@ class RoomManager:
317
318
  document.path = file_path
318
319
  return file_path
319
320
 
320
- async def watch_file(self, file_format: str, file_id: str, document: YBaseDoc) -> None:
321
+ async def watch_file(
322
+ self,
323
+ file_format: str,
324
+ file_id: str,
325
+ document: YBaseDoc,
326
+ room: YRoom,
327
+ ) -> None:
321
328
  file_path = await self.get_file_path(file_id, document)
322
329
  assert file_path is not None
323
330
  logger.info("Watching file", path=file_path)
@@ -332,11 +339,17 @@ class RoomManager:
332
339
  self.file_id.unwatch(file_path, watcher)
333
340
  file_path = new_file_path
334
341
  # break
335
- await self.maybe_load_file(file_format, file_path, file_id)
342
+ await self.maybe_load_file(file_format, file_path, file_id, room)
336
343
  if file_id in self.watchers:
337
344
  del self.watchers[file_id]
338
345
 
339
- async def maybe_load_file(self, file_format: str, file_path: str, file_id: str) -> None:
346
+ async def maybe_load_file(
347
+ self,
348
+ file_format: str,
349
+ file_path: str,
350
+ file_id: str,
351
+ room: YRoom,
352
+ ) -> None:
340
353
  model = await self.contents.read_content(file_path, False)
341
354
  # do nothing if the file was saved by us
342
355
  assert model.last_modified is not None
@@ -347,10 +360,19 @@ class RoomManager:
347
360
  documents = [v for k, v in self.documents.items() if k.split(":", 2)[2] == file_id]
348
361
  for document in documents:
349
362
  document.source = model.content
363
+ assert room.ystore is not None
364
+ await room.ystore.encode_state_as_update(room.ydoc)
350
365
  self.last_modified[file_id] = to_datetime(model.last_modified)
351
366
 
352
367
  def on_document_change(
353
- self, file_id: str, file_type: str, file_format: str, document: YBaseDoc, target, event
368
+ self,
369
+ file_id: str,
370
+ file_type: str,
371
+ file_format: str,
372
+ document: YBaseDoc,
373
+ room: YRoom,
374
+ target,
375
+ event,
354
376
  ) -> None:
355
377
  if target == "state" and "dirty" in event.keys:
356
378
  dirty = event.keys["dirty"]["newValue"]
@@ -361,17 +383,22 @@ class RoomManager:
361
383
  # e.g. a new cell added to a notebook
362
384
  document.unobserve()
363
385
  document.observe(
364
- partial(self.on_document_change, file_id, file_type, file_format, document)
386
+ partial(self.on_document_change, file_id, file_type, file_format, document, room)
365
387
  )
366
388
  if file_id in self.savers:
367
389
  self.savers[file_id].cancel(raise_exception=False)
368
390
  self.savers[file_id] = create_task(
369
- self.maybe_save_document(file_id, file_type, file_format, document),
391
+ self.maybe_save_document(file_id, file_type, file_format, document, room),
370
392
  self.task_group,
371
393
  )
372
394
 
373
395
  async def maybe_save_document(
374
- self, file_id: str, file_type: str, file_format: str, document: YBaseDoc
396
+ self,
397
+ file_id: str,
398
+ file_type: str,
399
+ file_format: str,
400
+ document: YBaseDoc,
401
+ room: YRoom,
375
402
  ) -> None:
376
403
  # save after configured delay to prevent too frequent saving
377
404
  await sleep(self.config.document_save_delay)
@@ -386,6 +413,8 @@ class RoomManager:
386
413
  if self.last_modified[file_id] < to_datetime(model.last_modified):
387
414
  # file changed on disk, let's revert
388
415
  document.source = model.content
416
+ assert room.ystore is not None
417
+ await room.ystore.encode_state_as_update(room.ydoc)
389
418
  self.last_modified[file_id] = to_datetime(model.last_modified)
390
419
  return
391
420
  if model.content != document.source:
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fps_yjs"
7
- version = "0.10.5"
7
+ version = "0.11.0"
8
8
  description = "An FPS plugin for the Yjs API"
9
9
  keywords = [ "jupyter", "server", "fastapi", "plugins" ]
10
10
  requires-python = ">=3.9"
@@ -1,3 +1,5 @@
1
+ import sys
2
+
1
3
  import pytest
2
4
  from anyio import create_task_group
3
5
  from fps import get_root_module
@@ -10,7 +12,15 @@ from jupyverse_api.yjs.models import CreateDocumentSession
10
12
 
11
13
 
12
14
  @pytest.mark.anyio
13
- async def test_concurrent_disconnect(tmp_path):
15
+ async def test_concurrent_disconnect(tmp_path, anyio_backend_name):
16
+ if (
17
+ anyio_backend_name == "trio" and
18
+ sys.version_info >= (3, 13) and
19
+ sys.version_info < (3, 14) and
20
+ sys.platform == "darwin"
21
+ ):
22
+ pytest.skip("Timeout")
23
+
14
24
  config = {
15
25
  "jupyverse": {
16
26
  "type": "jupyverse",
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "jupyverse"
7
- version = "0.10.13"
7
+ version = "0.10.14"
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"
@@ -17,7 +17,7 @@ dependencies = [
17
17
  "fps-kernels >=0.10.3,<0.11.0",
18
18
  "fps-terminals >=0.9.1,<0.10.0",
19
19
  "fps-nbconvert >=0.9.1,<0.10.0",
20
- "fps-yjs >=0.10.5,<0.11.0",
20
+ "fps-yjs >=0.11.0,<0.12.0",
21
21
  "fps-lab >=0.9.1,<0.10.0",
22
22
  "fps-frontend >=0.9.1,<0.10.0",
23
23
  "jupyverse-api >=0.11.3,<0.12.0",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes