solara 1.29.1__py2.py3-none-any.whl → 1.30.1__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 (286) hide show
  1. solara/__init__.py +5 -5
  2. solara/__main__.py +6 -2
  3. solara/autorouting.py +88 -56
  4. solara/cache.py +2 -2
  5. solara/checks.html +1 -1
  6. solara/components/__init__.py +1 -1
  7. solara/components/applayout.py +5 -5
  8. solara/components/button.py +4 -4
  9. solara/components/card.py +1 -2
  10. solara/components/component_vue.py +9 -8
  11. solara/components/cross_filter.py +6 -7
  12. solara/components/datatable.py +2 -3
  13. solara/components/figure_altair.py +1 -1
  14. solara/components/file_download.py +2 -2
  15. solara/components/file_drop.py +76 -33
  16. solara/components/file_drop.vue +24 -10
  17. solara/components/head.py +1 -2
  18. solara/components/head_tag.py +2 -3
  19. solara/components/image.py +1 -1
  20. solara/components/link.py +3 -4
  21. solara/components/meta.py +1 -1
  22. solara/components/misc.py +5 -9
  23. solara/datatypes.py +2 -2
  24. solara/hooks/use_reactive.py +2 -2
  25. solara/lab/components/confirmation_dialog.py +1 -1
  26. solara/lab/components/tabs.py +6 -6
  27. solara/reactive.py +1 -1
  28. solara/routing.py +9 -8
  29. solara/scope/__init__.py +3 -2
  30. solara/server/app.py +44 -1
  31. solara/server/assets/style.css +6 -0
  32. solara/server/esm.py +28 -4
  33. solara/server/kernel_context.py +78 -7
  34. solara/server/patch.py +3 -0
  35. solara/server/reload.py +2 -2
  36. solara/server/server.py +3 -3
  37. solara/server/settings.py +1 -0
  38. solara/server/starlette.py +66 -33
  39. solara/server/static/solara_bootstrap.py +1 -1
  40. solara/server/templates/solara.html.j2 +62 -42
  41. solara/tasks.py +1 -6
  42. solara/util.py +23 -1
  43. solara/website/assets/custom.css +56 -0
  44. solara/website/components/__init__.py +1 -0
  45. solara/website/components/algolia_api.vue +157 -0
  46. solara/website/components/docs.py +118 -0
  47. solara/website/components/header.py +20 -10
  48. solara/website/components/hero.py +1 -1
  49. solara/website/components/markdown.py +30 -0
  50. solara/website/pages/__init__.py +234 -20
  51. solara/website/pages/apps/jupyter-dashboard-1.py +1 -1
  52. solara/website/pages/apps/multipage/__init__.py +1 -1
  53. solara/website/pages/apps/multipage/page2.py +1 -1
  54. solara/website/pages/apps/scatter.py +21 -7
  55. solara/website/pages/changelog/__init__.py +8 -0
  56. solara/website/pages/{docs/content/95-changelog.md → changelog/changelog.md} +43 -2
  57. solara/website/pages/contact/__init__.py +8 -0
  58. solara/website/pages/documentation/__init__.py +184 -0
  59. solara/website/pages/{docs → documentation/advanced}/__init__.py +2 -2
  60. solara/website/pages/documentation/advanced/content/00-overview.md +1 -0
  61. solara/website/pages/{docs → documentation/advanced}/content/10-howto/00-overview.md +5 -0
  62. solara/website/pages/{docs/content/10-howto/20-multipage.md → documentation/advanced/content/10-howto/10-multipage.md} +9 -5
  63. solara/website/pages/{docs/content/10-howto/30-layout.md → documentation/advanced/content/10-howto/20-layout.md} +26 -21
  64. solara/website/pages/{docs/content/10-howto/50-testing.md → documentation/advanced/content/10-howto/30-testing.md} +5 -0
  65. solara/website/pages/{docs/content/10-howto/51-debugging.md → documentation/advanced/content/10-howto/31-debugging.md} +4 -1
  66. solara/website/pages/{docs/content/10-howto/80-embed.md → documentation/advanced/content/10-howto/40-embed.md} +7 -1
  67. solara/website/pages/{docs/content/10-howto/ipywidget_libraries.md → documentation/advanced/content/10-howto/50-ipywidget_libraries.md} +4 -0
  68. solara/website/pages/documentation/advanced/content/20-understanding/00-introduction.md +10 -0
  69. solara/website/pages/{docs → documentation/advanced}/content/20-understanding/05-ipywidgets.md +5 -0
  70. solara/website/pages/{docs → documentation/advanced}/content/20-understanding/06-ipyvuetify.md +5 -1
  71. solara/website/pages/{docs → documentation/advanced}/content/20-understanding/10-reacton.md +4 -0
  72. solara/website/pages/{docs → documentation/advanced}/content/20-understanding/12-reacton-basics.md +5 -1
  73. solara/website/pages/{docs → documentation/advanced}/content/20-understanding/15-anatomy.md +6 -2
  74. solara/website/pages/documentation/advanced/content/20-understanding/17-rules-of-hooks.md +7 -0
  75. solara/website/pages/{docs → documentation/advanced}/content/20-understanding/18-containers.md +9 -3
  76. solara/website/pages/{docs → documentation/advanced}/content/20-understanding/20-solara.md +5 -0
  77. solara/website/pages/{docs → documentation/advanced}/content/20-understanding/40-routing.md +13 -9
  78. solara/website/pages/{docs → documentation/advanced}/content/20-understanding/50-solara-server.md +6 -1
  79. solara/website/pages/{docs → documentation/advanced}/content/20-understanding/60-voila.md +5 -0
  80. solara/website/pages/{docs/content/50-enterprise → documentation/advanced/content/30-enterprise}/10-oauth.md +7 -3
  81. solara/website/pages/{docs/content/10-howto → documentation/advanced/content/40-development}/01-contribute.md +9 -5
  82. solara/website/pages/{docs/content/90-development → documentation/advanced/content/40-development}/10-setup.md +6 -2
  83. solara/website/pages/documentation/api/__init__.py +19 -0
  84. solara/website/pages/documentation/api/cross_filter/__init__.py +9 -0
  85. solara/website/pages/documentation/api/hooks/__init__.py +9 -0
  86. solara/website/pages/{api → documentation/api/hooks}/use_effect.md +3 -3
  87. solara/website/pages/{api → documentation/api/hooks}/use_effect.py +2 -1
  88. solara/website/pages/{api → documentation/api/hooks}/use_memo.md +2 -2
  89. solara/website/pages/{api → documentation/api/hooks}/use_memo.py +2 -1
  90. solara/website/pages/{api → documentation/api/hooks}/use_reactive.py +1 -2
  91. solara/website/pages/{api → documentation/api/hooks}/use_state.py +1 -2
  92. solara/website/pages/documentation/api/routing/__init__.py +9 -0
  93. solara/website/pages/{api → documentation/api/routing}/generate_routes.py +1 -2
  94. solara/website/pages/{api → documentation/api/routing}/generate_routes_directory.py +1 -2
  95. solara/website/pages/{api → documentation/api/routing}/use_route.py +2 -2
  96. solara/website/pages/{api → documentation/api/routing}/use_router.py +1 -2
  97. solara/website/pages/documentation/api/utilities/__init__.py +9 -0
  98. solara/website/pages/{api → documentation/api/utilities}/component_vue.py +1 -2
  99. solara/website/pages/{api → documentation/api/utilities}/computed.py +2 -2
  100. solara/website/pages/{api → documentation/api/utilities}/display.py +1 -2
  101. solara/website/pages/{api → documentation/api/utilities}/get_kernel_id.py +2 -2
  102. solara/website/pages/{api → documentation/api/utilities}/get_session_id.py +2 -2
  103. solara/website/pages/{api → documentation/api/utilities}/on_kernel_start.py +9 -3
  104. solara/website/pages/{api → documentation/api/utilities}/reactive.py +1 -2
  105. solara/website/pages/{api → documentation/api/utilities}/widget.py +2 -2
  106. solara/website/pages/documentation/components/__init__.py +12 -0
  107. solara/website/pages/documentation/components/advanced/__init__.py +9 -0
  108. solara/website/pages/documentation/components/data/__init__.py +9 -0
  109. solara/website/pages/documentation/components/enterprise/__init__.py +9 -0
  110. solara/website/pages/{api → documentation/components/enterprise}/avatar.py +1 -2
  111. solara/website/pages/{api → documentation/components/enterprise}/avatar_menu.py +1 -2
  112. solara/website/pages/documentation/components/input/__init__.py +9 -0
  113. solara/website/pages/{api → documentation/components/input}/checkbox.py +1 -2
  114. solara/website/pages/documentation/components/input/file_drop.py +75 -0
  115. solara/website/pages/{api → documentation/components/input}/input.py +1 -2
  116. solara/website/pages/{api → documentation/components/input}/select.py +1 -2
  117. solara/website/pages/{api → documentation/components/input}/slider.py +1 -2
  118. solara/website/pages/{api → documentation/components/input}/switch.py +1 -2
  119. solara/website/pages/{api → documentation/components/input}/togglebuttons.py +1 -2
  120. solara/website/pages/documentation/components/lab/__init__.py +9 -0
  121. solara/website/pages/{api → documentation/components/lab}/chat.py +2 -3
  122. solara/website/pages/{api → documentation/components/lab}/cookies_headers.py +1 -1
  123. solara/website/pages/{api → documentation/components/lab}/input_date.py +1 -2
  124. solara/website/pages/{api → documentation/components/lab}/menu.py +1 -2
  125. solara/website/pages/{api → documentation/components/lab}/task.py +1 -2
  126. solara/website/pages/{api → documentation/components/lab}/theming.py +1 -2
  127. solara/website/pages/{api → documentation/components/lab}/use_task.py +1 -2
  128. solara/website/pages/documentation/components/layout/__init__.py +9 -0
  129. solara/website/pages/{api → documentation/components/layout}/app_bar.py +1 -2
  130. solara/website/pages/{api → documentation/components/layout}/app_bar_title.py +1 -2
  131. solara/website/pages/{api → documentation/components/layout}/card.py +1 -2
  132. solara/website/pages/{api → documentation/components/layout}/card_actions.py +1 -2
  133. solara/website/pages/{api → documentation/components/layout}/griddraggable.py +1 -1
  134. solara/website/pages/{api → documentation/components/layout}/gridfixed.py +1 -1
  135. solara/website/pages/{api → documentation/components/layout}/hbox.py +1 -1
  136. solara/website/pages/{api → documentation/components/layout}/vbox.py +1 -1
  137. solara/website/pages/documentation/components/output/__init__.py +9 -0
  138. solara/website/pages/{api → documentation/components/output}/file_download.py +1 -2
  139. solara/website/pages/{api → documentation/components/output}/image.py +1 -2
  140. solara/website/pages/{api → documentation/components/output}/tooltip.py +1 -2
  141. solara/website/pages/documentation/components/page/__init__.py +9 -0
  142. solara/website/pages/documentation/components/status/__init__.py +9 -0
  143. solara/website/pages/{api → documentation/components/status}/error.py +3 -3
  144. solara/website/pages/{api → documentation/components/status}/info.py +3 -3
  145. solara/website/pages/{api → documentation/components/status}/progress.py +1 -2
  146. solara/website/pages/{api → documentation/components/status}/spinner.py +1 -2
  147. solara/website/pages/{api → documentation/components/status}/success.py +3 -3
  148. solara/website/pages/{api → documentation/components/status}/warning.py +3 -3
  149. solara/website/pages/documentation/components/viz/__init__.py +9 -0
  150. solara/website/pages/{api → documentation/components/viz}/plotly.py +1 -0
  151. solara/website/pages/{examples → documentation/examples}/__init__.py +3 -43
  152. solara/website/pages/{examples → documentation/examples}/general/custom_storage.py +1 -1
  153. solara/website/pages/{examples → documentation/examples}/general/deploy_model.py +3 -3
  154. solara/website/pages/{examples → documentation/examples}/general/login_oauth.py +1 -1
  155. solara/website/pages/{examples → documentation/examples}/general/vue_component.py +1 -2
  156. solara/website/pages/{examples → documentation/examples}/libraries/altair.py +2 -3
  157. solara/website/pages/{examples → documentation/examples}/libraries/ipyleaflet_advanced.py +1 -1
  158. solara/website/pages/{examples → documentation/examples}/utilities/countdown_timer.py +1 -1
  159. solara/website/pages/{examples → documentation/examples}/visualization/plotly.py +1 -2
  160. solara/website/pages/documentation/faq/__init__.py +12 -0
  161. solara/website/pages/{docs → documentation/faq}/content/99-faq.md +4 -1
  162. solara/website/pages/documentation/getting_started/__init__.py +9 -0
  163. solara/website/pages/{docs/content/03-quickstart.md → documentation/getting_started/content/00-quickstart.md} +7 -2
  164. solara/website/pages/{docs/content/00-introduction.md → documentation/getting_started/content/01-introduction.md} +20 -16
  165. solara/website/pages/{docs → documentation/getting_started}/content/02-installing.md +5 -1
  166. solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md +14 -0
  167. solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/20-web-app.md +9 -4
  168. solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/30-ipywidgets.md +13 -9
  169. solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/40-streamlit.md +17 -12
  170. solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/50-dash.md +7 -3
  171. solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/_data_science.ipynb +5 -5
  172. solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md +11 -0
  173. solara/website/pages/{docs/content/07-fundamentals → documentation/getting_started/content/05-fundamentals}/10-components.md +7 -2
  174. solara/website/pages/{docs/content/07-fundamentals → documentation/getting_started/content/05-fundamentals}/50-state-management.md +8 -3
  175. solara/website/pages/documentation/getting_started/content/06-reference/00-overview.md +3 -0
  176. solara/website/pages/{docs/content/15-reference → documentation/getting_started/content/06-reference}/40-static_files.md +4 -0
  177. solara/website/pages/{docs/content/15-reference → documentation/getting_started/content/06-reference}/41-asset-files.md +5 -1
  178. solara/website/pages/{docs/content/15-reference → documentation/getting_started/content/06-reference}/60-static-site-generation.md +5 -1
  179. solara/website/pages/{docs/content/15-reference → documentation/getting_started/content/06-reference}/70-search.md +5 -1
  180. solara/website/pages/{docs/content/15-reference → documentation/getting_started/content/06-reference}/80-reloading.md +7 -3
  181. solara/website/pages/{docs/content/15-reference → documentation/getting_started/content/06-reference}/90-notebook-support.md +4 -1
  182. solara/website/pages/{docs/content/15-reference → documentation/getting_started/content/06-reference}/95-caching.md +6 -1
  183. solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md +7 -0
  184. solara/website/pages/{docs/content/30-deploying → documentation/getting_started/content/07-deploying}/10-self-hosted.md +7 -3
  185. solara/website/pages/{docs/content/30-deploying → documentation/getting_started/content/07-deploying}/20-cloud-hosted.md +5 -1
  186. solara/website/pages/documentation/getting_started/content/80-what-is-lab.md +7 -0
  187. solara/website/pages/{docs → documentation/getting_started}/content/90-troubleshoot.md +4 -0
  188. solara/website/pages/showcase/__init__.py +1 -1
  189. solara/website/pages/showcase/domino_code_assist.py +1 -1
  190. solara/website/pages/showcase/solara_dev.py +1 -1
  191. solara/website/public/social/discord.svg +1 -0
  192. solara/website/public/social/github.svg +1 -0
  193. solara/website/public/social/twitter.svg +3 -0
  194. {solara-1.29.1.dist-info → solara-1.30.1.dist-info}/METADATA +8 -7
  195. solara-1.30.1.dist-info/RECORD +437 -0
  196. {solara-1.29.1.dist-info → solara-1.30.1.dist-info}/WHEEL +1 -1
  197. solara/website/pages/api/__init__.py +0 -292
  198. solara/website/pages/api/default_layout.py +0 -16
  199. solara/website/pages/api/file_drop.py +0 -36
  200. solara/website/pages/docs/content/04-tutorial/00-overview.md +0 -9
  201. solara/website/pages/docs/content/07-fundamentals/00-overview.md +0 -7
  202. solara/website/pages/docs/content/15-reference/00-overview.md +0 -6
  203. solara/website/pages/docs/content/20-understanding/00-introduction.md +0 -4
  204. solara/website/pages/docs/content/20-understanding/17-rules-of-hooks.md +0 -3
  205. solara/website/pages/docs/content/30-deploying/00-overview.md +0 -3
  206. solara/website/pages/docs/content/lab/00-what-is-lab.md +0 -3
  207. solara-1.29.1.dist-info/RECORD +0 -411
  208. /solara/website/pages/{docs/content/99-contact.md → contact/contact.md} +0 -0
  209. /solara/website/pages/{docs/content/50-enterprise → documentation/advanced/content/30-enterprise}/00-overview.md +0 -0
  210. /solara/website/pages/{docs/content/__init__.py → documentation/advanced/content/40-development/00-overview.md} +0 -0
  211. /solara/website/pages/{api → documentation/api/cross_filter}/cross_filter_dataframe.py +0 -0
  212. /solara/website/pages/{api → documentation/api/cross_filter}/cross_filter_report.py +0 -0
  213. /solara/website/pages/{api → documentation/api/cross_filter}/cross_filter_select.py +0 -0
  214. /solara/website/pages/{api → documentation/api/cross_filter}/cross_filter_slider.py +0 -0
  215. /solara/website/pages/{api → documentation/api/hooks}/use_cross_filter.py +0 -0
  216. /solara/website/pages/{api → documentation/api/hooks}/use_dark_effective.py +0 -0
  217. /solara/website/pages/{api → documentation/api/hooks}/use_exception.py +0 -0
  218. /solara/website/pages/{api → documentation/api/hooks}/use_previous.py +0 -0
  219. /solara/website/pages/{api → documentation/api/hooks}/use_state_or_update.py +0 -0
  220. /solara/website/pages/{api → documentation/api/hooks}/use_thread.md +0 -0
  221. /solara/website/pages/{api → documentation/api/hooks}/use_thread.py +0 -0
  222. /solara/website/pages/{api → documentation/api/hooks}/use_trait_observe.py +0 -0
  223. /solara/website/pages/{api → documentation/api/routing}/resolve_path.py +0 -0
  224. /solara/website/pages/{api → documentation/api/routing}/route.py +0 -0
  225. /solara/website/pages/{api → documentation/api/utilities}/memoize.py +0 -0
  226. /solara/website/pages/{api → documentation/components/advanced}/link.py +0 -0
  227. /solara/website/pages/{api → documentation/components/advanced}/meta.py +0 -0
  228. /solara/website/pages/{api → documentation/components/advanced}/style.py +0 -0
  229. /solara/website/pages/{api → documentation/components}/common.py +0 -0
  230. /solara/website/pages/{api → documentation/components/data}/dataframe.py +0 -0
  231. /solara/website/pages/{api → documentation/components/data}/pivot_table.py +0 -0
  232. /solara/website/pages/{api → documentation/components/input}/button.py +0 -0
  233. /solara/website/pages/{api → documentation/components/input}/file_browser.py +0 -0
  234. /solara/website/pages/{api → documentation/components/lab}/confirmation_dialog.py +0 -0
  235. /solara/website/pages/{api → documentation/components/lab}/tab.py +0 -0
  236. /solara/website/pages/{api → documentation/components/lab}/tabs.py +0 -0
  237. /solara/website/pages/{api → documentation/components/layout}/app_layout.py +0 -0
  238. /solara/website/pages/{api → documentation/components/layout}/column.py +0 -0
  239. /solara/website/pages/{api → documentation/components/layout}/columns.py +0 -0
  240. /solara/website/pages/{api → documentation/components/layout}/columns_responsive.py +0 -0
  241. /solara/website/pages/{api → documentation/components/layout}/row.py +0 -0
  242. /solara/website/pages/{api → documentation/components/layout}/sidebar.py +0 -0
  243. /solara/website/pages/{api → documentation/components/output}/html.py +0 -0
  244. /solara/website/pages/{api → documentation/components/output}/markdown.py +0 -0
  245. /solara/website/pages/{api → documentation/components/output}/markdown_editor.py +0 -0
  246. /solara/website/pages/{api → documentation/components/output}/sql_code.py +0 -0
  247. /solara/website/pages/{api → documentation/components/page}/head.py +0 -0
  248. /solara/website/pages/{api → documentation/components/page}/title.py +0 -0
  249. /solara/website/pages/{api → documentation/components/viz}/altair.py +0 -0
  250. /solara/website/pages/{api → documentation/components/viz}/echarts.py +0 -0
  251. /solara/website/pages/{api → documentation/components/viz}/matplotlib.py +0 -0
  252. /solara/website/pages/{api → documentation/components/viz}/plotly_express.py +0 -0
  253. /solara/website/pages/{examples → documentation/examples}/ai/__init__.py +0 -0
  254. /solara/website/pages/{examples → documentation/examples}/ai/chatbot.py +0 -0
  255. /solara/website/pages/{examples → documentation/examples}/ai/tokenizer.py +0 -0
  256. /solara/website/pages/{examples → documentation/examples}/basics/__init__.py +0 -0
  257. /solara/website/pages/{examples → documentation/examples}/basics/sine.py +0 -0
  258. /solara/website/pages/{examples → documentation/examples}/fullscreen/__init__.py +0 -0
  259. /solara/website/pages/{examples → documentation/examples}/fullscreen/authorization.py +0 -0
  260. /solara/website/pages/{examples → documentation/examples}/fullscreen/layout_demo.py +0 -0
  261. /solara/website/pages/{examples → documentation/examples}/fullscreen/multipage.py +0 -0
  262. /solara/website/pages/{examples → documentation/examples}/fullscreen/scatter.py +0 -0
  263. /solara/website/pages/{examples → documentation/examples}/fullscreen/scrolling.py +0 -0
  264. /solara/website/pages/{examples → documentation/examples}/fullscreen/tutorial_streamlit.py +0 -0
  265. /solara/website/pages/{examples → documentation/examples}/general/__init__.py +0 -0
  266. /solara/website/pages/{examples → documentation/examples}/general/live_update.py +0 -0
  267. /solara/website/pages/{examples → documentation/examples}/general/mycard.vue +0 -0
  268. /solara/website/pages/{examples → documentation/examples}/general/pokemon_search.py +0 -0
  269. /solara/website/pages/{examples → documentation/examples}/ipycanvas.py +0 -0
  270. /solara/website/pages/{examples → documentation/examples}/libraries/__init__.py +0 -0
  271. /solara/website/pages/{examples → documentation/examples}/libraries/bqplot.py +0 -0
  272. /solara/website/pages/{examples → documentation/examples}/libraries/ipyleaflet.py +0 -0
  273. /solara/website/pages/{examples → documentation/examples}/utilities/__init__.py +0 -0
  274. /solara/website/pages/{examples → documentation/examples}/utilities/calculator.py +0 -0
  275. /solara/website/pages/{examples → documentation/examples}/utilities/todo.py +0 -0
  276. /solara/website/pages/{examples → documentation/examples}/visualization/__init__.py +0 -0
  277. /solara/website/pages/{examples → documentation/examples}/visualization/annotator.py +0 -0
  278. /solara/website/pages/{examples → documentation/examples}/visualization/linked_views.py +0 -0
  279. /solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/10_data_science.py +0 -0
  280. /solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/60-jupyter-dashboard-part1.py +0 -0
  281. /solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/SF_crime_sample.csv.gz +0 -0
  282. /solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/_jupyter_dashboard_1.ipynb +0 -0
  283. {solara-1.29.1.data → solara-1.30.1.data}/data/etc/jupyter/jupyter_notebook_config.d/solara.json +0 -0
  284. {solara-1.29.1.data → solara-1.30.1.data}/data/etc/jupyter/jupyter_server_config.d/solara.json +0 -0
  285. {solara-1.29.1.dist-info → solara-1.30.1.dist-info}/entry_points.txt +0 -0
  286. {solara-1.29.1.dist-info → solara-1.30.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,3 +1,7 @@
1
+ ---
2
+ title: Using OAuth in your Solara app
3
+ description: Open Authorization can be readily integrated into your Solara applications via the Solara-Enterprise package.
4
+ ---
1
5
  # OAuth: authentication and authorization support
2
6
 
3
7
  ## What is OAuth
@@ -8,7 +12,7 @@ You have probably used OAuth without realizing it when signing into various onli
8
12
 
9
13
  ## Installing
10
14
 
11
- To install Solara with OAuth support, make sure you have [Solara Enterprise](/docs/enterprise) install by run the following command:
15
+ To install Solara with OAuth support, make sure you have [Solara Enterprise](/documentation/advanced/enterprise) install by run the following command:
12
16
 
13
17
  ```bash
14
18
  $ pip install solara solara-enterprise[auth]
@@ -152,8 +156,8 @@ ZgrzSLUyft-JvnNMNJ2LgbCFVqcxPOatANAQhMD5EYU
152
156
 
153
157
  Solara provides two convenient components for creating a user interface for login and logout:
154
158
 
155
- 1. [Avatar](/api/avatar): This component shows the user's avatar.
156
- 2. [AvatarMenu](/api/avatar_menu): This component shows a menu with the user's avatar and a logout button.
159
+ 1. [Avatar](/documentation/components/enterprise/avatar): This component shows the user's avatar.
160
+ 2. [AvatarMenu](/documentation/components/enterprise/avatar_menu): This component shows a menu with the user's avatar and a logout button.
157
161
 
158
162
  ## Python version support
159
163
 
@@ -1,3 +1,7 @@
1
+ ---
2
+ title: Contributing to Solara
3
+ description: You do not need to be a developer to contribute to Solara. We welcome all contributions, bug reports, documentation improvements and code contributions.
4
+ ---
1
5
  # Contributing to Solara
2
6
 
3
7
  You do not need to be a developer to contribute to Solara. We welcome all contributions, bug reports, documentation improvements and code contributions.
@@ -7,8 +11,8 @@ You do not need to be a developer to contribute to Solara. We welcome all contri
7
11
 
8
12
  We use [GitHub to manage issues](https://github.com/widgetti/solara/issues/new) and you should not hesitate to report any bug you find. Please include as much information as possible for us to be able to reproduce the bug. Yes, reporting a bug/issue is a contribution!
9
13
 
10
- It might take a while for us to get back to you. If the bug is urgent, and you are able to provide financial support for its rapid resolution, please [contact us](/docs/contact).
11
- If you can fix the bug yourself, please consider submitting a pull request instead, see [the development guide](/docs/development) for more information.
14
+ It might take a while for us to get back to you. If the bug is urgent, and you are able to provide financial support for its rapid resolution, please [contact us](/contact).
15
+ If you can fix the bug yourself, please consider submitting a pull request instead, see [the development guide](/documentation/advanced/development/setup) for more information.
12
16
 
13
17
  If you are unable to address the bug yourself and find it challenging to provide financial support, please be assured we are still committed to rectifying bugs and resolving issues. However, please understand that our ability to address these issues may be impacted by our resources at hand, as sustaining this project also entails financial obligations. Your patience and understanding in this matter is highly appreciated 🙇.
14
18
 
@@ -16,7 +20,7 @@ If you are unable to address the bug yourself and find it challenging to provide
16
20
 
17
21
  The documentation is mostly written in Markdown, and can be found at [in the main repository](https://github.com/widgetti/solara/tree/master/solara/website/pages).
18
22
 
19
- You can use the GitHub web interface to edit the files, or clone the repository and edit them locally. See [the development guide](/docs/development) for more information.
23
+ You can use the GitHub web interface to edit the files, or clone the repository and edit them locally. See [the development guide](/documentation/advanced/development/setup) for more information.
20
24
 
21
25
  If you locally want to render the documentation, run:
22
26
 
@@ -26,10 +30,10 @@ $ solara run solara.website.pages
26
30
 
27
31
  ## Examples or showcase
28
32
 
29
- If you have a complete program you want to share, and you think it would be cool to be listed at [our showcase page](/showcase), [please contact us](/docs/contact).
33
+ If you have a complete program you want to share, and you think it would be cool to be listed at [our showcase page](/showcase), [please contact us](/contact).
30
34
 
31
35
  If you want to show a particular way of using Solara that you think is very useful
32
- for others, but it is not a complete program, consider adding to [the examples](/docs/examples). See [the development guide](/docs/development) for more information.
36
+ for others, but it is not a complete program, consider adding to [the examples](/documentation/examples/). See [the development guide](/documentation/advanced/development/setup) for more information.
33
37
 
34
38
  ## Share your experiences and ideas
35
39
 
@@ -1,9 +1,13 @@
1
+ ---
2
+ title: Development setup for Solara
3
+ description: Learn how to set up your installation for developing on the Solara itself.
4
+ ---
1
5
  # Development
2
6
 
3
- See also [the contributing guide](/docs/howto/contribute) for more information on how to contribute to Solara.
7
+ See also [the contributing guide](/documentation/advanced/development/contribute) for more information on how to contribute to Solara.
4
8
  ## Development setup
5
9
 
6
- Assuming you have created a virtual environment as described in [the installation guide](/docs/installing), you can install a development install of Solara using:
10
+ Assuming you have created a virtual environment as described in [the installation guide](/documentation/getting_started/installing), you can install a development install of Solara using:
7
11
 
8
12
  $ git clone git@github.com:widgetti/solara.git
9
13
  $ cd solara
@@ -0,0 +1,19 @@
1
+ """
2
+ # Overview
3
+ Click on one of the items on the left.
4
+ """
5
+
6
+ import solara
7
+ from solara.website.components import CategoryLayout, Gallery
8
+
9
+ _title = "API"
10
+
11
+
12
+ @solara.component
13
+ def Page(route_external=None):
14
+ Gallery(route_external)
15
+
16
+
17
+ @solara.component
18
+ def Layout(children=[]):
19
+ CategoryLayout(children=children)
@@ -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,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)
@@ -8,7 +8,7 @@ def use_effect(
8
8
  ...
9
9
  ```
10
10
 
11
- Execute non-declarative code within a callback, for instance to add event handlers. `effect` is executed *after* page render, letting us fetch the actual underlying widget object using `solara.get_widget` on an element. `dependencies` should be a list of variables, which when changed trigger re-execution of `effect`. If left empty, `effect` will never re-execute.
11
+ Execute non-declarative code within a callback, for instance to add event handlers. `effect` is executed *after* page render, letting us fetch the actual underlying widget object using `solara.get_widget` on an element. `dependencies` should be a list of variables, which when changed trigger re-execution of `effect`. If left empty, `effect` will never re-execute.
12
12
 
13
13
  `effect` can return a cleanup function, which will be called before re-execution of `effect`, or when the component containing `use_effect` is removed.
14
14
 
@@ -34,10 +34,10 @@ def use_event(el: solara.Element, callback: Callable):
34
34
  def Page():
35
35
  def function():
36
36
  #Do something...
37
-
37
+
38
38
  input = solara.InputText():
39
39
  use_event(input, function)
40
40
  ...
41
41
  ```
42
42
 
43
- See also the [Reacton docs](https://reacton.solara.dev/en/latest/api/#use_effect).
43
+ See also the [Reacton docs](https://reacton.solara.dev/en/latest/api/#use_effect).
@@ -1,5 +1,6 @@
1
1
  from pathlib import Path
2
- from . import NoPage
2
+
3
+ from solara.website.components import NoPage
3
4
 
4
5
  HERE = Path(__file__).parent
5
6
  __doc__ = open(HERE / "use_effect.md").read()
@@ -11,6 +11,6 @@ def use_memo(
11
11
 
12
12
  `use_memo` stores ([memoize](https://en.wikipedia.org/wiki/Memoization)) the function return on first render, and then excludes it from being re-executed, except when one of the `dependencies` changes. `dependencies` can take the value `None`, in which case dependencies are automatically obtained from nonlocal variables. If an empty list is passed as `dependencies` instead, the function is only executed once over the entire lifetime of the component.
13
13
 
14
- Not to be confused with [memorize](https://solara.dev/api/memoize) which can cache multiple return values and which can be used outside of component.
14
+ Not to be confused with [memorize](https://solara.dev/documentation/api/utilities/memoize) which can cache multiple return values and which can be used outside of component.
15
15
 
16
- See also the [Reacton docs](https://reacton.solara.dev/en/latest/api/#use_memo).
16
+ See also the [Reacton docs](https://reacton.solara.dev/en/latest/api/#use_memo).
@@ -1,5 +1,6 @@
1
1
  from pathlib import Path
2
- from . import NoPage
2
+
3
+ from solara.website.components import NoPage
3
4
 
4
5
  HERE = Path(__file__).parent
5
6
  __doc__ = open(HERE / "use_memo.md").read()
@@ -3,10 +3,9 @@
3
3
 
4
4
  """
5
5
  import solara
6
+ from solara.website.components import NoPage
6
7
  from solara.website.utils import apidoc
7
8
 
8
- from . import NoPage
9
-
10
9
  title = "use_reactive"
11
10
 
12
11
 
@@ -3,10 +3,9 @@
3
3
  """
4
4
  import solara
5
5
  import solara.autorouting
6
+ from solara.website.components import NoPage
6
7
  from solara.website.utils import apidoc
7
8
 
8
- from . import NoPage
9
-
10
9
  title = "use_state"
11
10
  Page = NoPage
12
11
  __doc__ += apidoc(solara.use_state) # 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)
@@ -3,10 +3,9 @@
3
3
  """
4
4
  import solara
5
5
  import solara.autorouting
6
+ from solara.website.components import NoPage
6
7
  from solara.website.utils import apidoc
7
8
 
8
- from . import NoPage
9
-
10
9
  title = "generate_routes"
11
10
  Page = NoPage
12
11
  __doc__ += apidoc(solara.autorouting.generate_routes) # type: ignore
@@ -3,10 +3,9 @@
3
3
  """
4
4
  import solara
5
5
  import solara.autorouting
6
+ from solara.website.components import NoPage
6
7
  from solara.website.utils import apidoc
7
8
 
8
- from . import NoPage
9
-
10
9
  title = "generate_routes_directory"
11
10
  Page = NoPage
12
11
  __doc__ += apidoc(solara.autorouting.generate_routes_directory) # type: ignore
@@ -29,9 +29,9 @@ def Fruit():
29
29
  with solara.Link(solara.resolve_path(route_fruit)):
30
30
  solara.Button(route_fruit.path)
31
31
 
32
- with solara.Link("/api/use_route/fruit/nofruit", nofollow=True):
32
+ with solara.Link("/documentation/api/routing/use_route/fruit/nofruit", nofollow=True):
33
33
  solara.Button("Wrong fruit")
34
- with solara.Link("/api/use_route/not-routed", nofollow=True):
34
+ with solara.Link("/documentation/api/routing/use_route/not-routed", nofollow=True):
35
35
  solara.Button("Wrong url")
36
36
  solara.Success(f"You chose {route.path}")
37
37
  return main
@@ -3,10 +3,9 @@
3
3
 
4
4
  """
5
5
  import solara
6
+ from solara.website.components import NoPage
6
7
  from solara.website.utils import apidoc
7
8
 
8
- from . import NoPage
9
-
10
9
  title = "use_router"
11
10
 
12
11
 
@@ -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)
@@ -3,10 +3,9 @@
3
3
  """
4
4
  import solara
5
5
  import solara.autorouting
6
+ from solara.website.components import NoPage
6
7
  from solara.website.utils import apidoc
7
8
 
8
- from . import NoPage
9
-
10
9
  title = "component_vue"
11
10
  Page = NoPage
12
11
  __doc__ += apidoc(solara.component_vue) # type: ignore
@@ -2,11 +2,11 @@
2
2
  # computed
3
3
 
4
4
  """
5
+
5
6
  import solara
7
+ from solara.website.components import NoPage
6
8
  from solara.website.utils import apidoc
7
9
 
8
- from . import NoPage
9
-
10
10
  title = "computed"
11
11
 
12
12
 
@@ -3,10 +3,9 @@
3
3
 
4
4
  """
5
5
  import solara
6
+ from solara.website.components import NoPage
6
7
  from solara.website.utils import apidoc
7
8
 
8
- from . import NoPage
9
-
10
9
  title = "display"
11
10
 
12
11
 
@@ -2,11 +2,11 @@
2
2
  # get_kernel_id
3
3
 
4
4
  """
5
+
5
6
  import solara
7
+ from solara.website.components import NoPage
6
8
  from solara.website.utils import apidoc
7
9
 
8
- from . import NoPage
9
-
10
10
  title = "get_kernel_id"
11
11
 
12
12
 
@@ -2,11 +2,11 @@
2
2
  # get_session_id
3
3
 
4
4
  """
5
+
5
6
  import solara
7
+ from solara.website.components import NoPage
6
8
  from solara.website.utils import apidoc
7
9
 
8
- from . import NoPage
9
-
10
10
  title = "get_session_id"
11
11
 
12
12
 
@@ -4,7 +4,8 @@
4
4
  Run a function when a virtual kernel (re)starts and optionally run a cleanup function on shutdown.
5
5
 
6
6
  ```python
7
- def on_kernel_start(f: Callable[[], Optional[Callable[[], None]]]):
7
+ def on_kernel_start(f: Callable[[], Optional[Callable[[], None]]]) -> Callable[[], None]:
8
+ ...
8
9
  ```
9
10
 
10
11
  `f` will be called on each virtual kernel (re)start. This (usually) happens each time a browser tab connects to the server
@@ -12,10 +13,15 @@ def on_kernel_start(f: Callable[[], Optional[Callable[[], None]]]):
12
13
  The (optional) function returned by `f` will be called on kernel shutdown.
13
14
 
14
15
  Note that the cleanup functions are called in reverse order with respect to the order in which they were registered
15
- (e.g. the cleanup function of the last call to `on_kernel_start` will be called first on kernel shutdown)
16
+ (e.g. the cleanup function of the last call to `on_kernel_start` will be called first on kernel shutdown).
17
+
18
+ The return value of on_kernel_start is a cleanup function that will remove the callback from the list of callbacks to be called on kernel start.
19
+
20
+ During hot reload, the callbacks that are added from scripts or modules that will be reloaded will be removed before the app is loaded
21
+ again. This can cause the order of the callbacks to be different than at first run.
16
22
  """
17
23
 
18
- from . import NoPage
24
+ from solara.website.components import NoPage
19
25
 
20
26
  title = "on_kernel_start"
21
27
  Page = NoPage
@@ -3,10 +3,9 @@
3
3
 
4
4
  """
5
5
  import solara
6
+ from solara.website.components import NoPage
6
7
  from solara.website.utils import apidoc
7
8
 
8
- from . import NoPage
9
-
10
9
  title = "reactive"
11
10
 
12
11
 
@@ -21,7 +21,7 @@ widget = solara.FileDownload.widget(data="some text data", filename="solara-demo
21
21
  ```
22
22
 
23
23
  This is very useful if you are migrating your application from a classic
24
- ipywidget to solara. See [also the ipywidgets tutorial](/docs/tutorial/ipywidgets).
24
+ ipywidget to solara. See [also the ipywidgets tutorial](/documentation/getting_started/tutorials/ipywidgets).
25
25
 
26
26
  The `ipywidgets.ValueWidget` is used to enable the use of the widget in
27
27
  interact, or interactive. The `ipywidgets.VBox` is used to enable
@@ -98,7 +98,7 @@ def Page():
98
98
 
99
99
  """
100
100
 
101
- from . import NoPage
101
+ from solara.website.components import NoPage
102
102
 
103
103
  Page = NoPage
104
104
  title = "widget"
@@ -0,0 +1,12 @@
1
+ import solara
2
+ from solara.website.components import CategoryLayout, Gallery
3
+
4
+
5
+ @solara.component
6
+ def Page(route_external=None):
7
+ Gallery(route_external)
8
+
9
+
10
+ @solara.component
11
+ def Layout(children=[]):
12
+ CategoryLayout(children=children)
@@ -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,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,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)
@@ -6,10 +6,9 @@ try:
6
6
  from solara_enterprise import auth
7
7
  except ImportError:
8
8
  auth = None
9
+ from solara.website.components import NoPage
9
10
  from solara.website.utils import apidoc
10
11
 
11
- from . import NoPage
12
-
13
12
  title = "Avatar"
14
13
 
15
14
  Page = NoPage
@@ -6,10 +6,9 @@ try:
6
6
  from solara_enterprise import auth
7
7
  except ImportError:
8
8
  auth = None
9
+ from solara.website.components import NoPage
9
10
  from solara.website.utils import apidoc
10
11
 
11
- from . import NoPage
12
-
13
12
  title = "AvatarMenu"
14
13
 
15
14
  Page = NoPage
@@ -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)
@@ -3,10 +3,9 @@
3
3
  """
4
4
 
5
5
  import solara
6
+ from solara.website.components import NoPage
6
7
  from solara.website.utils import apidoc
7
8
 
8
- from . import NoPage
9
-
10
9
  Page = NoPage
11
10
 
12
11
 
@@ -0,0 +1,75 @@
1
+ """
2
+ # FileDrop components
3
+
4
+ FileDrop comes in two flavours:
5
+
6
+ * `FileDrop` for a single file upload
7
+ * `FileDropMultiple` which allows for multiple file upload
8
+
9
+
10
+ """
11
+ import textwrap
12
+ from typing import List, cast
13
+
14
+ import solara
15
+ from solara.components.file_drop import FileInfo
16
+ from solara.website.utils import apidoc
17
+
18
+
19
+ @solara.component
20
+ def FileDropMultipleDemo():
21
+ content, set_content = solara.use_state(cast(List[bytes], []))
22
+ filename, set_filename = solara.use_state(cast(List[str], []))
23
+ size, set_size = solara.use_state(cast(List[int], []))
24
+
25
+ def on_file(files: List[FileInfo]):
26
+ set_filename([f["name"] for f in files])
27
+ set_size([f["size"] for f in files])
28
+ set_content([f["file_obj"].read(100) for f in files])
29
+
30
+ solara.FileDropMultiple(
31
+ label="Drag and drop files(s) here to read the first 100 bytes.",
32
+ on_file=on_file,
33
+ lazy=True, # We will only read the first 100 bytes
34
+ )
35
+ if content:
36
+ solara.Info(f"Number of uploaded files: {len(filename)}")
37
+ for f, s, c in zip(filename, size, content):
38
+ solara.Info(f"File {f} has total length: {s}\n, first 100 bytes:")
39
+ solara.Preformatted("\n".join(textwrap.wrap(repr(c))))
40
+
41
+
42
+ @solara.component
43
+ def FileDropDemo():
44
+ content, set_content = solara.use_state(b"")
45
+ filename, set_filename = solara.use_state("")
46
+ size, set_size = solara.use_state(0)
47
+
48
+ def on_file(f: FileInfo):
49
+ set_filename(f["name"])
50
+ set_size(f["size"])
51
+ set_content(f["file_obj"].read(100))
52
+
53
+ solara.FileDrop(
54
+ label="Drag and drop a file here to read the first 100 bytes.",
55
+ on_file=on_file,
56
+ lazy=True, # We will only read the first 100 bytes
57
+ )
58
+ if content:
59
+ solara.Info(f"File {filename} has total length: {size}\n, first 100 bytes:")
60
+ solara.Preformatted("\n".join(textwrap.wrap(repr(content))))
61
+
62
+
63
+ @solara.component
64
+ def Page():
65
+ with solara.Row():
66
+ with solara.Card(title="FileDrop"):
67
+ FileDropDemo()
68
+ with solara.Card(title="FileDropMultiple"):
69
+ FileDropMultipleDemo()
70
+
71
+
72
+ __doc__ += "# FileDrop"
73
+ __doc__ += apidoc(solara.FileDrop.f) # type: ignore
74
+ __doc__ += "# FileDropMultiple"
75
+ __doc__ += apidoc(solara.FileDropMultiple.f) # type: ignore
@@ -5,10 +5,9 @@ This page contains all the input fields available in Solara.
5
5
  # InputText
6
6
  """
7
7
  import solara
8
+ from solara.website.components import NoPage
8
9
  from solara.website.utils import apidoc
9
10
 
10
- from . import NoPage
11
-
12
11
  Page = NoPage
13
12
 
14
13
 
@@ -9,10 +9,9 @@ Select comes in two flavours:
9
9
 
10
10
  """
11
11
  import solara
12
+ from solara.website.components import NoPage
12
13
  from solara.website.utils import apidoc
13
14
 
14
- from . import NoPage
15
-
16
15
  Page = NoPage
17
16
 
18
17
 
@@ -6,10 +6,9 @@ To support proper typechecks, we have multiple slider (all wrapping the ipyvueti
6
6
 
7
7
  """
8
8
  import solara
9
+ from solara.website.components import NoPage
9
10
  from solara.website.utils import apidoc
10
11
 
11
- from . import NoPage
12
-
13
12
  Page = NoPage
14
13
 
15
14
  __doc__ += "# SliderInt"
@@ -3,10 +3,9 @@
3
3
  """
4
4
 
5
5
  import solara
6
+ from solara.website.components import NoPage
6
7
  from solara.website.utils import apidoc
7
8
 
8
- from . import NoPage
9
-
10
9
  Page = NoPage
11
10
 
12
11
 
@@ -6,10 +6,9 @@ ToggleButtons are in two flavours, for single, and for multiple selections.
6
6
 
7
7
  """
8
8
  import solara
9
+ from solara.website.components import NoPage
9
10
  from solara.website.utils import apidoc
10
11
 
11
- from . import NoPage
12
-
13
12
  title = "ToggleButtons"
14
13
 
15
14
  Page = NoPage
@@ -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)