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,148 +0,0 @@
1
- ---
2
- title: Caching resources for your solara application or dashboard
3
- description: Solara has a dict-like object at `solara.cache.storage` that can be used to store objects in under a key. So we can use this global
4
- object as normal dict.
5
- ---
6
- # Caching
7
-
8
- Solara has a dict-like object at `solara.cache.storage` that can be used to store objects in under a key. So we can use this global
9
- object as normal dict, e.g.:
10
-
11
- ```python
12
- import solara
13
- solara.cache.storage["my-key"] = expensive_function_call()
14
- assert "my-key" in solara.cache.storage
15
- ```
16
-
17
- Note that at any time later on, the key may be removed from this object, as a cache always has a limited capacity.
18
-
19
- The `solara.cache.storage` cache object is used by [memoize](/documentation/api/utilities/memoize), if no storage argument is passed to this decorator.
20
-
21
- ## Types of cache
22
-
23
- Solara core comes by default with an in-memory cache using a [LRU](https://en.wikipedia.org/wiki/Cache_replacement_policies#Least_recently_used_(LRU)) (Least recently used) strategy. When the
24
- cache becomes too full, this removes entries used least recently.
25
-
26
- The cache is set by default to:
27
- ```python
28
- solara.cache.storage = solara.cache.Memory(maxsize=128)
29
- ```
30
-
31
- Which will remove the least recently used element when the 129th item is added.
32
-
33
- The memory cache is also configurable using environment variable:
34
- ```
35
- $ export SOLARA_CACHE=memory # already the default
36
- $ export SOLARA_CACHE_MEMORY_MAX_ITEMS=128 # already the default
37
- ```
38
-
39
- ## Custom caches
40
- An infinite cache can be set using:
41
-
42
- ```python
43
- solara.cache.storage = {} # a regular dict
44
- ```
45
-
46
- The [cachetools](https://cachetools.readthedocs.io/) project has some caching types that behave like a Python dict, and are compatible with Solara, e.g.:
47
-
48
- ```python
49
- import cachetools
50
- import solara
51
- solara.cache.storage = cachetools.FIFOCache(maxsize=100)
52
- ```
53
-
54
- ## Solara-enterprise
55
-
56
- With solara-enterprise, we have more cache storage options.
57
-
58
- ### Memory (byte size based)
59
-
60
- The cache will limit the total number of bytes to a set maximum, instead of the number of items as is with the normal 'memory' cache.
61
-
62
- This can be set using code:
63
-
64
- ```python
65
- import solara
66
- solara.cache.configure("memory-size")
67
- # or more explicit
68
- import solara_enterprise.cache.memory_size
69
- solara.cache.storage = solara_enterprise.cache.memory_size.MemorySize(
70
- max_size="1GB" # already the default
71
- )
72
- ```
73
-
74
- The 'memory-size' cache can also be configured using environment variables:
75
-
76
- ```
77
- $ export SOLARA_CACHE=memory-size
78
- $ export SOLARA_CACHE_MEMORY_MAX_SIZE=1GB # already the default
79
-
80
- ```
81
-
82
-
83
- ### Disk cache
84
-
85
- This cache will persist the entries to disk, allowing multiple processes to share the same data. This cache type is ideal when using multiple workers on a single node.
86
-
87
- This can be set using code:
88
-
89
- ```python
90
- import solara
91
- solara.cache.configure("disk")
92
- # or more explicit
93
- import solara_enterprise.cache.disk
94
- solara.cache.storage = solara_enterprise.cache.disk.Disk(
95
- max_size="10GB", path="/home/maarten/.solara/cache" # already the default
96
- )
97
- ```
98
-
99
- Or configurable using environment variable:
100
- ```
101
- $ export SOLARA_CACHE=disk
102
- $ export SOLARA_CACHE_DISK_MAX_SIZE=10GB # already the default
103
- $ export SOLARA_CACHE_PATH_=/home/maarten/.solara/cache # already the default
104
- ```
105
-
106
- ### Redis cache
107
-
108
- This cache will store the entries in a [Redis](https://redis.io/) server, allowing multiple nodes to share the same data. This is ideal in a cluster/distributed configuration.
109
-
110
- This can be set using code:
111
-
112
- ```python
113
- import solara
114
- solara.cache.configure("redis")
115
- # or more explicit
116
- import solara_enterprise.cache.redis
117
- # optionally pass in a redis.Client object
118
- solara.cache.storage = solara_enterprise.cache.redis.Redis()
119
- ```
120
-
121
- Or configured using environment variable:
122
- ```
123
- $ export SOLARA_CACHE=redis
124
- ```
125
-
126
- ### Multi-level cache
127
-
128
- We can chain a few caches to get a multilevel cache. This allows us to get the benefits of the low latency memory cache while sharing it with other workers and nodes.
129
-
130
- ```python
131
- import solara
132
- solara.cache.configure("memory,disk,redis")
133
- # or more explicit
134
- import solara_enterprise.cache.multi_level
135
- import solara_enterprise.cache.disk
136
- import solara_enterprise.cache.redis
137
- l1 = solara.cache.Memory()
138
- l2 = solara_enterprise.cache.disk.Disk()
139
- l3 = solara_enterprise.cache.redis.Redis()
140
- solara.cache.storage = solara_enterprise.cache.multi_level.MultiLevel(
141
- l1, l2, l3
142
- )
143
- ```
144
-
145
- Or configured using an environment variable:
146
- ```
147
- $ export SOLARA_CACHE="memory,disk,redis"
148
- ```
@@ -1,7 +0,0 @@
1
- ---
2
- title: Overview of how to deploy your Solara application or dashboard
3
- description: Solara apps can be easily either self hosted, or hosted on a variety of cloud platforms.
4
- ---
5
- # Deploying a solara app
6
-
7
- A Solara app can be [self hosted](/documentation/getting_started/deploying/self-hosted) or [cloud hosted](/documentation/getting_started/deploying/cloud-hosted).
@@ -1,273 +0,0 @@
1
- ---
2
- title: Deploying and hosting your own Solara app
3
- description: Solara is compatible with many different hosting solutions, such as Flask, Starlette, FastAPI, and Voila.
4
- ---
5
- # Self hosted deployment
6
-
7
- * [Flask](#flask)
8
- * [Starlette](#flask)
9
- * [FastAPI](#flask)
10
- * [Voila](#voila)
11
- * [Panel](#panel)
12
- * [Nginx](#nginx)
13
- * [Docker](#docker)
14
-
15
-
16
- Solara runs on several web frameworks, such as
17
-
18
- * [Flask](https://flask.palletsprojects.com/)
19
- * [Starlette](https://www.starlette.io/) (and thus [FastAPI](https://fastapi.tiangolo.com/))
20
-
21
- The most straightforward and well-tested method to deploy Solara is through the `solara run` command:
22
-
23
- $ solara run sol.py --production
24
-
25
- which uses Starlette under the hood.
26
-
27
- Your `sol.py` file could resemble the following:
28
-
29
- ```python
30
- import solara
31
-
32
- clicks = solara.reactive(0)
33
-
34
-
35
- @solara.component
36
- def Page():
37
- color = "green"
38
- if clicks.value >= 5:
39
- color = "red"
40
-
41
- def increment():
42
- clicks.value += 1
43
- print("clicks", clicks) # noqa
44
-
45
- solara.Button(label=f"Clicked: {clicks}", on_click=increment, color=color)
46
- ```
47
-
48
-
49
- If you're aiming to integrate Solara with other web frameworks such as [Flask](https://flask.palletsprojects.com/deploying/), [Starlette](https://www.starlette.io/), or [FastAPI](https://fastapi.tiangolo.com/), you normally do not execute `solara run sol.py`.
50
- Instead, start your chosen web framework as directed by their documentation and configure Solara via environment variables. For instance, instead of running the development server like `solara run sol.py`, set the `SOLARA_APP` environment variable to `sol.py`:
51
-
52
- $ export SOLARA_APP=sol.py
53
- # run flask or starlette
54
-
55
- or look at the examples below for more detailed instructions per web framework. Note that when solara is used this way it [by default runs in production mode](https://solara.dev/documentation/advanced/understanding/solara-server).
56
-
57
- ## Flask
58
-
59
- For Flask, you can consult [the Flask documentation](https://flask.palletsprojects.com/deploying/).
60
-
61
- A common solution is to use [gunicorn](https://gunicorn.org/) as the WSGI HTTP Server.
62
-
63
- A typical command would be:
64
- ```
65
- $ SOLARA_APP=sol.py gunicorn --workers 4 --threads=20 -b 0.0.0.0:8765 solara.server.flask:app
66
- ```
67
-
68
- Note that we need at least 1 thread per user due to the use of a websocket.
69
-
70
- ### Embedding in an existing Flask application
71
-
72
- If you already have a Flask app and want to add your Solara app behind a prefix, say `'/solara/'`, you can add the [Blueprint](https://flask.palletsprojects.com/blueprints/) to your existing app as follows.
73
-
74
- ```python
75
- from flask import Flask
76
- import solara.server.flask
77
-
78
- app = Flask(__name__)
79
- app.register_blueprint(solara.server.flask.blueprint, url_prefix="/solara/")
80
-
81
- @app.route("/")
82
- def hello_world():
83
- return "<p>Hello, World!</p>"
84
- ```
85
-
86
- Save this file as `"app.py"` and run
87
-
88
- $ SOLARA_APP=sol.py flask run
89
- * Running on http://127.0.0.1:5000/
90
-
91
- If you navigate to [http://127.0.0.1:5000/solara](http://127.0.0.1:5000/solara) you should see the Solara app.
92
-
93
- ## Starlette
94
-
95
- For [Starlette](https://www.starlette.io/) we will assume [uvicorn](http://www.uvicorn.org/) for the ASGI webserver and follow their [deployment documentation](https://www.uvicorn.org/deployment/):
96
-
97
- ```
98
- $ SOLARA_APP=sol.py uvicorn --workers 4 --host 0.0.0.0 --port 8765 solara.server.starlette:app
99
- ```
100
-
101
- ### Embedding in an existing Starlette application
102
-
103
- If you already have a Starlette app and want to add your Solara app behind a prefix, say `'/solara/'`, you can mount the Starlette routes for Solara to your existing app as follows.
104
-
105
- ```python
106
- from starlette.applications import Starlette
107
- from starlette.requests import Request
108
- from starlette.responses import JSONResponse
109
- from starlette.routing import Mount, Route
110
-
111
- import solara.server.starlette
112
-
113
-
114
- def myroot(request: Request):
115
- return JSONResponse({"framework": "solara"})
116
-
117
-
118
- routes = [
119
- Route("/", endpoint=myroot),
120
- Mount("/solara/", routes=solara.server.starlette.routes),
121
- ]
122
-
123
- app = Starlette(routes=routes)
124
- ```
125
-
126
- Save this file as `"solara_on_starlette.py"` and run
127
-
128
- ```
129
- $ SOLARA_APP=sol.py uvicorn solara_on_starlette:app
130
- ...
131
- INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
132
- ...
133
- ```
134
-
135
- If you navigate to [http://127.0.0.1:8000/solara](http://127.0.0.1:8000/solara) you should see the Solara app.
136
-
137
- ## FastAPI
138
-
139
- Since [FastAPI](https://fastapi.tiangolo.com/) is built on Starlette, see the section on [Starlette](#starlette) about how to deploy a Starlette app.
140
-
141
- ### Embedding in an existing FastAPI application
142
-
143
- Use `app.mount` to mount the Solara app into your existing FastAPI app.
144
-
145
- ```python
146
- from fastapi import FastAPI
147
- import solara.server.fastapi
148
-
149
- app = FastAPI()
150
-
151
-
152
- @app.get("/")
153
- def read_root():
154
- return {"Hello": "World"}
155
-
156
-
157
- app.mount("/solara/", app=solara.server.fastapi.app)
158
- ```
159
-
160
- Save this file as `"solara_on_fastapi.py"` and run
161
-
162
- ```
163
- $ SOLARA_APP=sol.py uvicorn solara_on_fastapi:app
164
- ...
165
- INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
166
- ...
167
- ```
168
-
169
- If you navigate to [http://127.0.0.1:8000/solara](http://127.0.0.1:8000/solara) you should see the Solara app.
170
-
171
-
172
- ## Voila
173
-
174
- If you use Voila, [you can use those deployment options](https://voila.readthedocs.io/en/stable/deploy.html).
175
-
176
- Make sure you run a notebook where you display the app, e.g.
177
- ```python
178
- @solara.component
179
- def Page():
180
- ...
181
- element = Page()
182
- display(element)
183
- ```
184
-
185
- Or consider using [Voila-vuetify](https://github.com/voila-dashboards/voila-vuetify).
186
-
187
- Solara apps in Voila do not have support for [routing](/documentation/advanced/understanding/routing)/[multipage](/documentation/advanced/howto/multipage).
188
-
189
-
190
- ## Panel
191
-
192
- [Panel](https://panel.holoviz.org/) supports [IPyWidgets](https://panel.holoviz.org/reference/panes/IPyWidget.html), which
193
- means we can also embed the resulting widget from Reacton or Solara. See their [section on deployment](https://panel.holoviz.org/user_guide/Server_Deployment.html) and use the following code as an example of how to include a react component.
194
- ```python
195
- import panel as pn
196
- import solara
197
-
198
-
199
- @solara.component
200
- def ButtonClick(label="Hi"):
201
- clicks, set_clicks = solara.use_state(0)
202
- def increment():
203
- set_clicks(clicks + 1)
204
- return solara.Button(f"{label}: Clicked {clicks} times", on_click=increment)
205
-
206
- # this creates just an element, Panel doesn't know what to do with that
207
- element = ButtonClick("Solara+Panel")
208
- # we explicitly ask Reacton to render it, and give us the widget
209
- button_widget, render_context = reacton.render_fixed(element)
210
- # mark this panel to be served by the panel server
211
- pn.panel(button_widget).servable()
212
- ```
213
-
214
- For development/testing purposes, run this script as:
215
-
216
- $ panel serve solara_in_panel.py
217
-
218
- Solara apps in Panel do not have support for [routing](/documentation/advanced/understanding/routing)/[multipage](/documentation/advanced/howto/multipage).
219
-
220
- ## Nginx
221
-
222
- If you use Nginx as a (reverse) proxy in front of your Python web server, a minimal
223
- configuration would be:
224
-
225
- ```
226
- server {
227
- server_name widgetti.io;
228
- listen 80
229
- location /solara/ {
230
- # the local solara server (could be using Starlette/uvicorn)
231
- proxy_pass http://localhost:8765/;
232
-
233
- proxy_set_header Host $host;
234
- proxy_set_header X-Real-IP $remote_addr;
235
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
236
- proxy_set_header X-Script-Name /solara; # informs solara to produce correct urls
237
-
238
- proxy_http_version 1.1;
239
- proxy_set_header Upgrade $http_upgrade;
240
- proxy_set_header Connection "upgrade";
241
- proxy_read_timeout 86400;
242
- }
243
- }
244
- ```
245
-
246
- Note that if we use `location /` instead of `location /solara/`, we can skip the `proxy_set_header X-Script-Name /solara` line.
247
-
248
- An alternative to using the `X-Script-Name` header with uvicorn, would be to pass the `--root-path` flag, e.g.:
249
-
250
- ```
251
- $ SOLARA_APP=sol.py uvicorn --workers 1 --root-path /solara -b 0.0.0.0:8765 solara.server.flask:app
252
- ```
253
-
254
- ## Docker
255
-
256
- There is nothing special about running Solara in Docker. The only things you probably need to change is the interface the server binds to.
257
- Solara by default binds to localhost, so that it is not accessible from the outside world. Apart from that localhost (or `::1` in case of IPv6)
258
- might not be available, you probably want the outside world to see your Solara app. For that, you can use `--host=0.0.0.0` or `--host=::` option to bind to all interfaces.
259
-
260
- Your Dockerfile could look like:
261
-
262
- ```Dockerfile
263
- FROM ....
264
-
265
- ...
266
- CMD ["solara", "run", "sol.py", "--host=0.0.0.0", "--production"]
267
-
268
- ```
269
-
270
- For a complete example, you can take a look at:
271
- * [https://huggingface.co/spaces/solara-dev/template](https://huggingface.co/spaces/solara-dev/template)
272
- * [https://huggingface.co/spaces/giswqs/solara-template/tree/main](https://huggingface.co/spaces/giswqs/solara-template/tree/main)
273
- * [https://github.com/opengeos/solara-template](https://github.com/opengeos/solara-template)
@@ -1,80 +0,0 @@
1
- ---
2
- title: Hosting your Solara app on the cloud
3
- description: Solara apps can be easily hosted either through our service, or via Ploomber cloud.
4
- ---
5
- # Cloud hosted
6
-
7
- ## Integrated solution (in development)
8
-
9
- Are you interested in a cloud hosted solution?
10
-
11
- ```bash
12
- $ solara deploy
13
- ...
14
- Your app is live on awesomeapp-mystartup-gh.solara.run
15
- ```
16
-
17
- Sign up for our waiting list to get early access.
18
-
19
- <!-- Begin Mailchimp Signup Form -->
20
- <link href="//cdn-images.mailchimp.com/embedcode/classic-071822.css" rel="stylesheet" type="text/css">
21
- <style type="text/css">
22
- #mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; width:600px;}
23
- /* Add your own Mailchimp form style overrides in your site stylesheet or in this style block.
24
- We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */
25
- </style>
26
- <div id="mc_embed_signup">
27
- <form action="https://gmail.us13.list-manage.com/subscribe/post?u=1dcdd74de47214edace5b6f49&amp;id=c60b5def86&amp;f_id=00f4c1e2f0" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
28
- <div id="mc_embed_signup_scroll">
29
- <h2>Sign up for our waiting list</h2>
30
- <div class="indicates-required"><span class="asterisk">*</span> indicates required</div>
31
- <div class="mc-field-group">
32
- <label for="mce-EMAIL">Email Address <span class="asterisk">*</span>
33
- </label>
34
- <input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL" required>
35
- <span id="mce-EMAIL-HELPERTEXT" class="helper_text"></span>
36
- </div>
37
- <div class="mc-field-group">
38
- <label for="mce-FNAME">First Name </label>
39
- <input type="text" value="" name="FNAME" class="" id="mce-FNAME">
40
- <span id="mce-FNAME-HELPERTEXT" class="helper_text"></span>
41
- </div>
42
- <div class="mc-field-group">
43
- <label for="mce-LNAME">Last Name </label>
44
- <input type="text" value="" name="LNAME" class="" id="mce-LNAME">
45
- <span id="mce-LNAME-HELPERTEXT" class="helper_text"></span>
46
- </div>
47
- <div class="mc-field-group">
48
- <label for="mce-COMPANY">Company </label>
49
- <input type="text" value="" name="COMPANY" class="" id="mce-COMPANY">
50
- <span id="mce-COMPANY-HELPERTEXT" class="helper_text"></span>
51
- </div>
52
-
53
- <div class="mc-field-group">
54
- <label for="mce-WHYCLOUD">Why are you interested in a cloud hosted solution? </label>
55
- <input type="text" value="" name="WHYCLOUD" class="" id="mce-WHYCLOUD">
56
- <span id="mce-WHYCLOUD-HELPERTEXT" class="helper_text"></span>
57
- </div>
58
-
59
- <div id="mce-responses" class="clear foot">
60
- <div class="response" id="mce-error-response" style="display:none"></div>
61
- <div class="response" id="mce-success-response" style="display:none"></div>
62
- </div> <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
63
- <div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_1dcdd74de47214edace5b6f49_c60b5def86" tabindex="-1" value=""></div>
64
- <div class="optionalParent">
65
- <div class="clear foot">
66
- <input type="submit" value="Sign up" name="subscribe" id="mc-embedded-subscribe" class="button">
67
- </div>
68
- </div>
69
- </div>
70
- </form>
71
- </div>
72
- <script type='text/javascript' src='//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js'></script><script type='text/javascript'>(function($) {window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';fnames[3]='ADDRESS';ftypes[3]='address';fnames[4]='PHONE';ftypes[4]='phone';fnames[5]='BIRTHDAY';ftypes[5]='birthday';fnames[6]='USECASE';ftypes[6]='text';fnames[7]='COMPANY';ftypes[7]='text';fnames[8]='POSITION';ftypes[8]='text';}(jQuery));var $mcj = jQuery.noConflict(true);</script>
73
- <!--End mc_embed_signup-->
74
-
75
-
76
- ## Ploomber Cloud
77
-
78
- You can use [Ploomber Cloud](https://www.platform.ploomber.io) to deploy Solara apps for free (no credit card required).
79
-
80
- To learn more, check out their [documentation.](https://docs.cloud.ploomber.io/en/latest/apps/solara.html)
@@ -1,7 +0,0 @@
1
- ---
2
- title: What is Solara.lab?
3
- description: Solara lab is a subpackage in solara containing Components, hooks and parts of Solara that are slightly experimental.
4
- ---
5
- # What is Solara lab?
6
-
7
- Solara lab is a subpackage in solara containing Components, hooks and parts of Solara that are slightly experimental.
@@ -1,26 +0,0 @@
1
- ---
2
- title: Troubleshoot issues with your Solara application
3
- description: It is common to run into some issues when developing your application. See here for best practices for troubleshooting anything you run into.
4
- ---
5
- # Troubleshoot
6
-
7
- ## Issues in Jupyter
8
-
9
- The most common issue in the Jupyter notebook, or Jupyter Lab happens when the notebook server and the kernel do not share the same Python environment. When you install solara via the notebook (e.g. `!pip install solara`), it will install the ipyvue and ipyvuetify libraries, two of its dependencies. These libraries will get installed in the Python environment of your Python kernel.
10
-
11
- If your Jupyter notebook or Jupyter Lab server runs in a different Python environment, your browser will not load the Javascript libraries it needs to. In order to get the server to provide these libraries to your browser, we also need to install ipyvue and ipyvuetify in the Python environment of your server.
12
-
13
- For instance, running the following in AWS SageMaker, will give you information about the Python environment of the kernel.
14
-
15
- ```python
16
- >>> import sys
17
- >>> sys.executable
18
- '/home/ec2-user/anaconda3/envs/python3/bin/python'
19
- ```
20
-
21
- While if we inspect the output of `!ps aux | grep jupyter`, we see that the notebook server is using the Python executable at `/home/ec2-user/anaconda3/envs/JupyterSystemEnv/bin/python3.7`.
22
-
23
- The solution is to run `!/home/ec2-user/anaconda3/envs/JupyterSystemEnv/bin/python3.7 -m pip install ipyvue ipyvuetify`, and refresh your browser.
24
-
25
- The function `solara.check_jupyter()` will perform these checks for you and tell you what to do. However, if it fails and you
26
- end up in this documentation, we should try to improve it by opening an [Issue on GitHub](https://github.com/widgetti/solara/issues/new).
@@ -1,38 +0,0 @@
1
- import inspect
2
-
3
- import solara
4
- from solara.alias import rw
5
- from solara.components import Markdown
6
-
7
-
8
- @solara.component
9
- def Sample(code, component):
10
- locals = globals().copy()
11
- exec(code, locals)
12
- c = locals[component]
13
- with rw.VBox() as main:
14
- Markdown(
15
- f"""
16
- ```python
17
- {code}
18
- ```
19
- """
20
- )
21
- c()
22
- return main
23
-
24
-
25
- @solara.component
26
- def IncludeComponent(component, pre="", highlight=[], **kwargs):
27
- code = inspect.getsource(component.f)
28
- with rw.VBox(layout={"padding": "20px", "max_width": "1024px", "border": "1px #333 solid"}) as main:
29
- Markdown(
30
- f"""
31
- ```python
32
- {pre}{code}
33
- ```
34
- """,
35
- highlight=highlight,
36
- )
37
- component(**kwargs)
38
- return main