solara 1.30.1__py2.py3-none-any.whl → 1.32.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.32.0.dist-info}/METADATA +12 -42
  2. solara-1.32.0.dist-info/RECORD +5 -0
  3. {solara-1.30.1.dist-info → solara-1.32.0.dist-info}/WHEEL +1 -1
  4. {solara/template/portal → solara-1.32.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
@@ -1,61 +0,0 @@
1
- from typing import Optional, Union
2
-
3
- import reacton.ipyvuetify as v
4
-
5
- import solara
6
-
7
-
8
- @solara.component
9
- def Tooltip(
10
- tooltip=Union[str, solara.Element],
11
- children=[],
12
- color: Optional[str] = None,
13
- ):
14
- """A tooltip that is shown when you hover above an element.
15
-
16
- Not all components support tooltips, in case it does not work,
17
- try wrapping the element in a `Column` or `Row`.
18
-
19
- ```solara
20
- import solara
21
-
22
- @solara.component
23
- def Page():
24
- with solara.Tooltip("This is a tooltip over a button"):
25
- solara.Button("Hover me")
26
- with solara.Tooltip("This is a tooltip over a text"):
27
- solara.Text("Hover me")
28
- info = solara.Info("Any component is supported as tooltip.")
29
- with solara.Tooltip(info, color="white"):
30
- with solara.Column():
31
- solara.Markdown("# Lorem ipsum\\n\\nDolor sit amet")
32
- ```
33
-
34
- ## Arguments
35
-
36
- * `tooltip`: the text, or element to display on hover.
37
- * `children`: the element to display the tooltip over.
38
- * `color`: the color of the tooltip (if None, the default color).
39
-
40
- """
41
-
42
- def set_v_on():
43
- for child in children:
44
- widget = solara.get_widget(child)
45
- # this only works on vue/vuetify components
46
- widget.v_on = "tooltip.on" # type: ignore
47
-
48
- solara.use_effect(set_v_on, children)
49
-
50
- return v.Tooltip(
51
- bottom=True,
52
- v_slots=[
53
- {
54
- "name": "activator",
55
- "variable": "tooltip",
56
- "children": children,
57
- }
58
- ],
59
- color=color,
60
- children=[tooltip],
61
- )
solara/datatypes.py DELETED
@@ -1,143 +0,0 @@
1
- import dataclasses
2
- from enum import Enum
3
- from pathlib import Path
4
- from types import ModuleType
5
- from typing import Any, Callable, Dict, Generic, List, Optional, TypeVar, Union
6
-
7
- import reacton
8
- from typing_extensions import Literal, TypedDict
9
-
10
- T = TypeVar("T")
11
- U = TypeVar("U")
12
-
13
-
14
- @dataclasses.dataclass(frozen=True)
15
- class Action:
16
- name: str
17
- icon: Optional[str] = None
18
- on_click: Optional[Callable] = None
19
-
20
-
21
- @dataclasses.dataclass(frozen=True)
22
- class ColumnAction(Action):
23
- on_click: Optional[Callable[[str], None]] = None
24
-
25
-
26
- @dataclasses.dataclass(frozen=True)
27
- class CellAction(Action):
28
- on_click: Optional[Callable[[str, int], None]] = None
29
-
30
-
31
- def _fallback_retry():
32
- raise RuntimeError("Should not happen")
33
-
34
-
35
- class ResultState(Enum):
36
- INITIAL = 1
37
- STARTING = 2
38
- WAITING = 3
39
- RUNNING = 4
40
- ERROR = 5
41
- FINISHED = 6
42
- CANCELLED = 7
43
-
44
-
45
- @dataclasses.dataclass(frozen=True)
46
- class Result(Generic[T]):
47
- value: Optional[T] = None
48
- error: Optional[Exception] = None
49
- state: ResultState = ResultState.INITIAL
50
- progress: Optional[float] = None
51
-
52
- def retry(self):
53
- # mypy does not like members that are callable
54
- # gets confused about self argument.
55
- # we wrap it to avoid hitting this error in user
56
- # code
57
- self._retry() # type: ignore
58
-
59
- # can we avoid storing these into the dataclass?
60
- _retry: Callable[[], Any] = dataclasses.field(compare=False, default=lambda: None)
61
- cancel: Callable[[], Any] = dataclasses.field(compare=False, default=lambda: None)
62
-
63
- def __or__(self, next: Callable[["Result[T]"], "Result[U]"]):
64
- return next(self)
65
-
66
-
67
- @dataclasses.dataclass(frozen=True)
68
- class FileContentResult(Result[T]):
69
- @property
70
- def exists(self):
71
- return not isinstance(self.error, FileNotFoundError)
72
-
73
-
74
- class AggregationCount(TypedDict):
75
- type: Literal["count"]
76
-
77
-
78
- class AggregationSum(TypedDict):
79
- type: Literal["sum"]
80
-
81
-
82
- JsonType = Union[None, int, str, bool, List[Any], Dict[str, Any]]
83
-
84
- Aggregation = Union[AggregationCount, AggregationSum]
85
-
86
-
87
- class PivotTableData(TypedDict):
88
- x: List[str]
89
- y: List[str]
90
- agg: str
91
- values: List[List[JsonType]]
92
- values_x: List[str]
93
- values_y: List[str]
94
- headers_x: List[List[str]]
95
- headers_y: List[List[str]]
96
- counts_x: int
97
- counts_y: int
98
- total: str
99
-
100
-
101
- @dataclasses.dataclass(frozen=True)
102
- class Route:
103
- """A route tells Solara which component to render for a given URL. (Not a Solara component!)
104
-
105
- ## Arguments
106
-
107
- * `path` - The path of the route. This is the part of the URL that you see in the browser.
108
- * `children` - (Optional) A list of child routes. These are routes that are nested under this route.
109
- * `module` - (Optional) The module that contains the component to render for this route, used for autorouting.
110
- * `component` - (Optional) The component to render for this route.
111
- * `layout` - (Optional) The layout to use for this route. If not specified, the default layout will be used.
112
- * `data` - (Optional) The data to pass to the component for this route, usage is up to the user.
113
- * `label` - (Optional) The label to use for this route, can be used for labeling tabs or links.
114
-
115
- ## See also
116
-
117
- * [Multipage](/documentation/advanced/howto/multipage).
118
- * [Understanding Routing](/documentation/advanced/understanding/routing).
119
-
120
- """
121
-
122
- path: str
123
- children: List["Route"] = dataclasses.field(default_factory=list)
124
-
125
- # these are free to use, depending on the implementation
126
- # see autorouting.py for how Solara uses them
127
- module: Optional[ModuleType] = None
128
-
129
- # in the autorouting implementation, this is the
130
- # the same as module.Page (unless we are rendering a markdown)
131
- component: Union[None, Callable, reacton.core.Component] = None
132
- layout: Union[None, Callable, reacton.core.Component] = None
133
-
134
- # in the autorouting implementation, this is the
135
- # path of the markdown file
136
- data: Any = None
137
-
138
- # Can be used for a title and/or a tab label
139
- label: Optional[str] = None
140
-
141
- # file corresponding to this route, can be used for
142
- # checking of content has changed (using mtime)
143
- file: Optional[Path] = None
solara/express.py DELETED
@@ -1,241 +0,0 @@
1
- import functools
2
- import typing
3
- from typing import Callable
4
-
5
- import numpy as np
6
- import plotly.express as px
7
- import plotly.graph_objs as go
8
- import typing_extensions
9
-
10
- # behave as the px module
11
- from plotly.express import * # noqa: F401, F403
12
- from plotly.express._core import make_figure
13
-
14
- import solara
15
-
16
- P = typing_extensions.ParamSpec("P")
17
- T = typing.TypeVar("T")
18
- T2 = typing.TypeVar("T2")
19
-
20
-
21
- # patch histogram until issue 3859 in plotly is resolved
22
-
23
-
24
- def histogram(
25
- data_frame=None,
26
- x=None,
27
- y=None,
28
- custom_data=None,
29
- color=None,
30
- pattern_shape=None,
31
- facet_row=None,
32
- facet_col=None,
33
- facet_col_wrap=0,
34
- facet_row_spacing=None,
35
- facet_col_spacing=None,
36
- hover_name=None,
37
- hover_data=None,
38
- animation_frame=None,
39
- animation_group=None,
40
- category_orders=None,
41
- labels=None,
42
- color_discrete_sequence=None,
43
- color_discrete_map=None,
44
- pattern_shape_sequence=None,
45
- pattern_shape_map=None,
46
- marginal=None,
47
- opacity=None,
48
- orientation=None,
49
- barmode="relative",
50
- barnorm=None,
51
- histnorm=None,
52
- log_x=False,
53
- log_y=False,
54
- range_x=None,
55
- range_y=None,
56
- histfunc=None,
57
- cumulative=None,
58
- nbins=None,
59
- text_auto=False,
60
- title=None,
61
- template=None,
62
- width=None,
63
- height=None,
64
- ) -> go.Figure:
65
- """
66
- In a histogram, rows of `data_frame` are grouped together into a
67
- rectangular mark to visualize the 1D distribution of an aggregate
68
- function `histfunc` (e.g. the count or sum) of the value `y` (or `x` if
69
- `orientation` is `'h'`).
70
- """
71
- return make_figure(
72
- args=locals(),
73
- constructor=go.Histogram,
74
- trace_patch=dict(
75
- histnorm=histnorm,
76
- histfunc=histfunc,
77
- cumulative=dict(enabled=cumulative),
78
- ),
79
- layout_patch=dict(barmode=barmode, barnorm=barnorm),
80
- )
81
-
82
-
83
- px.histogram = histogram
84
-
85
-
86
- def _make_self_describing(f: Callable[P, T]):
87
- # put the arguments on the function and the function into the return value
88
- if hasattr(f, "__wrapped__"):
89
- # on hot reload, we need to unwrap the function to not wrap it twice
90
- f = f.__wrapped__
91
-
92
- @functools.wraps(f)
93
- def wrapper(*args: P.args, **kwargs: P.kwargs):
94
- fig = f(*args, **kwargs)
95
- fig._func = f # type: ignore
96
- fig._args = args # type: ignore
97
- fig._kwargs = kwargs # type: ignore
98
- return fig
99
-
100
- return wrapper
101
-
102
-
103
- def _patch():
104
- for name in dir(px):
105
- f = getattr(px, name)
106
- if callable(f):
107
- f = _make_self_describing(f)
108
- setattr(px, name, f)
109
-
110
-
111
- _patch()
112
-
113
-
114
- @solara.component
115
- def CrossFilteredFigurePlotly(fig):
116
- first_arg_name = fig._func.__code__.co_varnames[0]
117
- kwargs = fig._kwargs.copy()
118
- kwargs.update(zip(fig._func.__code__.co_varnames, fig._args))
119
-
120
- df = kwargs[first_arg_name]
121
- name = fig._func.__name__
122
- filter, set_filter = solara.use_cross_filter(id(df), name)
123
- dff = df
124
- if filter is not None:
125
- dff = df[filter]
126
- for key, value in kwargs.items():
127
- if not isinstance(value, str):
128
- try:
129
- n = len(value)
130
- except TypeError:
131
- pass # int or bool, or anything without a length
132
- except Exception:
133
- raise
134
- else:
135
- if n == len(df):
136
- kwargs[key] = np.array(value)[filter]
137
- original_indices = np.arange(len(df), dtype="int64")
138
- else:
139
- original_indices = None
140
-
141
- kwargs[first_arg_name] = dff
142
-
143
- index = np.arange(len(dff))
144
- custom_data = [index]
145
- has_custom_data = "custom_data" in kwargs
146
-
147
- if has_custom_data:
148
- kwargs["custom_data"] = custom_data + list(kwargs["custom_data"])
149
- else:
150
- kwargs["custom_data"] = custom_data
151
- new_fig = fig._func(**kwargs)
152
- new_fig.layout = fig.layout
153
-
154
- # the df is split into multiple traces, generate the data such that we can transform back from trace+point indices to df.index
155
- indices = []
156
- offset = 0
157
- index_offsets_list = []
158
- for data in new_fig.data:
159
- indices.append(data.customdata.T[0])
160
- index_offsets_list.append(offset)
161
- offset += len(data.customdata.T[0])
162
- index_offsets = np.array(index_offsets_list)
163
- # strip of the custom data we added
164
- for data in new_fig.data:
165
- if has_custom_data:
166
- data.customdata = data.customdata.T[len(custom_data) :].T
167
- else:
168
- data.customdata = None
169
-
170
- def on_selection(data):
171
- if data is not None:
172
- trace_indexes = np.array(data["points"]["trace_indexes"])
173
- point_indexes = np.array(data["points"]["point_indexes"])
174
- if len(trace_indexes):
175
- indices_selected = index_offsets[trace_indexes] + point_indexes
176
-
177
- if filter is not None:
178
- assert original_indices is not None
179
- # these are references to the filtered dataframe
180
- indices_selected = original_indices[filter][indices_selected]
181
- mask = np.zeros(len(df), dtype=bool)
182
- mask[indices_selected] = True
183
- set_filter(mask)
184
- else:
185
- set_filter(None)
186
-
187
- def on_deselect(data):
188
- set_filter(None)
189
-
190
- return solara.FigurePlotly(new_fig, on_selection=on_selection, on_deselect=on_deselect)
191
-
192
-
193
- # for backwards compatibility
194
- FigurePlotlyCrossFiltered = CrossFilteredFigurePlotly
195
-
196
-
197
- def _wraps(f: Callable[P, T]):
198
- @functools.wraps(f)
199
- def wrapper(*args: P.args, **kwargs: P.kwargs):
200
- fig = f(*args, **kwargs)
201
- return CrossFilteredFigurePlotly(fig)
202
-
203
- return wrapper
204
-
205
-
206
- scatter = _wraps(px.scatter)
207
- scatter_3d = _wraps(px.scatter_3d)
208
- scatter_polar = _wraps(px.scatter_polar)
209
- scatter_ternary = _wraps(px.scatter_ternary)
210
- scatter_mapbox = _wraps(px.scatter_mapbox)
211
- scatter_geo = _wraps(px.scatter_geo)
212
- scatter_matrix = _wraps(px.scatter_matrix)
213
- density_contour = _wraps(px.density_contour)
214
- density_heatmap = _wraps(px.density_heatmap)
215
- density_mapbox = _wraps(px.density_mapbox)
216
- line = _wraps(px.line)
217
- line_3d = _wraps(px.line_3d)
218
- line_polar = _wraps(px.line_polar)
219
- line_ternary = _wraps(px.line_ternary)
220
- line_mapbox = _wraps(px.line_mapbox)
221
- line_geo = _wraps(px.line_geo)
222
- parallel_coordinates = _wraps(px.parallel_coordinates)
223
- parallel_categories = _wraps(px.parallel_categories)
224
- area = _wraps(px.area)
225
- bar = _wraps(px.bar)
226
- timeline = _wraps(px.timeline)
227
- bar_polar = _wraps(px.bar_polar)
228
- violin = _wraps(px.violin)
229
- box = _wraps(px.box)
230
- strip = _wraps(px.strip)
231
- histogram = _wraps(px.histogram)
232
- ecdf = _wraps(px.ecdf)
233
- choropleth = _wraps(px.choropleth)
234
- choropleth_mapbox = _wraps(px.choropleth_mapbox)
235
- pie = _wraps(px.pie)
236
- sunburst = _wraps(px.sunburst)
237
- treemap = _wraps(px.treemap)
238
- icicle = _wraps(px.icicle)
239
- funnel = _wraps(px.funnel)
240
- funnel_area = _wraps(px.funnel_area)
241
- imshow = _wraps(px.imshow)
solara/hooks/__init__.py DELETED
@@ -1,4 +0,0 @@
1
- from .dataframe import * # noqa: #F401 F403
2
- from .misc import * # noqa: #F401 F403
3
- from .use_reactive import use_reactive # noqa: #F401 F403
4
- from .use_thread import use_thread # noqa: #F401 F403
solara/hooks/dataframe.py DELETED
@@ -1,99 +0,0 @@
1
- import operator
2
- from functools import reduce
3
- from typing import Any, Callable, Dict, List, TypeVar
4
-
5
- import solara.util
6
- from solara.hooks.misc import use_force_update, use_unique_key
7
-
8
- T = TypeVar("T")
9
-
10
- __all__ = [
11
- "provide_cross_filter",
12
- "use_cross_filter",
13
- ]
14
-
15
-
16
- class CrossFilterStore:
17
- def __init__(self) -> None:
18
- self.listeners: List[Callable] = []
19
- self.filters: Dict[Any, Dict[str, Any]] = {}
20
-
21
- def add(self, data_key, key, filter):
22
- data_filters = self.filters.setdefault(data_key, {})
23
- data_filters[key] = filter
24
-
25
- def use(self, data_key, key, eq=None):
26
- # we use this state to trigger update, we could do without
27
- updater = use_force_update()
28
-
29
- data_filters = self.filters.setdefault(data_key, {})
30
- filter, set_filter = solara.use_state(data_filters.get(key), eq=eq)
31
-
32
- def on_change():
33
- set_filter(data_filters.get(key))
34
- # even if we don't change our own filter, the other may change
35
- updater()
36
-
37
- def connect():
38
- self.listeners.append(on_change)
39
- # we need to force an extra render after the first render
40
- # to make sure we have the correct filter, since others components
41
- # may set a filter after we have rendered, *or* mounted
42
- on_change()
43
-
44
- def cleanup():
45
- self.listeners.remove(on_change)
46
- # also remove our filter, and notify the rest
47
- data_filters.pop(key, None) # remove, ignoring key error
48
- for listener in self.listeners:
49
- listener()
50
-
51
- return cleanup
52
-
53
- solara.use_effect(connect, [key])
54
-
55
- def setter(filter):
56
- data_filters[key] = filter
57
- for listener in self.listeners:
58
- listener()
59
-
60
- otherfilters = [filter for key_other, filter in data_filters.items() if key != key_other and filter is not None]
61
- return filter, otherfilters, setter
62
-
63
-
64
- cross_filter_context = solara.create_context(CrossFilterStore())
65
-
66
-
67
- def provide_cross_filter():
68
- # create it once
69
- cross_filter_object = solara.use_memo(CrossFilterStore, [])
70
- cross_filter_context.provide(cross_filter_object)
71
- return cross_filter_object
72
-
73
-
74
- def use_cross_filter(data_key, name: str = "no-name", reducer: Callable[[T, T], T] = operator.and_, eq=solara.util.numpy_equals):
75
- """Provides cross filtering, all other filters are combined using the reducer.
76
-
77
- Cross filtering will collect a set of filters (from other components), and combine
78
- them into a single filter, that excludes the filter we set for the current component.
79
- This is often used in dashboards where a filter is defined in a visualization component,
80
- but only applied to all other components.
81
-
82
- The graph below shows what happens when component A and B set a filter, and C does not.
83
-
84
- ```mermaid
85
- graph TD;
86
- A--"filter A"-->B;
87
- B--"filter B"-->C;
88
- A--"filter A"-->C;
89
- B--"filter B"-->A;
90
- ```
91
- """
92
- key = use_unique_key(prefix=f"cross-filter-{name}-")
93
- cross_filter_store = solara.use_context(cross_filter_context)
94
- _own_filter, otherfilters, set_filter = cross_filter_store.use(data_key, key, eq=eq)
95
- if otherfilters:
96
- cross_filter = reduce(reducer, otherfilters[1:], otherfilters[0])
97
- else:
98
- cross_filter = None
99
- return cross_filter, set_filter