solara 1.29.0__tar.gz → 1.30.0__tar.gz
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-1.29.0 → solara-1.30.0}/PKG-INFO +8 -7
- {solara-1.29.0 → solara-1.30.0}/README.md +4 -4
- {solara-1.29.0 → solara-1.30.0}/pyproject.toml +1 -2
- {solara-1.29.0 → solara-1.30.0}/solara/__init__.py +5 -5
- {solara-1.29.0 → solara-1.30.0}/solara/__main__.py +6 -2
- {solara-1.29.0 → solara-1.30.0}/solara/autorouting.py +79 -38
- {solara-1.29.0 → solara-1.30.0}/solara/cache.py +2 -2
- {solara-1.29.0 → solara-1.30.0}/solara/checks.html +1 -1
- {solara-1.29.0 → solara-1.30.0}/solara/components/__init__.py +1 -1
- {solara-1.29.0 → solara-1.30.0}/solara/components/applayout.py +5 -5
- {solara-1.29.0 → solara-1.30.0}/solara/components/button.py +4 -4
- {solara-1.29.0 → solara-1.30.0}/solara/components/card.py +1 -2
- {solara-1.29.0 → solara-1.30.0}/solara/components/component_vue.py +1 -1
- {solara-1.29.0 → solara-1.30.0}/solara/components/cross_filter.py +6 -7
- {solara-1.29.0 → solara-1.30.0}/solara/components/datatable.py +2 -3
- {solara-1.29.0 → solara-1.30.0}/solara/components/figure_altair.py +1 -1
- {solara-1.29.0 → solara-1.30.0}/solara/components/file_download.py +2 -2
- {solara-1.29.0 → solara-1.30.0}/solara/components/file_drop.py +76 -33
- {solara-1.29.0 → solara-1.30.0}/solara/components/file_drop.vue +24 -10
- {solara-1.29.0 → solara-1.30.0}/solara/components/head.py +1 -2
- {solara-1.29.0 → solara-1.30.0}/solara/components/head_tag.py +2 -3
- {solara-1.29.0 → solara-1.30.0}/solara/components/link.py +3 -4
- {solara-1.29.0 → solara-1.30.0}/solara/components/meta.py +1 -1
- {solara-1.29.0 → solara-1.30.0}/solara/components/misc.py +5 -9
- {solara-1.29.0 → solara-1.30.0}/solara/datatypes.py +2 -2
- {solara-1.29.0 → solara-1.30.0}/solara/hooks/use_reactive.py +2 -2
- {solara-1.29.0 → solara-1.30.0}/solara/lab/components/confirmation_dialog.py +1 -1
- {solara-1.29.0 → solara-1.30.0}/solara/lab/components/tabs.py +6 -6
- {solara-1.29.0 → solara-1.30.0}/solara/reactive.py +1 -1
- {solara-1.29.0 → solara-1.30.0}/solara/routing.py +9 -8
- {solara-1.29.0 → solara-1.30.0}/solara/server/app.py +44 -1
- {solara-1.29.0 → solara-1.30.0}/solara/server/assets/style.css +6 -0
- solara-1.30.0/solara/server/esm.py +69 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/kernel_context.py +75 -7
- {solara-1.29.0 → solara-1.30.0}/solara/server/patch.py +3 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/server.py +3 -3
- {solara-1.29.0 → solara-1.30.0}/solara/server/settings.py +1 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/starlette.py +66 -33
- {solara-1.29.0 → solara-1.30.0}/solara/server/static/solara_bootstrap.py +1 -1
- {solara-1.29.0 → solara-1.30.0}/solara/server/templates/solara.html.j2 +62 -42
- {solara-1.29.0 → solara-1.30.0}/solara/tasks.py +1 -6
- {solara-1.29.0 → solara-1.30.0}/solara/util.py +23 -1
- {solara-1.29.0 → solara-1.30.0}/solara/website/assets/custom.css +56 -0
- solara-1.30.0/solara/website/components/__init__.py +5 -0
- solara-1.30.0/solara/website/components/algolia_api.vue +157 -0
- solara-1.30.0/solara/website/components/docs.py +118 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/components/header.py +20 -10
- {solara-1.29.0 → solara-1.30.0}/solara/website/components/hero.py +1 -1
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/__init__.py +223 -20
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/apps/jupyter-dashboard-1.py +1 -1
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/apps/multipage/__init__.py +1 -1
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/apps/multipage/page2.py +1 -1
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/apps/scatter.py +21 -7
- solara-1.30.0/solara/website/pages/changelog/__init__.py +8 -0
- solara-1.29.0/solara/website/pages/docs/content/95-changelog.md → solara-1.30.0/solara/website/pages/changelog/changelog.md +28 -2
- solara-1.30.0/solara/website/pages/contact/__init__.py +8 -0
- solara-1.30.0/solara/website/pages/documentation/__init__.py +184 -0
- solara-1.30.0/solara/website/pages/documentation/advanced/__init__.py +36 -0
- solara-1.30.0/solara/website/pages/documentation/advanced/content/00-overview.md +1 -0
- solara-1.29.0/solara/website/pages/docs/content/10-howto/20-multipage.md → solara-1.30.0/solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md +4 -5
- solara-1.29.0/solara/website/pages/docs/content/10-howto/30-layout.md → solara-1.30.0/solara/website/pages/documentation/advanced/content/10-howto/20-layout.md +21 -21
- solara-1.29.0/solara/website/pages/docs/content/10-howto/80-embed.md → solara-1.30.0/solara/website/pages/documentation/advanced/content/10-howto/40-embed.md +1 -1
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/advanced}/content/20-understanding/06-ipyvuetify.md +1 -1
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/advanced}/content/20-understanding/12-reacton-basics.md +1 -1
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/advanced}/content/20-understanding/15-anatomy.md +2 -2
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/advanced}/content/20-understanding/18-containers.md +3 -3
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/advanced}/content/20-understanding/40-routing.md +9 -9
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/advanced}/content/20-understanding/50-solara-server.md +1 -1
- {solara-1.29.0/solara/website/pages/docs/content/50-enterprise → solara-1.30.0/solara/website/pages/documentation/advanced/content/30-enterprise}/10-oauth.md +3 -3
- {solara-1.29.0/solara/website/pages/docs/content/10-howto → solara-1.30.0/solara/website/pages/documentation/advanced/content/40-development}/01-contribute.md +5 -5
- {solara-1.29.0/solara/website/pages/docs/content/90-development → solara-1.30.0/solara/website/pages/documentation/advanced/content/40-development}/10-setup.md +2 -2
- solara-1.30.0/solara/website/pages/documentation/api/__init__.py +19 -0
- solara-1.30.0/solara/website/pages/documentation/api/cross_filter/__init__.py +9 -0
- solara-1.30.0/solara/website/pages/documentation/api/hooks/__init__.py +9 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/hooks}/use_effect.md +3 -3
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/hooks}/use_effect.py +2 -1
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/hooks}/use_memo.md +2 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/hooks}/use_memo.py +2 -1
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/hooks}/use_reactive.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/hooks}/use_state.py +1 -2
- solara-1.30.0/solara/website/pages/documentation/api/routing/__init__.py +9 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/routing}/generate_routes.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/routing}/generate_routes_directory.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/routing}/use_route.py +2 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/routing}/use_router.py +1 -2
- solara-1.30.0/solara/website/pages/documentation/api/utilities/__init__.py +9 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/utilities}/component_vue.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/utilities}/computed.py +2 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/utilities}/display.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/utilities}/get_kernel_id.py +2 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/utilities}/get_session_id.py +2 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/utilities}/on_kernel_start.py +9 -3
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/utilities}/reactive.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/utilities}/widget.py +2 -2
- solara-1.30.0/solara/website/pages/documentation/components/__init__.py +12 -0
- solara-1.30.0/solara/website/pages/documentation/components/advanced/__init__.py +9 -0
- solara-1.30.0/solara/website/pages/documentation/components/data/__init__.py +9 -0
- solara-1.30.0/solara/website/pages/documentation/components/enterprise/__init__.py +9 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/enterprise}/avatar.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/enterprise}/avatar_menu.py +1 -2
- solara-1.30.0/solara/website/pages/documentation/components/input/__init__.py +9 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/input}/checkbox.py +1 -2
- solara-1.30.0/solara/website/pages/documentation/components/input/file_drop.py +75 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/input}/input.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/input}/select.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/input}/slider.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/input}/switch.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/input}/togglebuttons.py +1 -2
- solara-1.30.0/solara/website/pages/documentation/components/lab/__init__.py +9 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/lab}/chat.py +2 -3
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/lab}/cookies_headers.py +1 -1
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/lab}/input_date.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/lab}/menu.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/lab}/task.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/lab}/theming.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/lab}/use_task.py +1 -2
- solara-1.30.0/solara/website/pages/documentation/components/layout/__init__.py +9 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/layout}/app_bar.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/layout}/app_bar_title.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/layout}/card.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/layout}/card_actions.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/layout}/griddraggable.py +1 -1
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/layout}/gridfixed.py +1 -1
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/layout}/hbox.py +1 -1
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/layout}/vbox.py +1 -1
- solara-1.30.0/solara/website/pages/documentation/components/output/__init__.py +9 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/output}/file_download.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/output}/image.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/output}/tooltip.py +1 -2
- solara-1.30.0/solara/website/pages/documentation/components/page/__init__.py +9 -0
- solara-1.30.0/solara/website/pages/documentation/components/status/__init__.py +9 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/status}/error.py +3 -3
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/status}/info.py +3 -3
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/status}/progress.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/status}/spinner.py +1 -2
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/status}/success.py +3 -3
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/status}/warning.py +3 -3
- solara-1.30.0/solara/website/pages/documentation/components/viz/__init__.py +9 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/viz}/plotly.py +1 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/__init__.py +3 -43
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/general/deploy_model.py +3 -3
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/general/login_oauth.py +1 -1
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/general/vue_component.py +1 -2
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/libraries/altair.py +2 -3
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/libraries/ipyleaflet_advanced.py +1 -1
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/utilities/countdown_timer.py +1 -1
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/visualization/plotly.py +1 -2
- solara-1.30.0/solara/website/pages/documentation/faq/__init__.py +11 -0
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/getting_started}/__init__.py +7 -1
- solara-1.29.0/solara/website/pages/docs/content/03-quickstart.md → solara-1.30.0/solara/website/pages/documentation/getting_started/content/00-quickstart.md +2 -2
- solara-1.29.0/solara/website/pages/docs/content/00-introduction.md → solara-1.30.0/solara/website/pages/documentation/getting_started/content/01-introduction.md +16 -16
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/getting_started}/content/02-installing.md +1 -1
- solara-1.30.0/solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md +9 -0
- {solara-1.29.0/solara/website/pages/docs/content/04-tutorial → solara-1.30.0/solara/website/pages/documentation/getting_started/content/04-tutorials}/20-web-app.md +4 -4
- {solara-1.29.0/solara/website/pages/docs/content/04-tutorial → solara-1.30.0/solara/website/pages/documentation/getting_started/content/04-tutorials}/30-ipywidgets.md +9 -9
- {solara-1.29.0/solara/website/pages/docs/content/04-tutorial → solara-1.30.0/solara/website/pages/documentation/getting_started/content/04-tutorials}/40-streamlit.md +13 -13
- {solara-1.29.0/solara/website/pages/docs/content/04-tutorial → solara-1.30.0/solara/website/pages/documentation/getting_started/content/04-tutorials}/50-dash.md +3 -3
- {solara-1.29.0/solara/website/pages/docs/content/04-tutorial → solara-1.30.0/solara/website/pages/documentation/getting_started/content/04-tutorials}/_data_science.ipynb +5 -5
- solara-1.30.0/solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md +7 -0
- {solara-1.29.0/solara/website/pages/docs/content/07-fundamentals → solara-1.30.0/solara/website/pages/documentation/getting_started/content/05-fundamentals}/10-components.md +2 -2
- {solara-1.29.0/solara/website/pages/docs/content/07-fundamentals → solara-1.30.0/solara/website/pages/documentation/getting_started/content/05-fundamentals}/50-state-management.md +3 -3
- solara-1.30.0/solara/website/pages/documentation/getting_started/content/06-reference/00-overview.md +3 -0
- {solara-1.29.0/solara/website/pages/docs/content/15-reference → solara-1.30.0/solara/website/pages/documentation/getting_started/content/06-reference}/41-asset-files.md +1 -1
- {solara-1.29.0/solara/website/pages/docs/content/15-reference → solara-1.30.0/solara/website/pages/documentation/getting_started/content/06-reference}/60-static-site-generation.md +1 -1
- {solara-1.29.0/solara/website/pages/docs/content/15-reference → solara-1.30.0/solara/website/pages/documentation/getting_started/content/06-reference}/70-search.md +1 -1
- {solara-1.29.0/solara/website/pages/docs/content/15-reference → solara-1.30.0/solara/website/pages/documentation/getting_started/content/06-reference}/80-reloading.md +3 -3
- {solara-1.29.0/solara/website/pages/docs/content/15-reference → solara-1.30.0/solara/website/pages/documentation/getting_started/content/06-reference}/95-caching.md +1 -1
- solara-1.30.0/solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md +3 -0
- {solara-1.29.0/solara/website/pages/docs/content/30-deploying → solara-1.30.0/solara/website/pages/documentation/getting_started/content/07-deploying}/10-self-hosted.md +3 -3
- {solara-1.29.0/solara/website/pages/docs/content/30-deploying → solara-1.30.0/solara/website/pages/documentation/getting_started/content/07-deploying}/20-cloud-hosted.md +1 -1
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/showcase/__init__.py +1 -1
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/showcase/domino_code_assist.py +1 -1
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/showcase/solara_dev.py +1 -1
- solara-1.30.0/solara/website/public/social/discord.svg +1 -0
- solara-1.30.0/solara/website/public/social/github.svg +1 -0
- solara-1.30.0/solara/website/public/social/twitter.svg +3 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/api_test.py +6 -6
- {solara-1.29.0 → solara-1.30.0}/tests/integration/enterprise/oauth_test.py +4 -4
- {solara-1.29.0 → solara-1.30.0}/tests/integration/file_download_test.py +1 -1
- {solara-1.29.0 → solara-1.30.0}/tests/integration/router_test.py +3 -3
- {solara-1.29.0 → solara-1.30.0}/tests/integration/server_test.py +46 -1
- {solara-1.29.0 → solara-1.30.0}/tests/unit/autorouting_test.py +56 -11
- solara-1.30.0/tests/unit/reload_test.py +56 -0
- solara-1.30.0/tests/unit/solara_test_apps/food/__init__.py +0 -0
- solara-1.30.0/tests/unit/solara_test_apps/kernel_start.py +14 -0
- solara-1.30.0/tests/unit/solara_test_apps/multipage/01-home.py +3 -0
- solara-1.30.0/tests/unit/solara_test_apps/multipage/02-my_fruit.py +4 -0
- solara-1.30.0/tests/unit/solara_test_apps/multipage/04-a_directory/01-not-an-app.py +3 -0
- solara-1.30.0/tests/unit/solara_test_apps/multipage/99-some_other_python_script.py +0 -0
- solara-1.30.0/tests/unit/solara_test_apps/single_file_routes.py +25 -0
- solara-1.29.0/solara/server/esm.py +0 -45
- solara-1.29.0/solara/website/components/__init__.py +0 -4
- solara-1.29.0/solara/website/pages/api/__init__.py +0 -292
- solara-1.29.0/solara/website/pages/api/default_layout.py +0 -16
- solara-1.29.0/solara/website/pages/api/file_drop.py +0 -36
- solara-1.29.0/solara/website/pages/docs/content/04-tutorial/00-overview.md +0 -9
- solara-1.29.0/solara/website/pages/docs/content/07-fundamentals/00-overview.md +0 -7
- solara-1.29.0/solara/website/pages/docs/content/15-reference/00-overview.md +0 -6
- solara-1.29.0/solara/website/pages/docs/content/30-deploying/00-overview.md +0 -3
- solara-1.29.0/tests/unit/solara_test_apps/multipage/01-home.py +0 -3
- solara-1.29.0/tests/unit/solara_test_apps/multipage/02-my_fruit.py +0 -4
- solara-1.29.0/tests/unit/solara_test_apps/multipage/04-a_directory/01-not-an-app.py +0 -3
- {solara-1.29.0 → solara-1.30.0}/.gitignore +0 -0
- {solara-1.29.0 → solara-1.30.0}/LICENSE +0 -0
- {solara-1.29.0 → solara-1.30.0}/prefix/etc/jupyter/jupyter_notebook_config.d/solara.json +0 -0
- {solara-1.29.0 → solara-1.30.0}/prefix/etc/jupyter/jupyter_server_config.d/solara.json +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/alias.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/checks.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/comm.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/alert.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/checkbox.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/code_highlight_css.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/code_highlight_css.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/columns.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/dataframe.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/datatable.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/details.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/download.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/echarts.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/echarts.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/file_browser.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/file_list_widget.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/head_tag.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/image.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/input.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/markdown.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/markdown_editor.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/markdown_editor.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/matplotlib.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/pivot_table.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/pivot_table.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/progress.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/select.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/select.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/slider.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/slider_date.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/spinner-solara.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/spinner.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/sql_code.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/sql_code.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/style.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/switch.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/tab_navigation.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/title.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/title.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/togglebuttons.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/components/tooltip.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/express.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/hooks/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/hooks/dataframe.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/hooks/misc.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/hooks/use_thread.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/kitchensink.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/components/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/components/chat.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/components/cross_filter.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/components/input_date.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/components/menu.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/components/menu.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/components/theming.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/components/theming.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/hooks/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/hooks/dataframe.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/toestand.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/utils/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/utils/cookies.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/utils/dataframe.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/lab/utils/headers.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/layout.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/minisettings.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/py.typed +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/scope/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/scope/types.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/assets/custom.css +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/assets/custom.js +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/assets/favicon.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/assets/favicon.svg +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/assets/theme-dark.css +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/assets/theme-light.css +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/assets/theme.js +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/cdn_helper.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/fastapi.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/flask.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/jupyter/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/jupyter/cdn_handler.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/jupyter/server_extension.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/jupytertools.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/kernel.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/reload.py +2 -2
- {solara-1.29.0 → solara-1.30.0}/solara/server/shell.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/static/ansi.js +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/static/highlight-dark.css +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/static/highlight.css +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/static/main-vuetify.js +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/static/main.js +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/static/sun.svg +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/static/webworker.js +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/telemetry.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/templates/index.html.j2 +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/templates/loader-plain.css +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/templates/loader-plain.html +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/templates/loader-solara.css +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/templates/loader-solara.html +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/templates/plain.html +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/threaded.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/utils.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/server/websocket.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/settings.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/button.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/markdown.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/.flake8 +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/.pre-commit-config.yaml +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/LICENSE +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/Procfile +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/mypy.ini +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/pyproject.toml +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/solara_portal/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/solara_portal/components/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/solara_portal/components/article.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/solara_portal/components/data.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/solara_portal/components/header.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/solara_portal/components/layout.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/solara_portal/content/articles/equis-in-vidi.md +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/solara_portal/content/articles/substiterat-vati.md +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/solara_portal/data.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/solara_portal/pages/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/solara_portal/pages/article/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/solara_portal/pages/tabular.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/solara_portal/pages/viz/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/template/portal/solara_portal/pages/viz/overview.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/test/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/test/pytest_plugin.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/toestand.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/assets/images/logo-small.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/assets/images/logo.svg +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/assets/images/logo_white.svg +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/assets/theme.js +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/components/algolia.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/components/mailchimp.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/components/mailchimp.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/components/notebook.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/apps/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/apps/authorization/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/apps/authorization/admin.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/apps/authorization/users.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/apps/layout-demo.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/apps/multipage/page1.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/apps/scrolling.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/apps/tutorial-streamlit.py +0 -0
- /solara-1.29.0/solara/website/pages/docs/content/99-contact.md → /solara-1.30.0/solara/website/pages/contact/contact.md +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/doc_use_download.py +0 -0
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/advanced}/content/10-howto/00-overview.md +0 -0
- /solara-1.29.0/solara/website/pages/docs/content/10-howto/50-testing.md → /solara-1.30.0/solara/website/pages/documentation/advanced/content/10-howto/30-testing.md +0 -0
- /solara-1.29.0/solara/website/pages/docs/content/10-howto/51-debugging.md → /solara-1.30.0/solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md +0 -0
- /solara-1.29.0/solara/website/pages/docs/content/10-howto/ipywidget_libraries.md → /solara-1.30.0/solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md +0 -0
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/advanced}/content/20-understanding/00-introduction.md +0 -0
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/advanced}/content/20-understanding/05-ipywidgets.md +0 -0
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/advanced}/content/20-understanding/10-reacton.md +0 -0
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/advanced}/content/20-understanding/17-rules-of-hooks.md +0 -0
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/advanced}/content/20-understanding/20-solara.md +0 -0
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/advanced}/content/20-understanding/60-voila.md +0 -0
- {solara-1.29.0/solara/website/pages/docs/content/50-enterprise → solara-1.30.0/solara/website/pages/documentation/advanced/content/30-enterprise}/00-overview.md +0 -0
- /solara-1.29.0/solara/website/pages/docs/content/__init__.py → /solara-1.30.0/solara/website/pages/documentation/advanced/content/40-development/00-overview.md +0 -0
- {solara-1.29.0/tests → solara-1.30.0/solara/website/pages/documentation/advanced/content}/__init__.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/cross_filter}/cross_filter_dataframe.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/cross_filter}/cross_filter_report.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/cross_filter}/cross_filter_select.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/cross_filter}/cross_filter_slider.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/hooks}/use_cross_filter.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/hooks}/use_dark_effective.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/hooks}/use_exception.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/hooks}/use_previous.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/hooks}/use_state_or_update.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/hooks}/use_thread.md +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/hooks}/use_thread.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/hooks}/use_trait_observe.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/routing}/resolve_path.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/routing}/route.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/api/utilities}/memoize.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/advanced}/link.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/advanced}/meta.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/advanced}/style.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components}/common.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/data}/dataframe.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/data}/pivot_table.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/input}/button.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/input}/file_browser.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/lab}/confirmation_dialog.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/lab}/tab.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/lab}/tabs.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/layout}/app_layout.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/layout}/column.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/layout}/columns.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/layout}/columns_responsive.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/layout}/row.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/layout}/sidebar.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/output}/html.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/output}/markdown.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/output}/markdown_editor.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/output}/sql_code.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/page}/head.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/page}/title.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/viz}/altair.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/viz}/echarts.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/viz}/matplotlib.py +0 -0
- {solara-1.29.0/solara/website/pages/api → solara-1.30.0/solara/website/pages/documentation/components/viz}/plotly_express.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/ai/__init__.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/ai/chatbot.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/ai/tokenizer.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/basics/__init__.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/basics/sine.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/fullscreen/__init__.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/fullscreen/authorization.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/fullscreen/layout_demo.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/fullscreen/multipage.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/fullscreen/scatter.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/fullscreen/scrolling.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/fullscreen/tutorial_streamlit.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/general/__init__.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/general/custom_storage.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/general/live_update.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/general/mycard.vue +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/general/pokemon_search.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/ipycanvas.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/libraries/__init__.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/libraries/bqplot.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/libraries/ipyleaflet.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/utilities/__init__.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/utilities/calculator.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/utilities/todo.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/visualization/__init__.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/visualization/annotator.py +0 -0
- {solara-1.29.0/solara/website/pages → solara-1.30.0/solara/website/pages/documentation}/examples/visualization/linked_views.py +0 -0
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/faq}/content/99-faq.md +0 -0
- {solara-1.29.0/solara/website/pages/docs/content/04-tutorial → solara-1.30.0/solara/website/pages/documentation/getting_started/content/04-tutorials}/10_data_science.py +0 -0
- {solara-1.29.0/solara/website/pages/docs/content/04-tutorial → solara-1.30.0/solara/website/pages/documentation/getting_started/content/04-tutorials}/60-jupyter-dashboard-part1.py +0 -0
- {solara-1.29.0/solara/website/pages/docs/content/04-tutorial → solara-1.30.0/solara/website/pages/documentation/getting_started/content/04-tutorials}/SF_crime_sample.csv.gz +0 -0
- {solara-1.29.0/solara/website/pages/docs/content/04-tutorial → solara-1.30.0/solara/website/pages/documentation/getting_started/content/04-tutorials}/_jupyter_dashboard_1.ipynb +0 -0
- {solara-1.29.0/solara/website/pages/docs/content/15-reference → solara-1.30.0/solara/website/pages/documentation/getting_started/content/06-reference}/40-static_files.md +0 -0
- {solara-1.29.0/solara/website/pages/docs/content/15-reference → solara-1.30.0/solara/website/pages/documentation/getting_started/content/06-reference}/90-notebook-support.md +0 -0
- {solara-1.29.0/solara/website/pages/docs/content/lab → solara-1.30.0/solara/website/pages/documentation/getting_started/content/08-lab}/00-what-is-lab.md +0 -0
- {solara-1.29.0/solara/website/pages/docs → solara-1.30.0/solara/website/pages/documentation/getting_started}/content/90-troubleshoot.md +0 -0
- {solara-1.29.0/tests/integration → solara-1.30.0/solara/website/pages/documentation/getting_started/content}/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/docutils.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/showcase/planeto_tessa.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/showcase/solarathon_2023_team_2.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/showcase/solarathon_2023_team_4.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/showcase/solarathon_2023_team_5.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/showcase/solarathon_2023_team_6.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/pages/showcase/wanderlust.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/public/beach.jpeg +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/public/logo.svg +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/public/success.html +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/templates/index.html.j2 +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/website/utils.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/widgets/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/widgets/vue/gridlayout.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/widgets/vue/html.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/widgets/vue/navigator.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/widgets/vue/vegalite.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/solara/widgets/widgets.py +0 -0
- {solara-1.29.0/tests/integration/enterprise → solara-1.30.0/tests}/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/conftest.py +0 -0
- {solara-1.29.0/tests/unit → solara-1.30.0/tests/integration}/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/app_widget.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/async_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/cdn_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/cmdline_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/conftest.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/create_test.py +0 -0
- {solara-1.29.0/tests/unit/lab → solara-1.30.0/tests/integration/enterprise}/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/error_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/esm_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/flask_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/input_date_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/latex_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/lifecycle_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/markdown_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/menu_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/popout_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/reconnect_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/reload/apps.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/ssg_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/starlette_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/test.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/testapp.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/integration/widget_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/latex_test.py/test_widget_latex_solara-flask-chromium-linux-ipywidgets-7-changed-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/latex_test.py/test_widget_latex_solara-flask-chromium-linux-ipywidgets-7-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/latex_test.py/test_widget_latex_solara-flask-chromium-linux-ipywidgets-8-changed-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/latex_test.py/test_widget_latex_solara-flask-chromium-linux-ipywidgets-8-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-jupyter_lab-chromium-linux-ipywidgets-7-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-jupyter_lab-chromium-linux-ipywidgets-8-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-jupyter_notebook-chromium-linux-ipywidgets-7-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-jupyter_notebook-chromium-linux-ipywidgets-8-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-solara-chromium-linux-ipywidgets-7-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-solara-chromium-linux-ipywidgets-8-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-voila-chromium-linux-ipywidgets-7-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-voila-chromium-linux-ipywidgets-8-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-starlette-solara-chromium-linux-ipywidgets-7-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-starlette-solara-chromium-linux-ipywidgets-8-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_solara_button_all-flask-jupyter_lab-chromium-linux-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_solara_button_all-flask-jupyter_notebook-chromium-linux-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_solara_button_all-flask-solara-chromium-linux-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_solara_button_all-flask-voila-chromium-linux-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_solara_button_all-starlette-solara-chromium-linux-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_widget_button_solara-flask-chromium-linux-ipyvuetify3-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_widget_button_solara-flask-chromium-linux-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_widget_button_solara-starlette-chromium-linux-ipyvuetify3-reference.png +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/ui/snapshots/tests/integration/widget_test.py/test_widget_button_solara-starlette-chromium-linux-reference.png +0 -0
- {solara-1.29.0/tests/unit/solara_test_apps → solara-1.30.0/tests/unit}/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/app_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/applayout_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/cache_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/cdn_helper_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/chat_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/checkbox_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/common.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/component_frontend_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/component_vue_test.vue +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/confirmation_dialog_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/conftest.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/cross_filter_component_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/cross_filter_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/dataframe_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/datatable_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/display_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/express_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/file_browser_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/file_download_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/hooks_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/input_date_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/input_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/kernel_test.py +0 -0
- {solara-1.29.0/tests/unit/solara_test_apps/food → solara-1.30.0/tests/unit/lab}/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/lifecycle_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/matplotlib_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/no_solara_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/output_widget_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/patch_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/pivottable_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/router_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/select_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/settings_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/shell_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/slider_test.py +0 -0
- /solara-1.29.0/tests/unit/solara_test_apps/multipage/99-some_other_python_script.py → /solara-1.30.0/tests/unit/solara_test_apps/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/food/food.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/food/index.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/multipage/03-some-markdown.md +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/multipage/04-a_directory/00-another-markdown.md +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/multipage/04-a_directory/__init__.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/multipage/05-and-notebooks.ipynb +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/multipage/06-custom-routes.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/multipage/10-single-file-directory/single-file.md +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/multipage/some_other_file.txt +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/multipage-widgets/00-overview.md +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/multipage-widgets/01-views.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/multipage-widgets/02-likes.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/multipage-widgets/03-volume.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/multipage-widgets/04-color.ipynb +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/notebookapp_component.ipynb +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/notebookapp_element.ipynb +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/notebookapp_widget.ipynb +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/single_file.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/solara_test_apps/single_file_multiple_routes.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/switch_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/tabs_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/task_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/telemetry_tests.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/toestand_computed_reload.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/toestand_test.py +0 -0
- {solara-1.29.0 → solara-1.30.0}/tests/unit/toggle_button_test.py +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: solara
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.30.0
|
|
4
|
+
Dynamic: Summary
|
|
4
5
|
Project-URL: Home, https://www.github.com/widgetti/solara
|
|
5
6
|
Author-email: "Maarten A. Breddels" <maartenbreddels@gmail.com>
|
|
6
7
|
License: The MIT License (MIT)
|
|
@@ -49,7 +50,7 @@ Requires-Dist: watchdog
|
|
|
49
50
|
Requires-Dist: watchfiles; python_version > '3.6'
|
|
50
51
|
Requires-Dist: websockets
|
|
51
52
|
Provides-Extra: assets
|
|
52
|
-
Requires-Dist: solara-assets==1.
|
|
53
|
+
Requires-Dist: solara-assets==1.30.0; extra == 'assets'
|
|
53
54
|
Provides-Extra: dev
|
|
54
55
|
Requires-Dist: black; extra == 'dev'
|
|
55
56
|
Requires-Dist: bqplot; extra == 'dev'
|
|
@@ -138,7 +139,7 @@ Run:
|
|
|
138
139
|
pip install solara
|
|
139
140
|
```
|
|
140
141
|
|
|
141
|
-
Or follow the [Installation instructions](https://solara.dev/
|
|
142
|
+
Or follow the [Installation instructions](https://solara.dev/documentation/getting_started/installing) for more detailed instructions.
|
|
142
143
|
|
|
143
144
|
## First script
|
|
144
145
|
|
|
@@ -184,7 +185,7 @@ Solara server is starting at http://localhost:8765
|
|
|
184
185
|
Or copy-paste this to a Jupyter notebook cell and execute it (the `Page()` expression at the end
|
|
185
186
|
will cause it to automatically render the component in the notebook).
|
|
186
187
|
|
|
187
|
-
See this snippet run live at https://solara.dev/
|
|
188
|
+
See this snippet run live at https://solara.dev/documentation/getting_started
|
|
188
189
|
|
|
189
190
|
## Demo
|
|
190
191
|
|
|
@@ -211,7 +212,7 @@ By building on top of ipywidgets, we automatically leverage an existing ecosyste
|
|
|
211
212
|
|
|
212
213
|
Visit our main website or jump directly to the introduction
|
|
213
214
|
|
|
214
|
-
[](https://solara.dev/
|
|
215
|
-
[](https://solara.dev/
|
|
215
|
+
[](https://solara.dev/documentation)
|
|
216
|
+
[](https://solara.dev/documentation/getting_started)
|
|
216
217
|
|
|
217
218
|
*Note that the solara.dev website is created using Solara*
|
|
@@ -27,7 +27,7 @@ Run:
|
|
|
27
27
|
pip install solara
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
Or follow the [Installation instructions](https://solara.dev/
|
|
30
|
+
Or follow the [Installation instructions](https://solara.dev/documentation/getting_started/installing) for more detailed instructions.
|
|
31
31
|
|
|
32
32
|
## First script
|
|
33
33
|
|
|
@@ -73,7 +73,7 @@ Solara server is starting at http://localhost:8765
|
|
|
73
73
|
Or copy-paste this to a Jupyter notebook cell and execute it (the `Page()` expression at the end
|
|
74
74
|
will cause it to automatically render the component in the notebook).
|
|
75
75
|
|
|
76
|
-
See this snippet run live at https://solara.dev/
|
|
76
|
+
See this snippet run live at https://solara.dev/documentation/getting_started
|
|
77
77
|
|
|
78
78
|
## Demo
|
|
79
79
|
|
|
@@ -100,7 +100,7 @@ By building on top of ipywidgets, we automatically leverage an existing ecosyste
|
|
|
100
100
|
|
|
101
101
|
Visit our main website or jump directly to the introduction
|
|
102
102
|
|
|
103
|
-
[](https://solara.dev/
|
|
104
|
-
[](https://solara.dev/
|
|
103
|
+
[](https://solara.dev/documentation)
|
|
104
|
+
[](https://solara.dev/documentation/getting_started)
|
|
105
105
|
|
|
106
106
|
*Note that the solara.dev website is created using Solara*
|
|
@@ -39,7 +39,6 @@ dependencies = [
|
|
|
39
39
|
]
|
|
40
40
|
|
|
41
41
|
[tool.hatch.build.targets.wheel.shared-data]
|
|
42
|
-
"prefix" = "prefix"
|
|
43
42
|
"prefix/etc/jupyter" = "etc/jupyter"
|
|
44
43
|
|
|
45
44
|
[tool.hatch.version]
|
|
@@ -100,7 +99,7 @@ dev = [
|
|
|
100
99
|
"polars",
|
|
101
100
|
]
|
|
102
101
|
assets = [
|
|
103
|
-
"solara-assets==1.
|
|
102
|
+
"solara-assets==1.30.0"
|
|
104
103
|
]
|
|
105
104
|
flask = [
|
|
106
105
|
"flask",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""Build webapps using IPywidgets"""
|
|
2
|
-
__version__ = "1.
|
|
2
|
+
__version__ = "1.30.0"
|
|
3
3
|
github_url = "https://github.com/widgetti/solara"
|
|
4
4
|
git_branch = "master"
|
|
5
5
|
|
|
@@ -77,10 +77,10 @@ def display(*objs, **kwargs):
|
|
|
77
77
|
|
|
78
78
|
However, if you require callback functions, use the specific Solara components, e.g.:
|
|
79
79
|
|
|
80
|
-
* [Plotly](/
|
|
81
|
-
* [Altair](/
|
|
82
|
-
* [Matplotlib](/
|
|
83
|
-
* [Dataframe](/
|
|
80
|
+
* [Plotly](/documentation/components/viz/plotly)
|
|
81
|
+
* [Altair](/documentation/components/viz/altair)
|
|
82
|
+
* [Matplotlib](/documentation/components/viz/matplotlib)
|
|
83
|
+
* [Dataframe](/documentation/components/data/dataframe)
|
|
84
84
|
|
|
85
85
|
```solara
|
|
86
86
|
import solara
|
|
@@ -489,7 +489,7 @@ def deploy():
|
|
|
489
489
|
|
|
490
490
|
time.sleep(1)
|
|
491
491
|
rprint("Want your app to run instantly on awesomeapp-mystartup-gh.solara.run?")
|
|
492
|
-
rprint("\tCheck out https://solara.dev/
|
|
492
|
+
rprint("\tCheck out https://solara.dev/documentation/getting_started/deploying/cloud-hosted")
|
|
493
493
|
|
|
494
494
|
|
|
495
495
|
@cli.command()
|
|
@@ -723,7 +723,11 @@ cli.add_command(ssg)
|
|
|
723
723
|
|
|
724
724
|
|
|
725
725
|
def main():
|
|
726
|
-
|
|
726
|
+
args = sys.argv
|
|
727
|
+
# skip everything after -- if it exists
|
|
728
|
+
if "--" in args:
|
|
729
|
+
args = args[: args.index("--")]
|
|
730
|
+
cli(args[1:])
|
|
727
731
|
|
|
728
732
|
|
|
729
733
|
if __name__ == "__main__":
|
|
@@ -123,15 +123,14 @@ def RoutingProvider(children: List[reacton.core.Element] = [], routes: List[sola
|
|
|
123
123
|
@solara.component
|
|
124
124
|
def RenderPage(main_name: str = "Page"):
|
|
125
125
|
"""Renders the page that matches the route."""
|
|
126
|
-
level_start = solara.use_route_level()
|
|
127
126
|
router = solara.use_context(solara.routing.router_context)
|
|
128
127
|
# we use these to cache script runs that use regular ipywidgets
|
|
129
128
|
modules = cast(Dict[str, ModuleType], solara.use_memo(dict, dependencies=[]))
|
|
130
|
-
modules_modified_times = solara.use_memo(dict, dependencies=[])
|
|
129
|
+
modules_modified_times = cast(Dict[str, float], solara.use_memo(dict, dependencies=[]))
|
|
131
130
|
|
|
132
|
-
if
|
|
131
|
+
if not router.path_routes:
|
|
133
132
|
with solara.VBox() as main:
|
|
134
|
-
solara.Error(f"Page not found: {router.path}
|
|
133
|
+
solara.Error(f"Page not found: {router.path}")
|
|
135
134
|
parent = "/" + "/".join(router.parts[:-1])
|
|
136
135
|
with solara.Link(parent):
|
|
137
136
|
solara.Button(f"Go to parent: {parent}", text=True)
|
|
@@ -144,10 +143,9 @@ def RenderPage(main_name: str = "Page"):
|
|
|
144
143
|
pp(router.routes)
|
|
145
144
|
return main
|
|
146
145
|
|
|
147
|
-
level_max = level_start
|
|
148
146
|
layouts = [] # nested layouts
|
|
149
|
-
|
|
150
|
-
for level in range(
|
|
147
|
+
level_max = len(router.path_routes) - 1
|
|
148
|
+
for level in range(level_max + 1):
|
|
151
149
|
# we always level_start the 'package'/'root' layout
|
|
152
150
|
roots = [k for k in router.path_routes_siblings[level] if k.path == "/"]
|
|
153
151
|
if len(roots) == 1:
|
|
@@ -158,8 +156,12 @@ def RenderPage(main_name: str = "Page"):
|
|
|
158
156
|
# and, if not the root layout, include the layout for the current route
|
|
159
157
|
if route.path != "/" and route.layout:
|
|
160
158
|
layouts.append(route.layout)
|
|
161
|
-
|
|
162
|
-
|
|
159
|
+
# used in for example the docs for use_route, only the route path are specified,
|
|
160
|
+
# nothing else, which means we will not follow that route path, but limit it to rendering
|
|
161
|
+
# router.path_routes[level_max] instead. It's assumed that component (Page) will continue
|
|
162
|
+
# handling the rest of the routing
|
|
163
|
+
if route.data is None and route.module is None and route.component is None:
|
|
164
|
+
level_max = level - 1
|
|
163
165
|
route_current = router.path_routes[level_max]
|
|
164
166
|
routes_siblings = router.path_routes_siblings[level_max]
|
|
165
167
|
routes_siblings_index = routes_siblings.index(route_current)
|
|
@@ -224,9 +226,6 @@ def RenderPage(main_name: str = "Page"):
|
|
|
224
226
|
title_element = solara.Title(title)
|
|
225
227
|
module = None
|
|
226
228
|
Page = route_current.component
|
|
227
|
-
# translate the default RenderPage as no value given (None)
|
|
228
|
-
if Page is RenderPage:
|
|
229
|
-
Page = None
|
|
230
229
|
if route_current.module is not None and (Page is None):
|
|
231
230
|
# if not a custom component is given, we try to find a Page component
|
|
232
231
|
# in the module
|
|
@@ -239,9 +238,6 @@ def RenderPage(main_name: str = "Page"):
|
|
|
239
238
|
Page = namespace.get("page", namespace.get("app", Page))
|
|
240
239
|
Page = nested_get(namespace, main_name, Page)
|
|
241
240
|
|
|
242
|
-
if Page is None and route_current.children:
|
|
243
|
-
# we we did not get a component, but we recursively render
|
|
244
|
-
Page = RenderPage
|
|
245
241
|
if isinstance(Page, ipywidgets.Widget):
|
|
246
242
|
# If we have a widget, we need to execute this again for each
|
|
247
243
|
# connection, since we cannot share widgets between connections/users.
|
|
@@ -291,12 +287,12 @@ def RenderPage(main_name: str = "Page"):
|
|
|
291
287
|
main = wrap_in_layouts(main, layouts)
|
|
292
288
|
else:
|
|
293
289
|
if route_current.module:
|
|
294
|
-
|
|
290
|
+
path_str = route_current.module.__file__
|
|
295
291
|
local_scope = route_current.module.__dict__
|
|
296
292
|
ignore = ["display"]
|
|
297
293
|
options = [k for k in list(local_scope) if k not in ignore and not k.startswith("_")]
|
|
298
294
|
matches = difflib.get_close_matches(main_name, options)
|
|
299
|
-
msg = f"No object with name {main_name} found for {
|
|
295
|
+
msg = f"No object with name {main_name} found for {path_str}"
|
|
300
296
|
if matches:
|
|
301
297
|
msg += " Did you mean: " + " or ".join(map(repr, matches))
|
|
302
298
|
else:
|
|
@@ -347,17 +343,22 @@ def get_title(module: ModuleType, required=True):
|
|
|
347
343
|
return title
|
|
348
344
|
|
|
349
345
|
|
|
350
|
-
def fix_route(route: solara.Route, new_file: Path) -> solara.Route:
|
|
346
|
+
def fix_route(route: solara.Route, new_file: Path, new_layout=None) -> solara.Route:
|
|
351
347
|
file = route.file or new_file
|
|
348
|
+
layout = route.layout or new_layout
|
|
352
349
|
children = fix_routes(route.children, new_file) if route.children else []
|
|
353
350
|
|
|
354
|
-
return dataclasses.replace(route, file=file, children=children)
|
|
351
|
+
return dataclasses.replace(route, file=file, children=children, layout=layout)
|
|
355
352
|
|
|
356
353
|
|
|
357
|
-
def fix_routes(routes: List[solara.Route], new_file: Path):
|
|
354
|
+
def fix_routes(routes: List[solara.Route], new_file: Path, new_layout=None):
|
|
358
355
|
new_routes = []
|
|
359
356
|
for route in routes:
|
|
360
|
-
|
|
357
|
+
if route.path == "/":
|
|
358
|
+
route = fix_route(route, new_file, new_layout)
|
|
359
|
+
else:
|
|
360
|
+
route = fix_route(route, new_file)
|
|
361
|
+
new_routes.append(route)
|
|
361
362
|
return new_routes
|
|
362
363
|
|
|
363
364
|
|
|
@@ -370,7 +371,7 @@ def generate_routes(module: ModuleType) -> List[solara.Route]:
|
|
|
370
371
|
files are not Python modules.
|
|
371
372
|
|
|
372
373
|
|
|
373
|
-
See [our multipage guide](/
|
|
374
|
+
See [our multipage guide](/documentation/advanced/howto/multipage#as-a-package) for more details.
|
|
374
375
|
|
|
375
376
|
|
|
376
377
|
"""
|
|
@@ -378,6 +379,7 @@ def generate_routes(module: ModuleType) -> List[solara.Route]:
|
|
|
378
379
|
|
|
379
380
|
assert module.__file__ is not None
|
|
380
381
|
routes = []
|
|
382
|
+
children: List[solara.Route]
|
|
381
383
|
file = Path(module.__file__)
|
|
382
384
|
|
|
383
385
|
if module.__file__.endswith("__init__.py"):
|
|
@@ -391,7 +393,9 @@ def generate_routes(module: ModuleType) -> List[solara.Route]:
|
|
|
391
393
|
title = get_title(module)
|
|
392
394
|
children = getattr(module, "routes", [])
|
|
393
395
|
if hasattr(module, "Page"):
|
|
394
|
-
routes.append(
|
|
396
|
+
routes.append(
|
|
397
|
+
solara.Route(path="/", component=get_page(module), data=module, module=module, layout=layout, children=children, label=title, file=file)
|
|
398
|
+
)
|
|
395
399
|
|
|
396
400
|
assert module.__file__ is not None
|
|
397
401
|
reload.reloader.watcher.add_file(module.__file__)
|
|
@@ -405,7 +409,9 @@ def generate_routes(module: ModuleType) -> List[solara.Route]:
|
|
|
405
409
|
# however, this may break things.
|
|
406
410
|
# name = name.replace("_", "-")
|
|
407
411
|
if info.ispkg:
|
|
408
|
-
route = solara.Route(
|
|
412
|
+
route = solara.Route(
|
|
413
|
+
name, component=get_page(submod, required=False), children=generate_routes(submod), module=submod, layout=None, label=title
|
|
414
|
+
)
|
|
409
415
|
# skip empty subpackages
|
|
410
416
|
if len(route.children) == 0:
|
|
411
417
|
continue
|
|
@@ -417,7 +423,9 @@ def generate_routes(module: ModuleType) -> List[solara.Route]:
|
|
|
417
423
|
if subfile:
|
|
418
424
|
children = fix_routes(children, subfile)
|
|
419
425
|
module_layout = getattr(submod, "Layout", None)
|
|
420
|
-
route = solara.Route(
|
|
426
|
+
route = solara.Route(
|
|
427
|
+
name, component=get_page(submod, required=False), module=submod, layout=module_layout, children=children, label=title, file=subfile
|
|
428
|
+
)
|
|
421
429
|
routes.append(route)
|
|
422
430
|
if route_order:
|
|
423
431
|
lookup = {k.path: k for k in routes}
|
|
@@ -429,12 +437,27 @@ def generate_routes(module: ModuleType) -> List[solara.Route]:
|
|
|
429
437
|
warnings.warn(f"Some routes are not in route_order: {set(lookup) - set(route_order)}")
|
|
430
438
|
|
|
431
439
|
else:
|
|
432
|
-
children = getattr(module, "routes", [])
|
|
433
|
-
children = fix_routes(children, file)
|
|
434
440
|
layout = getattr(module, "Layout", None)
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
441
|
+
children = []
|
|
442
|
+
if hasattr(module, "routes"):
|
|
443
|
+
children = getattr(module, "routes", [])
|
|
444
|
+
root = get_root(children)
|
|
445
|
+
if layout is not None and root is not None and root.layout is None:
|
|
446
|
+
warnings.warn(f'You defined routes in {file}, in this case, layout should be set on the root route (with path="/"), not on the module level')
|
|
447
|
+
layout = None
|
|
448
|
+
children = fix_routes(children, file, layout)
|
|
449
|
+
return [
|
|
450
|
+
solara.Route(
|
|
451
|
+
path="/",
|
|
452
|
+
component=get_page(module, required=False),
|
|
453
|
+
data=None,
|
|
454
|
+
module=module,
|
|
455
|
+
label=get_title(module),
|
|
456
|
+
layout=layout,
|
|
457
|
+
children=children,
|
|
458
|
+
file=file,
|
|
459
|
+
)
|
|
460
|
+
]
|
|
438
461
|
|
|
439
462
|
return routes
|
|
440
463
|
|
|
@@ -451,7 +474,7 @@ def generate_routes_directory(path: Path) -> List[solara.Route]:
|
|
|
451
474
|
Python files ending in .py, or Jupyter notebooks ending in .ipynb
|
|
452
475
|
will be executed and its `Page` component will be rendered.
|
|
453
476
|
|
|
454
|
-
Automatic titles will be [generated as explained in the multipage guide](/
|
|
477
|
+
Automatic titles will be [generated as explained in the multipage guide](/documentation/advanced/howto/multipage).
|
|
455
478
|
|
|
456
479
|
"""
|
|
457
480
|
|
|
@@ -491,9 +514,8 @@ def _generate_route_path(subpath: Path, layout=None, first=False, has_index=Fals
|
|
|
491
514
|
route_path = "/"
|
|
492
515
|
else:
|
|
493
516
|
route_path = "-".join([k.lower() for k in title_parts])
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
children = []
|
|
517
|
+
component = None
|
|
518
|
+
children: List[solara.Route] = []
|
|
497
519
|
module: Optional[ModuleType] = None
|
|
498
520
|
data: Any = None
|
|
499
521
|
module_layout = layout if first else None
|
|
@@ -506,8 +528,27 @@ def _generate_route_path(subpath: Path, layout=None, first=False, has_index=Fals
|
|
|
506
528
|
reload.reloader.watcher.add_file(subpath)
|
|
507
529
|
module = source_to_module(subpath, initial_namespace=initial_namespace)
|
|
508
530
|
title = get_title(module)
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
531
|
+
layout = getattr(module, "Layout", module_layout)
|
|
532
|
+
root = get_root(children)
|
|
533
|
+
if hasattr(module, "routes"):
|
|
534
|
+
children = getattr(module, "routes", [])
|
|
535
|
+
root = get_root(children)
|
|
536
|
+
if layout is not None and root is not None and root.layout is None:
|
|
537
|
+
warnings.warn(f'You defined routes in {subpath}, in this case, layout should be set on the root route (with path="/"), not on the module level')
|
|
538
|
+
layout = None
|
|
539
|
+
children = fix_routes(children, subpath, layout)
|
|
540
|
+
component = get_page(module, required=False)
|
|
541
|
+
if root and component and root.component and component is not root.component:
|
|
542
|
+
warnings.warn(
|
|
543
|
+
f"In {subpath}, you defined a Page component, but also a component on the root route (with path='/') "
|
|
544
|
+
"which is not equal to the Page component at the module level. This is not recommended."
|
|
545
|
+
)
|
|
546
|
+
route = solara.Route(route_path, component=component, module=module, label=title, children=children, data=data, layout=layout, file=subpath)
|
|
513
547
|
return route
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
def get_root(routes: List[solara.Route]) -> Optional[solara.Route]:
|
|
551
|
+
for route in routes:
|
|
552
|
+
if route.path == "/":
|
|
553
|
+
return route
|
|
554
|
+
return None
|
|
@@ -221,7 +221,7 @@ def memoize(
|
|
|
221
221
|
memory content.
|
|
222
222
|
|
|
223
223
|
The storage can be any object that implements the MutableMapping interface, for instance a dict or
|
|
224
|
-
a cachetools.LRUCache. Or a new instance of `solara.cache.Memory`, see [caching](/
|
|
224
|
+
a cachetools.LRUCache. Or a new instance of `solara.cache.Memory`, see [caching](/documentation/getting_started/reference/caching)
|
|
225
225
|
for cache storage options.
|
|
226
226
|
|
|
227
227
|
The return value of the decorator behaves like the original function, but also has a few attributes:
|
|
@@ -233,7 +233,7 @@ def memoize(
|
|
|
233
233
|
If the value is already cached, the function will not be executed in a thread.
|
|
234
234
|
|
|
235
235
|
|
|
236
|
-
See also the [reference on caching](/
|
|
236
|
+
See also the [reference on caching](/documentation/getting_started/reference/caching) for more caching details.
|
|
237
237
|
|
|
238
238
|
"""
|
|
239
239
|
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
const div = document.createElement("div")
|
|
61
61
|
const div2 = document.createElement("div")
|
|
62
62
|
div.innerHTML = `Run <code>${jupyter_python_executable} -m pip install ${needsInstall.join(" ")}</code>. Refresh the page after installation.`
|
|
63
|
-
div2.innerHTML = `Visit <a href="https://solara.dev/
|
|
63
|
+
div2.innerHTML = `Visit <a href="https://solara.dev/documentation/getting_started/troubleshoot" target="_blank">https://solara/dev/documentation/getting_started/troubleshoot</a> for more information.`
|
|
64
64
|
rootEl.appendChild(div)
|
|
65
65
|
rootEl.appendChild(div2)
|
|
66
66
|
}
|
|
@@ -46,7 +46,7 @@ from .echarts import FigureEcharts # noqa: #F401 F403
|
|
|
46
46
|
from .figure_altair import FigureAltair, AltairChart # noqa: #F401 F403
|
|
47
47
|
from .meta import Meta # noqa: #F401 F403
|
|
48
48
|
from .columns import Columns, ColumnsResponsive # noqa: #F401 F403
|
|
49
|
-
from .file_drop import FileDrop # noqa: #F401 F403
|
|
49
|
+
from .file_drop import FileDrop, FileDropMultiple # noqa: #F401 F403
|
|
50
50
|
from .file_download import FileDownload # noqa: #F401 F403
|
|
51
51
|
from .tooltip import Tooltip # noqa: #F401 F403
|
|
52
52
|
from .card import Card, CardActions # noqa: #F401 F403
|
|
@@ -90,7 +90,7 @@ def AppBar(children=[]):
|
|
|
90
90
|
|
|
91
91
|
This component does not need to be a direct child of the AppLayout, it can be at any level in your component tree.
|
|
92
92
|
|
|
93
|
-
If a [Tabs](/
|
|
93
|
+
If a [Tabs](/documentation/components/lab/tabs) component is used as direct child of the app bar, it will be shown under the app bar.
|
|
94
94
|
|
|
95
95
|
## Example showing an app bar
|
|
96
96
|
```solara
|
|
@@ -204,11 +204,11 @@ def AppLayout(
|
|
|
204
204
|
):
|
|
205
205
|
"""The default layout for Solara apps. It consists of an toolbar bar, a sidebar and a main content area.
|
|
206
206
|
|
|
207
|
-
* The title of the app is set using the [Title](/
|
|
208
|
-
* The sidebar content is set using the [Sidebar](/
|
|
207
|
+
* The title of the app is set using the [Title](/documentation/components/page/title) component.
|
|
208
|
+
* The sidebar content is set using the [Sidebar](/documentation/components/layout/sidebar) component.
|
|
209
209
|
* The content is set by the `Page` component provided by the user.
|
|
210
210
|
|
|
211
|
-
This component is usually not used directly, but rather through via the [Layout system](/
|
|
211
|
+
This component is usually not used directly, but rather through via the [Layout system](/documentation/advanced/howto/layout).
|
|
212
212
|
|
|
213
213
|
The sidebar is only added when the AppLayout has more than one child.
|
|
214
214
|
|
|
@@ -224,7 +224,7 @@ def AppLayout(
|
|
|
224
224
|
|
|
225
225
|
* `children`: The children of the AppLayout. The first child is used as the sidebar content, the rest as the main content.
|
|
226
226
|
* `sidebar_open`: Whether the sidebar is open or not.
|
|
227
|
-
* `title`: The title of the app shown in the app bar, can also be set using the [Title](/
|
|
227
|
+
* `title`: The title of the app shown in the app bar, can also be set using the [Title](/documentation/components/page/title) component.
|
|
228
228
|
* `toolbar_dark`: Whether the toolbar should be dark or not.
|
|
229
229
|
* `navigation`: Whether the navigation tabs based on routing should be shown.
|
|
230
230
|
* `color`: The color of the toolbar.
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
from typing import Callable, Dict, List, Optional, Union
|
|
2
2
|
|
|
3
|
-
from reacton import ipyvue
|
|
4
|
-
from reacton import ipyvuetify as v
|
|
5
|
-
|
|
6
3
|
import solara
|
|
7
4
|
import solara.util
|
|
5
|
+
from reacton import ipyvue
|
|
6
|
+
from reacton import ipyvuetify as v
|
|
8
7
|
|
|
9
8
|
|
|
10
9
|
@solara.component
|
|
@@ -51,7 +50,8 @@ def Button(
|
|
|
51
50
|
- `disabled`: Whether the button is disabled.
|
|
52
51
|
- `text`: Whether the button should be displayed as text, it has no shadow and no background.
|
|
53
52
|
- `outlined`: Whether the button should be displayed as outlined, it has no background.
|
|
54
|
-
- `value`: (Optional) When used as a child of a ToggleButtons component, the value of the selected button, see
|
|
53
|
+
- `value`: (Optional) When used as a child of a ToggleButtons component, the value of the selected button, see
|
|
54
|
+
[ToggleButtons](/documentation/components/input/togglebuttons).
|
|
55
55
|
- `classes`: Additional CSS classes to apply.
|
|
56
56
|
- `style`: CSS style to apply.
|
|
57
57
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from typing import Dict, List, Optional, Union
|
|
2
2
|
|
|
3
3
|
import reacton.ipyvuetify as v
|
|
4
|
-
|
|
5
4
|
import solara
|
|
6
5
|
from solara.util import _combine_classes
|
|
7
6
|
|
|
@@ -79,7 +78,7 @@ def Card(
|
|
|
79
78
|
def CardActions(children: List[solara.Element] = []):
|
|
80
79
|
"""Container for actions in a card.
|
|
81
80
|
|
|
82
|
-
See [Card](/
|
|
81
|
+
See [Card](/documentation/components/layout/card) for an example.
|
|
83
82
|
|
|
84
83
|
# Arguments
|
|
85
84
|
|
|
@@ -78,7 +78,7 @@ def component_vue(vue_path: str, vuetify=True) -> Callable[[Callable[P, None]],
|
|
|
78
78
|
[See the vue v2 api](https://v2.vuejs.org/v2/api/) for more information on how to use Vue, like `watch`,
|
|
79
79
|
`methods` and lifecycle hooks such as `mounted` and `destroyed`.
|
|
80
80
|
|
|
81
|
-
See the [Vue component example](/examples/general/vue_component) for an example of how to use this decorator.
|
|
81
|
+
See the [Vue component example](/documentation/examples/general/vue_component) for an example of how to use this decorator.
|
|
82
82
|
|
|
83
83
|
## Arguments
|
|
84
84
|
|
|
@@ -3,9 +3,8 @@ from typing import Any, List, cast
|
|
|
3
3
|
|
|
4
4
|
import ipyvuetify
|
|
5
5
|
import reacton.ipyvuetify as v
|
|
6
|
-
import traitlets
|
|
7
|
-
|
|
8
6
|
import solara
|
|
7
|
+
import traitlets
|
|
9
8
|
from solara import CellAction, ColumnAction
|
|
10
9
|
|
|
11
10
|
from ..lab.hooks.dataframe import use_df_column_names
|
|
@@ -55,7 +54,7 @@ def CrossFilterSelect(
|
|
|
55
54
|
):
|
|
56
55
|
"""A Select widget that will cross filter a DataFrame.
|
|
57
56
|
|
|
58
|
-
See [use_cross_filter](/api/use_cross_filter) for more information about how to use cross filtering.
|
|
57
|
+
See [use_cross_filter](/documentation/api/hooks/use_cross_filter) for more information about how to use cross filtering.
|
|
59
58
|
|
|
60
59
|
## Arguments
|
|
61
60
|
|
|
@@ -170,7 +169,7 @@ def CrossFilterReport(df, classes: List[str] = []):
|
|
|
170
169
|
|
|
171
170
|
Shows number of rows filtered, and the total number of rows.
|
|
172
171
|
|
|
173
|
-
See [use_cross_filter](/api/use_cross_filter) for more information about how to use cross filtering.
|
|
172
|
+
See [use_cross_filter](/documentation/api/hooks/use_cross_filter) for more information about how to use cross filtering.
|
|
174
173
|
|
|
175
174
|
## Arguments
|
|
176
175
|
|
|
@@ -214,7 +213,7 @@ def CrossFilterSlider(
|
|
|
214
213
|
):
|
|
215
214
|
"""A Slider widget that will cross filter a DataFrame.
|
|
216
215
|
|
|
217
|
-
See [use_cross_filter](/api/use_cross_filter) for more information about how to use cross filtering.
|
|
216
|
+
See [use_cross_filter](/documentation/api/hooks/use_cross_filter) for more information about how to use cross filtering.
|
|
218
217
|
|
|
219
218
|
## Arguments
|
|
220
219
|
|
|
@@ -318,9 +317,9 @@ def CrossFilterSlider(
|
|
|
318
317
|
def CrossFilterDataFrame(df, items_per_page=20, column_actions: List[ColumnAction] = [], cell_actions: List[CellAction] = [], scrollable=False):
|
|
319
318
|
"""Display a DataFrame with filters applied from the cross filter.
|
|
320
319
|
|
|
321
|
-
This component wraps [DataFrame](/
|
|
320
|
+
This component wraps [DataFrame](/documentation/components/data/dataframe).
|
|
322
321
|
|
|
323
|
-
See [use_cross_filter](/api/use_cross_filter) for more information about how to use cross filtering.
|
|
322
|
+
See [use_cross_filter](/documentation/api/hooks/use_cross_filter) for more information about how to use cross filtering.
|
|
324
323
|
|
|
325
324
|
# Arguments
|
|
326
325
|
|
|
@@ -6,11 +6,10 @@ from typing import Callable, List, Optional
|
|
|
6
6
|
|
|
7
7
|
import ipyvuetify as v
|
|
8
8
|
import ipywidgets
|
|
9
|
-
import traitlets
|
|
10
|
-
|
|
11
9
|
import solara
|
|
12
10
|
import solara.hooks.dataframe
|
|
13
11
|
import solara.lab
|
|
12
|
+
import traitlets
|
|
14
13
|
from solara.lab.hooks.dataframe import use_df_column_names
|
|
15
14
|
from solara.lab.utils.dataframe import df_type
|
|
16
15
|
|
|
@@ -208,7 +207,7 @@ def DataFrame(
|
|
|
208
207
|
* `cell_actions` - Triggered via clicking on the triple dot icon in the cell (visible when hovering).
|
|
209
208
|
* `on_column_header_hover` - Optional callback when the user hovers over the triple dot icon on a header.
|
|
210
209
|
* `column_header_info` - Element to display in the column menu popup (visible when hovering), provide an
|
|
211
|
-
empty container element (like [Column](/
|
|
210
|
+
empty container element (like [Column](/documentation/components/layout/column)) to force showing the trigle dot icon (see example).
|
|
212
211
|
|
|
213
212
|
"""
|
|
214
213
|
return DataTable(
|
|
@@ -144,8 +144,8 @@ def FileDownload(
|
|
|
144
144
|
## Note on file size
|
|
145
145
|
|
|
146
146
|
Note that the data will be kept in memory when downloading.
|
|
147
|
-
If the file is large (>10 MB), and when using [Solara server](/
|
|
148
|
-
[static files directory](/
|
|
147
|
+
If the file is large (>10 MB), and when using [Solara server](/documentation/advanced/understanding/solara-server), we recommend using the
|
|
148
|
+
[static files directory](/documentation/getting_started/reference/static-files) instead.
|
|
149
149
|
|
|
150
150
|
"""
|
|
151
151
|
request_download, set_request_download = solara.use_state(False)
|