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,150 @@
|
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
"""Streamlit support for GraphViz charts."""
|
16
|
+
|
17
|
+
from __future__ import annotations
|
18
|
+
|
19
|
+
from typing import TYPE_CHECKING, Union, cast
|
20
|
+
|
21
|
+
from typing_extensions import TypeAlias
|
22
|
+
|
23
|
+
from streamlit import type_util
|
24
|
+
from streamlit.errors import StreamlitAPIException
|
25
|
+
from streamlit.proto.GraphVizChart_pb2 import GraphVizChart as GraphVizChartProto
|
26
|
+
from streamlit.runtime.metrics_util import gather_metrics
|
27
|
+
from streamlit.util import calc_md5
|
28
|
+
|
29
|
+
if TYPE_CHECKING:
|
30
|
+
import graphviz
|
31
|
+
|
32
|
+
from streamlit.delta_generator import DeltaGenerator
|
33
|
+
|
34
|
+
FigureOrDot: TypeAlias = Union[
|
35
|
+
"graphviz.Graph", "graphviz.Digraph", "graphviz.Source", str
|
36
|
+
]
|
37
|
+
|
38
|
+
|
39
|
+
class GraphvizMixin:
|
40
|
+
@gather_metrics("graphviz_chart")
|
41
|
+
def graphviz_chart(
|
42
|
+
self,
|
43
|
+
figure_or_dot: FigureOrDot,
|
44
|
+
use_container_width: bool = False,
|
45
|
+
) -> DeltaGenerator:
|
46
|
+
"""Display a graph using the dagre-d3 library.
|
47
|
+
|
48
|
+
Parameters
|
49
|
+
----------
|
50
|
+
figure_or_dot : graphviz.dot.Graph, graphviz.dot.Digraph, graphviz.sources.Source, str
|
51
|
+
The Graphlib graph object or dot string to display
|
52
|
+
|
53
|
+
use_container_width : bool
|
54
|
+
Whether to override the figure's native width with the width of
|
55
|
+
the parent container. If ``use_container_width`` is ``False``
|
56
|
+
(default), Streamlit sets the width of the chart to fit its contents
|
57
|
+
according to the plotting library, up to the width of the parent
|
58
|
+
container. If ``use_container_width`` is ``True``, Streamlit sets
|
59
|
+
the width of the figure to match the width of the parent container.
|
60
|
+
|
61
|
+
Example
|
62
|
+
-------
|
63
|
+
>>> import streamlit as st
|
64
|
+
>>> import graphviz
|
65
|
+
>>>
|
66
|
+
>>> # Create a graphlib graph object
|
67
|
+
>>> graph = graphviz.Digraph()
|
68
|
+
>>> graph.edge("run", "intr")
|
69
|
+
>>> graph.edge("intr", "runbl")
|
70
|
+
>>> graph.edge("runbl", "run")
|
71
|
+
>>> graph.edge("run", "kernel")
|
72
|
+
>>> graph.edge("kernel", "zombie")
|
73
|
+
>>> graph.edge("kernel", "sleep")
|
74
|
+
>>> graph.edge("kernel", "runmem")
|
75
|
+
>>> graph.edge("sleep", "swap")
|
76
|
+
>>> graph.edge("swap", "runswap")
|
77
|
+
>>> graph.edge("runswap", "new")
|
78
|
+
>>> graph.edge("runswap", "runmem")
|
79
|
+
>>> graph.edge("new", "runmem")
|
80
|
+
>>> graph.edge("sleep", "runmem")
|
81
|
+
>>>
|
82
|
+
>>> st.graphviz_chart(graph)
|
83
|
+
|
84
|
+
Or you can render the chart from the graph using GraphViz's Dot
|
85
|
+
language:
|
86
|
+
|
87
|
+
>>> st.graphviz_chart('''
|
88
|
+
digraph {
|
89
|
+
run -> intr
|
90
|
+
intr -> runbl
|
91
|
+
runbl -> run
|
92
|
+
run -> kernel
|
93
|
+
kernel -> zombie
|
94
|
+
kernel -> sleep
|
95
|
+
kernel -> runmem
|
96
|
+
sleep -> swap
|
97
|
+
swap -> runswap
|
98
|
+
runswap -> new
|
99
|
+
runswap -> runmem
|
100
|
+
new -> runmem
|
101
|
+
sleep -> runmem
|
102
|
+
}
|
103
|
+
''')
|
104
|
+
|
105
|
+
.. output::
|
106
|
+
https://doc-graphviz-chart.streamlit.app/
|
107
|
+
height: 600px
|
108
|
+
|
109
|
+
"""
|
110
|
+
# Generate element ID from delta path
|
111
|
+
delta_path = self.dg._get_delta_path_str()
|
112
|
+
element_id = calc_md5(delta_path.encode())
|
113
|
+
|
114
|
+
graphviz_chart_proto = GraphVizChartProto()
|
115
|
+
|
116
|
+
marshall(graphviz_chart_proto, figure_or_dot, use_container_width, element_id)
|
117
|
+
return self.dg._enqueue("graphviz_chart", graphviz_chart_proto)
|
118
|
+
|
119
|
+
@property
|
120
|
+
def dg(self) -> DeltaGenerator:
|
121
|
+
"""Get our DeltaGenerator."""
|
122
|
+
return cast("DeltaGenerator", self)
|
123
|
+
|
124
|
+
|
125
|
+
def marshall(
|
126
|
+
proto: GraphVizChartProto,
|
127
|
+
figure_or_dot: FigureOrDot,
|
128
|
+
use_container_width: bool,
|
129
|
+
element_id: str,
|
130
|
+
) -> None:
|
131
|
+
"""Construct a GraphViz chart object.
|
132
|
+
|
133
|
+
See DeltaGenerator.graphviz_chart for docs.
|
134
|
+
"""
|
135
|
+
|
136
|
+
if type_util.is_graphviz_chart(figure_or_dot):
|
137
|
+
dot = figure_or_dot.source
|
138
|
+
engine = figure_or_dot.engine
|
139
|
+
elif isinstance(figure_or_dot, str):
|
140
|
+
dot = figure_or_dot
|
141
|
+
engine = "dot"
|
142
|
+
else:
|
143
|
+
raise StreamlitAPIException(
|
144
|
+
"Unhandled type for graphviz chart: %s" % type(figure_or_dot)
|
145
|
+
)
|
146
|
+
|
147
|
+
proto.spec = dot
|
148
|
+
proto.engine = engine
|
149
|
+
proto.use_container_width = use_container_width
|
150
|
+
proto.element_id = element_id
|
@@ -0,0 +1,302 @@
|
|
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 enum import Enum
|
18
|
+
from typing import TYPE_CHECKING, Literal, Union, cast
|
19
|
+
|
20
|
+
from typing_extensions import TypeAlias
|
21
|
+
|
22
|
+
from streamlit.errors import StreamlitAPIException
|
23
|
+
from streamlit.proto.Heading_pb2 import Heading as HeadingProto
|
24
|
+
from streamlit.runtime.metrics_util import gather_metrics
|
25
|
+
from streamlit.string_util import clean_text
|
26
|
+
|
27
|
+
if TYPE_CHECKING:
|
28
|
+
from streamlit.delta_generator import DeltaGenerator
|
29
|
+
from streamlit.type_util import SupportsStr
|
30
|
+
|
31
|
+
|
32
|
+
class HeadingProtoTag(Enum):
|
33
|
+
TITLE_TAG = "h1"
|
34
|
+
HEADER_TAG = "h2"
|
35
|
+
SUBHEADER_TAG = "h3"
|
36
|
+
|
37
|
+
|
38
|
+
Anchor: TypeAlias = Union[str, Literal[False], None]
|
39
|
+
Divider: TypeAlias = Union[bool, str, None]
|
40
|
+
|
41
|
+
|
42
|
+
class HeadingMixin:
|
43
|
+
@gather_metrics("header")
|
44
|
+
def header(
|
45
|
+
self,
|
46
|
+
body: SupportsStr,
|
47
|
+
anchor: Anchor = None,
|
48
|
+
*, # keyword-only arguments:
|
49
|
+
help: str | None = None,
|
50
|
+
divider: Divider = False,
|
51
|
+
) -> DeltaGenerator:
|
52
|
+
"""Display text in header formatting.
|
53
|
+
|
54
|
+
Parameters
|
55
|
+
----------
|
56
|
+
body : str
|
57
|
+
The text 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
|
+
anchor : str or False
|
67
|
+
The anchor name of the header that can be accessed with #anchor
|
68
|
+
in the URL. If omitted, it generates an anchor using the body.
|
69
|
+
If False, the anchor is not shown in the UI.
|
70
|
+
|
71
|
+
help : str or None
|
72
|
+
A tooltip that gets displayed next to the header. If this is
|
73
|
+
``None`` (default), no tooltip is displayed.
|
74
|
+
|
75
|
+
The tooltip can optionally contain GitHub-flavored Markdown,
|
76
|
+
including the Markdown directives described in the ``body``
|
77
|
+
parameter of ``st.markdown``.
|
78
|
+
|
79
|
+
divider : bool or “blue”, “green”, “orange”, “red”, “violet”, “gray”/"grey", or “rainbow”
|
80
|
+
Shows a colored divider below the header. If True, successive
|
81
|
+
headers will cycle through divider colors. That is, the first
|
82
|
+
header will have a blue line, the second header will have a
|
83
|
+
green line, and so on. If a string, the color can be set to one of
|
84
|
+
the following: blue, green, orange, red, violet, gray/grey, or
|
85
|
+
rainbow.
|
86
|
+
|
87
|
+
Examples
|
88
|
+
--------
|
89
|
+
>>> import streamlit as st
|
90
|
+
>>>
|
91
|
+
>>> st.header("_Streamlit_ is :blue[cool] :sunglasses:")
|
92
|
+
>>> st.header("This is a header with a divider", divider="gray")
|
93
|
+
>>> st.header("These headers have rotating dividers", divider=True)
|
94
|
+
>>> st.header("One", divider=True)
|
95
|
+
>>> st.header("Two", divider=True)
|
96
|
+
>>> st.header("Three", divider=True)
|
97
|
+
>>> st.header("Four", divider=True)
|
98
|
+
|
99
|
+
.. output::
|
100
|
+
https://doc-header.streamlit.app/
|
101
|
+
height: 600px
|
102
|
+
|
103
|
+
"""
|
104
|
+
return self.dg._enqueue(
|
105
|
+
"heading",
|
106
|
+
HeadingMixin._create_heading_proto(
|
107
|
+
tag=HeadingProtoTag.HEADER_TAG,
|
108
|
+
body=body,
|
109
|
+
anchor=anchor,
|
110
|
+
help=help,
|
111
|
+
divider=divider,
|
112
|
+
),
|
113
|
+
)
|
114
|
+
|
115
|
+
@gather_metrics("subheader")
|
116
|
+
def subheader(
|
117
|
+
self,
|
118
|
+
body: SupportsStr,
|
119
|
+
anchor: Anchor = None,
|
120
|
+
*, # keyword-only arguments:
|
121
|
+
help: str | None = None,
|
122
|
+
divider: Divider = False,
|
123
|
+
) -> DeltaGenerator:
|
124
|
+
"""Display text in subheader formatting.
|
125
|
+
|
126
|
+
Parameters
|
127
|
+
----------
|
128
|
+
body : str
|
129
|
+
The text to display as GitHub-flavored Markdown. Syntax
|
130
|
+
information can be found at: https://github.github.com/gfm.
|
131
|
+
|
132
|
+
See the ``body`` parameter of |st.markdown|_ for additional,
|
133
|
+
supported Markdown directives.
|
134
|
+
|
135
|
+
.. |st.markdown| replace:: ``st.markdown``
|
136
|
+
.. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
|
137
|
+
|
138
|
+
anchor : str or False
|
139
|
+
The anchor name of the header that can be accessed with #anchor
|
140
|
+
in the URL. If omitted, it generates an anchor using the body.
|
141
|
+
If False, the anchor is not shown in the UI.
|
142
|
+
|
143
|
+
help : str or None
|
144
|
+
A tooltip that gets displayed next to the subheader. If this is
|
145
|
+
``None`` (default), no tooltip is displayed.
|
146
|
+
|
147
|
+
The tooltip can optionally contain GitHub-flavored Markdown,
|
148
|
+
including the Markdown directives described in the ``body``
|
149
|
+
parameter of ``st.markdown``.
|
150
|
+
|
151
|
+
divider : bool or “blue”, “green”, “orange”, “red”, “violet”, “gray”/"grey", or “rainbow”
|
152
|
+
Shows a colored divider below the header. If True, successive
|
153
|
+
headers will cycle through divider colors. That is, the first
|
154
|
+
header will have a blue line, the second header will have a
|
155
|
+
green line, and so on. If a string, the color can be set to one of
|
156
|
+
the following: blue, green, orange, red, violet, gray/grey, or
|
157
|
+
rainbow.
|
158
|
+
|
159
|
+
Examples
|
160
|
+
--------
|
161
|
+
>>> import streamlit as st
|
162
|
+
>>>
|
163
|
+
>>> st.subheader("_Streamlit_ is :blue[cool] :sunglasses:")
|
164
|
+
>>> st.subheader("This is a subheader with a divider", divider="gray")
|
165
|
+
>>> st.subheader("These subheaders have rotating dividers", divider=True)
|
166
|
+
>>> st.subheader("One", divider=True)
|
167
|
+
>>> st.subheader("Two", divider=True)
|
168
|
+
>>> st.subheader("Three", divider=True)
|
169
|
+
>>> st.subheader("Four", divider=True)
|
170
|
+
|
171
|
+
.. output::
|
172
|
+
https://doc-subheader.streamlit.app/
|
173
|
+
height: 500px
|
174
|
+
|
175
|
+
"""
|
176
|
+
return self.dg._enqueue(
|
177
|
+
"heading",
|
178
|
+
HeadingMixin._create_heading_proto(
|
179
|
+
tag=HeadingProtoTag.SUBHEADER_TAG,
|
180
|
+
body=body,
|
181
|
+
anchor=anchor,
|
182
|
+
help=help,
|
183
|
+
divider=divider,
|
184
|
+
),
|
185
|
+
)
|
186
|
+
|
187
|
+
@gather_metrics("title")
|
188
|
+
def title(
|
189
|
+
self,
|
190
|
+
body: SupportsStr,
|
191
|
+
anchor: Anchor = None,
|
192
|
+
*, # keyword-only arguments:
|
193
|
+
help: str | None = None,
|
194
|
+
) -> DeltaGenerator:
|
195
|
+
"""Display text in title formatting.
|
196
|
+
|
197
|
+
Each document should have a single `st.title()`, although this is not
|
198
|
+
enforced.
|
199
|
+
|
200
|
+
Parameters
|
201
|
+
----------
|
202
|
+
body : str
|
203
|
+
The text to display as GitHub-flavored Markdown. Syntax
|
204
|
+
information can be found at: https://github.github.com/gfm.
|
205
|
+
|
206
|
+
See the ``body`` parameter of |st.markdown|_ for additional,
|
207
|
+
supported Markdown directives.
|
208
|
+
|
209
|
+
.. |st.markdown| replace:: ``st.markdown``
|
210
|
+
.. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
|
211
|
+
|
212
|
+
anchor : str or False
|
213
|
+
The anchor name of the header that can be accessed with #anchor
|
214
|
+
in the URL. If omitted, it generates an anchor using the body.
|
215
|
+
If False, the anchor is not shown in the UI.
|
216
|
+
|
217
|
+
help : str or None
|
218
|
+
A tooltip that gets displayed next to the title. If this is
|
219
|
+
``None`` (default), no tooltip is displayed.
|
220
|
+
|
221
|
+
The tooltip can optionally contain GitHub-flavored Markdown,
|
222
|
+
including the Markdown directives described in the ``body``
|
223
|
+
parameter of ``st.markdown``.
|
224
|
+
|
225
|
+
Examples
|
226
|
+
--------
|
227
|
+
>>> import streamlit as st
|
228
|
+
>>>
|
229
|
+
>>> st.title("This is a title")
|
230
|
+
>>> st.title("_Streamlit_ is :blue[cool] :sunglasses:")
|
231
|
+
|
232
|
+
.. output::
|
233
|
+
https://doc-title.streamlit.app/
|
234
|
+
height: 220px
|
235
|
+
|
236
|
+
"""
|
237
|
+
return self.dg._enqueue(
|
238
|
+
"heading",
|
239
|
+
HeadingMixin._create_heading_proto(
|
240
|
+
tag=HeadingProtoTag.TITLE_TAG, body=body, anchor=anchor, help=help
|
241
|
+
),
|
242
|
+
)
|
243
|
+
|
244
|
+
@property
|
245
|
+
def dg(self) -> DeltaGenerator:
|
246
|
+
"""Get our DeltaGenerator."""
|
247
|
+
return cast("DeltaGenerator", self)
|
248
|
+
|
249
|
+
@staticmethod
|
250
|
+
def _handle_divider_color(divider: Divider) -> str:
|
251
|
+
if divider is True:
|
252
|
+
return "auto"
|
253
|
+
valid_colors = [
|
254
|
+
"blue",
|
255
|
+
"green",
|
256
|
+
"orange",
|
257
|
+
"red",
|
258
|
+
"violet",
|
259
|
+
"gray",
|
260
|
+
"grey",
|
261
|
+
"rainbow",
|
262
|
+
]
|
263
|
+
if divider in valid_colors:
|
264
|
+
return cast(str, divider)
|
265
|
+
else:
|
266
|
+
raise StreamlitAPIException(
|
267
|
+
f"Divider parameter has invalid value: `{divider}`. Please choose from: {', '.join(valid_colors)}."
|
268
|
+
)
|
269
|
+
|
270
|
+
@staticmethod
|
271
|
+
def _create_heading_proto(
|
272
|
+
tag: HeadingProtoTag,
|
273
|
+
body: SupportsStr,
|
274
|
+
anchor: Anchor = None,
|
275
|
+
help: str | None = None,
|
276
|
+
divider: Divider = False,
|
277
|
+
) -> HeadingProto:
|
278
|
+
proto = HeadingProto()
|
279
|
+
proto.tag = tag.value
|
280
|
+
proto.body = clean_text(body)
|
281
|
+
if divider:
|
282
|
+
proto.divider = HeadingMixin._handle_divider_color(divider)
|
283
|
+
if anchor is not None:
|
284
|
+
if anchor is False:
|
285
|
+
proto.hide_anchor = True
|
286
|
+
elif isinstance(anchor, str):
|
287
|
+
proto.anchor = anchor
|
288
|
+
elif anchor is True: # type: ignore
|
289
|
+
raise StreamlitAPIException(
|
290
|
+
"Anchor parameter has invalid value: %s. "
|
291
|
+
"Supported values: None, any string or False" % anchor
|
292
|
+
)
|
293
|
+
else:
|
294
|
+
raise StreamlitAPIException(
|
295
|
+
"Anchor parameter has invalid type: %s. "
|
296
|
+
"Supported values: None, any string or False"
|
297
|
+
% type(anchor).__name__
|
298
|
+
)
|
299
|
+
|
300
|
+
if help:
|
301
|
+
proto.help = help
|
302
|
+
return proto
|
@@ -0,0 +1,105 @@
|
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
|
17
|
+
import os
|
18
|
+
from pathlib import Path
|
19
|
+
from typing import TYPE_CHECKING, Any, cast
|
20
|
+
|
21
|
+
from streamlit.proto.Html_pb2 import Html as HtmlProto
|
22
|
+
from streamlit.runtime.metrics_util import gather_metrics
|
23
|
+
from streamlit.string_util import clean_text
|
24
|
+
from streamlit.type_util import SupportsReprHtml, SupportsStr, has_callable_attr
|
25
|
+
|
26
|
+
if TYPE_CHECKING:
|
27
|
+
from streamlit.delta_generator import DeltaGenerator
|
28
|
+
|
29
|
+
|
30
|
+
class HtmlMixin:
|
31
|
+
@gather_metrics("html")
|
32
|
+
def html(
|
33
|
+
self,
|
34
|
+
body: str | Path | SupportsStr | SupportsReprHtml,
|
35
|
+
) -> DeltaGenerator:
|
36
|
+
"""Insert HTML into your app.
|
37
|
+
|
38
|
+
Adding custom HTML to your app impacts safety, styling, and
|
39
|
+
maintainability. We sanitize HTML with `DOMPurify
|
40
|
+
<https://github.com/cure53/DOMPurify>`_, but inserting HTML remains a
|
41
|
+
developer risk. Passing untrusted code to ``st.html`` or dynamically
|
42
|
+
loading external code can increase the risk of vulnerabilities in your
|
43
|
+
app.
|
44
|
+
|
45
|
+
``st.html`` content is **not** iframed. Executing JavaScript is not
|
46
|
+
supported at this time.
|
47
|
+
|
48
|
+
Parameters
|
49
|
+
----------
|
50
|
+
body : any
|
51
|
+
The HTML code to insert. This can be one of the following:
|
52
|
+
|
53
|
+
- A string of HTML code.
|
54
|
+
- A path to a local file with HTML code. The path can be a ``str``
|
55
|
+
or ``Path`` object. Paths can be absolute or relative to the
|
56
|
+
working directory (where you execute ``streamlit run``).
|
57
|
+
- Any object. If ``body`` is not a string or path, Streamlit will
|
58
|
+
convert the object to a string. ``body._repr_html_()`` takes
|
59
|
+
precedence over ``str(body)`` when available.
|
60
|
+
|
61
|
+
Example
|
62
|
+
-------
|
63
|
+
>>> import streamlit as st
|
64
|
+
>>>
|
65
|
+
>>> st.html(
|
66
|
+
... "<p><span style='text-decoration: line-through double red;'>Oops</span>!</p>"
|
67
|
+
... )
|
68
|
+
|
69
|
+
.. output::
|
70
|
+
https://doc-html.streamlit.app/
|
71
|
+
height: 300px
|
72
|
+
|
73
|
+
"""
|
74
|
+
html_proto = HtmlProto()
|
75
|
+
|
76
|
+
# If body supports _repr_html_, use that.
|
77
|
+
if has_callable_attr(body, "_repr_html_"):
|
78
|
+
html_proto.body = cast(SupportsReprHtml, body)._repr_html_()
|
79
|
+
|
80
|
+
# Check if the body is a file path. May include filesystem lookup.
|
81
|
+
elif isinstance(body, Path) or _is_file(body):
|
82
|
+
with open(cast(str, body), encoding="utf-8") as f:
|
83
|
+
html_proto.body = f.read()
|
84
|
+
|
85
|
+
# OK, let's just try converting to string and hope for the best.
|
86
|
+
else:
|
87
|
+
html_proto.body = clean_text(cast(SupportsStr, body))
|
88
|
+
|
89
|
+
return self.dg._enqueue("html", html_proto)
|
90
|
+
|
91
|
+
@property
|
92
|
+
def dg(self) -> DeltaGenerator:
|
93
|
+
"""Get our DeltaGenerator."""
|
94
|
+
return cast("DeltaGenerator", self)
|
95
|
+
|
96
|
+
|
97
|
+
def _is_file(obj: Any) -> bool:
|
98
|
+
"""Checks if obj is a file, and doesn't throw if not.
|
99
|
+
|
100
|
+
The "not throwing" part is important!
|
101
|
+
"""
|
102
|
+
try:
|
103
|
+
return os.path.isfile(obj)
|
104
|
+
except TypeError:
|
105
|
+
return False
|