solara-ui 1.31.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- prefix/etc/jupyter/jupyter_notebook_config.d/solara.json +7 -0
- prefix/etc/jupyter/jupyter_server_config.d/solara.json +7 -0
- solara/__init__.py +124 -0
- solara/__main__.py +734 -0
- solara/alias.py +6 -0
- solara/autorouting.py +546 -0
- solara/cache.py +303 -0
- solara/checks.html +71 -0
- solara/checks.py +224 -0
- solara/comm.py +28 -0
- solara/components/__init__.py +59 -0
- solara/components/alert.py +155 -0
- solara/components/applayout.py +393 -0
- solara/components/button.py +85 -0
- solara/components/card.py +87 -0
- solara/components/checkbox.py +50 -0
- solara/components/code_highlight_css.py +11 -0
- solara/components/code_highlight_css.vue +63 -0
- solara/components/columns.py +159 -0
- solara/components/component_vue.py +110 -0
- solara/components/cross_filter.py +335 -0
- solara/components/dataframe.py +546 -0
- solara/components/datatable.py +221 -0
- solara/components/datatable.vue +175 -0
- solara/components/details.py +21 -0
- solara/components/download.vue +35 -0
- solara/components/echarts.py +75 -0
- solara/components/echarts.vue +128 -0
- solara/components/figure_altair.py +39 -0
- solara/components/file_browser.py +182 -0
- solara/components/file_download.py +199 -0
- solara/components/file_drop.py +139 -0
- solara/components/file_drop.vue +83 -0
- solara/components/file_list_widget.vue +78 -0
- solara/components/head.py +27 -0
- solara/components/head_tag.py +49 -0
- solara/components/head_tag.vue +60 -0
- solara/components/image.py +173 -0
- solara/components/input.py +436 -0
- solara/components/link.py +55 -0
- solara/components/markdown.py +378 -0
- solara/components/markdown_editor.py +25 -0
- solara/components/markdown_editor.vue +362 -0
- solara/components/matplotlib.py +74 -0
- solara/components/meta.py +47 -0
- solara/components/misc.py +333 -0
- solara/components/pivot_table.py +258 -0
- solara/components/pivot_table.vue +158 -0
- solara/components/progress.py +47 -0
- solara/components/select.py +182 -0
- solara/components/select.vue +27 -0
- solara/components/slider.py +442 -0
- solara/components/slider_date.vue +56 -0
- solara/components/spinner-solara.vue +105 -0
- solara/components/spinner.py +30 -0
- solara/components/sql_code.py +33 -0
- solara/components/sql_code.vue +128 -0
- solara/components/style.py +105 -0
- solara/components/switch.py +68 -0
- solara/components/tab_navigation.py +37 -0
- solara/components/title.py +90 -0
- solara/components/title.vue +38 -0
- solara/components/togglebuttons.py +200 -0
- solara/components/tooltip.py +61 -0
- solara/datatypes.py +143 -0
- solara/express.py +241 -0
- solara/hooks/__init__.py +4 -0
- solara/hooks/dataframe.py +99 -0
- solara/hooks/misc.py +263 -0
- solara/hooks/use_reactive.py +129 -0
- solara/hooks/use_thread.py +129 -0
- solara/kitchensink.py +8 -0
- solara/lab/__init__.py +34 -0
- solara/lab/components/__init__.py +6 -0
- solara/lab/components/chat.py +203 -0
- solara/lab/components/confirmation_dialog.py +163 -0
- solara/lab/components/cross_filter.py +7 -0
- solara/lab/components/input_date.py +298 -0
- solara/lab/components/menu.py +181 -0
- solara/lab/components/menu.vue +38 -0
- solara/lab/components/tabs.py +274 -0
- solara/lab/components/theming.py +98 -0
- solara/lab/components/theming.vue +72 -0
- solara/lab/hooks/__init__.py +0 -0
- solara/lab/hooks/dataframe.py +12 -0
- solara/lab/toestand.py +3 -0
- solara/lab/utils/__init__.py +2 -0
- solara/lab/utils/cookies.py +5 -0
- solara/lab/utils/dataframe.py +115 -0
- solara/lab/utils/headers.py +5 -0
- solara/layout.py +44 -0
- solara/lifecycle.py +46 -0
- solara/minisettings.py +133 -0
- solara/py.typed +0 -0
- solara/reactive.py +93 -0
- solara/routing.py +268 -0
- solara/scope/__init__.py +88 -0
- solara/scope/types.py +55 -0
- solara/server/__init__.py +0 -0
- solara/server/app.py +491 -0
- solara/server/assets/custom.css +1 -0
- solara/server/assets/custom.js +1 -0
- solara/server/assets/favicon.png +0 -0
- solara/server/assets/favicon.svg +5 -0
- solara/server/assets/style.css +1665 -0
- solara/server/assets/theme-dark.css +437 -0
- solara/server/assets/theme-light.css +420 -0
- solara/server/assets/theme.js +3 -0
- solara/server/cdn_helper.py +77 -0
- solara/server/esm.py +69 -0
- solara/server/fastapi.py +5 -0
- solara/server/flask.py +286 -0
- solara/server/jupyter/__init__.py +2 -0
- solara/server/jupyter/cdn_handler.py +28 -0
- solara/server/jupyter/server_extension.py +29 -0
- solara/server/jupytertools.py +46 -0
- solara/server/kernel.py +338 -0
- solara/server/kernel_context.py +357 -0
- solara/server/patch.py +552 -0
- solara/server/reload.py +242 -0
- solara/server/server.py +456 -0
- solara/server/settings.py +215 -0
- solara/server/shell.py +251 -0
- solara/server/starlette.py +601 -0
- solara/server/static/ansi.js +270 -0
- solara/server/static/highlight-dark.css +82 -0
- solara/server/static/highlight.css +43 -0
- solara/server/static/main-vuetify.js +260 -0
- solara/server/static/main.js +163 -0
- solara/server/static/solara_bootstrap.py +129 -0
- solara/server/static/sun.svg +23 -0
- solara/server/static/webworker.js +42 -0
- solara/server/telemetry.py +212 -0
- solara/server/templates/index.html.j2 +1 -0
- solara/server/templates/loader-plain.css +11 -0
- solara/server/templates/loader-plain.html +20 -0
- solara/server/templates/loader-solara.css +111 -0
- solara/server/templates/loader-solara.html +40 -0
- solara/server/templates/plain.html +82 -0
- solara/server/templates/solara.html.j2 +446 -0
- solara/server/threaded.py +75 -0
- solara/server/utils.py +30 -0
- solara/server/websocket.py +45 -0
- solara/settings.py +56 -0
- solara/tasks.py +837 -0
- solara/template/button.py +16 -0
- solara/template/markdown.py +42 -0
- solara/template/portal/.flake8 +6 -0
- solara/template/portal/.pre-commit-config.yaml +28 -0
- solara/template/portal/LICENSE +21 -0
- solara/template/portal/Procfile +7 -0
- solara/template/portal/mypy.ini +3 -0
- solara/template/portal/pyproject.toml +26 -0
- solara/template/portal/solara_portal/__init__.py +4 -0
- solara/template/portal/solara_portal/components/__init__.py +2 -0
- solara/template/portal/solara_portal/components/article.py +28 -0
- solara/template/portal/solara_portal/components/data.py +28 -0
- solara/template/portal/solara_portal/components/header.py +6 -0
- solara/template/portal/solara_portal/components/layout.py +6 -0
- solara/template/portal/solara_portal/content/articles/equis-in-vidi.md +85 -0
- solara/template/portal/solara_portal/content/articles/substiterat-vati.md +70 -0
- solara/template/portal/solara_portal/data.py +60 -0
- solara/template/portal/solara_portal/pages/__init__.py +67 -0
- solara/template/portal/solara_portal/pages/article/__init__.py +26 -0
- solara/template/portal/solara_portal/pages/tabular.py +29 -0
- solara/template/portal/solara_portal/pages/viz/__init__.py +70 -0
- solara/template/portal/solara_portal/pages/viz/overview.py +14 -0
- solara/test/__init__.py +0 -0
- solara/test/pytest_plugin.py +697 -0
- solara/toestand.py +772 -0
- solara/util.py +308 -0
- solara/website/__init__.py +0 -0
- solara/website/assets/custom.css +468 -0
- solara/website/assets/images/logo-small.png +0 -0
- solara/website/assets/images/logo.svg +17 -0
- solara/website/assets/images/logo_white.svg +50 -0
- solara/website/assets/theme.js +8 -0
- solara/website/components/__init__.py +5 -0
- solara/website/components/algolia.vue +24 -0
- solara/website/components/algolia_api.vue +187 -0
- solara/website/components/docs.py +118 -0
- solara/website/components/header.py +72 -0
- solara/website/components/hero.py +15 -0
- solara/website/components/mailchimp.py +12 -0
- solara/website/components/mailchimp.vue +47 -0
- solara/website/components/markdown.py +30 -0
- solara/website/components/notebook.py +171 -0
- solara/website/pages/__init__.py +575 -0
- solara/website/pages/apps/__init__.py +16 -0
- solara/website/pages/apps/authorization/__init__.py +119 -0
- solara/website/pages/apps/authorization/admin.py +12 -0
- solara/website/pages/apps/authorization/users.py +12 -0
- solara/website/pages/apps/jupyter-dashboard-1.py +116 -0
- solara/website/pages/apps/layout-demo.py +40 -0
- solara/website/pages/apps/multipage/__init__.py +38 -0
- solara/website/pages/apps/multipage/page1.py +26 -0
- solara/website/pages/apps/multipage/page2.py +34 -0
- solara/website/pages/apps/scatter.py +136 -0
- solara/website/pages/apps/scrolling.py +63 -0
- solara/website/pages/apps/tutorial-streamlit.py +18 -0
- solara/website/pages/changelog/__init__.py +8 -0
- solara/website/pages/changelog/changelog.md +204 -0
- solara/website/pages/contact/__init__.py +8 -0
- solara/website/pages/contact/contact.md +17 -0
- solara/website/pages/doc_use_download.py +85 -0
- solara/website/pages/documentation/__init__.py +184 -0
- solara/website/pages/documentation/advanced/__init__.py +9 -0
- solara/website/pages/documentation/advanced/content/00-overview.md +1 -0
- solara/website/pages/documentation/advanced/content/10-howto/00-overview.md +6 -0
- solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md +196 -0
- solara/website/pages/documentation/advanced/content/10-howto/20-layout.md +125 -0
- solara/website/pages/documentation/advanced/content/10-howto/30-testing.md +162 -0
- solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md +69 -0
- solara/website/pages/documentation/advanced/content/10-howto/40-embed.md +49 -0
- solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md +124 -0
- solara/website/pages/documentation/advanced/content/15-reference/00-overview.md +3 -0
- solara/website/pages/documentation/advanced/content/15-reference/40-static_files.md +31 -0
- solara/website/pages/documentation/advanced/content/15-reference/41-asset-files.md +36 -0
- solara/website/pages/documentation/advanced/content/15-reference/60-static-site-generation.md +59 -0
- solara/website/pages/documentation/advanced/content/15-reference/70-search.md +34 -0
- solara/website/pages/documentation/advanced/content/15-reference/80-reloading.md +34 -0
- solara/website/pages/documentation/advanced/content/15-reference/90-notebook-support.md +7 -0
- solara/website/pages/documentation/advanced/content/15-reference/95-caching.md +148 -0
- solara/website/pages/documentation/advanced/content/20-understanding/00-introduction.md +10 -0
- solara/website/pages/documentation/advanced/content/20-understanding/05-ipywidgets.md +35 -0
- solara/website/pages/documentation/advanced/content/20-understanding/06-ipyvuetify.md +42 -0
- solara/website/pages/documentation/advanced/content/20-understanding/10-reacton.md +28 -0
- solara/website/pages/documentation/advanced/content/20-understanding/12-reacton-basics.md +108 -0
- solara/website/pages/documentation/advanced/content/20-understanding/15-anatomy.md +23 -0
- solara/website/pages/documentation/advanced/content/20-understanding/17-rules-of-hooks.md +7 -0
- solara/website/pages/documentation/advanced/content/20-understanding/18-containers.md +166 -0
- solara/website/pages/documentation/advanced/content/20-understanding/20-solara.md +18 -0
- solara/website/pages/documentation/advanced/content/20-understanding/40-routing.md +240 -0
- solara/website/pages/documentation/advanced/content/20-understanding/50-solara-server.md +97 -0
- solara/website/pages/documentation/advanced/content/20-understanding/60-voila.md +12 -0
- solara/website/pages/documentation/advanced/content/30-enterprise/00-overview.md +1 -0
- solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md +171 -0
- solara/website/pages/documentation/advanced/content/40-development/00-overview.md +0 -0
- solara/website/pages/documentation/advanced/content/40-development/01-contribute.md +45 -0
- solara/website/pages/documentation/advanced/content/40-development/10-setup.md +76 -0
- solara/website/pages/documentation/api/__init__.py +19 -0
- solara/website/pages/documentation/api/cross_filter/__init__.py +9 -0
- solara/website/pages/documentation/api/cross_filter/cross_filter_dataframe.py +23 -0
- solara/website/pages/documentation/api/cross_filter/cross_filter_report.py +22 -0
- solara/website/pages/documentation/api/cross_filter/cross_filter_select.py +22 -0
- solara/website/pages/documentation/api/cross_filter/cross_filter_slider.py +22 -0
- solara/website/pages/documentation/api/hooks/__init__.py +9 -0
- solara/website/pages/documentation/api/hooks/use_cross_filter.py +25 -0
- solara/website/pages/documentation/api/hooks/use_dark_effective.py +12 -0
- solara/website/pages/documentation/api/hooks/use_effect.md +43 -0
- solara/website/pages/documentation/api/hooks/use_effect.py +9 -0
- solara/website/pages/documentation/api/hooks/use_exception.py +33 -0
- solara/website/pages/documentation/api/hooks/use_memo.md +16 -0
- solara/website/pages/documentation/api/hooks/use_memo.py +9 -0
- solara/website/pages/documentation/api/hooks/use_previous.py +33 -0
- solara/website/pages/documentation/api/hooks/use_reactive.py +16 -0
- solara/website/pages/documentation/api/hooks/use_state.py +10 -0
- solara/website/pages/documentation/api/hooks/use_state_or_update.py +69 -0
- solara/website/pages/documentation/api/hooks/use_thread.md +58 -0
- solara/website/pages/documentation/api/hooks/use_thread.py +44 -0
- solara/website/pages/documentation/api/hooks/use_trait_observe.py +12 -0
- solara/website/pages/documentation/api/routing/__init__.py +9 -0
- solara/website/pages/documentation/api/routing/generate_routes.py +10 -0
- solara/website/pages/documentation/api/routing/generate_routes_directory.py +10 -0
- solara/website/pages/documentation/api/routing/resolve_path.py +35 -0
- solara/website/pages/documentation/api/routing/route.py +31 -0
- solara/website/pages/documentation/api/routing/use_route.py +80 -0
- solara/website/pages/documentation/api/routing/use_router.py +16 -0
- solara/website/pages/documentation/api/utilities/__init__.py +9 -0
- solara/website/pages/documentation/api/utilities/component_vue.py +10 -0
- solara/website/pages/documentation/api/utilities/computed.py +16 -0
- solara/website/pages/documentation/api/utilities/display.py +16 -0
- solara/website/pages/documentation/api/utilities/get_kernel_id.py +16 -0
- solara/website/pages/documentation/api/utilities/get_session_id.py +16 -0
- solara/website/pages/documentation/api/utilities/memoize.py +35 -0
- solara/website/pages/documentation/api/utilities/on_kernel_start.py +27 -0
- solara/website/pages/documentation/api/utilities/reactive.py +16 -0
- solara/website/pages/documentation/api/utilities/widget.py +104 -0
- solara/website/pages/documentation/components/__init__.py +12 -0
- solara/website/pages/documentation/components/advanced/__init__.py +9 -0
- solara/website/pages/documentation/components/advanced/link.py +27 -0
- solara/website/pages/documentation/components/advanced/meta.py +20 -0
- solara/website/pages/documentation/components/advanced/style.py +45 -0
- solara/website/pages/documentation/components/common.py +9 -0
- solara/website/pages/documentation/components/data/__init__.py +9 -0
- solara/website/pages/documentation/components/data/dataframe.py +44 -0
- solara/website/pages/documentation/components/data/pivot_table.py +81 -0
- solara/website/pages/documentation/components/enterprise/__init__.py +9 -0
- solara/website/pages/documentation/components/enterprise/avatar.py +24 -0
- solara/website/pages/documentation/components/enterprise/avatar_menu.py +25 -0
- solara/website/pages/documentation/components/input/__init__.py +9 -0
- solara/website/pages/documentation/components/input/button.py +23 -0
- solara/website/pages/documentation/components/input/checkbox.py +10 -0
- solara/website/pages/documentation/components/input/file_browser.py +32 -0
- solara/website/pages/documentation/components/input/file_drop.py +76 -0
- solara/website/pages/documentation/components/input/input.py +19 -0
- solara/website/pages/documentation/components/input/select.py +22 -0
- solara/website/pages/documentation/components/input/slider.py +29 -0
- solara/website/pages/documentation/components/input/switch.py +10 -0
- solara/website/pages/documentation/components/input/togglebuttons.py +21 -0
- solara/website/pages/documentation/components/lab/__init__.py +9 -0
- solara/website/pages/documentation/components/lab/chat.py +109 -0
- solara/website/pages/documentation/components/lab/confirmation_dialog.py +55 -0
- solara/website/pages/documentation/components/lab/cookies_headers.py +48 -0
- solara/website/pages/documentation/components/lab/input_date.py +20 -0
- solara/website/pages/documentation/components/lab/menu.py +22 -0
- solara/website/pages/documentation/components/lab/tab.py +25 -0
- solara/website/pages/documentation/components/lab/tabs.py +45 -0
- solara/website/pages/documentation/components/lab/task.py +11 -0
- solara/website/pages/documentation/components/lab/theming.py +72 -0
- solara/website/pages/documentation/components/lab/use_task.py +11 -0
- solara/website/pages/documentation/components/layout/__init__.py +9 -0
- solara/website/pages/documentation/components/layout/app_bar.py +16 -0
- solara/website/pages/documentation/components/layout/app_bar_title.py +16 -0
- solara/website/pages/documentation/components/layout/app_layout.py +24 -0
- solara/website/pages/documentation/components/layout/card.py +15 -0
- solara/website/pages/documentation/components/layout/card_actions.py +16 -0
- solara/website/pages/documentation/components/layout/column.py +30 -0
- solara/website/pages/documentation/components/layout/columns.py +27 -0
- solara/website/pages/documentation/components/layout/columns_responsive.py +68 -0
- solara/website/pages/documentation/components/layout/griddraggable.py +62 -0
- solara/website/pages/documentation/components/layout/gridfixed.py +21 -0
- solara/website/pages/documentation/components/layout/hbox.py +18 -0
- solara/website/pages/documentation/components/layout/row.py +30 -0
- solara/website/pages/documentation/components/layout/sidebar.py +24 -0
- solara/website/pages/documentation/components/layout/vbox.py +19 -0
- solara/website/pages/documentation/components/output/__init__.py +9 -0
- solara/website/pages/documentation/components/output/file_download.py +11 -0
- solara/website/pages/documentation/components/output/html.py +21 -0
- solara/website/pages/documentation/components/output/image.py +11 -0
- solara/website/pages/documentation/components/output/markdown.py +57 -0
- solara/website/pages/documentation/components/output/markdown_editor.py +51 -0
- solara/website/pages/documentation/components/output/sql_code.py +85 -0
- solara/website/pages/documentation/components/output/tooltip.py +11 -0
- solara/website/pages/documentation/components/page/__init__.py +9 -0
- solara/website/pages/documentation/components/page/head.py +18 -0
- solara/website/pages/documentation/components/page/title.py +27 -0
- solara/website/pages/documentation/components/status/__init__.py +9 -0
- solara/website/pages/documentation/components/status/error.py +40 -0
- solara/website/pages/documentation/components/status/info.py +40 -0
- solara/website/pages/documentation/components/status/progress.py +10 -0
- solara/website/pages/documentation/components/status/spinner.py +11 -0
- solara/website/pages/documentation/components/status/success.py +40 -0
- solara/website/pages/documentation/components/status/warning.py +47 -0
- solara/website/pages/documentation/components/viz/__init__.py +9 -0
- solara/website/pages/documentation/components/viz/altair.py +42 -0
- solara/website/pages/documentation/components/viz/echarts.py +75 -0
- solara/website/pages/documentation/components/viz/matplotlib.py +30 -0
- solara/website/pages/documentation/components/viz/plotly.py +63 -0
- solara/website/pages/documentation/components/viz/plotly_express.py +41 -0
- solara/website/pages/documentation/examples/__init__.py +52 -0
- solara/website/pages/documentation/examples/ai/__init__.py +11 -0
- solara/website/pages/documentation/examples/ai/chatbot.py +95 -0
- solara/website/pages/documentation/examples/ai/tokenizer.py +107 -0
- solara/website/pages/documentation/examples/basics/__init__.py +10 -0
- solara/website/pages/documentation/examples/basics/sine.py +28 -0
- solara/website/pages/documentation/examples/fullscreen/__init__.py +10 -0
- solara/website/pages/documentation/examples/fullscreen/authorization.py +3 -0
- solara/website/pages/documentation/examples/fullscreen/layout_demo.py +3 -0
- solara/website/pages/documentation/examples/fullscreen/multipage.py +3 -0
- solara/website/pages/documentation/examples/fullscreen/scatter.py +3 -0
- solara/website/pages/documentation/examples/fullscreen/scrolling.py +3 -0
- solara/website/pages/documentation/examples/fullscreen/tutorial_streamlit.py +3 -0
- solara/website/pages/documentation/examples/general/__init__.py +10 -0
- solara/website/pages/documentation/examples/general/custom_storage.py +70 -0
- solara/website/pages/documentation/examples/general/deploy_model.py +115 -0
- solara/website/pages/documentation/examples/general/live_update.py +38 -0
- solara/website/pages/documentation/examples/general/login_oauth.py +81 -0
- solara/website/pages/documentation/examples/general/mycard.vue +58 -0
- solara/website/pages/documentation/examples/general/pokemon_search.py +51 -0
- solara/website/pages/documentation/examples/general/vue_component.py +50 -0
- solara/website/pages/documentation/examples/ipycanvas.py +49 -0
- solara/website/pages/documentation/examples/libraries/__init__.py +10 -0
- solara/website/pages/documentation/examples/libraries/altair.py +64 -0
- solara/website/pages/documentation/examples/libraries/bqplot.py +39 -0
- solara/website/pages/documentation/examples/libraries/ipyleaflet.py +33 -0
- solara/website/pages/documentation/examples/libraries/ipyleaflet_advanced.py +66 -0
- solara/website/pages/documentation/examples/utilities/__init__.py +10 -0
- solara/website/pages/documentation/examples/utilities/calculator.py +157 -0
- solara/website/pages/documentation/examples/utilities/countdown_timer.py +64 -0
- solara/website/pages/documentation/examples/utilities/todo.py +196 -0
- solara/website/pages/documentation/examples/visualization/__init__.py +6 -0
- solara/website/pages/documentation/examples/visualization/annotator.py +69 -0
- solara/website/pages/documentation/examples/visualization/linked_views.py +84 -0
- solara/website/pages/documentation/examples/visualization/plotly.py +44 -0
- solara/website/pages/documentation/faq/__init__.py +12 -0
- solara/website/pages/documentation/faq/content/99-faq.md +76 -0
- solara/website/pages/documentation/getting_started/__init__.py +9 -0
- solara/website/pages/documentation/getting_started/content/00-quickstart.md +89 -0
- solara/website/pages/documentation/getting_started/content/01-introduction.md +125 -0
- solara/website/pages/documentation/getting_started/content/02-installing.md +134 -0
- solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md +14 -0
- solara/website/pages/documentation/getting_started/content/04-tutorials/10_data_science.py +13 -0
- solara/website/pages/documentation/getting_started/content/04-tutorials/20-web-app.md +89 -0
- solara/website/pages/documentation/getting_started/content/04-tutorials/30-ipywidgets.md +124 -0
- solara/website/pages/documentation/getting_started/content/04-tutorials/40-streamlit.md +146 -0
- solara/website/pages/documentation/getting_started/content/04-tutorials/50-dash.md +144 -0
- solara/website/pages/documentation/getting_started/content/04-tutorials/60-jupyter-dashboard-part1.py +64 -0
- solara/website/pages/documentation/getting_started/content/04-tutorials/SF_crime_sample.csv.gz +0 -0
- solara/website/pages/documentation/getting_started/content/04-tutorials/_data_science.ipynb +445 -0
- solara/website/pages/documentation/getting_started/content/04-tutorials/_jupyter_dashboard_1.ipynb +1000 -0
- solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md +11 -0
- solara/website/pages/documentation/getting_started/content/05-fundamentals/10-components.md +223 -0
- solara/website/pages/documentation/getting_started/content/05-fundamentals/50-state-management.md +88 -0
- solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md +7 -0
- solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md +273 -0
- solara/website/pages/documentation/getting_started/content/07-deploying/20-cloud-hosted.md +80 -0
- solara/website/pages/documentation/getting_started/content/80-what-is-lab.md +7 -0
- solara/website/pages/documentation/getting_started/content/90-troubleshoot.md +26 -0
- solara/website/pages/docutils.py +38 -0
- solara/website/pages/showcase/__init__.py +105 -0
- solara/website/pages/showcase/domino_code_assist.py +60 -0
- solara/website/pages/showcase/planeto_tessa.py +19 -0
- solara/website/pages/showcase/solara_dev.py +54 -0
- solara/website/pages/showcase/solarathon_2023_team_2.py +22 -0
- solara/website/pages/showcase/solarathon_2023_team_4.py +22 -0
- solara/website/pages/showcase/solarathon_2023_team_5.py +23 -0
- solara/website/pages/showcase/solarathon_2023_team_6.py +34 -0
- solara/website/pages/showcase/wanderlust.py +27 -0
- solara/website/public/beach.jpeg +0 -0
- solara/website/public/logo.svg +6 -0
- solara/website/public/social/discord.svg +1 -0
- solara/website/public/social/github.svg +1 -0
- solara/website/public/social/twitter.svg +3 -0
- solara/website/public/success.html +25 -0
- solara/website/templates/index.html.j2 +117 -0
- solara/website/utils.py +51 -0
- solara/widgets/__init__.py +1 -0
- solara/widgets/vue/gridlayout.vue +110 -0
- solara/widgets/vue/html.vue +4 -0
- solara/widgets/vue/navigator.vue +104 -0
- solara/widgets/vue/vegalite.vue +115 -0
- solara/widgets/widgets.py +66 -0
- solara_ui-1.31.0.data/data/etc/jupyter/jupyter_notebook_config.d/solara.json +7 -0
- solara_ui-1.31.0.data/data/etc/jupyter/jupyter_server_config.d/solara.json +7 -0
- solara_ui-1.31.0.dist-info/METADATA +158 -0
- solara_ui-1.31.0.dist-info/RECORD +439 -0
- solara_ui-1.31.0.dist-info/WHEEL +5 -0
- solara_ui-1.31.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Hosting your Solara app on the cloud
|
|
3
|
+
description: Solara apps can be easily hosted either through our service, or via Ploomber cloud.
|
|
4
|
+
---
|
|
5
|
+
# Cloud hosted
|
|
6
|
+
|
|
7
|
+
## Integrated solution (in development)
|
|
8
|
+
|
|
9
|
+
Are you interested in a cloud hosted solution?
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
$ solara deploy
|
|
13
|
+
...
|
|
14
|
+
Your app is live on awesomeapp-mystartup-gh.solara.run
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Sign up for our waiting list to get early access.
|
|
18
|
+
|
|
19
|
+
<!-- Begin Mailchimp Signup Form -->
|
|
20
|
+
<link href="//cdn-images.mailchimp.com/embedcode/classic-071822.css" rel="stylesheet" type="text/css">
|
|
21
|
+
<style type="text/css">
|
|
22
|
+
#mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; width:600px;}
|
|
23
|
+
/* Add your own Mailchimp form style overrides in your site stylesheet or in this style block.
|
|
24
|
+
We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */
|
|
25
|
+
</style>
|
|
26
|
+
<div id="mc_embed_signup">
|
|
27
|
+
<form action="https://gmail.us13.list-manage.com/subscribe/post?u=1dcdd74de47214edace5b6f49&id=c60b5def86&f_id=00f4c1e2f0" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
|
|
28
|
+
<div id="mc_embed_signup_scroll">
|
|
29
|
+
<h2>Sign up for our waiting list</h2>
|
|
30
|
+
<div class="indicates-required"><span class="asterisk">*</span> indicates required</div>
|
|
31
|
+
<div class="mc-field-group">
|
|
32
|
+
<label for="mce-EMAIL">Email Address <span class="asterisk">*</span>
|
|
33
|
+
</label>
|
|
34
|
+
<input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL" required>
|
|
35
|
+
<span id="mce-EMAIL-HELPERTEXT" class="helper_text"></span>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="mc-field-group">
|
|
38
|
+
<label for="mce-FNAME">First Name </label>
|
|
39
|
+
<input type="text" value="" name="FNAME" class="" id="mce-FNAME">
|
|
40
|
+
<span id="mce-FNAME-HELPERTEXT" class="helper_text"></span>
|
|
41
|
+
</div>
|
|
42
|
+
<div class="mc-field-group">
|
|
43
|
+
<label for="mce-LNAME">Last Name </label>
|
|
44
|
+
<input type="text" value="" name="LNAME" class="" id="mce-LNAME">
|
|
45
|
+
<span id="mce-LNAME-HELPERTEXT" class="helper_text"></span>
|
|
46
|
+
</div>
|
|
47
|
+
<div class="mc-field-group">
|
|
48
|
+
<label for="mce-COMPANY">Company </label>
|
|
49
|
+
<input type="text" value="" name="COMPANY" class="" id="mce-COMPANY">
|
|
50
|
+
<span id="mce-COMPANY-HELPERTEXT" class="helper_text"></span>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<div class="mc-field-group">
|
|
54
|
+
<label for="mce-WHYCLOUD">Why are you interested in a cloud hosted solution? </label>
|
|
55
|
+
<input type="text" value="" name="WHYCLOUD" class="" id="mce-WHYCLOUD">
|
|
56
|
+
<span id="mce-WHYCLOUD-HELPERTEXT" class="helper_text"></span>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
<div id="mce-responses" class="clear foot">
|
|
60
|
+
<div class="response" id="mce-error-response" style="display:none"></div>
|
|
61
|
+
<div class="response" id="mce-success-response" style="display:none"></div>
|
|
62
|
+
</div> <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
|
|
63
|
+
<div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_1dcdd74de47214edace5b6f49_c60b5def86" tabindex="-1" value=""></div>
|
|
64
|
+
<div class="optionalParent">
|
|
65
|
+
<div class="clear foot">
|
|
66
|
+
<input type="submit" value="Sign up" name="subscribe" id="mc-embedded-subscribe" class="button">
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
</form>
|
|
71
|
+
</div>
|
|
72
|
+
<script type='text/javascript' src='//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js'></script><script type='text/javascript'>(function($) {window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';fnames[3]='ADDRESS';ftypes[3]='address';fnames[4]='PHONE';ftypes[4]='phone';fnames[5]='BIRTHDAY';ftypes[5]='birthday';fnames[6]='USECASE';ftypes[6]='text';fnames[7]='COMPANY';ftypes[7]='text';fnames[8]='POSITION';ftypes[8]='text';}(jQuery));var $mcj = jQuery.noConflict(true);</script>
|
|
73
|
+
<!--End mc_embed_signup-->
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
## Ploomber Cloud
|
|
77
|
+
|
|
78
|
+
You can use [Ploomber Cloud](https://www.platform.ploomber.io) to deploy Solara apps for free (no credit card required).
|
|
79
|
+
|
|
80
|
+
To learn more, check out their [documentation.](https://docs.cloud.ploomber.io/en/latest/apps/solara.html)
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: What is Solara.lab?
|
|
3
|
+
description: Solara lab is a subpackage in solara containing Components, hooks and parts of Solara that are slightly experimental.
|
|
4
|
+
---
|
|
5
|
+
# What is Solara lab?
|
|
6
|
+
|
|
7
|
+
Solara lab is a subpackage in solara containing Components, hooks and parts of Solara that are slightly experimental.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Troubleshoot issues with your Solara application
|
|
3
|
+
description: It is common to run into some issues when developing your application. See here for best practices for troubleshooting anything you run into.
|
|
4
|
+
---
|
|
5
|
+
# Troubleshoot
|
|
6
|
+
|
|
7
|
+
## Issues in Jupyter
|
|
8
|
+
|
|
9
|
+
The most common issue in the Jupyter notebook, or Jupyter Lab happens when the notebook server and the kernel do not share the same Python environment. When you install solara via the notebook (e.g. `!pip install solara`), it will install the ipyvue and ipyvuetify libraries, two of its dependencies. These libraries will get installed in the Python environment of your Python kernel.
|
|
10
|
+
|
|
11
|
+
If your Jupyter notebook or Jupyter Lab server runs in a different Python environment, your browser will not load the Javascript libraries it needs to. In order to get the server to provide these libraries to your browser, we also need to install ipyvue and ipyvuetify in the Python environment of your server.
|
|
12
|
+
|
|
13
|
+
For instance, running the following in AWS SageMaker, will give you information about the Python environment of the kernel.
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
>>> import sys
|
|
17
|
+
>>> sys.executable
|
|
18
|
+
'/home/ec2-user/anaconda3/envs/python3/bin/python'
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
While if we inspect the output of `!ps aux | grep jupyter`, we see that the notebook server is using the Python executable at `/home/ec2-user/anaconda3/envs/JupyterSystemEnv/bin/python3.7`.
|
|
22
|
+
|
|
23
|
+
The solution is to run `!/home/ec2-user/anaconda3/envs/JupyterSystemEnv/bin/python3.7 -m pip install ipyvue ipyvuetify`, and refresh your browser.
|
|
24
|
+
|
|
25
|
+
The function `solara.check_jupyter()` will perform these checks for you and tell you what to do. However, if it fails and you
|
|
26
|
+
end up in this documentation, we should try to improve it by opening an [Issue on GitHub](https://github.com/widgetti/solara/issues/new).
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import inspect
|
|
2
|
+
|
|
3
|
+
import solara
|
|
4
|
+
from solara.alias import rw
|
|
5
|
+
from solara.components import Markdown
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@solara.component
|
|
9
|
+
def Sample(code, component):
|
|
10
|
+
locals = globals().copy()
|
|
11
|
+
exec(code, locals)
|
|
12
|
+
c = locals[component]
|
|
13
|
+
with rw.VBox() as main:
|
|
14
|
+
Markdown(
|
|
15
|
+
f"""
|
|
16
|
+
```python
|
|
17
|
+
{code}
|
|
18
|
+
```
|
|
19
|
+
"""
|
|
20
|
+
)
|
|
21
|
+
c()
|
|
22
|
+
return main
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@solara.component
|
|
26
|
+
def IncludeComponent(component, pre="", highlight=[], **kwargs):
|
|
27
|
+
code = inspect.getsource(component.f)
|
|
28
|
+
with rw.VBox(layout={"padding": "20px", "max_width": "1024px", "border": "1px #333 solid"}) as main:
|
|
29
|
+
Markdown(
|
|
30
|
+
f"""
|
|
31
|
+
```python
|
|
32
|
+
{pre}{code}
|
|
33
|
+
```
|
|
34
|
+
""",
|
|
35
|
+
highlight=highlight,
|
|
36
|
+
)
|
|
37
|
+
component(**kwargs)
|
|
38
|
+
return main
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import solara
|
|
2
|
+
|
|
3
|
+
title = "Showcase"
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@solara.component
|
|
7
|
+
def Page():
|
|
8
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
9
|
+
with solara.Card("Wanderlust", style={"height": "100%"}):
|
|
10
|
+
solara.Markdown(
|
|
11
|
+
"""
|
|
12
|
+
[Wanderlust](/showcase/wanderlust) is a reproduction of the travel assistant demo shown at the
|
|
13
|
+
[OpenAI DevDay](https://devday.openai.com/) 2023, built using Solara and the OpenAI Assistants API.
|
|
14
|
+
"""
|
|
15
|
+
)
|
|
16
|
+
with solara.Link("./wanderlust"):
|
|
17
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/wanderlust/thumbnail.png", width="100%")
|
|
18
|
+
with solara.v.Html(tag="a", attributes={"href": "https://github.com/widgetti/wanderlust", "target": "_blank"}):
|
|
19
|
+
with solara.Row(style={"min-height": "24px"}):
|
|
20
|
+
solara.v.Icon(children=["mdi-github-circle"], x_large=True, class_="mr-2")
|
|
21
|
+
|
|
22
|
+
with solara.Card("Domino Code Assist", style={"height": "100%"}):
|
|
23
|
+
solara.Markdown(
|
|
24
|
+
"""
|
|
25
|
+
Domino Code Assist (DCA) is a tool developed for Domino Data Lab which provides a simple, intuitive point-and-click interface for generating
|
|
26
|
+
Python or R code.
|
|
27
|
+
"""
|
|
28
|
+
)
|
|
29
|
+
with solara.Link("./domino_code_assist"):
|
|
30
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/lca/thumbnail.png", width="100%")
|
|
31
|
+
|
|
32
|
+
with solara.Card("TESSA", style={"height": "100%"}):
|
|
33
|
+
solara.Markdown(
|
|
34
|
+
"""
|
|
35
|
+
[TESSA](https://planeto-energy.ch/solution/) is a tool developed by Planeto for district heating & cooling planning.
|
|
36
|
+
"""
|
|
37
|
+
)
|
|
38
|
+
with solara.Link("./planeto_tessa"):
|
|
39
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/tessa/thumbnail.png", width="100%")
|
|
40
|
+
|
|
41
|
+
with solara.Card("Bulk labeling", style={"height": "100%"}):
|
|
42
|
+
solara.Markdown(
|
|
43
|
+
"""
|
|
44
|
+
[Bulk labeling](https://github.com/Ben-Epstein/solara-examples/tree/main/bulk-labeling)
|
|
45
|
+
is a tool developed by Ben Epstein for labeling data in bulk."""
|
|
46
|
+
)
|
|
47
|
+
from solara.alias import rv
|
|
48
|
+
|
|
49
|
+
img = "https://avatars.githubusercontent.com/u/22605641?v=4"
|
|
50
|
+
with rv.Html(tag="a", attributes={"href": "https://github.com/Ben-Epstein/solara-examples/tree/main/bulk-labeling", "target": "_blank"}):
|
|
51
|
+
solara.Image("https://user-images.githubusercontent.com/1765949/237517090-8f7242b1-3189-4c5b-abd3-0f0986292ade.png", width="100%")
|
|
52
|
+
with rv.Html(tag="a", attributes={"href": "https://github.com/Ben-Epstein/", "target": "_blank"}):
|
|
53
|
+
with rv.ListItem(class_="grow"):
|
|
54
|
+
with rv.ListItemAvatar(color="grey darken-3"):
|
|
55
|
+
rv.Img(
|
|
56
|
+
class_="elevation-6",
|
|
57
|
+
src=img,
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
with solara.Card("solara.dev", style={"height": "100%"}):
|
|
61
|
+
solara.Markdown(
|
|
62
|
+
"""
|
|
63
|
+
The Solara.dev website is built using Solara itself, showcasing the library's features and capabilities.
|
|
64
|
+
All documentation and example are on this page.
|
|
65
|
+
"""
|
|
66
|
+
)
|
|
67
|
+
with solara.Link("./solara_dev"):
|
|
68
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/solara/thumbnail.png", width="100%")
|
|
69
|
+
|
|
70
|
+
solara.HTML(tag="h1", unsafe_innerHTML="Solarathon 2023")
|
|
71
|
+
solara.Markdown(
|
|
72
|
+
"""
|
|
73
|
+
In November 2023, we hosted the first Solarathon, a two-week hackathon,
|
|
74
|
+
during which participants built projects using Solara, and deployed them to [Ploomber](https://ploomber.io/).
|
|
75
|
+
The event was a great success, and we are looking forward to hosting more Solarathons in the future.
|
|
76
|
+
The projects built during the event are showcased below."""
|
|
77
|
+
)
|
|
78
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
79
|
+
with solara.Card("Team 2: Travel Assistant", style={"height": "100%"}):
|
|
80
|
+
with solara.Link("./solarathon_2023_team_2"):
|
|
81
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/solarathon_2023_team_2/thumbnail.png", width="100%")
|
|
82
|
+
with solara.v.Html(tag="a", attributes={"href": "https://github.com/alonsosilvaallende/solarathon", "target": "_blank"}):
|
|
83
|
+
with solara.Row(style={"min-height": "24px"}):
|
|
84
|
+
solara.v.Icon(children=["mdi-github-circle"], x_large=True, class_="mr-2")
|
|
85
|
+
|
|
86
|
+
with solara.Card("Team 4: Live Cryptocurrency Dashboard", style={"height": "100%"}):
|
|
87
|
+
with solara.Link("./solarathon_2023_team_4"):
|
|
88
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/solarathon_2023_team_4/thumbnail.png", width="100%")
|
|
89
|
+
with solara.v.Html(tag="a", attributes={"href": "https://github.com/theeldermillenial/solarathon", "target": "_blank"}):
|
|
90
|
+
with solara.Row(style={"min-height": "24px"}):
|
|
91
|
+
solara.v.Icon(children=["mdi-github-circle"], x_large=True, class_="mr-2")
|
|
92
|
+
|
|
93
|
+
with solara.Card("Team 5: Sports Video Analysis", style={"height": "100%"}):
|
|
94
|
+
with solara.Link("./solarathon_2023_team_5"):
|
|
95
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/solarathon_2023_team_5/thumbnail.png", width="100%")
|
|
96
|
+
with solara.v.Html(tag="a", attributes={"href": "https://github.com/FelipeCabelloE/solarathon-team5/", "target": "_blank"}):
|
|
97
|
+
with solara.Row(style={"min-height": "24px"}):
|
|
98
|
+
solara.v.Icon(children=["mdi-github-circle"], x_large=True, class_="mr-2")
|
|
99
|
+
|
|
100
|
+
with solara.Card("Team 6: Automatic FAQ Creator", style={"height": "100%"}):
|
|
101
|
+
with solara.Link("./solarathon_2023_team_6"):
|
|
102
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/solarathon_2023_team_6/thumbnail.png", width="100%")
|
|
103
|
+
with solara.v.Html(tag="a", attributes={"href": "https://github.com/silvhua/solarathon-faq-creator", "target": "_blank"}):
|
|
104
|
+
with solara.Row(style={"min-height": "24px"}):
|
|
105
|
+
solara.v.Icon(children=["mdi-github-circle"], x_large=True, class_="mr-2")
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import solara
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@solara.component
|
|
5
|
+
def Page():
|
|
6
|
+
with solara.Link("/showcase"):
|
|
7
|
+
solara.Text("« Back to Showcases")
|
|
8
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
9
|
+
solara.Markdown(
|
|
10
|
+
"""
|
|
11
|
+
# Domino code assist
|
|
12
|
+
|
|
13
|
+
[Domino Code Assist](https://www.dominodatalab.com/product/code-assist) (DCA) is a tool developed for [Domino Data Lab](https://www.dominodatalab.com/)
|
|
14
|
+
which provides a simple, intuitive point-and-click interface for generating Python or R code.
|
|
15
|
+
DCA uses many of the solara components to render the UI in the classical notebook and lab. Solara server is used to serve data apps.
|
|
16
|
+
|
|
17
|
+
Domino code assist is deeply integrated in the Jupyter notebook.
|
|
18
|
+
"""
|
|
19
|
+
)
|
|
20
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/lca/load-data-lab.png", width="100%", classes=["pt-12"])
|
|
21
|
+
|
|
22
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
23
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/lca/viz.png", width="100%", classes=["pt-12"])
|
|
24
|
+
solara.Markdown(
|
|
25
|
+
"""
|
|
26
|
+
# Sophisticated UIs
|
|
27
|
+
|
|
28
|
+
Using Solara, we can build sophisticated UIs that are easy to use, intuitive
|
|
29
|
+
and have a modern look and feel.
|
|
30
|
+
|
|
31
|
+
"""
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
35
|
+
solara.Markdown(
|
|
36
|
+
"""
|
|
37
|
+
# Making apps.
|
|
38
|
+
|
|
39
|
+
Using Solara we could build an "What You See Is What You Get" app designer.
|
|
40
|
+
All solara components look and feel the same in the notebook and in the deployed app.
|
|
41
|
+
|
|
42
|
+
"""
|
|
43
|
+
)
|
|
44
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/lca/app-design.png", width="100%", classes=["pt-12"])
|
|
45
|
+
|
|
46
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
47
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/lca/app-deployed.png", width="100%", classes=["pt-12"])
|
|
48
|
+
solara.Markdown(
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
# App deploying
|
|
52
|
+
|
|
53
|
+
To deploy apps we use [solara server](/documentation/advanced/understanding/solara-server) which can
|
|
54
|
+
render the same UI as in the notebook, but now sharable with non-technical users.
|
|
55
|
+
|
|
56
|
+
Many users have deployed apps at Domino using Solara with
|
|
57
|
+
a single click.
|
|
58
|
+
|
|
59
|
+
"""
|
|
60
|
+
)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import solara
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@solara.component
|
|
5
|
+
def Page():
|
|
6
|
+
with solara.Link("/showcase"):
|
|
7
|
+
solara.Text("« Back to Showcases")
|
|
8
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
9
|
+
solara.Markdown(
|
|
10
|
+
"""
|
|
11
|
+
# TESSA by Planeto
|
|
12
|
+
|
|
13
|
+
[Planeto](https://planeto-energy.ch/) developed a tool called [TESSA](https://planeto-energy.ch/solution/) for district heating & cooling planning.
|
|
14
|
+
|
|
15
|
+
TESSA was prototyped in the Jupyter notebook using ipywidgets. Using solara, they are able to bring TESSA into production using the
|
|
16
|
+
same technology stack.
|
|
17
|
+
"""
|
|
18
|
+
)
|
|
19
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/tessa/thumbnail.png", width="100%", classes=["pt-12"])
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import solara
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@solara.component
|
|
5
|
+
def Page():
|
|
6
|
+
with solara.Link("/showcase"):
|
|
7
|
+
solara.Text("« Back to Showcases")
|
|
8
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
9
|
+
solara.Markdown(
|
|
10
|
+
"""
|
|
11
|
+
# Solara.dev
|
|
12
|
+
|
|
13
|
+
The Solara.dev website is built using Solara itself, showcasing the library's features and capabilities.
|
|
14
|
+
All documentation and example are on this website.
|
|
15
|
+
"""
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
19
|
+
solara.Markdown(
|
|
20
|
+
"""
|
|
21
|
+
## Desktop and mobile
|
|
22
|
+
|
|
23
|
+
Solara.dev is designed to be responsive, working seamlessly on both desktop and mobile devices.
|
|
24
|
+
On smaller screens, the top navigation bar is replaced with a drawer for easy navigation.
|
|
25
|
+
The [`ColumnsResponsive`](/documentation/components/layout/columns_responsive) component can be used to create responsive content layouts.
|
|
26
|
+
|
|
27
|
+
"""
|
|
28
|
+
)
|
|
29
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/solara/home-mobile.png", width="100%", classes=["pt-12"])
|
|
30
|
+
|
|
31
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
32
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/solara/docs.png", width="100%")
|
|
33
|
+
solara.Markdown(
|
|
34
|
+
"""
|
|
35
|
+
## Multi-page
|
|
36
|
+
|
|
37
|
+
The website is composed of multiple pages, illustrating how users can navigate between the home page, documentation, and tutorial sections.
|
|
38
|
+
|
|
39
|
+
"""
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
43
|
+
solara.Markdown(
|
|
44
|
+
"""
|
|
45
|
+
## Markdown support
|
|
46
|
+
|
|
47
|
+
Solara supports the use of Markdown for creating dynamic and static content.
|
|
48
|
+
This makes it possible to combine Python-generated pages with static Markdown pages in a single website.
|
|
49
|
+
Hot reloading ensures that the page is automatically updated whenever changes are made to the Markdown files.
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
"""
|
|
53
|
+
)
|
|
54
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/solara/vscode-markdown.png", width="100%")
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import solara
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@solara.component
|
|
5
|
+
def Page():
|
|
6
|
+
with solara.Link("/showcase"):
|
|
7
|
+
solara.Text("« Back to Showcases")
|
|
8
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
9
|
+
with solara.Column(align="end", style={"height": "100%", "justify-content": "center"}):
|
|
10
|
+
solara.Markdown(
|
|
11
|
+
"""
|
|
12
|
+
Team 2 built a travel assistant, which utilized various third party APIs to display rich information about the desired destination
|
|
13
|
+
during the dates selected for a visit. The assistant also provided a list of recommended activities, and a map of the area.
|
|
14
|
+
|
|
15
|
+
Take a look at the project on [Ploomber](https://jolly-moon-5966.ploomberapp.io/)
|
|
16
|
+
"""
|
|
17
|
+
)
|
|
18
|
+
with solara.v.Html(tag="video", attributes={"controls": "controls", "autoplay": "autoplay"}, style_="width:100%;"):
|
|
19
|
+
solara.v.Html(
|
|
20
|
+
tag="source",
|
|
21
|
+
attributes={"src": "https://dxhl76zpt6fap.cloudfront.net/public/showcase/solarathon_2023_team_2/preview.webm", "type": "video/webm"},
|
|
22
|
+
)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import solara
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@solara.component
|
|
5
|
+
def Page():
|
|
6
|
+
with solara.Link("/showcase"):
|
|
7
|
+
solara.Text("« Back to Showcases")
|
|
8
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
9
|
+
with solara.Column(align="end", style={"height": "100%", "justify-content": "center"}):
|
|
10
|
+
solara.Markdown(
|
|
11
|
+
"""
|
|
12
|
+
Team 4 built a live cryptocurrency dashboard, which displayed the latest prices for various cryptocurrencies, and versatile
|
|
13
|
+
analysis tools to help users make informed decisions.
|
|
14
|
+
|
|
15
|
+
Note: The dashboard is no longer live on Ploomber, but you can see a preview of it in the video, or run it by cloning the GitHub repository.
|
|
16
|
+
"""
|
|
17
|
+
)
|
|
18
|
+
with solara.v.Html(tag="video", attributes={"controls": "controls", "autoplay": "autoplay"}, style_="width:100%;"):
|
|
19
|
+
solara.v.Html(
|
|
20
|
+
tag="source",
|
|
21
|
+
attributes={"src": "https://dxhl76zpt6fap.cloudfront.net/public/showcase/solarathon_2023_team_4/preview.webm", "type": "video/webm"},
|
|
22
|
+
)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import solara
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@solara.component
|
|
5
|
+
def Page():
|
|
6
|
+
with solara.Link("/showcase"):
|
|
7
|
+
solara.Text("« Back to Showcases")
|
|
8
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
9
|
+
with solara.Column(align="end", style={"height": "100%", "justify-content": "center"}):
|
|
10
|
+
solara.Markdown(
|
|
11
|
+
"""
|
|
12
|
+
Team 5 built a tool for analyzing sports videos, which allows users to select or upload a video, and then analyse it using
|
|
13
|
+
point tracking, and object recognition. Because of the nature of the project, adding further analysis tools is very easy.
|
|
14
|
+
|
|
15
|
+
Note: The dashboard is no longer live on Ploomber, but you can see a preview of it in the video, or run it through
|
|
16
|
+
[GitHub](https://github.com/FelipeCabelloE/solarathon-team5/), using CodeSpaces.
|
|
17
|
+
"""
|
|
18
|
+
)
|
|
19
|
+
with solara.v.Html(tag="video", attributes={"controls": "controls", "autoplay": "autoplay"}, style_="width:100%;"):
|
|
20
|
+
solara.v.Html(
|
|
21
|
+
tag="source",
|
|
22
|
+
attributes={"src": "https://dxhl76zpt6fap.cloudfront.net/public/showcase/solarathon_2023_team_5/preview.webm", "type": "video/webm"},
|
|
23
|
+
)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import solara
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@solara.component
|
|
5
|
+
def Page():
|
|
6
|
+
with solara.Link("/showcase"):
|
|
7
|
+
solara.Text("« Back to Showcases")
|
|
8
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
9
|
+
with solara.Column(align="end", style={"height": "100%", "justify-content": "center"}):
|
|
10
|
+
solara.Markdown(
|
|
11
|
+
"""
|
|
12
|
+
Team 6 built an automatic FAQ creator, including a Discord bot, which crawls a Discord server, and creates a FAQ page
|
|
13
|
+
based on the most frequently asked questions in the server. The Data is then fed through [Haystack](https://haystack.deepset.ai/),
|
|
14
|
+
which summarizes and categorizes the questions, and provides answers to be displayed on the FAQ page.
|
|
15
|
+
|
|
16
|
+
Take a look at the [GitHub Repository](https://github.com/silvhua/solarathon-faq-creator) for instructions on how to run the project.
|
|
17
|
+
"""
|
|
18
|
+
)
|
|
19
|
+
with solara.v.Html(tag="video", attributes={"controls": "controls", "autoplay": "autoplay"}, style_="width:100%;"):
|
|
20
|
+
solara.v.Html(
|
|
21
|
+
tag="source",
|
|
22
|
+
attributes={"src": "https://dxhl76zpt6fap.cloudfront.net/public/showcase/solarathon_2023_team_6/preview.webm", "type": "video/webm"},
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
solara.Markdown(
|
|
26
|
+
"""
|
|
27
|
+
## Project Team Members
|
|
28
|
+
* [Simone Frisco](https://www.linkedin.com/in/simonefrisco/), Data Scientist
|
|
29
|
+
* [Silvia Hua](https://www.linkedin.com/in/silviahua), Data Scientist
|
|
30
|
+
* [Arunprasadh Senthil](https://www.linkedin.com/in/arun-prasadh-senthil/), Data Engineer
|
|
31
|
+
* [Janet Mardjuki](https://www.linkedin.com/in/jmardjuki/), Software Developer
|
|
32
|
+
* [Roman Gampert](https://www.linkedin.com/in/roman-gampert-5537b9126/), Product
|
|
33
|
+
"""
|
|
34
|
+
)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import solara
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@solara.component
|
|
5
|
+
def Page():
|
|
6
|
+
with solara.Link("/showcase"):
|
|
7
|
+
solara.Text("« Back to Showcases")
|
|
8
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
9
|
+
with solara.Column(align="end", style={"height": "100%", "justify-content": "center"}):
|
|
10
|
+
solara.Markdown(
|
|
11
|
+
"""
|
|
12
|
+
[Wanderlust](https://huggingface.co/spaces/solara-dev/wanderlust) is a reproduction of the travel assistant demo shown at the
|
|
13
|
+
[OpenAI DevDay](https://devday.openai.com/) 2023, built using Solara and the OpenAI Assistants API.
|
|
14
|
+
|
|
15
|
+
The sourcecode of the demo is available on [github](https://github.com/widgetti/wanderlust)
|
|
16
|
+
"""
|
|
17
|
+
)
|
|
18
|
+
with solara.v.Html(tag="a", style_="width: 100%;", attributes={"href": "https://huggingface.co/spaces/solara-dev/wanderlust", "target": "_blank"}):
|
|
19
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/wanderlust/thumbnail.png", width="100%")
|
|
20
|
+
with solara.ColumnsResponsive(12, medium=6):
|
|
21
|
+
with solara.v.Html(tag="a", style_="width: 100%;", attributes={"href": "https://huggingface.co/spaces/solara-dev/wanderlust", "target": "_blank"}):
|
|
22
|
+
solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/showcase/wanderlust/assistant.png", width="100%")
|
|
23
|
+
with solara.Column(align="end", style={"height": "100%", "justify-content": "center"}):
|
|
24
|
+
solara.Markdown(
|
|
25
|
+
"""Using the new [function calling feature](https://platform.openai.com/docs/guides/function-calling) of OpenAI Assistants, the
|
|
26
|
+
assistant can annotate, move, and zoom the map to provide additional functionality"""
|
|
27
|
+
)
|
|
Binary file
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg width="17.055mm" height="17.055mm" version="1.1" viewBox="0 0 17.055 17.055" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g transform="translate(-20.456 15.688)" stroke-width=".26458">
|
|
3
|
+
<path d="m35.567-7.5814 1.1536-3.3787-3.3787-1.1536-1.5716-3.2041-3.2041 1.5743-3.3814-1.1562-1.1536 3.3787-3.2041 1.5743 1.5743 3.2041-1.1536 3.3787 3.3787 1.1536 1.5743 3.2067 3.2041-1.5743 3.3787 1.1536 1.1536-3.3787 3.2041-1.5743zm-0.75406 0.99219-5.2573 5.2573c-0.3175 0.3175-0.83079 0.3175-1.1483 0l-5.252-5.2546c-0.3175-0.3175-0.3175-0.83079 0-1.1456l5.2546-5.2573c0.3175-0.3175 0.83079-0.3175 1.1483 0l5.2573 5.2573c0.3175 0.3175 0.3175 0.83079 0 1.1456z" fill="#ffcf64"/>
|
|
4
|
+
<path d="m34.643-10.55-0.52123-3.5322-3.5322 0.52123-2.8681-2.1272-2.1272 2.8681-3.5322 0.52388 0.52123 3.5322-2.1272 2.8654 2.8681 2.1272 0.52123 3.5322 3.5322-0.52123 2.8681 2.1273 2.1272-2.8681 3.5322-0.52388-0.52123-3.5322 2.1272-2.8681-2.8681-2.1299zm-0.21696 1.2277-2.2648 7.0802c-0.13758 0.42598-0.59267 0.66146-1.0186 0.52652l-7.0802-2.2648c-0.42598-0.13494-0.66146-0.59267-0.52652-1.0186l2.2675-7.0802c0.13494-0.42598 0.59267-0.66146 1.0186-0.52652l7.0802 2.2648c0.42598 0.13494 0.66146 0.59267 0.52652 1.0186z" fill="#ff8c3e"/>
|
|
5
|
+
</g>
|
|
6
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 127.14 96.36"><path fill="#fff" d="M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg width="98" height="96" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z" fill="#fff"/></svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="1200" height="1227" viewBox="0 0 1200 1227" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z" fill="white"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<html>
|
|
2
|
+
<!-- Google Tag Manager -->
|
|
3
|
+
<script>
|
|
4
|
+
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
|
5
|
+
new Date().getTime(),event:'gtm.js'});
|
|
6
|
+
var f=d.getElementsByTagName(s)[0], j=d.createElement(s), dl=l!='dataLayer'?'&l='+l:'';
|
|
7
|
+
j.async=true;
|
|
8
|
+
j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;
|
|
9
|
+
f.parentNode.insertBefore(j,f);
|
|
10
|
+
})(window,document,'script','dataLayer','GTM-KC98NKNL');
|
|
11
|
+
</script>
|
|
12
|
+
<!-- End Google Tag Manager -->
|
|
13
|
+
|
|
14
|
+
<body>
|
|
15
|
+
<!-- Google Tag Manager (noscript) -->
|
|
16
|
+
<noscript>
|
|
17
|
+
<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KC98NKNL"
|
|
18
|
+
height="0" width="0" style="display:none;visibility:hidden"></iframe>
|
|
19
|
+
</noscript>
|
|
20
|
+
<!-- End Google Tag Manager (noscript) -->
|
|
21
|
+
|
|
22
|
+
Used to detect failed Jupyter and Solara installations.
|
|
23
|
+
</body>
|
|
24
|
+
|
|
25
|
+
</html>
|