solara 1.30.1__py2.py3-none-any.whl → 1.31.0__py2.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 (438) hide show
  1. {solara-1.30.1.dist-info → solara-1.31.0.dist-info}/METADATA +7 -42
  2. solara-1.31.0.dist-info/RECORD +5 -0
  3. {solara-1.30.1.dist-info → solara-1.31.0.dist-info}/WHEEL +1 -1
  4. {solara/template/portal → solara-1.31.0.dist-info/licenses}/LICENSE +1 -1
  5. solara/__init__.py +0 -123
  6. solara/__main__.py +0 -734
  7. solara/alias.py +0 -6
  8. solara/autorouting.py +0 -545
  9. solara/cache.py +0 -294
  10. solara/checks.html +0 -71
  11. solara/checks.py +0 -224
  12. solara/comm.py +0 -28
  13. solara/components/__init__.py +0 -59
  14. solara/components/alert.py +0 -155
  15. solara/components/applayout.py +0 -393
  16. solara/components/button.py +0 -85
  17. solara/components/card.py +0 -87
  18. solara/components/checkbox.py +0 -50
  19. solara/components/code_highlight_css.py +0 -11
  20. solara/components/code_highlight_css.vue +0 -63
  21. solara/components/columns.py +0 -159
  22. solara/components/component_vue.py +0 -110
  23. solara/components/cross_filter.py +0 -335
  24. solara/components/dataframe.py +0 -546
  25. solara/components/datatable.py +0 -221
  26. solara/components/datatable.vue +0 -175
  27. solara/components/details.py +0 -21
  28. solara/components/download.vue +0 -35
  29. solara/components/echarts.py +0 -75
  30. solara/components/echarts.vue +0 -128
  31. solara/components/figure_altair.py +0 -39
  32. solara/components/file_browser.py +0 -182
  33. solara/components/file_download.py +0 -199
  34. solara/components/file_drop.py +0 -139
  35. solara/components/file_drop.vue +0 -83
  36. solara/components/file_list_widget.vue +0 -78
  37. solara/components/head.py +0 -27
  38. solara/components/head_tag.py +0 -49
  39. solara/components/head_tag.vue +0 -60
  40. solara/components/image.py +0 -173
  41. solara/components/input.py +0 -440
  42. solara/components/link.py +0 -55
  43. solara/components/markdown.py +0 -371
  44. solara/components/markdown_editor.py +0 -25
  45. solara/components/markdown_editor.vue +0 -362
  46. solara/components/matplotlib.py +0 -74
  47. solara/components/meta.py +0 -47
  48. solara/components/misc.py +0 -333
  49. solara/components/pivot_table.py +0 -258
  50. solara/components/pivot_table.vue +0 -158
  51. solara/components/progress.py +0 -47
  52. solara/components/select.py +0 -186
  53. solara/components/select.vue +0 -27
  54. solara/components/slider.py +0 -442
  55. solara/components/slider_date.vue +0 -56
  56. solara/components/spinner-solara.vue +0 -105
  57. solara/components/spinner.py +0 -30
  58. solara/components/sql_code.py +0 -33
  59. solara/components/sql_code.vue +0 -128
  60. solara/components/style.py +0 -105
  61. solara/components/switch.py +0 -68
  62. solara/components/tab_navigation.py +0 -37
  63. solara/components/title.py +0 -90
  64. solara/components/title.vue +0 -38
  65. solara/components/togglebuttons.py +0 -202
  66. solara/components/tooltip.py +0 -61
  67. solara/datatypes.py +0 -143
  68. solara/express.py +0 -241
  69. solara/hooks/__init__.py +0 -4
  70. solara/hooks/dataframe.py +0 -99
  71. solara/hooks/misc.py +0 -263
  72. solara/hooks/use_reactive.py +0 -129
  73. solara/hooks/use_thread.py +0 -129
  74. solara/kitchensink.py +0 -8
  75. solara/lab/__init__.py +0 -34
  76. solara/lab/components/__init__.py +0 -6
  77. solara/lab/components/chat.py +0 -203
  78. solara/lab/components/confirmation_dialog.py +0 -165
  79. solara/lab/components/cross_filter.py +0 -7
  80. solara/lab/components/input_date.py +0 -298
  81. solara/lab/components/menu.py +0 -181
  82. solara/lab/components/menu.vue +0 -38
  83. solara/lab/components/tabs.py +0 -274
  84. solara/lab/components/theming.py +0 -98
  85. solara/lab/components/theming.vue +0 -72
  86. solara/lab/hooks/__init__.py +0 -0
  87. solara/lab/hooks/dataframe.py +0 -12
  88. solara/lab/toestand.py +0 -3
  89. solara/lab/utils/__init__.py +0 -2
  90. solara/lab/utils/cookies.py +0 -5
  91. solara/lab/utils/dataframe.py +0 -115
  92. solara/lab/utils/headers.py +0 -5
  93. solara/layout.py +0 -44
  94. solara/minisettings.py +0 -133
  95. solara/py.typed +0 -0
  96. solara/reactive.py +0 -93
  97. solara/routing.py +0 -268
  98. solara/scope/__init__.py +0 -88
  99. solara/scope/types.py +0 -55
  100. solara/server/__init__.py +0 -0
  101. solara/server/app.py +0 -490
  102. solara/server/assets/custom.css +0 -1
  103. solara/server/assets/custom.js +0 -1
  104. solara/server/assets/favicon.png +0 -0
  105. solara/server/assets/favicon.svg +0 -5
  106. solara/server/assets/style.css +0 -1665
  107. solara/server/assets/theme-dark.css +0 -437
  108. solara/server/assets/theme-light.css +0 -420
  109. solara/server/assets/theme.js +0 -3
  110. solara/server/cdn_helper.py +0 -77
  111. solara/server/esm.py +0 -69
  112. solara/server/fastapi.py +0 -5
  113. solara/server/flask.py +0 -286
  114. solara/server/jupyter/__init__.py +0 -2
  115. solara/server/jupyter/cdn_handler.py +0 -28
  116. solara/server/jupyter/server_extension.py +0 -29
  117. solara/server/jupytertools.py +0 -46
  118. solara/server/kernel.py +0 -319
  119. solara/server/kernel_context.py +0 -396
  120. solara/server/patch.py +0 -552
  121. solara/server/reload.py +0 -242
  122. solara/server/server.py +0 -437
  123. solara/server/settings.py +0 -212
  124. solara/server/shell.py +0 -240
  125. solara/server/starlette.py +0 -597
  126. solara/server/static/ansi.js +0 -270
  127. solara/server/static/highlight-dark.css +0 -82
  128. solara/server/static/highlight.css +0 -43
  129. solara/server/static/main-vuetify.js +0 -260
  130. solara/server/static/main.js +0 -163
  131. solara/server/static/solara_bootstrap.py +0 -129
  132. solara/server/static/sun.svg +0 -23
  133. solara/server/static/webworker.js +0 -42
  134. solara/server/telemetry.py +0 -212
  135. solara/server/templates/index.html.j2 +0 -1
  136. solara/server/templates/loader-plain.css +0 -11
  137. solara/server/templates/loader-plain.html +0 -20
  138. solara/server/templates/loader-solara.css +0 -111
  139. solara/server/templates/loader-solara.html +0 -40
  140. solara/server/templates/plain.html +0 -82
  141. solara/server/templates/solara.html.j2 +0 -446
  142. solara/server/threaded.py +0 -75
  143. solara/server/utils.py +0 -30
  144. solara/server/websocket.py +0 -44
  145. solara/settings.py +0 -56
  146. solara/tasks.py +0 -847
  147. solara/template/button.py +0 -16
  148. solara/template/markdown.py +0 -42
  149. solara/template/portal/.flake8 +0 -6
  150. solara/template/portal/.pre-commit-config.yaml +0 -28
  151. solara/template/portal/Procfile +0 -7
  152. solara/template/portal/mypy.ini +0 -3
  153. solara/template/portal/pyproject.toml +0 -26
  154. solara/template/portal/solara_portal/__init__.py +0 -3
  155. solara/template/portal/solara_portal/components/__init__.py +0 -2
  156. solara/template/portal/solara_portal/components/article.py +0 -28
  157. solara/template/portal/solara_portal/components/data.py +0 -28
  158. solara/template/portal/solara_portal/components/header.py +0 -6
  159. solara/template/portal/solara_portal/components/layout.py +0 -6
  160. solara/template/portal/solara_portal/content/articles/equis-in-vidi.md +0 -85
  161. solara/template/portal/solara_portal/content/articles/substiterat-vati.md +0 -70
  162. solara/template/portal/solara_portal/data.py +0 -60
  163. solara/template/portal/solara_portal/pages/__init__.py +0 -67
  164. solara/template/portal/solara_portal/pages/article/__init__.py +0 -26
  165. solara/template/portal/solara_portal/pages/tabular.py +0 -29
  166. solara/template/portal/solara_portal/pages/viz/__init__.py +0 -69
  167. solara/template/portal/solara_portal/pages/viz/overview.py +0 -14
  168. solara/test/__init__.py +0 -0
  169. solara/test/pytest_plugin.py +0 -698
  170. solara/toestand.py +0 -772
  171. solara/util.py +0 -308
  172. solara/website/__init__.py +0 -0
  173. solara/website/assets/custom.css +0 -462
  174. solara/website/assets/images/logo-small.png +0 -0
  175. solara/website/assets/images/logo.svg +0 -17
  176. solara/website/assets/images/logo_white.svg +0 -50
  177. solara/website/assets/theme.js +0 -8
  178. solara/website/components/__init__.py +0 -5
  179. solara/website/components/algolia.vue +0 -24
  180. solara/website/components/algolia_api.vue +0 -157
  181. solara/website/components/docs.py +0 -118
  182. solara/website/components/header.py +0 -72
  183. solara/website/components/hero.py +0 -15
  184. solara/website/components/mailchimp.py +0 -12
  185. solara/website/components/mailchimp.vue +0 -47
  186. solara/website/components/markdown.py +0 -30
  187. solara/website/components/notebook.py +0 -172
  188. solara/website/pages/__init__.py +0 -575
  189. solara/website/pages/apps/__init__.py +0 -16
  190. solara/website/pages/apps/authorization/__init__.py +0 -118
  191. solara/website/pages/apps/authorization/admin.py +0 -12
  192. solara/website/pages/apps/authorization/users.py +0 -12
  193. solara/website/pages/apps/jupyter-dashboard-1.py +0 -116
  194. solara/website/pages/apps/layout-demo.py +0 -40
  195. solara/website/pages/apps/multipage/__init__.py +0 -38
  196. solara/website/pages/apps/multipage/page1.py +0 -26
  197. solara/website/pages/apps/multipage/page2.py +0 -34
  198. solara/website/pages/apps/scatter.py +0 -136
  199. solara/website/pages/apps/scrolling.py +0 -63
  200. solara/website/pages/apps/tutorial-streamlit.py +0 -18
  201. solara/website/pages/changelog/__init__.py +0 -8
  202. solara/website/pages/changelog/changelog.md +0 -195
  203. solara/website/pages/contact/__init__.py +0 -8
  204. solara/website/pages/contact/contact.md +0 -17
  205. solara/website/pages/doc_use_download.py +0 -85
  206. solara/website/pages/documentation/__init__.py +0 -184
  207. solara/website/pages/documentation/advanced/__init__.py +0 -9
  208. solara/website/pages/documentation/advanced/content/00-overview.md +0 -1
  209. solara/website/pages/documentation/advanced/content/10-howto/00-overview.md +0 -6
  210. solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md +0 -196
  211. solara/website/pages/documentation/advanced/content/10-howto/20-layout.md +0 -125
  212. solara/website/pages/documentation/advanced/content/10-howto/30-testing.md +0 -154
  213. solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md +0 -69
  214. solara/website/pages/documentation/advanced/content/10-howto/40-embed.md +0 -49
  215. solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md +0 -124
  216. solara/website/pages/documentation/advanced/content/20-understanding/00-introduction.md +0 -10
  217. solara/website/pages/documentation/advanced/content/20-understanding/05-ipywidgets.md +0 -35
  218. solara/website/pages/documentation/advanced/content/20-understanding/06-ipyvuetify.md +0 -42
  219. solara/website/pages/documentation/advanced/content/20-understanding/10-reacton.md +0 -28
  220. solara/website/pages/documentation/advanced/content/20-understanding/12-reacton-basics.md +0 -108
  221. solara/website/pages/documentation/advanced/content/20-understanding/15-anatomy.md +0 -23
  222. solara/website/pages/documentation/advanced/content/20-understanding/17-rules-of-hooks.md +0 -7
  223. solara/website/pages/documentation/advanced/content/20-understanding/18-containers.md +0 -166
  224. solara/website/pages/documentation/advanced/content/20-understanding/20-solara.md +0 -18
  225. solara/website/pages/documentation/advanced/content/20-understanding/40-routing.md +0 -240
  226. solara/website/pages/documentation/advanced/content/20-understanding/50-solara-server.md +0 -86
  227. solara/website/pages/documentation/advanced/content/20-understanding/60-voila.md +0 -12
  228. solara/website/pages/documentation/advanced/content/30-enterprise/00-overview.md +0 -1
  229. solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md +0 -171
  230. solara/website/pages/documentation/advanced/content/40-development/00-overview.md +0 -0
  231. solara/website/pages/documentation/advanced/content/40-development/01-contribute.md +0 -45
  232. solara/website/pages/documentation/advanced/content/40-development/10-setup.md +0 -76
  233. solara/website/pages/documentation/api/__init__.py +0 -19
  234. solara/website/pages/documentation/api/cross_filter/__init__.py +0 -9
  235. solara/website/pages/documentation/api/cross_filter/cross_filter_dataframe.py +0 -23
  236. solara/website/pages/documentation/api/cross_filter/cross_filter_report.py +0 -22
  237. solara/website/pages/documentation/api/cross_filter/cross_filter_select.py +0 -22
  238. solara/website/pages/documentation/api/cross_filter/cross_filter_slider.py +0 -22
  239. solara/website/pages/documentation/api/hooks/__init__.py +0 -9
  240. solara/website/pages/documentation/api/hooks/use_cross_filter.py +0 -25
  241. solara/website/pages/documentation/api/hooks/use_dark_effective.py +0 -13
  242. solara/website/pages/documentation/api/hooks/use_effect.md +0 -43
  243. solara/website/pages/documentation/api/hooks/use_effect.py +0 -9
  244. solara/website/pages/documentation/api/hooks/use_exception.py +0 -33
  245. solara/website/pages/documentation/api/hooks/use_memo.md +0 -16
  246. solara/website/pages/documentation/api/hooks/use_memo.py +0 -9
  247. solara/website/pages/documentation/api/hooks/use_previous.py +0 -32
  248. solara/website/pages/documentation/api/hooks/use_reactive.py +0 -15
  249. solara/website/pages/documentation/api/hooks/use_state.py +0 -11
  250. solara/website/pages/documentation/api/hooks/use_state_or_update.py +0 -68
  251. solara/website/pages/documentation/api/hooks/use_thread.md +0 -58
  252. solara/website/pages/documentation/api/hooks/use_thread.py +0 -44
  253. solara/website/pages/documentation/api/hooks/use_trait_observe.py +0 -13
  254. solara/website/pages/documentation/api/routing/__init__.py +0 -9
  255. solara/website/pages/documentation/api/routing/generate_routes.py +0 -11
  256. solara/website/pages/documentation/api/routing/generate_routes_directory.py +0 -11
  257. solara/website/pages/documentation/api/routing/resolve_path.py +0 -36
  258. solara/website/pages/documentation/api/routing/route.py +0 -32
  259. solara/website/pages/documentation/api/routing/use_route.py +0 -80
  260. solara/website/pages/documentation/api/routing/use_router.py +0 -15
  261. solara/website/pages/documentation/api/utilities/__init__.py +0 -9
  262. solara/website/pages/documentation/api/utilities/component_vue.py +0 -11
  263. solara/website/pages/documentation/api/utilities/computed.py +0 -16
  264. solara/website/pages/documentation/api/utilities/display.py +0 -15
  265. solara/website/pages/documentation/api/utilities/get_kernel_id.py +0 -16
  266. solara/website/pages/documentation/api/utilities/get_session_id.py +0 -16
  267. solara/website/pages/documentation/api/utilities/memoize.py +0 -36
  268. solara/website/pages/documentation/api/utilities/on_kernel_start.py +0 -27
  269. solara/website/pages/documentation/api/utilities/reactive.py +0 -15
  270. solara/website/pages/documentation/api/utilities/widget.py +0 -104
  271. solara/website/pages/documentation/components/__init__.py +0 -12
  272. solara/website/pages/documentation/components/advanced/__init__.py +0 -9
  273. solara/website/pages/documentation/components/advanced/link.py +0 -28
  274. solara/website/pages/documentation/components/advanced/meta.py +0 -21
  275. solara/website/pages/documentation/components/advanced/style.py +0 -44
  276. solara/website/pages/documentation/components/common.py +0 -9
  277. solara/website/pages/documentation/components/data/__init__.py +0 -9
  278. solara/website/pages/documentation/components/data/dataframe.py +0 -44
  279. solara/website/pages/documentation/components/data/pivot_table.py +0 -81
  280. solara/website/pages/documentation/components/enterprise/__init__.py +0 -9
  281. solara/website/pages/documentation/components/enterprise/avatar.py +0 -19
  282. solara/website/pages/documentation/components/enterprise/avatar_menu.py +0 -20
  283. solara/website/pages/documentation/components/input/__init__.py +0 -9
  284. solara/website/pages/documentation/components/input/button.py +0 -22
  285. solara/website/pages/documentation/components/input/checkbox.py +0 -12
  286. solara/website/pages/documentation/components/input/file_browser.py +0 -33
  287. solara/website/pages/documentation/components/input/file_drop.py +0 -75
  288. solara/website/pages/documentation/components/input/input.py +0 -18
  289. solara/website/pages/documentation/components/input/select.py +0 -21
  290. solara/website/pages/documentation/components/input/slider.py +0 -28
  291. solara/website/pages/documentation/components/input/switch.py +0 -12
  292. solara/website/pages/documentation/components/input/togglebuttons.py +0 -20
  293. solara/website/pages/documentation/components/lab/__init__.py +0 -9
  294. solara/website/pages/documentation/components/lab/chat.py +0 -108
  295. solara/website/pages/documentation/components/lab/confirmation_dialog.py +0 -55
  296. solara/website/pages/documentation/components/lab/cookies_headers.py +0 -48
  297. solara/website/pages/documentation/components/lab/input_date.py +0 -19
  298. solara/website/pages/documentation/components/lab/menu.py +0 -21
  299. solara/website/pages/documentation/components/lab/tab.py +0 -24
  300. solara/website/pages/documentation/components/lab/tabs.py +0 -44
  301. solara/website/pages/documentation/components/lab/task.py +0 -12
  302. solara/website/pages/documentation/components/lab/theming.py +0 -72
  303. solara/website/pages/documentation/components/lab/use_task.py +0 -12
  304. solara/website/pages/documentation/components/layout/__init__.py +0 -9
  305. solara/website/pages/documentation/components/layout/app_bar.py +0 -15
  306. solara/website/pages/documentation/components/layout/app_bar_title.py +0 -15
  307. solara/website/pages/documentation/components/layout/app_layout.py +0 -23
  308. solara/website/pages/documentation/components/layout/card.py +0 -14
  309. solara/website/pages/documentation/components/layout/card_actions.py +0 -15
  310. solara/website/pages/documentation/components/layout/column.py +0 -29
  311. solara/website/pages/documentation/components/layout/columns.py +0 -26
  312. solara/website/pages/documentation/components/layout/columns_responsive.py +0 -67
  313. solara/website/pages/documentation/components/layout/griddraggable.py +0 -61
  314. solara/website/pages/documentation/components/layout/gridfixed.py +0 -21
  315. solara/website/pages/documentation/components/layout/hbox.py +0 -17
  316. solara/website/pages/documentation/components/layout/row.py +0 -29
  317. solara/website/pages/documentation/components/layout/sidebar.py +0 -23
  318. solara/website/pages/documentation/components/layout/vbox.py +0 -19
  319. solara/website/pages/documentation/components/output/__init__.py +0 -9
  320. solara/website/pages/documentation/components/output/file_download.py +0 -12
  321. solara/website/pages/documentation/components/output/html.py +0 -22
  322. solara/website/pages/documentation/components/output/image.py +0 -12
  323. solara/website/pages/documentation/components/output/markdown.py +0 -59
  324. solara/website/pages/documentation/components/output/markdown_editor.py +0 -53
  325. solara/website/pages/documentation/components/output/sql_code.py +0 -84
  326. solara/website/pages/documentation/components/output/tooltip.py +0 -12
  327. solara/website/pages/documentation/components/page/__init__.py +0 -9
  328. solara/website/pages/documentation/components/page/head.py +0 -19
  329. solara/website/pages/documentation/components/page/title.py +0 -28
  330. solara/website/pages/documentation/components/status/__init__.py +0 -9
  331. solara/website/pages/documentation/components/status/error.py +0 -40
  332. solara/website/pages/documentation/components/status/info.py +0 -40
  333. solara/website/pages/documentation/components/status/progress.py +0 -10
  334. solara/website/pages/documentation/components/status/spinner.py +0 -10
  335. solara/website/pages/documentation/components/status/success.py +0 -40
  336. solara/website/pages/documentation/components/status/warning.py +0 -47
  337. solara/website/pages/documentation/components/viz/__init__.py +0 -9
  338. solara/website/pages/documentation/components/viz/altair.py +0 -44
  339. solara/website/pages/documentation/components/viz/echarts.py +0 -78
  340. solara/website/pages/documentation/components/viz/matplotlib.py +0 -32
  341. solara/website/pages/documentation/components/viz/plotly.py +0 -63
  342. solara/website/pages/documentation/components/viz/plotly_express.py +0 -41
  343. solara/website/pages/documentation/examples/__init__.py +0 -52
  344. solara/website/pages/documentation/examples/ai/__init__.py +0 -10
  345. solara/website/pages/documentation/examples/ai/chatbot.py +0 -96
  346. solara/website/pages/documentation/examples/ai/tokenizer.py +0 -106
  347. solara/website/pages/documentation/examples/basics/__init__.py +0 -2
  348. solara/website/pages/documentation/examples/basics/sine.py +0 -28
  349. solara/website/pages/documentation/examples/fullscreen/__init__.py +0 -9
  350. solara/website/pages/documentation/examples/fullscreen/authorization.py +0 -3
  351. solara/website/pages/documentation/examples/fullscreen/layout_demo.py +0 -3
  352. solara/website/pages/documentation/examples/fullscreen/multipage.py +0 -3
  353. solara/website/pages/documentation/examples/fullscreen/scatter.py +0 -3
  354. solara/website/pages/documentation/examples/fullscreen/scrolling.py +0 -3
  355. solara/website/pages/documentation/examples/fullscreen/tutorial_streamlit.py +0 -3
  356. solara/website/pages/documentation/examples/general/__init__.py +0 -9
  357. solara/website/pages/documentation/examples/general/custom_storage.py +0 -69
  358. solara/website/pages/documentation/examples/general/deploy_model.py +0 -114
  359. solara/website/pages/documentation/examples/general/live_update.py +0 -38
  360. solara/website/pages/documentation/examples/general/login_oauth.py +0 -76
  361. solara/website/pages/documentation/examples/general/mycard.vue +0 -58
  362. solara/website/pages/documentation/examples/general/pokemon_search.py +0 -51
  363. solara/website/pages/documentation/examples/general/vue_component.py +0 -50
  364. solara/website/pages/documentation/examples/ipycanvas.py +0 -49
  365. solara/website/pages/documentation/examples/libraries/__init__.py +0 -9
  366. solara/website/pages/documentation/examples/libraries/altair.py +0 -63
  367. solara/website/pages/documentation/examples/libraries/bqplot.py +0 -39
  368. solara/website/pages/documentation/examples/libraries/ipyleaflet.py +0 -32
  369. solara/website/pages/documentation/examples/libraries/ipyleaflet_advanced.py +0 -65
  370. solara/website/pages/documentation/examples/utilities/__init__.py +0 -9
  371. solara/website/pages/documentation/examples/utilities/calculator.py +0 -157
  372. solara/website/pages/documentation/examples/utilities/countdown_timer.py +0 -64
  373. solara/website/pages/documentation/examples/utilities/todo.py +0 -195
  374. solara/website/pages/documentation/examples/visualization/__init__.py +0 -6
  375. solara/website/pages/documentation/examples/visualization/annotator.py +0 -68
  376. solara/website/pages/documentation/examples/visualization/linked_views.py +0 -84
  377. solara/website/pages/documentation/examples/visualization/plotly.py +0 -43
  378. solara/website/pages/documentation/faq/__init__.py +0 -12
  379. solara/website/pages/documentation/faq/content/99-faq.md +0 -76
  380. solara/website/pages/documentation/getting_started/__init__.py +0 -9
  381. solara/website/pages/documentation/getting_started/content/00-quickstart.md +0 -89
  382. solara/website/pages/documentation/getting_started/content/01-introduction.md +0 -125
  383. solara/website/pages/documentation/getting_started/content/02-installing.md +0 -85
  384. solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md +0 -14
  385. solara/website/pages/documentation/getting_started/content/04-tutorials/10_data_science.py +0 -13
  386. solara/website/pages/documentation/getting_started/content/04-tutorials/20-web-app.md +0 -89
  387. solara/website/pages/documentation/getting_started/content/04-tutorials/30-ipywidgets.md +0 -124
  388. solara/website/pages/documentation/getting_started/content/04-tutorials/40-streamlit.md +0 -146
  389. solara/website/pages/documentation/getting_started/content/04-tutorials/50-dash.md +0 -144
  390. solara/website/pages/documentation/getting_started/content/04-tutorials/60-jupyter-dashboard-part1.py +0 -64
  391. solara/website/pages/documentation/getting_started/content/04-tutorials/SF_crime_sample.csv.gz +0 -0
  392. solara/website/pages/documentation/getting_started/content/04-tutorials/_data_science.ipynb +0 -445
  393. solara/website/pages/documentation/getting_started/content/04-tutorials/_jupyter_dashboard_1.ipynb +0 -1000
  394. solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md +0 -11
  395. solara/website/pages/documentation/getting_started/content/05-fundamentals/10-components.md +0 -223
  396. solara/website/pages/documentation/getting_started/content/05-fundamentals/50-state-management.md +0 -88
  397. solara/website/pages/documentation/getting_started/content/06-reference/00-overview.md +0 -3
  398. solara/website/pages/documentation/getting_started/content/06-reference/40-static_files.md +0 -31
  399. solara/website/pages/documentation/getting_started/content/06-reference/41-asset-files.md +0 -36
  400. solara/website/pages/documentation/getting_started/content/06-reference/60-static-site-generation.md +0 -59
  401. solara/website/pages/documentation/getting_started/content/06-reference/70-search.md +0 -34
  402. solara/website/pages/documentation/getting_started/content/06-reference/80-reloading.md +0 -34
  403. solara/website/pages/documentation/getting_started/content/06-reference/90-notebook-support.md +0 -7
  404. solara/website/pages/documentation/getting_started/content/06-reference/95-caching.md +0 -148
  405. solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md +0 -7
  406. solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md +0 -273
  407. solara/website/pages/documentation/getting_started/content/07-deploying/20-cloud-hosted.md +0 -80
  408. solara/website/pages/documentation/getting_started/content/80-what-is-lab.md +0 -7
  409. solara/website/pages/documentation/getting_started/content/90-troubleshoot.md +0 -26
  410. solara/website/pages/docutils.py +0 -38
  411. solara/website/pages/showcase/__init__.py +0 -105
  412. solara/website/pages/showcase/domino_code_assist.py +0 -60
  413. solara/website/pages/showcase/planeto_tessa.py +0 -19
  414. solara/website/pages/showcase/solara_dev.py +0 -54
  415. solara/website/pages/showcase/solarathon_2023_team_2.py +0 -22
  416. solara/website/pages/showcase/solarathon_2023_team_4.py +0 -22
  417. solara/website/pages/showcase/solarathon_2023_team_5.py +0 -23
  418. solara/website/pages/showcase/solarathon_2023_team_6.py +0 -34
  419. solara/website/pages/showcase/wanderlust.py +0 -27
  420. solara/website/public/beach.jpeg +0 -0
  421. solara/website/public/logo.svg +0 -6
  422. solara/website/public/social/discord.svg +0 -1
  423. solara/website/public/social/github.svg +0 -1
  424. solara/website/public/social/twitter.svg +0 -3
  425. solara/website/public/success.html +0 -25
  426. solara/website/templates/index.html.j2 +0 -117
  427. solara/website/utils.py +0 -51
  428. solara/widgets/__init__.py +0 -1
  429. solara/widgets/vue/gridlayout.vue +0 -110
  430. solara/widgets/vue/html.vue +0 -4
  431. solara/widgets/vue/navigator.vue +0 -104
  432. solara/widgets/vue/vegalite.vue +0 -115
  433. solara/widgets/widgets.py +0 -65
  434. solara-1.30.1.data/data/etc/jupyter/jupyter_notebook_config.d/solara.json +0 -7
  435. solara-1.30.1.data/data/etc/jupyter/jupyter_server_config.d/solara.json +0 -7
  436. solara-1.30.1.dist-info/RECORD +0 -437
  437. solara-1.30.1.dist-info/entry_points.txt +0 -5
  438. /solara-1.30.1.dist-info/licenses/LICENSE → /LICENSE +0 -0
solara/server/settings.py DELETED
@@ -1,212 +0,0 @@
1
- import os
2
- import re
3
- import site
4
- import sys
5
- import uuid
6
- import warnings
7
- from enum import Enum
8
- from pathlib import Path
9
- from typing import Optional
10
-
11
- from filelock import FileLock
12
-
13
- import solara.util
14
- from solara.minisettings import BaseSettings
15
-
16
- from .. import ( # noqa # sidefx is that this module creates the ~/.solara directory
17
- settings,
18
- )
19
- from ..util import get_solara_home
20
-
21
- if site.getuserbase() and __file__.startswith(site.getuserbase()):
22
- prefix = site.getuserbase()
23
- else:
24
- prefix = sys.prefix
25
-
26
-
27
- class ThemeVariant(str, Enum):
28
- light = "light"
29
- dark = "dark"
30
- auto = "auto"
31
-
32
-
33
- class ThemeSettings(BaseSettings):
34
- variant: ThemeVariant = ThemeVariant.light
35
- loader: str = "solara"
36
-
37
- class Config:
38
- env_prefix = "solara_theme_"
39
- case_sensitive = False
40
- env_file = ".env"
41
-
42
-
43
- class SSG(BaseSettings):
44
- # the first app create will initialize this if it is not set
45
- build_path: Optional[Path] = None
46
- enabled: bool = False
47
- headed: bool = False
48
-
49
- class Config:
50
- env_prefix = "solara_ssg_"
51
- case_sensitive = False
52
- env_file = ".env"
53
-
54
-
55
- class Search(BaseSettings):
56
- enabled: bool = False
57
-
58
- class Config:
59
- env_prefix = "solara_search_"
60
-
61
-
62
- class Telemetry(BaseSettings):
63
- mixpanel_token: str = "91845eb13a68e3db4e58d64ad23673b7"
64
- mixpanel_enable: bool = True
65
- server_user_id: str = "not_set"
66
- server_fingerprint: str = str(uuid.getnode())
67
- server_session_id: str = str(uuid.uuid4())
68
-
69
- class Config:
70
- env_prefix = "solara_telemetry_"
71
- case_sensitive = False
72
- env_file = ".env"
73
-
74
-
75
- class Assets(BaseSettings):
76
- proxy_cache_dir: Path = Path(prefix + "/share/solara/cdn/")
77
- fontawesome_enabled: bool = True
78
- fontawesome_path: str = "/font-awesome@4.5.0/css/font-awesome.min.css"
79
-
80
- class Config:
81
- env_prefix = "solara_assets_"
82
- case_sensitive = False
83
- env_file = ".env"
84
-
85
-
86
- class Kernel(BaseSettings):
87
- cull_timeout: str = "24h"
88
- max_count: Optional[int] = None
89
- threaded: bool = solara.util.has_threads
90
-
91
- class Config:
92
- env_prefix = "solara_kernel_"
93
- case_sensitive = False
94
- env_file = ".env"
95
-
96
-
97
- AUTH0_TEST_CLIENT_ID = "cW7owP5Q52YHMZAnJwT8FPlH2ZKvvL3U"
98
- AUTH0_TEST_CLIENT_SECRET = "zxITXxoz54OjuSmdn-PluQgAwbeYyoB7ALlnLoodftvAn81usDXW0quchvoNvUYD"
99
- AUTH0_TEST_API_BASE_URL = "dev-y02f2bpr8skxu785.us.auth0.com"
100
- AUTH0_LOGOUT_PATH = "v2/logout"
101
-
102
- FIEF_TEST_CLIENT_ID = "x2np62qgwp6hnEGTP4JYUE3igdZWhT-AvjpjwwDyKXU"
103
- FIEF_TEST_CLIENT_SECRET = "XQlByE1pVIz5h2SBN2GYDwT_ziqArHJgLD3KqMlCHjg"
104
- FIEF_TEST_API_BASE_URL = "solara-dev.fief.dev"
105
- FIEF_LOGOUT_PATH = "logout"
106
- SESSION_SECRET_KEY_DEFAULT = "change me"
107
-
108
- OAUTH_TEST_CLIENT_IDs = [AUTH0_TEST_CLIENT_ID, FIEF_TEST_CLIENT_ID]
109
-
110
-
111
- class Session(BaseSettings):
112
- secret_key: str = SESSION_SECRET_KEY_DEFAULT
113
- https_only: Optional[bool] = None
114
- same_site: str = "lax"
115
-
116
- class Config:
117
- env_prefix = "solara_session_"
118
- case_sensitive = False
119
- env_file = ".env"
120
-
121
-
122
- class OAuth(BaseSettings):
123
- private: bool = False
124
-
125
- client_id: str = AUTH0_TEST_CLIENT_ID
126
- client_secret: str = AUTH0_TEST_CLIENT_SECRET
127
- api_base_url: str = AUTH0_TEST_API_BASE_URL
128
- logout_path: str = AUTH0_LOGOUT_PATH
129
- scope: str = "openid profile email"
130
-
131
- class Config:
132
- env_prefix = "solara_oauth_"
133
- case_sensitive = False
134
- env_file = ".env"
135
-
136
-
137
- HOST_DEFAULT = os.environ.get("HOST", "localhost")
138
- is_mac_os_conda = "arm64-apple-darwin" in HOST_DEFAULT
139
- is_wsl_windows = re.match(r".*?-w1[0-9]", HOST_DEFAULT)
140
- if is_mac_os_conda or is_wsl_windows:
141
- HOST_DEFAULT = "localhost"
142
-
143
-
144
- class MainSettings(BaseSettings):
145
- use_pdb: bool = False
146
- mode: str = "production"
147
- tracer: bool = False
148
- timing: bool = False
149
- root_path: Optional[str] = None # e.g. /myapp (without trailing slash)
150
- base_url: str = "" # e.g. https://myapp.solara.run/myapp/
151
- platform: str = sys.platform
152
- host: str = HOST_DEFAULT
153
- experimental_performance: bool = False
154
-
155
- class Config:
156
- env_prefix = "solara_"
157
- case_sensitive = False
158
- env_file = ".env"
159
-
160
-
161
- main = MainSettings()
162
- theme = ThemeSettings()
163
- telemetry = Telemetry()
164
- ssg = SSG()
165
- search = Search()
166
- assets = Assets()
167
- oauth = OAuth()
168
- session = Session()
169
- kernel = Kernel()
170
- # fail early
171
- solara.util.parse_timedelta(kernel.cull_timeout)
172
-
173
- if settings.assets.proxy:
174
- try:
175
- assets.proxy_cache_dir.mkdir(exist_ok=True, parents=True)
176
- except OSError as e:
177
- settings.assets.proxy = False
178
- warnings.warn(
179
- f"Could not create {assets.proxy_cache_dir} due to {e}. We will automatically disable the assets proxy for you. "
180
- "If you want to disable this warning, set SOLARA_ASSETS_PROXY to False (e.g. export SOLARA_ASSETS_PROXY=false). "
181
- "Or change the SOLARA_PROXY_CACHE_DIR environment variable to a directory where you have write access."
182
- )
183
- # that's ok, the user probably doesn't have permission to create the directory
184
- # in this case, we would need to install solara-assets?
185
- pass
186
-
187
- if telemetry.server_user_id == "not_set":
188
- home = get_solara_home()
189
- server_user_id_file = home / "server_user_id.txt"
190
- try:
191
- with FileLock(str(server_user_id_file) + ".lock"):
192
- if not server_user_id_file.exists():
193
- server_user_id_file.write_text(str(uuid.uuid4()))
194
- telemetry.server_user_id = server_user_id_file.read_text()
195
- except OSError:
196
- pass # it's ok
197
-
198
- if oauth.client_id:
199
- if oauth.client_id not in OAUTH_TEST_CLIENT_IDs:
200
- if session.secret_key == SESSION_SECRET_KEY_DEFAULT:
201
- raise ValueError(
202
- "You must set a session secret key for oauth, it is not safe to use the default. Please set SOLARA_SESSION_SECRET_KEY in your environment."
203
- )
204
- if session.https_only is None:
205
- raise ValueError(
206
- "You must set https_only for the session to True (recommended) or False in your are using your own oauth provider."
207
- "Please set SOLARA_SESSION_HTTPS_ONLY in your environment to True or False"
208
- )
209
- else:
210
- # for the test accounts, this is fine
211
- if session.https_only is None:
212
- session.https_only = False
solara/server/shell.py DELETED
@@ -1,240 +0,0 @@
1
- import io
2
- import sys
3
- from binascii import b2a_base64
4
- from threading import local
5
- from unittest.mock import Mock
6
-
7
- import reacton.patch_display
8
- from IPython.core.displaypub import DisplayPublisher
9
- from IPython.core.interactiveshell import InteractiveShell, InteractiveShellABC
10
- from jupyter_client.session import Session, extract_header
11
- from traitlets import Any, CBytes, Dict, Instance, Type, default
12
-
13
-
14
- def encode_images(obj):
15
- # no-op in ipykernel
16
- return obj
17
-
18
-
19
- def json_clean(obj):
20
- # no-op in ipykernel
21
- return obj
22
-
23
-
24
- # based on the zmq display publisher from ipykernel
25
- # ideally this goes out of ipykernel
26
- class SolaraDisplayPublisher(DisplayPublisher):
27
- """A display publisher that publishes data using a ZeroMQ PUB socket."""
28
-
29
- session = Instance(Session, allow_none=True)
30
- pub_socket = Any(allow_none=True)
31
- parent_header = Dict({})
32
- topic = CBytes(b"display_data")
33
-
34
- _thread_local = Any()
35
-
36
- def set_parent(self, parent):
37
- """Set the parent for outbound messages."""
38
- self.parent_header = extract_header(parent)
39
-
40
- def _flush_streams(self):
41
- """flush IO Streams prior to display"""
42
- sys.stdout.flush()
43
- sys.stderr.flush()
44
-
45
- @default("_thread_local")
46
- def _default_thread_local(self):
47
- """Initialize our thread local storage"""
48
- return local()
49
-
50
- @property
51
- def _hooks(self):
52
- if not hasattr(self._thread_local, "hooks"):
53
- # create new list for a new thread
54
- self._thread_local.hooks = []
55
- return self._thread_local.hooks
56
-
57
- def publish(
58
- self,
59
- data,
60
- metadata=None,
61
- transient=None,
62
- update=False,
63
- ):
64
- """Publish a display-data message
65
-
66
- Parameters
67
- ----------
68
- data : dict
69
- A mime-bundle dict, keyed by mime-type.
70
- metadata : dict, optional
71
- Metadata associated with the data.
72
- transient : dict, optional, keyword-only
73
- Transient data that may only be relevant during a live display,
74
- such as display_id.
75
- Transient data should not be persisted to documents.
76
- update : bool, optional, keyword-only
77
- If True, send an update_display_data message instead of display_data.
78
- """
79
- self._flush_streams()
80
- if metadata is None:
81
- metadata = {}
82
- if transient is None:
83
- transient = {}
84
- self._validate_data(data, metadata)
85
- content = {}
86
- content["data"] = encode_images(data)
87
- content["metadata"] = metadata
88
- content["transient"] = transient
89
-
90
- msg_type = "update_display_data" if update else "display_data"
91
-
92
- # Use 2-stage process to send a message,
93
- # in order to put it through the transform
94
- # hooks before potentially sending.
95
- msg = self.session.msg(msg_type, json_clean(content), parent=self.parent_header)
96
-
97
- # Each transform either returns a new
98
- # message or None. If None is returned,
99
- # the message has been 'used' and we return.
100
- for hook in self._hooks:
101
- msg = hook(msg)
102
- if msg is None:
103
- return
104
-
105
- self.session.send(
106
- self.pub_socket,
107
- msg,
108
- ident=self.topic,
109
- )
110
-
111
- def clear_output(self, wait=False):
112
- """Clear output associated with the current execution (cell).
113
-
114
- Parameters
115
- ----------
116
- wait : bool (default: False)
117
- If True, the output will not be cleared immediately,
118
- instead waiting for the next display before clearing.
119
- This reduces bounce during repeated clear & display loops.
120
-
121
- """
122
- content = dict(wait=wait)
123
- self._flush_streams()
124
- msg = self.session.msg("clear_output", json_clean(content), parent=self.parent_header)
125
- for hook in self._hooks:
126
- msg = hook(msg)
127
- if msg is None:
128
- return
129
-
130
- self.session.send(
131
- self.pub_socket,
132
- msg,
133
- ident=self.topic,
134
- )
135
-
136
- def register_hook(self, hook):
137
- """
138
- Registers a hook with the thread-local storage.
139
-
140
- Parameters
141
- ----------
142
- hook : Any callable object
143
-
144
- Returns
145
- -------
146
- Either a publishable message, or `None`.
147
- The DisplayHook objects must return a message from
148
- the __call__ method if they still require the
149
- `session.send` method to be called after transformation.
150
- Returning `None` will halt that execution path, and
151
- session.send will not be called.
152
- """
153
- self._hooks.append(hook)
154
-
155
- def unregister_hook(self, hook):
156
- """
157
- Un-registers a hook with the thread-local storage.
158
-
159
- Parameters
160
- ----------
161
- hook : Any callable object which has previously been
162
- registered as a hook.
163
-
164
- Returns
165
- -------
166
- bool - `True` if the hook was removed, `False` if it wasn't
167
- found.
168
- """
169
- try:
170
- self._hooks.remove(hook)
171
- return True
172
- except ValueError:
173
- return False
174
-
175
-
176
- class SolaraInteractiveShell(InteractiveShell):
177
- display_pub_class = Type(SolaraDisplayPublisher)
178
- history_manager = Any() # type: ignore
179
-
180
- def set_parent(self, parent):
181
- """Tell the children about the parent message."""
182
- self.display_pub.set_parent(parent)
183
-
184
- def init_history(self):
185
- self.history_manager = Mock() # type: ignore
186
-
187
- def init_display_formatter(self):
188
- super().init_display_formatter()
189
- assert self.display_formatter is not None
190
- self.display_formatter.ipython_display_formatter = reacton.patch_display.ReactonDisplayFormatter()
191
-
192
- # matplotlib support for display(figure)
193
- # IPython.core.pylabtools has support for this, but it requires importing matplotlib
194
- # which would slow down startup, so we do it here using for_type using a string as argument.
195
- def encode_png(figure, **kwargs):
196
- f = io.BytesIO()
197
- format = "png"
198
- figure.savefig(f, format=format, **kwargs)
199
- bytes_data = f.getvalue()
200
- base64_data = b2a_base64(bytes_data, newline=False).decode("ascii")
201
- return base64_data
202
-
203
- formatter = self.display_formatter.formatters["image/png"]
204
- formatter.for_type("matplotlib.figure.Figure", encode_png)
205
-
206
- def init_display_pub(self):
207
- super().init_display_pub()
208
- self.display_pub.register_hook(self.display_in_reacton_hook)
209
-
210
- def display_in_reacton_hook(self, msg):
211
- """Will intercept a display call and add the display data to an output widget when in a reacton context/render function."""
212
- # similar to reacton.patch_display.publish
213
- from reacton.core import get_render_context
214
-
215
- rc = get_render_context(required=False)
216
- # only during the render phase we want to capture the display calls
217
- # during the reconsolidation phase we want to let the original display publisher do its thing
218
- # such as adding it to a output widget
219
- if rc is not None and not rc.reconsolidating and msg["msg_type"] == "display_data":
220
- from reacton.ipywidgets import Output
221
-
222
- Output(outputs=[{"output_type": "display_data", "data": msg["content"]["data"], "metadata": msg["content"]["metadata"]}])
223
- return None # do not send to the frontend
224
- return msg
225
-
226
- def reset(self, new_session=True, aggressive=False):
227
- # if we dont override this with a dummy, the unittests will take a long time
228
- # to exit. Hitting ctrl-c showed the following stacktrace:
229
- # Traceback (most recent call last):
230
- # File "/Users/maartenbreddels/miniconda3/envs/dev/lib/python3.9/site-packages/IPython/core/interactiveshell.py", line 3924, in atexit_operations
231
- # self.reset(new_session=False)
232
- # File "/Users/maartenbreddels/miniconda3/envs/dev/lib/python3.9/site-packages/IPython/core/interactiveshell.py", line 1456, in reset
233
- # self.displayhook.flush()
234
- # File "/Users/maartenbreddels/miniconda3/envs/dev/lib/python3.9/site-packages/IPython/core/displayhook.py", line 311, in flush
235
- # gc.collect()
236
- # So this dummy will prevent that.
237
- pass
238
-
239
-
240
- InteractiveShellABC.register(SolaraInteractiveShell)