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,194 @@
|
|
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
|
+
"""Streamlit support for Matplotlib PyPlot charts."""
|
16
|
+
|
17
|
+
from __future__ import annotations
|
18
|
+
|
19
|
+
import io
|
20
|
+
from typing import TYPE_CHECKING, Any, cast
|
21
|
+
|
22
|
+
from streamlit.deprecation_util import show_deprecation_warning
|
23
|
+
from streamlit.elements.lib.image_utils import WidthBehavior, marshall_images
|
24
|
+
from streamlit.proto.Image_pb2 import ImageList as ImageListProto
|
25
|
+
from streamlit.runtime.metrics_util import gather_metrics
|
26
|
+
|
27
|
+
if TYPE_CHECKING:
|
28
|
+
from matplotlib.figure import Figure
|
29
|
+
|
30
|
+
from streamlit.delta_generator import DeltaGenerator
|
31
|
+
|
32
|
+
|
33
|
+
class PyplotMixin:
|
34
|
+
@gather_metrics("pyplot")
|
35
|
+
def pyplot(
|
36
|
+
self,
|
37
|
+
fig: Figure | None = None,
|
38
|
+
clear_figure: bool | None = None,
|
39
|
+
use_container_width: bool = True,
|
40
|
+
**kwargs: Any,
|
41
|
+
) -> DeltaGenerator:
|
42
|
+
"""Display a matplotlib.pyplot figure.
|
43
|
+
|
44
|
+
.. Important::
|
45
|
+
You must install ``matplotlib`` to use this command.
|
46
|
+
|
47
|
+
Parameters
|
48
|
+
----------
|
49
|
+
fig : Matplotlib Figure
|
50
|
+
The Matplotlib ``Figure`` object to render. See
|
51
|
+
https://matplotlib.org/stable/gallery/index.html for examples.
|
52
|
+
|
53
|
+
.. note::
|
54
|
+
When this argument isn't specified, this function will render the global
|
55
|
+
Matplotlib figure object. However, this feature is deprecated and
|
56
|
+
will be removed in a later version.
|
57
|
+
|
58
|
+
clear_figure : bool
|
59
|
+
If True, the figure will be cleared after being rendered.
|
60
|
+
If False, the figure will not be cleared after being rendered.
|
61
|
+
If left unspecified, we pick a default based on the value of ``fig``.
|
62
|
+
|
63
|
+
- If ``fig`` is set, defaults to ``False``.
|
64
|
+
|
65
|
+
- If ``fig`` is not set, defaults to ``True``. This simulates Jupyter's
|
66
|
+
approach to matplotlib rendering.
|
67
|
+
|
68
|
+
use_container_width : bool
|
69
|
+
Whether to override the figure's native width with the width of
|
70
|
+
the parent container. If ``use_container_width`` is ``True``
|
71
|
+
(default), Streamlit sets the width of the figure to match the
|
72
|
+
width of the parent container. If ``use_container_width`` is
|
73
|
+
``False``, Streamlit sets the width of the chart to fit its
|
74
|
+
contents according to the plotting library, up to the width of the
|
75
|
+
parent container.
|
76
|
+
|
77
|
+
**kwargs : any
|
78
|
+
Arguments to pass to Matplotlib's savefig function.
|
79
|
+
|
80
|
+
Example
|
81
|
+
-------
|
82
|
+
>>> import streamlit as st
|
83
|
+
>>> import matplotlib.pyplot as plt
|
84
|
+
>>> import numpy as np
|
85
|
+
>>>
|
86
|
+
>>> arr = np.random.normal(1, 1, size=100)
|
87
|
+
>>> fig, ax = plt.subplots()
|
88
|
+
>>> ax.hist(arr, bins=20)
|
89
|
+
>>>
|
90
|
+
>>> st.pyplot(fig)
|
91
|
+
|
92
|
+
.. output::
|
93
|
+
https://doc-pyplot.streamlit.app/
|
94
|
+
height: 630px
|
95
|
+
|
96
|
+
Matplotlib supports several types of "backends". If you're getting an
|
97
|
+
error using Matplotlib with Streamlit, try setting your backend to "TkAgg"::
|
98
|
+
|
99
|
+
echo "backend: TkAgg" >> ~/.matplotlib/matplotlibrc
|
100
|
+
|
101
|
+
For more information, see https://matplotlib.org/faq/usage_faq.html.
|
102
|
+
|
103
|
+
"""
|
104
|
+
|
105
|
+
if not fig:
|
106
|
+
show_deprecation_warning("""
|
107
|
+
Calling `st.pyplot()` without providing a figure argument has been deprecated
|
108
|
+
and will be removed in a later version as it requires the use of Matplotlib's
|
109
|
+
global figure object, which is not thread-safe.
|
110
|
+
|
111
|
+
To future-proof this code, you should pass in a figure as shown below:
|
112
|
+
|
113
|
+
```python
|
114
|
+
fig, ax = plt.subplots()
|
115
|
+
ax.scatter([1, 2, 3], [1, 2, 3])
|
116
|
+
# other plotting actions...
|
117
|
+
st.pyplot(fig)
|
118
|
+
```
|
119
|
+
|
120
|
+
If you have a specific use case that requires this functionality, please let us
|
121
|
+
know via [issue on Github](https://github.com/streamlit/streamlit/issues).
|
122
|
+
""")
|
123
|
+
|
124
|
+
image_list_proto = ImageListProto()
|
125
|
+
marshall(
|
126
|
+
self.dg._get_delta_path_str(),
|
127
|
+
image_list_proto,
|
128
|
+
fig,
|
129
|
+
clear_figure,
|
130
|
+
use_container_width,
|
131
|
+
**kwargs,
|
132
|
+
)
|
133
|
+
return self.dg._enqueue("imgs", image_list_proto)
|
134
|
+
|
135
|
+
@property
|
136
|
+
def dg(self) -> DeltaGenerator:
|
137
|
+
"""Get our DeltaGenerator."""
|
138
|
+
return cast("DeltaGenerator", self)
|
139
|
+
|
140
|
+
|
141
|
+
def marshall(
|
142
|
+
coordinates: str,
|
143
|
+
image_list_proto: ImageListProto,
|
144
|
+
fig: Figure | None = None,
|
145
|
+
clear_figure: bool | None = True,
|
146
|
+
use_container_width: bool = True,
|
147
|
+
**kwargs: Any,
|
148
|
+
) -> None:
|
149
|
+
try:
|
150
|
+
import matplotlib.pyplot as plt
|
151
|
+
|
152
|
+
plt.ioff()
|
153
|
+
except ImportError:
|
154
|
+
raise ImportError("pyplot() command requires matplotlib")
|
155
|
+
|
156
|
+
# You can call .savefig() on a Figure object or directly on the pyplot
|
157
|
+
# module, in which case you're doing it to the latest Figure.
|
158
|
+
if not fig:
|
159
|
+
if clear_figure is None:
|
160
|
+
clear_figure = True
|
161
|
+
|
162
|
+
fig = cast("Figure", plt)
|
163
|
+
|
164
|
+
# Normally, dpi is set to 'figure', and the figure's dpi is set to 100.
|
165
|
+
# So here we pick double of that to make things look good in a high
|
166
|
+
# DPI display.
|
167
|
+
options = {"bbox_inches": "tight", "dpi": 200, "format": "png"}
|
168
|
+
|
169
|
+
# If some options are passed in from kwargs then replace the values in
|
170
|
+
# options with the ones from kwargs
|
171
|
+
options = {a: kwargs.get(a, b) for a, b in options.items()}
|
172
|
+
# Merge options back into kwargs.
|
173
|
+
kwargs.update(options)
|
174
|
+
|
175
|
+
image = io.BytesIO()
|
176
|
+
fig.savefig(image, **kwargs)
|
177
|
+
image_width = (
|
178
|
+
WidthBehavior.COLUMN if use_container_width else WidthBehavior.ORIGINAL
|
179
|
+
)
|
180
|
+
marshall_images(
|
181
|
+
coordinates=coordinates,
|
182
|
+
image=image,
|
183
|
+
caption=None,
|
184
|
+
width=image_width,
|
185
|
+
proto_imgs=image_list_proto,
|
186
|
+
clamp=False,
|
187
|
+
channels="RGB",
|
188
|
+
output_format="PNG",
|
189
|
+
)
|
190
|
+
|
191
|
+
# Clear the figure after rendering it. This means that subsequent
|
192
|
+
# plt calls will be starting fresh.
|
193
|
+
if clear_figure:
|
194
|
+
fig.clf()
|
@@ -0,0 +1,47 @@
|
|
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 typing import TYPE_CHECKING, cast
|
18
|
+
|
19
|
+
from streamlit.proto.Snow_pb2 import Snow as SnowProto
|
20
|
+
from streamlit.runtime.metrics_util import gather_metrics
|
21
|
+
|
22
|
+
if TYPE_CHECKING:
|
23
|
+
from streamlit.delta_generator import DeltaGenerator
|
24
|
+
|
25
|
+
|
26
|
+
class SnowMixin:
|
27
|
+
@gather_metrics("snow")
|
28
|
+
def snow(self) -> DeltaGenerator:
|
29
|
+
"""Draw celebratory snowfall.
|
30
|
+
|
31
|
+
Example
|
32
|
+
-------
|
33
|
+
>>> import streamlit as st
|
34
|
+
>>>
|
35
|
+
>>> st.snow()
|
36
|
+
|
37
|
+
...then watch your app and get ready for a cool celebration!
|
38
|
+
|
39
|
+
"""
|
40
|
+
snow_proto = SnowProto()
|
41
|
+
snow_proto.show = True
|
42
|
+
return self.dg._enqueue("snow", snow_proto)
|
43
|
+
|
44
|
+
@property
|
45
|
+
def dg(self) -> DeltaGenerator:
|
46
|
+
"""Get our DeltaGenerator."""
|
47
|
+
return cast("DeltaGenerator", self)
|
@@ -0,0 +1,113 @@
|
|
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 contextlib
|
18
|
+
import threading
|
19
|
+
from typing import TYPE_CHECKING
|
20
|
+
|
21
|
+
import streamlit as st
|
22
|
+
from streamlit.runtime.scriptrunner import add_script_run_ctx
|
23
|
+
|
24
|
+
if TYPE_CHECKING:
|
25
|
+
from collections.abc import Iterator
|
26
|
+
|
27
|
+
|
28
|
+
@contextlib.contextmanager
|
29
|
+
def spinner(
|
30
|
+
text: str = "In progress...",
|
31
|
+
*,
|
32
|
+
show_time: bool = False,
|
33
|
+
_cache: bool = False,
|
34
|
+
) -> Iterator[None]:
|
35
|
+
"""Display a loading spinner while executing a block of code.
|
36
|
+
|
37
|
+
Parameters
|
38
|
+
----------
|
39
|
+
text : str
|
40
|
+
The text to display next to the spinner. This defaults to
|
41
|
+
``"In progress..."``.
|
42
|
+
|
43
|
+
The text can optionally contain GitHub-flavored Markdown. Syntax
|
44
|
+
information can be found at: https://github.github.com/gfm.
|
45
|
+
|
46
|
+
See the ``body`` parameter of |st.markdown|_ for additional, supported
|
47
|
+
Markdown directives.
|
48
|
+
|
49
|
+
.. |st.markdown| replace:: ``st.markdown``
|
50
|
+
.. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
|
51
|
+
|
52
|
+
show_time : bool
|
53
|
+
Whether to show the elapsed time next to the spinner text. If this is
|
54
|
+
``False`` (default), no time is displayed. If this is ``True``,
|
55
|
+
elapsed time is displayed with a precision of 0.1 seconds. The time
|
56
|
+
format is not configurable.
|
57
|
+
|
58
|
+
Example
|
59
|
+
-------
|
60
|
+
>>> import streamlit as st
|
61
|
+
>>> import time
|
62
|
+
>>>
|
63
|
+
>>> with st.spinner("Wait for it...", show_time=True):
|
64
|
+
>>> time.sleep(5)
|
65
|
+
>>> st.success("Done!")
|
66
|
+
>>> st.button("Rerun")
|
67
|
+
|
68
|
+
.. output ::
|
69
|
+
https://doc-spinner.streamlit.app/
|
70
|
+
height: 210px
|
71
|
+
|
72
|
+
"""
|
73
|
+
from streamlit.proto.Spinner_pb2 import Spinner as SpinnerProto
|
74
|
+
from streamlit.string_util import clean_text
|
75
|
+
|
76
|
+
message = st.empty()
|
77
|
+
|
78
|
+
# Set the message 0.5 seconds in the future to avoid annoying
|
79
|
+
# flickering if this spinner runs too quickly.
|
80
|
+
DELAY_SECS = 0.5
|
81
|
+
display_message = True
|
82
|
+
display_message_lock = threading.Lock()
|
83
|
+
|
84
|
+
try:
|
85
|
+
|
86
|
+
def set_message():
|
87
|
+
with display_message_lock:
|
88
|
+
if display_message:
|
89
|
+
spinner_proto = SpinnerProto()
|
90
|
+
spinner_proto.text = clean_text(text)
|
91
|
+
spinner_proto.cache = _cache
|
92
|
+
spinner_proto.show_time = show_time
|
93
|
+
message._enqueue("spinner", spinner_proto)
|
94
|
+
|
95
|
+
add_script_run_ctx(threading.Timer(DELAY_SECS, set_message)).start()
|
96
|
+
|
97
|
+
# Yield control back to the context.
|
98
|
+
yield
|
99
|
+
finally:
|
100
|
+
if display_message_lock:
|
101
|
+
with display_message_lock:
|
102
|
+
display_message = False
|
103
|
+
if "chat_message" in set(message._active_dg._ancestor_block_types):
|
104
|
+
# Temporary stale element fix:
|
105
|
+
# For chat messages, we are resetting the spinner placeholder to an
|
106
|
+
# empty container instead of an empty placeholder (st.empty) to have
|
107
|
+
# it removed from the delta path. Empty containers are ignored in the
|
108
|
+
# frontend since they are configured with allow_empty=False. This
|
109
|
+
# prevents issues with stale elements caused by the spinner being
|
110
|
+
# rendered only in some situations (e.g. for caching).
|
111
|
+
message.container()
|
112
|
+
else:
|
113
|
+
message.empty()
|
@@ -0,0 +1,76 @@
|
|
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 typing import TYPE_CHECKING, cast
|
18
|
+
|
19
|
+
from streamlit.proto.Text_pb2 import Text as TextProto
|
20
|
+
from streamlit.runtime.metrics_util import gather_metrics
|
21
|
+
from streamlit.string_util import clean_text
|
22
|
+
|
23
|
+
if TYPE_CHECKING:
|
24
|
+
from streamlit.delta_generator import DeltaGenerator
|
25
|
+
from streamlit.type_util import SupportsStr
|
26
|
+
|
27
|
+
|
28
|
+
class TextMixin:
|
29
|
+
@gather_metrics("text")
|
30
|
+
def text(
|
31
|
+
self,
|
32
|
+
body: SupportsStr,
|
33
|
+
*, # keyword-only arguments:
|
34
|
+
help: str | None = None,
|
35
|
+
) -> DeltaGenerator:
|
36
|
+
"""Write text without Markdown or HTML parsing.
|
37
|
+
|
38
|
+
For monospace text, use |st.code|_.
|
39
|
+
|
40
|
+
.. |st.code| replace:: ``st.code``
|
41
|
+
.. _st.code: https://docs.streamlit.io/develop/api-reference/text/st.code
|
42
|
+
|
43
|
+
Parameters
|
44
|
+
----------
|
45
|
+
body : str
|
46
|
+
The string to display.
|
47
|
+
|
48
|
+
help : str or None
|
49
|
+
A tooltip that gets displayed next to the text. If this is ``None``
|
50
|
+
(default), no tooltip is displayed.
|
51
|
+
|
52
|
+
The tooltip can optionally contain GitHub-flavored Markdown,
|
53
|
+
including the Markdown directives described in the ``body``
|
54
|
+
parameter of ``st.markdown``.
|
55
|
+
|
56
|
+
Example
|
57
|
+
-------
|
58
|
+
>>> import streamlit as st
|
59
|
+
>>>
|
60
|
+
>>> st.text("This is text\\n[and more text](that's not a Markdown link).")
|
61
|
+
|
62
|
+
.. output ::
|
63
|
+
https://doc-text.streamlit.app/
|
64
|
+
height: 220px
|
65
|
+
|
66
|
+
"""
|
67
|
+
text_proto = TextProto()
|
68
|
+
text_proto.body = clean_text(body)
|
69
|
+
if help:
|
70
|
+
text_proto.help = help
|
71
|
+
return self.dg._enqueue("text", text_proto)
|
72
|
+
|
73
|
+
@property
|
74
|
+
def dg(self) -> DeltaGenerator:
|
75
|
+
"""Get our DeltaGenerator."""
|
76
|
+
return cast("DeltaGenerator", self)
|
@@ -0,0 +1,98 @@
|
|
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 typing import TYPE_CHECKING, cast
|
18
|
+
|
19
|
+
from streamlit.errors import StreamlitAPIException
|
20
|
+
from streamlit.proto.Toast_pb2 import Toast as ToastProto
|
21
|
+
from streamlit.runtime.metrics_util import gather_metrics
|
22
|
+
from streamlit.string_util import clean_text, validate_icon_or_emoji
|
23
|
+
|
24
|
+
if TYPE_CHECKING:
|
25
|
+
from streamlit.delta_generator import DeltaGenerator
|
26
|
+
from streamlit.type_util import SupportsStr
|
27
|
+
|
28
|
+
|
29
|
+
def validate_text(toast_text: SupportsStr) -> SupportsStr:
|
30
|
+
if str(toast_text) == "":
|
31
|
+
raise StreamlitAPIException(
|
32
|
+
"Toast body cannot be blank - please provide a message."
|
33
|
+
)
|
34
|
+
else:
|
35
|
+
return toast_text
|
36
|
+
|
37
|
+
|
38
|
+
class ToastMixin:
|
39
|
+
@gather_metrics("toast")
|
40
|
+
def toast(
|
41
|
+
self,
|
42
|
+
body: SupportsStr,
|
43
|
+
*, # keyword-only args:
|
44
|
+
icon: str | None = None,
|
45
|
+
) -> DeltaGenerator:
|
46
|
+
"""Display a short message, known as a notification "toast".
|
47
|
+
The toast appears in the app's bottom-right corner and disappears after four seconds.
|
48
|
+
|
49
|
+
.. warning::
|
50
|
+
``st.toast`` is not compatible with Streamlit's `caching \
|
51
|
+
<https://docs.streamlit.io/develop/concepts/architecture/caching>`_ and
|
52
|
+
cannot be called within a cached function.
|
53
|
+
|
54
|
+
Parameters
|
55
|
+
----------
|
56
|
+
body : str
|
57
|
+
The string to display as GitHub-flavored Markdown. Syntax
|
58
|
+
information can be found at: https://github.github.com/gfm.
|
59
|
+
|
60
|
+
See the ``body`` parameter of |st.markdown|_ for additional,
|
61
|
+
supported Markdown directives.
|
62
|
+
|
63
|
+
.. |st.markdown| replace:: ``st.markdown``
|
64
|
+
.. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
|
65
|
+
|
66
|
+
icon : str, None
|
67
|
+
An optional emoji or icon to display next to the alert. If ``icon``
|
68
|
+
is ``None`` (default), no icon is displayed. If ``icon`` is a
|
69
|
+
string, the following options are valid:
|
70
|
+
|
71
|
+
- A single-character emoji. For example, you can set ``icon="🚨"``
|
72
|
+
or ``icon="🔥"``. Emoji short codes are not supported.
|
73
|
+
|
74
|
+
- An icon from the Material Symbols library (rounded style) in the
|
75
|
+
format ``":material/icon_name:"`` where "icon_name" is the name
|
76
|
+
of the icon in snake case.
|
77
|
+
|
78
|
+
For example, ``icon=":material/thumb_up:"`` will display the
|
79
|
+
Thumb Up icon. Find additional icons in the `Material Symbols \
|
80
|
+
<https://fonts.google.com/icons?icon.set=Material+Symbols&icon.style=Rounded>`_
|
81
|
+
font library.
|
82
|
+
|
83
|
+
|
84
|
+
Example
|
85
|
+
-------
|
86
|
+
>>> import streamlit as st
|
87
|
+
>>>
|
88
|
+
>>> st.toast('Your edited image was saved!', icon='😍')
|
89
|
+
"""
|
90
|
+
toast_proto = ToastProto()
|
91
|
+
toast_proto.body = clean_text(validate_text(body))
|
92
|
+
toast_proto.icon = validate_icon_or_emoji(icon)
|
93
|
+
return self.dg._enqueue("toast", toast_proto)
|
94
|
+
|
95
|
+
@property
|
96
|
+
def dg(self) -> DeltaGenerator:
|
97
|
+
"""Get our DeltaGenerator."""
|
98
|
+
return cast("DeltaGenerator", self)
|