jupyverse 0.5.4__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.4 → jupyverse-0.6.0}/CHANGELOG.md +16 -2
  2. {jupyverse-0.5.4 → jupyverse-0.6.0}/PKG-INFO +1 -1
  3. jupyverse-0.6.0/jupyverse/__init__.py +1 -0
  4. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/__init__.py +1 -1
  5. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/terminals/__init__.py +1 -1
  6. jupyverse-0.6.0/plugins/auth/fps_auth/__init__.py +1 -0
  7. jupyverse-0.6.0/plugins/auth_fief/fps_auth_fief/__init__.py +1 -0
  8. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/__init__.py +1 -1
  9. jupyverse-0.6.0/plugins/contents/fps_contents/__init__.py +1 -0
  10. jupyverse-0.6.0/plugins/frontend/fps_frontend/__init__.py +1 -0
  11. jupyverse-0.6.0/plugins/jupyterlab/fps_jupyterlab/__init__.py +1 -0
  12. jupyverse-0.6.0/plugins/kernels/fps_kernels/__init__.py +1 -0
  13. jupyverse-0.6.0/plugins/lab/fps_lab/__init__.py +1 -0
  14. jupyverse-0.6.0/plugins/login/fps_login/__init__.py +1 -0
  15. jupyverse-0.6.0/plugins/nbconvert/fps_nbconvert/__init__.py +1 -0
  16. jupyverse-0.6.0/plugins/noauth/fps_noauth/__init__.py +1 -0
  17. jupyverse-0.6.0/plugins/notebook/fps_notebook/__init__.py +1 -0
  18. jupyverse-0.6.0/plugins/resource_usage/fps_resource_usage/__init__.py +1 -0
  19. jupyverse-0.6.0/plugins/terminals/fps_terminals/__init__.py +1 -0
  20. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/terminals/fps_terminals/routes.py +2 -8
  21. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/terminals/fps_terminals/server.py +24 -38
  22. jupyverse-0.6.0/plugins/webdav/fps_webdav/__init__.py +1 -0
  23. jupyverse-0.6.0/plugins/yjs/fps_yjs/__init__.py +1 -0
  24. jupyverse-0.5.4/jupyverse/__init__.py +0 -1
  25. jupyverse-0.5.4/plugins/auth/fps_auth/__init__.py +0 -1
  26. jupyverse-0.5.4/plugins/auth_fief/fps_auth_fief/__init__.py +0 -1
  27. jupyverse-0.5.4/plugins/contents/fps_contents/__init__.py +0 -1
  28. jupyverse-0.5.4/plugins/frontend/fps_frontend/__init__.py +0 -1
  29. jupyverse-0.5.4/plugins/jupyterlab/fps_jupyterlab/__init__.py +0 -1
  30. jupyverse-0.5.4/plugins/kernels/fps_kernels/__init__.py +0 -1
  31. jupyverse-0.5.4/plugins/lab/fps_lab/__init__.py +0 -1
  32. jupyverse-0.5.4/plugins/login/fps_login/__init__.py +0 -1
  33. jupyverse-0.5.4/plugins/nbconvert/fps_nbconvert/__init__.py +0 -1
  34. jupyverse-0.5.4/plugins/noauth/fps_noauth/__init__.py +0 -1
  35. jupyverse-0.5.4/plugins/notebook/fps_notebook/__init__.py +0 -1
  36. jupyverse-0.5.4/plugins/resource_usage/fps_resource_usage/__init__.py +0 -1
  37. jupyverse-0.5.4/plugins/terminals/fps_terminals/__init__.py +0 -1
  38. jupyverse-0.5.4/plugins/webdav/fps_webdav/__init__.py +0 -1
  39. jupyverse-0.5.4/plugins/yjs/fps_yjs/__init__.py +0 -1
  40. {jupyverse-0.5.4 → jupyverse-0.6.0}/.devcontainer/devcontainer.json +0 -0
  41. {jupyverse-0.5.4 → jupyverse-0.6.0}/.devcontainer/requirements.txt +0 -0
  42. {jupyverse-0.5.4 → jupyverse-0.6.0}/.github/workflows/check-release.yml +0 -0
  43. {jupyverse-0.5.4 → jupyverse-0.6.0}/.github/workflows/test.yml +0 -0
  44. {jupyverse-0.5.4 → jupyverse-0.6.0}/.gitignore +0 -0
  45. {jupyverse-0.5.4 → jupyverse-0.6.0}/.pre-commit-config.yaml +0 -0
  46. {jupyverse-0.5.4 → jupyverse-0.6.0}/CONTRIBUTING.md +0 -0
  47. {jupyverse-0.5.4 → jupyverse-0.6.0}/COPYING.md +0 -0
  48. {jupyverse-0.5.4 → jupyverse-0.6.0}/MANIFEST.in +0 -0
  49. {jupyverse-0.5.4 → jupyverse-0.6.0}/README.md +0 -0
  50. {jupyverse-0.5.4 → jupyverse-0.6.0}/binder/environment.yml +0 -0
  51. {jupyverse-0.5.4 → jupyverse-0.6.0}/binder/jupyter_notebook_config.py +0 -0
  52. {jupyverse-0.5.4 → jupyverse-0.6.0}/binder/postBuild +0 -0
  53. {jupyverse-0.5.4 → jupyverse-0.6.0}/binder/start +0 -0
  54. {jupyverse-0.5.4 → jupyverse-0.6.0}/config.yaml +0 -0
  55. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/index.md +0 -0
  56. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/install.md +0 -0
  57. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/jupyter.svg +0 -0
  58. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/plugins/auth.md +0 -0
  59. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/plugins/contents.md +0 -0
  60. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/plugins/frontend.md +0 -0
  61. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/plugins/jupyterlab.md +0 -0
  62. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/plugins/kernels.md +0 -0
  63. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/plugins/lab.md +0 -0
  64. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/plugins/login.md +0 -0
  65. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/plugins/nbconvert.md +0 -0
  66. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/plugins/notebook.md +0 -0
  67. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/plugins/resource_usage.md +0 -0
  68. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/plugins/terminals.md +0 -0
  69. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/plugins/yjs.md +0 -0
  70. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/tutorials/jupyterhub_jupyverse_deployment.md +0 -0
  71. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/tutorials/standalone_jupyverse_deployment.md +0 -0
  72. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/usage/microservices.md +0 -0
  73. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/usage/multi_user.md +0 -0
  74. {jupyverse-0.5.4 → jupyverse-0.6.0}/docs/usage/single_user.md +0 -0
  75. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse/py.typed +0 -0
  76. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/COPYING.md +0 -0
  77. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/README.md +0 -0
  78. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/app/__init__.py +0 -0
  79. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/auth/__init__.py +0 -0
  80. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/auth/models.py +0 -0
  81. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/cli.py +0 -0
  82. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/contents/__init__.py +0 -0
  83. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/contents/models.py +0 -0
  84. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/exceptions.py +0 -0
  85. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/frontend/__init__.py +0 -0
  86. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/jupyterlab/__init__.py +0 -0
  87. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/kernels/__init__.py +0 -0
  88. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/kernels/models.py +0 -0
  89. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/lab/__init__.py +0 -0
  90. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/login/__init__.py +0 -0
  91. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/main/__init__.py +0 -0
  92. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/nbconvert/__init__.py +0 -0
  93. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/notebook/__init__.py +0 -0
  94. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/py.typed +0 -0
  95. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/resource_usage/__init__.py +0 -0
  96. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/terminals/models.py +0 -0
  97. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/yjs/__init__.py +0 -0
  98. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/jupyverse_api/yjs/models.py +0 -0
  99. {jupyverse-0.5.4 → jupyverse-0.6.0}/jupyverse_api/pyproject.toml +0 -0
  100. {jupyverse-0.5.4 → jupyverse-0.6.0}/mkdocs.yml +0 -0
  101. {jupyverse-0.5.4 → jupyverse-0.6.0}/notebooks/admin_users.ipynb +0 -0
  102. {jupyverse-0.5.4 → jupyverse-0.6.0}/notebooks/admin_users.py +0 -0
  103. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth/COPYING.md +0 -0
  104. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth/MANIFEST.in +0 -0
  105. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth/README.md +0 -0
  106. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth/fps_auth/backends.py +0 -0
  107. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth/fps_auth/config.py +0 -0
  108. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth/fps_auth/db.py +0 -0
  109. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth/fps_auth/main.py +0 -0
  110. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth/fps_auth/models.py +0 -0
  111. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth/fps_auth/py.typed +0 -0
  112. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth/fps_auth/routes.py +0 -0
  113. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth/pyproject.toml +0 -0
  114. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_fief/COPYING.md +0 -0
  115. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_fief/MANIFEST.in +0 -0
  116. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_fief/README.md +0 -0
  117. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_fief/fps_auth_fief/backend.py +0 -0
  118. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_fief/fps_auth_fief/config.py +0 -0
  119. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_fief/fps_auth_fief/main.py +0 -0
  120. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_fief/fps_auth_fief/routes.py +0 -0
  121. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_fief/pyproject.toml +0 -0
  122. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_jupyterhub/COPYING.md +0 -0
  123. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_jupyterhub/README.md +0 -0
  124. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/config.py +0 -0
  125. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/db.py +0 -0
  126. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/launch.py +0 -0
  127. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/main.py +0 -0
  128. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/models.py +0 -0
  129. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_jupyterhub/fps_auth_jupyterhub/routes.py +0 -0
  130. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/auth_jupyterhub/pyproject.toml +0 -0
  131. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/contents/COPYING.md +0 -0
  132. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/contents/MANIFEST.in +0 -0
  133. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/contents/README.md +0 -0
  134. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/contents/fps_contents/fileid.py +0 -0
  135. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/contents/fps_contents/main.py +0 -0
  136. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/contents/fps_contents/py.typed +0 -0
  137. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/contents/fps_contents/routes.py +0 -0
  138. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/contents/pyproject.toml +0 -0
  139. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/frontend/COPYING.md +0 -0
  140. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/frontend/MANIFEST.in +0 -0
  141. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/frontend/README.md +0 -0
  142. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/frontend/fps_frontend/main.py +0 -0
  143. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/frontend/fps_frontend/py.typed +0 -0
  144. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/frontend/pyproject.toml +0 -0
  145. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/jupyterlab/COPYING.md +0 -0
  146. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/jupyterlab/MANIFEST.in +0 -0
  147. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/jupyterlab/README.md +0 -0
  148. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/jupyterlab/fps_jupyterlab/index.py +0 -0
  149. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/jupyterlab/fps_jupyterlab/main.py +0 -0
  150. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/jupyterlab/fps_jupyterlab/py.typed +0 -0
  151. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/jupyterlab/fps_jupyterlab/routes.py +0 -0
  152. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/jupyterlab/pyproject.toml +0 -0
  153. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/kernels/COPYING.md +0 -0
  154. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/kernels/MANIFEST.in +0 -0
  155. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/kernels/README.md +0 -0
  156. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/__init__.py +0 -0
  157. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/connect.py +0 -0
  158. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/driver.py +0 -0
  159. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/kernelspec.py +0 -0
  160. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/message.py +0 -0
  161. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_driver/paths.py +0 -0
  162. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_server/__init__.py +0 -0
  163. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_server/message.py +0 -0
  164. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/kernel_server/server.py +0 -0
  165. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/main.py +0 -0
  166. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/kernels/fps_kernels/routes.py +0 -0
  167. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/kernels/pyproject.toml +0 -0
  168. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/lab/COPYING.md +0 -0
  169. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/lab/MANIFEST.in +0 -0
  170. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/lab/README.md +0 -0
  171. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/lab/fps_lab/main.py +0 -0
  172. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/lab/fps_lab/routes.py +0 -0
  173. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/lab/fps_lab/static/favicon.ico +0 -0
  174. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/lab/pyproject.toml +0 -0
  175. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/COPYING.md +0 -0
  176. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/MANIFEST.in +0 -0
  177. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/README.md +0 -0
  178. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/fps_login/main.py +0 -0
  179. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/fps_login/routes.py +0 -0
  180. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-busy-1.ico +0 -0
  181. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-busy-2.ico +0 -0
  182. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-busy-3.ico +0 -0
  183. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-file.ico +0 -0
  184. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-notebook.ico +0 -0
  185. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon-terminal.ico +0 -0
  186. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/fps_login/static/favicons/favicon.ico +0 -0
  187. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/fps_login/static/index.html +0 -0
  188. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/fps_login/static/logo/github.svg +0 -0
  189. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/fps_login/static/logo/logo.png +0 -0
  190. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/fps_login/static/style/index.css +0 -0
  191. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/login/pyproject.toml +0 -0
  192. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/nbconvert/COPYING.md +0 -0
  193. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/nbconvert/MANIFEST.in +0 -0
  194. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/nbconvert/README.md +0 -0
  195. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/nbconvert/fps_nbconvert/main.py +0 -0
  196. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/nbconvert/fps_nbconvert/routes.py +0 -0
  197. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/nbconvert/pyproject.toml +0 -0
  198. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/noauth/COPYING.md +0 -0
  199. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/noauth/MANIFEST.in +0 -0
  200. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/noauth/README.md +0 -0
  201. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/noauth/fps_noauth/backends.py +0 -0
  202. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/noauth/fps_noauth/main.py +0 -0
  203. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/noauth/fps_noauth/py.typed +0 -0
  204. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/noauth/pyproject.toml +0 -0
  205. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/notebook/COPYING.md +0 -0
  206. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/notebook/MANIFEST.in +0 -0
  207. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/notebook/README.md +0 -0
  208. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/notebook/fps_notebook/main.py +0 -0
  209. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/notebook/fps_notebook/routes.py +0 -0
  210. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/notebook/pyproject.toml +0 -0
  211. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/resource_usage/COPYING.md +0 -0
  212. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/resource_usage/README.md +0 -0
  213. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/resource_usage/fps_resource_usage/main.py +0 -0
  214. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/resource_usage/fps_resource_usage/routes.py +0 -0
  215. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/resource_usage/pyproject.toml +0 -0
  216. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/terminals/COPYING.md +0 -0
  217. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/terminals/MANIFEST.in +0 -0
  218. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/terminals/README.md +0 -0
  219. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/terminals/fps_terminals/main.py +0 -0
  220. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/terminals/fps_terminals/win_server.py +0 -0
  221. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/terminals/pyproject.toml +0 -0
  222. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/webdav/COPYING.md +0 -0
  223. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/webdav/README.md +0 -0
  224. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/webdav/fps_webdav/config.py +0 -0
  225. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/webdav/fps_webdav/main.py +0 -0
  226. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/webdav/fps_webdav/py.typed +0 -0
  227. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/webdav/fps_webdav/routes.py +0 -0
  228. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/webdav/pyproject.toml +0 -0
  229. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/webdav/tests/test_webdav.py +0 -0
  230. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/COPYING.md +0 -0
  231. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/MANIFEST.in +0 -0
  232. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/README.md +0 -0
  233. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/main.py +0 -0
  234. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/py.typed +0 -0
  235. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/routes.py +0 -0
  236. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/__init__.py +0 -0
  237. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/utils.py +0 -0
  238. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/ybasedoc.py +0 -0
  239. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/yblob.py +0 -0
  240. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/yfile.py +0 -0
  241. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/ynotebook.py +0 -0
  242. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ydocs/yunicode.py +0 -0
  243. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/__init__.py +0 -0
  244. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/asgi_server.py +0 -0
  245. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/awareness.py +0 -0
  246. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/django_channels_consumer.py +0 -0
  247. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/websocket.py +0 -0
  248. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/websocket_provider.py +0 -0
  249. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/websocket_server.py +0 -0
  250. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/yroom.py +0 -0
  251. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/ystore.py +0 -0
  252. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywebsocket/yutils.py +0 -0
  253. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywidgets/__init__.py +0 -0
  254. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/fps_yjs/ywidgets/widgets.py +0 -0
  255. {jupyverse-0.5.4 → jupyverse-0.6.0}/plugins/yjs/pyproject.toml +0 -0
  256. {jupyverse-0.5.4 → jupyverse-0.6.0}/pyproject.toml +0 -0
  257. {jupyverse-0.5.4 → jupyverse-0.6.0}/pytest.ini +0 -0
  258. {jupyverse-0.5.4 → jupyverse-0.6.0}/tests/conftest.py +0 -0
  259. {jupyverse-0.5.4 → jupyverse-0.6.0}/tests/data/notebook0.ipynb +0 -0
  260. {jupyverse-0.5.4 → jupyverse-0.6.0}/tests/data/notebook1.ipynb +0 -0
  261. {jupyverse-0.5.4 → jupyverse-0.6.0}/tests/test_app.py +0 -0
  262. {jupyverse-0.5.4 → jupyverse-0.6.0}/tests/test_auth.py +0 -0
  263. {jupyverse-0.5.4 → jupyverse-0.6.0}/tests/test_contents.py +0 -0
  264. {jupyverse-0.5.4 → jupyverse-0.6.0}/tests/test_execute.py +0 -0
  265. {jupyverse-0.5.4 → jupyverse-0.6.0}/tests/test_kernels.py +0 -0
  266. {jupyverse-0.5.4 → jupyverse-0.6.0}/tests/test_server.py +0 -0
  267. {jupyverse-0.5.4 → jupyverse-0.6.0}/tests/test_settings.py +0 -0
  268. {jupyverse-0.5.4 → jupyverse-0.6.0}/tests/utils.py +0 -0
@@ -2,6 +2,22 @@
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
+
5
21
  ## 0.5.4
6
22
 
7
23
  ([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.5.3...9f208a6e2e13396f6723a80e23bef688285611e5))
@@ -16,8 +32,6 @@
16
32
 
17
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)
18
34
 
19
- <!-- <END NEW CHANGELOG ENTRY> -->
20
-
21
35
  ## 0.5.3
22
36
 
23
37
  ([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.5.2...d5a5b178b93172a9bb8b90459d45ed20a1b734c5))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: jupyverse
3
- Version: 0.5.4
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.4"
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.4"
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"
@@ -45,9 +45,7 @@ class _Terminals(Terminals):
45
45
  name: str,
46
46
  user: User,
47
47
  ):
48
- for websocket in TERMINALS[name]["server"].websockets:
49
- TERMINALS[name]["server"].quit(websocket)
50
- del TERMINALS[name]
48
+ await TERMINALS[name]["server"].exit(TERMINALS, name)
51
49
  return Response(status_code=HTTPStatus.NO_CONTENT.value)
52
50
 
53
51
  async def terminal_websocket(
@@ -59,8 +57,4 @@ class _Terminals(Terminals):
59
57
  return
60
58
  websocket, permissions = websocket_permissions
61
59
  await websocket.accept()
62
- await TERMINALS[name]["server"].serve(websocket, permissions)
63
- if name in TERMINALS:
64
- TERMINALS[name]["server"].quit(websocket)
65
- if not TERMINALS[name]["server"].websockets:
66
- 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,35 +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.data_from_terminal = asyncio.Queue()
34
26
  self.loop = asyncio.get_event_loop()
35
-
36
- task = asyncio.create_task(self.send_data()) # noqa: F841
27
+ self.data_from_terminal = asyncio.Queue()
28
+ self.websockets = []
37
29
 
38
30
  def on_output():
39
31
  try:
40
32
  data = self.p_out.read(65536).decode()
41
- except OSError:
42
- try:
43
- self.loop.remove_reader(self.p_out)
44
- except Exception:
45
- pass
46
- try:
47
- os.close(self.fd)
48
- except OSError:
49
- pass
33
+ except Exception:
50
34
  self.data_from_terminal.put_nowait(None)
51
- self.websockets.clear()
52
- self.quit()
53
35
  else:
54
36
  self.data_from_terminal.put_nowait(data)
55
37
 
56
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
+
57
46
  await websocket.send_json(["setup", {}])
58
47
  can_execute = permissions is None or "execute" in permissions.get("terminals", [])
59
48
  try:
@@ -65,32 +54,29 @@ class _TerminalServer(TerminalServer):
65
54
  elif msg[0] == "set_size":
66
55
  winsize = struct.pack("HH", msg[1], msg[2])
67
56
  fcntl.ioctl(self.fd, termios.TIOCSWINSZ, winsize)
68
- except WebSocketDisconnect:
69
- self.quit(websocket)
57
+ except Exception:
58
+ if websocket in self.websockets:
59
+ self.websockets.remove(websocket)
70
60
 
71
- async def send_data(self):
61
+ async def send_data(self, terminals, name):
72
62
  while True:
73
63
  data = await self.data_from_terminal.get()
74
64
  if data is None:
75
- try:
76
- await self.websocket.send_json(["disconnect", 1])
77
- except Exception:
78
- pass
65
+ await self.exit(terminals, name)
79
66
  return
80
67
 
81
68
  for websocket in self.websockets:
82
69
  await websocket.send_json(["stdout", data])
83
70
 
84
- def quit(self, websocket=None):
85
- if websocket in self.websockets:
86
- self.websockets.remove(websocket)
87
- if not self.websockets:
71
+ async def exit(self, terminals, name):
72
+ for websocket in self.websockets:
88
73
  try:
89
- self.loop.remove_reader(self.p_out)
74
+ await websocket.send_json(["disconnect", 1])
90
75
  except Exception:
91
76
  pass
92
- try:
93
- os.close(self.fd)
94
- except OSError:
95
- pass
96
- self.data_from_terminal.put_nowait(None)
77
+ self.websockets.clear()
78
+ try:
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.4"
@@ -1 +0,0 @@
1
- __version__ = "0.5.4"
@@ -1 +0,0 @@
1
- __version__ = "0.5.4"
@@ -1 +0,0 @@
1
- __version__ = "0.5.4"
@@ -1 +0,0 @@
1
- __version__ = "0.5.4"
@@ -1 +0,0 @@
1
- __version__ = "0.5.4"
@@ -1 +0,0 @@
1
- __version__ = "0.5.4"
@@ -1 +0,0 @@
1
- __version__ = "0.5.4"
@@ -1 +0,0 @@
1
- __version__ = "0.5.4"
@@ -1 +0,0 @@
1
- __version__ = "0.5.4"
@@ -1 +0,0 @@
1
- __version__ = "0.5.4"
@@ -1 +0,0 @@
1
- __version__ = "0.5.4"
@@ -1 +0,0 @@
1
- __version__ = "0.5.4"
@@ -1 +0,0 @@
1
- __version__ = "0.5.4"
@@ -1 +0,0 @@
1
- __version__ = "0.5.4"
@@ -1 +0,0 @@
1
- __version__ = "0.5.4"
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