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
@@ -1,84 +0,0 @@
1
- """
2
- # SqlCode
3
- """
4
- import os
5
- import sqlite3
6
- import threading
7
- from typing import Optional, cast
8
-
9
- import pandas as pd
10
-
11
- try:
12
- import vaex.datasets
13
- except ImportError:
14
- vaex = None
15
-
16
- import solara
17
- from solara.alias import rv
18
- from solara.website.utils import apidoc
19
-
20
- if vaex is not None:
21
- df_iris = vaex.datasets.iris().to_pandas_df()
22
- df_titanic = vaex.datasets.titanic().to_pandas_df()
23
-
24
- def create_db():
25
- conn = sqlite3.connect(filename)
26
- df_iris.to_sql("iris", conn, if_exists="replace", index=False)
27
- df_titanic.to_sql("titanic", conn, if_exists="replace", index=False)
28
- conn.close()
29
-
30
- filename = "solara-sql.db"
31
- if not os.path.exists(filename):
32
- create_db()
33
-
34
- conn = sqlite3.connect(filename)
35
- conn.row_factory = sqlite3.Row
36
- table_names = [k[0] for k in conn.execute("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name").fetchall()]
37
- table_hints = {table_name: conn.execute(f"SELECT * from {table_name} LIMIT 1").fetchone().keys() for table_name in table_names}
38
-
39
-
40
- @solara.component
41
- def Page():
42
- if vaex is None:
43
- return solara.Error("Vaex is not installed, run pip install vaex-core vaex-hdf5")
44
- query, set_query = solara.use_state("SELECT * from titanic")
45
- query_executed, set_query_executed = solara.use_state(cast(Optional[str], None))
46
-
47
- def run_query(cancel: threading.Event) -> pd.DataFrame:
48
- if not query_executed:
49
- return
50
- conn = sqlite3.connect(filename)
51
- cursor = conn.cursor()
52
- cursor.execute(query_executed)
53
-
54
- df = pd.DataFrame(cursor.fetchall(), columns=[k[0] for k in cursor.description])
55
- return df
56
-
57
- result: solara.Result[pd.DataFrame] = solara.use_thread(run_query, dependencies=[query_executed])
58
- with solara.VBox() as main:
59
- solara.SqlCode(query=query, tables=table_hints, on_query=set_query)
60
- enable_execute = (query != query_executed) or result.error is not None
61
-
62
- def execute():
63
- set_query_executed(query)
64
- if query == query_executed and result.error:
65
- result.retry() # type: ignore
66
-
67
- solara.Button("Execute", on_click=execute, disabled=not enable_execute)
68
- if result.error:
69
- solara.Error(f"Ooops {result.error}")
70
- elif not query:
71
- solara.Info("No query")
72
-
73
- elif result.value is not None:
74
- solara.Markdown(f"Result for query: `{query_executed}`")
75
- df = result.value
76
- solara.DataFrame(df)
77
- elif query_executed is not None:
78
- with solara.Div():
79
- solara.Text("Loading data...")
80
- rv.ProgressCircular(indeterminate=True, class_="solara-progress")
81
- return main
82
-
83
-
84
- __doc__ += apidoc(solara.SqlCode.f) # type: ignore
@@ -1,12 +0,0 @@
1
- """# Tooltip
2
-
3
- """
4
- import solara
5
- from solara.website.components import NoPage
6
- from solara.website.utils import apidoc
7
-
8
- Page = NoPage
9
- title = "Tooltip"
10
-
11
-
12
- __doc__ += apidoc(solara.Tooltip.f) # type: ignore
@@ -1,9 +0,0 @@
1
- import solara
2
- from solara.website.components import NoPage, SubCategoryLayout
3
-
4
- Page = NoPage
5
-
6
-
7
- @solara.component
8
- def Layout(children=[]):
9
- SubCategoryLayout(children=children)
@@ -1,19 +0,0 @@
1
- """# Head
2
- """
3
-
4
- import solara
5
- from solara.website.utils import apidoc
6
-
7
-
8
- @solara.component
9
- def Page():
10
- with solara.VBox() as main:
11
- solara.Info("A Head component does not render somesome visual on the page, but it is used to avoid duplicate tags, such as titles.")
12
- with solara.Head():
13
- # title should always occur inside a Head component
14
- solara.Title("Custom title")
15
-
16
- return main
17
-
18
-
19
- __doc__ += apidoc(solara.Head.f) # type: ignore
@@ -1,28 +0,0 @@
1
- """# Title
2
- """
3
-
4
- from typing import Optional, cast
5
-
6
- import solara
7
- from solara.website.utils import apidoc
8
-
9
-
10
- @solara.component
11
- def Page():
12
- title, set_title = solara.use_state(cast(Optional[str], "Custom title!"))
13
- with solara.VBox() as main:
14
- solara.ToggleButtonsSingle(value=title, values=[None, "Custom title!", "Different custom title"], on_value=set_title)
15
-
16
- if title is not None:
17
- # if the title is not set in a child component, the parent's title will be used
18
- with solara.Head():
19
- # title should always occur inside a Head component
20
- solara.Title(title)
21
- solara.Info(f"Your browser tab title should say {title}", classes=["mt-4"])
22
- else:
23
- solara.Warning("If no title is set, the parent title is used.", classes=["mt-4"])
24
-
25
- return main
26
-
27
-
28
- __doc__ += apidoc(solara.Title.f) # type: ignore
@@ -1,9 +0,0 @@
1
- import solara
2
- from solara.website.components import NoPage, SubCategoryLayout
3
-
4
- Page = NoPage
5
-
6
-
7
- @solara.component
8
- def Layout(children=[]):
9
- SubCategoryLayout(children=children)
@@ -1,40 +0,0 @@
1
- """# Error
2
-
3
- Solara has 4 types of alerts:
4
-
5
- * [Success](/documentation/components/status/success)
6
- * [Info](/documentation/components/status/info)
7
- * [Warning](/documentation/components/status/warning)
8
- * Error (this page)
9
-
10
-
11
-
12
- """
13
-
14
- import solara
15
- from solara.website.utils import apidoc
16
-
17
-
18
- @solara.component
19
- def Page():
20
- icon, set_icon = solara.use_state(True)
21
- dense, set_dense = solara.use_state(False)
22
- outlined, set_outlined = solara.use_state(True)
23
- text, set_text = solara.use_state(True)
24
- with solara.VBox() as main:
25
- with solara.GridFixed(4):
26
- solara.Checkbox(label="Use icon", value=icon, on_value=set_icon)
27
- solara.Checkbox(label="Show dense", value=dense, on_value=set_dense)
28
- solara.Checkbox(label="Show as text", value=text, on_value=set_text)
29
- solara.Checkbox(label="Show outlined", value=outlined, on_value=set_outlined)
30
- solara.Error(
31
- f"This is solara.Error(label='...', text={text}, dense={dense}, outlined={outlined}, icon={icon})",
32
- text=text,
33
- dense=dense,
34
- outlined=outlined,
35
- icon=icon,
36
- )
37
- return main
38
-
39
-
40
- __doc__ += apidoc(solara.Error.f) # type: ignore
@@ -1,40 +0,0 @@
1
- """# Info
2
-
3
- Solara has 4 types of alerts:
4
-
5
- * [Success](/documentation/components/status/success)
6
- * Info (this page)
7
- * [Warning](/documentation/components/status/warning)
8
- * [Error](/documentation/components/status/error)
9
-
10
-
11
-
12
- """
13
-
14
- import solara
15
- from solara.website.utils import apidoc
16
-
17
-
18
- @solara.component
19
- def Page():
20
- icon, set_icon = solara.use_state(True)
21
- dense, set_dense = solara.use_state(False)
22
- outlined, set_outlined = solara.use_state(True)
23
- text, set_text = solara.use_state(True)
24
- with solara.VBox() as main:
25
- with solara.GridFixed(4):
26
- solara.Checkbox(label="Use icon", value=icon, on_value=set_icon)
27
- solara.Checkbox(label="Show dense", value=dense, on_value=set_dense)
28
- solara.Checkbox(label="Show as text", value=text, on_value=set_text)
29
- solara.Checkbox(label="Show outlined", value=outlined, on_value=set_outlined)
30
- solara.Info(
31
- f"This is solara.Info(label='...', text={text}, dense={dense}, outlined={outlined}, icon={icon})",
32
- text=text,
33
- dense=dense,
34
- outlined=outlined,
35
- icon=icon,
36
- )
37
- return main
38
-
39
-
40
- __doc__ += apidoc(solara.Info.f) # type: ignore
@@ -1,10 +0,0 @@
1
- """# ProgressLinear
2
- """
3
- import solara
4
- from solara.website.components import NoPage
5
- from solara.website.utils import apidoc
6
-
7
- Page = NoPage
8
-
9
-
10
- __doc__ += apidoc(solara.ProgressLinear.f) # type: ignore
@@ -1,10 +0,0 @@
1
- """
2
- # SpinnerSolara
3
- """
4
- import solara
5
- from solara.website.components import NoPage
6
- from solara.website.utils import apidoc
7
-
8
- Page = NoPage
9
-
10
- __doc__ += apidoc(solara.SpinnerSolara.f) # type: ignore
@@ -1,40 +0,0 @@
1
- """# Success
2
-
3
- Solara has 4 types of alerts:
4
-
5
- * Success (this page)
6
- * [Info](/documentation/components/status/info)
7
- * [Warning](/documentation/components/status/warning)
8
- * [Error](/documentation/components/status/error)
9
-
10
-
11
-
12
- """
13
-
14
- import solara
15
- from solara.website.utils import apidoc
16
-
17
-
18
- @solara.component
19
- def Page():
20
- icon, set_icon = solara.use_state(True)
21
- dense, set_dense = solara.use_state(False)
22
- outlined, set_outlined = solara.use_state(True)
23
- text, set_text = solara.use_state(True)
24
- with solara.VBox() as main:
25
- with solara.GridFixed(4):
26
- solara.Checkbox(label="Use icon", value=icon, on_value=set_icon)
27
- solara.Checkbox(label="Show dense", value=dense, on_value=set_dense)
28
- solara.Checkbox(label="Show as text", value=text, on_value=set_text)
29
- solara.Checkbox(label="Show outlined", value=outlined, on_value=set_outlined)
30
- solara.Success(
31
- f"This is solara.Success(label='...', text={text}, dense={dense}, outlined={outlined}, icon={icon})",
32
- text=text,
33
- dense=dense,
34
- outlined=outlined,
35
- icon=icon,
36
- )
37
- return main
38
-
39
-
40
- __doc__ += apidoc(solara.Success.f) # type: ignore
@@ -1,47 +0,0 @@
1
- """# Warning
2
-
3
- Solara has 4 types of alerts:
4
-
5
- * [Success](/documentation/components/status/success)
6
- * [Info](/documentation/components/status/info)
7
- * Warning (this page)
8
- * [Error](/documentation/components/status/error)
9
-
10
-
11
-
12
- """
13
-
14
- import solara
15
- from solara.website.utils import apidoc
16
-
17
-
18
- @solara.component
19
- def Page():
20
- icon, set_icon = solara.use_state(True)
21
- dense, set_dense = solara.use_state(False)
22
- outlined, set_outlined = solara.use_state(True)
23
- text, set_text = solara.use_state(True)
24
- with solara.VBox() as main:
25
- with solara.GridFixed(4):
26
- solara.Checkbox(label="Use icon", value=icon, on_value=set_icon)
27
- solara.Checkbox(label="Show dense", value=dense, on_value=set_dense)
28
- solara.Checkbox(label="Show as text", value=text, on_value=set_text)
29
- solara.Checkbox(label="Show outlined", value=outlined, on_value=set_outlined)
30
- solara.Warning(
31
- f"This is solara.Warning(label='...', text={text}, dense={dense}, outlined={outlined}, icon={icon})",
32
- text=text,
33
- dense=dense,
34
- outlined=outlined,
35
- icon=icon,
36
- )
37
- solara.Warning(
38
- f"This is solara.Warning(label='...', text={text}, dense={dense}, outlined={outlined}, icon={icon})",
39
- text=text,
40
- dense=dense,
41
- outlined=outlined,
42
- icon=icon,
43
- )
44
- return main
45
-
46
-
47
- __doc__ += apidoc(solara.Warning.f) # type: ignore
@@ -1,9 +0,0 @@
1
- import solara
2
- from solara.website.components import NoPage, SubCategoryLayout
3
-
4
- Page = NoPage
5
-
6
-
7
- @solara.component
8
- def Layout(children=[]):
9
- SubCategoryLayout(children=children)
@@ -1,44 +0,0 @@
1
- """# FigureAltair
2
-
3
- """
4
-
5
- import altair as alt
6
- import pandas as pd
7
-
8
- import solara
9
- from solara.website.utils import apidoc
10
-
11
- title = "FigureAltair"
12
-
13
- df = pd.DataFrame({"a": ["A", "B", "C", "D", "E", "F", "G", "H", "I"], "b": [28, 55, 43, 91, 81, 53, 19, 87, 52]})
14
-
15
-
16
- @solara.component
17
- def Page():
18
- click_data, set_click_data = solara.use_state(None)
19
- hover_data, set_hover_data = solara.use_state(None)
20
-
21
- chart = alt.Chart(df).mark_bar().encode(x="a", y="b")
22
-
23
- with solara.Div() as main:
24
- solara.AltairChart(chart, on_click=set_click_data, on_hover=set_hover_data)
25
-
26
- solara.Markdown(
27
- f"""
28
- Click data:
29
-
30
- ```
31
- {click_data}
32
- ```
33
-
34
- Hover data:
35
- ```
36
- {hover_data}
37
- ```
38
- """
39
- )
40
-
41
- return main
42
-
43
-
44
- __doc__ += apidoc(solara.FigureAltair.f) # type: ignore
@@ -1,78 +0,0 @@
1
- """# Echarts
2
-
3
- """
4
-
5
-
6
- import solara
7
- from solara.website.utils import apidoc
8
-
9
- options = {
10
- "bars": {
11
- "title": {"text": "ECharts Getting Started Example"},
12
- "tooltip": {},
13
- "legend": {"data": ["sales"]},
14
- "xAxis": {"type": "category"},
15
- "yAxis": {},
16
- "emphasis": {"itemStyle": {"shadowBlur": 10, "shadowOffsetX": 0, "shadowColor": "rgba(0, 0, 0, 0.5)"}},
17
- "series": [
18
- {
19
- "name": "sales",
20
- "type": "bar",
21
- "data": [
22
- {"name": "Shirts", "value": 5},
23
- {"name": "Cardigans", "value": 20},
24
- {"name": "Chiffons", "value": 36},
25
- {"name": "Pants", "value": 10},
26
- {"name": "Heels", "value": 10},
27
- {"name": "Socks", "value": 20},
28
- ],
29
- "universalTransition": True,
30
- }
31
- ],
32
- },
33
- "pie": {
34
- "title": {"text": "ECharts Getting Started Example"},
35
- "tooltip": {},
36
- "legend": {"data": ["sales"]},
37
- "series": [
38
- {
39
- "name": "sales",
40
- "type": "pie",
41
- "radius": [0, "50%"],
42
- "data": [
43
- {"name": "Shirts", "value": 5},
44
- {"name": "Cardigans", "value": 20},
45
- {"name": "Chiffons", "value": 36},
46
- {"name": "Pants", "value": 10},
47
- {"name": "Heels", "value": 10},
48
- {"name": "Socks", "value": 20},
49
- ],
50
- "universalTransition": True,
51
- }
52
- ],
53
- },
54
- }
55
-
56
-
57
- @solara.component
58
- def Page():
59
- option, set_option = solara.use_state("bars")
60
- click_data, set_click_data = solara.use_state(None)
61
- mouseover_data, set_mouseover_data = solara.use_state(None)
62
- mouseout_data, set_mouseout_data = solara.use_state(None)
63
-
64
- with solara.VBox() as main:
65
- with solara.Card("Echarts"):
66
- with solara.ToggleButtonsSingle("bars", on_value=set_option):
67
- solara.Button("bars")
68
- solara.Button("pie")
69
- solara.FigureEcharts(option=options[option], on_click=set_click_data, on_mouseover=set_mouseover_data, on_mouseout=set_mouseout_data)
70
- with solara.Card("Event data"):
71
- solara.Markdown(f"**Click data**: {click_data}")
72
- solara.Markdown(f"**Mouseover data**: {mouseover_data}")
73
- solara.Markdown(f"**Mouseout data**: {mouseout_data}")
74
-
75
- return main
76
-
77
-
78
- __doc__ += apidoc(solara.FigureEcharts.f) # type: ignore
@@ -1,32 +0,0 @@
1
- """# Matplotlib
2
-
3
- """
4
-
5
- import numpy as np
6
- from matplotlib.figure import Figure
7
-
8
- import solara
9
- from solara.website.utils import apidoc
10
-
11
- x = np.linspace(0, 2, 100)
12
-
13
-
14
- @solara.component
15
- def Page():
16
- freq, set_freq = solara.use_state(2.0)
17
- phase, set_phase = solara.use_state(0.1)
18
- y = np.sin(x * freq + phase)
19
-
20
- fig = Figure()
21
- ax = fig.subplots()
22
- ax.plot(x, y)
23
- ax.set_ylim(-1.2, 1.2)
24
-
25
- with solara.VBox() as main:
26
- solara.FloatSlider("Frequency", value=freq, on_value=set_freq, min=0, max=10)
27
- solara.FloatSlider("Phase", value=phase, on_value=set_phase, min=0, max=np.pi, step=0.1)
28
- solara.FigureMatplotlib(fig, dependencies=[freq, phase])
29
- return main
30
-
31
-
32
- __doc__ += apidoc(solara.FigureMatplotlib.f) # type: ignore
@@ -1,63 +0,0 @@
1
- """Renders a plotly figure object and support for events.
2
-
3
- You can use a regular plotly figure, for instance using plotly.express.
4
-
5
- Supported events are include in the example below.
6
-
7
- For performance, a dependency list can be provided. Any change to the dependency list will cause the Figure data to be updated.
8
- This can be significantly faster than comparing he figure data directly.
9
-
10
- """
11
-
12
- import plotly.express as px
13
-
14
- import solara
15
-
16
- df = px.data.iris()
17
-
18
-
19
- @solara.component
20
- def Page():
21
- with solara.VBox() as main:
22
- selection_data, set_selection_data = solara.use_state(None)
23
- click_data, set_click_data = solara.use_state(None)
24
- hover_data, set_hover_data = solara.use_state(None)
25
- unhover_data, set_unhover_data = solara.use_state(None)
26
- deselect_data, set_deselect_data = solara.use_state(None)
27
- fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species")
28
- solara.FigurePlotly(
29
- fig, on_selection=set_selection_data, on_click=set_click_data, on_hover=set_hover_data, on_unhover=set_unhover_data, on_deselect=set_deselect_data
30
- )
31
-
32
- solara.Markdown(
33
- f"""
34
- # Events data
35
- ## selection
36
- ```
37
- {selection_data}
38
- ```
39
-
40
- ## click
41
- ```
42
- {click_data}
43
- ```
44
-
45
- ## hover
46
- ```
47
- {hover_data}
48
- ```
49
-
50
- ## unhover
51
- ```
52
- {unhover_data}
53
- ```
54
-
55
- ## deselect
56
- ```
57
- {deselect_data}
58
- ```
59
-
60
-
61
- """
62
- )
63
- return main
@@ -1,41 +0,0 @@
1
- """
2
-
3
- Wraps plotly express function and adds cross filtering support.
4
-
5
- Instead of `plotly.express' you can use `solara.express` instead.
6
-
7
- ```python
8
- # import plotly.express as px
9
- import solara.express as px
10
-
11
- df = px.data.iris()
12
- px.histogram(df, "species")
13
- px.scatter(df, x="sepal_width", y="sepal_length", color="species")
14
- ```
15
-
16
-
17
- Click the lasso icon in the top scatter plot to select points, which should then be filtered out in the other
18
- plots.
19
-
20
-
21
- """
22
-
23
- import plotly.express as px
24
-
25
- import solara
26
- import solara.express as spx
27
-
28
- df = px.data.iris()
29
-
30
-
31
- @solara.component
32
- def Page():
33
- solara.provide_cross_filter()
34
- fig = px.histogram(df, "species")
35
- fig.update_layout(dragmode="select", selectdirection="h")
36
-
37
- with solara.VBox() as main:
38
- spx.scatter(df, x="sepal_width", y="sepal_length", color="species")
39
- spx.scatter_3d(df, x="sepal_width", y="sepal_length", z="petal_width")
40
- spx.CrossFilteredFigurePlotly(fig)
41
- return main
@@ -1,52 +0,0 @@
1
- import solara
2
- from solara.website.components import Gallery
3
-
4
- title = "Examples"
5
-
6
-
7
- @solara.component
8
- def Page(route_external=None):
9
- Gallery(route_external)
10
-
11
-
12
- @solara.component
13
- def Layout(children):
14
- # TODO: this is using a private API, what is the best way to do this?
15
- # we want to 'eat' the whole route for the current level, and the level below
16
- # for example the utilities directory. But if an example does routing, we don't want
17
- # to take on that route.
18
- router = solara.use_router()
19
- route_current = router.path_routes[-1]
20
- # route_current, all_routes = solara.use_route()
21
-
22
- if route_current is None:
23
- return solara.Error("Page not found")
24
- module = route_current.module
25
- assert module is not None
26
- github_url = solara.util.github_url(module.__file__)
27
-
28
- with solara.HBox(grow=False) as main:
29
- if route_current.path == "fullscreen":
30
- with solara.Padding(4, children=children):
31
- pass
32
- else:
33
- with solara.VBox(grow=True, align_items="baseline"):
34
- doc = module.__doc__
35
- if doc:
36
- with solara.VBox(grow=True):
37
- solara.Markdown(doc)
38
- with solara.HBox():
39
- if route_current.path != "/":
40
- solara.Button("View source code on GitHub", icon_name="mdi-github-circle", href=github_url, class_="ma-2", target="_blank", text=True)
41
- # code = inspect.getsource(module)
42
-
43
- # code_quoted = urllib.parse.quote_plus(code)
44
- # url = f"https://test.solara.dev/try?code={code_quoted}"
45
- # solara.Button("Run on solara.dev", icon_name="mdi-pencil", href=url, class_="ma-2", target="_blank")
46
- # with solara.HBox():
47
- if not hasattr(module, "Page"):
48
- solara.Error(f"No Page component found in {module}")
49
- else:
50
- with solara.Padding(4, children=children):
51
- pass
52
- return main