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,204 @@
|
|
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
|
+
"""
|
16
|
+
The main purpose of this module (right now at least) is to avoid a dependency
|
17
|
+
cycle between streamlit.delta_generator and some elements.
|
18
|
+
"""
|
19
|
+
|
20
|
+
from __future__ import annotations
|
21
|
+
|
22
|
+
from contextvars import ContextVar, Token
|
23
|
+
from typing import TYPE_CHECKING, Callable, Generic, TypeVar
|
24
|
+
|
25
|
+
from streamlit.proto.RootContainer_pb2 import RootContainer as _RootContainer
|
26
|
+
|
27
|
+
if TYPE_CHECKING:
|
28
|
+
from streamlit.delta_generator import DeltaGenerator
|
29
|
+
from streamlit.elements.lib.dialog import Dialog
|
30
|
+
from streamlit.elements.lib.mutable_status_container import StatusContainer
|
31
|
+
|
32
|
+
|
33
|
+
class DeltaGeneratorSingleton:
|
34
|
+
"""Used to initialize the DeltaGenerator classes and store them as singletons.
|
35
|
+
This module allows us to avoid circular imports between DeltaGenerator and elements,
|
36
|
+
because elemens can import this singleton module instead of DeltaGenerator directly.
|
37
|
+
"""
|
38
|
+
|
39
|
+
_instance: DeltaGeneratorSingleton | None = None
|
40
|
+
|
41
|
+
@classmethod
|
42
|
+
def instance(cls) -> DeltaGeneratorSingleton:
|
43
|
+
"""Return the singleton DeltaGeneratorSingleton instance. Raise an Error if the
|
44
|
+
DeltaGeneratorSingleton hasn't been created yet.
|
45
|
+
"""
|
46
|
+
if cls._instance is None:
|
47
|
+
raise RuntimeError("DeltaGeneratorSingleton hasn't been created!")
|
48
|
+
return cls._instance
|
49
|
+
|
50
|
+
def __init__(
|
51
|
+
self,
|
52
|
+
delta_generator_cls: type[DeltaGenerator],
|
53
|
+
status_container_cls: type[StatusContainer],
|
54
|
+
dialog_container_cls: type[Dialog],
|
55
|
+
):
|
56
|
+
"""Registers and initializes all delta-generator classes.
|
57
|
+
|
58
|
+
Parameters
|
59
|
+
----------
|
60
|
+
|
61
|
+
delta_generator_cls : type[DeltaGenerator]
|
62
|
+
The main DeltaGenerator class.
|
63
|
+
status_container_cls : type[StatusContainer]
|
64
|
+
The delta-generator class that is used as return value for `st.status`.
|
65
|
+
dialog_container_cls : type[Dialog]
|
66
|
+
The delta-generator class used is used as return value for `st.dialog`.
|
67
|
+
|
68
|
+
Raises
|
69
|
+
------
|
70
|
+
RuntimeError
|
71
|
+
If the DeltaGeneratorSingleton instance already exists.
|
72
|
+
"""
|
73
|
+
if DeltaGeneratorSingleton._instance is not None:
|
74
|
+
raise RuntimeError("DeltaGeneratorSingleton instance already exists!")
|
75
|
+
DeltaGeneratorSingleton._instance = self
|
76
|
+
|
77
|
+
self._main_dg = delta_generator_cls(root_container=_RootContainer.MAIN)
|
78
|
+
self._sidebar_dg = delta_generator_cls(
|
79
|
+
root_container=_RootContainer.SIDEBAR, parent=self._main_dg
|
80
|
+
)
|
81
|
+
self._event_dg = delta_generator_cls(
|
82
|
+
root_container=_RootContainer.EVENT, parent=self._main_dg
|
83
|
+
)
|
84
|
+
self._bottom_dg = delta_generator_cls(
|
85
|
+
root_container=_RootContainer.BOTTOM, parent=self._main_dg
|
86
|
+
)
|
87
|
+
self._status_container_cls = status_container_cls
|
88
|
+
self._dialog_container_cls = dialog_container_cls
|
89
|
+
|
90
|
+
@property
|
91
|
+
def main_dg(self) -> DeltaGenerator:
|
92
|
+
return self._main_dg
|
93
|
+
|
94
|
+
@property
|
95
|
+
def sidebar_dg(self) -> DeltaGenerator:
|
96
|
+
return self._sidebar_dg
|
97
|
+
|
98
|
+
@property
|
99
|
+
def event_dg(self) -> DeltaGenerator:
|
100
|
+
return self._event_dg
|
101
|
+
|
102
|
+
@property
|
103
|
+
def bottom_dg(self) -> DeltaGenerator:
|
104
|
+
return self._bottom_dg
|
105
|
+
|
106
|
+
@property
|
107
|
+
def status_container_cls(
|
108
|
+
self,
|
109
|
+
) -> type[StatusContainer]:
|
110
|
+
"""Stub for StatusContainer. Since StatusContainer inherits from DeltaGenerator,
|
111
|
+
this is used to avoid circular imports.
|
112
|
+
"""
|
113
|
+
return self._status_container_cls
|
114
|
+
|
115
|
+
@property
|
116
|
+
def dialog_container_cls(self) -> type[Dialog]:
|
117
|
+
"""Stub for Dialog. Since Dialog inherits from DeltaGenerator,
|
118
|
+
this is used to avoid circular imports.
|
119
|
+
"""
|
120
|
+
return self._dialog_container_cls
|
121
|
+
|
122
|
+
|
123
|
+
def get_dg_singleton_instance() -> DeltaGeneratorSingleton:
|
124
|
+
"""Return the DeltaGeneratorSingleton instance. Raise an Error if the
|
125
|
+
DeltaGeneratorSingleton hasn't been created yet.
|
126
|
+
"""
|
127
|
+
return DeltaGeneratorSingleton.instance()
|
128
|
+
|
129
|
+
|
130
|
+
_T = TypeVar("_T")
|
131
|
+
|
132
|
+
|
133
|
+
class ContextVarWithLazyDefault(Generic[_T]):
|
134
|
+
"""The dg_stack tracks the currently active DeltaGenerator, and is pushed to when
|
135
|
+
a DeltaGenerator is entered via a `with` block. This is implemented as a ContextVar
|
136
|
+
so that different threads or async tasks can have their own stacks.
|
137
|
+
|
138
|
+
We have a wrapper around it because ContextVar default cannot be a function, but
|
139
|
+
the default dg (main_dg) might not exist yet when this module is imported.
|
140
|
+
"""
|
141
|
+
|
142
|
+
def __init__(self, name: str, *, default: Callable[[], _T]):
|
143
|
+
self._name = name
|
144
|
+
self._default = default
|
145
|
+
self._context_var: ContextVar[_T] | None = None
|
146
|
+
|
147
|
+
def _init_context_var(self) -> None:
|
148
|
+
self._context_var = ContextVar(self._name, default=self._default()) # noqa: B039
|
149
|
+
|
150
|
+
def get(self) -> _T:
|
151
|
+
if self._context_var is None:
|
152
|
+
self._init_context_var()
|
153
|
+
return self._context_var.get() # type: ignore[union-attr]
|
154
|
+
|
155
|
+
def set(self, value: _T) -> Token[_T]:
|
156
|
+
if self._context_var is None:
|
157
|
+
self._init_context_var()
|
158
|
+
return self._context_var.set(value) # type: ignore[union-attr]
|
159
|
+
|
160
|
+
def reset(self, token: Token[_T]) -> None:
|
161
|
+
if self._context_var is None:
|
162
|
+
self._init_context_var()
|
163
|
+
self._context_var.reset(token) # type: ignore[union-attr]
|
164
|
+
|
165
|
+
def __hash__(self) -> int:
|
166
|
+
if self._context_var is None:
|
167
|
+
self._init_context_var()
|
168
|
+
return self._context_var.__hash__()
|
169
|
+
|
170
|
+
|
171
|
+
# we don't use the default factory here because `main_dg` is not initialized when this
|
172
|
+
# module is imported. This is why we have our own ContextVar wrapper.
|
173
|
+
context_dg_stack: ContextVarWithLazyDefault[tuple[DeltaGenerator, ...]] = (
|
174
|
+
ContextVarWithLazyDefault(
|
175
|
+
"context_dg_stack", default=lambda: (get_dg_singleton_instance().main_dg,)
|
176
|
+
)
|
177
|
+
)
|
178
|
+
|
179
|
+
|
180
|
+
def get_default_dg_stack_value() -> tuple[DeltaGenerator, ...]:
|
181
|
+
"""Get the default dg_stack value with which the dg_stack should
|
182
|
+
be initialized and reset if needed."""
|
183
|
+
instance = get_dg_singleton_instance()
|
184
|
+
if instance._main_dg is None:
|
185
|
+
raise RuntimeError("main_dg is not set")
|
186
|
+
|
187
|
+
return (instance._main_dg,)
|
188
|
+
|
189
|
+
|
190
|
+
def get_last_dg_added_to_context_stack() -> DeltaGenerator | None:
|
191
|
+
"""Get the last added DeltaGenerator of the stack in the current context.
|
192
|
+
|
193
|
+
Returns None if the stack has only one element or is empty for whatever reason.
|
194
|
+
"""
|
195
|
+
current_stack = context_dg_stack.get()
|
196
|
+
# If set to "> 0" and thus return the only delta generator in the stack -
|
197
|
+
# which logically makes more sense -, some unit tests fail.
|
198
|
+
# It looks like the reason is that they create their own main delta generator
|
199
|
+
# but do not populate the dg_stack correctly. However, to be on the safe-side,
|
200
|
+
# we keep the logic but leave the comment as shared knowledge for whoever will look
|
201
|
+
# into this in the future.
|
202
|
+
if len(current_stack) > 1:
|
203
|
+
return current_stack[-1]
|
204
|
+
return None
|
@@ -0,0 +1,209 @@
|
|
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 functools
|
18
|
+
from typing import Any, Callable, Final, TypeVar, cast
|
19
|
+
|
20
|
+
import streamlit
|
21
|
+
from streamlit import config
|
22
|
+
from streamlit.logger import get_logger
|
23
|
+
|
24
|
+
_LOGGER: Final = get_logger(__name__)
|
25
|
+
|
26
|
+
TFunc = TypeVar("TFunc", bound=Callable[..., Any])
|
27
|
+
TObj = TypeVar("TObj", bound=object)
|
28
|
+
|
29
|
+
|
30
|
+
def _should_show_deprecation_warning_in_browser() -> bool:
|
31
|
+
"""True if we should print deprecation warnings to the browser."""
|
32
|
+
return bool(config.get_option("client.showErrorDetails"))
|
33
|
+
|
34
|
+
|
35
|
+
def show_deprecation_warning(message: str) -> None:
|
36
|
+
"""Show a deprecation warning message."""
|
37
|
+
if _should_show_deprecation_warning_in_browser():
|
38
|
+
streamlit.warning(message)
|
39
|
+
|
40
|
+
# We always log deprecation warnings
|
41
|
+
_LOGGER.warning(message)
|
42
|
+
|
43
|
+
|
44
|
+
def make_deprecated_name_warning(
|
45
|
+
old_name: str,
|
46
|
+
new_name: str,
|
47
|
+
removal_date: str,
|
48
|
+
extra_message: str | None = None,
|
49
|
+
include_st_prefix: bool = True,
|
50
|
+
) -> str:
|
51
|
+
if include_st_prefix:
|
52
|
+
old_name = f"st.{old_name}"
|
53
|
+
new_name = f"st.{new_name}"
|
54
|
+
|
55
|
+
return (
|
56
|
+
f"Please replace `{old_name}` with `{new_name}`.\n\n"
|
57
|
+
f"`{old_name}` will be removed after {removal_date}."
|
58
|
+
+ (f"\n\n{extra_message}" if extra_message else "")
|
59
|
+
)
|
60
|
+
|
61
|
+
|
62
|
+
def deprecate_func_name(
|
63
|
+
func: TFunc,
|
64
|
+
old_name: str,
|
65
|
+
removal_date: str,
|
66
|
+
extra_message: str | None = None,
|
67
|
+
name_override: str | None = None,
|
68
|
+
) -> TFunc:
|
69
|
+
"""Wrap an `st` function whose name has changed.
|
70
|
+
|
71
|
+
Wrapped functions will run as normal, but will also show an st.warning
|
72
|
+
saying that the old name will be removed after removal_date.
|
73
|
+
|
74
|
+
(We generally set `removal_date` to 3 months from the deprecation date.)
|
75
|
+
|
76
|
+
Parameters
|
77
|
+
----------
|
78
|
+
func
|
79
|
+
The `st.` function whose name has changed.
|
80
|
+
|
81
|
+
old_name
|
82
|
+
The function's deprecated name within __init__.py.
|
83
|
+
|
84
|
+
removal_date
|
85
|
+
A date like "2020-01-01", indicating the last day we'll guarantee
|
86
|
+
support for the deprecated name.
|
87
|
+
|
88
|
+
extra_message
|
89
|
+
An optional extra message to show in the deprecation warning.
|
90
|
+
|
91
|
+
name_override
|
92
|
+
An optional name to use in place of func.__name__.
|
93
|
+
"""
|
94
|
+
|
95
|
+
@functools.wraps(func)
|
96
|
+
def wrapped_func(*args, **kwargs):
|
97
|
+
result = func(*args, **kwargs)
|
98
|
+
show_deprecation_warning(
|
99
|
+
make_deprecated_name_warning(
|
100
|
+
old_name, name_override or func.__name__, removal_date, extra_message
|
101
|
+
)
|
102
|
+
)
|
103
|
+
return result
|
104
|
+
|
105
|
+
# Update the wrapped func's name & docstring so st.help does the right thing
|
106
|
+
wrapped_func.__name__ = old_name
|
107
|
+
wrapped_func.__doc__ = func.__doc__
|
108
|
+
return cast(TFunc, wrapped_func)
|
109
|
+
|
110
|
+
|
111
|
+
def deprecate_obj_name(
|
112
|
+
obj: TObj,
|
113
|
+
old_name: str,
|
114
|
+
new_name: str,
|
115
|
+
removal_date: str,
|
116
|
+
include_st_prefix: bool = True,
|
117
|
+
) -> TObj:
|
118
|
+
"""Wrap an `st` object whose name has changed.
|
119
|
+
|
120
|
+
Wrapped objects will behave as normal, but will also show an st.warning
|
121
|
+
saying that the old name will be removed after `removal_date`.
|
122
|
+
|
123
|
+
(We generally set `removal_date` to 3 months from the deprecation date.)
|
124
|
+
|
125
|
+
Parameters
|
126
|
+
----------
|
127
|
+
obj
|
128
|
+
The `st.` object whose name has changed.
|
129
|
+
|
130
|
+
old_name
|
131
|
+
The object's deprecated name within __init__.py.
|
132
|
+
|
133
|
+
new_name
|
134
|
+
The object's new name within __init__.py.
|
135
|
+
|
136
|
+
removal_date
|
137
|
+
A date like "2020-01-01", indicating the last day we'll guarantee
|
138
|
+
support for the deprecated name.
|
139
|
+
|
140
|
+
include_st_prefix
|
141
|
+
If False, does not prefix each of the object names in the deprecation
|
142
|
+
essage with `st.*`. Defaults to True.
|
143
|
+
"""
|
144
|
+
|
145
|
+
return _create_deprecated_obj_wrapper(
|
146
|
+
obj,
|
147
|
+
lambda: show_deprecation_warning(
|
148
|
+
make_deprecated_name_warning(
|
149
|
+
old_name, new_name, removal_date, include_st_prefix=include_st_prefix
|
150
|
+
)
|
151
|
+
),
|
152
|
+
)
|
153
|
+
|
154
|
+
|
155
|
+
def _create_deprecated_obj_wrapper(obj: TObj, show_warning: Callable[[], Any]) -> TObj:
|
156
|
+
"""Create a wrapper for an object that has been deprecated. The first
|
157
|
+
time one of the object's properties or functions is accessed, the
|
158
|
+
given `show_warning` callback will be called.
|
159
|
+
"""
|
160
|
+
has_shown_warning = False
|
161
|
+
|
162
|
+
def maybe_show_warning() -> None:
|
163
|
+
# Call `show_warning` if it hasn't already been called once.
|
164
|
+
nonlocal has_shown_warning
|
165
|
+
if not has_shown_warning:
|
166
|
+
has_shown_warning = True
|
167
|
+
show_warning()
|
168
|
+
|
169
|
+
class Wrapper:
|
170
|
+
def __init__(self):
|
171
|
+
# Override all the Wrapped object's magic functions
|
172
|
+
for name in Wrapper._get_magic_functions(obj.__class__):
|
173
|
+
setattr(
|
174
|
+
self.__class__,
|
175
|
+
name,
|
176
|
+
property(self._make_magic_function_proxy(name)),
|
177
|
+
)
|
178
|
+
|
179
|
+
def __getattr__(self, attr):
|
180
|
+
# We handle __getattr__ separately from our other magic
|
181
|
+
# functions. The wrapped class may not actually implement it,
|
182
|
+
# but we still need to implement it to call all its normal
|
183
|
+
# functions.
|
184
|
+
if attr in self.__dict__:
|
185
|
+
return getattr(self, attr)
|
186
|
+
|
187
|
+
maybe_show_warning()
|
188
|
+
return getattr(obj, attr)
|
189
|
+
|
190
|
+
@staticmethod
|
191
|
+
def _get_magic_functions(cls) -> list[str]:
|
192
|
+
# ignore the handful of magic functions we cannot override without
|
193
|
+
# breaking the Wrapper.
|
194
|
+
ignore = ("__class__", "__dict__", "__getattribute__", "__getattr__")
|
195
|
+
return [
|
196
|
+
name
|
197
|
+
for name in dir(cls)
|
198
|
+
if name not in ignore and name.startswith("__")
|
199
|
+
]
|
200
|
+
|
201
|
+
@staticmethod
|
202
|
+
def _make_magic_function_proxy(name):
|
203
|
+
def proxy(self, *args):
|
204
|
+
maybe_show_warning()
|
205
|
+
return getattr(obj, name)
|
206
|
+
|
207
|
+
return proxy
|
208
|
+
|
209
|
+
return cast(TObj, Wrapper())
|
streamlit/development.py
ADDED
@@ -0,0 +1,21 @@
|
|
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
|
+
"""Variables for dev purposes.
|
16
|
+
|
17
|
+
The main purpose of this module (right now at least) is to avoid a dependency
|
18
|
+
cycle between streamlit.config and streamlit.logger.
|
19
|
+
"""
|
20
|
+
|
21
|
+
is_development_mode = False
|
@@ -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,234 @@
|
|
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.Alert_pb2 import Alert as AlertProto
|
20
|
+
from streamlit.runtime.metrics_util import gather_metrics
|
21
|
+
from streamlit.string_util import clean_text, validate_icon_or_emoji
|
22
|
+
|
23
|
+
if TYPE_CHECKING:
|
24
|
+
from streamlit.delta_generator import DeltaGenerator
|
25
|
+
from streamlit.type_util import SupportsStr
|
26
|
+
|
27
|
+
|
28
|
+
class AlertMixin:
|
29
|
+
@gather_metrics("error")
|
30
|
+
def error(
|
31
|
+
self,
|
32
|
+
body: SupportsStr,
|
33
|
+
*, # keyword-only args:
|
34
|
+
icon: str | None = None,
|
35
|
+
) -> DeltaGenerator:
|
36
|
+
"""Display error message.
|
37
|
+
|
38
|
+
Parameters
|
39
|
+
----------
|
40
|
+
body : str
|
41
|
+
The text to display as GitHub-flavored Markdown. Syntax
|
42
|
+
information can be found at: https://github.github.com/gfm.
|
43
|
+
|
44
|
+
See the ``body`` parameter of |st.markdown|_ for additional,
|
45
|
+
supported Markdown directives.
|
46
|
+
|
47
|
+
.. |st.markdown| replace:: ``st.markdown``
|
48
|
+
.. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
|
49
|
+
icon : str, None
|
50
|
+
An optional emoji or icon to display next to the alert. If ``icon``
|
51
|
+
is ``None`` (default), no icon is displayed. If ``icon`` is a
|
52
|
+
string, the following options are valid:
|
53
|
+
|
54
|
+
- A single-character emoji. For example, you can set ``icon="đ¨"``
|
55
|
+
or ``icon="đĨ"``. Emoji short codes are not supported.
|
56
|
+
|
57
|
+
- An icon from the Material Symbols library (rounded style) in the
|
58
|
+
format ``":material/icon_name:"`` where "icon_name" is the name
|
59
|
+
of the icon in snake case.
|
60
|
+
|
61
|
+
For example, ``icon=":material/thumb_up:"`` will display the
|
62
|
+
Thumb Up icon. Find additional icons in the `Material Symbols \
|
63
|
+
<https://fonts.google.com/icons?icon.set=Material+Symbols&icon.style=Rounded>`_
|
64
|
+
font library.
|
65
|
+
|
66
|
+
Example
|
67
|
+
-------
|
68
|
+
>>> import streamlit as st
|
69
|
+
>>>
|
70
|
+
>>> st.error('This is an error', icon="đ¨")
|
71
|
+
|
72
|
+
"""
|
73
|
+
alert_proto = AlertProto()
|
74
|
+
|
75
|
+
alert_proto.icon = validate_icon_or_emoji(icon)
|
76
|
+
alert_proto.body = clean_text(body)
|
77
|
+
alert_proto.format = AlertProto.ERROR
|
78
|
+
return self.dg._enqueue("alert", alert_proto)
|
79
|
+
|
80
|
+
@gather_metrics("warning")
|
81
|
+
def warning(
|
82
|
+
self,
|
83
|
+
body: SupportsStr,
|
84
|
+
*, # keyword-only args:
|
85
|
+
icon: str | None = None,
|
86
|
+
) -> DeltaGenerator:
|
87
|
+
"""Display warning message.
|
88
|
+
|
89
|
+
Parameters
|
90
|
+
----------
|
91
|
+
body : str
|
92
|
+
The text to display as GitHub-flavored Markdown. Syntax
|
93
|
+
information can be found at: https://github.github.com/gfm.
|
94
|
+
|
95
|
+
See the ``body`` parameter of |st.markdown|_ for additional,
|
96
|
+
supported Markdown directives.
|
97
|
+
|
98
|
+
.. |st.markdown| replace:: ``st.markdown``
|
99
|
+
.. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
|
100
|
+
icon : str, None
|
101
|
+
An optional emoji or icon to display next to the alert. If ``icon``
|
102
|
+
is ``None`` (default), no icon is displayed. If ``icon`` is a
|
103
|
+
string, the following options are valid:
|
104
|
+
|
105
|
+
- A single-character emoji. For example, you can set ``icon="đ¨"``
|
106
|
+
or ``icon="đĨ"``. Emoji short codes are not supported.
|
107
|
+
|
108
|
+
- An icon from the Material Symbols library (rounded style) in the
|
109
|
+
format ``":material/icon_name:"`` where "icon_name" is the name
|
110
|
+
of the icon in snake case.
|
111
|
+
|
112
|
+
For example, ``icon=":material/thumb_up:"`` will display the
|
113
|
+
Thumb Up icon. Find additional icons in the `Material Symbols \
|
114
|
+
<https://fonts.google.com/icons?icon.set=Material+Symbols&icon.style=Rounded>`_
|
115
|
+
font library.
|
116
|
+
|
117
|
+
Example
|
118
|
+
-------
|
119
|
+
>>> import streamlit as st
|
120
|
+
>>>
|
121
|
+
>>> st.warning('This is a warning', icon="â ī¸")
|
122
|
+
|
123
|
+
"""
|
124
|
+
alert_proto = AlertProto()
|
125
|
+
alert_proto.body = clean_text(body)
|
126
|
+
alert_proto.icon = validate_icon_or_emoji(icon)
|
127
|
+
alert_proto.format = AlertProto.WARNING
|
128
|
+
return self.dg._enqueue("alert", alert_proto)
|
129
|
+
|
130
|
+
@gather_metrics("info")
|
131
|
+
def info(
|
132
|
+
self,
|
133
|
+
body: SupportsStr,
|
134
|
+
*, # keyword-only args:
|
135
|
+
icon: str | None = None,
|
136
|
+
) -> DeltaGenerator:
|
137
|
+
"""Display an informational message.
|
138
|
+
|
139
|
+
Parameters
|
140
|
+
----------
|
141
|
+
body : str
|
142
|
+
The text to display as GitHub-flavored Markdown. Syntax
|
143
|
+
information can be found at: https://github.github.com/gfm.
|
144
|
+
|
145
|
+
See the ``body`` parameter of |st.markdown|_ for additional,
|
146
|
+
supported Markdown directives.
|
147
|
+
|
148
|
+
.. |st.markdown| replace:: ``st.markdown``
|
149
|
+
.. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
|
150
|
+
icon : str, None
|
151
|
+
An optional emoji or icon to display next to the alert. If ``icon``
|
152
|
+
is ``None`` (default), no icon is displayed. If ``icon`` is a
|
153
|
+
string, the following options are valid:
|
154
|
+
|
155
|
+
- A single-character emoji. For example, you can set ``icon="đ¨"``
|
156
|
+
or ``icon="đĨ"``. Emoji short codes are not supported.
|
157
|
+
|
158
|
+
- An icon from the Material Symbols library (rounded style) in the
|
159
|
+
format ``":material/icon_name:"`` where "icon_name" is the name
|
160
|
+
of the icon in snake case.
|
161
|
+
|
162
|
+
For example, ``icon=":material/thumb_up:"`` will display the
|
163
|
+
Thumb Up icon. Find additional icons in the `Material Symbols \
|
164
|
+
<https://fonts.google.com/icons?icon.set=Material+Symbols&icon.style=Rounded>`_
|
165
|
+
font library.
|
166
|
+
|
167
|
+
Example
|
168
|
+
-------
|
169
|
+
>>> import streamlit as st
|
170
|
+
>>>
|
171
|
+
>>> st.info('This is a purely informational message', icon="âšī¸")
|
172
|
+
|
173
|
+
"""
|
174
|
+
|
175
|
+
alert_proto = AlertProto()
|
176
|
+
alert_proto.body = clean_text(body)
|
177
|
+
alert_proto.icon = validate_icon_or_emoji(icon)
|
178
|
+
alert_proto.format = AlertProto.INFO
|
179
|
+
return self.dg._enqueue("alert", alert_proto)
|
180
|
+
|
181
|
+
@gather_metrics("success")
|
182
|
+
def success(
|
183
|
+
self,
|
184
|
+
body: SupportsStr,
|
185
|
+
*, # keyword-only args:
|
186
|
+
icon: str | None = None,
|
187
|
+
) -> DeltaGenerator:
|
188
|
+
"""Display a success message.
|
189
|
+
|
190
|
+
Parameters
|
191
|
+
----------
|
192
|
+
body : str
|
193
|
+
The text to display as GitHub-flavored Markdown. Syntax
|
194
|
+
information can be found at: https://github.github.com/gfm.
|
195
|
+
|
196
|
+
See the ``body`` parameter of |st.markdown|_ for additional,
|
197
|
+
supported Markdown directives.
|
198
|
+
|
199
|
+
.. |st.markdown| replace:: ``st.markdown``
|
200
|
+
.. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
|
201
|
+
icon : str, None
|
202
|
+
An optional emoji or icon to display next to the alert. If ``icon``
|
203
|
+
is ``None`` (default), no icon is displayed. If ``icon`` is a
|
204
|
+
string, the following options are valid:
|
205
|
+
|
206
|
+
- A single-character emoji. For example, you can set ``icon="đ¨"``
|
207
|
+
or ``icon="đĨ"``. Emoji short codes are not supported.
|
208
|
+
|
209
|
+
- An icon from the Material Symbols library (rounded style) in the
|
210
|
+
format ``":material/icon_name:"`` where "icon_name" is the name
|
211
|
+
of the icon in snake case.
|
212
|
+
|
213
|
+
For example, ``icon=":material/thumb_up:"`` will display the
|
214
|
+
Thumb Up icon. Find additional icons in the `Material Symbols \
|
215
|
+
<https://fonts.google.com/icons?icon.set=Material+Symbols&icon.style=Rounded>`_
|
216
|
+
font library.
|
217
|
+
|
218
|
+
Example
|
219
|
+
-------
|
220
|
+
>>> import streamlit as st
|
221
|
+
>>>
|
222
|
+
>>> st.success('This is a success message!', icon="â
")
|
223
|
+
|
224
|
+
"""
|
225
|
+
alert_proto = AlertProto()
|
226
|
+
alert_proto.body = clean_text(body)
|
227
|
+
alert_proto.icon = validate_icon_or_emoji(icon)
|
228
|
+
alert_proto.format = AlertProto.SUCCESS
|
229
|
+
return self.dg._enqueue("alert", alert_proto)
|
230
|
+
|
231
|
+
@property
|
232
|
+
def dg(self) -> DeltaGenerator:
|
233
|
+
"""Get our DeltaGenerator."""
|
234
|
+
return cast("DeltaGenerator", self)
|