solara 1.29.0__py2.py3-none-any.whl → 1.30.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.
- solara/__init__.py +5 -5
- solara/__main__.py +6 -2
- solara/autorouting.py +79 -38
- solara/cache.py +2 -2
- solara/checks.html +1 -1
- solara/components/__init__.py +1 -1
- solara/components/applayout.py +5 -5
- solara/components/button.py +4 -4
- solara/components/card.py +1 -2
- solara/components/component_vue.py +1 -1
- solara/components/cross_filter.py +6 -7
- solara/components/datatable.py +2 -3
- solara/components/figure_altair.py +1 -1
- solara/components/file_download.py +2 -2
- solara/components/file_drop.py +76 -33
- solara/components/file_drop.vue +24 -10
- solara/components/head.py +1 -2
- solara/components/head_tag.py +2 -3
- solara/components/link.py +3 -4
- solara/components/meta.py +1 -1
- solara/components/misc.py +5 -9
- solara/datatypes.py +2 -2
- solara/hooks/use_reactive.py +2 -2
- solara/lab/components/confirmation_dialog.py +1 -1
- solara/lab/components/tabs.py +6 -6
- solara/reactive.py +1 -1
- solara/routing.py +9 -8
- solara/server/app.py +44 -1
- solara/server/assets/style.css +6 -0
- solara/server/esm.py +28 -4
- solara/server/kernel_context.py +75 -7
- solara/server/patch.py +3 -0
- solara/server/reload.py +2 -2
- solara/server/server.py +3 -3
- solara/server/settings.py +1 -0
- solara/server/starlette.py +66 -33
- solara/server/static/solara_bootstrap.py +1 -1
- solara/server/templates/solara.html.j2 +62 -42
- solara/tasks.py +1 -6
- solara/util.py +23 -1
- solara/website/assets/custom.css +56 -0
- solara/website/components/__init__.py +1 -0
- solara/website/components/algolia_api.vue +157 -0
- solara/website/components/docs.py +118 -0
- solara/website/components/header.py +20 -10
- solara/website/components/hero.py +1 -1
- solara/website/pages/__init__.py +223 -20
- solara/website/pages/apps/jupyter-dashboard-1.py +1 -1
- solara/website/pages/apps/multipage/__init__.py +1 -1
- solara/website/pages/apps/multipage/page2.py +1 -1
- solara/website/pages/apps/scatter.py +21 -7
- solara/website/pages/changelog/__init__.py +8 -0
- solara/website/pages/{docs/content/95-changelog.md → changelog/changelog.md} +28 -2
- solara/website/pages/contact/__init__.py +8 -0
- solara/website/pages/documentation/__init__.py +184 -0
- solara/website/pages/documentation/advanced/__init__.py +36 -0
- solara/website/pages/documentation/advanced/content/00-overview.md +1 -0
- solara/website/pages/{docs/content/10-howto/20-multipage.md → documentation/advanced/content/10-howto/10-multipage.md} +4 -5
- solara/website/pages/{docs/content/10-howto/30-layout.md → documentation/advanced/content/10-howto/20-layout.md} +21 -21
- solara/website/pages/{docs/content/10-howto/80-embed.md → documentation/advanced/content/10-howto/40-embed.md} +1 -1
- solara/website/pages/{docs → documentation/advanced}/content/20-understanding/06-ipyvuetify.md +1 -1
- solara/website/pages/{docs → documentation/advanced}/content/20-understanding/12-reacton-basics.md +1 -1
- solara/website/pages/{docs → documentation/advanced}/content/20-understanding/15-anatomy.md +2 -2
- solara/website/pages/{docs → documentation/advanced}/content/20-understanding/18-containers.md +3 -3
- solara/website/pages/{docs → documentation/advanced}/content/20-understanding/40-routing.md +9 -9
- solara/website/pages/{docs → documentation/advanced}/content/20-understanding/50-solara-server.md +1 -1
- solara/website/pages/{docs/content/50-enterprise → documentation/advanced/content/30-enterprise}/10-oauth.md +3 -3
- solara/website/pages/{docs/content/10-howto → documentation/advanced/content/40-development}/01-contribute.md +5 -5
- solara/website/pages/{docs/content/90-development → documentation/advanced/content/40-development}/10-setup.md +2 -2
- solara/website/pages/documentation/advanced/content/__init__.py +0 -0
- solara/website/pages/documentation/api/__init__.py +19 -0
- solara/website/pages/documentation/api/cross_filter/__init__.py +9 -0
- solara/website/pages/documentation/api/hooks/__init__.py +9 -0
- solara/website/pages/{api → documentation/api/hooks}/use_effect.md +3 -3
- solara/website/pages/{api → documentation/api/hooks}/use_effect.py +2 -1
- solara/website/pages/{api → documentation/api/hooks}/use_memo.md +2 -2
- solara/website/pages/{api → documentation/api/hooks}/use_memo.py +2 -1
- solara/website/pages/{api → documentation/api/hooks}/use_reactive.py +1 -2
- solara/website/pages/{api → documentation/api/hooks}/use_state.py +1 -2
- solara/website/pages/documentation/api/routing/__init__.py +9 -0
- solara/website/pages/{api → documentation/api/routing}/generate_routes.py +1 -2
- solara/website/pages/{api → documentation/api/routing}/generate_routes_directory.py +1 -2
- solara/website/pages/{api → documentation/api/routing}/use_route.py +2 -2
- solara/website/pages/{api → documentation/api/routing}/use_router.py +1 -2
- solara/website/pages/documentation/api/utilities/__init__.py +9 -0
- solara/website/pages/{api → documentation/api/utilities}/component_vue.py +1 -2
- solara/website/pages/{api → documentation/api/utilities}/computed.py +2 -2
- solara/website/pages/{api → documentation/api/utilities}/display.py +1 -2
- solara/website/pages/{api → documentation/api/utilities}/get_kernel_id.py +2 -2
- solara/website/pages/{api → documentation/api/utilities}/get_session_id.py +2 -2
- solara/website/pages/{api → documentation/api/utilities}/on_kernel_start.py +9 -3
- solara/website/pages/{api → documentation/api/utilities}/reactive.py +1 -2
- solara/website/pages/{api → documentation/api/utilities}/widget.py +2 -2
- solara/website/pages/documentation/components/__init__.py +12 -0
- solara/website/pages/documentation/components/advanced/__init__.py +9 -0
- solara/website/pages/documentation/components/data/__init__.py +9 -0
- solara/website/pages/documentation/components/enterprise/__init__.py +9 -0
- solara/website/pages/{api → documentation/components/enterprise}/avatar.py +1 -2
- solara/website/pages/{api → documentation/components/enterprise}/avatar_menu.py +1 -2
- solara/website/pages/documentation/components/input/__init__.py +9 -0
- solara/website/pages/{api → documentation/components/input}/checkbox.py +1 -2
- solara/website/pages/documentation/components/input/file_drop.py +75 -0
- solara/website/pages/{api → documentation/components/input}/input.py +1 -2
- solara/website/pages/{api → documentation/components/input}/select.py +1 -2
- solara/website/pages/{api → documentation/components/input}/slider.py +1 -2
- solara/website/pages/{api → documentation/components/input}/switch.py +1 -2
- solara/website/pages/{api → documentation/components/input}/togglebuttons.py +1 -2
- solara/website/pages/documentation/components/lab/__init__.py +9 -0
- solara/website/pages/{api → documentation/components/lab}/chat.py +2 -3
- solara/website/pages/{api → documentation/components/lab}/cookies_headers.py +1 -1
- solara/website/pages/{api → documentation/components/lab}/input_date.py +1 -2
- solara/website/pages/{api → documentation/components/lab}/menu.py +1 -2
- solara/website/pages/{api → documentation/components/lab}/task.py +1 -2
- solara/website/pages/{api → documentation/components/lab}/theming.py +1 -2
- solara/website/pages/{api → documentation/components/lab}/use_task.py +1 -2
- solara/website/pages/documentation/components/layout/__init__.py +9 -0
- solara/website/pages/{api → documentation/components/layout}/app_bar.py +1 -2
- solara/website/pages/{api → documentation/components/layout}/app_bar_title.py +1 -2
- solara/website/pages/{api → documentation/components/layout}/card.py +1 -2
- solara/website/pages/{api → documentation/components/layout}/card_actions.py +1 -2
- solara/website/pages/{api → documentation/components/layout}/griddraggable.py +1 -1
- solara/website/pages/{api → documentation/components/layout}/gridfixed.py +1 -1
- solara/website/pages/{api → documentation/components/layout}/hbox.py +1 -1
- solara/website/pages/{api → documentation/components/layout}/vbox.py +1 -1
- solara/website/pages/documentation/components/output/__init__.py +9 -0
- solara/website/pages/{api → documentation/components/output}/file_download.py +1 -2
- solara/website/pages/{api → documentation/components/output}/image.py +1 -2
- solara/website/pages/{api → documentation/components/output}/tooltip.py +1 -2
- solara/website/pages/documentation/components/page/__init__.py +9 -0
- solara/website/pages/documentation/components/status/__init__.py +9 -0
- solara/website/pages/{api → documentation/components/status}/error.py +3 -3
- solara/website/pages/{api → documentation/components/status}/info.py +3 -3
- solara/website/pages/{api → documentation/components/status}/progress.py +1 -2
- solara/website/pages/{api → documentation/components/status}/spinner.py +1 -2
- solara/website/pages/{api → documentation/components/status}/success.py +3 -3
- solara/website/pages/{api → documentation/components/status}/warning.py +3 -3
- solara/website/pages/documentation/components/viz/__init__.py +9 -0
- solara/website/pages/{api → documentation/components/viz}/plotly.py +1 -0
- solara/website/pages/{examples → documentation/examples}/__init__.py +3 -43
- solara/website/pages/{examples → documentation/examples}/general/deploy_model.py +3 -3
- solara/website/pages/{examples → documentation/examples}/general/login_oauth.py +1 -1
- solara/website/pages/{examples → documentation/examples}/general/vue_component.py +1 -2
- solara/website/pages/{examples → documentation/examples}/libraries/altair.py +2 -3
- solara/website/pages/{examples → documentation/examples}/libraries/ipyleaflet_advanced.py +1 -1
- solara/website/pages/{examples → documentation/examples}/utilities/countdown_timer.py +1 -1
- solara/website/pages/{examples → documentation/examples}/visualization/plotly.py +1 -2
- solara/website/pages/documentation/faq/__init__.py +11 -0
- solara/website/pages/{docs → documentation/getting_started}/__init__.py +7 -1
- solara/website/pages/{docs/content/03-quickstart.md → documentation/getting_started/content/00-quickstart.md} +2 -2
- solara/website/pages/{docs/content/00-introduction.md → documentation/getting_started/content/01-introduction.md} +16 -16
- solara/website/pages/{docs → documentation/getting_started}/content/02-installing.md +1 -1
- solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md +9 -0
- solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/20-web-app.md +4 -4
- solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/30-ipywidgets.md +9 -9
- solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/40-streamlit.md +13 -13
- solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/50-dash.md +3 -3
- solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/_data_science.ipynb +5 -5
- solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md +7 -0
- solara/website/pages/{docs/content/07-fundamentals → documentation/getting_started/content/05-fundamentals}/10-components.md +2 -2
- solara/website/pages/{docs/content/07-fundamentals → documentation/getting_started/content/05-fundamentals}/50-state-management.md +3 -3
- solara/website/pages/documentation/getting_started/content/06-reference/00-overview.md +3 -0
- solara/website/pages/{docs/content/15-reference → documentation/getting_started/content/06-reference}/41-asset-files.md +1 -1
- solara/website/pages/{docs/content/15-reference → documentation/getting_started/content/06-reference}/60-static-site-generation.md +1 -1
- solara/website/pages/{docs/content/15-reference → documentation/getting_started/content/06-reference}/70-search.md +1 -1
- solara/website/pages/{docs/content/15-reference → documentation/getting_started/content/06-reference}/80-reloading.md +3 -3
- solara/website/pages/{docs/content/15-reference → documentation/getting_started/content/06-reference}/95-caching.md +1 -1
- solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md +3 -0
- solara/website/pages/{docs/content/30-deploying → documentation/getting_started/content/07-deploying}/10-self-hosted.md +3 -3
- solara/website/pages/{docs/content/30-deploying → documentation/getting_started/content/07-deploying}/20-cloud-hosted.md +1 -1
- solara/website/pages/documentation/getting_started/content/__init__.py +0 -0
- solara/website/pages/showcase/__init__.py +1 -1
- solara/website/pages/showcase/domino_code_assist.py +1 -1
- solara/website/pages/showcase/solara_dev.py +1 -1
- solara/website/public/social/discord.svg +1 -0
- solara/website/public/social/github.svg +1 -0
- solara/website/public/social/twitter.svg +3 -0
- {solara-1.29.0.dist-info → solara-1.30.0.dist-info}/METADATA +8 -7
- solara-1.30.0.dist-info/RECORD +438 -0
- {solara-1.29.0.dist-info → solara-1.30.0.dist-info}/WHEEL +1 -1
- solara/website/pages/api/__init__.py +0 -292
- solara/website/pages/api/default_layout.py +0 -16
- solara/website/pages/api/file_drop.py +0 -36
- solara/website/pages/docs/content/04-tutorial/00-overview.md +0 -9
- solara/website/pages/docs/content/07-fundamentals/00-overview.md +0 -7
- solara/website/pages/docs/content/15-reference/00-overview.md +0 -6
- solara/website/pages/docs/content/30-deploying/00-overview.md +0 -3
- solara-1.29.0.data/data/prefix/etc/jupyter/jupyter_notebook_config.d/solara.json +0 -7
- solara-1.29.0.data/data/prefix/etc/jupyter/jupyter_server_config.d/solara.json +0 -7
- solara-1.29.0.dist-info/RECORD +0 -413
- /solara/website/pages/{docs/content/99-contact.md → contact/contact.md} +0 -0
- /solara/website/pages/{docs → documentation/advanced}/content/10-howto/00-overview.md +0 -0
- /solara/website/pages/{docs/content/10-howto/50-testing.md → documentation/advanced/content/10-howto/30-testing.md} +0 -0
- /solara/website/pages/{docs/content/10-howto/51-debugging.md → documentation/advanced/content/10-howto/31-debugging.md} +0 -0
- /solara/website/pages/{docs/content/10-howto/ipywidget_libraries.md → documentation/advanced/content/10-howto/50-ipywidget_libraries.md} +0 -0
- /solara/website/pages/{docs → documentation/advanced}/content/20-understanding/00-introduction.md +0 -0
- /solara/website/pages/{docs → documentation/advanced}/content/20-understanding/05-ipywidgets.md +0 -0
- /solara/website/pages/{docs → documentation/advanced}/content/20-understanding/10-reacton.md +0 -0
- /solara/website/pages/{docs → documentation/advanced}/content/20-understanding/17-rules-of-hooks.md +0 -0
- /solara/website/pages/{docs → documentation/advanced}/content/20-understanding/20-solara.md +0 -0
- /solara/website/pages/{docs → documentation/advanced}/content/20-understanding/60-voila.md +0 -0
- /solara/website/pages/{docs/content/50-enterprise → documentation/advanced/content/30-enterprise}/00-overview.md +0 -0
- /solara/website/pages/{docs/content/__init__.py → documentation/advanced/content/40-development/00-overview.md} +0 -0
- /solara/website/pages/{api → documentation/api/cross_filter}/cross_filter_dataframe.py +0 -0
- /solara/website/pages/{api → documentation/api/cross_filter}/cross_filter_report.py +0 -0
- /solara/website/pages/{api → documentation/api/cross_filter}/cross_filter_select.py +0 -0
- /solara/website/pages/{api → documentation/api/cross_filter}/cross_filter_slider.py +0 -0
- /solara/website/pages/{api → documentation/api/hooks}/use_cross_filter.py +0 -0
- /solara/website/pages/{api → documentation/api/hooks}/use_dark_effective.py +0 -0
- /solara/website/pages/{api → documentation/api/hooks}/use_exception.py +0 -0
- /solara/website/pages/{api → documentation/api/hooks}/use_previous.py +0 -0
- /solara/website/pages/{api → documentation/api/hooks}/use_state_or_update.py +0 -0
- /solara/website/pages/{api → documentation/api/hooks}/use_thread.md +0 -0
- /solara/website/pages/{api → documentation/api/hooks}/use_thread.py +0 -0
- /solara/website/pages/{api → documentation/api/hooks}/use_trait_observe.py +0 -0
- /solara/website/pages/{api → documentation/api/routing}/resolve_path.py +0 -0
- /solara/website/pages/{api → documentation/api/routing}/route.py +0 -0
- /solara/website/pages/{api → documentation/api/utilities}/memoize.py +0 -0
- /solara/website/pages/{api → documentation/components/advanced}/link.py +0 -0
- /solara/website/pages/{api → documentation/components/advanced}/meta.py +0 -0
- /solara/website/pages/{api → documentation/components/advanced}/style.py +0 -0
- /solara/website/pages/{api → documentation/components}/common.py +0 -0
- /solara/website/pages/{api → documentation/components/data}/dataframe.py +0 -0
- /solara/website/pages/{api → documentation/components/data}/pivot_table.py +0 -0
- /solara/website/pages/{api → documentation/components/input}/button.py +0 -0
- /solara/website/pages/{api → documentation/components/input}/file_browser.py +0 -0
- /solara/website/pages/{api → documentation/components/lab}/confirmation_dialog.py +0 -0
- /solara/website/pages/{api → documentation/components/lab}/tab.py +0 -0
- /solara/website/pages/{api → documentation/components/lab}/tabs.py +0 -0
- /solara/website/pages/{api → documentation/components/layout}/app_layout.py +0 -0
- /solara/website/pages/{api → documentation/components/layout}/column.py +0 -0
- /solara/website/pages/{api → documentation/components/layout}/columns.py +0 -0
- /solara/website/pages/{api → documentation/components/layout}/columns_responsive.py +0 -0
- /solara/website/pages/{api → documentation/components/layout}/row.py +0 -0
- /solara/website/pages/{api → documentation/components/layout}/sidebar.py +0 -0
- /solara/website/pages/{api → documentation/components/output}/html.py +0 -0
- /solara/website/pages/{api → documentation/components/output}/markdown.py +0 -0
- /solara/website/pages/{api → documentation/components/output}/markdown_editor.py +0 -0
- /solara/website/pages/{api → documentation/components/output}/sql_code.py +0 -0
- /solara/website/pages/{api → documentation/components/page}/head.py +0 -0
- /solara/website/pages/{api → documentation/components/page}/title.py +0 -0
- /solara/website/pages/{api → documentation/components/viz}/altair.py +0 -0
- /solara/website/pages/{api → documentation/components/viz}/echarts.py +0 -0
- /solara/website/pages/{api → documentation/components/viz}/matplotlib.py +0 -0
- /solara/website/pages/{api → documentation/components/viz}/plotly_express.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/ai/__init__.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/ai/chatbot.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/ai/tokenizer.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/basics/__init__.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/basics/sine.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/fullscreen/__init__.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/fullscreen/authorization.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/fullscreen/layout_demo.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/fullscreen/multipage.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/fullscreen/scatter.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/fullscreen/scrolling.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/fullscreen/tutorial_streamlit.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/general/__init__.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/general/custom_storage.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/general/live_update.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/general/mycard.vue +0 -0
- /solara/website/pages/{examples → documentation/examples}/general/pokemon_search.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/ipycanvas.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/libraries/__init__.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/libraries/bqplot.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/libraries/ipyleaflet.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/utilities/__init__.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/utilities/calculator.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/utilities/todo.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/visualization/__init__.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/visualization/annotator.py +0 -0
- /solara/website/pages/{examples → documentation/examples}/visualization/linked_views.py +0 -0
- /solara/website/pages/{docs → documentation/faq}/content/99-faq.md +0 -0
- /solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/10_data_science.py +0 -0
- /solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/60-jupyter-dashboard-part1.py +0 -0
- /solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/SF_crime_sample.csv.gz +0 -0
- /solara/website/pages/{docs/content/04-tutorial → documentation/getting_started/content/04-tutorials}/_jupyter_dashboard_1.ipynb +0 -0
- /solara/website/pages/{docs/content/15-reference → documentation/getting_started/content/06-reference}/40-static_files.md +0 -0
- /solara/website/pages/{docs/content/15-reference → documentation/getting_started/content/06-reference}/90-notebook-support.md +0 -0
- /solara/website/pages/{docs/content/lab → documentation/getting_started/content/08-lab}/00-what-is-lab.md +0 -0
- /solara/website/pages/{docs → documentation/getting_started}/content/90-troubleshoot.md +0 -0
- {solara-1.29.0.data → solara-1.30.0.data}/data/etc/jupyter/jupyter_notebook_config.d/solara.json +0 -0
- {solara-1.29.0.data → solara-1.30.0.data}/data/etc/jupyter/jupyter_server_config.d/solara.json +0 -0
- {solara-1.29.0.dist-info → solara-1.30.0.dist-info}/entry_points.txt +0 -0
- {solara-1.29.0.dist-info → solara-1.30.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -4,10 +4,9 @@
|
|
|
4
4
|
import solara
|
|
5
5
|
import solara.autorouting
|
|
6
6
|
import solara.lab
|
|
7
|
+
from solara.website.components import NoPage
|
|
7
8
|
from solara.website.utils import apidoc
|
|
8
9
|
|
|
9
|
-
from . import NoPage
|
|
10
|
-
|
|
11
10
|
title = "use_task"
|
|
12
11
|
Page = NoPage
|
|
13
12
|
__doc__ += apidoc(solara.lab.use_task) # type: ignore
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Solara has 4 types of alerts:
|
|
4
4
|
|
|
5
|
-
* [Success](/
|
|
6
|
-
* [Info](/
|
|
7
|
-
* [Warning](/
|
|
5
|
+
* [Success](/documentation/components/status/success)
|
|
6
|
+
* [Info](/documentation/components/status/info)
|
|
7
|
+
* [Warning](/documentation/components/status/warning)
|
|
8
8
|
* Error (this page)
|
|
9
9
|
|
|
10
10
|
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Solara has 4 types of alerts:
|
|
4
4
|
|
|
5
|
-
* [Success](/
|
|
5
|
+
* [Success](/documentation/components/status/success)
|
|
6
6
|
* Info (this page)
|
|
7
|
-
* [Warning](/
|
|
8
|
-
* [Error](/
|
|
7
|
+
* [Warning](/documentation/components/status/warning)
|
|
8
|
+
* [Error](/documentation/components/status/error)
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
Solara has 4 types of alerts:
|
|
4
4
|
|
|
5
5
|
* Success (this page)
|
|
6
|
-
* [Info](/
|
|
7
|
-
* [Warning](/
|
|
8
|
-
* [Error](/
|
|
6
|
+
* [Info](/documentation/components/status/info)
|
|
7
|
+
* [Warning](/documentation/components/status/warning)
|
|
8
|
+
* [Error](/documentation/components/status/error)
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Solara has 4 types of alerts:
|
|
4
4
|
|
|
5
|
-
* [Success](/
|
|
6
|
-
* [Info](/
|
|
5
|
+
* [Success](/documentation/components/status/success)
|
|
6
|
+
* [Info](/documentation/components/status/info)
|
|
7
7
|
* Warning (this page)
|
|
8
|
-
* [Error](/
|
|
8
|
+
* [Error](/documentation/components/status/error)
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -1,52 +1,12 @@
|
|
|
1
|
-
# import inspect
|
|
2
|
-
# import urllib.parse
|
|
3
|
-
|
|
4
1
|
import solara
|
|
2
|
+
from solara.website.components import Gallery
|
|
5
3
|
|
|
6
4
|
title = "Examples"
|
|
7
5
|
|
|
8
6
|
|
|
9
7
|
@solara.component
|
|
10
|
-
def Page():
|
|
11
|
-
|
|
12
|
-
router = solara.use_router()
|
|
13
|
-
route_current = router.path_routes[-2]
|
|
14
|
-
|
|
15
|
-
for route in route_current.children:
|
|
16
|
-
if route.children:
|
|
17
|
-
solara.Markdown(f"## {route.label}\n" + (route.module.__doc__ or ""))
|
|
18
|
-
with solara.ColumnsResponsive(12, 6, 6, 6, 4):
|
|
19
|
-
for child in route.children:
|
|
20
|
-
path = route.path + "/" + child.path
|
|
21
|
-
if child.path in [
|
|
22
|
-
"tokenizer",
|
|
23
|
-
"sine",
|
|
24
|
-
"authorization",
|
|
25
|
-
"layout_demo",
|
|
26
|
-
"multipage",
|
|
27
|
-
"scatter",
|
|
28
|
-
"scrolling",
|
|
29
|
-
"tutorial_streamlit",
|
|
30
|
-
"login_oauth",
|
|
31
|
-
"pokemon_search",
|
|
32
|
-
"altair",
|
|
33
|
-
"bqplot",
|
|
34
|
-
"ipyleaflet",
|
|
35
|
-
"calculator",
|
|
36
|
-
"countdown_timer",
|
|
37
|
-
"todo",
|
|
38
|
-
]:
|
|
39
|
-
image = route.path + "/" + child.path + ".png"
|
|
40
|
-
image_url = "https://dxhl76zpt6fap.cloudfront.net/public/examples/" + image
|
|
41
|
-
else:
|
|
42
|
-
image_url = "https://dxhl76zpt6fap.cloudfront.net/public/logo.svg"
|
|
43
|
-
|
|
44
|
-
path = getattr(child.module, "redirect", path)
|
|
45
|
-
if path:
|
|
46
|
-
with solara.Card(child.label, style="height: 100%;"):
|
|
47
|
-
with solara.Link(path):
|
|
48
|
-
with solara.Column(align="center"):
|
|
49
|
-
solara.Image(image_url, width="120px" if image_url.endswith(".svg") else "100%")
|
|
8
|
+
def Page(route_external=None):
|
|
9
|
+
Gallery(route_external)
|
|
50
10
|
|
|
51
11
|
|
|
52
12
|
@solara.component
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"""# Deploy model demo
|
|
2
2
|
|
|
3
|
-
This show off a combination of [solara.lab.Menu](/
|
|
4
|
-
|
|
3
|
+
This show off a combination of [solara.lab.Menu](/documentation/components/lab/menu) and
|
|
4
|
+
[solara.lab.ConfirmationDialog](/documentation/components/lab/confirmation_dialog)
|
|
5
|
+
and [solara.use_thread](/documentation/api/hooks/use_thread) to demonstrate how to tune, fit and deploy a model.
|
|
5
6
|
The actually deployment is not real, but simulated by a thread that returns a boolean value on success and sleep for a while to
|
|
6
7
|
similate the deployment taking time.
|
|
7
8
|
|
|
@@ -15,7 +16,6 @@ import time
|
|
|
15
16
|
import numpy as np
|
|
16
17
|
import pandas as pd
|
|
17
18
|
import plotly.express as px
|
|
18
|
-
|
|
19
19
|
import solara
|
|
20
20
|
import solara.lab
|
|
21
21
|
|
|
@@ -54,7 +54,7 @@ def Page():
|
|
|
54
54
|
|
|
55
55
|
This is the raw user data from the auth provider.
|
|
56
56
|
|
|
57
|
-
We use the `picture` field to display an avatar in the [AppBar](/
|
|
57
|
+
We use the `picture` field to display an avatar in the [AppBar](/documentation/components/layout/app_bar).
|
|
58
58
|
"""
|
|
59
59
|
)
|
|
60
60
|
sl.Preformatted(pprint.pformat(auth.user.value))
|
|
@@ -4,7 +4,7 @@ Although many components can be made from the Python side, sometimes it is easie
|
|
|
4
4
|
It can also be beneficial for performance, since instead of creating many widgets from the Python side we only send data to
|
|
5
5
|
the frontend. If event handling is also done on the frontend, this reduces latency and makes you app feel much smoother.
|
|
6
6
|
|
|
7
|
-
See [the API documentation on component_vue](/api/component_vue) for more information.
|
|
7
|
+
See [the API documentation on component_vue](/documentation/api/utilities/component_vue) for more information.
|
|
8
8
|
|
|
9
9
|
This example is based on [the vuetify docs](https://v2.vuetifyjs.com/en/components/sparklines/#custom-labels),
|
|
10
10
|
Note that the "Go to report" button does not do anything yet.
|
|
@@ -14,7 +14,6 @@ Note that the "Go to report" button does not do anything yet.
|
|
|
14
14
|
from typing import Callable
|
|
15
15
|
|
|
16
16
|
import numpy as np
|
|
17
|
-
|
|
18
17
|
import solara
|
|
19
18
|
|
|
20
19
|
seed = solara.reactive(42)
|
|
@@ -2,16 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
[Altair](https://altair-viz.github.io/index.html) is a declarative statistical visualization library for Python.
|
|
4
4
|
|
|
5
|
-
This example show how to use the [on_click handler](/
|
|
5
|
+
This example show how to use the [on_click handler](/documentation/components/viz/altair) to display data for a specific day in the chart.
|
|
6
6
|
|
|
7
7
|
Based on [an Altair example](https://altair-viz.github.io/gallery/annual_weather_heatmap.html)
|
|
8
8
|
|
|
9
9
|
"""
|
|
10
10
|
import altair as alt
|
|
11
11
|
import pandas as pd
|
|
12
|
-
from vega_datasets import data
|
|
13
|
-
|
|
14
12
|
import solara
|
|
13
|
+
from vega_datasets import data
|
|
15
14
|
|
|
16
15
|
# title = "Altair visualization"
|
|
17
16
|
source = data.seattle_weather()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
# ipyleaflet advanced
|
|
3
3
|
|
|
4
|
-
Extends the [basic ipyleaflet example](/examples/libraries/ipyleaflet) with a marker that can be dragged around, and a
|
|
4
|
+
Extends the [basic ipyleaflet example](/documentation/examples/libraries/ipyleaflet) with a marker that can be dragged around, and a
|
|
5
5
|
dropdown to select the map style. Two buttons allow to reset the map to the default zoom and center and to zoom
|
|
6
6
|
to the marker.
|
|
7
7
|
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""# Countdown timer.
|
|
2
2
|
|
|
3
|
-
This example shows how to use [use_thread](/api/use_thread) to create a countdown timer.
|
|
3
|
+
This example shows how to use [use_thread](/documentation/api/hooks/use_thread) to create a countdown timer.
|
|
4
4
|
|
|
5
5
|
The UI code demonstrates a lot of conditional rendering.
|
|
6
6
|
|
|
@@ -8,12 +8,11 @@ Inspired by the dash documentation.
|
|
|
8
8
|
## Note
|
|
9
9
|
|
|
10
10
|
Solara supports plotly and plotly express. Create your figure (not a figure widget)
|
|
11
|
-
and pass it to the [FigurePlotly](/
|
|
11
|
+
and pass it to the [FigurePlotly](/documentation/components/viz/plotly) component.
|
|
12
12
|
|
|
13
13
|
"""
|
|
14
14
|
import pandas as pd
|
|
15
15
|
import plotly.express as px
|
|
16
|
-
|
|
17
16
|
import solara
|
|
18
17
|
|
|
19
18
|
title = "Scatter plot using Plotly"
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
|
|
3
|
+
import solara
|
|
3
4
|
from solara.autorouting import generate_routes_directory
|
|
4
5
|
|
|
5
|
-
title = "
|
|
6
|
+
title = "Getting Started"
|
|
6
7
|
HERE = Path(__file__)
|
|
7
8
|
# if we didn't put the content in the subdirectory, but pointed to the current file
|
|
8
9
|
# we would include the current file recursively, causing an infinite loop
|
|
9
10
|
routes = generate_routes_directory(HERE.parent / "content")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@solara.component
|
|
14
|
+
def Page(route_external=None):
|
|
15
|
+
solara.Markdown(Path(HERE.parent / "content" / "00-introduction.md").read_text())
|
|
@@ -7,12 +7,12 @@ This 1-minute quickstart will get you to:
|
|
|
7
7
|
* Run your script using Solara server.
|
|
8
8
|
* (Optional) Reuse your code in the Jupyter notebook.
|
|
9
9
|
|
|
10
|
-
If you are an existing ipywidget user and do not want to learn the component based method, you might want to skip the quickstart and directly go to the [IPywidgets user tutorial](/
|
|
10
|
+
If you are an existing ipywidget user and do not want to learn the component based method, you might want to skip the quickstart and directly go to the [IPywidgets user tutorial](/documentation/getting_started/tutorials/ipywidgets).
|
|
11
11
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
Run `pip install solara`, or follow the [Installation instructions](/
|
|
15
|
+
Run `pip install solara`, or follow the [Installation instructions](/documentation/getting_started/installing) for more detailed instructions.
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
## First script
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
Solara is an Open Source library that lets you use and build data-focused web apps (data apps) using reusable UI components. Your app will work in the Jupyter notebook and production-grade web frameworks (FastAPI, Starlette, Flask, ...).
|
|
7
7
|
|
|
8
|
-
Solara uses proven technologies and mature standards. Grow from a one-off experiment in the Jupyter notebook to a dynamic data portal in production. Built on top of [Reacton](/
|
|
8
|
+
Solara uses proven technologies and mature standards. Grow from a one-off experiment in the Jupyter notebook to a dynamic data portal in production. Built on top of [Reacton](/documentation/advanced/understanding/reacton) to keep your code complexity under control and [IPywidgets](/documentation/advanced/understanding/ipywidgets) to access a rich set of UI libraries without having to write Javascript or CSS.
|
|
9
9
|
|
|
10
10
|
We care about developer experience. Solara will give your hot code reloading and type hints for faster development.
|
|
11
11
|
|
|
@@ -17,19 +17,19 @@ Many frameworks only solve a specific set of problems. Once you step outside of
|
|
|
17
17
|
|
|
18
18
|
On the other extreme, you might be working with a library with no clear patterns that let you do anything. You may only be weeks away from a total code complexity nightmare, which slowly kills your project.
|
|
19
19
|
|
|
20
|
-
At the same time, starting a new framework from scratch would be unwise. We prefer to build on top of solid, battle-tested libraries, such as [IPywidgets](/
|
|
20
|
+
At the same time, starting a new framework from scratch would be unwise. We prefer to build on top of solid, battle-tested libraries, such as [IPywidgets](/documentation/advanced/understanding/ipywidgets).
|
|
21
21
|
|
|
22
22
|
## Why use Solara?
|
|
23
23
|
|
|
24
24
|
Instead of inventing a new API with an unknown track record, we take a different approach. We look at the JavaScript world. React is a technology that has proven itself for many years. It has shown to be a good all-around model for building complex UIs.
|
|
25
25
|
|
|
26
|
-
[Reacton](/
|
|
26
|
+
[Reacton](/documentation/advanced/understanding/reacton) is the equivalent of ReactJS for Python (and IPywidgets). It allows us to use the same reusable components and hooks as in the ReactJS ecosystem. Using Reacton, we build web/data applications without suffering from complex code bases.
|
|
27
27
|
|
|
28
28
|
Looking again at the JavaScript world, we see software such as NextJS is putting a framework around ReactJS. NextJS is more opinionated than ReactJS and adds more "batteries" such as routing.
|
|
29
29
|
|
|
30
30
|
Solara plays a similar role as NextJS. It builds on top of Reacton but handles things like routing for you.
|
|
31
31
|
|
|
32
|
-
But Solara is also different and is even more opinionated than NextJS. The reason for this is its focus on the data-heavy Python ecosystem. For this reason, it comes with many components and hooks that make building beautiful data apps easier (see our [
|
|
32
|
+
But Solara is also different and is even more opinionated than NextJS. The reason for this is its focus on the data-heavy Python ecosystem. For this reason, it comes with many components and hooks that make building beautiful data apps easier (see our [Documentation](/documentation)).
|
|
33
33
|
|
|
34
34
|
Solara is a clear, systematic, Python-based web framework using industry-trusted technology. Smooth developer experience and enforced code modularity will allow you to build a data app at any scale while maintaining simple code.
|
|
35
35
|
|
|
@@ -37,7 +37,7 @@ Solara is a clear, systematic, Python-based web framework using industry-trusted
|
|
|
37
37
|
|
|
38
38
|
For your understanding, it might be good just to run an example.
|
|
39
39
|
|
|
40
|
-
Follow the [installation instructions](/
|
|
40
|
+
Follow the [installation instructions](/documentation/getting_started/installing) or do the TLDR:
|
|
41
41
|
|
|
42
42
|
$ pip install solara
|
|
43
43
|
|
|
@@ -78,18 +78,18 @@ The browser should open http://127.0.0.1:8765
|
|
|
78
78
|
Solara is actually two things.
|
|
79
79
|
|
|
80
80
|
### Solara server
|
|
81
|
-
[Solara server](/
|
|
82
|
-
such as [routing](/
|
|
81
|
+
[Solara server](/documentation/advanced/understanding/solara-server) renders ipywidgets in the browser in a very efficient manner and takes care of many other things
|
|
82
|
+
such as [routing](/documentation/advanced/understanding/routing) and [Static Site Generation](/documentation/getting_started/reference/static-site-generation).
|
|
83
83
|
|
|
84
84
|
### Solara UI
|
|
85
85
|
|
|
86
|
-
The UI part is built on top of [Reacton](/
|
|
86
|
+
The UI part is built on top of [Reacton](/documentation/advanced/understanding/reacton), which uses the existing IPyWidgets stack. It gives a consistent set
|
|
87
87
|
of modern UI components with the Material Design look, as well as a set of routines to make application development of data heavy web apps
|
|
88
88
|
easier.
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
### Overview
|
|
92
|
-
If you use Jupyter, then you probably use the Jupyter notebook, Lab, or [Voila](/
|
|
92
|
+
If you use Jupyter, then you probably use the Jupyter notebook, Lab, or [Voila](/documentation/advanced/understanding/voila) to get your widgets into the browser. You may not care about [Solara server](/documentation/advanced/understanding/solara-server) and can focus on just the UI part.
|
|
93
93
|
|
|
94
94
|
If you don't use Jupyter, don't know what it is, or are an ML Ops, Dev Ops, or Sys Admin, you are probably more interested in the Solara server.
|
|
95
95
|
|
|
@@ -99,19 +99,19 @@ If you don't use Jupyter, don't know what it is, or are an ML Ops, Dev Ops, or S
|
|
|
99
99
|
|
|
100
100
|
We recommend going through the documentation linearly following the arrows on the bottom, meaning you will go through:
|
|
101
101
|
|
|
102
|
-
* [Installing](/
|
|
103
|
-
* [Quick start](/
|
|
104
|
-
* [Tutorials](/
|
|
102
|
+
* [Installing](/documentation/getting_started/installing)
|
|
103
|
+
* [Quick start](/documentation/getting_started)
|
|
104
|
+
* [Tutorials](/documentation/getting_started/tutorials)
|
|
105
105
|
|
|
106
|
-
If you want to know more about specific parts, you can go through the [How-to section](/
|
|
106
|
+
If you want to know more about specific parts, you can go through the [How-to section](/documentation/advanced/howto) to learn more. Feel free to skip chapters, and go back to topics when you need to.
|
|
107
107
|
|
|
108
108
|
|
|
109
|
-
If you want to know what components or hooks are available, or want to know more about a specific component, check out the [
|
|
109
|
+
If you want to know what components or hooks are available, or want to know more about a specific component, check out the [Documentation](/documentation) which includes live code examples. Other reference documentation can be found at the [reference section](/documentation/getting_started/reference)
|
|
110
110
|
|
|
111
|
-
If you feel like you miss some basic understanding and want to give a bit deeper into the what and why feel free to explore the [Understanding section](/
|
|
111
|
+
If you feel like you miss some basic understanding and want to give a bit deeper into the what and why feel free to explore the [Understanding section](/documentation/advanced/understanding).
|
|
112
112
|
|
|
113
113
|
|
|
114
|
-
[Our examples](/examples) may help you see how particular problems can be solved using Solara, or as inspiration. If you want to contribute an example, contact us on GitHub or directly open a [Pull Request](https://github.com/widgetti/solara/).
|
|
114
|
+
[Our examples](/documentation/examples) may help you see how particular problems can be solved using Solara, or as inspiration. If you want to contribute an example, contact us on GitHub or directly open a [Pull Request](https://github.com/widgetti/solara/).
|
|
115
115
|
|
|
116
116
|
|
|
117
117
|
## Where can I hire an expert?
|
|
@@ -44,7 +44,7 @@ solara @ https://github.com/widgetti/solara/package/archive/master.tar.gz
|
|
|
44
44
|
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
If you want to do development on Solara, read the [development documentation](/
|
|
47
|
+
If you want to do development on Solara, read the [development documentation](/documentation/advanced/development/setup).
|
|
48
48
|
|
|
49
49
|
## Air-gapped installation / Firewalled network
|
|
50
50
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Tutorials
|
|
2
|
+
|
|
3
|
+
Instead of having one tutorial, we have tutorials for different audiences.
|
|
4
|
+
|
|
5
|
+
* [Jupyter Dashboard](/documentation/getting_started/tutorials/jupyter-dashboard-part1): Learn to create a dashboard in the Jupyter notebook.
|
|
6
|
+
* [Data science](/documentation/getting_started/tutorials/data-science): In this tutorial, we will introduce Solara from the perspective of a data scientist or when you are thinking of using Solara for a data science app.
|
|
7
|
+
* [Web app](/documentation/getting_started/tutorials/web-app): You are not a data scientist, but you are interested in using Solara to create a web app using Pure Python.
|
|
8
|
+
* [IPywidgets user](/documentation/getting_started/tutorials/ipywidgets): If you are already using [ipywidgets](/documentation/advanced/understanding/ipywidgets) you will learn how to use the [Solara server](/documentation/advanced/understanding/solara-server) to render your regular ipywidget applications.
|
|
9
|
+
* [Streamlit](/documentation/getting_started/tutorials/streamlit): If you are an existing Streamlit user, this might appeal more to you.
|