solara-ui 1.31.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_ui-1.31.0/.gitignore +89 -0
- solara_ui-1.31.0/LICENSE +21 -0
- solara_ui-1.31.0/PKG-INFO +158 -0
- solara_ui-1.31.0/README.md +106 -0
- solara_ui-1.31.0/prefix/etc/jupyter/jupyter_notebook_config.d/solara.json +7 -0
- solara_ui-1.31.0/prefix/etc/jupyter/jupyter_server_config.d/solara.json +7 -0
- solara_ui-1.31.0/pyproject.toml +95 -0
- solara_ui-1.31.0/solara/__init__.py +124 -0
- solara_ui-1.31.0/solara/__main__.py +734 -0
- solara_ui-1.31.0/solara/alias.py +6 -0
- solara_ui-1.31.0/solara/autorouting.py +546 -0
- solara_ui-1.31.0/solara/cache.py +303 -0
- solara_ui-1.31.0/solara/checks.html +71 -0
- solara_ui-1.31.0/solara/checks.py +224 -0
- solara_ui-1.31.0/solara/comm.py +28 -0
- solara_ui-1.31.0/solara/components/__init__.py +59 -0
- solara_ui-1.31.0/solara/components/alert.py +155 -0
- solara_ui-1.31.0/solara/components/applayout.py +393 -0
- solara_ui-1.31.0/solara/components/button.py +85 -0
- solara_ui-1.31.0/solara/components/card.py +87 -0
- solara_ui-1.31.0/solara/components/checkbox.py +50 -0
- solara_ui-1.31.0/solara/components/code_highlight_css.py +11 -0
- solara_ui-1.31.0/solara/components/code_highlight_css.vue +63 -0
- solara_ui-1.31.0/solara/components/columns.py +159 -0
- solara_ui-1.31.0/solara/components/component_vue.py +110 -0
- solara_ui-1.31.0/solara/components/cross_filter.py +335 -0
- solara_ui-1.31.0/solara/components/dataframe.py +546 -0
- solara_ui-1.31.0/solara/components/datatable.py +221 -0
- solara_ui-1.31.0/solara/components/datatable.vue +175 -0
- solara_ui-1.31.0/solara/components/details.py +21 -0
- solara_ui-1.31.0/solara/components/download.vue +35 -0
- solara_ui-1.31.0/solara/components/echarts.py +75 -0
- solara_ui-1.31.0/solara/components/echarts.vue +128 -0
- solara_ui-1.31.0/solara/components/figure_altair.py +39 -0
- solara_ui-1.31.0/solara/components/file_browser.py +182 -0
- solara_ui-1.31.0/solara/components/file_download.py +199 -0
- solara_ui-1.31.0/solara/components/file_drop.py +139 -0
- solara_ui-1.31.0/solara/components/file_drop.vue +83 -0
- solara_ui-1.31.0/solara/components/file_list_widget.vue +78 -0
- solara_ui-1.31.0/solara/components/head.py +27 -0
- solara_ui-1.31.0/solara/components/head_tag.py +49 -0
- solara_ui-1.31.0/solara/components/head_tag.vue +60 -0
- solara_ui-1.31.0/solara/components/image.py +173 -0
- solara_ui-1.31.0/solara/components/input.py +436 -0
- solara_ui-1.31.0/solara/components/link.py +55 -0
- solara_ui-1.31.0/solara/components/markdown.py +378 -0
- solara_ui-1.31.0/solara/components/markdown_editor.py +25 -0
- solara_ui-1.31.0/solara/components/markdown_editor.vue +362 -0
- solara_ui-1.31.0/solara/components/matplotlib.py +74 -0
- solara_ui-1.31.0/solara/components/meta.py +47 -0
- solara_ui-1.31.0/solara/components/misc.py +333 -0
- solara_ui-1.31.0/solara/components/pivot_table.py +258 -0
- solara_ui-1.31.0/solara/components/pivot_table.vue +158 -0
- solara_ui-1.31.0/solara/components/progress.py +47 -0
- solara_ui-1.31.0/solara/components/select.py +182 -0
- solara_ui-1.31.0/solara/components/select.vue +27 -0
- solara_ui-1.31.0/solara/components/slider.py +442 -0
- solara_ui-1.31.0/solara/components/slider_date.vue +56 -0
- solara_ui-1.31.0/solara/components/spinner-solara.vue +105 -0
- solara_ui-1.31.0/solara/components/spinner.py +30 -0
- solara_ui-1.31.0/solara/components/sql_code.py +33 -0
- solara_ui-1.31.0/solara/components/sql_code.vue +128 -0
- solara_ui-1.31.0/solara/components/style.py +105 -0
- solara_ui-1.31.0/solara/components/switch.py +68 -0
- solara_ui-1.31.0/solara/components/tab_navigation.py +37 -0
- solara_ui-1.31.0/solara/components/title.py +90 -0
- solara_ui-1.31.0/solara/components/title.vue +38 -0
- solara_ui-1.31.0/solara/components/togglebuttons.py +200 -0
- solara_ui-1.31.0/solara/components/tooltip.py +61 -0
- solara_ui-1.31.0/solara/datatypes.py +143 -0
- solara_ui-1.31.0/solara/express.py +241 -0
- solara_ui-1.31.0/solara/hooks/__init__.py +4 -0
- solara_ui-1.31.0/solara/hooks/dataframe.py +99 -0
- solara_ui-1.31.0/solara/hooks/misc.py +263 -0
- solara_ui-1.31.0/solara/hooks/use_reactive.py +129 -0
- solara_ui-1.31.0/solara/hooks/use_thread.py +129 -0
- solara_ui-1.31.0/solara/kitchensink.py +8 -0
- solara_ui-1.31.0/solara/lab/__init__.py +34 -0
- solara_ui-1.31.0/solara/lab/components/__init__.py +6 -0
- solara_ui-1.31.0/solara/lab/components/chat.py +203 -0
- solara_ui-1.31.0/solara/lab/components/confirmation_dialog.py +163 -0
- solara_ui-1.31.0/solara/lab/components/cross_filter.py +7 -0
- solara_ui-1.31.0/solara/lab/components/input_date.py +298 -0
- solara_ui-1.31.0/solara/lab/components/menu.py +181 -0
- solara_ui-1.31.0/solara/lab/components/menu.vue +38 -0
- solara_ui-1.31.0/solara/lab/components/tabs.py +274 -0
- solara_ui-1.31.0/solara/lab/components/theming.py +98 -0
- solara_ui-1.31.0/solara/lab/components/theming.vue +72 -0
- solara_ui-1.31.0/solara/lab/hooks/__init__.py +0 -0
- solara_ui-1.31.0/solara/lab/hooks/dataframe.py +12 -0
- solara_ui-1.31.0/solara/lab/toestand.py +3 -0
- solara_ui-1.31.0/solara/lab/utils/__init__.py +2 -0
- solara_ui-1.31.0/solara/lab/utils/cookies.py +5 -0
- solara_ui-1.31.0/solara/lab/utils/dataframe.py +115 -0
- solara_ui-1.31.0/solara/lab/utils/headers.py +5 -0
- solara_ui-1.31.0/solara/layout.py +44 -0
- solara_ui-1.31.0/solara/lifecycle.py +46 -0
- solara_ui-1.31.0/solara/minisettings.py +133 -0
- solara_ui-1.31.0/solara/py.typed +0 -0
- solara_ui-1.31.0/solara/reactive.py +93 -0
- solara_ui-1.31.0/solara/routing.py +268 -0
- solara_ui-1.31.0/solara/scope/__init__.py +88 -0
- solara_ui-1.31.0/solara/scope/types.py +55 -0
- solara_ui-1.31.0/solara/server/__init__.py +0 -0
- solara_ui-1.31.0/solara/server/app.py +491 -0
- solara_ui-1.31.0/solara/server/assets/custom.css +1 -0
- solara_ui-1.31.0/solara/server/assets/custom.js +1 -0
- solara_ui-1.31.0/solara/server/assets/favicon.png +0 -0
- solara_ui-1.31.0/solara/server/assets/favicon.svg +5 -0
- solara_ui-1.31.0/solara/server/assets/style.css +1665 -0
- solara_ui-1.31.0/solara/server/assets/theme-dark.css +437 -0
- solara_ui-1.31.0/solara/server/assets/theme-light.css +420 -0
- solara_ui-1.31.0/solara/server/assets/theme.js +3 -0
- solara_ui-1.31.0/solara/server/cdn_helper.py +77 -0
- solara_ui-1.31.0/solara/server/esm.py +69 -0
- solara_ui-1.31.0/solara/server/fastapi.py +5 -0
- solara_ui-1.31.0/solara/server/flask.py +286 -0
- solara_ui-1.31.0/solara/server/jupyter/__init__.py +2 -0
- solara_ui-1.31.0/solara/server/jupyter/cdn_handler.py +28 -0
- solara_ui-1.31.0/solara/server/jupyter/server_extension.py +29 -0
- solara_ui-1.31.0/solara/server/jupytertools.py +46 -0
- solara_ui-1.31.0/solara/server/kernel.py +338 -0
- solara_ui-1.31.0/solara/server/kernel_context.py +357 -0
- solara_ui-1.31.0/solara/server/patch.py +552 -0
- solara_ui-1.31.0/solara/server/reload.py +242 -0
- solara_ui-1.31.0/solara/server/server.py +456 -0
- solara_ui-1.31.0/solara/server/settings.py +215 -0
- solara_ui-1.31.0/solara/server/shell.py +251 -0
- solara_ui-1.31.0/solara/server/starlette.py +601 -0
- solara_ui-1.31.0/solara/server/static/ansi.js +270 -0
- solara_ui-1.31.0/solara/server/static/highlight-dark.css +82 -0
- solara_ui-1.31.0/solara/server/static/highlight.css +43 -0
- solara_ui-1.31.0/solara/server/static/main-vuetify.js +260 -0
- solara_ui-1.31.0/solara/server/static/main.js +163 -0
- solara_ui-1.31.0/solara/server/static/solara_bootstrap.py +129 -0
- solara_ui-1.31.0/solara/server/static/sun.svg +23 -0
- solara_ui-1.31.0/solara/server/static/webworker.js +42 -0
- solara_ui-1.31.0/solara/server/telemetry.py +212 -0
- solara_ui-1.31.0/solara/server/templates/index.html.j2 +1 -0
- solara_ui-1.31.0/solara/server/templates/loader-plain.css +11 -0
- solara_ui-1.31.0/solara/server/templates/loader-plain.html +20 -0
- solara_ui-1.31.0/solara/server/templates/loader-solara.css +111 -0
- solara_ui-1.31.0/solara/server/templates/loader-solara.html +40 -0
- solara_ui-1.31.0/solara/server/templates/plain.html +82 -0
- solara_ui-1.31.0/solara/server/templates/solara.html.j2 +446 -0
- solara_ui-1.31.0/solara/server/threaded.py +75 -0
- solara_ui-1.31.0/solara/server/utils.py +30 -0
- solara_ui-1.31.0/solara/server/websocket.py +45 -0
- solara_ui-1.31.0/solara/settings.py +56 -0
- solara_ui-1.31.0/solara/tasks.py +837 -0
- solara_ui-1.31.0/solara/template/button.py +16 -0
- solara_ui-1.31.0/solara/template/markdown.py +42 -0
- solara_ui-1.31.0/solara/template/portal/.flake8 +6 -0
- solara_ui-1.31.0/solara/template/portal/.pre-commit-config.yaml +28 -0
- solara_ui-1.31.0/solara/template/portal/LICENSE +21 -0
- solara_ui-1.31.0/solara/template/portal/Procfile +7 -0
- solara_ui-1.31.0/solara/template/portal/mypy.ini +3 -0
- solara_ui-1.31.0/solara/template/portal/pyproject.toml +26 -0
- solara_ui-1.31.0/solara/template/portal/solara_portal/__init__.py +4 -0
- solara_ui-1.31.0/solara/template/portal/solara_portal/components/__init__.py +2 -0
- solara_ui-1.31.0/solara/template/portal/solara_portal/components/article.py +28 -0
- solara_ui-1.31.0/solara/template/portal/solara_portal/components/data.py +28 -0
- solara_ui-1.31.0/solara/template/portal/solara_portal/components/header.py +6 -0
- solara_ui-1.31.0/solara/template/portal/solara_portal/components/layout.py +6 -0
- solara_ui-1.31.0/solara/template/portal/solara_portal/content/articles/equis-in-vidi.md +85 -0
- solara_ui-1.31.0/solara/template/portal/solara_portal/content/articles/substiterat-vati.md +70 -0
- solara_ui-1.31.0/solara/template/portal/solara_portal/data.py +60 -0
- solara_ui-1.31.0/solara/template/portal/solara_portal/pages/__init__.py +67 -0
- solara_ui-1.31.0/solara/template/portal/solara_portal/pages/article/__init__.py +26 -0
- solara_ui-1.31.0/solara/template/portal/solara_portal/pages/tabular.py +29 -0
- solara_ui-1.31.0/solara/template/portal/solara_portal/pages/viz/__init__.py +70 -0
- solara_ui-1.31.0/solara/template/portal/solara_portal/pages/viz/overview.py +14 -0
- solara_ui-1.31.0/solara/test/__init__.py +0 -0
- solara_ui-1.31.0/solara/test/pytest_plugin.py +697 -0
- solara_ui-1.31.0/solara/toestand.py +772 -0
- solara_ui-1.31.0/solara/util.py +308 -0
- solara_ui-1.31.0/solara/website/__init__.py +0 -0
- solara_ui-1.31.0/solara/website/assets/custom.css +468 -0
- solara_ui-1.31.0/solara/website/assets/images/logo-small.png +0 -0
- solara_ui-1.31.0/solara/website/assets/images/logo.svg +17 -0
- solara_ui-1.31.0/solara/website/assets/images/logo_white.svg +50 -0
- solara_ui-1.31.0/solara/website/assets/theme.js +8 -0
- solara_ui-1.31.0/solara/website/components/__init__.py +5 -0
- solara_ui-1.31.0/solara/website/components/algolia.vue +24 -0
- solara_ui-1.31.0/solara/website/components/algolia_api.vue +187 -0
- solara_ui-1.31.0/solara/website/components/docs.py +118 -0
- solara_ui-1.31.0/solara/website/components/header.py +72 -0
- solara_ui-1.31.0/solara/website/components/hero.py +15 -0
- solara_ui-1.31.0/solara/website/components/mailchimp.py +12 -0
- solara_ui-1.31.0/solara/website/components/mailchimp.vue +47 -0
- solara_ui-1.31.0/solara/website/components/markdown.py +30 -0
- solara_ui-1.31.0/solara/website/components/notebook.py +171 -0
- solara_ui-1.31.0/solara/website/pages/__init__.py +575 -0
- solara_ui-1.31.0/solara/website/pages/apps/__init__.py +16 -0
- solara_ui-1.31.0/solara/website/pages/apps/authorization/__init__.py +119 -0
- solara_ui-1.31.0/solara/website/pages/apps/authorization/admin.py +12 -0
- solara_ui-1.31.0/solara/website/pages/apps/authorization/users.py +12 -0
- solara_ui-1.31.0/solara/website/pages/apps/jupyter-dashboard-1.py +116 -0
- solara_ui-1.31.0/solara/website/pages/apps/layout-demo.py +40 -0
- solara_ui-1.31.0/solara/website/pages/apps/multipage/__init__.py +38 -0
- solara_ui-1.31.0/solara/website/pages/apps/multipage/page1.py +26 -0
- solara_ui-1.31.0/solara/website/pages/apps/multipage/page2.py +34 -0
- solara_ui-1.31.0/solara/website/pages/apps/scatter.py +136 -0
- solara_ui-1.31.0/solara/website/pages/apps/scrolling.py +63 -0
- solara_ui-1.31.0/solara/website/pages/apps/tutorial-streamlit.py +18 -0
- solara_ui-1.31.0/solara/website/pages/changelog/__init__.py +8 -0
- solara_ui-1.31.0/solara/website/pages/changelog/changelog.md +204 -0
- solara_ui-1.31.0/solara/website/pages/contact/__init__.py +8 -0
- solara_ui-1.31.0/solara/website/pages/contact/contact.md +17 -0
- solara_ui-1.31.0/solara/website/pages/doc_use_download.py +85 -0
- solara_ui-1.31.0/solara/website/pages/documentation/__init__.py +184 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/00-overview.md +1 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/10-howto/00-overview.md +6 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md +196 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/10-howto/20-layout.md +125 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/10-howto/30-testing.md +162 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md +69 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/10-howto/40-embed.md +49 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md +124 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/15-reference/00-overview.md +3 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/15-reference/40-static_files.md +31 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/15-reference/41-asset-files.md +36 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/15-reference/60-static-site-generation.md +59 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/15-reference/70-search.md +34 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/15-reference/80-reloading.md +34 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/15-reference/90-notebook-support.md +7 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/15-reference/95-caching.md +148 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/20-understanding/00-introduction.md +10 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/20-understanding/05-ipywidgets.md +35 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/20-understanding/06-ipyvuetify.md +42 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/20-understanding/10-reacton.md +28 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/20-understanding/12-reacton-basics.md +108 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/20-understanding/15-anatomy.md +23 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/20-understanding/17-rules-of-hooks.md +7 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/20-understanding/18-containers.md +166 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/20-understanding/20-solara.md +18 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/20-understanding/40-routing.md +240 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/20-understanding/50-solara-server.md +97 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/20-understanding/60-voila.md +12 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/30-enterprise/00-overview.md +1 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md +171 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/40-development/00-overview.md +0 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/40-development/01-contribute.md +45 -0
- solara_ui-1.31.0/solara/website/pages/documentation/advanced/content/40-development/10-setup.md +76 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/__init__.py +19 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/cross_filter/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/cross_filter/cross_filter_dataframe.py +23 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/cross_filter/cross_filter_report.py +22 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/cross_filter/cross_filter_select.py +22 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/cross_filter/cross_filter_slider.py +22 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/hooks/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/hooks/use_cross_filter.py +25 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/hooks/use_dark_effective.py +12 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/hooks/use_effect.md +43 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/hooks/use_effect.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/hooks/use_exception.py +33 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/hooks/use_memo.md +16 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/hooks/use_memo.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/hooks/use_previous.py +33 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/hooks/use_reactive.py +16 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/hooks/use_state.py +10 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/hooks/use_state_or_update.py +69 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/hooks/use_thread.md +58 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/hooks/use_thread.py +44 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/hooks/use_trait_observe.py +12 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/routing/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/routing/generate_routes.py +10 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/routing/generate_routes_directory.py +10 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/routing/resolve_path.py +35 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/routing/route.py +31 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/routing/use_route.py +80 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/routing/use_router.py +16 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/utilities/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/utilities/component_vue.py +10 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/utilities/computed.py +16 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/utilities/display.py +16 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/utilities/get_kernel_id.py +16 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/utilities/get_session_id.py +16 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/utilities/memoize.py +35 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/utilities/on_kernel_start.py +27 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/utilities/reactive.py +16 -0
- solara_ui-1.31.0/solara/website/pages/documentation/api/utilities/widget.py +104 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/__init__.py +12 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/advanced/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/advanced/link.py +27 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/advanced/meta.py +20 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/advanced/style.py +45 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/common.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/data/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/data/dataframe.py +44 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/data/pivot_table.py +81 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/enterprise/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/enterprise/avatar.py +24 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/enterprise/avatar_menu.py +25 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/input/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/input/button.py +23 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/input/checkbox.py +10 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/input/file_browser.py +32 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/input/file_drop.py +76 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/input/input.py +19 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/input/select.py +22 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/input/slider.py +29 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/input/switch.py +10 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/input/togglebuttons.py +21 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/lab/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/lab/chat.py +109 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/lab/confirmation_dialog.py +55 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/lab/cookies_headers.py +48 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/lab/input_date.py +20 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/lab/menu.py +22 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/lab/tab.py +25 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/lab/tabs.py +45 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/lab/task.py +11 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/lab/theming.py +72 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/lab/use_task.py +11 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/layout/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/layout/app_bar.py +16 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/layout/app_bar_title.py +16 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/layout/app_layout.py +24 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/layout/card.py +15 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/layout/card_actions.py +16 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/layout/column.py +30 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/layout/columns.py +27 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/layout/columns_responsive.py +68 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/layout/griddraggable.py +62 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/layout/gridfixed.py +21 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/layout/hbox.py +18 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/layout/row.py +30 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/layout/sidebar.py +24 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/layout/vbox.py +19 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/output/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/output/file_download.py +11 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/output/html.py +21 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/output/image.py +11 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/output/markdown.py +57 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/output/markdown_editor.py +51 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/output/sql_code.py +85 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/output/tooltip.py +11 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/page/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/page/head.py +18 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/page/title.py +27 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/status/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/status/error.py +40 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/status/info.py +40 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/status/progress.py +10 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/status/spinner.py +11 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/status/success.py +40 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/status/warning.py +47 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/viz/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/viz/altair.py +42 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/viz/echarts.py +75 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/viz/matplotlib.py +30 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/viz/plotly.py +63 -0
- solara_ui-1.31.0/solara/website/pages/documentation/components/viz/plotly_express.py +41 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/__init__.py +52 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/ai/__init__.py +11 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/ai/chatbot.py +95 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/ai/tokenizer.py +107 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/basics/__init__.py +10 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/basics/sine.py +28 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/fullscreen/__init__.py +10 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/fullscreen/authorization.py +3 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/fullscreen/layout_demo.py +3 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/fullscreen/multipage.py +3 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/fullscreen/scatter.py +3 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/fullscreen/scrolling.py +3 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/fullscreen/tutorial_streamlit.py +3 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/general/__init__.py +10 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/general/custom_storage.py +70 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/general/deploy_model.py +115 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/general/live_update.py +38 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/general/login_oauth.py +81 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/general/mycard.vue +58 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/general/pokemon_search.py +51 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/general/vue_component.py +50 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/ipycanvas.py +49 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/libraries/__init__.py +10 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/libraries/altair.py +64 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/libraries/bqplot.py +39 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/libraries/ipyleaflet.py +33 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/libraries/ipyleaflet_advanced.py +66 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/utilities/__init__.py +10 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/utilities/calculator.py +157 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/utilities/countdown_timer.py +64 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/utilities/todo.py +196 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/visualization/__init__.py +6 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/visualization/annotator.py +69 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/visualization/linked_views.py +84 -0
- solara_ui-1.31.0/solara/website/pages/documentation/examples/visualization/plotly.py +44 -0
- solara_ui-1.31.0/solara/website/pages/documentation/faq/__init__.py +12 -0
- solara_ui-1.31.0/solara/website/pages/documentation/faq/content/99-faq.md +76 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/__init__.py +9 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/00-quickstart.md +89 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/01-introduction.md +125 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/02-installing.md +134 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md +14 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/04-tutorials/10_data_science.py +13 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/04-tutorials/20-web-app.md +89 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/04-tutorials/30-ipywidgets.md +124 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/04-tutorials/40-streamlit.md +146 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/04-tutorials/50-dash.md +144 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/04-tutorials/60-jupyter-dashboard-part1.py +64 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/04-tutorials/SF_crime_sample.csv.gz +0 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/04-tutorials/_data_science.ipynb +445 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/04-tutorials/_jupyter_dashboard_1.ipynb +1000 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md +11 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/05-fundamentals/10-components.md +223 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/05-fundamentals/50-state-management.md +88 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md +7 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md +273 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/07-deploying/20-cloud-hosted.md +80 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/80-what-is-lab.md +7 -0
- solara_ui-1.31.0/solara/website/pages/documentation/getting_started/content/90-troubleshoot.md +26 -0
- solara_ui-1.31.0/solara/website/pages/docutils.py +38 -0
- solara_ui-1.31.0/solara/website/pages/showcase/__init__.py +105 -0
- solara_ui-1.31.0/solara/website/pages/showcase/domino_code_assist.py +60 -0
- solara_ui-1.31.0/solara/website/pages/showcase/planeto_tessa.py +19 -0
- solara_ui-1.31.0/solara/website/pages/showcase/solara_dev.py +54 -0
- solara_ui-1.31.0/solara/website/pages/showcase/solarathon_2023_team_2.py +22 -0
- solara_ui-1.31.0/solara/website/pages/showcase/solarathon_2023_team_4.py +22 -0
- solara_ui-1.31.0/solara/website/pages/showcase/solarathon_2023_team_5.py +23 -0
- solara_ui-1.31.0/solara/website/pages/showcase/solarathon_2023_team_6.py +34 -0
- solara_ui-1.31.0/solara/website/pages/showcase/wanderlust.py +27 -0
- solara_ui-1.31.0/solara/website/public/beach.jpeg +0 -0
- solara_ui-1.31.0/solara/website/public/logo.svg +6 -0
- solara_ui-1.31.0/solara/website/public/social/discord.svg +1 -0
- solara_ui-1.31.0/solara/website/public/social/github.svg +1 -0
- solara_ui-1.31.0/solara/website/public/social/twitter.svg +3 -0
- solara_ui-1.31.0/solara/website/public/success.html +25 -0
- solara_ui-1.31.0/solara/website/templates/index.html.j2 +117 -0
- solara_ui-1.31.0/solara/website/utils.py +51 -0
- solara_ui-1.31.0/solara/widgets/__init__.py +1 -0
- solara_ui-1.31.0/solara/widgets/vue/gridlayout.vue +110 -0
- solara_ui-1.31.0/solara/widgets/vue/html.vue +4 -0
- solara_ui-1.31.0/solara/widgets/vue/navigator.vue +104 -0
- solara_ui-1.31.0/solara/widgets/vue/vegalite.vue +115 -0
- solara_ui-1.31.0/solara/widgets/widgets.py +66 -0
- solara_ui-1.31.0/tests/__init__.py +0 -0
- solara_ui-1.31.0/tests/conftest.py +27 -0
- solara_ui-1.31.0/tests/integration/__init__.py +0 -0
- solara_ui-1.31.0/tests/integration/api_test.py +81 -0
- solara_ui-1.31.0/tests/integration/app_widget.py +13 -0
- solara_ui-1.31.0/tests/integration/async_test.py +29 -0
- solara_ui-1.31.0/tests/integration/cdn_test.py +49 -0
- solara_ui-1.31.0/tests/integration/cmdline_test.py +40 -0
- solara_ui-1.31.0/tests/integration/conftest.py +109 -0
- solara_ui-1.31.0/tests/integration/create_test.py +42 -0
- solara_ui-1.31.0/tests/integration/enterprise/__init__.py +0 -0
- solara_ui-1.31.0/tests/integration/enterprise/oauth_test.py +89 -0
- solara_ui-1.31.0/tests/integration/error_test.py +13 -0
- solara_ui-1.31.0/tests/integration/esm_test.py +46 -0
- solara_ui-1.31.0/tests/integration/file_download_test.py +24 -0
- solara_ui-1.31.0/tests/integration/flask_test.py +42 -0
- solara_ui-1.31.0/tests/integration/input_date_test.py +103 -0
- solara_ui-1.31.0/tests/integration/latex_test.py +30 -0
- solara_ui-1.31.0/tests/integration/lifecycle_test.py +92 -0
- solara_ui-1.31.0/tests/integration/markdown_test.py +82 -0
- solara_ui-1.31.0/tests/integration/menu_test.py +90 -0
- solara_ui-1.31.0/tests/integration/popout_test.py +54 -0
- solara_ui-1.31.0/tests/integration/reconnect_test.py +113 -0
- solara_ui-1.31.0/tests/integration/reload/apps.py +15 -0
- solara_ui-1.31.0/tests/integration/router_test.py +45 -0
- solara_ui-1.31.0/tests/integration/server_test.py +213 -0
- solara_ui-1.31.0/tests/integration/ssg_test.py +69 -0
- solara_ui-1.31.0/tests/integration/starlette_test.py +53 -0
- solara_ui-1.31.0/tests/integration/test.vue +3 -0
- solara_ui-1.31.0/tests/integration/testapp.py +47 -0
- solara_ui-1.31.0/tests/integration/widget_test.py +79 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/latex_test.py/test_widget_latex_solara-flask-chromium-linux-ipywidgets-7-changed-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/latex_test.py/test_widget_latex_solara-flask-chromium-linux-ipywidgets-7-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/latex_test.py/test_widget_latex_solara-flask-chromium-linux-ipywidgets-8-changed-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/latex_test.py/test_widget_latex_solara-flask-chromium-linux-ipywidgets-8-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-jupyter_lab-chromium-linux-ipywidgets-7-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-jupyter_lab-chromium-linux-ipywidgets-8-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-jupyter_notebook-chromium-linux-ipywidgets-7-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-jupyter_notebook-chromium-linux-ipywidgets-8-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-solara-chromium-linux-ipywidgets-7-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-solara-chromium-linux-ipywidgets-8-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-voila-chromium-linux-ipywidgets-7-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-flask-voila-chromium-linux-ipywidgets-8-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-starlette-solara-chromium-linux-ipywidgets-7-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_slider_all-starlette-solara-chromium-linux-ipywidgets-8-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_solara_button_all-flask-jupyter_lab-chromium-linux-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_solara_button_all-flask-jupyter_notebook-chromium-linux-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_solara_button_all-flask-solara-chromium-linux-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_solara_button_all-flask-voila-chromium-linux-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_solara_button_all-starlette-solara-chromium-linux-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_widget_button_solara-flask-chromium-linux-ipyvuetify3-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_widget_button_solara-flask-chromium-linux-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_widget_button_solara-starlette-chromium-linux-ipyvuetify3-reference.png +0 -0
- solara_ui-1.31.0/tests/ui/snapshots/tests/integration/widget_test.py/test_widget_button_solara-starlette-chromium-linux-reference.png +0 -0
- solara_ui-1.31.0/tests/unit/__init__.py +0 -0
- solara_ui-1.31.0/tests/unit/app_test.py +217 -0
- solara_ui-1.31.0/tests/unit/applayout_test.py +182 -0
- solara_ui-1.31.0/tests/unit/autorouting_test.py +308 -0
- solara_ui-1.31.0/tests/unit/cache_test.py +299 -0
- solara_ui-1.31.0/tests/unit/cdn_helper_test.py +89 -0
- solara_ui-1.31.0/tests/unit/chat_test.py +26 -0
- solara_ui-1.31.0/tests/unit/checkbox_test.py +29 -0
- solara_ui-1.31.0/tests/unit/common.py +56 -0
- solara_ui-1.31.0/tests/unit/component_frontend_test.py +50 -0
- solara_ui-1.31.0/tests/unit/component_vue_test.vue +0 -0
- solara_ui-1.31.0/tests/unit/confirmation_dialog_test.py +97 -0
- solara_ui-1.31.0/tests/unit/conftest.py +28 -0
- solara_ui-1.31.0/tests/unit/cross_filter_component_test.py +129 -0
- solara_ui-1.31.0/tests/unit/cross_filter_test.py +95 -0
- solara_ui-1.31.0/tests/unit/dataframe_test.py +195 -0
- solara_ui-1.31.0/tests/unit/datatable_test.py +20 -0
- solara_ui-1.31.0/tests/unit/display_test.py +43 -0
- solara_ui-1.31.0/tests/unit/express_test.py +25 -0
- solara_ui-1.31.0/tests/unit/file_browser_test.py +222 -0
- solara_ui-1.31.0/tests/unit/file_download_test.py +45 -0
- solara_ui-1.31.0/tests/unit/hooks_test.py +255 -0
- solara_ui-1.31.0/tests/unit/input_date_test.py +148 -0
- solara_ui-1.31.0/tests/unit/input_test.py +252 -0
- solara_ui-1.31.0/tests/unit/kernel_test.py +18 -0
- solara_ui-1.31.0/tests/unit/lab/__init__.py +0 -0
- solara_ui-1.31.0/tests/unit/lifecycle_test.py +108 -0
- solara_ui-1.31.0/tests/unit/matplotlib_test.py +77 -0
- solara_ui-1.31.0/tests/unit/no_solara_test.py +21 -0
- solara_ui-1.31.0/tests/unit/output_widget_test.py +43 -0
- solara_ui-1.31.0/tests/unit/patch_test.py +42 -0
- solara_ui-1.31.0/tests/unit/pivottable_test.py +99 -0
- solara_ui-1.31.0/tests/unit/reload_test.py +55 -0
- solara_ui-1.31.0/tests/unit/router_test.py +169 -0
- solara_ui-1.31.0/tests/unit/select_test.py +48 -0
- solara_ui-1.31.0/tests/unit/settings_test.py +51 -0
- solara_ui-1.31.0/tests/unit/shell_test.py +25 -0
- solara_ui-1.31.0/tests/unit/slider_test.py +36 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/__init__.py +0 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/food/__init__.py +0 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/food/food.py +1 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/food/index.py +8 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/kernel_start.py +14 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage/01-home.py +3 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage/02-my_fruit.py +4 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage/03-some-markdown.md +32 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage/04-a_directory/00-another-markdown.md +1 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage/04-a_directory/01-not-an-app.py +3 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage/04-a_directory/__init__.py +8 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage/05-and-notebooks.ipynb +26 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage/06-custom-routes.py +17 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage/10-single-file-directory/single-file.md +1 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage/99-some_other_python_script.py +0 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage/some_other_file.txt +1 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage-widgets/00-overview.md +6 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage-widgets/01-views.py +17 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage-widgets/02-likes.py +17 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage-widgets/03-volume.py +12 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/multipage-widgets/04-color.ipynb +55 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/notebookapp_component.ipynb +36 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/notebookapp_element.ipynb +34 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/notebookapp_widget.ipynb +34 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/single_file.py +8 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/single_file_multiple_routes.py +19 -0
- solara_ui-1.31.0/tests/unit/solara_test_apps/single_file_routes.py +25 -0
- solara_ui-1.31.0/tests/unit/switch_test.py +19 -0
- solara_ui-1.31.0/tests/unit/tabs_test.py +46 -0
- solara_ui-1.31.0/tests/unit/task_test.py +563 -0
- solara_ui-1.31.0/tests/unit/telemetry_tests.py +25 -0
- solara_ui-1.31.0/tests/unit/toestand_computed_reload.py +15 -0
- solara_ui-1.31.0/tests/unit/toestand_test.py +1206 -0
- solara_ui-1.31.0/tests/unit/toggle_button_test.py +41 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
*.o
|
|
2
|
+
*.so
|
|
3
|
+
*.mkv
|
|
4
|
+
*.mk4
|
|
5
|
+
#/*.png
|
|
6
|
+
*.eps
|
|
7
|
+
*.pgm
|
|
8
|
+
*.pdf
|
|
9
|
+
*.fld
|
|
10
|
+
*.vtk
|
|
11
|
+
*.mp4
|
|
12
|
+
*/**/*.pyc
|
|
13
|
+
*.pyc
|
|
14
|
+
jenkins/jenkins.war
|
|
15
|
+
/nosetests.xml
|
|
16
|
+
/.idea
|
|
17
|
+
misc/experiments/
|
|
18
|
+
/.coverage
|
|
19
|
+
/coverage.xml
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
Untitled*.ipynb
|
|
23
|
+
|
|
24
|
+
/experiments/*
|
|
25
|
+
/htmlcov
|
|
26
|
+
|
|
27
|
+
InterestingSubspacesNew.txt
|
|
28
|
+
Makefile.in
|
|
29
|
+
config.guess
|
|
30
|
+
config.sub
|
|
31
|
+
libtool
|
|
32
|
+
ltmain.sh
|
|
33
|
+
m4/libtool.m4
|
|
34
|
+
m4/ltoptions.m4
|
|
35
|
+
m4/ltversion.m4
|
|
36
|
+
m4/lt~obsolete.m4
|
|
37
|
+
aclocal.m4
|
|
38
|
+
autom4te.cache
|
|
39
|
+
config.h
|
|
40
|
+
config.h.in
|
|
41
|
+
config.log
|
|
42
|
+
config.status
|
|
43
|
+
configure
|
|
44
|
+
depcomp
|
|
45
|
+
install-sh
|
|
46
|
+
missing
|
|
47
|
+
src/.deps/
|
|
48
|
+
src/.libs
|
|
49
|
+
src/Makefile
|
|
50
|
+
src/Makefile.in
|
|
51
|
+
src/libsubfind.a
|
|
52
|
+
subspacefind*.tar.gz
|
|
53
|
+
src/subspacefind?la*
|
|
54
|
+
**/*.pyc
|
|
55
|
+
data/*
|
|
56
|
+
build/
|
|
57
|
+
doc
|
|
58
|
+
docs/build
|
|
59
|
+
meeting
|
|
60
|
+
#misc
|
|
61
|
+
/**/.DS_Store
|
|
62
|
+
/**/.ipynb_checkpoints
|
|
63
|
+
#app
|
|
64
|
+
dist
|
|
65
|
+
lib
|
|
66
|
+
python/.idea
|
|
67
|
+
test/.idea
|
|
68
|
+
venv
|
|
69
|
+
.venv
|
|
70
|
+
tmp
|
|
71
|
+
python/vaex/version.py # gets generated
|
|
72
|
+
**/*.egg-info/
|
|
73
|
+
.eggs/
|
|
74
|
+
bin/.idea
|
|
75
|
+
*.npy
|
|
76
|
+
__pycache__
|
|
77
|
+
.vscode
|
|
78
|
+
|
|
79
|
+
# output file from the docs
|
|
80
|
+
build/
|
|
81
|
+
|
|
82
|
+
./tmp
|
|
83
|
+
./examples
|
|
84
|
+
node_modules
|
|
85
|
+
packages/assets/cdn
|
|
86
|
+
packages/assets/dist/*
|
|
87
|
+
|
|
88
|
+
solara-env
|
|
89
|
+
states
|
solara_ui-1.31.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 Maarten A. Breddels
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: solara-ui
|
|
3
|
+
Version: 1.31.0
|
|
4
|
+
Dynamic: Summary
|
|
5
|
+
Project-URL: Home, https://www.github.com/widgetti/solara
|
|
6
|
+
Project-URL: Documentation, https://solara.dev
|
|
7
|
+
Author-email: "Maarten A. Breddels" <maartenbreddels@gmail.com>
|
|
8
|
+
License: The MIT License (MIT)
|
|
9
|
+
|
|
10
|
+
Copyright (c) 2022 Maarten A. Breddels
|
|
11
|
+
|
|
12
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
13
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
14
|
+
in the Software without restriction, including without limitation the rights
|
|
15
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
16
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
17
|
+
furnished to do so, subject to the following conditions:
|
|
18
|
+
|
|
19
|
+
The above copyright notice and this permission notice shall be included in
|
|
20
|
+
all copies or substantial portions of the Software.
|
|
21
|
+
|
|
22
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
23
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
24
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
25
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
26
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
27
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
28
|
+
THE SOFTWARE.
|
|
29
|
+
License-File: LICENSE
|
|
30
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
31
|
+
Requires-Dist: humanize
|
|
32
|
+
Requires-Dist: ipyvue>=1.9.0
|
|
33
|
+
Requires-Dist: ipyvuetify>=1.6.10
|
|
34
|
+
Requires-Dist: ipywidgets>=7.7
|
|
35
|
+
Requires-Dist: reacton>=1.7.1
|
|
36
|
+
Requires-Dist: requests
|
|
37
|
+
Provides-Extra: all
|
|
38
|
+
Requires-Dist: solara-ui[cache]; extra == 'all'
|
|
39
|
+
Requires-Dist: solara-ui[extra]; extra == 'all'
|
|
40
|
+
Requires-Dist: solara-ui[markdown]; extra == 'all'
|
|
41
|
+
Provides-Extra: cache
|
|
42
|
+
Requires-Dist: cachetools; extra == 'cache'
|
|
43
|
+
Provides-Extra: extra
|
|
44
|
+
Requires-Dist: numpy; extra == 'extra'
|
|
45
|
+
Requires-Dist: pillow; extra == 'extra'
|
|
46
|
+
Provides-Extra: markdown
|
|
47
|
+
Requires-Dist: markdown; extra == 'markdown'
|
|
48
|
+
Requires-Dist: pygments; extra == 'markdown'
|
|
49
|
+
Requires-Dist: pygments==2.10; (python_version < '3.7') and extra == 'markdown'
|
|
50
|
+
Requires-Dist: pymdown-extensions; extra == 'markdown'
|
|
51
|
+
Description-Content-Type: text/markdown
|
|
52
|
+
|
|
53
|
+
**A Pure Python, React-style Framework for Scaling Your Jupyter and Web Apps**
|
|
54
|
+
|
|
55
|
+
[](https://solara.dev)
|
|
56
|
+
|
|
57
|
+
Come chat with us on [Discord](https://discord.solara.dev) to ask questions or share your thoughts or creations!
|
|
58
|
+
|
|
59
|
+
[](https://discord.solara.dev)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
## Introducing Solara
|
|
64
|
+
|
|
65
|
+
While there are many Python web frameworks out there, most are designed for small data apps or use paradigms unproven for larger scale. Code organization, reusability, and state tend to suffer as apps grow in complexity, resulting in either spaghetti code or offloading to a React application.
|
|
66
|
+
|
|
67
|
+
Solara addresses this gap. Using a React-like API, we don't need to worry about scalability. React has already proven its ability to support the world's largest web apps.
|
|
68
|
+
|
|
69
|
+
Solara uses a pure Python implementation of React (Reacton), creating ipywidget-based applications. These apps work both inside the Jupyter Notebook and as standalone web apps with frameworks like FastAPI. This paradigm enables component-based code and incredibly simple state management.
|
|
70
|
+
|
|
71
|
+
By building on top of ipywidgets, we automatically leverage an existing ecosystem of widgets and run on many platforms, including JupyterLab, Jupyter Notebook, Voilà, Google Colab, DataBricks, JetBrains Datalore, and more.
|
|
72
|
+
|
|
73
|
+
We care about developer experience. Solara will give your hot code reloading and type hints for faster development.
|
|
74
|
+
|
|
75
|
+
## Installation
|
|
76
|
+
|
|
77
|
+
Run:
|
|
78
|
+
```
|
|
79
|
+
pip install solara
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Or follow the [Installation instructions](https://solara.dev/documentation/getting_started/installing) for more detailed instructions.
|
|
83
|
+
|
|
84
|
+
## First script
|
|
85
|
+
|
|
86
|
+
Put the following Python snippet in a file (we suggest `sol.py`), or put it in a Jupyter notebook cell:
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
import solara
|
|
90
|
+
|
|
91
|
+
# Declare reactive variables at the top level. Components using these variables
|
|
92
|
+
# will be re-executed when their values change.
|
|
93
|
+
sentence = solara.reactive("Solara makes our team more productive.")
|
|
94
|
+
word_limit = solara.reactive(10)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
@solara.component
|
|
98
|
+
def Page():
|
|
99
|
+
# Calculate word_count within the component to ensure re-execution when reactive variables change.
|
|
100
|
+
word_count = len(sentence.value.split())
|
|
101
|
+
|
|
102
|
+
solara.SliderInt("Word limit", value=word_limit, min=2, max=20)
|
|
103
|
+
solara.InputText(label="Your sentence", value=sentence, continuous_update=True)
|
|
104
|
+
|
|
105
|
+
# Display messages based on the current word count and word limit.
|
|
106
|
+
if word_count >= int(word_limit.value):
|
|
107
|
+
solara.Error(f"With {word_count} words, you passed the word limit of {word_limit.value}.")
|
|
108
|
+
elif word_count >= int(0.8 * word_limit.value):
|
|
109
|
+
solara.Warning(f"With {word_count} words, you are close to the word limit of {word_limit.value}.")
|
|
110
|
+
else:
|
|
111
|
+
solara.Success("Great short writing!")
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
# The following line is required only when running the code in a Jupyter notebook:
|
|
115
|
+
Page()
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Run from the command line in the same directory where you put your file (`sol.py`):
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
$ solara run sol.py
|
|
122
|
+
Solara server is starting at http://localhost:8765
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Or copy-paste this to a Jupyter notebook cell and execute it (the `Page()` expression at the end
|
|
126
|
+
will cause it to automatically render the component in the notebook).
|
|
127
|
+
|
|
128
|
+
See this snippet run live at https://solara.dev/documentation/getting_started
|
|
129
|
+
|
|
130
|
+
## Demo
|
|
131
|
+
|
|
132
|
+
The following demo app can be used to explore a dataset (buildin or upload yourself) using
|
|
133
|
+
a scatter plot. The plot can be interacted with to filter the dataset, and the filtered dataset can
|
|
134
|
+
be downloaded.
|
|
135
|
+
|
|
136
|
+
* [Source code](https://github.com/widgetti/solara/blob/master/solara/website/pages/apps/scatter.py)
|
|
137
|
+
|
|
138
|
+
### Running in solara-server
|
|
139
|
+
|
|
140
|
+
The solara server is build on top of Starlette/FastAPI and runs standalone. Ideal for production use.
|
|
141
|
+
|
|
142
|
+

|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
### Running in Jupyter
|
|
146
|
+
|
|
147
|
+
By building on top of ipywidgets, we automatically leverage an existing ecosystem of widgets and run on many platforms, including JupyterLab, Jupyter Notebook, Voilà, Google Colab, DataBricks, JetBrains Datalore, and more. This means our app can also run in Jupyter:
|
|
148
|
+
|
|
149
|
+

|
|
150
|
+
|
|
151
|
+
## Resources
|
|
152
|
+
|
|
153
|
+
Visit our main website or jump directly to the introduction
|
|
154
|
+
|
|
155
|
+
[](https://solara.dev/documentation)
|
|
156
|
+
[](https://solara.dev/documentation/getting_started)
|
|
157
|
+
|
|
158
|
+
*Note that the solara.dev website is created using Solara*
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
**A Pure Python, React-style Framework for Scaling Your Jupyter and Web Apps**
|
|
2
|
+
|
|
3
|
+
[](https://solara.dev)
|
|
4
|
+
|
|
5
|
+
Come chat with us on [Discord](https://discord.solara.dev) to ask questions or share your thoughts or creations!
|
|
6
|
+
|
|
7
|
+
[](https://discord.solara.dev)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## Introducing Solara
|
|
12
|
+
|
|
13
|
+
While there are many Python web frameworks out there, most are designed for small data apps or use paradigms unproven for larger scale. Code organization, reusability, and state tend to suffer as apps grow in complexity, resulting in either spaghetti code or offloading to a React application.
|
|
14
|
+
|
|
15
|
+
Solara addresses this gap. Using a React-like API, we don't need to worry about scalability. React has already proven its ability to support the world's largest web apps.
|
|
16
|
+
|
|
17
|
+
Solara uses a pure Python implementation of React (Reacton), creating ipywidget-based applications. These apps work both inside the Jupyter Notebook and as standalone web apps with frameworks like FastAPI. This paradigm enables component-based code and incredibly simple state management.
|
|
18
|
+
|
|
19
|
+
By building on top of ipywidgets, we automatically leverage an existing ecosystem of widgets and run on many platforms, including JupyterLab, Jupyter Notebook, Voilà, Google Colab, DataBricks, JetBrains Datalore, and more.
|
|
20
|
+
|
|
21
|
+
We care about developer experience. Solara will give your hot code reloading and type hints for faster development.
|
|
22
|
+
|
|
23
|
+
## Installation
|
|
24
|
+
|
|
25
|
+
Run:
|
|
26
|
+
```
|
|
27
|
+
pip install solara
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Or follow the [Installation instructions](https://solara.dev/documentation/getting_started/installing) for more detailed instructions.
|
|
31
|
+
|
|
32
|
+
## First script
|
|
33
|
+
|
|
34
|
+
Put the following Python snippet in a file (we suggest `sol.py`), or put it in a Jupyter notebook cell:
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
import solara
|
|
38
|
+
|
|
39
|
+
# Declare reactive variables at the top level. Components using these variables
|
|
40
|
+
# will be re-executed when their values change.
|
|
41
|
+
sentence = solara.reactive("Solara makes our team more productive.")
|
|
42
|
+
word_limit = solara.reactive(10)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@solara.component
|
|
46
|
+
def Page():
|
|
47
|
+
# Calculate word_count within the component to ensure re-execution when reactive variables change.
|
|
48
|
+
word_count = len(sentence.value.split())
|
|
49
|
+
|
|
50
|
+
solara.SliderInt("Word limit", value=word_limit, min=2, max=20)
|
|
51
|
+
solara.InputText(label="Your sentence", value=sentence, continuous_update=True)
|
|
52
|
+
|
|
53
|
+
# Display messages based on the current word count and word limit.
|
|
54
|
+
if word_count >= int(word_limit.value):
|
|
55
|
+
solara.Error(f"With {word_count} words, you passed the word limit of {word_limit.value}.")
|
|
56
|
+
elif word_count >= int(0.8 * word_limit.value):
|
|
57
|
+
solara.Warning(f"With {word_count} words, you are close to the word limit of {word_limit.value}.")
|
|
58
|
+
else:
|
|
59
|
+
solara.Success("Great short writing!")
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
# The following line is required only when running the code in a Jupyter notebook:
|
|
63
|
+
Page()
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Run from the command line in the same directory where you put your file (`sol.py`):
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
$ solara run sol.py
|
|
70
|
+
Solara server is starting at http://localhost:8765
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Or copy-paste this to a Jupyter notebook cell and execute it (the `Page()` expression at the end
|
|
74
|
+
will cause it to automatically render the component in the notebook).
|
|
75
|
+
|
|
76
|
+
See this snippet run live at https://solara.dev/documentation/getting_started
|
|
77
|
+
|
|
78
|
+
## Demo
|
|
79
|
+
|
|
80
|
+
The following demo app can be used to explore a dataset (buildin or upload yourself) using
|
|
81
|
+
a scatter plot. The plot can be interacted with to filter the dataset, and the filtered dataset can
|
|
82
|
+
be downloaded.
|
|
83
|
+
|
|
84
|
+
* [Source code](https://github.com/widgetti/solara/blob/master/solara/website/pages/apps/scatter.py)
|
|
85
|
+
|
|
86
|
+
### Running in solara-server
|
|
87
|
+
|
|
88
|
+
The solara server is build on top of Starlette/FastAPI and runs standalone. Ideal for production use.
|
|
89
|
+
|
|
90
|
+

|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
### Running in Jupyter
|
|
94
|
+
|
|
95
|
+
By building on top of ipywidgets, we automatically leverage an existing ecosystem of widgets and run on many platforms, including JupyterLab, Jupyter Notebook, Voilà, Google Colab, DataBricks, JetBrains Datalore, and more. This means our app can also run in Jupyter:
|
|
96
|
+
|
|
97
|
+

|
|
98
|
+
|
|
99
|
+
## Resources
|
|
100
|
+
|
|
101
|
+
Visit our main website or jump directly to the introduction
|
|
102
|
+
|
|
103
|
+
[](https://solara.dev/documentation)
|
|
104
|
+
[](https://solara.dev/documentation/getting_started)
|
|
105
|
+
|
|
106
|
+
*Note that the solara.dev website is created using Solara*
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling==1.22.2"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
[project]
|
|
7
|
+
name = "solara-ui"
|
|
8
|
+
readme = "README.md"
|
|
9
|
+
authors = [{name = "Maarten A. Breddels", email = "maartenbreddels@gmail.com"}]
|
|
10
|
+
license = {file = "LICENSE"}
|
|
11
|
+
classifiers = ["License :: OSI Approved :: MIT License"]
|
|
12
|
+
dynamic = ["version", "description"]
|
|
13
|
+
packages = [
|
|
14
|
+
{ include = "solara" }
|
|
15
|
+
]
|
|
16
|
+
dependencies = [
|
|
17
|
+
"reacton>=1.7.1",
|
|
18
|
+
"ipywidgets>=7.7",
|
|
19
|
+
"ipyvuetify>=1.6.10",
|
|
20
|
+
"ipyvue>=1.9.0",
|
|
21
|
+
"requests",
|
|
22
|
+
"humanize",
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
[project.urls]
|
|
26
|
+
Home = "https://www.github.com/widgetti/solara"
|
|
27
|
+
Documentation = "https://solara.dev"
|
|
28
|
+
|
|
29
|
+
[tool.hatch.build.targets.wheel.shared-data]
|
|
30
|
+
"prefix/etc/jupyter" = "etc/jupyter"
|
|
31
|
+
|
|
32
|
+
[tool.hatch.version]
|
|
33
|
+
path = "solara/__init__.py"
|
|
34
|
+
|
|
35
|
+
# we ignore build/ but on the website we add solara/website/build
|
|
36
|
+
# when using SSG
|
|
37
|
+
[tool.hatch.build]
|
|
38
|
+
ignore-vcs = true
|
|
39
|
+
|
|
40
|
+
[tool.hatch.build.targets.wheel]
|
|
41
|
+
include = [
|
|
42
|
+
"solara",
|
|
43
|
+
"prefix",
|
|
44
|
+
"packages/solara-widget-manager/LICENSE.voila.txt",
|
|
45
|
+
]
|
|
46
|
+
exclude = ["packages"]
|
|
47
|
+
|
|
48
|
+
[tool.hatch.build.targets.sdist]
|
|
49
|
+
# unclear from hatch docs, but README.md and LICENSE are included by default
|
|
50
|
+
# even when we explicitly have an include list
|
|
51
|
+
include = [
|
|
52
|
+
"solara",
|
|
53
|
+
"tests",
|
|
54
|
+
"prefix",
|
|
55
|
+
"packages/solara-widget-manager/LICENSE.voila.txt",
|
|
56
|
+
]
|
|
57
|
+
# and even when we have an include list, we still need to exclude
|
|
58
|
+
# packages (which I think makes no sense)
|
|
59
|
+
exclude = ["packages"]
|
|
60
|
+
|
|
61
|
+
[project.optional-dependencies]
|
|
62
|
+
all = [
|
|
63
|
+
"solara-ui[markdown]",
|
|
64
|
+
"solara-ui[cache]",
|
|
65
|
+
"solara-ui[extra]",
|
|
66
|
+
]
|
|
67
|
+
|
|
68
|
+
markdown = [
|
|
69
|
+
"markdown",
|
|
70
|
+
"pymdown-extensions",
|
|
71
|
+
"pygments",
|
|
72
|
+
"pygments==2.10; python_version < '3.7'",
|
|
73
|
+
]
|
|
74
|
+
|
|
75
|
+
cache = [
|
|
76
|
+
"cachetools"
|
|
77
|
+
]
|
|
78
|
+
|
|
79
|
+
extra = [
|
|
80
|
+
"numpy",
|
|
81
|
+
"pillow",
|
|
82
|
+
]
|
|
83
|
+
|
|
84
|
+
[tool.ruff]
|
|
85
|
+
fix = false
|
|
86
|
+
line-length = 160
|
|
87
|
+
lint.ignore = ["E402"]
|
|
88
|
+
|
|
89
|
+
[tool.pytest.ini_options]
|
|
90
|
+
addopts = "--ignore=tests/integration/app_widget.py --ignore=tests/unit/solara_test_apps"
|
|
91
|
+
timeout = 180
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
[tool.codespell]
|
|
95
|
+
skip='equis-in-vidi.md,substiterat-vati.md,.*,solara/website/build,*.svg,highlight-dark.css,packages/**/dist/*,node_modules,packages/solara-assets,package*.json,tsconfig.tsbuildinfo,*.csv'
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"""Build webapps using IPywidgets"""
|
|
2
|
+
|
|
3
|
+
__version__ = "1.31.0"
|
|
4
|
+
github_url = "https://github.com/widgetti/solara"
|
|
5
|
+
git_branch = "master"
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
from . import comm # noqa: F401
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def _using_solara_server():
|
|
12
|
+
import sys
|
|
13
|
+
|
|
14
|
+
if "solara.server" in sys.modules:
|
|
15
|
+
return True
|
|
16
|
+
if sys.argv[0].split("/")[-1] == "solara":
|
|
17
|
+
return True
|
|
18
|
+
return False
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
# isort: skip_file
|
|
22
|
+
# ruff: noqa: F401 F403
|
|
23
|
+
from reacton import (
|
|
24
|
+
component,
|
|
25
|
+
component_interactive,
|
|
26
|
+
value_component,
|
|
27
|
+
create_context,
|
|
28
|
+
get_widget,
|
|
29
|
+
get_context,
|
|
30
|
+
make,
|
|
31
|
+
provide_context,
|
|
32
|
+
render,
|
|
33
|
+
render_fixed,
|
|
34
|
+
use_context,
|
|
35
|
+
use_effect,
|
|
36
|
+
use_exception,
|
|
37
|
+
use_memo,
|
|
38
|
+
use_reducer,
|
|
39
|
+
use_ref,
|
|
40
|
+
use_side_effect,
|
|
41
|
+
use_state,
|
|
42
|
+
use_state_widget,
|
|
43
|
+
)
|
|
44
|
+
from reacton.core import Element
|
|
45
|
+
|
|
46
|
+
try:
|
|
47
|
+
import ipyvuetify.components as v # type: ignore
|
|
48
|
+
except ModuleNotFoundError:
|
|
49
|
+
# backwards compatibility
|
|
50
|
+
import reacton.ipyvuetify as v # type: ignore
|
|
51
|
+
from . import util
|
|
52
|
+
|
|
53
|
+
from .reactive import *
|
|
54
|
+
|
|
55
|
+
from .datatypes import *
|
|
56
|
+
from .hooks import *
|
|
57
|
+
from .cache import memoize
|
|
58
|
+
from . import cache
|
|
59
|
+
|
|
60
|
+
# TODO: components re-exports v, we should use __all__ in components/misc.py
|
|
61
|
+
from .components import * # type: ignore
|
|
62
|
+
from .components import _component_vue
|
|
63
|
+
|
|
64
|
+
from .routing import use_route, use_router, use_route_level, find_route, use_pathname, resolve_path
|
|
65
|
+
from .autorouting import generate_routes, generate_routes_directory, RenderPage, RoutingProvider, DefaultLayout
|
|
66
|
+
from .checks import check_jupyter
|
|
67
|
+
from .scope import get_kernel_id, get_session_id
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def display(*objs, **kwargs):
|
|
71
|
+
"""Display a Python object in the current component.
|
|
72
|
+
|
|
73
|
+
## Supported objects
|
|
74
|
+
|
|
75
|
+
Any object that can be displayed in the Jupyter notebook can be displayed in Solara
|
|
76
|
+
as well. This means that plotly, pandas, vaex and other libraries that have
|
|
77
|
+
a display function will work out of the box in Solara.
|
|
78
|
+
|
|
79
|
+
However, if you require callback functions, use the specific Solara components, e.g.:
|
|
80
|
+
|
|
81
|
+
* [Plotly](/documentation/components/viz/plotly)
|
|
82
|
+
* [Altair](/documentation/components/viz/altair)
|
|
83
|
+
* [Matplotlib](/documentation/components/viz/matplotlib)
|
|
84
|
+
* [Dataframe](/documentation/components/data/dataframe)
|
|
85
|
+
|
|
86
|
+
```solara
|
|
87
|
+
import solara
|
|
88
|
+
import pandas as pd
|
|
89
|
+
import plotly.express as px
|
|
90
|
+
|
|
91
|
+
df = px.data.gapminder()
|
|
92
|
+
fig = px.scatter(df, x="gdpPercap", y="lifeExp")
|
|
93
|
+
button = solara.Button("Click me")
|
|
94
|
+
|
|
95
|
+
@solara.component
|
|
96
|
+
def Page():
|
|
97
|
+
|
|
98
|
+
# You can use solara.display directly
|
|
99
|
+
solara.display(fig)
|
|
100
|
+
|
|
101
|
+
# Or use the IPython display function, which is in the global scope
|
|
102
|
+
# in Jupyter and Solara
|
|
103
|
+
display(df)
|
|
104
|
+
|
|
105
|
+
with solara.Card("Some card"):
|
|
106
|
+
# you can use display to add existing elements to the parent's
|
|
107
|
+
# children
|
|
108
|
+
display(button)
|
|
109
|
+
```
|
|
110
|
+
Note that this is a dispatch call to the
|
|
111
|
+
[IPython display function](https://ipython.readthedocs.io/en/stable/api/generated/IPython.display.html#IPython.display.display),
|
|
112
|
+
with a slimmer API. The main purpose of this function is the have type safety, since tools like mypy do now know about
|
|
113
|
+
the existence of the IPython display function, and will complain if you use it without importing it.
|
|
114
|
+
Since solara is always imported, this saves you from having to import IPython in your code.
|
|
115
|
+
|
|
116
|
+
## Arguments
|
|
117
|
+
|
|
118
|
+
* `objs`: The objects to display.
|
|
119
|
+
* `kwargs`: Keyword arguments to pass to the IPython display function.
|
|
120
|
+
|
|
121
|
+
"""
|
|
122
|
+
from IPython.display import display as ipy_display
|
|
123
|
+
|
|
124
|
+
ipy_display(*objs, **kwargs)
|