jupyverse 0.5.3__tar.gz → 0.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. {jupyverse-0.5.3 → jupyverse-0.6.0}/.pre-commit-config.yaml +1 -1
  2. {jupyverse-0.5.3 → jupyverse-0.6.0}/CHANGELOG.md +30 -2
  3. {jupyverse-0.5.3 → jupyverse-0.6.0}/PKG-INFO +1 -1
  4. jupyverse-0.6.0/jupyverse/__init__.py +1 -0
  5. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/__init__.py +1 -1
  6. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/terminals/__init__.py +1 -1
  7. jupyverse-0.6.0/plugins/auth/fps_auth/__init__.py +1 -0
  8. jupyverse-0.6.0/plugins/auth_fief/fps_auth_fief/__init__.py +1 -0
  9. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/__init__.py +1 -1
  10. jupyverse-0.6.0/plugins/contents/fps_contents/__init__.py +1 -0
  11. jupyverse-0.6.0/plugins/frontend/fps_frontend/__init__.py +1 -0
  12. jupyverse-0.6.0/plugins/jupyterlab/fps_jupyterlab/__init__.py +1 -0
  13. jupyverse-0.6.0/plugins/kernels/fps_kernels/__init__.py +1 -0
  14. jupyverse-0.6.0/plugins/lab/fps_lab/__init__.py +1 -0
  15. jupyverse-0.6.0/plugins/login/fps_login/__init__.py +1 -0
  16. jupyverse-0.6.0/plugins/nbconvert/fps_nbconvert/__init__.py +1 -0
  17. jupyverse-0.6.0/plugins/noauth/fps_noauth/__init__.py +1 -0
  18. jupyverse-0.6.0/plugins/notebook/fps_notebook/__init__.py +1 -0
  19. jupyverse-0.6.0/plugins/resource_usage/fps_resource_usage/__init__.py +1 -0
  20. jupyverse-0.6.0/plugins/terminals/fps_terminals/__init__.py +1 -0
  21. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/fps_terminals/routes.py +8 -9
  22. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/fps_terminals/server.py +35 -31
  23. jupyverse-0.6.0/plugins/webdav/fps_webdav/__init__.py +1 -0
  24. jupyverse-0.6.0/plugins/yjs/fps_yjs/__init__.py +1 -0
  25. jupyverse-0.5.3/jupyverse/__init__.py +0 -1
  26. jupyverse-0.5.3/plugins/auth/fps_auth/__init__.py +0 -1
  27. jupyverse-0.5.3/plugins/auth_fief/fps_auth_fief/__init__.py +0 -1
  28. jupyverse-0.5.3/plugins/contents/fps_contents/__init__.py +0 -1
  29. jupyverse-0.5.3/plugins/frontend/fps_frontend/__init__.py +0 -1
  30. jupyverse-0.5.3/plugins/jupyterlab/fps_jupyterlab/__init__.py +0 -1
  31. jupyverse-0.5.3/plugins/kernels/fps_kernels/__init__.py +0 -1
  32. jupyverse-0.5.3/plugins/lab/fps_lab/__init__.py +0 -1
  33. jupyverse-0.5.3/plugins/login/fps_login/__init__.py +0 -1
  34. jupyverse-0.5.3/plugins/nbconvert/fps_nbconvert/__init__.py +0 -1
  35. jupyverse-0.5.3/plugins/noauth/fps_noauth/__init__.py +0 -1
  36. jupyverse-0.5.3/plugins/notebook/fps_notebook/__init__.py +0 -1
  37. jupyverse-0.5.3/plugins/resource_usage/fps_resource_usage/__init__.py +0 -1
  38. jupyverse-0.5.3/plugins/terminals/fps_terminals/__init__.py +0 -1
  39. jupyverse-0.5.3/plugins/webdav/fps_webdav/__init__.py +0 -1
  40. jupyverse-0.5.3/plugins/yjs/fps_yjs/__init__.py +0 -1
  41. {jupyverse-0.5.3 → jupyverse-0.6.0}/.devcontainer/devcontainer.json +0 -0
  42. {jupyverse-0.5.3 → jupyverse-0.6.0}/.devcontainer/requirements.txt +0 -0
  43. {jupyverse-0.5.3 → jupyverse-0.6.0}/.github/workflows/check-release.yml +0 -0
  44. {jupyverse-0.5.3 → jupyverse-0.6.0}/.github/workflows/test.yml +0 -0
  45. {jupyverse-0.5.3 → jupyverse-0.6.0}/.gitignore +0 -0
  46. {jupyverse-0.5.3 → jupyverse-0.6.0}/CONTRIBUTING.md +0 -0
  47. {jupyverse-0.5.3 → jupyverse-0.6.0}/COPYING.md +0 -0
  48. {jupyverse-0.5.3 → jupyverse-0.6.0}/MANIFEST.in +0 -0
  49. {jupyverse-0.5.3 → jupyverse-0.6.0}/README.md +0 -0
  50. {jupyverse-0.5.3 → jupyverse-0.6.0}/binder/environment.yml +0 -0
  51. {jupyverse-0.5.3 → jupyverse-0.6.0}/binder/jupyter_notebook_config.py +0 -0
  52. {jupyverse-0.5.3 → jupyverse-0.6.0}/binder/postBuild +0 -0
  53. {jupyverse-0.5.3 → jupyverse-0.6.0}/binder/start +0 -0
  54. {jupyverse-0.5.3 → jupyverse-0.6.0}/config.yaml +0 -0
  55. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/index.md +0 -0
  56. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/install.md +0 -0
  57. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/jupyter.svg +0 -0
  58. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/auth.md +0 -0
  59. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/contents.md +0 -0
  60. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/frontend.md +0 -0
  61. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/jupyterlab.md +0 -0
  62. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/kernels.md +0 -0
  63. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/lab.md +0 -0
  64. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/login.md +0 -0
  65. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/nbconvert.md +0 -0
  66. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/notebook.md +0 -0
  67. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/resource_usage.md +0 -0
  68. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/terminals.md +0 -0
  69. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/plugins/yjs.md +0 -0
  70. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/tutorials/jupyterhub_jupyverse_deployment.md +0 -0
  71. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/tutorials/standalone_jupyverse_deployment.md +0 -0
  72. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/usage/microservices.md +0 -0
  73. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/usage/multi_user.md +0 -0
  74. {jupyverse-0.5.3 → jupyverse-0.6.0}/docs/usage/single_user.md +0 -0
  75. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse/py.typed +0 -0
  76. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/COPYING.md +0 -0
  77. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/README.md +0 -0
  78. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/app/__init__.py +0 -0
  79. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/auth/__init__.py +0 -0
  80. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/auth/models.py +0 -0
  81. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/cli.py +0 -0
  82. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/contents/__init__.py +0 -0
  83. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/contents/models.py +0 -0
  84. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/exceptions.py +0 -0
  85. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/frontend/__init__.py +0 -0
  86. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/jupyterlab/__init__.py +0 -0
  87. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/kernels/__init__.py +0 -0
  88. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/kernels/models.py +0 -0
  89. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/lab/__init__.py +0 -0
  90. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/login/__init__.py +0 -0
  91. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/main/__init__.py +0 -0
  92. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/nbconvert/__init__.py +0 -0
  93. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/notebook/__init__.py +0 -0
  94. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/py.typed +0 -0
  95. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/resource_usage/__init__.py +0 -0
  96. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/terminals/models.py +0 -0
  97. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/yjs/__init__.py +0 -0
  98. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/yjs/models.py +0 -0
  99. {jupyverse-0.5.3 → jupyverse-0.6.0}/jupyverse_api/pyproject.toml +0 -0
  100. {jupyverse-0.5.3 → jupyverse-0.6.0}/mkdocs.yml +0 -0
  101. {jupyverse-0.5.3 → jupyverse-0.6.0}/notebooks/admin_users.ipynb +0 -0
  102. {jupyverse-0.5.3 → jupyverse-0.6.0}/notebooks/admin_users.py +0 -0
  103. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/COPYING.md +0 -0
  104. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/MANIFEST.in +0 -0
  105. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/README.md +0 -0
  106. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/fps_auth/backends.py +0 -0
  107. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/fps_auth/config.py +0 -0
  108. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/fps_auth/db.py +0 -0
  109. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/fps_auth/main.py +0 -0
  110. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/fps_auth/models.py +0 -0
  111. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/fps_auth/py.typed +0 -0
  112. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/fps_auth/routes.py +0 -0
  113. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth/pyproject.toml +0 -0
  114. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/COPYING.md +0 -0
  115. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/MANIFEST.in +0 -0
  116. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/README.md +0 -0
  117. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/fps_auth_fief/backend.py +0 -0
  118. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/fps_auth_fief/config.py +0 -0
  119. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/fps_auth_fief/main.py +0 -0
  120. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/fps_auth_fief/routes.py +0 -0
  121. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_fief/pyproject.toml +0 -0
  122. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/COPYING.md +0 -0
  123. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/README.md +0 -0
  124. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/config.py +0 -0
  125. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/db.py +0 -0
  126. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/launch.py +0 -0
  127. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/main.py +0 -0
  128. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/models.py +0 -0
  129. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/routes.py +0 -0
  130. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/auth_jupyterhub/pyproject.toml +0 -0
  131. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/COPYING.md +0 -0
  132. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/MANIFEST.in +0 -0
  133. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/README.md +0 -0
  134. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/fps_contents/fileid.py +0 -0
  135. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/fps_contents/main.py +0 -0
  136. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/fps_contents/py.typed +0 -0
  137. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/fps_contents/routes.py +0 -0
  138. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/contents/pyproject.toml +0 -0
  139. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/frontend/COPYING.md +0 -0
  140. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/frontend/MANIFEST.in +0 -0
  141. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/frontend/README.md +0 -0
  142. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/frontend/fps_frontend/main.py +0 -0
  143. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/frontend/fps_frontend/py.typed +0 -0
  144. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/frontend/pyproject.toml +0 -0
  145. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/COPYING.md +0 -0
  146. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/MANIFEST.in +0 -0
  147. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/README.md +0 -0
  148. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/fps_jupyterlab/index.py +0 -0
  149. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/fps_jupyterlab/main.py +0 -0
  150. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/fps_jupyterlab/py.typed +0 -0
  151. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/fps_jupyterlab/routes.py +0 -0
  152. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/jupyterlab/pyproject.toml +0 -0
  153. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/COPYING.md +0 -0
  154. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/MANIFEST.in +0 -0
  155. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/README.md +0 -0
  156. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/__init__.py +0 -0
  157. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/connect.py +0 -0
  158. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/driver.py +0 -0
  159. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/kernelspec.py +0 -0
  160. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/message.py +0 -0
  161. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/paths.py +0 -0
  162. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_server/__init__.py +0 -0
  163. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_server/message.py +0 -0
  164. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_server/server.py +0 -0
  165. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/main.py +0 -0
  166. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/routes.py +0 -0
  167. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/kernels/pyproject.toml +0 -0
  168. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/lab/COPYING.md +0 -0
  169. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/lab/MANIFEST.in +0 -0
  170. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/lab/README.md +0 -0
  171. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/lab/fps_lab/main.py +0 -0
  172. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/lab/fps_lab/routes.py +0 -0
  173. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/lab/fps_lab/static/favicon.ico +0 -0
  174. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/lab/pyproject.toml +0 -0
  175. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/COPYING.md +0 -0
  176. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/MANIFEST.in +0 -0
  177. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/README.md +0 -0
  178. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/main.py +0 -0
  179. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/routes.py +0 -0
  180. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-busy-1.ico +0 -0
  181. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-busy-2.ico +0 -0
  182. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-busy-3.ico +0 -0
  183. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-file.ico +0 -0
  184. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-notebook.ico +0 -0
  185. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-terminal.ico +0 -0
  186. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon.ico +0 -0
  187. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/index.html +0 -0
  188. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/logo/github.svg +0 -0
  189. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/logo/logo.png +0 -0
  190. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/fps_login/static/style/index.css +0 -0
  191. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/login/pyproject.toml +0 -0
  192. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/nbconvert/COPYING.md +0 -0
  193. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/nbconvert/MANIFEST.in +0 -0
  194. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/nbconvert/README.md +0 -0
  195. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/nbconvert/fps_nbconvert/main.py +0 -0
  196. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/nbconvert/fps_nbconvert/routes.py +0 -0
  197. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/nbconvert/pyproject.toml +0 -0
  198. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/noauth/COPYING.md +0 -0
  199. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/noauth/MANIFEST.in +0 -0
  200. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/noauth/README.md +0 -0
  201. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/noauth/fps_noauth/backends.py +0 -0
  202. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/noauth/fps_noauth/main.py +0 -0
  203. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/noauth/fps_noauth/py.typed +0 -0
  204. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/noauth/pyproject.toml +0 -0
  205. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/notebook/COPYING.md +0 -0
  206. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/notebook/MANIFEST.in +0 -0
  207. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/notebook/README.md +0 -0
  208. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/notebook/fps_notebook/main.py +0 -0
  209. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/notebook/fps_notebook/routes.py +0 -0
  210. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/notebook/pyproject.toml +0 -0
  211. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/resource_usage/COPYING.md +0 -0
  212. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/resource_usage/README.md +0 -0
  213. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/resource_usage/fps_resource_usage/main.py +0 -0
  214. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/resource_usage/fps_resource_usage/routes.py +0 -0
  215. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/resource_usage/pyproject.toml +0 -0
  216. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/COPYING.md +0 -0
  217. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/MANIFEST.in +0 -0
  218. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/README.md +0 -0
  219. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/fps_terminals/main.py +0 -0
  220. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/fps_terminals/win_server.py +0 -0
  221. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/terminals/pyproject.toml +0 -0
  222. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/COPYING.md +0 -0
  223. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/README.md +0 -0
  224. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/fps_webdav/config.py +0 -0
  225. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/fps_webdav/main.py +0 -0
  226. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/fps_webdav/py.typed +0 -0
  227. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/fps_webdav/routes.py +0 -0
  228. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/pyproject.toml +0 -0
  229. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/webdav/tests/test_webdav.py +0 -0
  230. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/COPYING.md +0 -0
  231. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/MANIFEST.in +0 -0
  232. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/README.md +0 -0
  233. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/main.py +0 -0
  234. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/py.typed +0 -0
  235. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/routes.py +0 -0
  236. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/__init__.py +0 -0
  237. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/utils.py +0 -0
  238. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/ybasedoc.py +0 -0
  239. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/yblob.py +0 -0
  240. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/yfile.py +0 -0
  241. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/ynotebook.py +0 -0
  242. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/yunicode.py +0 -0
  243. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/__init__.py +0 -0
  244. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/asgi_server.py +0 -0
  245. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/awareness.py +0 -0
  246. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/django_channels_consumer.py +0 -0
  247. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/websocket.py +0 -0
  248. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/websocket_provider.py +0 -0
  249. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/websocket_server.py +0 -0
  250. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/yroom.py +0 -0
  251. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/ystore.py +0 -0
  252. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/yutils.py +0 -0
  253. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywidgets/__init__.py +0 -0
  254. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywidgets/widgets.py +0 -0
  255. {jupyverse-0.5.3 → jupyverse-0.6.0}/plugins/yjs/pyproject.toml +0 -0
  256. {jupyverse-0.5.3 → jupyverse-0.6.0}/pyproject.toml +0 -0
  257. {jupyverse-0.5.3 → jupyverse-0.6.0}/pytest.ini +0 -0
  258. {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/conftest.py +0 -0
  259. {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/data/notebook0.ipynb +0 -0
  260. {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/data/notebook1.ipynb +0 -0
  261. {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/test_app.py +0 -0
  262. {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/test_auth.py +0 -0
  263. {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/test_contents.py +0 -0
  264. {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/test_execute.py +0 -0
  265. {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/test_kernels.py +0 -0
  266. {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/test_server.py +0 -0
  267. {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/test_settings.py +0 -0
  268. {jupyverse-0.5.3 → jupyverse-0.6.0}/tests/utils.py +0 -0
@@ -16,7 +16,7 @@ repos:
16
16
  - id: trailing-whitespace
17
17
 
18
18
  - repo: https://github.com/astral-sh/ruff-pre-commit
19
- rev: v0.4.3
19
+ rev: v0.4.4
20
20
  hooks:
21
21
  - id: ruff
22
22
  args: ["--fix"]
@@ -2,6 +2,36 @@
2
2
 
3
3
  <!-- <START NEW CHANGELOG ENTRY> -->
4
4
 
5
+ ## 0.6.0
6
+
7
+ ([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.5.4...74a20c5aba350ae2dac605ff303d4e75f72eff40))
8
+
9
+ ### Merged PRs
10
+
11
+ - Fix terminals [#414](https://github.com/jupyter-server/jupyverse/pull/414) ([@davidbrochart](https://github.com/davidbrochart))
12
+
13
+ ### Contributors to this release
14
+
15
+ ([GitHub contributors page for this release](https://github.com/jupyter-server/jupyverse/graphs/contributors?from=2024-05-14&to=2024-05-22&type=c))
16
+
17
+ [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2024-05-14..2024-05-22&type=Issues)
18
+
19
+ <!-- <END NEW CHANGELOG ENTRY> -->
20
+
21
+ ## 0.5.4
22
+
23
+ ([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.5.3...9f208a6e2e13396f6723a80e23bef688285611e5))
24
+
25
+ ### Merged PRs
26
+
27
+ - Improve terminals [#413](https://github.com/jupyter-server/jupyverse/pull/413) ([@davidbrochart](https://github.com/davidbrochart))
28
+
29
+ ### Contributors to this release
30
+
31
+ ([GitHub contributors page for this release](https://github.com/jupyter-server/jupyverse/graphs/contributors?from=2024-05-13&to=2024-05-14&type=c))
32
+
33
+ [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2024-05-13..2024-05-14&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Apre-commit-ci+updated%3A2024-05-13..2024-05-14&type=Issues)
34
+
5
35
  ## 0.5.3
6
36
 
7
37
  ([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.5.2...d5a5b178b93172a9bb8b90459d45ed20a1b734c5))
@@ -16,8 +46,6 @@
16
46
 
17
47
  [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2024-05-02..2024-05-13&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Apre-commit-ci+updated%3A2024-05-02..2024-05-13&type=Issues)
18
48
 
19
- <!-- <END NEW CHANGELOG ENTRY> -->
20
-
21
49
  ## 0.5.2
22
50
 
23
51
  ([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.5.1...0bd54d15a6ad7fbfe7c54f5a06ed4546de4ad90d))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: jupyverse
3
- Version: 0.5.3
3
+ Version: 0.6.0
4
4
  Summary: A set of FPS plugins implementing a Jupyter server
5
5
  Project-URL: Homepage, https://jupyter.org
6
6
  Author-email: Jupyter Development Team <jupyter@googlegroups.com>
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -4,7 +4,7 @@ from pydantic import BaseModel
4
4
 
5
5
  from .app import App
6
6
 
7
- __version__ = "0.5.3"
7
+ __version__ = "0.6.0"
8
8
 
9
9
 
10
10
  class Singleton(type):
@@ -83,5 +83,5 @@ class TerminalServer(ABC):
83
83
  ...
84
84
 
85
85
  @abstractmethod
86
- def quit(self, websocket):
86
+ async def exit(self):
87
87
  ...
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -1,3 +1,3 @@
1
- __version__ = "0.5.3"
1
+ __version__ = "0.6.0"
2
2
 
3
3
  from .launch import launch # noqa
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -26,7 +26,12 @@ class _Terminals(Terminals):
26
26
  self,
27
27
  user: User,
28
28
  ):
29
- name = str(len(TERMINALS) + 1)
29
+ name_int = 1
30
+ while True:
31
+ if str(name_int) not in TERMINALS:
32
+ break
33
+ name_int += 1
34
+ name = str(name_int)
30
35
  terminal = Terminal(
31
36
  name=name,
32
37
  last_activity=datetime.utcnow().isoformat() + "Z",
@@ -40,9 +45,7 @@ class _Terminals(Terminals):
40
45
  name: str,
41
46
  user: User,
42
47
  ):
43
- for websocket in TERMINALS[name]["server"].websockets:
44
- TERMINALS[name]["server"].quit(websocket)
45
- del TERMINALS[name]
48
+ await TERMINALS[name]["server"].exit(TERMINALS, name)
46
49
  return Response(status_code=HTTPStatus.NO_CONTENT.value)
47
50
 
48
51
  async def terminal_websocket(
@@ -54,8 +57,4 @@ class _Terminals(Terminals):
54
57
  return
55
58
  websocket, permissions = websocket_permissions
56
59
  await websocket.accept()
57
- await TERMINALS[name]["server"].serve(websocket, permissions)
58
- if name in TERMINALS:
59
- TERMINALS[name]["server"].quit(websocket)
60
- if not TERMINALS[name]["server"].websockets:
61
- del TERMINALS[name]
60
+ await TERMINALS[name]["server"].serve(websocket, permissions, TERMINALS, name)
@@ -6,8 +6,6 @@ import shlex
6
6
  import struct
7
7
  import termios
8
8
 
9
- from fastapi import WebSocketDisconnect
10
-
11
9
  from jupyverse_api.terminals import TerminalServer
12
10
 
13
11
 
@@ -25,27 +23,26 @@ class _TerminalServer(TerminalServer):
25
23
  def __init__(self):
26
24
  self.fd = open_terminal()
27
25
  self.p_out = os.fdopen(self.fd, "w+b", 0)
28
- self.websockets = []
29
-
30
- async def serve(self, websocket, permissions):
31
- self.websocket = websocket
32
- self.websockets.append(websocket)
33
- self.event = asyncio.Event()
34
26
  self.loop = asyncio.get_event_loop()
35
-
36
- task = asyncio.create_task(self.send_data())
27
+ self.data_from_terminal = asyncio.Queue()
28
+ self.websockets = []
37
29
 
38
30
  def on_output():
39
31
  try:
40
- self.data_or_disconnect = self.p_out.read(65536).decode()
41
- self.event.set()
32
+ data = self.p_out.read(65536).decode()
42
33
  except Exception:
43
- os.close(self.fd)
44
- self.loop.remove_reader(self.p_out)
45
- self.data_or_disconnect = None
46
- self.event.set()
34
+ self.data_from_terminal.put_nowait(None)
35
+ else:
36
+ self.data_from_terminal.put_nowait(data)
47
37
 
48
38
  self.loop.add_reader(self.p_out, on_output)
39
+
40
+ async def serve(self, websocket, permissions, terminals, name):
41
+ self.websocket = websocket
42
+ self.websockets.append(websocket)
43
+
44
+ task = asyncio.create_task(self.send_data(terminals, name)) # noqa: F841
45
+
49
46
  await websocket.send_json(["setup", {}])
50
47
  can_execute = permissions is None or "execute" in permissions.get("terminals", [])
51
48
  try:
@@ -57,22 +54,29 @@ class _TerminalServer(TerminalServer):
57
54
  elif msg[0] == "set_size":
58
55
  winsize = struct.pack("HH", msg[1], msg[2])
59
56
  fcntl.ioctl(self.fd, termios.TIOCSWINSZ, winsize)
60
- except WebSocketDisconnect:
61
- task.cancel()
57
+ except Exception:
58
+ if websocket in self.websockets:
59
+ self.websockets.remove(websocket)
62
60
 
63
- async def send_data(self):
61
+ async def send_data(self, terminals, name):
64
62
  while True:
65
- await self.event.wait()
66
- self.event.clear()
67
- if self.data_or_disconnect is None:
68
- await self.websocket.send_json(["disconnect", 1])
69
- else:
70
- for websocket in self.websockets:
71
- await websocket.send_json(["stdout", self.data_or_disconnect])
63
+ data = await self.data_from_terminal.get()
64
+ if data is None:
65
+ await self.exit(terminals, name)
66
+ return
72
67
 
73
- def quit(self, websocket):
74
- if websocket in self.websockets:
75
- self.websockets.remove(websocket)
76
- if not self.websockets:
77
- os.close(self.fd)
68
+ for websocket in self.websockets:
69
+ await websocket.send_json(["stdout", data])
70
+
71
+ async def exit(self, terminals, name):
72
+ for websocket in self.websockets:
73
+ try:
74
+ await websocket.send_json(["disconnect", 1])
75
+ except Exception:
76
+ pass
77
+ self.websockets.clear()
78
+ try:
78
79
  self.loop.remove_reader(self.p_out)
80
+ except Exception:
81
+ pass
82
+ del terminals[name]
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -0,0 +1 @@
1
+ __version__ = "0.6.0"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes