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,191 @@
|
|
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.IFrame_pb2 import IFrame as IFrameProto
|
20
|
+
from streamlit.runtime.metrics_util import gather_metrics
|
21
|
+
|
22
|
+
if TYPE_CHECKING:
|
23
|
+
from streamlit.delta_generator import DeltaGenerator
|
24
|
+
|
25
|
+
|
26
|
+
class IframeMixin:
|
27
|
+
@gather_metrics("_iframe")
|
28
|
+
def _iframe(
|
29
|
+
self,
|
30
|
+
src: str,
|
31
|
+
width: int | None = None,
|
32
|
+
height: int | None = None,
|
33
|
+
scrolling: bool = False,
|
34
|
+
) -> DeltaGenerator:
|
35
|
+
"""Load a remote URL in an iframe.
|
36
|
+
|
37
|
+
To use this function, import it from the ``streamlit.components.v1``
|
38
|
+
module.
|
39
|
+
|
40
|
+
.. warning::
|
41
|
+
Using ``st.components.v1.iframe`` directly (instead of importing
|
42
|
+
its module) is deprecated and will be disallowed in a later version.
|
43
|
+
|
44
|
+
Parameters
|
45
|
+
----------
|
46
|
+
src : str
|
47
|
+
The URL of the page to embed.
|
48
|
+
|
49
|
+
width : int
|
50
|
+
The width of the iframe in CSS pixels. By default, this is the
|
51
|
+
app's default element width.
|
52
|
+
|
53
|
+
height : int
|
54
|
+
The height of the frame in CSS pixels. By default, this is ``150``.
|
55
|
+
|
56
|
+
scrolling : bool
|
57
|
+
Whether to allow scrolling in the iframe. If this ``False``
|
58
|
+
(default), Streamlit crops any content larger than the iframe and
|
59
|
+
does not show a scrollbar. If this is ``True``, Streamlit shows a
|
60
|
+
scrollbar when the content is larger than the iframe.
|
61
|
+
|
62
|
+
Example
|
63
|
+
-------
|
64
|
+
|
65
|
+
>>> import streamlit.components.v1 as components
|
66
|
+
>>>
|
67
|
+
>>> components.iframe("https://example.com", height=500)
|
68
|
+
|
69
|
+
"""
|
70
|
+
iframe_proto = IFrameProto()
|
71
|
+
marshall(
|
72
|
+
iframe_proto,
|
73
|
+
src=src,
|
74
|
+
width=width,
|
75
|
+
height=height,
|
76
|
+
scrolling=scrolling,
|
77
|
+
)
|
78
|
+
return self.dg._enqueue("iframe", iframe_proto)
|
79
|
+
|
80
|
+
@gather_metrics("_html")
|
81
|
+
def _html(
|
82
|
+
self,
|
83
|
+
html: str,
|
84
|
+
width: int | None = None,
|
85
|
+
height: int | None = None,
|
86
|
+
scrolling: bool = False,
|
87
|
+
) -> DeltaGenerator:
|
88
|
+
"""Display an HTML string in an iframe.
|
89
|
+
|
90
|
+
To use this function, import it from the ``streamlit.components.v1``
|
91
|
+
module.
|
92
|
+
|
93
|
+
If you want to insert HTML text into your app without an iframe, try
|
94
|
+
``st.html`` instead.
|
95
|
+
|
96
|
+
.. warning::
|
97
|
+
Using ``st.components.v1.html`` directly (instead of importing
|
98
|
+
its module) is deprecated and will be disallowed in a later version.
|
99
|
+
|
100
|
+
Parameters
|
101
|
+
----------
|
102
|
+
html : str
|
103
|
+
The HTML string to embed in the iframe.
|
104
|
+
|
105
|
+
width : int
|
106
|
+
The width of the iframe in CSS pixels. By default, this is the
|
107
|
+
app's default element width.
|
108
|
+
|
109
|
+
height : int
|
110
|
+
The height of the frame in CSS pixels. By default, this is ``150``.
|
111
|
+
|
112
|
+
scrolling : bool
|
113
|
+
Whether to allow scrolling in the iframe. If this ``False``
|
114
|
+
(default), Streamlit crops any content larger than the iframe and
|
115
|
+
does not show a scrollbar. If this is ``True``, Streamlit shows a
|
116
|
+
scrollbar when the content is larger than the iframe.
|
117
|
+
|
118
|
+
Example
|
119
|
+
-------
|
120
|
+
|
121
|
+
>>> import streamlit.components.v1 as components
|
122
|
+
>>>
|
123
|
+
>>> components.html(
|
124
|
+
>>> "<p><span style='text-decoration: line-through double red;'>Oops</span>!</p>"
|
125
|
+
>>> )
|
126
|
+
|
127
|
+
"""
|
128
|
+
iframe_proto = IFrameProto()
|
129
|
+
marshall(
|
130
|
+
iframe_proto,
|
131
|
+
srcdoc=html,
|
132
|
+
width=width,
|
133
|
+
height=height,
|
134
|
+
scrolling=scrolling,
|
135
|
+
)
|
136
|
+
return self.dg._enqueue("iframe", iframe_proto)
|
137
|
+
|
138
|
+
@property
|
139
|
+
def dg(self) -> DeltaGenerator:
|
140
|
+
"""Get our DeltaGenerator."""
|
141
|
+
return cast("DeltaGenerator", self)
|
142
|
+
|
143
|
+
|
144
|
+
def marshall(
|
145
|
+
proto: IFrameProto,
|
146
|
+
src: str | None = None,
|
147
|
+
srcdoc: str | None = None,
|
148
|
+
width: int | None = None,
|
149
|
+
height: int | None = None,
|
150
|
+
scrolling: bool = False,
|
151
|
+
) -> None:
|
152
|
+
"""Marshalls data into an IFrame proto.
|
153
|
+
|
154
|
+
These parameters correspond directly to <iframe> attributes, which are
|
155
|
+
described in more detail at
|
156
|
+
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe.
|
157
|
+
|
158
|
+
Parameters
|
159
|
+
----------
|
160
|
+
proto : IFrame protobuf
|
161
|
+
The protobuf object to marshall data into.
|
162
|
+
src : str
|
163
|
+
The URL of the page to embed.
|
164
|
+
srcdoc : str
|
165
|
+
Inline HTML to embed. Overrides src.
|
166
|
+
width : int
|
167
|
+
The width of the frame in CSS pixels. Defaults to the app's
|
168
|
+
default element width.
|
169
|
+
height : int
|
170
|
+
The height of the frame in CSS pixels. Defaults to 150.
|
171
|
+
scrolling : bool
|
172
|
+
If true, show a scrollbar when the content is larger than the iframe.
|
173
|
+
Otherwise, never show a scrollbar.
|
174
|
+
|
175
|
+
"""
|
176
|
+
if src is not None:
|
177
|
+
proto.src = src
|
178
|
+
|
179
|
+
if srcdoc is not None:
|
180
|
+
proto.srcdoc = srcdoc
|
181
|
+
|
182
|
+
if width is not None:
|
183
|
+
proto.width = width
|
184
|
+
proto.has_width = True
|
185
|
+
|
186
|
+
if height is not None:
|
187
|
+
proto.height = height
|
188
|
+
else:
|
189
|
+
proto.height = 150
|
190
|
+
|
191
|
+
proto.scrolling = scrolling
|
@@ -0,0 +1,196 @@
|
|
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
|
+
# Some casts in this file are only occasionally necessary depending on the
|
16
|
+
# user's Python version, and mypy doesn't have a good way of toggling this
|
17
|
+
# specific config option at a per-line level.
|
18
|
+
# mypy: no-warn-unused-ignores
|
19
|
+
|
20
|
+
"""Image marshalling."""
|
21
|
+
|
22
|
+
from __future__ import annotations
|
23
|
+
|
24
|
+
from typing import TYPE_CHECKING, Literal, Union, cast
|
25
|
+
|
26
|
+
from typing_extensions import TypeAlias
|
27
|
+
|
28
|
+
from streamlit.deprecation_util import show_deprecation_warning
|
29
|
+
from streamlit.elements.lib.image_utils import (
|
30
|
+
Channels,
|
31
|
+
ImageFormatOrAuto,
|
32
|
+
ImageOrImageList,
|
33
|
+
WidthBehavior,
|
34
|
+
marshall_images,
|
35
|
+
)
|
36
|
+
from streamlit.errors import StreamlitAPIException
|
37
|
+
from streamlit.proto.Image_pb2 import ImageList as ImageListProto
|
38
|
+
from streamlit.runtime.metrics_util import gather_metrics
|
39
|
+
|
40
|
+
if TYPE_CHECKING:
|
41
|
+
from streamlit.delta_generator import DeltaGenerator
|
42
|
+
|
43
|
+
UseColumnWith: TypeAlias = Union[Literal["auto", "always", "never"], bool, None]
|
44
|
+
|
45
|
+
|
46
|
+
class ImageMixin:
|
47
|
+
@gather_metrics("image")
|
48
|
+
def image(
|
49
|
+
self,
|
50
|
+
image: ImageOrImageList,
|
51
|
+
# TODO: Narrow type of caption, dependent on type of image,
|
52
|
+
# by way of overload
|
53
|
+
caption: str | list[str] | None = None,
|
54
|
+
width: int | None = None,
|
55
|
+
use_column_width: UseColumnWith = None,
|
56
|
+
clamp: bool = False,
|
57
|
+
channels: Channels = "RGB",
|
58
|
+
output_format: ImageFormatOrAuto = "auto",
|
59
|
+
*,
|
60
|
+
use_container_width: bool = False,
|
61
|
+
) -> DeltaGenerator:
|
62
|
+
"""Display an image or list of images.
|
63
|
+
|
64
|
+
Parameters
|
65
|
+
----------
|
66
|
+
image : numpy.ndarray, BytesIO, str, Path, or list of these
|
67
|
+
The image to display. This can be one of the following:
|
68
|
+
|
69
|
+
- A URL (string) for a hosted image.
|
70
|
+
- A path to a local image file. The path can be a ``str``
|
71
|
+
or ``Path`` object. Paths can be absolute or relative to the
|
72
|
+
working directory (where you execute ``streamlit run``).
|
73
|
+
- An SVG string like ``<svg xmlns=...</svg>``.
|
74
|
+
- A byte array defining an image. This includes monochrome images of
|
75
|
+
shape (w,h) or (w,h,1), color images of shape (w,h,3), or RGBA
|
76
|
+
images of shape (w,h,4), where w and h are the image width and
|
77
|
+
height, respectively.
|
78
|
+
- A list of any of the above. Streamlit displays the list as a
|
79
|
+
row of images that overflow to additional rows as needed.
|
80
|
+
caption : str or list of str
|
81
|
+
Image caption(s). If this is ``None`` (default), no caption is
|
82
|
+
displayed. If ``image`` is a list of multiple images, ``caption``
|
83
|
+
must be a list of captions (one caption for each image) or
|
84
|
+
``None``.
|
85
|
+
|
86
|
+
Captions can optionally contain GitHub-flavored Markdown. Syntax
|
87
|
+
information can be found at: https://github.github.com/gfm.
|
88
|
+
|
89
|
+
See the ``body`` parameter of |st.markdown|_ for additional,
|
90
|
+
supported Markdown directives.
|
91
|
+
|
92
|
+
.. |st.markdown| replace:: ``st.markdown``
|
93
|
+
.. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
|
94
|
+
width : int or None
|
95
|
+
Image width. If this is ``None`` (default), Streamlit will use the
|
96
|
+
image's native width, up to the width of the parent container.
|
97
|
+
When using an SVG image without a default width, you should declare
|
98
|
+
``width`` or use ``use_container_width=True``.
|
99
|
+
use_column_width : "auto", "always", "never", or bool
|
100
|
+
If "auto", set the image's width to its natural size,
|
101
|
+
but do not exceed the width of the column.
|
102
|
+
If "always" or True, set the image's width to the column width.
|
103
|
+
If "never" or False, set the image's width to its natural size.
|
104
|
+
Note: if set, `use_column_width` takes precedence over the `width` parameter.
|
105
|
+
clamp : bool
|
106
|
+
Whether to clamp image pixel values to a valid range (0-255 per
|
107
|
+
channel). This is only used for byte array images; the parameter is
|
108
|
+
ignored for image URLs and files. If this is ``False`` (default)
|
109
|
+
and an image has an out-of-range value, a ``RuntimeError`` will be
|
110
|
+
raised.
|
111
|
+
channels : "RGB" or "BGR"
|
112
|
+
The color format when ``image`` is an ``nd.array``. This is ignored
|
113
|
+
for other image types. If this is ``"RGB"`` (default),
|
114
|
+
``image[:, :, 0]`` is the red channel, ``image[:, :, 1]`` is the
|
115
|
+
green channel, and ``image[:, :, 2]`` is the blue channel. For
|
116
|
+
images coming from libraries like OpenCV, you should set this to
|
117
|
+
``"BGR"`` instead.
|
118
|
+
output_format : "JPEG", "PNG", or "auto"
|
119
|
+
The output format to use when transferring the image data. If this
|
120
|
+
is ``"auto"`` (default), Streamlit identifies the compression type
|
121
|
+
based on the type and format of the image. Photos should use the
|
122
|
+
``"JPEG"`` format for lossy compression while diagrams should use
|
123
|
+
the ``"PNG"`` format for lossless compression.
|
124
|
+
|
125
|
+
use_container_width : bool
|
126
|
+
Whether to override ``width`` with the width of the parent
|
127
|
+
container. If ``use_container_width`` is ``False`` (default),
|
128
|
+
Streamlit sets the image's width according to ``width``. If
|
129
|
+
``use_container_width`` is ``True``, Streamlit sets the width of
|
130
|
+
the image to match the width of the parent container.
|
131
|
+
|
132
|
+
.. deprecated::
|
133
|
+
``use_column_width`` is deprecated and will be removed in a future
|
134
|
+
release. Please use the ``use_container_width`` parameter instead.
|
135
|
+
|
136
|
+
Example
|
137
|
+
-------
|
138
|
+
>>> import streamlit as st
|
139
|
+
>>> st.image("sunrise.jpg", caption="Sunrise by the mountains")
|
140
|
+
|
141
|
+
.. output::
|
142
|
+
https://doc-image.streamlit.app/
|
143
|
+
height: 710px
|
144
|
+
|
145
|
+
"""
|
146
|
+
|
147
|
+
if use_container_width is True and use_column_width is not None:
|
148
|
+
raise StreamlitAPIException(
|
149
|
+
"`use_container_width` and `use_column_width` cannot be set at the same time.",
|
150
|
+
"Please utilize `use_container_width` since `use_column_width` is deprecated.",
|
151
|
+
)
|
152
|
+
|
153
|
+
image_width: int = (
|
154
|
+
WidthBehavior.ORIGINAL if (width is None or width <= 0) else width
|
155
|
+
)
|
156
|
+
|
157
|
+
if use_column_width is not None:
|
158
|
+
show_deprecation_warning(
|
159
|
+
"The `use_column_width` parameter has been deprecated and will be removed "
|
160
|
+
"in a future release. Please utilize the `use_container_width` parameter instead."
|
161
|
+
)
|
162
|
+
|
163
|
+
if use_column_width == "auto":
|
164
|
+
image_width = WidthBehavior.AUTO
|
165
|
+
elif use_column_width == "always" or use_column_width is True:
|
166
|
+
image_width = WidthBehavior.COLUMN
|
167
|
+
elif use_column_width == "never" or use_column_width is False:
|
168
|
+
image_width = WidthBehavior.ORIGINAL
|
169
|
+
|
170
|
+
else:
|
171
|
+
if use_container_width is True:
|
172
|
+
image_width = WidthBehavior.MAX_IMAGE_OR_CONTAINER
|
173
|
+
elif image_width is not None and image_width > 0:
|
174
|
+
# Use the given width. It will be capped on the frontend if it
|
175
|
+
# exceeds the container width.
|
176
|
+
pass
|
177
|
+
elif use_container_width is False:
|
178
|
+
image_width = WidthBehavior.MIN_IMAGE_OR_CONTAINER
|
179
|
+
|
180
|
+
image_list_proto = ImageListProto()
|
181
|
+
marshall_images(
|
182
|
+
self.dg._get_delta_path_str(),
|
183
|
+
image,
|
184
|
+
caption,
|
185
|
+
image_width,
|
186
|
+
image_list_proto,
|
187
|
+
clamp,
|
188
|
+
channels,
|
189
|
+
output_format,
|
190
|
+
)
|
191
|
+
return self.dg._enqueue("imgs", image_list_proto)
|
192
|
+
|
193
|
+
@property
|
194
|
+
def dg(self) -> DeltaGenerator:
|
195
|
+
"""Get our DeltaGenerator."""
|
196
|
+
return cast("DeltaGenerator", self)
|
@@ -0,0 +1,139 @@
|
|
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 json
|
18
|
+
import types
|
19
|
+
from collections import ChainMap, UserDict
|
20
|
+
from typing import TYPE_CHECKING, Any, cast
|
21
|
+
|
22
|
+
from streamlit.proto.Json_pb2 import Json as JsonProto
|
23
|
+
from streamlit.runtime.metrics_util import gather_metrics
|
24
|
+
from streamlit.type_util import (
|
25
|
+
is_custom_dict,
|
26
|
+
is_list_like,
|
27
|
+
is_namedtuple,
|
28
|
+
is_pydantic_model,
|
29
|
+
)
|
30
|
+
|
31
|
+
if TYPE_CHECKING:
|
32
|
+
from streamlit.delta_generator import DeltaGenerator
|
33
|
+
|
34
|
+
|
35
|
+
def _ensure_serialization(o: object) -> str | list[Any]:
|
36
|
+
"""A repr function for json.dumps default arg, which tries to serialize sets
|
37
|
+
as lists."""
|
38
|
+
return list(o) if isinstance(o, set) else repr(o)
|
39
|
+
|
40
|
+
|
41
|
+
class JsonMixin:
|
42
|
+
@gather_metrics("json")
|
43
|
+
def json(
|
44
|
+
self,
|
45
|
+
body: object,
|
46
|
+
*, # keyword-only arguments:
|
47
|
+
expanded: bool | int = True,
|
48
|
+
) -> DeltaGenerator:
|
49
|
+
"""Display an object or string as a pretty-printed, interactive JSON string.
|
50
|
+
|
51
|
+
Parameters
|
52
|
+
----------
|
53
|
+
|
54
|
+
body : object or str
|
55
|
+
The object to print as JSON. All referenced objects should be
|
56
|
+
serializable to JSON as well. If object is a string, we assume it
|
57
|
+
contains serialized JSON.
|
58
|
+
|
59
|
+
expanded : bool or int
|
60
|
+
The initial expansion state of the JSON element. This can be one
|
61
|
+
of the following:
|
62
|
+
|
63
|
+
- ``True`` (default): The element is fully expanded.
|
64
|
+
- ``False``: The element is fully collapsed.
|
65
|
+
- An integer: The element is expanded to the depth specified. The
|
66
|
+
integer must be non-negative. ``expanded=0`` is equivalent to
|
67
|
+
``expanded=False``.
|
68
|
+
|
69
|
+
Regardless of the initial expansion state, users can collapse or
|
70
|
+
expand any key-value pair to show or hide any part of the object.
|
71
|
+
|
72
|
+
Example
|
73
|
+
-------
|
74
|
+
>>> import streamlit as st
|
75
|
+
>>>
|
76
|
+
>>> st.json(
|
77
|
+
... {
|
78
|
+
... "foo": "bar",
|
79
|
+
... "stuff": [
|
80
|
+
... "stuff 1",
|
81
|
+
... "stuff 2",
|
82
|
+
... "stuff 3",
|
83
|
+
... ],
|
84
|
+
... "level1": {"level2": {"level3": {"a": "b"}}},
|
85
|
+
... },
|
86
|
+
... expanded=2,
|
87
|
+
... )
|
88
|
+
|
89
|
+
.. output::
|
90
|
+
https://doc-json.streamlit.app/
|
91
|
+
height: 385px
|
92
|
+
|
93
|
+
"""
|
94
|
+
|
95
|
+
if is_custom_dict(body):
|
96
|
+
body = body.to_dict()
|
97
|
+
|
98
|
+
if is_namedtuple(body):
|
99
|
+
body = body._asdict()
|
100
|
+
|
101
|
+
if isinstance(
|
102
|
+
body, (ChainMap, types.MappingProxyType, UserDict)
|
103
|
+
) or is_pydantic_model(body):
|
104
|
+
body = dict(body) # type: ignore
|
105
|
+
|
106
|
+
if is_list_like(body):
|
107
|
+
body = list(body)
|
108
|
+
|
109
|
+
if not isinstance(body, str):
|
110
|
+
try:
|
111
|
+
# Serialize body to string and try to interpret sets as lists
|
112
|
+
body = json.dumps(body, default=_ensure_serialization)
|
113
|
+
except TypeError as err:
|
114
|
+
self.dg.warning(
|
115
|
+
"Warning: this data structure was not fully serializable as "
|
116
|
+
f"JSON due to one or more unexpected keys. (Error was: {err})"
|
117
|
+
)
|
118
|
+
body = json.dumps(body, skipkeys=True, default=_ensure_serialization)
|
119
|
+
|
120
|
+
json_proto = JsonProto()
|
121
|
+
json_proto.body = body
|
122
|
+
|
123
|
+
if isinstance(expanded, bool):
|
124
|
+
json_proto.expanded = expanded
|
125
|
+
elif isinstance(expanded, int):
|
126
|
+
json_proto.expanded = True
|
127
|
+
json_proto.max_expand_depth = expanded
|
128
|
+
else:
|
129
|
+
raise TypeError(
|
130
|
+
f"The type {str(type(expanded))} of `expanded` is not supported"
|
131
|
+
", must be bool or int."
|
132
|
+
)
|
133
|
+
|
134
|
+
return self.dg._enqueue("json", json_proto)
|
135
|
+
|
136
|
+
@property
|
137
|
+
def dg(self) -> DeltaGenerator:
|
138
|
+
"""Get our DeltaGenerator."""
|
139
|
+
return cast("DeltaGenerator", self)
|