jupyverse 0.4.2__tar.gz → 0.5.1__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 (272) hide show
  1. {jupyverse-0.4.2 → jupyverse-0.5.1}/.github/workflows/check-release.yml +1 -1
  2. {jupyverse-0.4.2 → jupyverse-0.5.1}/.github/workflows/test.yml +5 -5
  3. {jupyverse-0.4.2 → jupyverse-0.5.1}/.pre-commit-config.yaml +2 -2
  4. {jupyverse-0.4.2 → jupyverse-0.5.1}/CHANGELOG.md +36 -2
  5. {jupyverse-0.4.2 → jupyverse-0.5.1}/CONTRIBUTING.md +1 -1
  6. {jupyverse-0.4.2 → jupyverse-0.5.1}/PKG-INFO +9 -9
  7. {jupyverse-0.4.2 → jupyverse-0.5.1}/README.md +3 -3
  8. jupyverse-0.5.1/binder/jupyter_notebook_config.py +44 -0
  9. {jupyverse-0.4.2 → jupyverse-0.5.1}/binder/postBuild +1 -1
  10. {jupyverse-0.4.2 → jupyverse-0.5.1}/config.yaml +2 -2
  11. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/install.md +9 -9
  12. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/plugins/lab.md +1 -1
  13. jupyverse-0.5.1/docs/plugins/notebook.md +1 -0
  14. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/usage/single_user.md +1 -1
  15. jupyverse-0.5.1/jupyverse/__init__.py +1 -0
  16. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/__init__.py +1 -1
  17. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/cli.py +7 -2
  18. {jupyverse-0.4.2/jupyverse_api/jupyverse_api/retrolab → jupyverse-0.5.1/jupyverse_api/jupyverse_api/notebook}/__init__.py +6 -6
  19. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/pyproject.toml +1 -0
  20. {jupyverse-0.4.2 → jupyverse-0.5.1}/mkdocs.yml +1 -1
  21. jupyverse-0.5.1/plugins/auth/fps_auth/__init__.py +1 -0
  22. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth/fps_auth/routes.py +9 -0
  23. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth/pyproject.toml +1 -1
  24. jupyverse-0.5.1/plugins/auth_fief/fps_auth_fief/__init__.py +1 -0
  25. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_jupyterhub/fps_auth_jupyterhub/__init__.py +1 -1
  26. jupyverse-0.5.1/plugins/contents/fps_contents/__init__.py +1 -0
  27. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/contents/fps_contents/fileid.py +10 -8
  28. jupyverse-0.5.1/plugins/frontend/fps_frontend/__init__.py +1 -0
  29. jupyverse-0.5.1/plugins/jupyterlab/fps_jupyterlab/__init__.py +1 -0
  30. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/jupyterlab/fps_jupyterlab/routes.py +2 -2
  31. jupyverse-0.5.1/plugins/kernels/fps_kernels/__init__.py +1 -0
  32. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/kernels/fps_kernels/kernel_driver/driver.py +5 -2
  33. jupyverse-0.5.1/plugins/lab/README.md +3 -0
  34. jupyverse-0.5.1/plugins/lab/fps_lab/__init__.py +1 -0
  35. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/lab/fps_lab/routes.py +9 -4
  36. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/lab/pyproject.toml +2 -1
  37. jupyverse-0.5.1/plugins/login/fps_login/__init__.py +1 -0
  38. jupyverse-0.5.1/plugins/nbconvert/fps_nbconvert/__init__.py +1 -0
  39. jupyverse-0.5.1/plugins/noauth/fps_noauth/__init__.py +1 -0
  40. jupyverse-0.5.1/plugins/notebook/README.md +3 -0
  41. jupyverse-0.5.1/plugins/notebook/fps_notebook/__init__.py +1 -0
  42. {jupyverse-0.4.2/plugins/retrolab/fps_retrolab → jupyverse-0.5.1/plugins/notebook/fps_notebook}/main.py +5 -5
  43. {jupyverse-0.4.2/plugins/retrolab/fps_retrolab → jupyverse-0.5.1/plugins/notebook/fps_notebook}/routes.py +47 -46
  44. {jupyverse-0.4.2/plugins/retrolab → jupyverse-0.5.1/plugins/notebook}/pyproject.toml +6 -6
  45. jupyverse-0.5.1/plugins/resource_usage/fps_resource_usage/__init__.py +1 -0
  46. jupyverse-0.5.1/plugins/terminals/fps_terminals/__init__.py +1 -0
  47. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/terminals/fps_terminals/server.py +2 -1
  48. jupyverse-0.5.1/plugins/webdav/fps_webdav/__init__.py +1 -0
  49. jupyverse-0.5.1/plugins/yjs/fps_yjs/__init__.py +1 -0
  50. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ydocs/ybasedoc.py +2 -2
  51. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ywidgets/widgets.py +7 -2
  52. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/pyproject.toml +2 -1
  53. {jupyverse-0.4.2 → jupyverse-0.5.1}/pyproject.toml +12 -12
  54. {jupyverse-0.4.2 → jupyverse-0.5.1}/tests/test_server.py +1 -1
  55. jupyverse-0.4.2/binder/jupyter_notebook_config.py +0 -44
  56. jupyverse-0.4.2/docs/plugins/retrolab.md +0 -1
  57. jupyverse-0.4.2/jupyverse/__init__.py +0 -1
  58. jupyverse-0.4.2/plugins/auth/fps_auth/__init__.py +0 -1
  59. jupyverse-0.4.2/plugins/auth_fief/fps_auth_fief/__init__.py +0 -1
  60. jupyverse-0.4.2/plugins/contents/fps_contents/__init__.py +0 -1
  61. jupyverse-0.4.2/plugins/frontend/fps_frontend/__init__.py +0 -1
  62. jupyverse-0.4.2/plugins/jupyterlab/fps_jupyterlab/__init__.py +0 -1
  63. jupyverse-0.4.2/plugins/kernels/fps_kernels/__init__.py +0 -1
  64. jupyverse-0.4.2/plugins/lab/README.md +0 -3
  65. jupyverse-0.4.2/plugins/lab/fps_lab/__init__.py +0 -1
  66. jupyverse-0.4.2/plugins/login/fps_login/__init__.py +0 -1
  67. jupyverse-0.4.2/plugins/nbconvert/fps_nbconvert/__init__.py +0 -1
  68. jupyverse-0.4.2/plugins/noauth/fps_noauth/__init__.py +0 -1
  69. jupyverse-0.4.2/plugins/resource_usage/fps_resource_usage/__init__.py +0 -1
  70. jupyverse-0.4.2/plugins/retrolab/README.md +0 -3
  71. jupyverse-0.4.2/plugins/retrolab/fps_retrolab/__init__.py +0 -1
  72. jupyverse-0.4.2/plugins/terminals/fps_terminals/__init__.py +0 -1
  73. jupyverse-0.4.2/plugins/webdav/fps_webdav/__init__.py +0 -1
  74. jupyverse-0.4.2/plugins/yjs/fps_yjs/__init__.py +0 -1
  75. {jupyverse-0.4.2 → jupyverse-0.5.1}/.devcontainer/devcontainer.json +0 -0
  76. {jupyverse-0.4.2 → jupyverse-0.5.1}/.devcontainer/requirements.txt +0 -0
  77. {jupyverse-0.4.2 → jupyverse-0.5.1}/.gitignore +0 -0
  78. {jupyverse-0.4.2 → jupyverse-0.5.1}/COPYING.md +0 -0
  79. {jupyverse-0.4.2 → jupyverse-0.5.1}/MANIFEST.in +0 -0
  80. {jupyverse-0.4.2 → jupyverse-0.5.1}/binder/environment.yml +0 -0
  81. {jupyverse-0.4.2 → jupyverse-0.5.1}/binder/start +0 -0
  82. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/index.md +0 -0
  83. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/jupyter.svg +0 -0
  84. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/plugins/auth.md +0 -0
  85. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/plugins/contents.md +0 -0
  86. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/plugins/frontend.md +0 -0
  87. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/plugins/jupyterlab.md +0 -0
  88. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/plugins/kernels.md +0 -0
  89. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/plugins/login.md +0 -0
  90. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/plugins/nbconvert.md +0 -0
  91. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/plugins/resource_usage.md +0 -0
  92. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/plugins/terminals.md +0 -0
  93. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/plugins/yjs.md +0 -0
  94. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/tutorials/jupyterhub_jupyverse_deployment.md +0 -0
  95. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/tutorials/standalone_jupyverse_deployment.md +0 -0
  96. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/usage/microservices.md +0 -0
  97. {jupyverse-0.4.2 → jupyverse-0.5.1}/docs/usage/multi_user.md +0 -0
  98. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse/py.typed +0 -0
  99. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/COPYING.md +0 -0
  100. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/README.md +0 -0
  101. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/app/__init__.py +0 -0
  102. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/auth/__init__.py +0 -0
  103. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/auth/models.py +0 -0
  104. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/contents/__init__.py +0 -0
  105. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/contents/models.py +0 -0
  106. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/exceptions.py +0 -0
  107. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/frontend/__init__.py +0 -0
  108. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/jupyterlab/__init__.py +0 -0
  109. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/kernels/__init__.py +0 -0
  110. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/kernels/models.py +0 -0
  111. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/lab/__init__.py +0 -0
  112. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/login/__init__.py +0 -0
  113. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/main/__init__.py +0 -0
  114. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/nbconvert/__init__.py +0 -0
  115. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/py.typed +0 -0
  116. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/resource_usage/__init__.py +0 -0
  117. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/terminals/__init__.py +0 -0
  118. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/terminals/models.py +0 -0
  119. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/yjs/__init__.py +0 -0
  120. {jupyverse-0.4.2 → jupyverse-0.5.1}/jupyverse_api/jupyverse_api/yjs/models.py +0 -0
  121. {jupyverse-0.4.2 → jupyverse-0.5.1}/notebooks/admin_users.ipynb +0 -0
  122. {jupyverse-0.4.2 → jupyverse-0.5.1}/notebooks/admin_users.py +0 -0
  123. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth/COPYING.md +0 -0
  124. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth/MANIFEST.in +0 -0
  125. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth/README.md +0 -0
  126. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth/fps_auth/backends.py +0 -0
  127. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth/fps_auth/config.py +0 -0
  128. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth/fps_auth/db.py +0 -0
  129. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth/fps_auth/main.py +0 -0
  130. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth/fps_auth/models.py +0 -0
  131. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth/fps_auth/py.typed +0 -0
  132. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_fief/COPYING.md +0 -0
  133. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_fief/MANIFEST.in +0 -0
  134. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_fief/README.md +0 -0
  135. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_fief/fps_auth_fief/backend.py +0 -0
  136. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_fief/fps_auth_fief/config.py +0 -0
  137. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_fief/fps_auth_fief/main.py +0 -0
  138. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_fief/fps_auth_fief/routes.py +0 -0
  139. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_fief/pyproject.toml +0 -0
  140. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_jupyterhub/COPYING.md +0 -0
  141. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_jupyterhub/README.md +0 -0
  142. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_jupyterhub/fps_auth_jupyterhub/config.py +0 -0
  143. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_jupyterhub/fps_auth_jupyterhub/db.py +0 -0
  144. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_jupyterhub/fps_auth_jupyterhub/launch.py +0 -0
  145. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_jupyterhub/fps_auth_jupyterhub/main.py +0 -0
  146. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_jupyterhub/fps_auth_jupyterhub/models.py +0 -0
  147. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_jupyterhub/fps_auth_jupyterhub/routes.py +0 -0
  148. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/auth_jupyterhub/pyproject.toml +0 -0
  149. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/contents/COPYING.md +0 -0
  150. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/contents/MANIFEST.in +0 -0
  151. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/contents/README.md +0 -0
  152. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/contents/fps_contents/main.py +0 -0
  153. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/contents/fps_contents/py.typed +0 -0
  154. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/contents/fps_contents/routes.py +0 -0
  155. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/contents/pyproject.toml +0 -0
  156. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/frontend/COPYING.md +0 -0
  157. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/frontend/MANIFEST.in +0 -0
  158. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/frontend/README.md +0 -0
  159. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/frontend/fps_frontend/main.py +0 -0
  160. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/frontend/fps_frontend/py.typed +0 -0
  161. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/frontend/pyproject.toml +0 -0
  162. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/jupyterlab/COPYING.md +0 -0
  163. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/jupyterlab/MANIFEST.in +0 -0
  164. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/jupyterlab/README.md +0 -0
  165. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/jupyterlab/fps_jupyterlab/index.py +0 -0
  166. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/jupyterlab/fps_jupyterlab/main.py +0 -0
  167. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/jupyterlab/fps_jupyterlab/py.typed +0 -0
  168. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/jupyterlab/pyproject.toml +0 -0
  169. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/kernels/COPYING.md +0 -0
  170. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/kernels/MANIFEST.in +0 -0
  171. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/kernels/README.md +0 -0
  172. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/kernels/fps_kernels/kernel_driver/__init__.py +0 -0
  173. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/kernels/fps_kernels/kernel_driver/connect.py +0 -0
  174. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/kernels/fps_kernels/kernel_driver/kernelspec.py +0 -0
  175. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/kernels/fps_kernels/kernel_driver/message.py +0 -0
  176. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/kernels/fps_kernels/kernel_driver/paths.py +0 -0
  177. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/kernels/fps_kernels/kernel_server/__init__.py +0 -0
  178. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/kernels/fps_kernels/kernel_server/message.py +0 -0
  179. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/kernels/fps_kernels/kernel_server/server.py +0 -0
  180. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/kernels/fps_kernels/main.py +0 -0
  181. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/kernels/fps_kernels/routes.py +0 -0
  182. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/kernels/pyproject.toml +0 -0
  183. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/lab/COPYING.md +0 -0
  184. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/lab/MANIFEST.in +0 -0
  185. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/lab/fps_lab/main.py +0 -0
  186. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/lab/fps_lab/static/favicon.ico +0 -0
  187. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/COPYING.md +0 -0
  188. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/MANIFEST.in +0 -0
  189. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/README.md +0 -0
  190. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/fps_login/main.py +0 -0
  191. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/fps_login/routes.py +0 -0
  192. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/fps_login/static/favicons/favicon-busy-1.ico +0 -0
  193. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/fps_login/static/favicons/favicon-busy-2.ico +0 -0
  194. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/fps_login/static/favicons/favicon-busy-3.ico +0 -0
  195. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/fps_login/static/favicons/favicon-file.ico +0 -0
  196. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/fps_login/static/favicons/favicon-notebook.ico +0 -0
  197. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/fps_login/static/favicons/favicon-terminal.ico +0 -0
  198. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/fps_login/static/favicons/favicon.ico +0 -0
  199. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/fps_login/static/index.html +0 -0
  200. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/fps_login/static/logo/github.svg +0 -0
  201. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/fps_login/static/logo/logo.png +0 -0
  202. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/fps_login/static/style/index.css +0 -0
  203. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/login/pyproject.toml +0 -0
  204. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/nbconvert/COPYING.md +0 -0
  205. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/nbconvert/MANIFEST.in +0 -0
  206. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/nbconvert/README.md +0 -0
  207. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/nbconvert/fps_nbconvert/main.py +0 -0
  208. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/nbconvert/fps_nbconvert/routes.py +0 -0
  209. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/nbconvert/pyproject.toml +0 -0
  210. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/noauth/COPYING.md +0 -0
  211. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/noauth/MANIFEST.in +0 -0
  212. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/noauth/README.md +0 -0
  213. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/noauth/fps_noauth/backends.py +0 -0
  214. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/noauth/fps_noauth/main.py +0 -0
  215. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/noauth/fps_noauth/py.typed +0 -0
  216. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/noauth/pyproject.toml +0 -0
  217. {jupyverse-0.4.2/plugins/retrolab → jupyverse-0.5.1/plugins/notebook}/COPYING.md +0 -0
  218. {jupyverse-0.4.2/plugins/retrolab → jupyverse-0.5.1/plugins/notebook}/MANIFEST.in +0 -0
  219. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/resource_usage/COPYING.md +0 -0
  220. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/resource_usage/README.md +0 -0
  221. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/resource_usage/fps_resource_usage/main.py +0 -0
  222. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/resource_usage/fps_resource_usage/routes.py +0 -0
  223. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/resource_usage/pyproject.toml +0 -0
  224. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/terminals/COPYING.md +0 -0
  225. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/terminals/MANIFEST.in +0 -0
  226. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/terminals/README.md +0 -0
  227. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/terminals/fps_terminals/main.py +0 -0
  228. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/terminals/fps_terminals/routes.py +0 -0
  229. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/terminals/fps_terminals/win_server.py +0 -0
  230. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/terminals/pyproject.toml +0 -0
  231. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/webdav/COPYING.md +0 -0
  232. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/webdav/README.md +0 -0
  233. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/webdav/fps_webdav/config.py +0 -0
  234. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/webdav/fps_webdav/main.py +0 -0
  235. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/webdav/fps_webdav/py.typed +0 -0
  236. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/webdav/fps_webdav/routes.py +0 -0
  237. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/webdav/pyproject.toml +0 -0
  238. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/webdav/tests/test_webdav.py +0 -0
  239. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/COPYING.md +0 -0
  240. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/MANIFEST.in +0 -0
  241. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/README.md +0 -0
  242. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/main.py +0 -0
  243. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/py.typed +0 -0
  244. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/routes.py +0 -0
  245. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ydocs/__init__.py +0 -0
  246. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ydocs/utils.py +0 -0
  247. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ydocs/yblob.py +0 -0
  248. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ydocs/yfile.py +0 -0
  249. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ydocs/ynotebook.py +0 -0
  250. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ydocs/yunicode.py +0 -0
  251. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ywebsocket/__init__.py +0 -0
  252. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ywebsocket/asgi_server.py +0 -0
  253. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ywebsocket/awareness.py +0 -0
  254. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ywebsocket/django_channels_consumer.py +0 -0
  255. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ywebsocket/websocket.py +0 -0
  256. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ywebsocket/websocket_provider.py +0 -0
  257. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ywebsocket/websocket_server.py +0 -0
  258. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ywebsocket/yroom.py +0 -0
  259. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ywebsocket/ystore.py +0 -0
  260. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ywebsocket/yutils.py +0 -0
  261. {jupyverse-0.4.2 → jupyverse-0.5.1}/plugins/yjs/fps_yjs/ywidgets/__init__.py +0 -0
  262. {jupyverse-0.4.2 → jupyverse-0.5.1}/pytest.ini +0 -0
  263. {jupyverse-0.4.2 → jupyverse-0.5.1}/tests/conftest.py +0 -0
  264. {jupyverse-0.4.2 → jupyverse-0.5.1}/tests/data/notebook0.ipynb +0 -0
  265. {jupyverse-0.4.2 → jupyverse-0.5.1}/tests/data/notebook1.ipynb +0 -0
  266. {jupyverse-0.4.2 → jupyverse-0.5.1}/tests/test_app.py +0 -0
  267. {jupyverse-0.4.2 → jupyverse-0.5.1}/tests/test_auth.py +0 -0
  268. {jupyverse-0.4.2 → jupyverse-0.5.1}/tests/test_contents.py +0 -0
  269. {jupyverse-0.4.2 → jupyverse-0.5.1}/tests/test_execute.py +0 -0
  270. {jupyverse-0.4.2 → jupyverse-0.5.1}/tests/test_kernels.py +0 -0
  271. {jupyverse-0.4.2 → jupyverse-0.5.1}/tests/test_settings.py +0 -0
  272. {jupyverse-0.4.2 → jupyverse-0.5.1}/tests/utils.py +0 -0
@@ -47,7 +47,7 @@ jobs:
47
47
  pip install -e jupyverse_api
48
48
  pip install -e plugins/frontend
49
49
  pip install -e plugins/jupyterlab
50
- pip install -e plugins/retrolab
50
+ pip install -e plugins/notebook
51
51
  pip install -e plugins/contents
52
52
  pip install -e plugins/kernels
53
53
  pip install -e plugins/terminals
@@ -21,7 +21,7 @@ jobs:
21
21
  uses: actions/checkout@v3
22
22
  - uses: actions/setup-python@v4
23
23
  with:
24
- python-version: '3.11'
24
+ python-version: '3.12'
25
25
  cache: 'pip'
26
26
  - name: Install hatch
27
27
  run: |
@@ -32,9 +32,9 @@ jobs:
32
32
  hatch run dev.jupyterlab-noauth:typecheck
33
33
  hatch run dev.jupyterlab-auth:typecheck
34
34
  hatch run dev.jupyterlab-auth_fief:typecheck
35
- hatch run dev.retrolab-noauth:typecheck
36
- hatch run dev.retrolab-auth:typecheck
37
- hatch run dev.retrolab-auth_fief:typecheck
35
+ hatch run dev.notebook-noauth:typecheck
36
+ hatch run dev.notebook-auth:typecheck
37
+ hatch run dev.notebook-auth_fief:typecheck
38
38
 
39
39
  test:
40
40
  name: Tests
@@ -43,7 +43,7 @@ jobs:
43
43
  fail-fast: false
44
44
  matrix:
45
45
  os: [ubuntu-latest, macos-latest, windows-latest]
46
- python-version: [ '3.8', '3.9', '3.10', '3.11' ]
46
+ python-version: [ '3.8', '3.9', '3.10', '3.11', '3.12' ]
47
47
 
48
48
  steps:
49
49
  - name: Checkout
@@ -1,6 +1,6 @@
1
1
  repos:
2
2
  - repo: https://github.com/pre-commit/pre-commit-hooks
3
- rev: v4.5.0
3
+ rev: v4.6.0
4
4
  hooks:
5
5
  - id: end-of-file-fixer
6
6
  - id: check-case-conflict
@@ -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.1.9
19
+ rev: v0.4.1
20
20
  hooks:
21
21
  - id: ruff
22
22
  args: ["--fix"]
@@ -2,6 +2,42 @@
2
2
 
3
3
  <!-- <START NEW CHANGELOG ENTRY> -->
4
4
 
5
+ ## 0.5.1
6
+
7
+ ([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.5.0...4ddd9ab118c9ed47340d44b6eb57b68894b1bcc5))
8
+
9
+ ### Merged PRs
10
+
11
+ - Check terminal websocket before removing it [#405](https://github.com/jupyter-server/jupyverse/pull/405) ([@davidbrochart](https://github.com/davidbrochart))
12
+ - Update documentation URL [#404](https://github.com/jupyter-server/jupyverse/pull/404) ([@davidbrochart](https://github.com/davidbrochart))
13
+ - Set watchfiles log level to WARNING [#403](https://github.com/jupyter-server/jupyverse/pull/403) ([@davidbrochart](https://github.com/davidbrochart))
14
+ - Update ypywidgets v0.7.0 for tests [#400](https://github.com/jupyter-server/jupyverse/pull/400) ([@davidbrochart](https://github.com/davidbrochart))
15
+ - Remove output trailing newline [#399](https://github.com/jupyter-server/jupyverse/pull/399) ([@davidbrochart](https://github.com/davidbrochart))
16
+ - Save anonymous user info in database [#397](https://github.com/jupyter-server/jupyverse/pull/397) ([@davidbrochart](https://github.com/davidbrochart))
17
+
18
+ ### Contributors to this release
19
+
20
+ ([GitHub contributors page for this release](https://github.com/jupyter-server/jupyverse/graphs/contributors?from=2024-04-12&to=2024-04-29&type=c))
21
+
22
+ [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2024-04-12..2024-04-29&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Apre-commit-ci+updated%3A2024-04-12..2024-04-29&type=Issues)
23
+
24
+ <!-- <END NEW CHANGELOG ENTRY> -->
25
+
26
+ ## 0.5.0
27
+
28
+ ([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.4.2...66aac71cf07cbc14c5196cc1c144b9965fec7d2c))
29
+
30
+ ### Merged PRs
31
+
32
+ - Replace RetroLab with Notebook [#396](https://github.com/jupyter-server/jupyverse/pull/396) ([@davidbrochart](https://github.com/davidbrochart))
33
+ - Update FastAPI-Users v13.0.0 [#395](https://github.com/jupyter-server/jupyverse/pull/395) ([@davidbrochart](https://github.com/davidbrochart))
34
+
35
+ ### Contributors to this release
36
+
37
+ ([GitHub contributors page for this release](https://github.com/jupyter-server/jupyverse/graphs/contributors?from=2024-01-02&to=2024-04-12&type=c))
38
+
39
+ [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2024-01-02..2024-04-12&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Apre-commit-ci+updated%3A2024-01-02..2024-04-12&type=Issues)
40
+
5
41
  ## 0.4.2
6
42
 
7
43
  ([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.4.1...2f084c7c744bb2d2865bdad223c680eca5c8a2cb))
@@ -16,8 +52,6 @@
16
52
 
17
53
  [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Adavidbrochart+updated%3A2023-12-18..2024-01-02&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyverse+involves%3Apre-commit-ci+updated%3A2023-12-18..2024-01-02&type=Issues)
18
54
 
19
- <!-- <END NEW CHANGELOG ENTRY> -->
20
-
21
55
  ## 0.4.1
22
56
 
23
57
  ([Full Changelog](https://github.com/jupyter-server/jupyverse/compare/v0.4.0...8321cf2a280ebe5e4bb4b09571a5b11855db649a))
@@ -6,7 +6,7 @@ cd plugins/auth ; rm -rf dist && python setup.py sdist bdist_wheel ; cp di
6
6
  cd plugins/contents ; rm -rf dist && python setup.py sdist bdist_wheel ; cp dist/* ../../dist/ ; cd ../..
7
7
  cd plugins/lab ; rm -rf dist && python setup.py sdist bdist_wheel ; cp dist/* ../../dist/ ; cd ../..
8
8
  cd plugins/jupyterlab ; rm -rf dist && python setup.py sdist bdist_wheel ; cp dist/* ../../dist/ ; cd ../..
9
- cd plugins/retrolab ; rm -rf dist && python setup.py sdist bdist_wheel ; cp dist/* ../../dist/ ; cd ../..
9
+ cd plugins/notebook ; rm -rf dist && python setup.py sdist bdist_wheel ; cp dist/* ../../dist/ ; cd ../..
10
10
  cd plugins/kernels ; rm -rf dist && python setup.py sdist bdist_wheel ; cp dist/* ../../dist/ ; cd ../..
11
11
  cd plugins/nbconvert ; rm -rf dist && python setup.py sdist bdist_wheel ; cp dist/* ../../dist/ ; cd ../..
12
12
  cd plugins/terminals ; rm -rf dist && python setup.py sdist bdist_wheel ; cp dist/* ../../dist/ ; cd ../..
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: jupyverse
3
- Version: 0.4.2
3
+ Version: 0.5.1
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>
@@ -30,8 +30,8 @@ Provides-Extra: jupyterlab
30
30
  Requires-Dist: fps-jupyterlab<1,>=0.1.2; extra == 'jupyterlab'
31
31
  Provides-Extra: noauth
32
32
  Requires-Dist: fps-noauth<1,>=0.1.2; extra == 'noauth'
33
- Provides-Extra: retrolab
34
- Requires-Dist: fps-retrolab<1,>=0.1.2; extra == 'retrolab'
33
+ Provides-Extra: notebook
34
+ Requires-Dist: fps-notebook<1,>=0.1.2; extra == 'notebook'
35
35
  Provides-Extra: test
36
36
  Requires-Dist: httpx; extra == 'test'
37
37
  Requires-Dist: httpx-ws>=0.4.1; extra == 'test'
@@ -46,8 +46,8 @@ Requires-Dist: requests; extra == 'test'
46
46
  Requires-Dist: ruff>=0.1.2; extra == 'test'
47
47
  Requires-Dist: types-setuptools; extra == 'test'
48
48
  Requires-Dist: websockets; extra == 'test'
49
- Requires-Dist: ypywidgets-textual<0.3.0,>=0.2.2; extra == 'test'
50
- Requires-Dist: ypywidgets<0.7.0,>=0.6.4; extra == 'test'
49
+ Requires-Dist: ypywidgets-textual<0.5.0,>=0.4.0; extra == 'test'
50
+ Requires-Dist: ypywidgets<0.8.0,>=0.7.0; extra == 'test'
51
51
  Description-Content-Type: text/markdown
52
52
 
53
53
  [![Build Status](https://github.com/jupyter-server/jupyverse/workflows/test/badge.svg)](https://github.com/jupyter-server/jupyverse/actions)
@@ -57,10 +57,10 @@ Description-Content-Type: text/markdown
57
57
  A set of [Asphalt](https://asphalt.readthedocs.io) components implementing a Jupyter server.
58
58
 
59
59
  Try it online:
60
- - JupyterLab frontend: [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter-server/jupyverse/HEAD?urlpath=jupyverse-jlab)
61
- - RetroLab frontend: [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter-server/jupyverse/HEAD?urlpath=jupyverse-rlab)
60
+ - JupyterLab frontend: [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter-server/jupyverse/HEAD?urlpath=jupyverse-jupyterlab)
61
+ - Jupyter Notebook frontend: [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter-server/jupyverse/HEAD?urlpath=jupyverse-notebook)
62
62
 
63
- Documentation is available [here](https://davidbrochart.github.io/jupyverse).
63
+ Documentation is available [here](https://jupyter-server.github.io/jupyverse).
64
64
 
65
65
  ## Motivation
66
66
 
@@ -5,10 +5,10 @@
5
5
  A set of [Asphalt](https://asphalt.readthedocs.io) components implementing a Jupyter server.
6
6
 
7
7
  Try it online:
8
- - JupyterLab frontend: [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter-server/jupyverse/HEAD?urlpath=jupyverse-jlab)
9
- - RetroLab frontend: [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter-server/jupyverse/HEAD?urlpath=jupyverse-rlab)
8
+ - JupyterLab frontend: [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter-server/jupyverse/HEAD?urlpath=jupyverse-jupyterlab)
9
+ - Jupyter Notebook frontend: [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter-server/jupyverse/HEAD?urlpath=jupyverse-notebook)
10
10
 
11
- Documentation is available [here](https://davidbrochart.github.io/jupyverse).
11
+ Documentation is available [here](https://jupyter-server.github.io/jupyverse).
12
12
 
13
13
  ## Motivation
14
14
 
@@ -0,0 +1,44 @@
1
+ jupyverse_jupyterlab_command = " ".join(
2
+ [
3
+ "jupyverse",
4
+ "--set auth.mode=noauth",
5
+ "--set frontend.collaborative=true",
6
+ "--set frontend.base_url={base_url}jupyverse-jupyterlab/",
7
+ "--disable notebook",
8
+ "--port={port}",
9
+ ]
10
+ + [">jupyverse_jupyterlab.log 2>&1"]
11
+ )
12
+
13
+
14
+ jupyverse_notebook_command = " ".join(
15
+ [
16
+ "jupyverse",
17
+ "--set auth.mode=noauth",
18
+ "--set frontend.collaborative=true",
19
+ "--set frontend.base_url={base_url}jupyverse-notebook/",
20
+ "--disable jupyterlab",
21
+ "--port={port}",
22
+ ]
23
+ + [">jupyverse_notebook.log 2>&1"]
24
+ )
25
+
26
+
27
+ c.ServerProxy.servers = {
28
+ "jupyverse-jupyterlab": {
29
+ "command": ["/bin/bash", "-c", jupyverse_jupyterlab_command],
30
+ "timeout": 60,
31
+ "absolute_url": False,
32
+ },
33
+ "jupyverse-notebook": {
34
+ "command": ["/bin/bash", "-c", jupyverse_notebook_command],
35
+ "timeout": 60,
36
+ "absolute_url": False,
37
+ },
38
+ }
39
+
40
+ c.NotebookApp.default_url = "/jupyverse-jupyterlab"
41
+
42
+ import logging
43
+
44
+ c.NotebookApp.log_level = logging.DEBUG
@@ -2,7 +2,7 @@
2
2
 
3
3
  python -m pip install -e plugins/lab
4
4
  python -m pip install -e plugins/jupyterlab
5
- python -m pip install -e plugins/retrolab
5
+ python -m pip install -e plugins/notebook
6
6
  python -m pip install -e plugins/contents
7
7
  python -m pip install -e plugins/kernels
8
8
  python -m pip install -e plugins/terminals
@@ -27,8 +27,8 @@ component:
27
27
  resource_usage:
28
28
  type: resource_usage
29
29
  track_cpu_percent: true
30
- #retrolab:
31
- # type: retrolab
30
+ #notebook:
31
+ # type: notebook
32
32
  terminals:
33
33
  type: terminals
34
34
  yjs:
@@ -1,4 +1,4 @@
1
- Jupyverse can be installed to run either [JupyterLab](https://jupyterlab.readthedocs.io) or [RetroLab](https://github.com/jupyterlab/retrolab).
1
+ Jupyverse can be installed to run either [JupyterLab](https://jupyterlab.readthedocs.io) or [Jupyter Notebook](https://jupyter-notebook.readthedocs.io).
2
2
 
3
3
  ## With `pip`
4
4
 
@@ -6,9 +6,9 @@ For the JupyterLab frontend:
6
6
  ```bash
7
7
  pip install "jupyverse[jupyterlab,auth]"
8
8
  ```
9
- Or for the RetroLab frontend:
9
+ Or for the Jupyter Notebook frontend:
10
10
  ```bash
11
- pip install "jupyverse[retrolab,auth]"
11
+ pip install "jupyverse[notebook,auth]"
12
12
  ```
13
13
 
14
14
  ## With `micromamba`
@@ -27,9 +27,9 @@ For the JupyterLab frontend:
27
27
  ```bash
28
28
  micromamba install -c conda-forge jupyverse fps-jupyterlab fps-auth
29
29
  ```
30
- Or for the RetroLab frontend:
30
+ Or for the Jupyter Notebook frontend:
31
31
  ```bash
32
- micromamba install -c conda-forge jupyverse fps-retrolab fps-auth
32
+ micromamba install -c conda-forge jupyverse fps-notebook fps-auth
33
33
  ```
34
34
 
35
35
  ## Development install
@@ -69,9 +69,9 @@ Entering `hatch env show` will show the available environments:
69
69
  │ dev │ virtual │ dev.jupyterlab-noauth │ test │ lint │
70
70
  │ │ │ dev.jupyterlab-auth │ │ test │
71
71
  │ │ │ dev.jupyterlab-auth_fief │ │ typecheck │
72
- │ │ │ dev.retrolab-noauth │ │ │
73
- │ │ │ dev.retrolab-auth │ │ │
74
- │ │ │ dev.retrolab-auth_fief │ │ │
72
+ │ │ │ dev.notebook-noauth │ │ │
73
+ │ │ │ dev.notebook-auth │ │ │
74
+ │ │ │ dev.notebook-auth_fief │ │ │
75
75
  └──────┴─────────┴──────────────────────────┴──────────┴───────────┘
76
76
  ```
77
77
  !!! note
@@ -80,7 +80,7 @@ Entering `hatch env show` will show the available environments:
80
80
  from your local repository. So you want to use the `dev` environment.
81
81
 
82
82
  Currently, the `dev` environment matrix consists of all combinations of frontends
83
- (`jupyterlab`, `retrolab`) and authentication methods (`noauth`, `auth`, `auth_fief`),
83
+ (`jupyterlab`, `notebook`) and authentication methods (`noauth`, `auth`, `auth_fief`),
84
84
  which leads to six environments.
85
85
 
86
86
  A number of scripts are available in the `dev` environments. They can be
@@ -1 +1 @@
1
- `fps-lab` implements everything that is common to JupyterLab and RetroLab.
1
+ `fps-lab` implements everything that is common to JupyterLab and Jupyter Notebook.
@@ -0,0 +1 @@
1
+ `fps-notebook` implements the Notebook API.
@@ -11,7 +11,7 @@ This is the default mode when launching Jupyverse, just enter in a terminal:
11
11
  jupyverse --open-browser
12
12
  # same as: jupyverse --set auth.mode=token --open-browser
13
13
  ```
14
- This should open a new window in a browser, and load JupyterLab or RetroLab, depending on the front-end you chose to install (see [Install](../../install)).
14
+ This should open a new window in a browser, and load JupyterLab or Jupyter Notebook, depending on the front-end you chose to install (see [Install](../../install)).
15
15
 
16
16
  If you look at the terminal, you should see among other things:
17
17
  ```
@@ -0,0 +1 @@
1
+ __version__ = "0.5.1"
@@ -4,7 +4,7 @@ from pydantic import BaseModel
4
4
 
5
5
  from .app import App
6
6
 
7
- __version__ = "0.4.2"
7
+ __version__ = "0.5.1"
8
8
 
9
9
 
10
10
  class Singleton(type):
@@ -1,9 +1,14 @@
1
+ import sys
1
2
  from typing import List, Tuple
2
3
 
3
- import pkg_resources
4
4
  import rich_click as click
5
5
  from asphalt.core.cli import run
6
6
 
7
+ if sys.version_info < (3, 10):
8
+ from importlib_metadata import entry_points
9
+ else:
10
+ from importlib.metadata import entry_points
11
+
7
12
 
8
13
  @click.command() # type: ignore
9
14
  @click.option(
@@ -72,7 +77,7 @@ def main(
72
77
  def get_config(disable: Tuple[str, ...]) -> str:
73
78
  jupyverse_components = [
74
79
  ep.name
75
- for ep in pkg_resources.iter_entry_points(group="jupyverse.components")
80
+ for ep in entry_points(group="jupyverse.components")
76
81
  if ep.name not in disable
77
82
  ]
78
83
 
@@ -10,40 +10,40 @@ from ..auth import Auth, User
10
10
  from ..lab import Lab
11
11
 
12
12
 
13
- class RetroLab(Router, ABC):
13
+ class Notebook(Router, ABC):
14
14
  def __init__(self, app: App, auth: Auth, lab: Lab):
15
15
  super().__init__(app=app)
16
16
 
17
17
  router = APIRouter()
18
18
 
19
- @router.get("/retro/tree", response_class=HTMLResponse)
19
+ @router.get("/tree", response_class=HTMLResponse)
20
20
  async def get_tree(
21
21
  user: User = Depends(auth.current_user()),
22
22
  ):
23
23
  return await self.get_tree(user)
24
24
 
25
- @router.get("/retro/notebooks/{path:path}", response_class=HTMLResponse)
25
+ @router.get("/notebooks/{path:path}", response_class=HTMLResponse)
26
26
  async def get_notebook(
27
27
  path,
28
28
  user: User = Depends(auth.current_user()),
29
29
  ):
30
30
  return await self.get_notebook(path, user)
31
31
 
32
- @router.get("/retro/edit/{path:path}", response_class=HTMLResponse)
32
+ @router.get("/edit/{path:path}", response_class=HTMLResponse)
33
33
  async def edit_file(
34
34
  path,
35
35
  user: User = Depends(auth.current_user()),
36
36
  ):
37
37
  return await self.edit_file(path, user)
38
38
 
39
- @router.get("/retro/consoles/{path:path}", response_class=HTMLResponse)
39
+ @router.get("/consoles/{path:path}", response_class=HTMLResponse)
40
40
  async def get_console(
41
41
  path,
42
42
  user: User = Depends(auth.current_user()),
43
43
  ):
44
44
  return await self.get_console(path, user)
45
45
 
46
- @router.get("/retro/terminals/{name}", response_class=HTMLResponse)
46
+ @router.get("/terminals/{name}", response_class=HTMLResponse)
47
47
  async def get_terminal(
48
48
  name: str,
49
49
  user: User = Depends(auth.current_user()),
@@ -24,6 +24,7 @@ classifiers = [
24
24
  "Programming Language :: Python :: Implementation :: PyPy",
25
25
  ]
26
26
  dependencies = [
27
+ "importlib_metadata >=3.6; python_version<'3.10'",
27
28
  "pydantic >=2,<3",
28
29
  "fastapi >=0.95.0,<1",
29
30
  "rich-click >=1.6.1,<2",
@@ -44,7 +44,7 @@ nav:
44
44
  - 'frontend': plugins/frontend.md
45
45
  - 'lab': plugins/lab.md
46
46
  - 'jupyterlab': plugins/jupyterlab.md
47
- - 'retrolab': plugins/retrolab.md
47
+ - 'notebook': plugins/notebook.md
48
48
  - 'nbconvert': plugins/nbconvert.md
49
49
  - 'login': plugins/login.md
50
50
  - 'kernels': plugins/kernels.md
@@ -0,0 +1 @@
1
+ __version__ = "0.5.1"
@@ -72,6 +72,7 @@ def auth_factory(
72
72
  async def get_api_me(
73
73
  permissions: Optional[str] = None,
74
74
  user: UserRead = Depends(backend.current_user()),
75
+ update_user = Depends(backend.update_user),
75
76
  ):
76
77
  checked_permissions: Dict[str, List[str]] = {}
77
78
  if permissions is None:
@@ -96,6 +97,14 @@ def auth_factory(
96
97
  moon = get_anonymous_username()
97
98
  identity["name"] = f"Anonymous {moon}"
98
99
  identity["display_name"] = f"Anonymous {moon}"
100
+ identity["initials"] = f"A{moon[0]}"
101
+ await update_user(
102
+ dict(
103
+ name=identity["name"],
104
+ display_name=identity["display_name"],
105
+ permissions=checked_permissions,
106
+ )
107
+ )
99
108
  return {
100
109
  "identity": identity,
101
110
  "permissions": checked_permissions,
@@ -10,7 +10,7 @@ dynamic = ["version"]
10
10
  requires-python = ">=3.8"
11
11
  dependencies = [
12
12
  "aiosqlite",
13
- "fastapi-users[sqlalchemy,oauth] >=12,<13",
13
+ "fastapi-users[sqlalchemy,oauth] >=13.0.0,<14.0.0",
14
14
  "jupyverse-api >=0.1.2,<1",
15
15
  ]
16
16
 
@@ -0,0 +1 @@
1
+ __version__ = "0.5.1"
@@ -1,3 +1,3 @@
1
- __version__ = "0.4.2"
1
+ __version__ = "0.5.1"
2
2
 
3
3
  from .launch import launch # noqa
@@ -0,0 +1 @@
1
+ __version__ = "0.5.1"
@@ -9,7 +9,9 @@ from watchfiles import Change, awatch
9
9
 
10
10
  from jupyverse_api import Singleton
11
11
 
12
- logger = logging.getLogger("contents")
12
+ contents_logger = logging.getLogger("contents")
13
+ watchfiles_logger = logging.getLogger("watchfiles")
14
+ watchfiles_logger.setLevel(logging.WARNING)
13
15
 
14
16
 
15
17
  class Watcher:
@@ -110,13 +112,13 @@ class FileIdManager(metaclass=Singleton):
110
112
  changed_path_str = str(changed_path)
111
113
 
112
114
  if change == Change.deleted:
113
- logger.debug("File %s was deleted", changed_path_str)
115
+ contents_logger.debug("File %s was deleted", changed_path_str)
114
116
  async with db.execute(
115
117
  "SELECT COUNT(*) FROM fileids WHERE path = ?", (changed_path_str,)
116
118
  ) as cursor:
117
119
  if not (await cursor.fetchone())[0]:
118
120
  # path is not indexed, ignore
119
- logger.debug(
121
+ contents_logger.debug(
120
122
  "File %s is not indexed, ignoring", changed_path_str
121
123
  )
122
124
  continue
@@ -125,12 +127,12 @@ class FileIdManager(metaclass=Singleton):
125
127
  db, changed_path_str, deleted_paths, added_paths, False
126
128
  )
127
129
  elif change == Change.added:
128
- logger.debug("File %s was added", changed_path_str)
130
+ contents_logger.debug("File %s was added", changed_path_str)
129
131
  await maybe_rename(
130
132
  db, changed_path_str, added_paths, deleted_paths, True
131
133
  )
132
134
  elif change == Change.modified:
133
- logger.debug("File %s was modified", changed_path_str)
135
+ contents_logger.debug("File %s was modified", changed_path_str)
134
136
  if changed_path_str == self.db_path:
135
137
  continue
136
138
  async with db.execute(
@@ -138,7 +140,7 @@ class FileIdManager(metaclass=Singleton):
138
140
  ) as cursor:
139
141
  if not (await cursor.fetchone())[0]:
140
142
  # path is not indexed, ignore
141
- logger.debug(
143
+ contents_logger.debug(
142
144
  "File %s is not indexed, ignoring", changed_path_str
143
145
  )
144
146
  continue
@@ -149,7 +151,7 @@ class FileIdManager(metaclass=Singleton):
149
151
  )
150
152
 
151
153
  for path in deleted_paths - added_paths:
152
- logger.debug("Unindexing file %s ", path)
154
+ contents_logger.debug("Unindexing file %s ", path)
153
155
  await db.execute("DELETE FROM fileids WHERE path = ?", (path,))
154
156
  await db.commit()
155
157
 
@@ -203,7 +205,7 @@ async def maybe_rename(
203
205
  path1, path2 = changed_path, other_path
204
206
  if is_added_path:
205
207
  path1, path2 = path2, path1
206
- logger.debug("File %s was renamed to %s", path1, path2)
208
+ contents_logger.debug("File %s was renamed to %s", path1, path2)
207
209
  await db.execute("UPDATE fileids SET path = ? WHERE path = ?", (path2, path1))
208
210
  other_paths.remove(other_path)
209
211
  return
@@ -0,0 +1 @@
1
+ __version__ = "0.5.1"
@@ -0,0 +1 @@
1
+ __version__ = "0.5.1"
@@ -34,7 +34,7 @@ class _JupyterLab(JupyterLab):
34
34
  lab.redirect_after_root = "lab"
35
35
 
36
36
  extensions_dir = lab.prefix_dir / "share" / "jupyter" / "labextensions"
37
- self.federated_extensions, self.disabled_extension = lab.get_federated_extensions(
37
+ self.federated_extensions, self.disabled_extensions = lab.get_federated_extensions(
38
38
  extensions_dir
39
39
  )
40
40
  jupyterlab_dir = Path(jupyterlab_module.__file__).parents[1]
@@ -126,7 +126,7 @@ class _JupyterLab(JupyterLab):
126
126
  "collaborative": collaborative,
127
127
  "serverSideExecution": server_side_execution,
128
128
  "devMode": dev_mode,
129
- "disabledExtensions": self.disabled_extension,
129
+ "disabledExtensions": self.disabled_extensions,
130
130
  "exposeAppInBrowser": False,
131
131
  "extraLabextensionsPath": [],
132
132
  "federated_extensions": self.federated_extensions,
@@ -0,0 +1 @@
1
+ __version__ = "0.5.1"
@@ -223,6 +223,9 @@ class KernelDriver:
223
223
  if msg_type == "stream":
224
224
  with outputs.doc.transaction():
225
225
  # TODO: uncomment when changes are made in jupyter-ydoc
226
+ text = content["text"]
227
+ if text.endswith((os.linesep, "\n")):
228
+ text = text[:-1]
226
229
  if (not outputs) or (outputs[-1]["name"] != content["name"]): # type: ignore
227
230
  outputs.append(
228
231
  #Map(
@@ -235,13 +238,13 @@ class KernelDriver:
235
238
  {
236
239
  "name": content["name"],
237
240
  "output_type": msg_type,
238
- "text": [content["text"]],
241
+ "text": [text],
239
242
  }
240
243
  )
241
244
  else:
242
245
  #outputs[-1]["text"].append(content["text"]) # type: ignore
243
246
  last_output = outputs[-1]
244
- last_output["text"].append(content["text"]) # type: ignore
247
+ last_output["text"].append(text) # type: ignore
245
248
  outputs[-1] = last_output
246
249
  elif msg_type in ("display_data", "execute_result"):
247
250
  if "application/vnd.jupyter.ywidget-view+json" in content["data"]:
@@ -0,0 +1,3 @@
1
+ # fps-lab
2
+
3
+ An FPS plugin for the JupyterLab/Notebook API.
@@ -0,0 +1 @@
1
+ __version__ = "0.5.1"