streamlit-nightly 1.43.2.dev20250307__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.
- streamlit/__init__.py +306 -0
- streamlit/__main__.py +20 -0
- streamlit/auth_util.py +218 -0
- streamlit/cli_util.py +105 -0
- streamlit/column_config.py +56 -0
- streamlit/commands/__init__.py +13 -0
- streamlit/commands/echo.py +126 -0
- streamlit/commands/execution_control.py +238 -0
- streamlit/commands/experimental_query_params.py +169 -0
- streamlit/commands/logo.py +189 -0
- streamlit/commands/navigation.py +385 -0
- streamlit/commands/page_config.py +311 -0
- streamlit/components/__init__.py +13 -0
- streamlit/components/lib/__init__.py +13 -0
- streamlit/components/lib/local_component_registry.py +84 -0
- streamlit/components/types/__init__.py +13 -0
- streamlit/components/types/base_component_registry.py +99 -0
- streamlit/components/types/base_custom_component.py +150 -0
- streamlit/components/v1/__init__.py +31 -0
- streamlit/components/v1/component_arrow.py +141 -0
- streamlit/components/v1/component_registry.py +130 -0
- streamlit/components/v1/components.py +38 -0
- streamlit/components/v1/custom_component.py +243 -0
- streamlit/config.py +1513 -0
- streamlit/config_option.py +311 -0
- streamlit/config_util.py +177 -0
- streamlit/connections/__init__.py +28 -0
- streamlit/connections/base_connection.py +174 -0
- streamlit/connections/snowflake_connection.py +562 -0
- streamlit/connections/snowpark_connection.py +213 -0
- streamlit/connections/sql_connection.py +425 -0
- streamlit/connections/util.py +97 -0
- streamlit/cursor.py +210 -0
- streamlit/dataframe_util.py +1416 -0
- streamlit/delta_generator.py +602 -0
- streamlit/delta_generator_singletons.py +204 -0
- streamlit/deprecation_util.py +209 -0
- streamlit/development.py +21 -0
- streamlit/elements/__init__.py +13 -0
- streamlit/elements/alert.py +234 -0
- streamlit/elements/arrow.py +962 -0
- streamlit/elements/balloons.py +47 -0
- streamlit/elements/bokeh_chart.py +133 -0
- streamlit/elements/code.py +114 -0
- streamlit/elements/deck_gl_json_chart.py +546 -0
- streamlit/elements/dialog_decorator.py +267 -0
- streamlit/elements/doc_string.py +558 -0
- streamlit/elements/empty.py +130 -0
- streamlit/elements/exception.py +331 -0
- streamlit/elements/form.py +354 -0
- streamlit/elements/graphviz_chart.py +150 -0
- streamlit/elements/heading.py +302 -0
- streamlit/elements/html.py +105 -0
- streamlit/elements/iframe.py +191 -0
- streamlit/elements/image.py +196 -0
- streamlit/elements/json.py +139 -0
- streamlit/elements/layouts.py +879 -0
- streamlit/elements/lib/__init__.py +13 -0
- streamlit/elements/lib/built_in_chart_utils.py +1157 -0
- streamlit/elements/lib/color_util.py +263 -0
- streamlit/elements/lib/column_config_utils.py +542 -0
- streamlit/elements/lib/column_types.py +2188 -0
- streamlit/elements/lib/dialog.py +147 -0
- streamlit/elements/lib/dicttools.py +154 -0
- streamlit/elements/lib/event_utils.py +37 -0
- streamlit/elements/lib/file_uploader_utils.py +66 -0
- streamlit/elements/lib/form_utils.py +77 -0
- streamlit/elements/lib/image_utils.py +441 -0
- streamlit/elements/lib/js_number.py +105 -0
- streamlit/elements/lib/mutable_status_container.py +183 -0
- streamlit/elements/lib/options_selector_utils.py +250 -0
- streamlit/elements/lib/pandas_styler_utils.py +274 -0
- streamlit/elements/lib/policies.py +194 -0
- streamlit/elements/lib/streamlit_plotly_theme.py +207 -0
- streamlit/elements/lib/subtitle_utils.py +176 -0
- streamlit/elements/lib/utils.py +250 -0
- streamlit/elements/map.py +508 -0
- streamlit/elements/markdown.py +277 -0
- streamlit/elements/media.py +793 -0
- streamlit/elements/metric.py +301 -0
- streamlit/elements/plotly_chart.py +546 -0
- streamlit/elements/progress.py +156 -0
- streamlit/elements/pyplot.py +194 -0
- streamlit/elements/snow.py +47 -0
- streamlit/elements/spinner.py +113 -0
- streamlit/elements/text.py +76 -0
- streamlit/elements/toast.py +98 -0
- streamlit/elements/vega_charts.py +1984 -0
- streamlit/elements/widgets/__init__.py +13 -0
- streamlit/elements/widgets/audio_input.py +310 -0
- streamlit/elements/widgets/button.py +1123 -0
- streamlit/elements/widgets/button_group.py +1008 -0
- streamlit/elements/widgets/camera_input.py +263 -0
- streamlit/elements/widgets/chat.py +647 -0
- streamlit/elements/widgets/checkbox.py +352 -0
- streamlit/elements/widgets/color_picker.py +265 -0
- streamlit/elements/widgets/data_editor.py +983 -0
- streamlit/elements/widgets/file_uploader.py +486 -0
- streamlit/elements/widgets/multiselect.py +338 -0
- streamlit/elements/widgets/number_input.py +545 -0
- streamlit/elements/widgets/radio.py +407 -0
- streamlit/elements/widgets/select_slider.py +437 -0
- streamlit/elements/widgets/selectbox.py +366 -0
- streamlit/elements/widgets/slider.py +880 -0
- streamlit/elements/widgets/text_widgets.py +628 -0
- streamlit/elements/widgets/time_widgets.py +970 -0
- streamlit/elements/write.py +574 -0
- streamlit/emojis.py +34 -0
- streamlit/env_util.py +61 -0
- streamlit/error_util.py +105 -0
- streamlit/errors.py +452 -0
- streamlit/external/__init__.py +13 -0
- streamlit/external/langchain/__init__.py +23 -0
- streamlit/external/langchain/streamlit_callback_handler.py +406 -0
- streamlit/file_util.py +247 -0
- streamlit/git_util.py +173 -0
- streamlit/hello/__init__.py +13 -0
- streamlit/hello/animation_demo.py +82 -0
- streamlit/hello/dataframe_demo.py +71 -0
- streamlit/hello/hello.py +37 -0
- streamlit/hello/mapping_demo.py +114 -0
- streamlit/hello/plotting_demo.py +55 -0
- streamlit/hello/streamlit_app.py +55 -0
- streamlit/hello/utils.py +28 -0
- streamlit/logger.py +130 -0
- streamlit/material_icon_names.py +25 -0
- streamlit/navigation/__init__.py +13 -0
- streamlit/navigation/page.py +302 -0
- streamlit/net_util.py +125 -0
- streamlit/platform.py +33 -0
- streamlit/proto/Alert_pb2.py +29 -0
- streamlit/proto/Alert_pb2.pyi +90 -0
- streamlit/proto/AppPage_pb2.py +27 -0
- streamlit/proto/AppPage_pb2.pyi +64 -0
- streamlit/proto/ArrowNamedDataSet_pb2.py +28 -0
- streamlit/proto/ArrowNamedDataSet_pb2.pyi +57 -0
- streamlit/proto/ArrowVegaLiteChart_pb2.py +29 -0
- streamlit/proto/ArrowVegaLiteChart_pb2.pyi +84 -0
- streamlit/proto/Arrow_pb2.py +33 -0
- streamlit/proto/Arrow_pb2.pyi +188 -0
- streamlit/proto/AudioInput_pb2.py +28 -0
- streamlit/proto/AudioInput_pb2.pyi +58 -0
- streamlit/proto/Audio_pb2.py +27 -0
- streamlit/proto/Audio_pb2.pyi +58 -0
- streamlit/proto/AuthRedirect_pb2.py +27 -0
- streamlit/proto/AuthRedirect_pb2.pyi +41 -0
- streamlit/proto/AutoRerun_pb2.py +27 -0
- streamlit/proto/AutoRerun_pb2.pyi +45 -0
- streamlit/proto/BackMsg_pb2.py +29 -0
- streamlit/proto/BackMsg_pb2.pyi +105 -0
- streamlit/proto/Balloons_pb2.py +27 -0
- streamlit/proto/Balloons_pb2.pyi +43 -0
- streamlit/proto/Block_pb2.py +53 -0
- streamlit/proto/Block_pb2.pyi +322 -0
- streamlit/proto/BokehChart_pb2.py +27 -0
- streamlit/proto/BokehChart_pb2.pyi +49 -0
- streamlit/proto/ButtonGroup_pb2.py +36 -0
- streamlit/proto/ButtonGroup_pb2.pyi +169 -0
- streamlit/proto/Button_pb2.py +27 -0
- streamlit/proto/Button_pb2.pyi +71 -0
- streamlit/proto/CameraInput_pb2.py +28 -0
- streamlit/proto/CameraInput_pb2.pyi +58 -0
- streamlit/proto/ChatInput_pb2.py +31 -0
- streamlit/proto/ChatInput_pb2.pyi +111 -0
- streamlit/proto/Checkbox_pb2.py +30 -0
- streamlit/proto/Checkbox_pb2.pyi +90 -0
- streamlit/proto/ClientState_pb2.py +30 -0
- streamlit/proto/ClientState_pb2.pyi +90 -0
- streamlit/proto/Code_pb2.py +27 -0
- streamlit/proto/Code_pb2.pyi +55 -0
- streamlit/proto/ColorPicker_pb2.py +28 -0
- streamlit/proto/ColorPicker_pb2.pyi +67 -0
- streamlit/proto/Common_pb2.py +51 -0
- streamlit/proto/Common_pb2.pyi +293 -0
- streamlit/proto/Components_pb2.py +35 -0
- streamlit/proto/Components_pb2.pyi +172 -0
- streamlit/proto/DataFrame_pb2.py +56 -0
- streamlit/proto/DataFrame_pb2.pyi +397 -0
- streamlit/proto/DateInput_pb2.py +28 -0
- streamlit/proto/DateInput_pb2.pyi +83 -0
- streamlit/proto/DeckGlJsonChart_pb2.py +29 -0
- streamlit/proto/DeckGlJsonChart_pb2.pyi +102 -0
- streamlit/proto/Delta_pb2.py +31 -0
- streamlit/proto/Delta_pb2.pyi +74 -0
- streamlit/proto/DocString_pb2.py +29 -0
- streamlit/proto/DocString_pb2.pyi +93 -0
- streamlit/proto/DownloadButton_pb2.py +27 -0
- streamlit/proto/DownloadButton_pb2.pyi +70 -0
- streamlit/proto/Element_pb2.py +78 -0
- streamlit/proto/Element_pb2.pyi +312 -0
- streamlit/proto/Empty_pb2.py +27 -0
- streamlit/proto/Empty_pb2.pyi +36 -0
- streamlit/proto/Exception_pb2.py +27 -0
- streamlit/proto/Exception_pb2.pyi +72 -0
- streamlit/proto/Favicon_pb2.py +27 -0
- streamlit/proto/Favicon_pb2.pyi +40 -0
- streamlit/proto/FileUploader_pb2.py +28 -0
- streamlit/proto/FileUploader_pb2.pyi +78 -0
- streamlit/proto/ForwardMsg_pb2.py +53 -0
- streamlit/proto/ForwardMsg_pb2.pyi +293 -0
- streamlit/proto/GitInfo_pb2.py +29 -0
- streamlit/proto/GitInfo_pb2.pyi +83 -0
- streamlit/proto/GraphVizChart_pb2.py +27 -0
- streamlit/proto/GraphVizChart_pb2.pyi +53 -0
- streamlit/proto/Heading_pb2.py +27 -0
- streamlit/proto/Heading_pb2.pyi +56 -0
- streamlit/proto/Html_pb2.py +27 -0
- streamlit/proto/Html_pb2.pyi +42 -0
- streamlit/proto/IFrame_pb2.py +27 -0
- streamlit/proto/IFrame_pb2.pyi +59 -0
- streamlit/proto/Image_pb2.py +29 -0
- streamlit/proto/Image_pb2.pyi +84 -0
- streamlit/proto/Json_pb2.py +27 -0
- streamlit/proto/Json_pb2.pyi +53 -0
- streamlit/proto/LabelVisibilityMessage_pb2.py +29 -0
- streamlit/proto/LabelVisibilityMessage_pb2.pyi +68 -0
- streamlit/proto/LinkButton_pb2.py +27 -0
- streamlit/proto/LinkButton_pb2.pyi +58 -0
- streamlit/proto/Logo_pb2.py +27 -0
- streamlit/proto/Logo_pb2.pyi +51 -0
- streamlit/proto/Markdown_pb2.py +29 -0
- streamlit/proto/Markdown_pb2.pyi +86 -0
- streamlit/proto/Metric_pb2.py +32 -0
- streamlit/proto/Metric_pb2.pyi +101 -0
- streamlit/proto/MetricsEvent_pb2.py +30 -0
- streamlit/proto/MetricsEvent_pb2.pyi +200 -0
- streamlit/proto/MultiSelect_pb2.py +28 -0
- streamlit/proto/MultiSelect_pb2.pyi +81 -0
- streamlit/proto/NamedDataSet_pb2.py +28 -0
- streamlit/proto/NamedDataSet_pb2.pyi +59 -0
- streamlit/proto/Navigation_pb2.py +30 -0
- streamlit/proto/Navigation_pb2.pyi +84 -0
- streamlit/proto/NewSession_pb2.py +51 -0
- streamlit/proto/NewSession_pb2.pyi +481 -0
- streamlit/proto/NumberInput_pb2.py +30 -0
- streamlit/proto/NumberInput_pb2.pyi +121 -0
- streamlit/proto/PageConfig_pb2.py +33 -0
- streamlit/proto/PageConfig_pb2.pyi +126 -0
- streamlit/proto/PageInfo_pb2.py +27 -0
- streamlit/proto/PageInfo_pb2.pyi +43 -0
- streamlit/proto/PageLink_pb2.py +27 -0
- streamlit/proto/PageLink_pb2.pyi +63 -0
- streamlit/proto/PageNotFound_pb2.py +27 -0
- streamlit/proto/PageNotFound_pb2.pyi +42 -0
- streamlit/proto/PageProfile_pb2.py +31 -0
- streamlit/proto/PageProfile_pb2.pyi +127 -0
- streamlit/proto/PagesChanged_pb2.py +28 -0
- streamlit/proto/PagesChanged_pb2.pyi +48 -0
- streamlit/proto/ParentMessage_pb2.py +27 -0
- streamlit/proto/ParentMessage_pb2.pyi +46 -0
- streamlit/proto/PlotlyChart_pb2.py +31 -0
- streamlit/proto/PlotlyChart_pb2.pyi +131 -0
- streamlit/proto/Progress_pb2.py +27 -0
- streamlit/proto/Progress_pb2.pyi +43 -0
- streamlit/proto/Radio_pb2.py +28 -0
- streamlit/proto/Radio_pb2.pyi +84 -0
- streamlit/proto/RootContainer_pb2.py +27 -0
- streamlit/proto/RootContainer_pb2.pyi +56 -0
- streamlit/proto/Selectbox_pb2.py +28 -0
- streamlit/proto/Selectbox_pb2.pyi +80 -0
- streamlit/proto/SessionEvent_pb2.py +28 -0
- streamlit/proto/SessionEvent_pb2.pyi +62 -0
- streamlit/proto/SessionStatus_pb2.py +27 -0
- streamlit/proto/SessionStatus_pb2.pyi +57 -0
- streamlit/proto/Skeleton_pb2.py +29 -0
- streamlit/proto/Skeleton_pb2.pyi +71 -0
- streamlit/proto/Slider_pb2.py +32 -0
- streamlit/proto/Slider_pb2.pyi +142 -0
- streamlit/proto/Snow_pb2.py +27 -0
- streamlit/proto/Snow_pb2.pyi +43 -0
- streamlit/proto/Spinner_pb2.py +27 -0
- streamlit/proto/Spinner_pb2.pyi +49 -0
- streamlit/proto/TextArea_pb2.py +28 -0
- streamlit/proto/TextArea_pb2.pyi +80 -0
- streamlit/proto/TextInput_pb2.py +30 -0
- streamlit/proto/TextInput_pb2.pyi +107 -0
- streamlit/proto/Text_pb2.py +27 -0
- streamlit/proto/Text_pb2.pyi +46 -0
- streamlit/proto/TimeInput_pb2.py +28 -0
- streamlit/proto/TimeInput_pb2.pyi +74 -0
- streamlit/proto/Toast_pb2.py +27 -0
- streamlit/proto/Toast_pb2.pyi +45 -0
- streamlit/proto/VegaLiteChart_pb2.py +29 -0
- streamlit/proto/VegaLiteChart_pb2.pyi +71 -0
- streamlit/proto/Video_pb2.py +31 -0
- streamlit/proto/Video_pb2.pyi +117 -0
- streamlit/proto/WidgetStates_pb2.py +31 -0
- streamlit/proto/WidgetStates_pb2.pyi +126 -0
- streamlit/proto/__init__.py +15 -0
- streamlit/proto/openmetrics_data_model_pb2.py +60 -0
- streamlit/proto/openmetrics_data_model_pb2.pyi +522 -0
- streamlit/py.typed +0 -0
- streamlit/runtime/__init__.py +50 -0
- streamlit/runtime/app_session.py +982 -0
- streamlit/runtime/caching/__init__.py +98 -0
- streamlit/runtime/caching/cache_data_api.py +665 -0
- streamlit/runtime/caching/cache_errors.py +142 -0
- streamlit/runtime/caching/cache_resource_api.py +527 -0
- streamlit/runtime/caching/cache_type.py +33 -0
- streamlit/runtime/caching/cache_utils.py +523 -0
- streamlit/runtime/caching/cached_message_replay.py +290 -0
- streamlit/runtime/caching/hashing.py +637 -0
- streamlit/runtime/caching/legacy_cache_api.py +169 -0
- streamlit/runtime/caching/storage/__init__.py +29 -0
- streamlit/runtime/caching/storage/cache_storage_protocol.py +239 -0
- streamlit/runtime/caching/storage/dummy_cache_storage.py +60 -0
- streamlit/runtime/caching/storage/in_memory_cache_storage_wrapper.py +145 -0
- streamlit/runtime/caching/storage/local_disk_cache_storage.py +223 -0
- streamlit/runtime/connection_factory.py +436 -0
- streamlit/runtime/context.py +280 -0
- streamlit/runtime/credentials.py +364 -0
- streamlit/runtime/forward_msg_cache.py +296 -0
- streamlit/runtime/forward_msg_queue.py +240 -0
- streamlit/runtime/fragment.py +477 -0
- streamlit/runtime/media_file_manager.py +234 -0
- streamlit/runtime/media_file_storage.py +143 -0
- streamlit/runtime/memory_media_file_storage.py +181 -0
- streamlit/runtime/memory_session_storage.py +77 -0
- streamlit/runtime/memory_uploaded_file_manager.py +138 -0
- streamlit/runtime/metrics_util.py +486 -0
- streamlit/runtime/pages_manager.py +165 -0
- streamlit/runtime/runtime.py +792 -0
- streamlit/runtime/runtime_util.py +106 -0
- streamlit/runtime/script_data.py +46 -0
- streamlit/runtime/scriptrunner/__init__.py +38 -0
- streamlit/runtime/scriptrunner/exec_code.py +159 -0
- streamlit/runtime/scriptrunner/magic.py +273 -0
- streamlit/runtime/scriptrunner/magic_funcs.py +32 -0
- streamlit/runtime/scriptrunner/script_cache.py +89 -0
- streamlit/runtime/scriptrunner/script_runner.py +756 -0
- streamlit/runtime/scriptrunner_utils/__init__.py +19 -0
- streamlit/runtime/scriptrunner_utils/exceptions.py +48 -0
- streamlit/runtime/scriptrunner_utils/script_requests.py +307 -0
- streamlit/runtime/scriptrunner_utils/script_run_context.py +287 -0
- streamlit/runtime/secrets.py +534 -0
- streamlit/runtime/session_manager.py +394 -0
- streamlit/runtime/state/__init__.py +41 -0
- streamlit/runtime/state/common.py +191 -0
- streamlit/runtime/state/query_params.py +205 -0
- streamlit/runtime/state/query_params_proxy.py +218 -0
- streamlit/runtime/state/safe_session_state.py +138 -0
- streamlit/runtime/state/session_state.py +772 -0
- streamlit/runtime/state/session_state_proxy.py +153 -0
- streamlit/runtime/state/widgets.py +135 -0
- streamlit/runtime/stats.py +109 -0
- streamlit/runtime/uploaded_file_manager.py +148 -0
- streamlit/runtime/websocket_session_manager.py +167 -0
- streamlit/source_util.py +98 -0
- streamlit/static/favicon.png +0 -0
- streamlit/static/index.html +61 -0
- streamlit/static/static/css/index.Bmkmz40k.css +1 -0
- streamlit/static/static/css/index.DpJG_94W.css +1 -0
- streamlit/static/static/css/index.DzuxGC_t.css +1 -0
- streamlit/static/static/js/FileDownload.esm.Bp9m5jrx.js +1 -0
- streamlit/static/static/js/FileHelper.D_3pbilj.js +5 -0
- streamlit/static/static/js/FormClearHelper.Ct2rwLXo.js +1 -0
- streamlit/static/static/js/Hooks.BKdzj5MJ.js +1 -0
- streamlit/static/static/js/InputInstructions.DB3QGNJP.js +1 -0
- streamlit/static/static/js/ProgressBar.D40A5xc2.js +2 -0
- streamlit/static/static/js/RenderInPortalIfExists.DLUCooTN.js +1 -0
- streamlit/static/static/js/Toolbar.BiGGIQun.js +1 -0
- streamlit/static/static/js/UploadFileInfo.C-jY39rj.js +1 -0
- streamlit/static/static/js/base-input.CQBQT24M.js +4 -0
- streamlit/static/static/js/checkbox.Buj8gd_M.js +9 -0
- streamlit/static/static/js/createDownloadLinkElement.DZMwyjvU.js +1 -0
- streamlit/static/static/js/createSuper.CesK3I23.js +1 -0
- streamlit/static/static/js/data-grid-overlay-editor.B69OOFM4.js +1 -0
- streamlit/static/static/js/downloader.BZQhlBNT.js +1 -0
- streamlit/static/static/js/es6.D9Zhqujy.js +2 -0
- streamlit/static/static/js/iframeResizer.contentWindow.CAzcBpCC.js +1 -0
- streamlit/static/static/js/index.08vcOOvb.js +1 -0
- streamlit/static/static/js/index.0uqKfJUS.js +1 -0
- streamlit/static/static/js/index.B02M5u69.js +203 -0
- streamlit/static/static/js/index.B7mcZKMx.js +1 -0
- streamlit/static/static/js/index.BAQDHFA_.js +1 -0
- streamlit/static/static/js/index.BI60cMVr.js +2 -0
- streamlit/static/static/js/index.BLug2inK.js +1 -0
- streamlit/static/static/js/index.BM6TMY8g.js +2 -0
- streamlit/static/static/js/index.BZ9p1t7G.js +1 -0
- streamlit/static/static/js/index.BZqa87a1.js +2 -0
- streamlit/static/static/js/index.BcsRUzZZ.js +1 -0
- streamlit/static/static/js/index.BgVMiY_P.js +197 -0
- streamlit/static/static/js/index.BtuGy7By.js +6 -0
- streamlit/static/static/js/index.BuDuBmrs.js +1 -0
- streamlit/static/static/js/index.BvXU2oKV.js +1 -0
- streamlit/static/static/js/index.BxcwPacT.js +73 -0
- streamlit/static/static/js/index.CWX8KB81.js +1 -0
- streamlit/static/static/js/index.CXzZTo_q.js +1 -0
- streamlit/static/static/js/index.CcRWp_KL.js +1 -0
- streamlit/static/static/js/index.Cd-_xe55.js +3 -0
- streamlit/static/static/js/index.CdG2PXln.js +4537 -0
- streamlit/static/static/js/index.CjXvXmcP.js +1 -0
- streamlit/static/static/js/index.D1HZENZx.js +776 -0
- streamlit/static/static/js/index.D21Efo64.js +1617 -0
- streamlit/static/static/js/index.D9WgGVBx.js +7 -0
- streamlit/static/static/js/index.DEcsHtvb.js +12 -0
- streamlit/static/static/js/index.DFeMfr_K.js +1 -0
- streamlit/static/static/js/index.DHFBoItz.js +1 -0
- streamlit/static/static/js/index.D_PrBKnJ.js +3 -0
- streamlit/static/static/js/index.DmuRkekN.js +3855 -0
- streamlit/static/static/js/index.Do6eY8sf.js +1 -0
- streamlit/static/static/js/index.Dz3lP2P-.js +1 -0
- streamlit/static/static/js/index.Dz_UqF-s.js +1 -0
- streamlit/static/static/js/index.GkSUsPhJ.js +1 -0
- streamlit/static/static/js/index.H1U1IC_d.js +3 -0
- streamlit/static/static/js/index.g6p_4DPr.js +1 -0
- streamlit/static/static/js/index.g9x_GKss.js +1 -0
- streamlit/static/static/js/index.zo9jm08y.js +1 -0
- streamlit/static/static/js/input.DnaFglHq.js +2 -0
- streamlit/static/static/js/inputUtils.CQWz5UKz.js +1 -0
- streamlit/static/static/js/memory.Crb9x4-F.js +1 -0
- streamlit/static/static/js/mergeWith.ouAz0sK3.js +1 -0
- streamlit/static/static/js/number-overlay-editor._UaN-O48.js +9 -0
- streamlit/static/static/js/possibleConstructorReturn.CtGjGFHz.js +1 -0
- streamlit/static/static/js/sandbox.CBybYOhV.js +1 -0
- streamlit/static/static/js/sprintf.D7DtBTRn.js +1 -0
- streamlit/static/static/js/textarea.Cb_uJt5U.js +2 -0
- streamlit/static/static/js/threshold.DjX0wlsa.js +1 -0
- streamlit/static/static/js/timepicker.DKT7pfoF.js +4 -0
- streamlit/static/static/js/timer.CAwTRJ_g.js +1 -0
- streamlit/static/static/js/toConsumableArray.05Ikp13-.js +3 -0
- streamlit/static/static/js/uniqueId.D2FMWUEI.js +1 -0
- streamlit/static/static/js/useBasicWidgetState.urnZLANY.js +1 -0
- streamlit/static/static/js/useOnInputChange.BOKIIdJ1.js +1 -0
- streamlit/static/static/js/value.CgPGBV_l.js +1 -0
- streamlit/static/static/js/withFullScreenWrapper.C_N8J0Xx.js +1 -0
- streamlit/static/static/media/KaTeX_AMS-Regular.BQhdFMY1.woff2 +0 -0
- streamlit/static/static/media/KaTeX_AMS-Regular.DMm9YOAa.woff +0 -0
- streamlit/static/static/media/KaTeX_AMS-Regular.DRggAlZN.ttf +0 -0
- streamlit/static/static/media/KaTeX_Caligraphic-Bold.ATXxdsX0.ttf +0 -0
- streamlit/static/static/media/KaTeX_Caligraphic-Bold.BEiXGLvX.woff +0 -0
- streamlit/static/static/media/KaTeX_Caligraphic-Bold.Dq_IR9rO.woff2 +0 -0
- streamlit/static/static/media/KaTeX_Caligraphic-Regular.CTRA-rTL.woff +0 -0
- streamlit/static/static/media/KaTeX_Caligraphic-Regular.Di6jR-x-.woff2 +0 -0
- streamlit/static/static/media/KaTeX_Caligraphic-Regular.wX97UBjC.ttf +0 -0
- streamlit/static/static/media/KaTeX_Fraktur-Bold.BdnERNNW.ttf +0 -0
- streamlit/static/static/media/KaTeX_Fraktur-Bold.BsDP51OF.woff +0 -0
- streamlit/static/static/media/KaTeX_Fraktur-Bold.CL6g_b3V.woff2 +0 -0
- streamlit/static/static/media/KaTeX_Fraktur-Regular.CB_wures.ttf +0 -0
- streamlit/static/static/media/KaTeX_Fraktur-Regular.CTYiF6lA.woff2 +0 -0
- streamlit/static/static/media/KaTeX_Fraktur-Regular.Dxdc4cR9.woff +0 -0
- streamlit/static/static/media/KaTeX_Main-Bold.Cx986IdX.woff2 +0 -0
- streamlit/static/static/media/KaTeX_Main-Bold.Jm3AIy58.woff +0 -0
- streamlit/static/static/media/KaTeX_Main-Bold.waoOVXN0.ttf +0 -0
- streamlit/static/static/media/KaTeX_Main-BoldItalic.DxDJ3AOS.woff2 +0 -0
- streamlit/static/static/media/KaTeX_Main-BoldItalic.DzxPMmG6.ttf +0 -0
- streamlit/static/static/media/KaTeX_Main-BoldItalic.SpSLRI95.woff +0 -0
- streamlit/static/static/media/KaTeX_Main-Italic.3WenGoN9.ttf +0 -0
- streamlit/static/static/media/KaTeX_Main-Italic.BMLOBm91.woff +0 -0
- streamlit/static/static/media/KaTeX_Main-Italic.NWA7e6Wa.woff2 +0 -0
- streamlit/static/static/media/KaTeX_Main-Regular.B22Nviop.woff2 +0 -0
- streamlit/static/static/media/KaTeX_Main-Regular.Dr94JaBh.woff +0 -0
- streamlit/static/static/media/KaTeX_Main-Regular.ypZvNtVU.ttf +0 -0
- streamlit/static/static/media/KaTeX_Math-BoldItalic.B3XSjfu4.ttf +0 -0
- streamlit/static/static/media/KaTeX_Math-BoldItalic.CZnvNsCZ.woff2 +0 -0
- streamlit/static/static/media/KaTeX_Math-BoldItalic.iY-2wyZ7.woff +0 -0
- streamlit/static/static/media/KaTeX_Math-Italic.DA0__PXp.woff +0 -0
- streamlit/static/static/media/KaTeX_Math-Italic.flOr_0UB.ttf +0 -0
- streamlit/static/static/media/KaTeX_Math-Italic.t53AETM-.woff2 +0 -0
- streamlit/static/static/media/KaTeX_SansSerif-Bold.CFMepnvq.ttf +0 -0
- streamlit/static/static/media/KaTeX_SansSerif-Bold.D1sUS0GD.woff2 +0 -0
- streamlit/static/static/media/KaTeX_SansSerif-Bold.DbIhKOiC.woff +0 -0
- streamlit/static/static/media/KaTeX_SansSerif-Italic.C3H0VqGB.woff2 +0 -0
- streamlit/static/static/media/KaTeX_SansSerif-Italic.DN2j7dab.woff +0 -0
- streamlit/static/static/media/KaTeX_SansSerif-Italic.YYjJ1zSn.ttf +0 -0
- streamlit/static/static/media/KaTeX_SansSerif-Regular.BNo7hRIc.ttf +0 -0
- streamlit/static/static/media/KaTeX_SansSerif-Regular.CS6fqUqJ.woff +0 -0
- streamlit/static/static/media/KaTeX_SansSerif-Regular.DDBCnlJ7.woff2 +0 -0
- streamlit/static/static/media/KaTeX_Script-Regular.C5JkGWo-.ttf +0 -0
- streamlit/static/static/media/KaTeX_Script-Regular.D3wIWfF6.woff2 +0 -0
- streamlit/static/static/media/KaTeX_Script-Regular.D5yQViql.woff +0 -0
- streamlit/static/static/media/KaTeX_Size1-Regular.C195tn64.woff +0 -0
- streamlit/static/static/media/KaTeX_Size1-Regular.Dbsnue_I.ttf +0 -0
- streamlit/static/static/media/KaTeX_Size1-Regular.mCD8mA8B.woff2 +0 -0
- streamlit/static/static/media/KaTeX_Size2-Regular.B7gKUWhC.ttf +0 -0
- streamlit/static/static/media/KaTeX_Size2-Regular.Dy4dx90m.woff2 +0 -0
- streamlit/static/static/media/KaTeX_Size2-Regular.oD1tc_U0.woff +0 -0
- streamlit/static/static/media/KaTeX_Size3-Regular.CTq5MqoE.woff +0 -0
- streamlit/static/static/media/KaTeX_Size3-Regular.DgpXs0kz.ttf +0 -0
- streamlit/static/static/media/KaTeX_Size4-Regular.BF-4gkZK.woff +0 -0
- streamlit/static/static/media/KaTeX_Size4-Regular.DWFBv043.ttf +0 -0
- streamlit/static/static/media/KaTeX_Size4-Regular.Dl5lxZxV.woff2 +0 -0
- streamlit/static/static/media/KaTeX_Typewriter-Regular.C0xS9mPB.woff +0 -0
- streamlit/static/static/media/KaTeX_Typewriter-Regular.CO6r4hn1.woff2 +0 -0
- streamlit/static/static/media/KaTeX_Typewriter-Regular.D3Ib7_Hf.ttf +0 -0
- streamlit/static/static/media/MaterialSymbols-Rounded.DcZbplWk.woff2 +0 -0
- streamlit/static/static/media/SourceCodePro-Bold.CFEfr7-q.woff2 +0 -0
- streamlit/static/static/media/SourceCodePro-BoldItalic.C-LkFXxa.woff2 +0 -0
- streamlit/static/static/media/SourceCodePro-Italic.CxFOx7N-.woff2 +0 -0
- streamlit/static/static/media/SourceCodePro-Regular.CBOlD63d.woff2 +0 -0
- streamlit/static/static/media/SourceCodePro-SemiBold.CFHwW3Wd.woff2 +0 -0
- streamlit/static/static/media/SourceCodePro-SemiBoldItalic.Cg2yRu82.woff2 +0 -0
- streamlit/static/static/media/SourceSansPro-Bold.-6c9oR8J.woff2 +0 -0
- streamlit/static/static/media/SourceSansPro-BoldItalic.DmM_grLY.woff2 +0 -0
- streamlit/static/static/media/SourceSansPro-Italic.I1ipWe7Q.woff2 +0 -0
- streamlit/static/static/media/SourceSansPro-Regular.DZLUzqI4.woff2 +0 -0
- streamlit/static/static/media/SourceSansPro-SemiBold.sKQIyTMz.woff2 +0 -0
- streamlit/static/static/media/SourceSansPro-SemiBoldItalic.C0wP0icr.woff2 +0 -0
- streamlit/static/static/media/SourceSerifPro-Bold.8TUnKj4x.woff2 +0 -0
- streamlit/static/static/media/SourceSerifPro-BoldItalic.CBVO7Ve7.woff2 +0 -0
- streamlit/static/static/media/SourceSerifPro-Italic.DkFgL2HZ.woff2 +0 -0
- streamlit/static/static/media/SourceSerifPro-Regular.CNJNET2S.woff2 +0 -0
- streamlit/static/static/media/SourceSerifPro-SemiBold.CHyh9GC5.woff2 +0 -0
- streamlit/static/static/media/SourceSerifPro-SemiBoldItalic.CBtz8sWN.woff2 +0 -0
- streamlit/static/static/media/balloon-0.Czj7AKwE.png +0 -0
- streamlit/static/static/media/balloon-1.CNvFFrND.png +0 -0
- streamlit/static/static/media/balloon-2.DTvC6B1t.png +0 -0
- streamlit/static/static/media/balloon-3.CgSk4tbL.png +0 -0
- streamlit/static/static/media/balloon-4.mbtFrzxf.png +0 -0
- streamlit/static/static/media/balloon-5.CSwkUfRA.png +0 -0
- streamlit/static/static/media/fireworks.B4d-_KUe.gif +0 -0
- streamlit/static/static/media/flake-0.DgWaVvm5.png +0 -0
- streamlit/static/static/media/flake-1.B2r5AHMK.png +0 -0
- streamlit/static/static/media/flake-2.BnWSExPC.png +0 -0
- streamlit/static/static/media/snowflake.JU2jBHL8.svg +11 -0
- streamlit/string_util.py +203 -0
- streamlit/temporary_directory.py +56 -0
- streamlit/testing/__init__.py +13 -0
- streamlit/testing/v1/__init__.py +17 -0
- streamlit/testing/v1/app_test.py +1050 -0
- streamlit/testing/v1/element_tree.py +2083 -0
- streamlit/testing/v1/local_script_runner.py +180 -0
- streamlit/testing/v1/util.py +53 -0
- streamlit/time_util.py +75 -0
- streamlit/type_util.py +460 -0
- streamlit/url_util.py +122 -0
- streamlit/user_info.py +519 -0
- streamlit/util.py +72 -0
- streamlit/vendor/__init__.py +0 -0
- streamlit/vendor/pympler/__init__.py +0 -0
- streamlit/vendor/pympler/asizeof.py +2869 -0
- streamlit/version.py +18 -0
- streamlit/watcher/__init__.py +28 -0
- streamlit/watcher/event_based_path_watcher.py +406 -0
- streamlit/watcher/folder_black_list.py +82 -0
- streamlit/watcher/local_sources_watcher.py +233 -0
- streamlit/watcher/path_watcher.py +185 -0
- streamlit/watcher/polling_path_watcher.py +124 -0
- streamlit/watcher/util.py +207 -0
- streamlit/web/__init__.py +13 -0
- streamlit/web/bootstrap.py +353 -0
- streamlit/web/cache_storage_manager_config.py +38 -0
- streamlit/web/cli.py +369 -0
- streamlit/web/server/__init__.py +26 -0
- streamlit/web/server/app_static_file_handler.py +93 -0
- streamlit/web/server/authlib_tornado_integration.py +60 -0
- streamlit/web/server/browser_websocket_handler.py +246 -0
- streamlit/web/server/component_request_handler.py +116 -0
- streamlit/web/server/media_file_handler.py +141 -0
- streamlit/web/server/oauth_authlib_routes.py +176 -0
- streamlit/web/server/oidc_mixin.py +108 -0
- streamlit/web/server/routes.py +295 -0
- streamlit/web/server/server.py +479 -0
- streamlit/web/server/server_util.py +161 -0
- streamlit/web/server/stats_request_handler.py +95 -0
- streamlit/web/server/upload_file_request_handler.py +137 -0
- streamlit/web/server/websocket_headers.py +56 -0
- streamlit_nightly-1.43.2.dev20250307.data/scripts/streamlit.cmd +16 -0
- streamlit_nightly-1.43.2.dev20250307.dist-info/METADATA +207 -0
- streamlit_nightly-1.43.2.dev20250307.dist-info/RECORD +563 -0
- streamlit_nightly-1.43.2.dev20250307.dist-info/WHEEL +5 -0
- streamlit_nightly-1.43.2.dev20250307.dist-info/entry_points.txt +2 -0
- streamlit_nightly-1.43.2.dev20250307.dist-info/top_level.txt +1 -0
@@ -0,0 +1,311 @@
|
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
|
17
|
+
import random
|
18
|
+
from collections.abc import Mapping
|
19
|
+
from pathlib import Path
|
20
|
+
from textwrap import dedent
|
21
|
+
from typing import TYPE_CHECKING, Any, Final, Literal, Union, cast
|
22
|
+
|
23
|
+
from typing_extensions import TypeAlias
|
24
|
+
|
25
|
+
from streamlit.elements.lib.image_utils import AtomicImage, image_to_url
|
26
|
+
from streamlit.errors import (
|
27
|
+
StreamlitInvalidMenuItemKeyError,
|
28
|
+
StreamlitInvalidPageLayoutError,
|
29
|
+
StreamlitInvalidSidebarStateError,
|
30
|
+
StreamlitInvalidURLError,
|
31
|
+
)
|
32
|
+
from streamlit.proto.ForwardMsg_pb2 import ForwardMsg as ForwardProto
|
33
|
+
from streamlit.proto.PageConfig_pb2 import PageConfig as PageConfigProto
|
34
|
+
from streamlit.runtime.metrics_util import gather_metrics
|
35
|
+
from streamlit.runtime.scriptrunner_utils.script_run_context import get_script_run_ctx
|
36
|
+
from streamlit.string_util import is_emoji, validate_material_icon
|
37
|
+
from streamlit.url_util import is_url
|
38
|
+
|
39
|
+
if TYPE_CHECKING:
|
40
|
+
from typing_extensions import TypeGuard
|
41
|
+
|
42
|
+
GET_HELP_KEY: Final = "get help"
|
43
|
+
REPORT_A_BUG_KEY: Final = "report a bug"
|
44
|
+
ABOUT_KEY: Final = "about"
|
45
|
+
|
46
|
+
PageIcon: TypeAlias = Union[AtomicImage, str]
|
47
|
+
Layout: TypeAlias = Literal["centered", "wide"]
|
48
|
+
InitialSideBarState: TypeAlias = Literal["auto", "expanded", "collapsed"]
|
49
|
+
_GetHelp: TypeAlias = Literal["Get help", "Get Help", "get help"]
|
50
|
+
_ReportABug: TypeAlias = Literal["Report a bug", "report a bug"]
|
51
|
+
_About: TypeAlias = Literal["About", "about"]
|
52
|
+
MenuKey: TypeAlias = Literal[_GetHelp, _ReportABug, _About]
|
53
|
+
MenuItems: TypeAlias = Mapping[MenuKey, Union[str, None]]
|
54
|
+
|
55
|
+
# Emojis recommended by https://share.streamlit.io/rensdimmendaal/emoji-recommender/main/app/streamlit.py
|
56
|
+
# for the term "streamlit". Watch out for zero-width joiners,
|
57
|
+
# as they won't parse correctly in the list() call!
|
58
|
+
RANDOM_EMOJIS: Final = list(
|
59
|
+
"🔥™🎉🚀🌌💣✨🌙🎆🎇💥🤩🤙🌛🤘⬆💡🤪🥂⚡💨🌠🎊🍿😛🔮🤟🌃🍃🍾💫▪🌴🎈🎬🌀🎄😝☔⛽🍂💃😎🍸🎨🥳☀😍🅱🌞😻🌟😜💦💅🦄😋😉👻🍁🤤👯🌻‼🌈👌🎃💛😚🔫🙌👽🍬🌅☁🍷👭☕🌚💁👅🥰🍜😌🎥🕺❕🧡☄💕🍻✅🌸🚬🤓🍹®☺💪😙☘🤠✊🤗🍵🤞😂💯😏📻🎂💗💜🌊❣🌝😘💆🤑🌿🦋😈⛄🚿😊🌹🥴😽💋😭🖤🙆👐⚪💟☃🙈🍭💻🥀🚗🤧🍝💎💓🤝💄💖🔞⁉⏰🕊🎧☠♥🌳🏾🙉⭐💊🍳🌎🙊💸❤🔪😆🌾✈📚💀🏠✌🏃🌵🚨💂🤫🤭😗😄🍒👏🙃🖖💞😅🎅🍄🆓👉💩🔊🤷⌚👸😇🚮💏👳🏽💘💿💉👠🎼🎶🎤👗❄🔐🎵🤒🍰👓🏄🌲🎮🙂📈🚙📍😵🗣❗🌺🙄👄🚘🥺🌍🏡♦💍🌱👑👙☑👾🍩🥶📣🏼🤣☯👵🍫➡🎀😃✋🍞🙇😹🙏👼🐝⚫🎁🍪🔨🌼👆👀😳🌏📖👃🎸👧💇🔒💙😞⛅🏻🍴😼🗿🍗♠🦁✔🤖☮🐢🐎💤😀🍺😁😴📺☹😲👍🎭💚🍆🍋🔵🏁🔴🔔🧐👰☎🏆🤡🐠📲🙋📌🐬✍🔑📱💰🐱💧🎓🍕👟🐣👫🍑😸🍦👁🆗🎯📢🚶🦅🐧💢🏀🚫💑🐟🌽🏊🍟💝💲🐍🍥🐸☝♣👊⚓❌🐯🏈📰🌧👿🐳💷🐺📞🆒🍀🤐🚲🍔👹🙍🌷🙎🐥💵🔝📸⚠❓🎩✂🍼😑⬇⚾🍎💔🐔⚽💭🏌🐷🍍✖🍇📝🍊🐙👋🤔🥊🗽🐑🐘🐰💐🐴♀🐦🍓✏👂🏴👇🆘😡🏉👩💌😺✝🐼🐒🐶👺🖕👬🍉🐻🐾⬅⏬▶👮🍌♂🔸👶🐮👪⛳🐐🎾🐕👴🐨🐊🔹©🎣👦👣👨👈💬⭕📹📷"
|
60
|
+
)
|
61
|
+
|
62
|
+
# Also pick out some vanity emojis.
|
63
|
+
ENG_EMOJIS: Final = [
|
64
|
+
"🎈", # st.balloons 🎈🎈
|
65
|
+
"🤓", # Abhi
|
66
|
+
"🏈", # Amey
|
67
|
+
"🚲", # Thiago
|
68
|
+
"🐧", # Matteo
|
69
|
+
"🦒", # Ken
|
70
|
+
"🐳", # Karrie
|
71
|
+
"🕹️", # Jonathan
|
72
|
+
"🇦🇲", # Henrikh
|
73
|
+
"🎸", # Guido
|
74
|
+
"🦈", # Austin
|
75
|
+
"💎", # Emiliano
|
76
|
+
"👩🎤", # Naomi
|
77
|
+
"🧙♂️", # Jon
|
78
|
+
"🐻", # Brandon
|
79
|
+
"🎎", # James
|
80
|
+
# TODO: Solicit emojis from the rest of Streamlit
|
81
|
+
]
|
82
|
+
|
83
|
+
|
84
|
+
def _lower_clean_dict_keys(dict: MenuItems) -> dict[str, Any]:
|
85
|
+
return {str(k).lower().strip(): v for k, v in dict.items()}
|
86
|
+
|
87
|
+
|
88
|
+
def _get_favicon_string(page_icon: PageIcon) -> str:
|
89
|
+
"""Return the string to pass to the frontend to have it show
|
90
|
+
the given PageIcon.
|
91
|
+
|
92
|
+
If page_icon is a string that looks like an emoji (or an emoji shortcode),
|
93
|
+
we return it as-is. Otherwise we use `image_to_url` to return a URL.
|
94
|
+
|
95
|
+
(If `image_to_url` raises an error and page_icon is a string, return
|
96
|
+
the unmodified page_icon string instead of re-raising the error.)
|
97
|
+
"""
|
98
|
+
|
99
|
+
# Choose a random emoji.
|
100
|
+
if page_icon == "random":
|
101
|
+
return get_random_emoji()
|
102
|
+
|
103
|
+
# If page_icon is an emoji, return it as is.
|
104
|
+
if isinstance(page_icon, str) and is_emoji(page_icon):
|
105
|
+
return page_icon
|
106
|
+
|
107
|
+
if isinstance(page_icon, str) and page_icon.startswith(":material"):
|
108
|
+
return validate_material_icon(page_icon)
|
109
|
+
|
110
|
+
# Convert Path to string if necessary
|
111
|
+
if isinstance(page_icon, Path):
|
112
|
+
page_icon = str(page_icon)
|
113
|
+
|
114
|
+
# Fall back to image_to_url.
|
115
|
+
try:
|
116
|
+
return image_to_url(
|
117
|
+
page_icon,
|
118
|
+
width=-1, # Always use full width for favicons
|
119
|
+
clamp=False,
|
120
|
+
channels="RGB",
|
121
|
+
output_format="auto",
|
122
|
+
image_id="favicon",
|
123
|
+
)
|
124
|
+
except Exception:
|
125
|
+
if isinstance(page_icon, str):
|
126
|
+
# This fall-thru handles emoji shortcode strings (e.g. ":shark:"),
|
127
|
+
# which aren't valid filenames and so will cause an Exception from
|
128
|
+
# `image_to_url`.
|
129
|
+
return page_icon
|
130
|
+
raise
|
131
|
+
|
132
|
+
|
133
|
+
@gather_metrics("set_page_config")
|
134
|
+
def set_page_config(
|
135
|
+
page_title: str | None = None,
|
136
|
+
page_icon: PageIcon | None = None,
|
137
|
+
layout: Layout = "centered",
|
138
|
+
initial_sidebar_state: InitialSideBarState = "auto",
|
139
|
+
menu_items: MenuItems | None = None,
|
140
|
+
) -> None:
|
141
|
+
"""
|
142
|
+
Configures the default settings of the page.
|
143
|
+
|
144
|
+
.. note::
|
145
|
+
This must be the first Streamlit command used on an app page, and must only
|
146
|
+
be set once per page.
|
147
|
+
|
148
|
+
Parameters
|
149
|
+
----------
|
150
|
+
page_title: str or None
|
151
|
+
The page title, shown in the browser tab. If None, defaults to the
|
152
|
+
filename of the script ("app.py" would show "app • Streamlit").
|
153
|
+
|
154
|
+
page_icon : Anything supported by st.image (except list), str, or None
|
155
|
+
The page favicon. If ``page_icon`` is ``None`` (default), the favicon
|
156
|
+
will be a monochrome Streamlit logo.
|
157
|
+
|
158
|
+
In addition to the types supported by |st.image|_ (except list), the
|
159
|
+
following strings are valid:
|
160
|
+
|
161
|
+
- A single-character emoji. For example, you can set ``page_icon="🦈"``.
|
162
|
+
|
163
|
+
- An emoji short code. For example, you can set ``page_icon=":shark:"``.
|
164
|
+
For a list of all supported codes, see
|
165
|
+
https://share.streamlit.io/streamlit/emoji-shortcodes.
|
166
|
+
|
167
|
+
- The string literal, ``"random"``. You can set ``page_icon="random"``
|
168
|
+
to set a random emoji from the supported list above.
|
169
|
+
|
170
|
+
- An icon from the Material Symbols library (rounded style) in the
|
171
|
+
format ``":material/icon_name:"`` where "icon_name" is the name
|
172
|
+
of the icon in snake case.
|
173
|
+
|
174
|
+
For example, ``page_icon=":material/thumb_up:"`` will display the
|
175
|
+
Thumb Up icon. Find additional icons in the `Material Symbols \
|
176
|
+
<https://fonts.google.com/icons?icon.set=Material+Symbols&icon.style=Rounded>`_
|
177
|
+
font library.
|
178
|
+
|
179
|
+
.. note::
|
180
|
+
Colors are not supported for Material icons. When you use a
|
181
|
+
Material icon for favicon, it will be black, regardless of browser
|
182
|
+
theme.
|
183
|
+
|
184
|
+
.. |st.image| replace:: ``st.image``
|
185
|
+
.. _st.image: https://docs.streamlit.io/develop/api-reference/media/st.image
|
186
|
+
|
187
|
+
layout: "centered" or "wide"
|
188
|
+
How the page content should be laid out. Defaults to "centered",
|
189
|
+
which constrains the elements into a centered column of fixed width;
|
190
|
+
"wide" uses the entire screen.
|
191
|
+
|
192
|
+
initial_sidebar_state: "auto", "expanded", or "collapsed"
|
193
|
+
How the sidebar should start out. Defaults to "auto",
|
194
|
+
which hides the sidebar on small devices and shows it otherwise.
|
195
|
+
"expanded" shows the sidebar initially; "collapsed" hides it.
|
196
|
+
In most cases, you should just use "auto", otherwise the app will
|
197
|
+
look bad when embedded and viewed on mobile.
|
198
|
+
|
199
|
+
menu_items: dict
|
200
|
+
Configure the menu that appears on the top-right side of this app.
|
201
|
+
The keys in this dict denote the menu item you'd like to configure:
|
202
|
+
|
203
|
+
- "Get help": str or None
|
204
|
+
The URL this menu item should point to.
|
205
|
+
If None, hides this menu item.
|
206
|
+
- "Report a Bug": str or None
|
207
|
+
The URL this menu item should point to.
|
208
|
+
If None, hides this menu item.
|
209
|
+
- "About": str or None
|
210
|
+
A markdown string to show in the About dialog.
|
211
|
+
If None, only shows Streamlit's default About text.
|
212
|
+
|
213
|
+
The URL may also refer to an email address e.g. ``mailto:john@example.com``.
|
214
|
+
|
215
|
+
Example
|
216
|
+
-------
|
217
|
+
>>> import streamlit as st
|
218
|
+
>>>
|
219
|
+
>>> st.set_page_config(
|
220
|
+
... page_title="Ex-stream-ly Cool App",
|
221
|
+
... page_icon="🧊",
|
222
|
+
... layout="wide",
|
223
|
+
... initial_sidebar_state="expanded",
|
224
|
+
... menu_items={
|
225
|
+
... 'Get Help': 'https://www.extremelycoolapp.com/help',
|
226
|
+
... 'Report a bug': "https://www.extremelycoolapp.com/bug",
|
227
|
+
... 'About': "# This is a header. This is an *extremely* cool app!"
|
228
|
+
... }
|
229
|
+
... )
|
230
|
+
"""
|
231
|
+
|
232
|
+
msg = ForwardProto()
|
233
|
+
|
234
|
+
if page_title is not None:
|
235
|
+
msg.page_config_changed.title = page_title
|
236
|
+
|
237
|
+
if page_icon is not None:
|
238
|
+
msg.page_config_changed.favicon = _get_favicon_string(page_icon)
|
239
|
+
|
240
|
+
pb_layout: PageConfigProto.Layout.ValueType
|
241
|
+
if layout == "centered":
|
242
|
+
pb_layout = PageConfigProto.CENTERED
|
243
|
+
elif layout == "wide":
|
244
|
+
pb_layout = PageConfigProto.WIDE
|
245
|
+
else:
|
246
|
+
raise StreamlitInvalidPageLayoutError(layout=layout)
|
247
|
+
|
248
|
+
msg.page_config_changed.layout = pb_layout
|
249
|
+
|
250
|
+
pb_sidebar_state: PageConfigProto.SidebarState.ValueType
|
251
|
+
if initial_sidebar_state == "auto":
|
252
|
+
pb_sidebar_state = PageConfigProto.AUTO
|
253
|
+
elif initial_sidebar_state == "expanded":
|
254
|
+
pb_sidebar_state = PageConfigProto.EXPANDED
|
255
|
+
elif initial_sidebar_state == "collapsed":
|
256
|
+
pb_sidebar_state = PageConfigProto.COLLAPSED
|
257
|
+
else:
|
258
|
+
raise StreamlitInvalidSidebarStateError(
|
259
|
+
initial_sidebar_state=initial_sidebar_state
|
260
|
+
)
|
261
|
+
|
262
|
+
msg.page_config_changed.initial_sidebar_state = pb_sidebar_state
|
263
|
+
|
264
|
+
if menu_items is not None:
|
265
|
+
lowercase_menu_items = cast(MenuItems, _lower_clean_dict_keys(menu_items))
|
266
|
+
validate_menu_items(lowercase_menu_items)
|
267
|
+
menu_items_proto = msg.page_config_changed.menu_items
|
268
|
+
set_menu_items_proto(lowercase_menu_items, menu_items_proto)
|
269
|
+
|
270
|
+
ctx = get_script_run_ctx()
|
271
|
+
if ctx is None:
|
272
|
+
return
|
273
|
+
ctx.enqueue(msg)
|
274
|
+
|
275
|
+
|
276
|
+
def get_random_emoji() -> str:
|
277
|
+
# Weigh our emojis 10x, cuz we're awesome!
|
278
|
+
# TODO: fix the random seed with a hash of the user's app code, for stability?
|
279
|
+
return random.choice(RANDOM_EMOJIS + 10 * ENG_EMOJIS)
|
280
|
+
|
281
|
+
|
282
|
+
def set_menu_items_proto(lowercase_menu_items, menu_items_proto) -> None:
|
283
|
+
if GET_HELP_KEY in lowercase_menu_items:
|
284
|
+
if lowercase_menu_items[GET_HELP_KEY] is not None:
|
285
|
+
menu_items_proto.get_help_url = lowercase_menu_items[GET_HELP_KEY]
|
286
|
+
else:
|
287
|
+
menu_items_proto.hide_get_help = True
|
288
|
+
|
289
|
+
if REPORT_A_BUG_KEY in lowercase_menu_items:
|
290
|
+
if lowercase_menu_items[REPORT_A_BUG_KEY] is not None:
|
291
|
+
menu_items_proto.report_a_bug_url = lowercase_menu_items[REPORT_A_BUG_KEY]
|
292
|
+
else:
|
293
|
+
menu_items_proto.hide_report_a_bug = True
|
294
|
+
|
295
|
+
if ABOUT_KEY in lowercase_menu_items:
|
296
|
+
if lowercase_menu_items[ABOUT_KEY] is not None:
|
297
|
+
menu_items_proto.about_section_md = dedent(lowercase_menu_items[ABOUT_KEY])
|
298
|
+
|
299
|
+
|
300
|
+
def validate_menu_items(menu_items: MenuItems) -> None:
|
301
|
+
for k, v in menu_items.items():
|
302
|
+
if not valid_menu_item_key(k):
|
303
|
+
raise StreamlitInvalidMenuItemKeyError(key=k)
|
304
|
+
if v is not None and (
|
305
|
+
not is_url(v, ("http", "https", "mailto")) and k != ABOUT_KEY
|
306
|
+
):
|
307
|
+
raise StreamlitInvalidURLError(url=v)
|
308
|
+
|
309
|
+
|
310
|
+
def valid_menu_item_key(key: str) -> TypeGuard[MenuKey]:
|
311
|
+
return key in {GET_HELP_KEY, REPORT_A_BUG_KEY, ABOUT_KEY}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
|
17
|
+
import os
|
18
|
+
import threading
|
19
|
+
from typing import TYPE_CHECKING, Final
|
20
|
+
|
21
|
+
from streamlit import util
|
22
|
+
from streamlit.components.types.base_component_registry import BaseComponentRegistry
|
23
|
+
from streamlit.errors import StreamlitAPIException
|
24
|
+
from streamlit.logger import get_logger
|
25
|
+
|
26
|
+
if TYPE_CHECKING:
|
27
|
+
from streamlit.components.types.base_custom_component import BaseCustomComponent
|
28
|
+
|
29
|
+
_LOGGER: Final = get_logger(__name__)
|
30
|
+
|
31
|
+
|
32
|
+
class LocalComponentRegistry(BaseComponentRegistry):
|
33
|
+
def __init__(self) -> None:
|
34
|
+
self._components: dict[str, BaseCustomComponent] = {}
|
35
|
+
self._lock = threading.Lock()
|
36
|
+
|
37
|
+
def __repr__(self) -> str:
|
38
|
+
return util.repr_(self)
|
39
|
+
|
40
|
+
def register_component(self, component: BaseCustomComponent) -> None:
|
41
|
+
"""Register a CustomComponent.
|
42
|
+
|
43
|
+
Parameters
|
44
|
+
----------
|
45
|
+
component : BaseCustomComponent
|
46
|
+
The component to register.
|
47
|
+
"""
|
48
|
+
|
49
|
+
# Validate the component's path
|
50
|
+
abspath = component.abspath
|
51
|
+
if abspath is not None and not os.path.isdir(abspath):
|
52
|
+
raise StreamlitAPIException(f"No such component directory: '{abspath}'")
|
53
|
+
|
54
|
+
with self._lock:
|
55
|
+
existing = self._components.get(component.name)
|
56
|
+
self._components[component.name] = component
|
57
|
+
|
58
|
+
if existing is not None and component != existing:
|
59
|
+
_LOGGER.warning(
|
60
|
+
"%s overriding previously-registered %s",
|
61
|
+
component,
|
62
|
+
existing,
|
63
|
+
)
|
64
|
+
|
65
|
+
_LOGGER.debug("Registered component %s", component)
|
66
|
+
|
67
|
+
def get_component_path(self, name: str) -> str | None:
|
68
|
+
"""Return the filesystem path for the component with the given name.
|
69
|
+
|
70
|
+
If no such component is registered, or if the component exists but is
|
71
|
+
being served from a URL, return None instead.
|
72
|
+
"""
|
73
|
+
component = self._components.get(name, None)
|
74
|
+
return component.abspath if component is not None else None
|
75
|
+
|
76
|
+
def get_module_name(self, name: str) -> str | None:
|
77
|
+
component = self._components.get(name, None)
|
78
|
+
return component.module_name if component is not None else None
|
79
|
+
|
80
|
+
def get_component(self, name: str) -> BaseCustomComponent | None:
|
81
|
+
return self._components.get(name, None)
|
82
|
+
|
83
|
+
def get_components(self) -> list[BaseCustomComponent]:
|
84
|
+
return list(self._components.values())
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
|
17
|
+
from abc import abstractmethod
|
18
|
+
from typing import TYPE_CHECKING, Protocol
|
19
|
+
|
20
|
+
if TYPE_CHECKING:
|
21
|
+
from streamlit.components.types.base_custom_component import BaseCustomComponent
|
22
|
+
|
23
|
+
|
24
|
+
class BaseComponentRegistry(Protocol):
|
25
|
+
"""Interface for ComponentRegistries."""
|
26
|
+
|
27
|
+
@abstractmethod
|
28
|
+
def register_component(self, component: BaseCustomComponent) -> None:
|
29
|
+
"""Register a CustomComponent.
|
30
|
+
|
31
|
+
Parameters
|
32
|
+
----------
|
33
|
+
component : CustomComponent
|
34
|
+
The component to register.
|
35
|
+
"""
|
36
|
+
raise NotImplementedError
|
37
|
+
|
38
|
+
@abstractmethod
|
39
|
+
def get_component_path(self, name: str) -> str | None:
|
40
|
+
"""Return the filesystem path for the component with the given name.
|
41
|
+
|
42
|
+
If no such component is registered, or if the component exists but is
|
43
|
+
being served from a URL, return None instead.
|
44
|
+
|
45
|
+
Parameters
|
46
|
+
----------
|
47
|
+
name: name of the component
|
48
|
+
|
49
|
+
Returns
|
50
|
+
-------
|
51
|
+
str or None
|
52
|
+
The name of the specified component or None if no component with the given name has been registered.
|
53
|
+
"""
|
54
|
+
raise NotImplementedError
|
55
|
+
|
56
|
+
@abstractmethod
|
57
|
+
def get_module_name(self, name: str) -> str | None:
|
58
|
+
"""Return the module name for the component with the given name.
|
59
|
+
|
60
|
+
If no such component is registered, return None instead.
|
61
|
+
|
62
|
+
Parameters
|
63
|
+
----------
|
64
|
+
name: name of the component
|
65
|
+
|
66
|
+
Returns
|
67
|
+
-------
|
68
|
+
str or None
|
69
|
+
The module_name of the specified component or None if no component with the given name has been registered.
|
70
|
+
"""
|
71
|
+
raise NotImplementedError
|
72
|
+
|
73
|
+
@abstractmethod
|
74
|
+
def get_component(self, name: str) -> BaseCustomComponent | None:
|
75
|
+
"""Return the registered component with the given name.
|
76
|
+
|
77
|
+
If no such component is registered, return None instead.
|
78
|
+
|
79
|
+
Parameters
|
80
|
+
----------
|
81
|
+
name: name of the component
|
82
|
+
|
83
|
+
Returns
|
84
|
+
-------
|
85
|
+
component or None
|
86
|
+
The component with the provided name or None if component with the given name has been registered.
|
87
|
+
"""
|
88
|
+
raise NotImplementedError
|
89
|
+
|
90
|
+
@abstractmethod
|
91
|
+
def get_components(self) -> list[BaseCustomComponent]:
|
92
|
+
"""Returns a list of custom components that are registered in this registry.
|
93
|
+
|
94
|
+
Returns
|
95
|
+
-------
|
96
|
+
list[CustomComponents]
|
97
|
+
A list of registered custom components.
|
98
|
+
"""
|
99
|
+
raise NotImplementedError
|
@@ -0,0 +1,150 @@
|
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
|
17
|
+
import os
|
18
|
+
from abc import ABC, abstractmethod
|
19
|
+
from typing import TYPE_CHECKING, Any
|
20
|
+
|
21
|
+
from streamlit import util
|
22
|
+
from streamlit.errors import StreamlitAPIException
|
23
|
+
|
24
|
+
if TYPE_CHECKING:
|
25
|
+
from streamlit.runtime.state.common import WidgetCallback
|
26
|
+
|
27
|
+
|
28
|
+
class MarshallComponentException(StreamlitAPIException):
|
29
|
+
"""Class for exceptions generated during custom component marshalling."""
|
30
|
+
|
31
|
+
pass
|
32
|
+
|
33
|
+
|
34
|
+
class BaseCustomComponent(ABC):
|
35
|
+
"""Interface for CustomComponents."""
|
36
|
+
|
37
|
+
def __init__(
|
38
|
+
self,
|
39
|
+
name: str,
|
40
|
+
path: str | None = None,
|
41
|
+
url: str | None = None,
|
42
|
+
module_name: str | None = None,
|
43
|
+
):
|
44
|
+
if (path is None and url is None) or (path is not None and url is not None):
|
45
|
+
raise StreamlitAPIException(
|
46
|
+
"Either 'path' or 'url' must be set, but not both."
|
47
|
+
)
|
48
|
+
|
49
|
+
self._name = name
|
50
|
+
self._path = path
|
51
|
+
self._url = url
|
52
|
+
self._module_name = module_name
|
53
|
+
|
54
|
+
def __repr__(self) -> str:
|
55
|
+
return util.repr_(self)
|
56
|
+
|
57
|
+
def __call__(
|
58
|
+
self,
|
59
|
+
*args,
|
60
|
+
default: Any = None,
|
61
|
+
key: str | None = None,
|
62
|
+
on_change: WidgetCallback | None = None,
|
63
|
+
**kwargs,
|
64
|
+
) -> Any:
|
65
|
+
"""An alias for create_instance."""
|
66
|
+
return self.create_instance(
|
67
|
+
*args,
|
68
|
+
default=default,
|
69
|
+
key=key,
|
70
|
+
on_change=on_change,
|
71
|
+
**kwargs,
|
72
|
+
)
|
73
|
+
|
74
|
+
@property
|
75
|
+
def abspath(self) -> str | None:
|
76
|
+
if self._path is None:
|
77
|
+
return None
|
78
|
+
return os.path.abspath(self._path)
|
79
|
+
|
80
|
+
@property
|
81
|
+
def module_name(self) -> str | None:
|
82
|
+
return self._module_name
|
83
|
+
|
84
|
+
@property
|
85
|
+
def name(self) -> str:
|
86
|
+
return self._name
|
87
|
+
|
88
|
+
@property
|
89
|
+
def path(self) -> str | None:
|
90
|
+
return self._path
|
91
|
+
|
92
|
+
@property
|
93
|
+
def url(self) -> str | None:
|
94
|
+
return self._url
|
95
|
+
|
96
|
+
def __str__(self) -> str:
|
97
|
+
return f"'{self.name}': {self.path if self.path is not None else self.url}"
|
98
|
+
|
99
|
+
@abstractmethod
|
100
|
+
def __eq__(self, other) -> bool:
|
101
|
+
"""Equality operator."""
|
102
|
+
return NotImplemented
|
103
|
+
|
104
|
+
@abstractmethod
|
105
|
+
def __ne__(self, other) -> bool:
|
106
|
+
"""Inequality operator."""
|
107
|
+
return NotImplemented
|
108
|
+
|
109
|
+
@abstractmethod
|
110
|
+
def create_instance(
|
111
|
+
self,
|
112
|
+
*args,
|
113
|
+
default: Any = None,
|
114
|
+
key: str | None = None,
|
115
|
+
on_change: WidgetCallback | None = None,
|
116
|
+
**kwargs,
|
117
|
+
) -> Any:
|
118
|
+
"""Create a new instance of the component.
|
119
|
+
|
120
|
+
Parameters
|
121
|
+
----------
|
122
|
+
*args
|
123
|
+
Must be empty; all args must be named. (This parameter exists to
|
124
|
+
enforce correct use of the function.)
|
125
|
+
default: any or None
|
126
|
+
The default return value for the component. This is returned when
|
127
|
+
the component's frontend hasn't yet specified a value with
|
128
|
+
`setComponentValue`.
|
129
|
+
key: str or None
|
130
|
+
If not None, this is the user key we use to generate the
|
131
|
+
component's "widget ID".
|
132
|
+
on_change: WidgetCallback or None
|
133
|
+
An optional callback invoked when the widget's value changes. No arguments are passed to it.
|
134
|
+
**kwargs
|
135
|
+
Keyword args to pass to the component.
|
136
|
+
|
137
|
+
Raises
|
138
|
+
------
|
139
|
+
MarshallComponentException
|
140
|
+
Raised when args is not empty or component cannot be marshalled.
|
141
|
+
StreamlitAPIException
|
142
|
+
Raised when PyArrow is not installed.
|
143
|
+
|
144
|
+
Returns
|
145
|
+
-------
|
146
|
+
any or None
|
147
|
+
The component's widget value.
|
148
|
+
|
149
|
+
"""
|
150
|
+
raise NotImplementedError
|