jupyterlab 4.0.12__py3-none-any.whl → 4.1.0__py3-none-any.whl

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 (559) hide show
  1. jupyterlab/_version.py +1 -1
  2. jupyterlab/browser_check.py +1 -1
  3. jupyterlab/commands.py +122 -24
  4. jupyterlab/extensions/manager.py +146 -40
  5. jupyterlab/extensions/pypi.py +121 -143
  6. jupyterlab/galata/@jupyterlab/galata-extension/build_log.json +133 -95
  7. jupyterlab/galata/@jupyterlab/galata-extension/package.json +13 -13
  8. jupyterlab/galata/@jupyterlab/galata-extension/static/{lib_extension_index_js.6258249575a3de76958a.js → lib_extension_index_js.193465adc9aa81a6b29f.js} +11 -7
  9. jupyterlab/galata/@jupyterlab/galata-extension/static/{remoteEntry.b8fefd648959729a91e4.js → remoteEntry.9126d8bd4815ede2d14b.js} +4 -4
  10. jupyterlab/handlers/announcements.py +1 -1
  11. jupyterlab/handlers/plugin_manager_handler.py +64 -0
  12. jupyterlab/labapp.py +70 -12
  13. jupyterlab/labextensions.py +58 -3
  14. jupyterlab/schemas/@jupyterlab/application-extension/commands.json +181 -1
  15. jupyterlab/schemas/@jupyterlab/application-extension/package.json.orig +14 -14
  16. jupyterlab/schemas/@jupyterlab/apputils-extension/package.json.orig +18 -18
  17. jupyterlab/schemas/@jupyterlab/apputils-extension/themes.json +23 -1
  18. jupyterlab/schemas/@jupyterlab/cell-toolbar-extension/package.json.orig +8 -8
  19. jupyterlab/schemas/@jupyterlab/celltags-extension/package.json.orig +8 -8
  20. jupyterlab/schemas/@jupyterlab/codemirror-extension/package.json.orig +13 -13
  21. jupyterlab/schemas/@jupyterlab/completer-extension/inline-completer.json +64 -0
  22. jupyterlab/schemas/@jupyterlab/completer-extension/manager.json +2 -1
  23. jupyterlab/schemas/@jupyterlab/completer-extension/package.json.orig +10 -8
  24. jupyterlab/schemas/@jupyterlab/console-extension/package.json.orig +16 -16
  25. jupyterlab/schemas/@jupyterlab/console-extension/tracker.json +0 -5
  26. jupyterlab/schemas/@jupyterlab/csvviewer-extension/package.json.orig +14 -14
  27. jupyterlab/schemas/@jupyterlab/debugger-extension/package.json.orig +19 -19
  28. jupyterlab/schemas/@jupyterlab/docmanager-extension/package.json.orig +15 -15
  29. jupyterlab/schemas/@jupyterlab/documentsearch-extension/package.json.orig +10 -9
  30. jupyterlab/schemas/@jupyterlab/documentsearch-extension/plugin.json +13 -1
  31. jupyterlab/schemas/@jupyterlab/extensionmanager-extension/package.json.orig +9 -9
  32. jupyterlab/schemas/@jupyterlab/filebrowser-extension/browser.json +6 -0
  33. jupyterlab/schemas/@jupyterlab/filebrowser-extension/package.json.orig +17 -17
  34. jupyterlab/schemas/@jupyterlab/fileeditor-extension/package.json.orig +27 -27
  35. jupyterlab/schemas/@jupyterlab/help-extension/package.json.orig +11 -11
  36. jupyterlab/schemas/@jupyterlab/htmlviewer-extension/package.json.orig +11 -11
  37. jupyterlab/schemas/@jupyterlab/hub-extension/package.json.orig +8 -8
  38. jupyterlab/schemas/@jupyterlab/imageviewer-extension/package.json.orig +8 -8
  39. jupyterlab/schemas/@jupyterlab/inspector-extension/package.json.orig +12 -12
  40. jupyterlab/schemas/@jupyterlab/launcher-extension/package.json.orig +10 -10
  41. jupyterlab/schemas/@jupyterlab/logconsole-extension/package.json.orig +13 -13
  42. jupyterlab/schemas/@jupyterlab/lsp-extension/package.json.orig +11 -10
  43. jupyterlab/schemas/@jupyterlab/mainmenu-extension/package.json.orig +12 -12
  44. jupyterlab/schemas/@jupyterlab/mainmenu-extension/plugin.json +4 -4
  45. jupyterlab/schemas/@jupyterlab/markdownviewer-extension/package.json.orig +11 -11
  46. jupyterlab/schemas/@jupyterlab/mathjax-extension/package.json.orig +5 -5
  47. jupyterlab/schemas/@jupyterlab/metadataform-extension/package.json.orig +9 -9
  48. jupyterlab/schemas/@jupyterlab/notebook-extension/package.json.orig +35 -35
  49. jupyterlab/schemas/@jupyterlab/notebook-extension/panel.json +6 -1
  50. jupyterlab/schemas/@jupyterlab/notebook-extension/tracker.json +68 -46
  51. jupyterlab/schemas/@jupyterlab/running-extension/package.json.orig +13 -13
  52. jupyterlab/schemas/@jupyterlab/settingeditor-extension/package.json.orig +13 -12
  53. jupyterlab/schemas/@jupyterlab/shortcuts-extension/package.json.orig +11 -10
  54. jupyterlab/schemas/@jupyterlab/statusbar-extension/package.json.orig +8 -8
  55. jupyterlab/schemas/@jupyterlab/terminal-extension/package.json.orig +14 -14
  56. jupyterlab/schemas/@jupyterlab/terminal-extension/plugin.json +6 -0
  57. jupyterlab/schemas/@jupyterlab/toc-extension/package.json.orig +8 -8
  58. jupyterlab/schemas/@jupyterlab/tooltip-extension/package.json.orig +14 -14
  59. jupyterlab/schemas/@jupyterlab/translation-extension/package.json.orig +8 -10
  60. jupyterlab/semver.py +3 -3
  61. jupyterlab/staging/index.js +22 -3
  62. jupyterlab/staging/package.json +164 -145
  63. jupyterlab/staging/templates/partial.html +4 -0
  64. jupyterlab/staging/webpack.config.js +3 -4
  65. jupyterlab/staging/yarn.lock +2389 -1258
  66. jupyterlab/static/1166.08f9e1fd722f61c9b69c.js +1 -0
  67. jupyterlab/static/{1581.e988a625b879002dcc04.js → 1581.391504688eef08096360.js} +3 -3
  68. jupyterlab/static/1760.9a71f4501e9bbaa4c4d8.js +1 -0
  69. jupyterlab/static/{2473.cb9caf61d1e34a747cc0.js → 1851.0c7fca4c761a84e91876.js} +1 -1
  70. jupyterlab/static/1917.05d73322caab1f77e3bf.js +1 -0
  71. jupyterlab/static/1929.96e62233aa6f2a8363d4.js +1 -0
  72. jupyterlab/static/226.5dc3528c008170b37b21.js +1 -0
  73. jupyterlab/static/2551.b07d561a12360c38c589.js +1 -0
  74. jupyterlab/static/2579.b19edefeb9ee4daed4bd.js +1 -0
  75. jupyterlab/static/2655.f5b7c82c80d51a0f7ab7.js +1 -0
  76. jupyterlab/static/2727.6925b8cf1c5363f40138.js +1 -0
  77. jupyterlab/static/2755.696bab6bdca0d9a78131.js +1 -0
  78. jupyterlab/static/2995.0448b3ed572d9cc5fcc7.js +1 -0
  79. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/3056.8a73f6aacd8ca45f84f9.js → jupyterlab/static/3056.6ed9d97c166cf2573275.js +1 -1
  80. jupyterlab/static/3308.764d71af7e591cdb1345.js +1 -0
  81. jupyterlab/static/367.835aef5c5efbd38183af.js +1 -0
  82. jupyterlab/static/3711.150292a21fd47be1c05f.js +1 -0
  83. jupyterlab/static/406.81906f96059e31e907a2.js +1 -0
  84. jupyterlab/static/4086.3087c0abed5ca45b823b.js +1 -0
  85. jupyterlab/static/4136.4b9f72f85f49f979ebb8.js +2 -0
  86. jupyterlab/static/4136.4b9f72f85f49f979ebb8.js.LICENSE.txt +9 -0
  87. jupyterlab/static/4765.093b4f8b3cee1251db8d.js +1 -0
  88. jupyterlab/static/526.601d8ddd8347cd7790b9.js +1 -0
  89. jupyterlab/static/5794.3cb2bcd1a3e23d0c084e.js +1 -0
  90. jupyterlab/static/6001.963601fcecb8b4c1d1f1.js +1 -0
  91. jupyterlab/static/627.7e292370f4d61d9e8648.js +5148 -0
  92. jupyterlab/static/627.7e292370f4d61d9e8648.js.LICENSE.txt +14 -0
  93. jupyterlab/static/6436.8d9ba427de4ab1053871.js +1 -0
  94. jupyterlab/static/6515.56c63929fb079a820cbc.js +1 -0
  95. jupyterlab/static/6770.fd7084bb2f4b7622401d.js +1 -0
  96. jupyterlab/static/6778.345e6ac9818e30317310.js +1 -0
  97. jupyterlab/static/6898.742a7062fa979fb68a80.js +1 -0
  98. jupyterlab/static/7161.353c3ab960df72e6f1ea.js +1 -0
  99. jupyterlab/static/7178.5f3dd740449b44efad2d.js +2 -0
  100. jupyterlab/static/7272.72081c10e0f645b0631a.js +1 -0
  101. jupyterlab/static/7313.4a8a9a1eee6f7ef15ee1.js +2 -0
  102. jupyterlab/static/7426.c83966ccc62601d391bd.js +2 -0
  103. jupyterlab/static/7426.c83966ccc62601d391bd.js.LICENSE.txt +17 -0
  104. jupyterlab/static/7629.1f295461ebf56a48c197.js +1 -0
  105. jupyterlab/static/7734.b08c15e9f538f44d0f52.js +1 -0
  106. jupyterlab/static/7946.7fe46d47492e459b7cb5.js +1 -0
  107. jupyterlab/static/812.647390901579c6a720cf.js +1 -0
  108. jupyterlab/static/8152.5baac73844a065f34284.js +1 -0
  109. jupyterlab/static/8302.5c5e5a2da7fe74b12a1d.js +1 -0
  110. jupyterlab/static/8322.288af285dac9cb9a8800.js +1 -0
  111. jupyterlab/static/8462.74d5f5afd4f9d7825eed.js +1 -0
  112. jupyterlab/static/8738.782816e9072ac38762b4.js +1 -0
  113. jupyterlab/static/881.972f79365eed0f77378e.js +1 -0
  114. jupyterlab/static/9395.b59dceae72715c9f885c.js +1 -0
  115. jupyterlab/static/9440.04751e25c9cde059ff37.js +1 -0
  116. jupyterlab/static/9545.f0f7a2959bdd17ee3448.js +1 -0
  117. jupyterlab/static/9579.4b1b079b6b7cd2924338.js +1465 -0
  118. jupyterlab/static/9579.4b1b079b6b7cd2924338.js.LICENSE.txt +19 -0
  119. jupyterlab/static/9870.70b2b59cc96c3a97c489.js +1 -0
  120. jupyterlab/static/9984.6ba5355e0d5487d5ac63.js +1 -0
  121. jupyterlab/static/build_log.json +133 -97
  122. jupyterlab/static/index.html +1 -1
  123. jupyterlab/static/index.out.js +97 -3
  124. jupyterlab/static/jlab_core.570a5c21bdeb57ca2ec8.js +1 -0
  125. jupyterlab/static/main.d277e1577010c7e39fdb.js +1 -0
  126. jupyterlab/static/package.json +164 -145
  127. jupyterlab/static/style.js +2 -0
  128. jupyterlab/static/third-party-licenses.json +481 -103
  129. jupyterlab/style.js +2 -0
  130. jupyterlab/tests/conftest.py +8 -0
  131. jupyterlab/tests/mock_packages/extension/package.json +3 -3
  132. jupyterlab/tests/mock_packages/interop/consumer/package.json +3 -3
  133. jupyterlab/tests/mock_packages/interop/provider/package.json +3 -3
  134. jupyterlab/tests/mock_packages/interop/token/package.json +1 -1
  135. jupyterlab/tests/mock_packages/mimeextension/package.json +1 -1
  136. jupyterlab/tests/test_custom_css_handler.py +37 -0
  137. jupyterlab/tests/test_extensions.py +30 -1
  138. jupyterlab/themes/@jupyterlab/theme-dark-extension/index.css +2 -0
  139. jupyterlab/themes/@jupyterlab/theme-light-extension/index.css +1 -0
  140. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/application-extension/commands.json +181 -1
  141. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/application-extension/package.json.orig +14 -14
  142. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/package.json.orig +18 -18
  143. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/themes.json +23 -1
  144. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/cell-toolbar-extension/package.json.orig +8 -8
  145. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/celltags-extension/package.json.orig +8 -8
  146. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/codemirror-extension/package.json.orig +13 -13
  147. jupyterlab-4.1.0.data/data/share/jupyter/lab/schemas/@jupyterlab/completer-extension/inline-completer.json +64 -0
  148. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/completer-extension/manager.json +2 -1
  149. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/completer-extension/package.json.orig +10 -8
  150. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/console-extension/package.json.orig +16 -16
  151. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/console-extension/tracker.json +0 -5
  152. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/csvviewer-extension/package.json.orig +14 -14
  153. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/debugger-extension/package.json.orig +19 -19
  154. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/docmanager-extension/package.json.orig +15 -15
  155. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/documentsearch-extension/package.json.orig +10 -9
  156. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/documentsearch-extension/plugin.json +13 -1
  157. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/extensionmanager-extension/package.json.orig +9 -9
  158. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/browser.json +6 -0
  159. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/package.json.orig +17 -17
  160. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/fileeditor-extension/package.json.orig +27 -27
  161. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/help-extension/package.json.orig +11 -11
  162. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/htmlviewer-extension/package.json.orig +11 -11
  163. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/hub-extension/package.json.orig +8 -8
  164. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/imageviewer-extension/package.json.orig +8 -8
  165. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/package.json.orig +12 -12
  166. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/launcher-extension/package.json.orig +10 -10
  167. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/logconsole-extension/package.json.orig +13 -13
  168. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/lsp-extension/package.json.orig +11 -10
  169. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/mainmenu-extension/package.json.orig +12 -12
  170. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/mainmenu-extension/plugin.json +4 -4
  171. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/markdownviewer-extension/package.json.orig +11 -11
  172. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/mathjax-extension/package.json.orig +5 -5
  173. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/metadataform-extension/package.json.orig +9 -9
  174. jupyterlab-4.1.0.data/data/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/package.json.orig +93 -0
  175. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/panel.json +6 -1
  176. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/tracker.json +68 -46
  177. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/running-extension/package.json.orig +13 -13
  178. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/settingeditor-extension/package.json.orig +13 -12
  179. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/shortcuts-extension/package.json.orig +11 -10
  180. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/statusbar-extension/package.json.orig +8 -8
  181. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/terminal-extension/package.json.orig +14 -14
  182. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/terminal-extension/plugin.json +6 -0
  183. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/toc-extension/package.json.orig +8 -8
  184. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/package.json.orig +14 -14
  185. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/translation-extension/package.json.orig +8 -10
  186. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/1166.08f9e1fd722f61c9b69c.js +1 -0
  187. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/1581.e988a625b879002dcc04.js → jupyterlab-4.1.0.data/data/share/jupyter/lab/static/1581.391504688eef08096360.js +3 -3
  188. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/1760.9a71f4501e9bbaa4c4d8.js +1 -0
  189. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/2473.cb9caf61d1e34a747cc0.js → jupyterlab-4.1.0.data/data/share/jupyter/lab/static/1851.0c7fca4c761a84e91876.js +1 -1
  190. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/1917.05d73322caab1f77e3bf.js +1 -0
  191. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/1929.96e62233aa6f2a8363d4.js +1 -0
  192. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/226.5dc3528c008170b37b21.js +1 -0
  193. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/2551.b07d561a12360c38c589.js +1 -0
  194. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/2579.b19edefeb9ee4daed4bd.js +1 -0
  195. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/2655.f5b7c82c80d51a0f7ab7.js +1 -0
  196. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/2727.6925b8cf1c5363f40138.js +1 -0
  197. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/2755.696bab6bdca0d9a78131.js +1 -0
  198. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/2995.0448b3ed572d9cc5fcc7.js +1 -0
  199. jupyterlab/static/3056.8a73f6aacd8ca45f84f9.js → jupyterlab-4.1.0.data/data/share/jupyter/lab/static/3056.6ed9d97c166cf2573275.js +1 -1
  200. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/3308.764d71af7e591cdb1345.js +1 -0
  201. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/367.835aef5c5efbd38183af.js +1 -0
  202. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/3711.150292a21fd47be1c05f.js +1 -0
  203. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/406.81906f96059e31e907a2.js +1 -0
  204. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/4086.3087c0abed5ca45b823b.js +1 -0
  205. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/4136.4b9f72f85f49f979ebb8.js +2 -0
  206. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/4136.4b9f72f85f49f979ebb8.js.LICENSE.txt +9 -0
  207. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/4765.093b4f8b3cee1251db8d.js +1 -0
  208. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/526.601d8ddd8347cd7790b9.js +1 -0
  209. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/5794.3cb2bcd1a3e23d0c084e.js +1 -0
  210. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/6001.963601fcecb8b4c1d1f1.js +1 -0
  211. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/627.7e292370f4d61d9e8648.js +5148 -0
  212. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/627.7e292370f4d61d9e8648.js.LICENSE.txt +14 -0
  213. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/6436.8d9ba427de4ab1053871.js +1 -0
  214. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/6515.56c63929fb079a820cbc.js +1 -0
  215. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/6770.fd7084bb2f4b7622401d.js +1 -0
  216. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/6778.345e6ac9818e30317310.js +1 -0
  217. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/6898.742a7062fa979fb68a80.js +1 -0
  218. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/7161.353c3ab960df72e6f1ea.js +1 -0
  219. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/7178.5f3dd740449b44efad2d.js +2 -0
  220. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/7272.72081c10e0f645b0631a.js +1 -0
  221. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/7313.4a8a9a1eee6f7ef15ee1.js +2 -0
  222. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/7426.c83966ccc62601d391bd.js +2 -0
  223. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/7426.c83966ccc62601d391bd.js.LICENSE.txt +17 -0
  224. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/7629.1f295461ebf56a48c197.js +1 -0
  225. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/7734.b08c15e9f538f44d0f52.js +1 -0
  226. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/7946.7fe46d47492e459b7cb5.js +1 -0
  227. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/812.647390901579c6a720cf.js +1 -0
  228. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/8152.5baac73844a065f34284.js +1 -0
  229. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/8302.5c5e5a2da7fe74b12a1d.js +1 -0
  230. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/8322.288af285dac9cb9a8800.js +1 -0
  231. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/8462.74d5f5afd4f9d7825eed.js +1 -0
  232. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/8738.782816e9072ac38762b4.js +1 -0
  233. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/881.972f79365eed0f77378e.js +1 -0
  234. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/9395.b59dceae72715c9f885c.js +1 -0
  235. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/9440.04751e25c9cde059ff37.js +1 -0
  236. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/9545.f0f7a2959bdd17ee3448.js +1 -0
  237. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/9579.4b1b079b6b7cd2924338.js +1465 -0
  238. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/9579.4b1b079b6b7cd2924338.js.LICENSE.txt +19 -0
  239. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/9870.70b2b59cc96c3a97c489.js +1 -0
  240. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/9984.6ba5355e0d5487d5ac63.js +1 -0
  241. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/build_log.json +133 -97
  242. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/index.html +1 -1
  243. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/index.out.js +97 -3
  244. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/jlab_core.570a5c21bdeb57ca2ec8.js +1 -0
  245. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/main.d277e1577010c7e39fdb.js +1 -0
  246. jupyterlab-4.1.0.data/data/share/jupyter/lab/static/package.json +350 -0
  247. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/style.js +2 -0
  248. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/third-party-licenses.json +481 -103
  249. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/themes/@jupyterlab/theme-dark-extension/index.css +2 -0
  250. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/themes/@jupyterlab/theme-light-extension/index.css +1 -0
  251. {jupyterlab-4.0.12.dist-info → jupyterlab-4.1.0.dist-info}/METADATA +21 -20
  252. jupyterlab-4.1.0.dist-info/RECORD +872 -0
  253. jupyterlab/static/141.f110448d494068ebcc87.js +0 -2
  254. jupyterlab/static/2254.55c69210925ec9b28dd9.js +0 -1
  255. jupyterlab/static/2995.9791e1071c5f095421bf.js +0 -1
  256. jupyterlab/static/3127.75e12687687a3de3b59d.js +0 -1
  257. jupyterlab/static/3308.b85a46b26730c1cd5395.js +0 -1
  258. jupyterlab/static/4523.87224ea442d42316dda0.js +0 -1
  259. jupyterlab/static/812.063be439e3d9e318bdbd.js +0 -1
  260. jupyterlab/static/830.8ddf7d2d91f66a8e4d36.js +0 -1
  261. jupyterlab/static/8302.4c190e10b00fe083570e.js +0 -1
  262. jupyterlab/static/8768.4a80caab00174c50eb10.js +0 -2
  263. jupyterlab/static/9065.5305259c65dfa1c99874.js +0 -1
  264. jupyterlab/static/jlab_core.826ed748f0a8a70a419e.js +0 -1
  265. jupyterlab/static/main.7bc3df3894cb324b8f85.js +0 -1
  266. jupyterlab-4.0.12.data/data/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/package.json.orig +0 -93
  267. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/141.f110448d494068ebcc87.js +0 -2
  268. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/2254.55c69210925ec9b28dd9.js +0 -1
  269. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/2995.9791e1071c5f095421bf.js +0 -1
  270. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/3127.75e12687687a3de3b59d.js +0 -1
  271. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/3308.b85a46b26730c1cd5395.js +0 -1
  272. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/4523.87224ea442d42316dda0.js +0 -1
  273. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/812.063be439e3d9e318bdbd.js +0 -1
  274. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/830.8ddf7d2d91f66a8e4d36.js +0 -1
  275. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/8302.4c190e10b00fe083570e.js +0 -1
  276. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/8768.4a80caab00174c50eb10.js +0 -2
  277. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/9065.5305259c65dfa1c99874.js +0 -1
  278. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/jlab_core.826ed748f0a8a70a419e.js +0 -1
  279. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/main.7bc3df3894cb324b8f85.js +0 -1
  280. jupyterlab-4.0.12.data/data/share/jupyter/lab/static/package.json +0 -331
  281. jupyterlab-4.0.12.dist-info/RECORD +0 -786
  282. /jupyterlab/static/{1581.e988a625b879002dcc04.js.LICENSE.txt → 1581.391504688eef08096360.js.LICENSE.txt} +0 -0
  283. /jupyterlab/static/{141.f110448d494068ebcc87.js.LICENSE.txt → 7178.5f3dd740449b44efad2d.js.LICENSE.txt} +0 -0
  284. /jupyterlab/static/{8768.4a80caab00174c50eb10.js.LICENSE.txt → 7313.4a8a9a1eee6f7ef15ee1.js.LICENSE.txt} +0 -0
  285. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/etc/jupyter/jupyter_notebook_config.d/jupyterlab.json +0 -0
  286. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/etc/jupyter/jupyter_server_config.d/jupyterlab.json +0 -0
  287. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/applications/jupyterlab.desktop +0 -0
  288. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/icons/hicolor/scalable/apps/jupyterlab.svg +0 -0
  289. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/application-extension/context-menu.json +0 -0
  290. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/application-extension/property-inspector.json +0 -0
  291. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/application-extension/shell.json +0 -0
  292. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/application-extension/top-bar.json +0 -0
  293. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/notification.json +0 -0
  294. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/palette.json +0 -0
  295. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/print.json +0 -0
  296. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/sanitizer.json +0 -0
  297. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/utilityCommands.json +0 -0
  298. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/apputils-extension/workspaces.json +0 -0
  299. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/cell-toolbar-extension/plugin.json +0 -0
  300. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/celltags-extension/plugin.json +0 -0
  301. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/codemirror-extension/plugin.json +0 -0
  302. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/console-extension/completer.json +0 -0
  303. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/console-extension/foreign.json +0 -0
  304. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/csvviewer-extension/csv.json +0 -0
  305. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/csvviewer-extension/tsv.json +0 -0
  306. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/debugger-extension/main.json +0 -0
  307. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/docmanager-extension/download.json +0 -0
  308. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/docmanager-extension/plugin.json +0 -0
  309. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/extensionmanager-extension/plugin.json +0 -0
  310. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/download.json +0 -0
  311. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/open-browser-tab.json +0 -0
  312. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/open-with.json +0 -0
  313. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/filebrowser-extension/widget.json +0 -0
  314. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/fileeditor-extension/completer.json +0 -0
  315. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/fileeditor-extension/plugin.json +0 -0
  316. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/help-extension/about.json +0 -0
  317. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/help-extension/jupyter-forum.json +0 -0
  318. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/help-extension/launch-classic.json +0 -0
  319. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/htmlviewer-extension/plugin.json +0 -0
  320. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/hub-extension/menu.json +0 -0
  321. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/imageviewer-extension/plugin.json +0 -0
  322. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/consoles.json +0 -0
  323. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/inspector.json +0 -0
  324. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/inspector-extension/notebooks.json +0 -0
  325. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/launcher-extension/plugin.json +0 -0
  326. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/logconsole-extension/plugin.json +0 -0
  327. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/lsp-extension/plugin.json +0 -0
  328. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/markdownviewer-extension/plugin.json +0 -0
  329. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/mathjax-extension/plugin.json +0 -0
  330. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/metadataform-extension/metadataforms.json +0 -0
  331. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/completer.json +0 -0
  332. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/export.json +0 -0
  333. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/notebook-extension/tools.json +0 -0
  334. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/running-extension/plugin.json +0 -0
  335. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/settingeditor-extension/form-ui.json +0 -0
  336. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/settingeditor-extension/plugin.json +0 -0
  337. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/shortcuts-extension/shortcuts.json +0 -0
  338. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/statusbar-extension/plugin.json +0 -0
  339. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/toc-extension/registry.json +0 -0
  340. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/consoles.json +0 -0
  341. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/files.json +0 -0
  342. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/tooltip-extension/notebooks.json +0 -0
  343. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/schemas/@jupyterlab/translation-extension/plugin.json +0 -0
  344. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1036.0d1f109c3d842497fd51.js +0 -0
  345. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1036.0d1f109c3d842497fd51.js.LICENSE.txt +0 -0
  346. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1085.0b67f0736d85ec41fdd4.js +0 -0
  347. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1142.d5442a459b18907c1f91.js +0 -0
  348. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1168.0a95b9c93afe61ceb527.js +0 -0
  349. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1294.9d27be1098bc8abebe3f.js +0 -0
  350. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1410.e2302ff5f564d6e596bb.js +0 -0
  351. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1420.e8486ed074346bc629ca.js +0 -0
  352. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1448.c391061d8a8344f9d177.js +0 -0
  353. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1452.4cc17f31511d1f9c6052.js +0 -0
  354. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1467.dcd89539f6477c1367af.js +0 -0
  355. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1550.09375e869bc25429b07a.js +0 -0
  356. /jupyterlab-4.0.12.data/data/share/jupyter/lab/static/1581.e988a625b879002dcc04.js.LICENSE.txt → /jupyterlab-4.1.0.data/data/share/jupyter/lab/static/1581.391504688eef08096360.js.LICENSE.txt +0 -0
  357. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1608.61240f3db67d3d952790.js +0 -0
  358. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1716.a6bbe1ae8a1986a73623.js +0 -0
  359. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1776.4f9305d35480467b23c9.js +0 -0
  360. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1861.4fc7b4afe2b09eb6b5c0.js +0 -0
  361. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1903.3b452e8ec30e57dbaba5.js +0 -0
  362. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1945.0fbbfe93a4aedd91875c.js +0 -0
  363. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1954.07d96e4020ed6e543d25.js +0 -0
  364. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1993.f8c5682f95ffa75cbaf6.js +0 -0
  365. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/1cb1c39ea642f26a4dfe.woff +0 -0
  366. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2039.aa079dac5c520f93b234.js +0 -0
  367. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2090.abc86741318f76c3d726.js +0 -0
  368. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2091.600b1c32af186f6405f9.js +0 -0
  369. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2104.296346db0067b4883fbf.js +0 -0
  370. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2145.be9ec610f29703694fcf.js +0 -0
  371. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2295.cda0f7182bf2a1a03c5a.js +0 -0
  372. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2320.04abae549b19363c2fdd.js +0 -0
  373. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2363.6eef078cb37c32d7fbc3.js +0 -0
  374. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2459.9f9cb02561de1bec73ff.js +0 -0
  375. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2485.dab750ed66209df61fe1.js +0 -0
  376. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2617.9c299e26785f7646cb39.js +0 -0
  377. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2646.0864fb63d7ab1ed16893.js +0 -0
  378. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/26683bf201fb258a2237.woff +0 -0
  379. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2800.680b1fa0a4c66c69bb1e.js +0 -0
  380. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2857.27a6e85f5c4c092ab8a2.js +0 -0
  381. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2909.e190307f7f84c7691068.js +0 -0
  382. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/292.3f7844a129f16ec1ffbc.js +0 -0
  383. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2929.b88233153dbf33f40b29.js +0 -0
  384. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2953.92ff8f12bad6ee06859c.js +0 -0
  385. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/2990.ea15322a41d3f133989b.js +0 -0
  386. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/30e889b58cbc51adfbb0.woff +0 -0
  387. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3123.85cea4be2e2ed3f9654f.js +0 -0
  388. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/32792104b5ef69eded90.woff +0 -0
  389. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3306.8bdc49ad1a7ca593a838.js +0 -0
  390. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3520.3495b98946de6960ace8.js +0 -0
  391. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3528.3b5ef5f31d460b5fcd01.js +0 -0
  392. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3547.bd90e90bfe79911486e8.js +0 -0
  393. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3549.24f2fe646d8128bc9db0.js +0 -0
  394. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/355254db9ca10a09a3b5.woff +0 -0
  395. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3601.5c17c015d71b69ddcab3.js +0 -0
  396. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/36e0d72d8a7afc696a3e.woff +0 -0
  397. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3724.a4657dc16be2ffc49282.js +0 -0
  398. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/373c04fd2418f5c77eea.eot +0 -0
  399. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/378.6d0f0fc4c8a2eb80ac43.js +0 -0
  400. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3783.93d5366ab28a19e1f0f9.js +0 -0
  401. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3807.08a8fd824036c30b3746.js +0 -0
  402. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/383.db345dbeef5ef774e50c.js +0 -0
  403. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3871.ba96e5b53bb16df56618.js +0 -0
  404. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3923.f29c06abdcb560130471.js +0 -0
  405. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3935.905285b8e22c337968ed.js +0 -0
  406. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3935.905285b8e22c337968ed.js.LICENSE.txt +0 -0
  407. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3962.50786e3ed9a01329a4a0.js +0 -0
  408. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3bc6ecaae7ecf6f8d7f8.woff +0 -0
  409. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3de784d07b9fa8f104c1.woff +0 -0
  410. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/3f6d3488cf65374f6f67.woff +0 -0
  411. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4008.86acbefff6de679f77b5.js +0 -0
  412. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4008.86acbefff6de679f77b5.js.LICENSE.txt +0 -0
  413. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4017.096a74a538e031b6d346.js +0 -0
  414. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4043.aa012978c41d1d1b2f14.js +0 -0
  415. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4139.303ee7374c742287be85.js +0 -0
  416. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4155.5a8d6736017097028d78.js +0 -0
  417. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4283.f6092d8b7f2e53118d1b.js +0 -0
  418. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4291.e5d8997127541f75fdaf.js +0 -0
  419. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4405.43dab120fea32f30bbb9.js +0 -0
  420. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4419.93938494f456cd76a7e3.js +0 -0
  421. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4452.2f8819684b96ecff5231.js +0 -0
  422. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4519.6b784d052db42e93eff2.js +0 -0
  423. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4562.72444a09f5f092646490.js +0 -0
  424. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4591.428531724f49fe824ffa.js +0 -0
  425. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/46.fb119c5e5b1e0c72a00f.js +0 -0
  426. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4743.d4e9658ea25301e15a94.js +0 -0
  427. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/481e39042508ae313a60.woff +0 -0
  428. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4878.73004381601237a3ef9c.js +0 -0
  429. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/49.7233f68f95d10b85a83e.js +0 -0
  430. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/4986.a497cdda4b7152902568.js +0 -0
  431. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/5041.cdc120bda0a0dec4cfc2.js +0 -0
  432. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/5157.9c77dc27a251d4135876.js +0 -0
  433. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/5201.8866042bae350659528a.js +0 -0
  434. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/5203.c002d40ac647dc6e1d61.js +0 -0
  435. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/5331.0cd3f010bb08983ec3fd.js +0 -0
  436. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/5440.2541fcda12b661665148.js +0 -0
  437. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/5521.ce4a0274596e0325374c.js +0 -0
  438. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/5746.e4434ef2027bcc5ed0c9.js +0 -0
  439. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/581.2b878ed37172aced15b5.js +0 -0
  440. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/5881.3946238aa4afdcf4f964.js +0 -0
  441. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/5959.a6b1fd3b03d3649ea8b1.js +0 -0
  442. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/5cda41563a095bd70c78.woff +0 -0
  443. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/6059.d83e7323b2ee1aa16009.js +0 -0
  444. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/6163.f5b51a9f0df4846ba40f.js +0 -0
  445. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/6207.a8079c8d8a61039dd530.js +0 -0
  446. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/6243.2efd673d1304c43b7b78.js +0 -0
  447. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/6267.1def2916929e185ab9fc.js +0 -0
  448. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/6359.4b994bfd6b1dea2d6fe3.js +0 -0
  449. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/6443.e6b52d3732b3e8513a71.js +0 -0
  450. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/6532.bb7137729a2d6d4e6ddf.js +0 -0
  451. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/6560.f42276a0b1b92aea515b.js +0 -0
  452. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/6595.6a1d7e1abbf186dd119b.js +0 -0
  453. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/6686.3c518aa6e5f9785fb486.js +0 -0
  454. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/6815.0b699f0c162a24b0dbe3.js +0 -0
  455. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/6888.9d3914817f3290827a64.js +0 -0
  456. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7080.1330328bb6f46b4da81e.js +0 -0
  457. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7112.d5120c85ebd17620dda0.js +0 -0
  458. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7173.e28f63dbd553818e07d3.js +0 -0
  459. /jupyterlab-4.0.12.data/data/share/jupyter/lab/static/141.f110448d494068ebcc87.js.LICENSE.txt → /jupyterlab-4.1.0.data/data/share/jupyter/lab/static/7178.5f3dd740449b44efad2d.js.LICENSE.txt +0 -0
  460. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/721921bab0d001ebff02.woff +0 -0
  461. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7245.c0cae8787dcd00b991b7.js +0 -0
  462. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7294.badf85a3180703d63f62.js +0 -0
  463. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7294.badf85a3180703d63f62.js.LICENSE.txt +0 -0
  464. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/72bc573386dd1d48c5bb.woff +0 -0
  465. /jupyterlab-4.0.12.data/data/share/jupyter/lab/static/8768.4a80caab00174c50eb10.js.LICENSE.txt → /jupyterlab-4.1.0.data/data/share/jupyter/lab/static/7313.4a8a9a1eee6f7ef15ee1.js.LICENSE.txt +0 -0
  466. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7317.af8a7da0f881a22752c1.js +0 -0
  467. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7318.397bf8e913e825b2be27.js +0 -0
  468. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7363.abe8e31a91e113753bae.js +0 -0
  469. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7384.60351e008d8f687e8fcc.js +0 -0
  470. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7390.8253478b90f756692702.js +0 -0
  471. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/745.85516a9bb83bcd94d00d.js +0 -0
  472. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7451.c0257dbfdd320e2c21f5.js +0 -0
  473. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7451.c0257dbfdd320e2c21f5.js.LICENSE.txt +0 -0
  474. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7472.58ba8647a489d019c2ef.js +0 -0
  475. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7473.5012397d10d3b945ecaa.js +0 -0
  476. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7508.b902347f820c70cd386a.js +0 -0
  477. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7511.b381a696cf806983c654.js +0 -0
  478. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7517.f3e5d420f4af90d442dd.js +0 -0
  479. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7669.343e259c4c8269479f5b.js +0 -0
  480. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7702.c479c69f7a532f7b3fd5.js +0 -0
  481. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7730.7e3a9fb140d2d55a51fc.js +0 -0
  482. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7731.26db150e967313b7a7e2.js +0 -0
  483. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7763.19a095394000f9ef62bd.js +0 -0
  484. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7763.19a095394000f9ef62bd.js.LICENSE.txt +0 -0
  485. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7775.3e0dee729369fe3d5008.js +0 -0
  486. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7823.817687f13e9a6781fdd3.js +0 -0
  487. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7827.e36d073d947bf02a05e3.js +0 -0
  488. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7848.e83aa4b90ae87209abb8.js +0 -0
  489. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/786.8a99ee7dbd7bd0eb9dce.js +0 -0
  490. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7877.a4c46a784149533b91d4.js +0 -0
  491. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/7887.128a155df5d25e88c0ce.js +0 -0
  492. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/795.47ab66037ef33f808f09.js +0 -0
  493. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/79d088064beb3826054f.eot +0 -0
  494. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8002.25f64485372af5158c83.js +0 -0
  495. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8010.1cf8237e9def8404f355.js +0 -0
  496. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8012.40cb006f0c180ebafa91.js +0 -0
  497. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8285.1eac7b7582569be1c3a8.js +0 -0
  498. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8319.80fcbc832e1eb20b71e7.js +0 -0
  499. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8347.573b699e3590729bfa8a.js +0 -0
  500. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8405.154ba4b17a2dec22a355.js +0 -0
  501. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8493.fc635229db38e6fc6aa2.js +0 -0
  502. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8498.27a245b23921914bf5c2.js +0 -0
  503. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8512.1af96655287fd124877b.js +0 -0
  504. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8678.dcd3dab9025b13eb9be8.js +0 -0
  505. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/870673df72e70f87c91a.woff +0 -0
  506. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8710.5fc5ecb762fb4494db02.js +0 -0
  507. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8771.327a202178f82f3b15b8.js +0 -0
  508. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8787.4d36d28dcf94bf59cbfe.js +0 -0
  509. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8805.0f14a91b024b59c039a7.js +0 -0
  510. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8823.2ff947bcd96cc0723058.js +0 -0
  511. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8875.88988caaba1e33edad5b.js +0 -0
  512. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/88b98cad3688915e50da.woff +0 -0
  513. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8ea8791754915a898a31.woff2 +0 -0
  514. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/8ea8dbb1b02e6f730f55.woff +0 -0
  515. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9.0e0cba0ccc2a4b670600.js +0 -0
  516. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9030.260bc05e28eccff70ae8.js +0 -0
  517. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9041.df39043656c7233552e4.js +0 -0
  518. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9055.bd710a8db8883a836b59.js +0 -0
  519. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9109.fa3ee74a5c0f378f4d51.js +0 -0
  520. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9192.db4337a516b7f38d1f89.js +0 -0
  521. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9222.1c2a8e69a2de57dd1984.js +0 -0
  522. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9230.58b8c42b730e1a56e69b.js +0 -0
  523. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9265.bc2b66a4502cdfcfc14f.js +0 -0
  524. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9362.823dcfac216f8057452d.js +0 -0
  525. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9409.34c33ed11e2d6f318480.js +0 -0
  526. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/942.93c8de61ea9ea08ec097.js +0 -0
  527. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9421.022dc7b4e9a2c80c32c2.js +0 -0
  528. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9445.fe5e9e5b728de8d15873.js +0 -0
  529. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9621.9cbfa52c42927bb398b4.js +0 -0
  530. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9653.d93c93e084cd5e93cd2d.js +0 -0
  531. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9674eb1bd55047179038.svg +0 -0
  532. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9738.c0234a1f7f6ac262f560.js +0 -0
  533. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9747.6dd327f4928c6989ea8a.js +0 -0
  534. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9747.6dd327f4928c6989ea8a.js.LICENSE.txt +0 -0
  535. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9826.406d2a71dc45995bc549.js +0 -0
  536. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9826.406d2a71dc45995bc549.js.LICENSE.txt +0 -0
  537. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/9834b82ad26e2a37583d.woff2 +0 -0
  538. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/a009bea404f7a500ded4.woff +0 -0
  539. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/a3b9817780214caf01e8.svg +0 -0
  540. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/af04542b29eaac04550a.woff +0 -0
  541. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/af6397503fcefbd61397.ttf +0 -0
  542. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/af96f67d7accf5fd2a4a.woff +0 -0
  543. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/b418136e3b384baaadec.woff +0 -0
  544. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/be0a084962d8066884f7.svg +0 -0
  545. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/bootstrap.js +0 -0
  546. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/c49810b53ecc0d87d802.woff +0 -0
  547. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/c56da8d69f1a0208b8e0.woff +0 -0
  548. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/cb9e9e693192413cde2b.woff +0 -0
  549. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/cda59d6efffa685830fd.ttf +0 -0
  550. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/e4299464e7b012968eed.eot +0 -0
  551. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/e42a88444448ac3d6054.woff2 +0 -0
  552. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/e8711bbb871afd8e9dea.ttf +0 -0
  553. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/f9217f66874b0c01cd8c.woff +0 -0
  554. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/static/fc6ddf5df402b263cfb1.woff +0 -0
  555. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/themes/@jupyterlab/theme-dark-extension/index.js +0 -0
  556. {jupyterlab-4.0.12.data → jupyterlab-4.1.0.data}/data/share/jupyter/lab/themes/@jupyterlab/theme-light-extension/index.js +0 -0
  557. {jupyterlab-4.0.12.dist-info → jupyterlab-4.1.0.dist-info}/WHEEL +0 -0
  558. {jupyterlab-4.0.12.dist-info → jupyterlab-4.1.0.dist-info}/entry_points.txt +0 -0
  559. {jupyterlab-4.0.12.dist-info → jupyterlab-4.1.0.dist-info}/licenses/LICENSE +0 -0
jupyterlab/_version.py CHANGED
@@ -6,7 +6,7 @@ from collections import namedtuple
6
6
  VersionInfo = namedtuple("VersionInfo", ["major", "minor", "micro", "releaselevel", "serial"])
7
7
 
8
8
  # DO NOT EDIT THIS DIRECTLY! It is managed by bumpversion
9
- version_info = VersionInfo(4, 0, 12, "final", 0)
9
+ version_info = VersionInfo(4, 1, 0, "final", 0)
10
10
 
11
11
  _specifier_ = {"alpha": "a", "beta": "b", "candidate": "rc", "final": ""}
12
12
 
@@ -43,7 +43,7 @@ class LogErrorHandler(logging.Handler):
43
43
  super().__init__(level=logging.ERROR)
44
44
  self.errored = False
45
45
 
46
- def filter(self, record): # noqa
46
+ def filter(self, record):
47
47
  # Handle known StreamClosedError from Tornado
48
48
  # These occur when we forcibly close Websockets or
49
49
  # browser connections during the test.
jupyterlab/commands.py CHANGED
@@ -18,10 +18,12 @@ import subprocess
18
18
  import sys
19
19
  import tarfile
20
20
  from copy import deepcopy
21
+ from dataclasses import dataclass
21
22
  from glob import glob
22
23
  from pathlib import Path
23
24
  from tempfile import TemporaryDirectory
24
25
  from threading import Event
26
+ from typing import FrozenSet, Optional
25
27
  from urllib.error import URLError
26
28
  from urllib.request import Request, quote, urljoin, urlopen
27
29
 
@@ -522,7 +524,7 @@ def get_app_info(app_options=None):
522
524
 
523
525
 
524
526
  def enable_extension(extension, app_options=None, level="sys_prefix"):
525
- """Enable a JupyterLab extension.
527
+ """Enable a JupyterLab extension/plugin.
526
528
 
527
529
  Returns `True` if a rebuild is recommended, `False` otherwise.
528
530
  """
@@ -531,7 +533,7 @@ def enable_extension(extension, app_options=None, level="sys_prefix"):
531
533
 
532
534
 
533
535
  def disable_extension(extension, app_options=None, level="sys_prefix"):
534
- """Disable a JupyterLab package.
536
+ """Disable a JupyterLab extension/plugin.
535
537
 
536
538
  Returns `True` if a rebuild is recommended, `False` otherwise.
537
539
  """
@@ -545,6 +547,18 @@ def check_extension(extension, installed=False, app_options=None):
545
547
  return handler.check_extension(extension, installed)
546
548
 
547
549
 
550
+ def lock_extension(extension, app_options=None, level="sys_prefix"):
551
+ """Lock a JupyterLab extension/plugin."""
552
+ handler = _AppHandler(app_options)
553
+ return handler.toggle_extension_lock(extension, True, level=level)
554
+
555
+
556
+ def unlock_extension(extension, app_options=None, level="sys_prefix"):
557
+ """Unlock a JupyterLab extension/plugin."""
558
+ handler = _AppHandler(app_options)
559
+ return handler.toggle_extension_lock(extension, False, level=level)
560
+
561
+
548
562
  def build_check(app_options=None):
549
563
  """Determine whether JupyterLab should be built.
550
564
 
@@ -624,6 +638,19 @@ class _AppHandler:
624
638
 
625
639
  # Do this last since it relies on other attributes
626
640
  self.info = self._get_app_info()
641
+ # Migrate from 4.0 which did not have "locked" status
642
+ try:
643
+ self._maybe_mirror_disabled_in_locked(level="sys_prefix")
644
+ except PermissionError:
645
+ try:
646
+ self.logger.info(
647
+ "`sys_prefix` level settings are read-only, using `user` level for migration to `lockedExtensions`"
648
+ )
649
+ self._maybe_mirror_disabled_in_locked(level="user")
650
+ except PermissionError:
651
+ self.logger.warning(
652
+ "Both `sys_prefix` and `user` level settings are read-only, cannot auto-migrate `disabledExtensions` to `lockedExtensions`"
653
+ )
627
654
 
628
655
  def install_extension(self, extension, existing=None, pin=None):
629
656
  """Install an extension package into JupyterLab.
@@ -1100,6 +1127,44 @@ class _AppHandler:
1100
1127
  write_page_config(page_config, level=level)
1101
1128
  return did_something
1102
1129
 
1130
+ def _maybe_mirror_disabled_in_locked(self, level="sys_prefix"):
1131
+ """Lock all extensions that were previously disabled.
1132
+
1133
+ This exists to facilitate migration from 4.0 (which did not include lock
1134
+ function) to 4.1 which exposes the plugin management to users in UI.
1135
+
1136
+ Returns `True` if migration happened, `False` otherwise.
1137
+ """
1138
+ app_settings_dir = osp.join(self.app_dir, "settings")
1139
+
1140
+ page_config = get_static_page_config(
1141
+ app_settings_dir=app_settings_dir, logger=self.logger, level=level
1142
+ )
1143
+ if "lockedExtensions" in page_config:
1144
+ # short-circuit if migration already happened
1145
+ return False
1146
+
1147
+ # copy disabled onto lockedExtensions, ensuring the mapping format
1148
+ disabled = page_config.get("disabledExtensions", {})
1149
+ if isinstance(disabled, list):
1150
+ disabled = {extension: True for extension in disabled}
1151
+ page_config["lockedExtensions"] = disabled
1152
+ write_page_config(page_config, level=level)
1153
+ return True
1154
+
1155
+ def toggle_extension_lock(self, extension, value, level="sys_prefix"):
1156
+ """Lock or unlock a lab extension (/plugin)."""
1157
+ app_settings_dir = osp.join(self.app_dir, "settings")
1158
+
1159
+ page_config = get_static_page_config(
1160
+ app_settings_dir=app_settings_dir, logger=self.logger, level=level
1161
+ )
1162
+
1163
+ locked = page_config.get("lockedExtensions", {})
1164
+ locked[extension] = value
1165
+
1166
+ write_page_config(page_config, level=level)
1167
+
1103
1168
  def check_extension(self, extension, check_installed_only=False):
1104
1169
  """Check if a lab extension is enabled or disabled"""
1105
1170
  self._ensure_disabled_info()
@@ -1206,6 +1271,11 @@ class _AppHandler:
1206
1271
 
1207
1272
  info["disabled"] = disabled
1208
1273
 
1274
+ locked = page_config.get("lockedExtensions", {})
1275
+ if isinstance(locked, list):
1276
+ locked = {extension: True for extension in locked}
1277
+ info["locked"] = locked
1278
+
1209
1279
  disabled_core = []
1210
1280
  for key in info["core_extensions"]:
1211
1281
  if key in info["disabled"]:
@@ -1601,17 +1671,8 @@ class _AppHandler:
1601
1671
  data = info["extensions"][name]
1602
1672
  version = data["version"]
1603
1673
  errors = info["compat_errors"][name]
1604
- extra = ""
1605
- if _is_disabled(name, info["disabled"]):
1606
- extra += " %s" % RED_DISABLED
1607
- else:
1608
- extra += " %s" % GREEN_ENABLED
1609
- if errors:
1610
- extra += " %s" % RED_X
1611
- else:
1612
- extra += " %s" % GREEN_OK
1613
- if data["is_local"]:
1614
- extra += "*"
1674
+ extra = self._compose_extra_status(name, info, data, errors)
1675
+
1615
1676
  # If we have the package name in the data, this means this extension's name is the alias name
1616
1677
  alias_package_source = data["alias_package_source"]
1617
1678
  if alias_package_source:
@@ -1648,17 +1709,7 @@ class _AppHandler:
1648
1709
  continue
1649
1710
  version = data["version"]
1650
1711
  errors = info["compat_errors"][name]
1651
- extra = ""
1652
- if _is_disabled(name, info["disabled"]):
1653
- extra += " %s" % RED_DISABLED
1654
- else:
1655
- extra += " %s" % GREEN_ENABLED
1656
- if errors:
1657
- extra += " %s" % RED_X
1658
- else:
1659
- extra += " %s" % GREEN_OK
1660
- if data["is_local"]:
1661
- extra += "*"
1712
+ extra = self._compose_extra_status(name, info, data, errors)
1662
1713
 
1663
1714
  install = data.get("install")
1664
1715
  if install:
@@ -1672,6 +1723,26 @@ class _AppHandler:
1672
1723
  # Write all errors at end:
1673
1724
  _log_multiple_compat_errors(logger, error_accumulator)
1674
1725
 
1726
+ def _compose_extra_status(self, name: str, info: dict, data: dict, errors) -> str:
1727
+ extra = ""
1728
+ if _is_disabled(name, info["disabled"]):
1729
+ extra += " %s" % RED_DISABLED
1730
+ else:
1731
+ extra += " %s" % GREEN_ENABLED
1732
+ if errors:
1733
+ extra += " %s" % RED_X
1734
+ else:
1735
+ extra += " %s" % GREEN_OK
1736
+ if data["is_local"]:
1737
+ extra += "*"
1738
+ lock_status = _is_locked(name, info["locked"])
1739
+ if lock_status.entire_extension_locked:
1740
+ extra += " 🔒 (all plugins locked)"
1741
+ elif lock_status.locked_plugins:
1742
+ plugin_list = ", ".join(sorted(lock_status.locked_plugins))
1743
+ extra += " 🔒 (plugins: %s locked)" % plugin_list
1744
+ return extra
1745
+
1675
1746
  def _read_build_config(self):
1676
1747
  """Get the build config data for the app dir."""
1677
1748
  target = pjoin(self.app_dir, "settings", "build_config.json")
@@ -2285,6 +2356,33 @@ def _is_disabled(name, disabled=None):
2285
2356
  return False
2286
2357
 
2287
2358
 
2359
+ @dataclass(frozen=True)
2360
+ class LockStatus:
2361
+ entire_extension_locked: bool
2362
+ # locked plugins are only given if extension is not locked as a whole
2363
+ locked_plugins: Optional[FrozenSet[str]] = None
2364
+
2365
+
2366
+ def _is_locked(name, locked=None) -> LockStatus:
2367
+ """Test whether the package is locked.
2368
+
2369
+ If only a subset of extension plugins is locked return them.
2370
+ """
2371
+ locked = locked or {}
2372
+ locked_plugins = set()
2373
+ for lock, value in locked.items():
2374
+ # skip packages explicitly marked as not locked
2375
+ if value is False:
2376
+ continue
2377
+ if name == lock:
2378
+ return LockStatus(entire_extension_locked=True)
2379
+ extension_part = lock.partition(":")[0]
2380
+ if name == extension_part:
2381
+ locked_plugins.add(lock)
2382
+
2383
+ return LockStatus(entire_extension_locked=False, locked_plugins=locked_plugins)
2384
+
2385
+
2288
2386
  def _format_compatibility_errors(name, version, errors):
2289
2387
  """Format a message for compatibility errors."""
2290
2388
  msgs = []
@@ -5,11 +5,13 @@
5
5
 
6
6
  import json
7
7
  import re
8
- from dataclasses import dataclass, field, replace
8
+ from dataclasses import dataclass, field, fields, replace
9
9
  from pathlib import Path
10
- from typing import Dict, List, Optional, Set, Tuple
10
+ from typing import Dict, FrozenSet, List, Optional, Set, Tuple, Union
11
11
 
12
12
  import tornado
13
+ from jupyterlab_server.translation_utils import translator
14
+ from traitlets import Enum
13
15
  from traitlets.config import Configurable, LoggingConfigurable
14
16
 
15
17
  from jupyterlab.commands import (
@@ -92,7 +94,7 @@ class ExtensionPackage:
92
94
  latest_version: str = ""
93
95
  status: str = "ok"
94
96
  author: Optional[str] = None
95
- license: Optional[str] = None # noqa
97
+ license: Optional[str] = None
96
98
  bug_tracker_url: Optional[str] = None
97
99
  documentation_url: Optional[str] = None
98
100
  package_manager_url: Optional[str] = None
@@ -116,8 +118,23 @@ class ActionResult:
116
118
  needs_restart: List[str] = field(default_factory=list)
117
119
 
118
120
 
119
- @dataclass
120
- class ExtensionManagerOptions:
121
+ @dataclass(frozen=True)
122
+ class PluginManagerOptions:
123
+ """Plugin manager options.
124
+
125
+ Attributes:
126
+ lock_all: Whether to lock (prevent enabling/disabling) all plugins.
127
+ lock_rules: A list of plugins or extensions that cannot be toggled.
128
+ If extension name is provided, all its plugins will be disabled.
129
+ The plugin names need to follow colon-separated format of `extension:plugin`.
130
+ """
131
+
132
+ lock_rules: FrozenSet[str] = field(default_factory=frozenset)
133
+ lock_all: bool = False
134
+
135
+
136
+ @dataclass(frozen=True)
137
+ class ExtensionManagerOptions(PluginManagerOptions):
121
138
  """Extension manager options.
122
139
 
123
140
  Attributes:
@@ -161,7 +178,126 @@ class ExtensionsCache:
161
178
  last_page: int = 1
162
179
 
163
180
 
164
- class ExtensionManager(LoggingConfigurable):
181
+ class PluginManager(LoggingConfigurable):
182
+ """Plugin manager enables or disables plugins unless locked.
183
+
184
+ It can also disable/enable all plugins in an extension.
185
+
186
+ Args:
187
+ app_options: Application options
188
+ ext_options: Plugin manager (subset of extension manager) options
189
+ parent: Configurable parent
190
+
191
+ Attributes:
192
+ app_options: Application options
193
+ options: Plugin manager options
194
+ """
195
+
196
+ level = Enum(
197
+ values=["sys_prefix", "user", "system"],
198
+ default_value="sys_prefix",
199
+ help="Level at which to manage plugins: sys_prefix, user, system",
200
+ ).tag(config=True)
201
+
202
+ def __init__(
203
+ self,
204
+ app_options: Optional[dict] = None,
205
+ ext_options: Optional[dict] = None,
206
+ parent: Optional[Configurable] = None,
207
+ ) -> None:
208
+ super().__init__(parent=parent)
209
+ self.log.debug(
210
+ "Plugins in %s will managed on the %s level", self.__class__.__name__, self.level
211
+ )
212
+ self.app_options = _ensure_options(app_options)
213
+ plugin_options_field = {f.name for f in fields(PluginManagerOptions)}
214
+ plugin_options = {
215
+ option: value
216
+ for option, value in (ext_options or {}).items()
217
+ if option in plugin_options_field
218
+ }
219
+ self.options = PluginManagerOptions(**plugin_options)
220
+
221
+ async def plugin_locks(self) -> dict:
222
+ """Get information about locks on plugin enabling/disabling"""
223
+ return {
224
+ "lockRules": list(self.options.lock_rules),
225
+ "allLocked": self.options.lock_all,
226
+ }
227
+
228
+ def _find_locked(self, plugins_or_extensions: List[str]) -> FrozenSet[str]:
229
+ """Find a subset of plugins (or extensions) which are locked"""
230
+ if self.options.lock_all:
231
+ return set(plugins_or_extensions)
232
+ locked_subset = set()
233
+ extensions_with_locked_plugins = {
234
+ plugin.split(":")[0] for plugin in self.options.lock_rules
235
+ }
236
+ for plugin in plugins_or_extensions:
237
+ if ":" in plugin:
238
+ # check directly if this is a plugin identifier (has colon)
239
+ if plugin in self.options.lock_rules:
240
+ locked_subset.add(plugin)
241
+ elif plugin in extensions_with_locked_plugins:
242
+ # this is an extension - we need to check for >any< plugin
243
+ # belonging to said extension
244
+ locked_subset.add(plugin)
245
+ return locked_subset
246
+
247
+ async def disable(self, plugins: Union[str, List[str]]) -> ActionResult:
248
+ """Disable a set of plugins (or an extension).
249
+
250
+ Args:
251
+ plugins: The list of plugins to disable
252
+ Returns:
253
+ The action result
254
+ """
255
+ plugins = plugins if isinstance(plugins, list) else [plugins]
256
+ locked = self._find_locked(plugins)
257
+ trans = translator.load("jupyterlab")
258
+ if locked:
259
+ return ActionResult(
260
+ status="error",
261
+ message=trans.gettext(
262
+ "The following plugins cannot be disabled as they are locked: "
263
+ )
264
+ + ", ".join(locked),
265
+ )
266
+ try:
267
+ for plugin in plugins:
268
+ disable_extension(plugin, app_options=self.app_options, level=self.level)
269
+ return ActionResult(status="ok", needs_restart=["frontend"])
270
+ except Exception as err:
271
+ return ActionResult(status="error", message=repr(err))
272
+
273
+ async def enable(self, plugins: Union[str, List[str]]) -> ActionResult:
274
+ """Enable a set of plugins (or an extension).
275
+
276
+ Args:
277
+ plugins: The list of plugins to enable
278
+ Returns:
279
+ The action result
280
+ """
281
+ plugins = plugins if isinstance(plugins, list) else [plugins]
282
+ locked = self._find_locked(plugins)
283
+ trans = translator.load("jupyterlab")
284
+ if locked:
285
+ return ActionResult(
286
+ status="error",
287
+ message=trans.gettext(
288
+ "The following plugins cannot be enabled as they are locked: "
289
+ )
290
+ + ", ".join(locked),
291
+ )
292
+ try:
293
+ for plugin in plugins:
294
+ enable_extension(plugin, app_options=self.app_options, level=self.level)
295
+ return ActionResult(status="ok", needs_restart=["frontend"])
296
+ except Exception as err:
297
+ return ActionResult(status="error", message=repr(err))
298
+
299
+
300
+ class ExtensionManager(PluginManager):
165
301
  """Base abstract extension manager.
166
302
 
167
303
  Note:
@@ -195,12 +331,10 @@ class ExtensionManager(LoggingConfigurable):
195
331
  ext_options: Optional[dict] = None,
196
332
  parent: Optional[Configurable] = None,
197
333
  ) -> None:
198
- super().__init__(parent=parent)
199
- app_options = _ensure_options(app_options)
200
- self.log = app_options.logger
201
- self.app_dir = Path(app_options.app_dir)
202
- self.core_config = app_options.core_config
203
- self.app_options = app_options
334
+ super().__init__(app_options=app_options, ext_options=ext_options, parent=parent)
335
+ self.log = self.app_options.logger
336
+ self.app_dir = Path(self.app_options.app_dir)
337
+ self.core_config = self.app_options.core_config
204
338
  self.options = ExtensionManagerOptions(**(ext_options or {}))
205
339
  self._extensions_cache: Dict[Optional[str], ExtensionsCache] = {}
206
340
  self._listings_cache: Optional[dict] = None
@@ -286,34 +420,6 @@ class ExtensionManager(LoggingConfigurable):
286
420
  """
287
421
  raise NotImplementedError()
288
422
 
289
- async def disable(self, extension: str) -> ActionResult:
290
- """Disable an extension.
291
-
292
- Args:
293
- extension: The extension name
294
- Returns:
295
- The action result
296
- """
297
- try:
298
- disable_extension(extension, app_options=self.app_options)
299
- return ActionResult(status="ok", needs_restart=["frontend"])
300
- except Exception as err:
301
- return ActionResult(status="error", message=repr(err))
302
-
303
- async def enable(self, extension: str) -> ActionResult:
304
- """Enable an extension.
305
-
306
- Args:
307
- extension: The extension name
308
- Returns:
309
- The action result
310
- """
311
- try:
312
- enable_extension(extension, app_options=self.app_options)
313
- return ActionResult(status="ok", needs_restart=["frontend"])
314
- except Exception as err:
315
- return ActionResult(status="error", message=repr(err))
316
-
317
423
  @staticmethod
318
424
  def get_semver_version(version: str) -> str:
319
425
  """Convert a Python version to Semver version.