solara-ui 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 (439) hide show
  1. prefix/etc/jupyter/jupyter_notebook_config.d/solara.json +7 -0
  2. prefix/etc/jupyter/jupyter_server_config.d/solara.json +7 -0
  3. solara/__init__.py +124 -0
  4. solara/__main__.py +734 -0
  5. solara/alias.py +6 -0
  6. solara/autorouting.py +546 -0
  7. solara/cache.py +303 -0
  8. solara/checks.html +71 -0
  9. solara/checks.py +224 -0
  10. solara/comm.py +28 -0
  11. solara/components/__init__.py +59 -0
  12. solara/components/alert.py +155 -0
  13. solara/components/applayout.py +393 -0
  14. solara/components/button.py +85 -0
  15. solara/components/card.py +87 -0
  16. solara/components/checkbox.py +50 -0
  17. solara/components/code_highlight_css.py +11 -0
  18. solara/components/code_highlight_css.vue +63 -0
  19. solara/components/columns.py +159 -0
  20. solara/components/component_vue.py +110 -0
  21. solara/components/cross_filter.py +335 -0
  22. solara/components/dataframe.py +546 -0
  23. solara/components/datatable.py +221 -0
  24. solara/components/datatable.vue +175 -0
  25. solara/components/details.py +21 -0
  26. solara/components/download.vue +35 -0
  27. solara/components/echarts.py +75 -0
  28. solara/components/echarts.vue +128 -0
  29. solara/components/figure_altair.py +39 -0
  30. solara/components/file_browser.py +182 -0
  31. solara/components/file_download.py +199 -0
  32. solara/components/file_drop.py +139 -0
  33. solara/components/file_drop.vue +83 -0
  34. solara/components/file_list_widget.vue +78 -0
  35. solara/components/head.py +27 -0
  36. solara/components/head_tag.py +49 -0
  37. solara/components/head_tag.vue +60 -0
  38. solara/components/image.py +173 -0
  39. solara/components/input.py +436 -0
  40. solara/components/link.py +55 -0
  41. solara/components/markdown.py +378 -0
  42. solara/components/markdown_editor.py +25 -0
  43. solara/components/markdown_editor.vue +362 -0
  44. solara/components/matplotlib.py +74 -0
  45. solara/components/meta.py +47 -0
  46. solara/components/misc.py +333 -0
  47. solara/components/pivot_table.py +258 -0
  48. solara/components/pivot_table.vue +158 -0
  49. solara/components/progress.py +47 -0
  50. solara/components/select.py +182 -0
  51. solara/components/select.vue +27 -0
  52. solara/components/slider.py +442 -0
  53. solara/components/slider_date.vue +56 -0
  54. solara/components/spinner-solara.vue +105 -0
  55. solara/components/spinner.py +30 -0
  56. solara/components/sql_code.py +33 -0
  57. solara/components/sql_code.vue +128 -0
  58. solara/components/style.py +105 -0
  59. solara/components/switch.py +68 -0
  60. solara/components/tab_navigation.py +37 -0
  61. solara/components/title.py +90 -0
  62. solara/components/title.vue +38 -0
  63. solara/components/togglebuttons.py +200 -0
  64. solara/components/tooltip.py +61 -0
  65. solara/datatypes.py +143 -0
  66. solara/express.py +241 -0
  67. solara/hooks/__init__.py +4 -0
  68. solara/hooks/dataframe.py +99 -0
  69. solara/hooks/misc.py +263 -0
  70. solara/hooks/use_reactive.py +129 -0
  71. solara/hooks/use_thread.py +129 -0
  72. solara/kitchensink.py +8 -0
  73. solara/lab/__init__.py +34 -0
  74. solara/lab/components/__init__.py +6 -0
  75. solara/lab/components/chat.py +203 -0
  76. solara/lab/components/confirmation_dialog.py +163 -0
  77. solara/lab/components/cross_filter.py +7 -0
  78. solara/lab/components/input_date.py +298 -0
  79. solara/lab/components/menu.py +181 -0
  80. solara/lab/components/menu.vue +38 -0
  81. solara/lab/components/tabs.py +274 -0
  82. solara/lab/components/theming.py +98 -0
  83. solara/lab/components/theming.vue +72 -0
  84. solara/lab/hooks/__init__.py +0 -0
  85. solara/lab/hooks/dataframe.py +12 -0
  86. solara/lab/toestand.py +3 -0
  87. solara/lab/utils/__init__.py +2 -0
  88. solara/lab/utils/cookies.py +5 -0
  89. solara/lab/utils/dataframe.py +115 -0
  90. solara/lab/utils/headers.py +5 -0
  91. solara/layout.py +44 -0
  92. solara/lifecycle.py +46 -0
  93. solara/minisettings.py +133 -0
  94. solara/py.typed +0 -0
  95. solara/reactive.py +93 -0
  96. solara/routing.py +268 -0
  97. solara/scope/__init__.py +88 -0
  98. solara/scope/types.py +55 -0
  99. solara/server/__init__.py +0 -0
  100. solara/server/app.py +491 -0
  101. solara/server/assets/custom.css +1 -0
  102. solara/server/assets/custom.js +1 -0
  103. solara/server/assets/favicon.png +0 -0
  104. solara/server/assets/favicon.svg +5 -0
  105. solara/server/assets/style.css +1665 -0
  106. solara/server/assets/theme-dark.css +437 -0
  107. solara/server/assets/theme-light.css +420 -0
  108. solara/server/assets/theme.js +3 -0
  109. solara/server/cdn_helper.py +77 -0
  110. solara/server/esm.py +69 -0
  111. solara/server/fastapi.py +5 -0
  112. solara/server/flask.py +286 -0
  113. solara/server/jupyter/__init__.py +2 -0
  114. solara/server/jupyter/cdn_handler.py +28 -0
  115. solara/server/jupyter/server_extension.py +29 -0
  116. solara/server/jupytertools.py +46 -0
  117. solara/server/kernel.py +338 -0
  118. solara/server/kernel_context.py +357 -0
  119. solara/server/patch.py +552 -0
  120. solara/server/reload.py +242 -0
  121. solara/server/server.py +456 -0
  122. solara/server/settings.py +215 -0
  123. solara/server/shell.py +251 -0
  124. solara/server/starlette.py +601 -0
  125. solara/server/static/ansi.js +270 -0
  126. solara/server/static/highlight-dark.css +82 -0
  127. solara/server/static/highlight.css +43 -0
  128. solara/server/static/main-vuetify.js +260 -0
  129. solara/server/static/main.js +163 -0
  130. solara/server/static/solara_bootstrap.py +129 -0
  131. solara/server/static/sun.svg +23 -0
  132. solara/server/static/webworker.js +42 -0
  133. solara/server/telemetry.py +212 -0
  134. solara/server/templates/index.html.j2 +1 -0
  135. solara/server/templates/loader-plain.css +11 -0
  136. solara/server/templates/loader-plain.html +20 -0
  137. solara/server/templates/loader-solara.css +111 -0
  138. solara/server/templates/loader-solara.html +40 -0
  139. solara/server/templates/plain.html +82 -0
  140. solara/server/templates/solara.html.j2 +446 -0
  141. solara/server/threaded.py +75 -0
  142. solara/server/utils.py +30 -0
  143. solara/server/websocket.py +45 -0
  144. solara/settings.py +56 -0
  145. solara/tasks.py +837 -0
  146. solara/template/button.py +16 -0
  147. solara/template/markdown.py +42 -0
  148. solara/template/portal/.flake8 +6 -0
  149. solara/template/portal/.pre-commit-config.yaml +28 -0
  150. solara/template/portal/LICENSE +21 -0
  151. solara/template/portal/Procfile +7 -0
  152. solara/template/portal/mypy.ini +3 -0
  153. solara/template/portal/pyproject.toml +26 -0
  154. solara/template/portal/solara_portal/__init__.py +4 -0
  155. solara/template/portal/solara_portal/components/__init__.py +2 -0
  156. solara/template/portal/solara_portal/components/article.py +28 -0
  157. solara/template/portal/solara_portal/components/data.py +28 -0
  158. solara/template/portal/solara_portal/components/header.py +6 -0
  159. solara/template/portal/solara_portal/components/layout.py +6 -0
  160. solara/template/portal/solara_portal/content/articles/equis-in-vidi.md +85 -0
  161. solara/template/portal/solara_portal/content/articles/substiterat-vati.md +70 -0
  162. solara/template/portal/solara_portal/data.py +60 -0
  163. solara/template/portal/solara_portal/pages/__init__.py +67 -0
  164. solara/template/portal/solara_portal/pages/article/__init__.py +26 -0
  165. solara/template/portal/solara_portal/pages/tabular.py +29 -0
  166. solara/template/portal/solara_portal/pages/viz/__init__.py +70 -0
  167. solara/template/portal/solara_portal/pages/viz/overview.py +14 -0
  168. solara/test/__init__.py +0 -0
  169. solara/test/pytest_plugin.py +697 -0
  170. solara/toestand.py +772 -0
  171. solara/util.py +308 -0
  172. solara/website/__init__.py +0 -0
  173. solara/website/assets/custom.css +468 -0
  174. solara/website/assets/images/logo-small.png +0 -0
  175. solara/website/assets/images/logo.svg +17 -0
  176. solara/website/assets/images/logo_white.svg +50 -0
  177. solara/website/assets/theme.js +8 -0
  178. solara/website/components/__init__.py +5 -0
  179. solara/website/components/algolia.vue +24 -0
  180. solara/website/components/algolia_api.vue +187 -0
  181. solara/website/components/docs.py +118 -0
  182. solara/website/components/header.py +72 -0
  183. solara/website/components/hero.py +15 -0
  184. solara/website/components/mailchimp.py +12 -0
  185. solara/website/components/mailchimp.vue +47 -0
  186. solara/website/components/markdown.py +30 -0
  187. solara/website/components/notebook.py +171 -0
  188. solara/website/pages/__init__.py +575 -0
  189. solara/website/pages/apps/__init__.py +16 -0
  190. solara/website/pages/apps/authorization/__init__.py +119 -0
  191. solara/website/pages/apps/authorization/admin.py +12 -0
  192. solara/website/pages/apps/authorization/users.py +12 -0
  193. solara/website/pages/apps/jupyter-dashboard-1.py +116 -0
  194. solara/website/pages/apps/layout-demo.py +40 -0
  195. solara/website/pages/apps/multipage/__init__.py +38 -0
  196. solara/website/pages/apps/multipage/page1.py +26 -0
  197. solara/website/pages/apps/multipage/page2.py +34 -0
  198. solara/website/pages/apps/scatter.py +136 -0
  199. solara/website/pages/apps/scrolling.py +63 -0
  200. solara/website/pages/apps/tutorial-streamlit.py +18 -0
  201. solara/website/pages/changelog/__init__.py +8 -0
  202. solara/website/pages/changelog/changelog.md +204 -0
  203. solara/website/pages/contact/__init__.py +8 -0
  204. solara/website/pages/contact/contact.md +17 -0
  205. solara/website/pages/doc_use_download.py +85 -0
  206. solara/website/pages/documentation/__init__.py +184 -0
  207. solara/website/pages/documentation/advanced/__init__.py +9 -0
  208. solara/website/pages/documentation/advanced/content/00-overview.md +1 -0
  209. solara/website/pages/documentation/advanced/content/10-howto/00-overview.md +6 -0
  210. solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md +196 -0
  211. solara/website/pages/documentation/advanced/content/10-howto/20-layout.md +125 -0
  212. solara/website/pages/documentation/advanced/content/10-howto/30-testing.md +162 -0
  213. solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md +69 -0
  214. solara/website/pages/documentation/advanced/content/10-howto/40-embed.md +49 -0
  215. solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md +124 -0
  216. solara/website/pages/documentation/advanced/content/15-reference/00-overview.md +3 -0
  217. solara/website/pages/documentation/advanced/content/15-reference/40-static_files.md +31 -0
  218. solara/website/pages/documentation/advanced/content/15-reference/41-asset-files.md +36 -0
  219. solara/website/pages/documentation/advanced/content/15-reference/60-static-site-generation.md +59 -0
  220. solara/website/pages/documentation/advanced/content/15-reference/70-search.md +34 -0
  221. solara/website/pages/documentation/advanced/content/15-reference/80-reloading.md +34 -0
  222. solara/website/pages/documentation/advanced/content/15-reference/90-notebook-support.md +7 -0
  223. solara/website/pages/documentation/advanced/content/15-reference/95-caching.md +148 -0
  224. solara/website/pages/documentation/advanced/content/20-understanding/00-introduction.md +10 -0
  225. solara/website/pages/documentation/advanced/content/20-understanding/05-ipywidgets.md +35 -0
  226. solara/website/pages/documentation/advanced/content/20-understanding/06-ipyvuetify.md +42 -0
  227. solara/website/pages/documentation/advanced/content/20-understanding/10-reacton.md +28 -0
  228. solara/website/pages/documentation/advanced/content/20-understanding/12-reacton-basics.md +108 -0
  229. solara/website/pages/documentation/advanced/content/20-understanding/15-anatomy.md +23 -0
  230. solara/website/pages/documentation/advanced/content/20-understanding/17-rules-of-hooks.md +7 -0
  231. solara/website/pages/documentation/advanced/content/20-understanding/18-containers.md +166 -0
  232. solara/website/pages/documentation/advanced/content/20-understanding/20-solara.md +18 -0
  233. solara/website/pages/documentation/advanced/content/20-understanding/40-routing.md +240 -0
  234. solara/website/pages/documentation/advanced/content/20-understanding/50-solara-server.md +97 -0
  235. solara/website/pages/documentation/advanced/content/20-understanding/60-voila.md +12 -0
  236. solara/website/pages/documentation/advanced/content/30-enterprise/00-overview.md +1 -0
  237. solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md +171 -0
  238. solara/website/pages/documentation/advanced/content/40-development/00-overview.md +0 -0
  239. solara/website/pages/documentation/advanced/content/40-development/01-contribute.md +45 -0
  240. solara/website/pages/documentation/advanced/content/40-development/10-setup.md +76 -0
  241. solara/website/pages/documentation/api/__init__.py +19 -0
  242. solara/website/pages/documentation/api/cross_filter/__init__.py +9 -0
  243. solara/website/pages/documentation/api/cross_filter/cross_filter_dataframe.py +23 -0
  244. solara/website/pages/documentation/api/cross_filter/cross_filter_report.py +22 -0
  245. solara/website/pages/documentation/api/cross_filter/cross_filter_select.py +22 -0
  246. solara/website/pages/documentation/api/cross_filter/cross_filter_slider.py +22 -0
  247. solara/website/pages/documentation/api/hooks/__init__.py +9 -0
  248. solara/website/pages/documentation/api/hooks/use_cross_filter.py +25 -0
  249. solara/website/pages/documentation/api/hooks/use_dark_effective.py +12 -0
  250. solara/website/pages/documentation/api/hooks/use_effect.md +43 -0
  251. solara/website/pages/documentation/api/hooks/use_effect.py +9 -0
  252. solara/website/pages/documentation/api/hooks/use_exception.py +33 -0
  253. solara/website/pages/documentation/api/hooks/use_memo.md +16 -0
  254. solara/website/pages/documentation/api/hooks/use_memo.py +9 -0
  255. solara/website/pages/documentation/api/hooks/use_previous.py +33 -0
  256. solara/website/pages/documentation/api/hooks/use_reactive.py +16 -0
  257. solara/website/pages/documentation/api/hooks/use_state.py +10 -0
  258. solara/website/pages/documentation/api/hooks/use_state_or_update.py +69 -0
  259. solara/website/pages/documentation/api/hooks/use_thread.md +58 -0
  260. solara/website/pages/documentation/api/hooks/use_thread.py +44 -0
  261. solara/website/pages/documentation/api/hooks/use_trait_observe.py +12 -0
  262. solara/website/pages/documentation/api/routing/__init__.py +9 -0
  263. solara/website/pages/documentation/api/routing/generate_routes.py +10 -0
  264. solara/website/pages/documentation/api/routing/generate_routes_directory.py +10 -0
  265. solara/website/pages/documentation/api/routing/resolve_path.py +35 -0
  266. solara/website/pages/documentation/api/routing/route.py +31 -0
  267. solara/website/pages/documentation/api/routing/use_route.py +80 -0
  268. solara/website/pages/documentation/api/routing/use_router.py +16 -0
  269. solara/website/pages/documentation/api/utilities/__init__.py +9 -0
  270. solara/website/pages/documentation/api/utilities/component_vue.py +10 -0
  271. solara/website/pages/documentation/api/utilities/computed.py +16 -0
  272. solara/website/pages/documentation/api/utilities/display.py +16 -0
  273. solara/website/pages/documentation/api/utilities/get_kernel_id.py +16 -0
  274. solara/website/pages/documentation/api/utilities/get_session_id.py +16 -0
  275. solara/website/pages/documentation/api/utilities/memoize.py +35 -0
  276. solara/website/pages/documentation/api/utilities/on_kernel_start.py +27 -0
  277. solara/website/pages/documentation/api/utilities/reactive.py +16 -0
  278. solara/website/pages/documentation/api/utilities/widget.py +104 -0
  279. solara/website/pages/documentation/components/__init__.py +12 -0
  280. solara/website/pages/documentation/components/advanced/__init__.py +9 -0
  281. solara/website/pages/documentation/components/advanced/link.py +27 -0
  282. solara/website/pages/documentation/components/advanced/meta.py +20 -0
  283. solara/website/pages/documentation/components/advanced/style.py +45 -0
  284. solara/website/pages/documentation/components/common.py +9 -0
  285. solara/website/pages/documentation/components/data/__init__.py +9 -0
  286. solara/website/pages/documentation/components/data/dataframe.py +44 -0
  287. solara/website/pages/documentation/components/data/pivot_table.py +81 -0
  288. solara/website/pages/documentation/components/enterprise/__init__.py +9 -0
  289. solara/website/pages/documentation/components/enterprise/avatar.py +24 -0
  290. solara/website/pages/documentation/components/enterprise/avatar_menu.py +25 -0
  291. solara/website/pages/documentation/components/input/__init__.py +9 -0
  292. solara/website/pages/documentation/components/input/button.py +23 -0
  293. solara/website/pages/documentation/components/input/checkbox.py +10 -0
  294. solara/website/pages/documentation/components/input/file_browser.py +32 -0
  295. solara/website/pages/documentation/components/input/file_drop.py +76 -0
  296. solara/website/pages/documentation/components/input/input.py +19 -0
  297. solara/website/pages/documentation/components/input/select.py +22 -0
  298. solara/website/pages/documentation/components/input/slider.py +29 -0
  299. solara/website/pages/documentation/components/input/switch.py +10 -0
  300. solara/website/pages/documentation/components/input/togglebuttons.py +21 -0
  301. solara/website/pages/documentation/components/lab/__init__.py +9 -0
  302. solara/website/pages/documentation/components/lab/chat.py +109 -0
  303. solara/website/pages/documentation/components/lab/confirmation_dialog.py +55 -0
  304. solara/website/pages/documentation/components/lab/cookies_headers.py +48 -0
  305. solara/website/pages/documentation/components/lab/input_date.py +20 -0
  306. solara/website/pages/documentation/components/lab/menu.py +22 -0
  307. solara/website/pages/documentation/components/lab/tab.py +25 -0
  308. solara/website/pages/documentation/components/lab/tabs.py +45 -0
  309. solara/website/pages/documentation/components/lab/task.py +11 -0
  310. solara/website/pages/documentation/components/lab/theming.py +72 -0
  311. solara/website/pages/documentation/components/lab/use_task.py +11 -0
  312. solara/website/pages/documentation/components/layout/__init__.py +9 -0
  313. solara/website/pages/documentation/components/layout/app_bar.py +16 -0
  314. solara/website/pages/documentation/components/layout/app_bar_title.py +16 -0
  315. solara/website/pages/documentation/components/layout/app_layout.py +24 -0
  316. solara/website/pages/documentation/components/layout/card.py +15 -0
  317. solara/website/pages/documentation/components/layout/card_actions.py +16 -0
  318. solara/website/pages/documentation/components/layout/column.py +30 -0
  319. solara/website/pages/documentation/components/layout/columns.py +27 -0
  320. solara/website/pages/documentation/components/layout/columns_responsive.py +68 -0
  321. solara/website/pages/documentation/components/layout/griddraggable.py +62 -0
  322. solara/website/pages/documentation/components/layout/gridfixed.py +21 -0
  323. solara/website/pages/documentation/components/layout/hbox.py +18 -0
  324. solara/website/pages/documentation/components/layout/row.py +30 -0
  325. solara/website/pages/documentation/components/layout/sidebar.py +24 -0
  326. solara/website/pages/documentation/components/layout/vbox.py +19 -0
  327. solara/website/pages/documentation/components/output/__init__.py +9 -0
  328. solara/website/pages/documentation/components/output/file_download.py +11 -0
  329. solara/website/pages/documentation/components/output/html.py +21 -0
  330. solara/website/pages/documentation/components/output/image.py +11 -0
  331. solara/website/pages/documentation/components/output/markdown.py +57 -0
  332. solara/website/pages/documentation/components/output/markdown_editor.py +51 -0
  333. solara/website/pages/documentation/components/output/sql_code.py +85 -0
  334. solara/website/pages/documentation/components/output/tooltip.py +11 -0
  335. solara/website/pages/documentation/components/page/__init__.py +9 -0
  336. solara/website/pages/documentation/components/page/head.py +18 -0
  337. solara/website/pages/documentation/components/page/title.py +27 -0
  338. solara/website/pages/documentation/components/status/__init__.py +9 -0
  339. solara/website/pages/documentation/components/status/error.py +40 -0
  340. solara/website/pages/documentation/components/status/info.py +40 -0
  341. solara/website/pages/documentation/components/status/progress.py +10 -0
  342. solara/website/pages/documentation/components/status/spinner.py +11 -0
  343. solara/website/pages/documentation/components/status/success.py +40 -0
  344. solara/website/pages/documentation/components/status/warning.py +47 -0
  345. solara/website/pages/documentation/components/viz/__init__.py +9 -0
  346. solara/website/pages/documentation/components/viz/altair.py +42 -0
  347. solara/website/pages/documentation/components/viz/echarts.py +75 -0
  348. solara/website/pages/documentation/components/viz/matplotlib.py +30 -0
  349. solara/website/pages/documentation/components/viz/plotly.py +63 -0
  350. solara/website/pages/documentation/components/viz/plotly_express.py +41 -0
  351. solara/website/pages/documentation/examples/__init__.py +52 -0
  352. solara/website/pages/documentation/examples/ai/__init__.py +11 -0
  353. solara/website/pages/documentation/examples/ai/chatbot.py +95 -0
  354. solara/website/pages/documentation/examples/ai/tokenizer.py +107 -0
  355. solara/website/pages/documentation/examples/basics/__init__.py +10 -0
  356. solara/website/pages/documentation/examples/basics/sine.py +28 -0
  357. solara/website/pages/documentation/examples/fullscreen/__init__.py +10 -0
  358. solara/website/pages/documentation/examples/fullscreen/authorization.py +3 -0
  359. solara/website/pages/documentation/examples/fullscreen/layout_demo.py +3 -0
  360. solara/website/pages/documentation/examples/fullscreen/multipage.py +3 -0
  361. solara/website/pages/documentation/examples/fullscreen/scatter.py +3 -0
  362. solara/website/pages/documentation/examples/fullscreen/scrolling.py +3 -0
  363. solara/website/pages/documentation/examples/fullscreen/tutorial_streamlit.py +3 -0
  364. solara/website/pages/documentation/examples/general/__init__.py +10 -0
  365. solara/website/pages/documentation/examples/general/custom_storage.py +70 -0
  366. solara/website/pages/documentation/examples/general/deploy_model.py +115 -0
  367. solara/website/pages/documentation/examples/general/live_update.py +38 -0
  368. solara/website/pages/documentation/examples/general/login_oauth.py +81 -0
  369. solara/website/pages/documentation/examples/general/mycard.vue +58 -0
  370. solara/website/pages/documentation/examples/general/pokemon_search.py +51 -0
  371. solara/website/pages/documentation/examples/general/vue_component.py +50 -0
  372. solara/website/pages/documentation/examples/ipycanvas.py +49 -0
  373. solara/website/pages/documentation/examples/libraries/__init__.py +10 -0
  374. solara/website/pages/documentation/examples/libraries/altair.py +64 -0
  375. solara/website/pages/documentation/examples/libraries/bqplot.py +39 -0
  376. solara/website/pages/documentation/examples/libraries/ipyleaflet.py +33 -0
  377. solara/website/pages/documentation/examples/libraries/ipyleaflet_advanced.py +66 -0
  378. solara/website/pages/documentation/examples/utilities/__init__.py +10 -0
  379. solara/website/pages/documentation/examples/utilities/calculator.py +157 -0
  380. solara/website/pages/documentation/examples/utilities/countdown_timer.py +64 -0
  381. solara/website/pages/documentation/examples/utilities/todo.py +196 -0
  382. solara/website/pages/documentation/examples/visualization/__init__.py +6 -0
  383. solara/website/pages/documentation/examples/visualization/annotator.py +69 -0
  384. solara/website/pages/documentation/examples/visualization/linked_views.py +84 -0
  385. solara/website/pages/documentation/examples/visualization/plotly.py +44 -0
  386. solara/website/pages/documentation/faq/__init__.py +12 -0
  387. solara/website/pages/documentation/faq/content/99-faq.md +76 -0
  388. solara/website/pages/documentation/getting_started/__init__.py +9 -0
  389. solara/website/pages/documentation/getting_started/content/00-quickstart.md +89 -0
  390. solara/website/pages/documentation/getting_started/content/01-introduction.md +125 -0
  391. solara/website/pages/documentation/getting_started/content/02-installing.md +134 -0
  392. solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md +14 -0
  393. solara/website/pages/documentation/getting_started/content/04-tutorials/10_data_science.py +13 -0
  394. solara/website/pages/documentation/getting_started/content/04-tutorials/20-web-app.md +89 -0
  395. solara/website/pages/documentation/getting_started/content/04-tutorials/30-ipywidgets.md +124 -0
  396. solara/website/pages/documentation/getting_started/content/04-tutorials/40-streamlit.md +146 -0
  397. solara/website/pages/documentation/getting_started/content/04-tutorials/50-dash.md +144 -0
  398. solara/website/pages/documentation/getting_started/content/04-tutorials/60-jupyter-dashboard-part1.py +64 -0
  399. solara/website/pages/documentation/getting_started/content/04-tutorials/SF_crime_sample.csv.gz +0 -0
  400. solara/website/pages/documentation/getting_started/content/04-tutorials/_data_science.ipynb +445 -0
  401. solara/website/pages/documentation/getting_started/content/04-tutorials/_jupyter_dashboard_1.ipynb +1000 -0
  402. solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md +11 -0
  403. solara/website/pages/documentation/getting_started/content/05-fundamentals/10-components.md +223 -0
  404. solara/website/pages/documentation/getting_started/content/05-fundamentals/50-state-management.md +88 -0
  405. solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md +7 -0
  406. solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md +273 -0
  407. solara/website/pages/documentation/getting_started/content/07-deploying/20-cloud-hosted.md +80 -0
  408. solara/website/pages/documentation/getting_started/content/80-what-is-lab.md +7 -0
  409. solara/website/pages/documentation/getting_started/content/90-troubleshoot.md +26 -0
  410. solara/website/pages/docutils.py +38 -0
  411. solara/website/pages/showcase/__init__.py +105 -0
  412. solara/website/pages/showcase/domino_code_assist.py +60 -0
  413. solara/website/pages/showcase/planeto_tessa.py +19 -0
  414. solara/website/pages/showcase/solara_dev.py +54 -0
  415. solara/website/pages/showcase/solarathon_2023_team_2.py +22 -0
  416. solara/website/pages/showcase/solarathon_2023_team_4.py +22 -0
  417. solara/website/pages/showcase/solarathon_2023_team_5.py +23 -0
  418. solara/website/pages/showcase/solarathon_2023_team_6.py +34 -0
  419. solara/website/pages/showcase/wanderlust.py +27 -0
  420. solara/website/public/beach.jpeg +0 -0
  421. solara/website/public/logo.svg +6 -0
  422. solara/website/public/social/discord.svg +1 -0
  423. solara/website/public/social/github.svg +1 -0
  424. solara/website/public/social/twitter.svg +3 -0
  425. solara/website/public/success.html +25 -0
  426. solara/website/templates/index.html.j2 +117 -0
  427. solara/website/utils.py +51 -0
  428. solara/widgets/__init__.py +1 -0
  429. solara/widgets/vue/gridlayout.vue +110 -0
  430. solara/widgets/vue/html.vue +4 -0
  431. solara/widgets/vue/navigator.vue +104 -0
  432. solara/widgets/vue/vegalite.vue +115 -0
  433. solara/widgets/widgets.py +66 -0
  434. solara_ui-1.31.0.data/data/etc/jupyter/jupyter_notebook_config.d/solara.json +7 -0
  435. solara_ui-1.31.0.data/data/etc/jupyter/jupyter_server_config.d/solara.json +7 -0
  436. solara_ui-1.31.0.dist-info/METADATA +158 -0
  437. solara_ui-1.31.0.dist-info/RECORD +439 -0
  438. solara_ui-1.31.0.dist-info/WHEEL +5 -0
  439. solara_ui-1.31.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,47 @@
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
@@ -0,0 +1,9 @@
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)
@@ -0,0 +1,42 @@
1
+ """# FigureAltair"""
2
+
3
+ import altair as alt
4
+ import pandas as pd
5
+
6
+ import solara
7
+ from solara.website.utils import apidoc
8
+
9
+ title = "FigureAltair"
10
+
11
+ df = pd.DataFrame({"a": ["A", "B", "C", "D", "E", "F", "G", "H", "I"], "b": [28, 55, 43, 91, 81, 53, 19, 87, 52]})
12
+
13
+
14
+ @solara.component
15
+ def Page():
16
+ click_data, set_click_data = solara.use_state(None)
17
+ hover_data, set_hover_data = solara.use_state(None)
18
+
19
+ chart = alt.Chart(df).mark_bar().encode(x="a", y="b")
20
+
21
+ with solara.Div() as main:
22
+ solara.AltairChart(chart, on_click=set_click_data, on_hover=set_hover_data)
23
+
24
+ solara.Markdown(
25
+ f"""
26
+ Click data:
27
+
28
+ ```
29
+ {click_data}
30
+ ```
31
+
32
+ Hover data:
33
+ ```
34
+ {hover_data}
35
+ ```
36
+ """
37
+ )
38
+
39
+ return main
40
+
41
+
42
+ __doc__ += apidoc(solara.FigureAltair.f) # type: ignore
@@ -0,0 +1,75 @@
1
+ """# Echarts"""
2
+
3
+ import solara
4
+ from solara.website.utils import apidoc
5
+
6
+ options = {
7
+ "bars": {
8
+ "title": {"text": "ECharts Getting Started Example"},
9
+ "tooltip": {},
10
+ "legend": {"data": ["sales"]},
11
+ "xAxis": {"type": "category"},
12
+ "yAxis": {},
13
+ "emphasis": {"itemStyle": {"shadowBlur": 10, "shadowOffsetX": 0, "shadowColor": "rgba(0, 0, 0, 0.5)"}},
14
+ "series": [
15
+ {
16
+ "name": "sales",
17
+ "type": "bar",
18
+ "data": [
19
+ {"name": "Shirts", "value": 5},
20
+ {"name": "Cardigans", "value": 20},
21
+ {"name": "Chiffons", "value": 36},
22
+ {"name": "Pants", "value": 10},
23
+ {"name": "Heels", "value": 10},
24
+ {"name": "Socks", "value": 20},
25
+ ],
26
+ "universalTransition": True,
27
+ }
28
+ ],
29
+ },
30
+ "pie": {
31
+ "title": {"text": "ECharts Getting Started Example"},
32
+ "tooltip": {},
33
+ "legend": {"data": ["sales"]},
34
+ "series": [
35
+ {
36
+ "name": "sales",
37
+ "type": "pie",
38
+ "radius": [0, "50%"],
39
+ "data": [
40
+ {"name": "Shirts", "value": 5},
41
+ {"name": "Cardigans", "value": 20},
42
+ {"name": "Chiffons", "value": 36},
43
+ {"name": "Pants", "value": 10},
44
+ {"name": "Heels", "value": 10},
45
+ {"name": "Socks", "value": 20},
46
+ ],
47
+ "universalTransition": True,
48
+ }
49
+ ],
50
+ },
51
+ }
52
+
53
+
54
+ @solara.component
55
+ def Page():
56
+ option, set_option = solara.use_state("bars")
57
+ click_data, set_click_data = solara.use_state(None)
58
+ mouseover_data, set_mouseover_data = solara.use_state(None)
59
+ mouseout_data, set_mouseout_data = solara.use_state(None)
60
+
61
+ with solara.VBox() as main:
62
+ with solara.Card("Echarts"):
63
+ with solara.ToggleButtonsSingle("bars", on_value=set_option):
64
+ solara.Button("bars")
65
+ solara.Button("pie")
66
+ solara.FigureEcharts(option=options[option], on_click=set_click_data, on_mouseover=set_mouseover_data, on_mouseout=set_mouseout_data)
67
+ with solara.Card("Event data"):
68
+ solara.Markdown(f"**Click data**: {click_data}")
69
+ solara.Markdown(f"**Mouseover data**: {mouseover_data}")
70
+ solara.Markdown(f"**Mouseout data**: {mouseout_data}")
71
+
72
+ return main
73
+
74
+
75
+ __doc__ += apidoc(solara.FigureEcharts.f) # type: ignore
@@ -0,0 +1,30 @@
1
+ """# Matplotlib"""
2
+
3
+ import numpy as np
4
+ from matplotlib.figure import Figure
5
+
6
+ import solara
7
+ from solara.website.utils import apidoc
8
+
9
+ x = np.linspace(0, 2, 100)
10
+
11
+
12
+ @solara.component
13
+ def Page():
14
+ freq, set_freq = solara.use_state(2.0)
15
+ phase, set_phase = solara.use_state(0.1)
16
+ y = np.sin(x * freq + phase)
17
+
18
+ fig = Figure()
19
+ ax = fig.subplots()
20
+ ax.plot(x, y)
21
+ ax.set_ylim(-1.2, 1.2)
22
+
23
+ with solara.VBox() as main:
24
+ solara.FloatSlider("Frequency", value=freq, on_value=set_freq, min=0, max=10)
25
+ solara.FloatSlider("Phase", value=phase, on_value=set_phase, min=0, max=np.pi, step=0.1)
26
+ solara.FigureMatplotlib(fig, dependencies=[freq, phase])
27
+ return main
28
+
29
+
30
+ __doc__ += apidoc(solara.FigureMatplotlib.f) # type: ignore
@@ -0,0 +1,63 @@
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
@@ -0,0 +1,41 @@
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
@@ -0,0 +1,52 @@
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
@@ -0,0 +1,11 @@
1
+ """Large Language Models and Generative AI examples."""
2
+
3
+ import solara
4
+
5
+ title = "AI"
6
+ redirect = None
7
+
8
+
9
+ @solara.component
10
+ def Page():
11
+ return solara.Markdown("Click an example on the left")
@@ -0,0 +1,95 @@
1
+ """
2
+ # Chatbot
3
+
4
+ A way to create a chatbot using OpenAI's GPT-4 API, utilizing their new API, and the streaming feature.
5
+ """
6
+
7
+ import os
8
+ from typing import List
9
+
10
+ from openai import OpenAI
11
+ from typing_extensions import TypedDict
12
+
13
+ import solara
14
+ import solara.lab
15
+
16
+
17
+ class MessageDict(TypedDict):
18
+ role: str
19
+ content: str
20
+
21
+
22
+ if os.getenv("OPENAI_API_KEY") is None and "OPENAI_API_KEY" not in os.environ:
23
+ openai = None
24
+ else:
25
+ openai = OpenAI()
26
+ openai.api_key = os.getenv("OPENAI_API_KEY") # type: ignore
27
+
28
+ messages: solara.Reactive[List[MessageDict]] = solara.reactive([])
29
+
30
+
31
+ def no_api_key_message():
32
+ messages.value = [
33
+ {
34
+ "role": "assistant",
35
+ "content": "No OpenAI API key found. Please set your OpenAI API key in the environment variable `OPENAI_API_KEY`.",
36
+ },
37
+ ]
38
+
39
+
40
+ def add_chunk_to_ai_message(chunk: str):
41
+ messages.value = [
42
+ *messages.value[:-1],
43
+ {
44
+ "role": "assistant",
45
+ "content": messages.value[-1]["content"] + chunk,
46
+ },
47
+ ]
48
+
49
+
50
+ @solara.component
51
+ def Page():
52
+ user_message_count = len([m for m in messages.value if m["role"] == "user"])
53
+
54
+ def send(message):
55
+ messages.value = [
56
+ *messages.value,
57
+ {"role": "user", "content": message},
58
+ ]
59
+
60
+ def call_openai():
61
+ if user_message_count == 0:
62
+ return
63
+ if openai is None:
64
+ no_api_key_message()
65
+ return
66
+ response = openai.chat.completions.create(
67
+ model="gpt-4-1106-preview",
68
+ messages=messages.value, # type: ignore
69
+ stream=True,
70
+ )
71
+ messages.value = [*messages.value, {"role": "assistant", "content": ""}]
72
+ for chunk in response:
73
+ if chunk.choices[0].finish_reason == "stop": # type: ignore
74
+ return
75
+ add_chunk_to_ai_message(chunk.choices[0].delta.content) # type: ignore
76
+
77
+ task = solara.lab.use_task(call_openai, dependencies=[user_message_count]) # type: ignore
78
+
79
+ with solara.Column(
80
+ style={"width": "700px", "height": "50vh"},
81
+ ):
82
+ with solara.lab.ChatBox():
83
+ for item in messages.value:
84
+ with solara.lab.ChatMessage(
85
+ user=item["role"] == "user",
86
+ avatar=False,
87
+ name="ChatGPT" if item["role"] == "assistant" else "User",
88
+ color="rgba(0,0,0, 0.06)" if item["role"] == "assistant" else "#ff991f",
89
+ avatar_background_color="primary" if item["role"] == "assistant" else None,
90
+ border_radius="20px",
91
+ ):
92
+ solara.Markdown(item["content"])
93
+ if task.pending:
94
+ solara.Text("I'm thinking...", style={"font-size": "1rem", "padding-left": "20px"})
95
+ solara.lab.ChatInput(send_callback=send, disabled=task.pending)
@@ -0,0 +1,107 @@
1
+ """# GPT-4 token encoder and decoder
2
+
3
+ This example shows how to use a language model tokenizer to encode and decode and how to search for a token
4
+
5
+ Inspired by: [Understanding GPT tokenizers by Simon Willison](https://simonwillison.net/2023/Jun/8/gpt-tokenizers/)
6
+
7
+
8
+ ## Note
9
+
10
+ Install pandas and tiktoken with `pip install pandas tiktoken`
11
+
12
+ """
13
+
14
+ import random
15
+
16
+ import pandas as pd
17
+ import tiktoken
18
+
19
+ import solara
20
+ import solara.lab
21
+
22
+ # Get tokenizer for gpt-4
23
+ tokenizer = tiktoken.encoding_for_model("gpt-4")
24
+
25
+ # Create dataframe mapping token IDs and tokens
26
+ MAX_TOKENS = 50257
27
+ df = pd.DataFrame()
28
+ df["token ID"] = range(MAX_TOKENS)
29
+ df["token"] = [tokenizer.decode([i]) for i in range(MAX_TOKENS)]
30
+
31
+ sentence = solara.reactive("Example text is here")
32
+ tokens_ids_to_lookup = solara.reactive("")
33
+ tokens_filter = solara.reactive("")
34
+
35
+
36
+ @solara.component
37
+ def GithubAvatar(name: str, handle: str, img: str):
38
+ with solara.v.Html(tag="a", attributes={"href": f"https://github.com/{handle}/", "target": "_blank"}):
39
+ with solara.v.ListItem(class_="pa-0"):
40
+ with solara.v.ListItemAvatar(color="grey darken-3"):
41
+ solara.v.Img(
42
+ class_="elevation-6",
43
+ src=img,
44
+ )
45
+ with solara.v.ListItemContent():
46
+ solara.v.ListItemTitle(children=["By " + name])
47
+
48
+
49
+ @solara.component
50
+ def Token(token: int):
51
+ # create random color dependent on the position
52
+ random.seed(token)
53
+ random_color = "".join([random.choice("0123456789ABCDEF") for k in range(6)])
54
+ with solara.Div(style="display: inline;"):
55
+ with solara.Div(
56
+ style={
57
+ "display": "inline",
58
+ "padding": "6px",
59
+ "border-right": "3px solid white",
60
+ "line-height": "3em",
61
+ "font-family": "courier",
62
+ "background-color": f"#{random_color}",
63
+ "color": "white",
64
+ "position": "relative",
65
+ },
66
+ ):
67
+ solara.Text(
68
+ " " + str(token),
69
+ style={
70
+ "display": "inline",
71
+ "position": "absolute",
72
+ "top": "5.5ch",
73
+ "line-height": "1em",
74
+ "left": "-0.5px",
75
+ "font-size": "0.45em",
76
+ },
77
+ )
78
+ solara.Text(str(tokenizer.decode([token])))
79
+
80
+
81
+ @solara.component
82
+ def Page():
83
+ with solara.Column(margin=10):
84
+ solara.Markdown("# GPT-4 token encoder and decoder")
85
+ solara.Markdown("This is an educational tool for understanding how tokenization works.")
86
+ GithubAvatar(
87
+ "Alonso Silva Allende",
88
+ "alonsosilvaallende",
89
+ "https://avatars.githubusercontent.com/u/30263736?v=4",
90
+ )
91
+
92
+ solara.InputText("Enter text to tokenize it:", value=sentence, continuous_update=True)
93
+ tokens = tokenizer.encode(sentence.value)
94
+ with solara.Div(style="display: inline;"):
95
+ for token in tokens:
96
+ Token(token)
97
+
98
+ solara.InputText("Or convert space separated tokens to text:", value=tokens_ids_to_lookup, continuous_update=True)
99
+ token_input = [int(span) for span in tokens_ids_to_lookup.value.split(" ") if span != ""]
100
+ text_output = tokenizer.decode(token_input)
101
+ solara.Markdown(f"{text_output}")
102
+
103
+ solara.Markdown("## Search tokens")
104
+ solara.InputText("Search for a token:", value=tokens_filter, continuous_update=True)
105
+ df_subset = df[df["token"].str.startswith(tokens_filter.value)]
106
+ solara.Markdown(f"{df_subset.shape[0]:,} results")
107
+ solara.DataFrame(df_subset, items_per_page=10)
@@ -0,0 +1,10 @@
1
+ """Demonstrates very basic usage of Solara."""
2
+
3
+ import solara
4
+
5
+ redirect = None
6
+
7
+
8
+ @solara.component
9
+ def Page():
10
+ return solara.Markdown("Should not see me")
@@ -0,0 +1,28 @@
1
+ """# Interactive sine wave
2
+
3
+
4
+ This example shows how to have two slider control a visualization.
5
+
6
+ """
7
+
8
+ import numpy as np
9
+ import plotly.express as px
10
+
11
+ import solara
12
+
13
+ x = np.linspace(0, 2, 100)
14
+
15
+ title = "Interactive sine wave"
16
+ freq = solara.reactive(2.0)
17
+ phase = solara.reactive(0.1)
18
+
19
+
20
+ @solara.component
21
+ def Page():
22
+ y = np.sin(x * freq.value + phase.value)
23
+
24
+ solara.FloatSlider("Frequency", value=freq, min=0, max=10)
25
+ solara.FloatSlider("Phase", value=phase, min=0, max=np.pi, step=0.1)
26
+
27
+ fig = px.line(x=x, y=y)
28
+ solara.FigurePlotly(fig)
@@ -0,0 +1,10 @@
1
+ """Apps that run fullscreen"""
2
+
3
+ import solara
4
+
5
+ redirect = None
6
+
7
+
8
+ @solara.component
9
+ def Page():
10
+ return solara.Markdown("Should not see me")
@@ -0,0 +1,3 @@
1
+ redirect = "/apps/authorization"
2
+
3
+ Page = True
@@ -0,0 +1,3 @@
1
+ redirect = "/apps/layout-demo"
2
+
3
+ Page = True
@@ -0,0 +1,3 @@
1
+ redirect = "/apps/multipage"
2
+
3
+ Page = True
@@ -0,0 +1,3 @@
1
+ redirect = "/apps/scatter"
2
+
3
+ Page = True
@@ -0,0 +1,3 @@
1
+ redirect = "/apps/scrolling"
2
+
3
+ Page = True
@@ -0,0 +1,3 @@
1
+ redirect = "/apps/tutorial-streamlit"
2
+
3
+ Page = True
@@ -0,0 +1,10 @@
1
+ """"""
2
+
3
+ import solara
4
+
5
+ redirect = None
6
+
7
+
8
+ @solara.component
9
+ def Page():
10
+ return solara.Markdown("Should not see me")