solara 1.30.0__py2.py3-none-any.whl → 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.
- {solara-1.30.0.dist-info → solara-1.31.0.dist-info}/METADATA +7 -42
- solara-1.31.0.dist-info/RECORD +5 -0
- {solara-1.30.0.dist-info → solara-1.31.0.dist-info}/WHEEL +1 -1
- {solara/template/portal → solara-1.31.0.dist-info/licenses}/LICENSE +1 -1
- solara/__init__.py +0 -123
- solara/__main__.py +0 -734
- solara/alias.py +0 -6
- solara/autorouting.py +0 -554
- solara/cache.py +0 -294
- solara/checks.html +0 -71
- solara/checks.py +0 -224
- solara/comm.py +0 -28
- solara/components/__init__.py +0 -59
- solara/components/alert.py +0 -155
- solara/components/applayout.py +0 -393
- solara/components/button.py +0 -85
- solara/components/card.py +0 -87
- solara/components/checkbox.py +0 -50
- solara/components/code_highlight_css.py +0 -11
- solara/components/code_highlight_css.vue +0 -63
- solara/components/columns.py +0 -159
- solara/components/component_vue.py +0 -109
- solara/components/cross_filter.py +0 -335
- solara/components/dataframe.py +0 -546
- solara/components/datatable.py +0 -221
- solara/components/datatable.vue +0 -175
- solara/components/details.py +0 -21
- solara/components/download.vue +0 -35
- solara/components/echarts.py +0 -75
- solara/components/echarts.vue +0 -128
- solara/components/figure_altair.py +0 -39
- solara/components/file_browser.py +0 -182
- solara/components/file_download.py +0 -199
- solara/components/file_drop.py +0 -139
- solara/components/file_drop.vue +0 -83
- solara/components/file_list_widget.vue +0 -78
- solara/components/head.py +0 -27
- solara/components/head_tag.py +0 -49
- solara/components/head_tag.vue +0 -60
- solara/components/image.py +0 -173
- solara/components/input.py +0 -440
- solara/components/link.py +0 -55
- solara/components/markdown.py +0 -371
- solara/components/markdown_editor.py +0 -25
- solara/components/markdown_editor.vue +0 -362
- solara/components/matplotlib.py +0 -74
- solara/components/meta.py +0 -47
- solara/components/misc.py +0 -333
- solara/components/pivot_table.py +0 -258
- solara/components/pivot_table.vue +0 -158
- solara/components/progress.py +0 -47
- solara/components/select.py +0 -186
- solara/components/select.vue +0 -27
- solara/components/slider.py +0 -442
- solara/components/slider_date.vue +0 -56
- solara/components/spinner-solara.vue +0 -105
- solara/components/spinner.py +0 -30
- solara/components/sql_code.py +0 -33
- solara/components/sql_code.vue +0 -128
- solara/components/style.py +0 -105
- solara/components/switch.py +0 -68
- solara/components/tab_navigation.py +0 -37
- solara/components/title.py +0 -90
- solara/components/title.vue +0 -38
- solara/components/togglebuttons.py +0 -202
- solara/components/tooltip.py +0 -61
- solara/datatypes.py +0 -143
- solara/express.py +0 -241
- solara/hooks/__init__.py +0 -4
- solara/hooks/dataframe.py +0 -99
- solara/hooks/misc.py +0 -263
- solara/hooks/use_reactive.py +0 -129
- solara/hooks/use_thread.py +0 -129
- solara/kitchensink.py +0 -8
- solara/lab/__init__.py +0 -34
- solara/lab/components/__init__.py +0 -6
- solara/lab/components/chat.py +0 -203
- solara/lab/components/confirmation_dialog.py +0 -165
- solara/lab/components/cross_filter.py +0 -7
- solara/lab/components/input_date.py +0 -298
- solara/lab/components/menu.py +0 -181
- solara/lab/components/menu.vue +0 -38
- solara/lab/components/tabs.py +0 -274
- solara/lab/components/theming.py +0 -98
- solara/lab/components/theming.vue +0 -72
- solara/lab/hooks/__init__.py +0 -0
- solara/lab/hooks/dataframe.py +0 -12
- solara/lab/toestand.py +0 -3
- solara/lab/utils/__init__.py +0 -2
- solara/lab/utils/cookies.py +0 -5
- solara/lab/utils/dataframe.py +0 -115
- solara/lab/utils/headers.py +0 -5
- solara/layout.py +0 -44
- solara/minisettings.py +0 -133
- solara/py.typed +0 -0
- solara/reactive.py +0 -93
- solara/routing.py +0 -268
- solara/scope/__init__.py +0 -87
- solara/scope/types.py +0 -55
- solara/server/__init__.py +0 -0
- solara/server/app.py +0 -490
- solara/server/assets/custom.css +0 -1
- solara/server/assets/custom.js +0 -1
- solara/server/assets/favicon.png +0 -0
- solara/server/assets/favicon.svg +0 -5
- solara/server/assets/style.css +0 -1665
- solara/server/assets/theme-dark.css +0 -437
- solara/server/assets/theme-light.css +0 -420
- solara/server/assets/theme.js +0 -3
- solara/server/cdn_helper.py +0 -77
- solara/server/esm.py +0 -69
- solara/server/fastapi.py +0 -5
- solara/server/flask.py +0 -286
- solara/server/jupyter/__init__.py +0 -2
- solara/server/jupyter/cdn_handler.py +0 -28
- solara/server/jupyter/server_extension.py +0 -29
- solara/server/jupytertools.py +0 -46
- solara/server/kernel.py +0 -319
- solara/server/kernel_context.py +0 -393
- solara/server/patch.py +0 -552
- solara/server/reload.py +0 -242
- solara/server/server.py +0 -437
- solara/server/settings.py +0 -212
- solara/server/shell.py +0 -240
- solara/server/starlette.py +0 -597
- solara/server/static/ansi.js +0 -270
- solara/server/static/highlight-dark.css +0 -82
- solara/server/static/highlight.css +0 -43
- solara/server/static/main-vuetify.js +0 -260
- solara/server/static/main.js +0 -163
- solara/server/static/solara_bootstrap.py +0 -129
- solara/server/static/sun.svg +0 -23
- solara/server/static/webworker.js +0 -42
- solara/server/telemetry.py +0 -212
- solara/server/templates/index.html.j2 +0 -1
- solara/server/templates/loader-plain.css +0 -11
- solara/server/templates/loader-plain.html +0 -20
- solara/server/templates/loader-solara.css +0 -111
- solara/server/templates/loader-solara.html +0 -40
- solara/server/templates/plain.html +0 -82
- solara/server/templates/solara.html.j2 +0 -446
- solara/server/threaded.py +0 -75
- solara/server/utils.py +0 -30
- solara/server/websocket.py +0 -44
- solara/settings.py +0 -56
- solara/tasks.py +0 -847
- solara/template/button.py +0 -16
- solara/template/markdown.py +0 -42
- solara/template/portal/.flake8 +0 -6
- solara/template/portal/.pre-commit-config.yaml +0 -28
- solara/template/portal/Procfile +0 -7
- solara/template/portal/mypy.ini +0 -3
- solara/template/portal/pyproject.toml +0 -26
- solara/template/portal/solara_portal/__init__.py +0 -3
- solara/template/portal/solara_portal/components/__init__.py +0 -2
- solara/template/portal/solara_portal/components/article.py +0 -28
- solara/template/portal/solara_portal/components/data.py +0 -28
- solara/template/portal/solara_portal/components/header.py +0 -6
- solara/template/portal/solara_portal/components/layout.py +0 -6
- solara/template/portal/solara_portal/content/articles/equis-in-vidi.md +0 -85
- solara/template/portal/solara_portal/content/articles/substiterat-vati.md +0 -70
- solara/template/portal/solara_portal/data.py +0 -60
- solara/template/portal/solara_portal/pages/__init__.py +0 -67
- solara/template/portal/solara_portal/pages/article/__init__.py +0 -26
- solara/template/portal/solara_portal/pages/tabular.py +0 -29
- solara/template/portal/solara_portal/pages/viz/__init__.py +0 -69
- solara/template/portal/solara_portal/pages/viz/overview.py +0 -14
- solara/test/__init__.py +0 -0
- solara/test/pytest_plugin.py +0 -698
- solara/toestand.py +0 -772
- solara/util.py +0 -308
- solara/website/__init__.py +0 -0
- solara/website/assets/custom.css +0 -462
- solara/website/assets/images/logo-small.png +0 -0
- solara/website/assets/images/logo.svg +0 -17
- solara/website/assets/images/logo_white.svg +0 -50
- solara/website/assets/theme.js +0 -8
- solara/website/components/__init__.py +0 -5
- solara/website/components/algolia.vue +0 -24
- solara/website/components/algolia_api.vue +0 -157
- solara/website/components/docs.py +0 -118
- solara/website/components/header.py +0 -72
- solara/website/components/hero.py +0 -15
- solara/website/components/mailchimp.py +0 -12
- solara/website/components/mailchimp.vue +0 -47
- solara/website/components/notebook.py +0 -172
- solara/website/pages/__init__.py +0 -564
- solara/website/pages/apps/__init__.py +0 -16
- solara/website/pages/apps/authorization/__init__.py +0 -118
- solara/website/pages/apps/authorization/admin.py +0 -12
- solara/website/pages/apps/authorization/users.py +0 -12
- solara/website/pages/apps/jupyter-dashboard-1.py +0 -116
- solara/website/pages/apps/layout-demo.py +0 -40
- solara/website/pages/apps/multipage/__init__.py +0 -38
- solara/website/pages/apps/multipage/page1.py +0 -26
- solara/website/pages/apps/multipage/page2.py +0 -34
- solara/website/pages/apps/scatter.py +0 -136
- solara/website/pages/apps/scrolling.py +0 -63
- solara/website/pages/apps/tutorial-streamlit.py +0 -18
- solara/website/pages/changelog/__init__.py +0 -8
- solara/website/pages/changelog/changelog.md +0 -180
- solara/website/pages/contact/__init__.py +0 -8
- solara/website/pages/contact/contact.md +0 -17
- solara/website/pages/doc_use_download.py +0 -85
- solara/website/pages/documentation/__init__.py +0 -184
- solara/website/pages/documentation/advanced/__init__.py +0 -36
- solara/website/pages/documentation/advanced/content/00-overview.md +0 -1
- solara/website/pages/documentation/advanced/content/10-howto/00-overview.md +0 -1
- solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md +0 -191
- solara/website/pages/documentation/advanced/content/10-howto/20-layout.md +0 -120
- solara/website/pages/documentation/advanced/content/10-howto/30-testing.md +0 -149
- solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md +0 -66
- solara/website/pages/documentation/advanced/content/10-howto/40-embed.md +0 -43
- solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md +0 -120
- solara/website/pages/documentation/advanced/content/20-understanding/00-introduction.md +0 -4
- solara/website/pages/documentation/advanced/content/20-understanding/05-ipywidgets.md +0 -30
- solara/website/pages/documentation/advanced/content/20-understanding/06-ipyvuetify.md +0 -38
- solara/website/pages/documentation/advanced/content/20-understanding/10-reacton.md +0 -24
- solara/website/pages/documentation/advanced/content/20-understanding/12-reacton-basics.md +0 -104
- solara/website/pages/documentation/advanced/content/20-understanding/15-anatomy.md +0 -19
- solara/website/pages/documentation/advanced/content/20-understanding/17-rules-of-hooks.md +0 -3
- solara/website/pages/documentation/advanced/content/20-understanding/18-containers.md +0 -160
- solara/website/pages/documentation/advanced/content/20-understanding/20-solara.md +0 -13
- solara/website/pages/documentation/advanced/content/20-understanding/40-routing.md +0 -236
- solara/website/pages/documentation/advanced/content/20-understanding/50-solara-server.md +0 -81
- solara/website/pages/documentation/advanced/content/20-understanding/60-voila.md +0 -7
- solara/website/pages/documentation/advanced/content/30-enterprise/00-overview.md +0 -1
- solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md +0 -167
- solara/website/pages/documentation/advanced/content/40-development/00-overview.md +0 -0
- solara/website/pages/documentation/advanced/content/40-development/01-contribute.md +0 -41
- solara/website/pages/documentation/advanced/content/40-development/10-setup.md +0 -72
- solara/website/pages/documentation/advanced/content/__init__.py +0 -0
- solara/website/pages/documentation/api/__init__.py +0 -19
- solara/website/pages/documentation/api/cross_filter/__init__.py +0 -9
- solara/website/pages/documentation/api/cross_filter/cross_filter_dataframe.py +0 -23
- solara/website/pages/documentation/api/cross_filter/cross_filter_report.py +0 -22
- solara/website/pages/documentation/api/cross_filter/cross_filter_select.py +0 -22
- solara/website/pages/documentation/api/cross_filter/cross_filter_slider.py +0 -22
- solara/website/pages/documentation/api/hooks/__init__.py +0 -9
- solara/website/pages/documentation/api/hooks/use_cross_filter.py +0 -25
- solara/website/pages/documentation/api/hooks/use_dark_effective.py +0 -13
- solara/website/pages/documentation/api/hooks/use_effect.md +0 -43
- solara/website/pages/documentation/api/hooks/use_effect.py +0 -9
- solara/website/pages/documentation/api/hooks/use_exception.py +0 -33
- solara/website/pages/documentation/api/hooks/use_memo.md +0 -16
- solara/website/pages/documentation/api/hooks/use_memo.py +0 -9
- solara/website/pages/documentation/api/hooks/use_previous.py +0 -32
- solara/website/pages/documentation/api/hooks/use_reactive.py +0 -15
- solara/website/pages/documentation/api/hooks/use_state.py +0 -11
- solara/website/pages/documentation/api/hooks/use_state_or_update.py +0 -68
- solara/website/pages/documentation/api/hooks/use_thread.md +0 -58
- solara/website/pages/documentation/api/hooks/use_thread.py +0 -44
- solara/website/pages/documentation/api/hooks/use_trait_observe.py +0 -13
- solara/website/pages/documentation/api/routing/__init__.py +0 -9
- solara/website/pages/documentation/api/routing/generate_routes.py +0 -11
- solara/website/pages/documentation/api/routing/generate_routes_directory.py +0 -11
- solara/website/pages/documentation/api/routing/resolve_path.py +0 -36
- solara/website/pages/documentation/api/routing/route.py +0 -32
- solara/website/pages/documentation/api/routing/use_route.py +0 -80
- solara/website/pages/documentation/api/routing/use_router.py +0 -15
- solara/website/pages/documentation/api/utilities/__init__.py +0 -9
- solara/website/pages/documentation/api/utilities/component_vue.py +0 -11
- solara/website/pages/documentation/api/utilities/computed.py +0 -16
- solara/website/pages/documentation/api/utilities/display.py +0 -15
- solara/website/pages/documentation/api/utilities/get_kernel_id.py +0 -16
- solara/website/pages/documentation/api/utilities/get_session_id.py +0 -16
- solara/website/pages/documentation/api/utilities/memoize.py +0 -36
- solara/website/pages/documentation/api/utilities/on_kernel_start.py +0 -27
- solara/website/pages/documentation/api/utilities/reactive.py +0 -15
- solara/website/pages/documentation/api/utilities/widget.py +0 -104
- solara/website/pages/documentation/components/__init__.py +0 -12
- solara/website/pages/documentation/components/advanced/__init__.py +0 -9
- solara/website/pages/documentation/components/advanced/link.py +0 -28
- solara/website/pages/documentation/components/advanced/meta.py +0 -21
- solara/website/pages/documentation/components/advanced/style.py +0 -44
- solara/website/pages/documentation/components/common.py +0 -9
- solara/website/pages/documentation/components/data/__init__.py +0 -9
- solara/website/pages/documentation/components/data/dataframe.py +0 -44
- solara/website/pages/documentation/components/data/pivot_table.py +0 -81
- solara/website/pages/documentation/components/enterprise/__init__.py +0 -9
- solara/website/pages/documentation/components/enterprise/avatar.py +0 -19
- solara/website/pages/documentation/components/enterprise/avatar_menu.py +0 -20
- solara/website/pages/documentation/components/input/__init__.py +0 -9
- solara/website/pages/documentation/components/input/button.py +0 -22
- solara/website/pages/documentation/components/input/checkbox.py +0 -12
- solara/website/pages/documentation/components/input/file_browser.py +0 -33
- solara/website/pages/documentation/components/input/file_drop.py +0 -75
- solara/website/pages/documentation/components/input/input.py +0 -18
- solara/website/pages/documentation/components/input/select.py +0 -21
- solara/website/pages/documentation/components/input/slider.py +0 -28
- solara/website/pages/documentation/components/input/switch.py +0 -12
- solara/website/pages/documentation/components/input/togglebuttons.py +0 -20
- solara/website/pages/documentation/components/lab/__init__.py +0 -9
- solara/website/pages/documentation/components/lab/chat.py +0 -108
- solara/website/pages/documentation/components/lab/confirmation_dialog.py +0 -55
- solara/website/pages/documentation/components/lab/cookies_headers.py +0 -48
- solara/website/pages/documentation/components/lab/input_date.py +0 -19
- solara/website/pages/documentation/components/lab/menu.py +0 -21
- solara/website/pages/documentation/components/lab/tab.py +0 -24
- solara/website/pages/documentation/components/lab/tabs.py +0 -44
- solara/website/pages/documentation/components/lab/task.py +0 -12
- solara/website/pages/documentation/components/lab/theming.py +0 -72
- solara/website/pages/documentation/components/lab/use_task.py +0 -12
- solara/website/pages/documentation/components/layout/__init__.py +0 -9
- solara/website/pages/documentation/components/layout/app_bar.py +0 -15
- solara/website/pages/documentation/components/layout/app_bar_title.py +0 -15
- solara/website/pages/documentation/components/layout/app_layout.py +0 -23
- solara/website/pages/documentation/components/layout/card.py +0 -14
- solara/website/pages/documentation/components/layout/card_actions.py +0 -15
- solara/website/pages/documentation/components/layout/column.py +0 -29
- solara/website/pages/documentation/components/layout/columns.py +0 -26
- solara/website/pages/documentation/components/layout/columns_responsive.py +0 -67
- solara/website/pages/documentation/components/layout/griddraggable.py +0 -61
- solara/website/pages/documentation/components/layout/gridfixed.py +0 -21
- solara/website/pages/documentation/components/layout/hbox.py +0 -17
- solara/website/pages/documentation/components/layout/row.py +0 -29
- solara/website/pages/documentation/components/layout/sidebar.py +0 -23
- solara/website/pages/documentation/components/layout/vbox.py +0 -19
- solara/website/pages/documentation/components/output/__init__.py +0 -9
- solara/website/pages/documentation/components/output/file_download.py +0 -12
- solara/website/pages/documentation/components/output/html.py +0 -22
- solara/website/pages/documentation/components/output/image.py +0 -12
- solara/website/pages/documentation/components/output/markdown.py +0 -59
- solara/website/pages/documentation/components/output/markdown_editor.py +0 -53
- solara/website/pages/documentation/components/output/sql_code.py +0 -84
- solara/website/pages/documentation/components/output/tooltip.py +0 -12
- solara/website/pages/documentation/components/page/__init__.py +0 -9
- solara/website/pages/documentation/components/page/head.py +0 -19
- solara/website/pages/documentation/components/page/title.py +0 -28
- solara/website/pages/documentation/components/status/__init__.py +0 -9
- solara/website/pages/documentation/components/status/error.py +0 -40
- solara/website/pages/documentation/components/status/info.py +0 -40
- solara/website/pages/documentation/components/status/progress.py +0 -10
- solara/website/pages/documentation/components/status/spinner.py +0 -10
- solara/website/pages/documentation/components/status/success.py +0 -40
- solara/website/pages/documentation/components/status/warning.py +0 -47
- solara/website/pages/documentation/components/viz/__init__.py +0 -9
- solara/website/pages/documentation/components/viz/altair.py +0 -44
- solara/website/pages/documentation/components/viz/echarts.py +0 -78
- solara/website/pages/documentation/components/viz/matplotlib.py +0 -32
- solara/website/pages/documentation/components/viz/plotly.py +0 -63
- solara/website/pages/documentation/components/viz/plotly_express.py +0 -41
- solara/website/pages/documentation/examples/__init__.py +0 -52
- solara/website/pages/documentation/examples/ai/__init__.py +0 -10
- solara/website/pages/documentation/examples/ai/chatbot.py +0 -96
- solara/website/pages/documentation/examples/ai/tokenizer.py +0 -106
- solara/website/pages/documentation/examples/basics/__init__.py +0 -2
- solara/website/pages/documentation/examples/basics/sine.py +0 -28
- solara/website/pages/documentation/examples/fullscreen/__init__.py +0 -9
- solara/website/pages/documentation/examples/fullscreen/authorization.py +0 -3
- solara/website/pages/documentation/examples/fullscreen/layout_demo.py +0 -3
- solara/website/pages/documentation/examples/fullscreen/multipage.py +0 -3
- solara/website/pages/documentation/examples/fullscreen/scatter.py +0 -3
- solara/website/pages/documentation/examples/fullscreen/scrolling.py +0 -3
- solara/website/pages/documentation/examples/fullscreen/tutorial_streamlit.py +0 -3
- solara/website/pages/documentation/examples/general/__init__.py +0 -9
- solara/website/pages/documentation/examples/general/custom_storage.py +0 -69
- solara/website/pages/documentation/examples/general/deploy_model.py +0 -114
- solara/website/pages/documentation/examples/general/live_update.py +0 -38
- solara/website/pages/documentation/examples/general/login_oauth.py +0 -76
- solara/website/pages/documentation/examples/general/mycard.vue +0 -58
- solara/website/pages/documentation/examples/general/pokemon_search.py +0 -51
- solara/website/pages/documentation/examples/general/vue_component.py +0 -50
- solara/website/pages/documentation/examples/ipycanvas.py +0 -49
- solara/website/pages/documentation/examples/libraries/__init__.py +0 -9
- solara/website/pages/documentation/examples/libraries/altair.py +0 -63
- solara/website/pages/documentation/examples/libraries/bqplot.py +0 -39
- solara/website/pages/documentation/examples/libraries/ipyleaflet.py +0 -32
- solara/website/pages/documentation/examples/libraries/ipyleaflet_advanced.py +0 -65
- solara/website/pages/documentation/examples/utilities/__init__.py +0 -9
- solara/website/pages/documentation/examples/utilities/calculator.py +0 -157
- solara/website/pages/documentation/examples/utilities/countdown_timer.py +0 -64
- solara/website/pages/documentation/examples/utilities/todo.py +0 -195
- solara/website/pages/documentation/examples/visualization/__init__.py +0 -6
- solara/website/pages/documentation/examples/visualization/annotator.py +0 -68
- solara/website/pages/documentation/examples/visualization/linked_views.py +0 -84
- solara/website/pages/documentation/examples/visualization/plotly.py +0 -43
- solara/website/pages/documentation/faq/__init__.py +0 -11
- solara/website/pages/documentation/faq/content/99-faq.md +0 -73
- solara/website/pages/documentation/getting_started/__init__.py +0 -15
- solara/website/pages/documentation/getting_started/content/00-quickstart.md +0 -84
- solara/website/pages/documentation/getting_started/content/01-introduction.md +0 -121
- solara/website/pages/documentation/getting_started/content/02-installing.md +0 -81
- solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md +0 -9
- solara/website/pages/documentation/getting_started/content/04-tutorials/10_data_science.py +0 -13
- solara/website/pages/documentation/getting_started/content/04-tutorials/20-web-app.md +0 -84
- solara/website/pages/documentation/getting_started/content/04-tutorials/30-ipywidgets.md +0 -120
- solara/website/pages/documentation/getting_started/content/04-tutorials/40-streamlit.md +0 -141
- solara/website/pages/documentation/getting_started/content/04-tutorials/50-dash.md +0 -140
- solara/website/pages/documentation/getting_started/content/04-tutorials/60-jupyter-dashboard-part1.py +0 -64
- 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 +0 -445
- solara/website/pages/documentation/getting_started/content/04-tutorials/_jupyter_dashboard_1.ipynb +0 -1000
- solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md +0 -7
- solara/website/pages/documentation/getting_started/content/05-fundamentals/10-components.md +0 -218
- solara/website/pages/documentation/getting_started/content/05-fundamentals/50-state-management.md +0 -83
- solara/website/pages/documentation/getting_started/content/06-reference/00-overview.md +0 -3
- solara/website/pages/documentation/getting_started/content/06-reference/40-static_files.md +0 -27
- solara/website/pages/documentation/getting_started/content/06-reference/41-asset-files.md +0 -32
- solara/website/pages/documentation/getting_started/content/06-reference/60-static-site-generation.md +0 -55
- solara/website/pages/documentation/getting_started/content/06-reference/70-search.md +0 -30
- solara/website/pages/documentation/getting_started/content/06-reference/80-reloading.md +0 -30
- solara/website/pages/documentation/getting_started/content/06-reference/90-notebook-support.md +0 -4
- solara/website/pages/documentation/getting_started/content/06-reference/95-caching.md +0 -143
- solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md +0 -3
- solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md +0 -269
- solara/website/pages/documentation/getting_started/content/07-deploying/20-cloud-hosted.md +0 -76
- solara/website/pages/documentation/getting_started/content/08-lab/00-what-is-lab.md +0 -3
- solara/website/pages/documentation/getting_started/content/90-troubleshoot.md +0 -22
- solara/website/pages/documentation/getting_started/content/__init__.py +0 -0
- solara/website/pages/docutils.py +0 -38
- solara/website/pages/showcase/__init__.py +0 -105
- solara/website/pages/showcase/domino_code_assist.py +0 -60
- solara/website/pages/showcase/planeto_tessa.py +0 -19
- solara/website/pages/showcase/solara_dev.py +0 -54
- solara/website/pages/showcase/solarathon_2023_team_2.py +0 -22
- solara/website/pages/showcase/solarathon_2023_team_4.py +0 -22
- solara/website/pages/showcase/solarathon_2023_team_5.py +0 -23
- solara/website/pages/showcase/solarathon_2023_team_6.py +0 -34
- solara/website/pages/showcase/wanderlust.py +0 -27
- solara/website/public/beach.jpeg +0 -0
- solara/website/public/logo.svg +0 -6
- solara/website/public/social/discord.svg +0 -1
- solara/website/public/social/github.svg +0 -1
- solara/website/public/social/twitter.svg +0 -3
- solara/website/public/success.html +0 -25
- solara/website/templates/index.html.j2 +0 -117
- solara/website/utils.py +0 -51
- solara/widgets/__init__.py +0 -1
- solara/widgets/vue/gridlayout.vue +0 -110
- solara/widgets/vue/html.vue +0 -4
- solara/widgets/vue/navigator.vue +0 -104
- solara/widgets/vue/vegalite.vue +0 -115
- solara/widgets/widgets.py +0 -65
- solara-1.30.0.data/data/etc/jupyter/jupyter_notebook_config.d/solara.json +0 -7
- solara-1.30.0.data/data/etc/jupyter/jupyter_server_config.d/solara.json +0 -7
- solara-1.30.0.dist-info/RECORD +0 -438
- solara-1.30.0.dist-info/entry_points.txt +0 -5
- /solara-1.30.0.dist-info/licenses/LICENSE → /LICENSE +0 -0
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# AppBarTitle
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
import solara
|
|
6
|
-
import solara.lab
|
|
7
|
-
from solara.website.components import NoPage
|
|
8
|
-
from solara.website.utils import apidoc
|
|
9
|
-
|
|
10
|
-
title = "AppBarTitle"
|
|
11
|
-
|
|
12
|
-
Page = NoPage
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
__doc__ += apidoc(solara.AppBarTitle.f) # type: ignore
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# AppLayout
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
import solara
|
|
6
|
-
import solara.lab
|
|
7
|
-
from solara.website.utils import apidoc
|
|
8
|
-
|
|
9
|
-
title = "AppLayout"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
@solara.component
|
|
13
|
-
def Page():
|
|
14
|
-
return solara.Markdown(
|
|
15
|
-
"""
|
|
16
|
-
An example cannot be shown embedded in this page, Visit the [AppLayout page](/apps/scatter) to see an example.
|
|
17
|
-
|
|
18
|
-
[](/apps/scatter)
|
|
19
|
-
"""
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
__doc__ += apidoc(solara.AppLayout.f) # type: ignore
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# CardActions
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
import solara
|
|
6
|
-
import solara.lab
|
|
7
|
-
from solara.website.components import NoPage
|
|
8
|
-
from solara.website.utils import apidoc
|
|
9
|
-
|
|
10
|
-
title = "CardActions"
|
|
11
|
-
|
|
12
|
-
Page = NoPage
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
__doc__ += apidoc(solara.CardActions.f) # type: ignore
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# Column
|
|
3
|
-
"""
|
|
4
|
-
import solara
|
|
5
|
-
import solara.lab
|
|
6
|
-
from solara.website.utils import apidoc
|
|
7
|
-
|
|
8
|
-
gap_size = solara.reactive("12px")
|
|
9
|
-
align = solara.reactive("stretch")
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
@solara.component
|
|
13
|
-
def Page():
|
|
14
|
-
with solara.Card("Column demo") as main:
|
|
15
|
-
with solara.Column():
|
|
16
|
-
solara.Text("Align:")
|
|
17
|
-
solara.ToggleButtonsSingle(align, values=["start", "center", "end", "stretch"])
|
|
18
|
-
solara.Select(
|
|
19
|
-
label="Gap size",
|
|
20
|
-
values=["0px", "4px", "8px", "12px", "16px", "20px", "24px"],
|
|
21
|
-
).connect(gap_size)
|
|
22
|
-
with solara.Column(gap=gap_size.value, align=align.value):
|
|
23
|
-
colors = "green red orange brown yellow pink".split()
|
|
24
|
-
for color in colors:
|
|
25
|
-
solara.Button("Solara", color=color)
|
|
26
|
-
return main
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
__doc__ += apidoc(solara.Column.f) # type: ignore
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# Columns
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
import solara
|
|
6
|
-
import solara.lab
|
|
7
|
-
from solara.website.utils import apidoc
|
|
8
|
-
|
|
9
|
-
gutters = solara.reactive(True)
|
|
10
|
-
gutters_dense = solara.reactive(True)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
@solara.component
|
|
14
|
-
def Page():
|
|
15
|
-
with solara.Columns([1, 2, 1], gutters=gutters.value, gutters_dense=gutters_dense.value) as main:
|
|
16
|
-
with solara.Card("Left", margin=0):
|
|
17
|
-
solara.Checkbox(label="Gutters").connect(gutters)
|
|
18
|
-
solara.Checkbox(label="Dense gutters").connect(gutters_dense)
|
|
19
|
-
with solara.Card("Middle", margin=0):
|
|
20
|
-
solara.Markdown("This column has a relative width of 2, the columns to the left and right have a relative width of 1.")
|
|
21
|
-
with solara.Card("Right", margin=0):
|
|
22
|
-
solara.Markdown("This column has a relative width of 1, the columns to the left has a relative width of 2.")
|
|
23
|
-
return main
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
__doc__ += apidoc(solara.Columns.f) # type: ignore
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# ColumnsResponsive
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
import solara
|
|
6
|
-
import solara.lab
|
|
7
|
-
from solara.website.utils import apidoc
|
|
8
|
-
|
|
9
|
-
title = "ColumnsResponsive"
|
|
10
|
-
|
|
11
|
-
gutters = solara.reactive(True)
|
|
12
|
-
gutters_dense = solara.reactive(True)
|
|
13
|
-
wrap = solara.reactive(True)
|
|
14
|
-
|
|
15
|
-
children_count = solara.reactive(12)
|
|
16
|
-
columns_default = solara.reactive(6)
|
|
17
|
-
columns_small = solara.reactive(4)
|
|
18
|
-
columns_medium = solara.reactive(3)
|
|
19
|
-
columns_large = solara.reactive(2)
|
|
20
|
-
columns_xlarge = solara.reactive(1)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
@solara.component
|
|
24
|
-
def Page():
|
|
25
|
-
with solara.VBox() as main:
|
|
26
|
-
with solara.Card("Controls"):
|
|
27
|
-
solara.Checkbox(label="Wrap").connect(wrap)
|
|
28
|
-
solara.Checkbox(label="Gutters").connect(gutters)
|
|
29
|
-
solara.Checkbox(label="Dense gutters").connect(gutters_dense)
|
|
30
|
-
solara.IntSlider("Children", max=20).connect(children_count)
|
|
31
|
-
|
|
32
|
-
solara.Select("columns default", values=[1, 2, 3, 4, 6, 12]).connect(columns_default) # type: ignore
|
|
33
|
-
solara.Select("columns small", values=[1, 2, 3, 4, 6, 12]).connect(columns_small) # type: ignore
|
|
34
|
-
solara.Select("columns medium", values=[1, 2, 3, 4, 6, 12]).connect(columns_medium) # type: ignore
|
|
35
|
-
solara.Select("columns large", values=[1, 2, 3, 4, 6, 12]).connect(columns_large) # type: ignore
|
|
36
|
-
solara.Select("columns xlarge", values=[1, 2, 3, 4, 6, 12]).connect(columns_xlarge) # type: ignore
|
|
37
|
-
# taken from https://v2.vuetifyjs.com/en/styles/display/#display
|
|
38
|
-
solara.HTML(
|
|
39
|
-
"h2", unsafe_innerHTML=f"Current screensize is xsmall/default, each child is {columns_default.value} points wide", class_="ma-2 d-flex d-sm-none ma"
|
|
40
|
-
)
|
|
41
|
-
solara.HTML(
|
|
42
|
-
"h2", unsafe_innerHTML=f"Current screensize is small, each child is {columns_small.value} points wide", class_="ma-2 d-none d-sm-flex d-md-none"
|
|
43
|
-
)
|
|
44
|
-
solara.HTML(
|
|
45
|
-
"h2", unsafe_innerHTML=f"Current screensize is medium, each child is {columns_medium.value} points wide", class_="ma-2 d-none d-md-flex d-lg-none"
|
|
46
|
-
)
|
|
47
|
-
solara.HTML(
|
|
48
|
-
"h2", unsafe_innerHTML=f"Current screensize is large, each child is {columns_large.value} points wide", class_="ma-2 d-none d-lg-flex d-xl-none"
|
|
49
|
-
)
|
|
50
|
-
solara.HTML("h2", unsafe_innerHTML=f"Current screensize is xlarge, each child is {columns_xlarge.value} points wide", class_="ma-2 d-none d-xl-flex")
|
|
51
|
-
solara.Markdown("Change the screen size to see the effect of the different columns sizes.")
|
|
52
|
-
with solara.ColumnsResponsive(
|
|
53
|
-
default=columns_default.value,
|
|
54
|
-
small=columns_small.value,
|
|
55
|
-
medium=columns_medium.value,
|
|
56
|
-
large=columns_large.value,
|
|
57
|
-
xlarge=columns_xlarge.value,
|
|
58
|
-
wrap=wrap.value,
|
|
59
|
-
gutters=gutters.value,
|
|
60
|
-
gutters_dense=gutters_dense.value,
|
|
61
|
-
):
|
|
62
|
-
for i in range(children_count.value):
|
|
63
|
-
solara.Text(f"{i}")
|
|
64
|
-
return main
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
__doc__ += apidoc(solara.ColumnsResponsive.f) # type: ignore
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# GridDraggable
|
|
3
|
-
|
|
4
|
-
Child components are laid out on a grid, which can be dragged and resized.
|
|
5
|
-
"""
|
|
6
|
-
import pprint
|
|
7
|
-
import textwrap
|
|
8
|
-
|
|
9
|
-
import solara
|
|
10
|
-
|
|
11
|
-
from ..common import ColorCard
|
|
12
|
-
|
|
13
|
-
title = "GridDraggable"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
@solara.component
|
|
17
|
-
def Page():
|
|
18
|
-
grid_layout_initial = [
|
|
19
|
-
{"h": 5, "i": "0", "moved": False, "w": 3, "x": 0, "y": 0},
|
|
20
|
-
{"h": 5, "i": "1", "moved": False, "w": 5, "x": 3, "y": 0},
|
|
21
|
-
{"h": 11, "i": "2", "moved": False, "w": 4, "x": 8, "y": 0},
|
|
22
|
-
{"h": 12, "i": "3", "moved": False, "w": 5, "x": 0, "y": 5},
|
|
23
|
-
{"h": 6, "i": "4", "moved": False, "w": 3, "x": 5, "y": 5},
|
|
24
|
-
{"h": 6, "i": "5", "moved": False, "w": 7, "x": 5, "y": 11},
|
|
25
|
-
]
|
|
26
|
-
|
|
27
|
-
colors = "green red orange brown yellow pink".split()
|
|
28
|
-
|
|
29
|
-
# we need to store the state of the grid_layout ourselves, otherwise it will 'reset'
|
|
30
|
-
# each time we change resizable or draggable
|
|
31
|
-
grid_layout, set_grid_layout = solara.use_state(grid_layout_initial)
|
|
32
|
-
|
|
33
|
-
# some placeholders
|
|
34
|
-
items = [ColorCard(title=f"Child {i}", color=colors[i]) for i in range(len(grid_layout))]
|
|
35
|
-
with solara.VBox() as main:
|
|
36
|
-
resizable = solara.ui_checkbox("Allow resizing", value=True)
|
|
37
|
-
draggable = solara.ui_checkbox("Allow dragging", value=True)
|
|
38
|
-
|
|
39
|
-
def reset_layout():
|
|
40
|
-
set_grid_layout(grid_layout_initial)
|
|
41
|
-
|
|
42
|
-
solara.Button("Reset to initial layout", on_click=reset_layout)
|
|
43
|
-
|
|
44
|
-
solara.GridDraggable(items=items, grid_layout=grid_layout, resizable=resizable, draggable=draggable, on_grid_layout=set_grid_layout)
|
|
45
|
-
|
|
46
|
-
# some string kung fu to make this print nicely
|
|
47
|
-
grid_layout_formatted = pprint.pformat(grid_layout, indent=4)
|
|
48
|
-
grid_layout_formatted = textwrap.indent(grid_layout_formatted, " " * len("grid_layout = "))
|
|
49
|
-
grid_layout_formatted = grid_layout_formatted[len("grid_layout = ") :]
|
|
50
|
-
solara.Markdown(
|
|
51
|
-
f"""
|
|
52
|
-
# Resulting layout
|
|
53
|
-
|
|
54
|
-
This layout can be copy pasted to put in your code as an initial layout:
|
|
55
|
-
|
|
56
|
-
```python
|
|
57
|
-
grid_layout = {grid_layout_formatted}
|
|
58
|
-
```
|
|
59
|
-
"""
|
|
60
|
-
)
|
|
61
|
-
return main
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# GridFixed
|
|
3
|
-
|
|
4
|
-
Lays out children in a grid with a fixed number of columns.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
import solara
|
|
8
|
-
|
|
9
|
-
from ..common import ColorCard
|
|
10
|
-
|
|
11
|
-
title = "GridFixed"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
@solara.component
|
|
15
|
-
def Page():
|
|
16
|
-
with solara.VBox() as main:
|
|
17
|
-
colors = "green red orange brown yellow pink".split()
|
|
18
|
-
with solara.GridFixed(columns=3):
|
|
19
|
-
for color in colors:
|
|
20
|
-
ColorCard(color, color)
|
|
21
|
-
return main
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# HBox
|
|
3
|
-
Lays out children in horizontal direction.
|
|
4
|
-
"""
|
|
5
|
-
import solara
|
|
6
|
-
|
|
7
|
-
from ..common import ColorCard
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@solara.component
|
|
11
|
-
def Page():
|
|
12
|
-
with solara.VBox() as main:
|
|
13
|
-
colors = "green red orange brown yellow pink".split()
|
|
14
|
-
with solara.HBox():
|
|
15
|
-
for color in colors:
|
|
16
|
-
ColorCard(color, color)
|
|
17
|
-
return main
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# Row
|
|
3
|
-
"""
|
|
4
|
-
import solara
|
|
5
|
-
import solara.lab
|
|
6
|
-
from solara.website.utils import apidoc
|
|
7
|
-
|
|
8
|
-
gap_size = solara.reactive("12px")
|
|
9
|
-
justify = solara.reactive("space-around")
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
@solara.component
|
|
13
|
-
def Page():
|
|
14
|
-
with solara.Card("Row demo") as main:
|
|
15
|
-
with solara.Column():
|
|
16
|
-
solara.Text("Justify:")
|
|
17
|
-
solara.ToggleButtonsSingle(justify, values=["start", "center", "end", "space-around", "space-between", "space-evenly"])
|
|
18
|
-
solara.Select(
|
|
19
|
-
label="Gap size",
|
|
20
|
-
values=["0px", "4px", "8px", "12px", "16px", "20px", "24px"],
|
|
21
|
-
).connect(gap_size)
|
|
22
|
-
with solara.Row(gap=gap_size.value, justify=justify.value):
|
|
23
|
-
colors = "green red orange brown yellow pink".split()
|
|
24
|
-
for color in colors:
|
|
25
|
-
solara.Button(label="Solara", color=color)
|
|
26
|
-
return main
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
__doc__ += apidoc(solara.Row.f) # type: ignore
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# Sidebar
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
import solara
|
|
6
|
-
import solara.lab
|
|
7
|
-
from solara.website.utils import apidoc
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@solara.component
|
|
11
|
-
def Page():
|
|
12
|
-
return solara.Markdown(
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
The sidebar can only be shown in embedded mode on this page.
|
|
16
|
-
Visit the [Scatter app demo](/apps/scatter) to see an example of a full sidebar used in Soalra server.
|
|
17
|
-
|
|
18
|
-
[](/apps/scatter)
|
|
19
|
-
"""
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
__doc__ += apidoc(solara.Sidebar.f) # type: ignore
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# VBox
|
|
3
|
-
|
|
4
|
-
Lays out children in a vertical direction.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
import solara
|
|
8
|
-
|
|
9
|
-
from ..common import ColorCard
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
@solara.component
|
|
13
|
-
def Page():
|
|
14
|
-
with solara.VBox() as main:
|
|
15
|
-
colors = "green red orange brown yellow pink".split()
|
|
16
|
-
with solara.VBox():
|
|
17
|
-
for color in colors:
|
|
18
|
-
ColorCard(color, color)
|
|
19
|
-
return main
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"""# HTML
|
|
2
|
-
"""
|
|
3
|
-
|
|
4
|
-
import solara
|
|
5
|
-
from solara.website.utils import apidoc
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
@solara.component
|
|
9
|
-
def Page():
|
|
10
|
-
html = """
|
|
11
|
-
<h1>Custom html</h1>
|
|
12
|
-
<ul>
|
|
13
|
-
<li>Item 1
|
|
14
|
-
<li>Item 2
|
|
15
|
-
</ul>
|
|
16
|
-
"""
|
|
17
|
-
with solara.VBox() as main:
|
|
18
|
-
solara.HTML(tag="div", unsafe_innerHTML=html)
|
|
19
|
-
return main
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
__doc__ += apidoc(solara.HTML.f) # type: ignore
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"""# Markdown
|
|
2
|
-
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import solara
|
|
6
|
-
from solara.alias import rv
|
|
7
|
-
from solara.website.utils import apidoc
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@solara.component
|
|
11
|
-
def Page():
|
|
12
|
-
markdown_initial = """
|
|
13
|
-
# Large
|
|
14
|
-
## Smaller
|
|
15
|
-
|
|
16
|
-
## List items
|
|
17
|
-
|
|
18
|
-
* item 1
|
|
19
|
-
* item 2
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
## Code highlight support
|
|
23
|
-
```python
|
|
24
|
-
code = "formatted" and "supports highlighting"
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
## Mermaid support!
|
|
29
|
-
See [Mermaid docs](https://mermaid-js.github.io/)
|
|
30
|
-
|
|
31
|
-
```mermaid
|
|
32
|
-
graph TD;
|
|
33
|
-
A-->B;
|
|
34
|
-
A-->C;
|
|
35
|
-
B-->D;
|
|
36
|
-
C-->D;
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
""".strip()
|
|
41
|
-
|
|
42
|
-
markdown_text, set_markdown_text = solara.use_state(markdown_initial)
|
|
43
|
-
# with solara.GridFixed(columns=2) as main:
|
|
44
|
-
with solara.HBox(grow=True) as main:
|
|
45
|
-
with solara.VBox():
|
|
46
|
-
solara.Markdown("# Input text")
|
|
47
|
-
with solara.Padding(2):
|
|
48
|
-
with rv.Sheet(elevation=2):
|
|
49
|
-
rv.Textarea(v_model=markdown_text, on_v_model=set_markdown_text, rows=30)
|
|
50
|
-
with solara.VBox():
|
|
51
|
-
solara.Markdown("# Renders like")
|
|
52
|
-
with solara.Padding(2):
|
|
53
|
-
with rv.Sheet(elevation=2):
|
|
54
|
-
solara.Markdown(markdown_text)
|
|
55
|
-
|
|
56
|
-
return main
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
__doc__ += apidoc(solara.Markdown.f) # type: ignore
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"""# MarkdownEditor
|
|
2
|
-
"""
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import solara
|
|
6
|
-
from solara.alias import rv
|
|
7
|
-
from solara.website.utils import apidoc
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@solara.component
|
|
11
|
-
def Page():
|
|
12
|
-
markdown_initial = """
|
|
13
|
-
# Large heading
|
|
14
|
-
## Medium heading
|
|
15
|
-
### Small heading
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
## List items
|
|
19
|
-
|
|
20
|
-
* item 1
|
|
21
|
-
* item 2
|
|
22
|
-
|
|
23
|
-
## Numbered items
|
|
24
|
-
|
|
25
|
-
1. item 1
|
|
26
|
-
2. item 2
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
**bold** and *italic*, [GitHub link](https://github.com/widgetti/solara/)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
```
|
|
33
|
-
preformatted code
|
|
34
|
-
which respecs spaces
|
|
35
|
-
and line breaks
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
""".strip()
|
|
39
|
-
|
|
40
|
-
markdown_text, set_markdown_text = solara.use_state(markdown_initial)
|
|
41
|
-
with solara.HBox(grow=True) as main:
|
|
42
|
-
with solara.VBox():
|
|
43
|
-
with solara.Padding(2):
|
|
44
|
-
with rv.Sheet(elevation=2):
|
|
45
|
-
solara.MarkdownEditor(markdown_text, on_value=set_markdown_text)
|
|
46
|
-
with rv.Sheet(elevation=2):
|
|
47
|
-
solara.Markdown("# Raw markdown")
|
|
48
|
-
solara.Preformatted(markdown_text)
|
|
49
|
-
|
|
50
|
-
return main
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
__doc__ += apidoc(solara.MarkdownEditor.f) # type: ignore
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# SqlCode
|
|
3
|
-
"""
|
|
4
|
-
import os
|
|
5
|
-
import sqlite3
|
|
6
|
-
import threading
|
|
7
|
-
from typing import Optional, cast
|
|
8
|
-
|
|
9
|
-
import pandas as pd
|
|
10
|
-
|
|
11
|
-
try:
|
|
12
|
-
import vaex.datasets
|
|
13
|
-
except ImportError:
|
|
14
|
-
vaex = None
|
|
15
|
-
|
|
16
|
-
import solara
|
|
17
|
-
from solara.alias import rv
|
|
18
|
-
from solara.website.utils import apidoc
|
|
19
|
-
|
|
20
|
-
if vaex is not None:
|
|
21
|
-
df_iris = vaex.datasets.iris().to_pandas_df()
|
|
22
|
-
df_titanic = vaex.datasets.titanic().to_pandas_df()
|
|
23
|
-
|
|
24
|
-
def create_db():
|
|
25
|
-
conn = sqlite3.connect(filename)
|
|
26
|
-
df_iris.to_sql("iris", conn, if_exists="replace", index=False)
|
|
27
|
-
df_titanic.to_sql("titanic", conn, if_exists="replace", index=False)
|
|
28
|
-
conn.close()
|
|
29
|
-
|
|
30
|
-
filename = "solara-sql.db"
|
|
31
|
-
if not os.path.exists(filename):
|
|
32
|
-
create_db()
|
|
33
|
-
|
|
34
|
-
conn = sqlite3.connect(filename)
|
|
35
|
-
conn.row_factory = sqlite3.Row
|
|
36
|
-
table_names = [k[0] for k in conn.execute("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name").fetchall()]
|
|
37
|
-
table_hints = {table_name: conn.execute(f"SELECT * from {table_name} LIMIT 1").fetchone().keys() for table_name in table_names}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
@solara.component
|
|
41
|
-
def Page():
|
|
42
|
-
if vaex is None:
|
|
43
|
-
return solara.Error("Vaex is not installed, run pip install vaex-core vaex-hdf5")
|
|
44
|
-
query, set_query = solara.use_state("SELECT * from titanic")
|
|
45
|
-
query_executed, set_query_executed = solara.use_state(cast(Optional[str], None))
|
|
46
|
-
|
|
47
|
-
def run_query(cancel: threading.Event) -> pd.DataFrame:
|
|
48
|
-
if not query_executed:
|
|
49
|
-
return
|
|
50
|
-
conn = sqlite3.connect(filename)
|
|
51
|
-
cursor = conn.cursor()
|
|
52
|
-
cursor.execute(query_executed)
|
|
53
|
-
|
|
54
|
-
df = pd.DataFrame(cursor.fetchall(), columns=[k[0] for k in cursor.description])
|
|
55
|
-
return df
|
|
56
|
-
|
|
57
|
-
result: solara.Result[pd.DataFrame] = solara.use_thread(run_query, dependencies=[query_executed])
|
|
58
|
-
with solara.VBox() as main:
|
|
59
|
-
solara.SqlCode(query=query, tables=table_hints, on_query=set_query)
|
|
60
|
-
enable_execute = (query != query_executed) or result.error is not None
|
|
61
|
-
|
|
62
|
-
def execute():
|
|
63
|
-
set_query_executed(query)
|
|
64
|
-
if query == query_executed and result.error:
|
|
65
|
-
result.retry() # type: ignore
|
|
66
|
-
|
|
67
|
-
solara.Button("Execute", on_click=execute, disabled=not enable_execute)
|
|
68
|
-
if result.error:
|
|
69
|
-
solara.Error(f"Ooops {result.error}")
|
|
70
|
-
elif not query:
|
|
71
|
-
solara.Info("No query")
|
|
72
|
-
|
|
73
|
-
elif result.value is not None:
|
|
74
|
-
solara.Markdown(f"Result for query: `{query_executed}`")
|
|
75
|
-
df = result.value
|
|
76
|
-
solara.DataFrame(df)
|
|
77
|
-
elif query_executed is not None:
|
|
78
|
-
with solara.Div():
|
|
79
|
-
solara.Text("Loading data...")
|
|
80
|
-
rv.ProgressCircular(indeterminate=True, class_="solara-progress")
|
|
81
|
-
return main
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
__doc__ += apidoc(solara.SqlCode.f) # type: ignore
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"""# Head
|
|
2
|
-
"""
|
|
3
|
-
|
|
4
|
-
import solara
|
|
5
|
-
from solara.website.utils import apidoc
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
@solara.component
|
|
9
|
-
def Page():
|
|
10
|
-
with solara.VBox() as main:
|
|
11
|
-
solara.Info("A Head component does not render somesome visual on the page, but it is used to avoid duplicate tags, such as titles.")
|
|
12
|
-
with solara.Head():
|
|
13
|
-
# title should always occur inside a Head component
|
|
14
|
-
solara.Title("Custom title")
|
|
15
|
-
|
|
16
|
-
return main
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
__doc__ += apidoc(solara.Head.f) # type: ignore
|