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,545 @@
|
|
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 numbers
|
18
|
+
from dataclasses import dataclass
|
19
|
+
from textwrap import dedent
|
20
|
+
from typing import TYPE_CHECKING, Literal, TypeVar, Union, cast, overload
|
21
|
+
|
22
|
+
from typing_extensions import TypeAlias
|
23
|
+
|
24
|
+
from streamlit.elements.lib.form_utils import current_form_id
|
25
|
+
from streamlit.elements.lib.js_number import JSNumber, JSNumberBoundsException
|
26
|
+
from streamlit.elements.lib.policies import (
|
27
|
+
check_widget_policies,
|
28
|
+
maybe_raise_label_warnings,
|
29
|
+
)
|
30
|
+
from streamlit.elements.lib.utils import (
|
31
|
+
Key,
|
32
|
+
LabelVisibility,
|
33
|
+
compute_and_register_element_id,
|
34
|
+
get_label_visibility_proto_value,
|
35
|
+
to_key,
|
36
|
+
)
|
37
|
+
from streamlit.errors import (
|
38
|
+
StreamlitInvalidNumberFormatError,
|
39
|
+
StreamlitJSNumberBoundsError,
|
40
|
+
StreamlitMixedNumericTypesError,
|
41
|
+
StreamlitValueAboveMaxError,
|
42
|
+
StreamlitValueBelowMinError,
|
43
|
+
)
|
44
|
+
from streamlit.proto.NumberInput_pb2 import NumberInput as NumberInputProto
|
45
|
+
from streamlit.runtime.metrics_util import gather_metrics
|
46
|
+
from streamlit.runtime.scriptrunner import ScriptRunContext, get_script_run_ctx
|
47
|
+
from streamlit.runtime.state import (
|
48
|
+
WidgetArgs,
|
49
|
+
WidgetCallback,
|
50
|
+
WidgetKwargs,
|
51
|
+
get_session_state,
|
52
|
+
register_widget,
|
53
|
+
)
|
54
|
+
|
55
|
+
if TYPE_CHECKING:
|
56
|
+
from streamlit.delta_generator import DeltaGenerator
|
57
|
+
|
58
|
+
|
59
|
+
Number: TypeAlias = Union[int, float]
|
60
|
+
IntOrNone = TypeVar("IntOrNone", int, None)
|
61
|
+
FloatOrNone = TypeVar("FloatOrNone", float, None)
|
62
|
+
|
63
|
+
|
64
|
+
@dataclass
|
65
|
+
class NumberInputSerde:
|
66
|
+
value: Number | None
|
67
|
+
data_type: int
|
68
|
+
|
69
|
+
def serialize(self, v: Number | None) -> Number | None:
|
70
|
+
return v
|
71
|
+
|
72
|
+
def deserialize(
|
73
|
+
self, ui_value: Number | None, widget_id: str = ""
|
74
|
+
) -> Number | None:
|
75
|
+
val: Number | None = ui_value if ui_value is not None else self.value
|
76
|
+
|
77
|
+
if val is not None and self.data_type == NumberInputProto.INT:
|
78
|
+
val = int(val)
|
79
|
+
|
80
|
+
return val
|
81
|
+
|
82
|
+
|
83
|
+
class NumberInputMixin:
|
84
|
+
# For easier readability, all the arguments with un-changing types across these overload signatures have been
|
85
|
+
# collapsed onto a single line.
|
86
|
+
|
87
|
+
# fmt: off
|
88
|
+
# If "min_value: int" is given and all other numerical inputs are
|
89
|
+
# "int"s or not provided (value optionally being "min"), return "int"
|
90
|
+
# If "min_value: int, value: None" is given and all other numerical inputs
|
91
|
+
# are "int"s or not provided, return "int | None"
|
92
|
+
@overload
|
93
|
+
def number_input(
|
94
|
+
self,
|
95
|
+
label: str,
|
96
|
+
min_value: int,
|
97
|
+
max_value: int | None = None,
|
98
|
+
value: IntOrNone | Literal["min"] = "min",
|
99
|
+
step: int | None = None,
|
100
|
+
format: str | None = None, key: Key | None = None, help: str | None = None, on_change: WidgetCallback | None = None, args: WidgetArgs | None = None, kwargs: WidgetKwargs | None = None, *, placeholder: str | None = None, disabled: bool = False, label_visibility: LabelVisibility = "visible"
|
101
|
+
) -> int | IntOrNone:
|
102
|
+
...
|
103
|
+
|
104
|
+
# If "max_value: int" is given and all other numerical inputs are
|
105
|
+
# "int"s or not provided (value optionally being "min"), return "int"
|
106
|
+
# If "max_value: int, value=None" is given and all other numerical inputs
|
107
|
+
# are "int"s or not provided, return "int | None"
|
108
|
+
@overload
|
109
|
+
def number_input(
|
110
|
+
self,
|
111
|
+
label: str,
|
112
|
+
min_value: int | None = None,
|
113
|
+
*,
|
114
|
+
max_value: int,
|
115
|
+
value: IntOrNone | Literal["min"] = "min",
|
116
|
+
step: int | None = None,
|
117
|
+
format: str | None = None, key: Key | None = None, help: str | None = None, on_change: WidgetCallback | None = None, args: WidgetArgs | None = None, kwargs: WidgetKwargs | None = None, placeholder: str | None = None, disabled: bool = False, label_visibility: LabelVisibility = "visible"
|
118
|
+
) -> int | IntOrNone:
|
119
|
+
...
|
120
|
+
|
121
|
+
# If "value=int" is given and all other numerical inputs are "int"s
|
122
|
+
# or not provided, return "int"
|
123
|
+
@overload
|
124
|
+
def number_input(
|
125
|
+
self,
|
126
|
+
label: str,
|
127
|
+
min_value: int | None = None,
|
128
|
+
max_value: int | None = None,
|
129
|
+
*,
|
130
|
+
value: int,
|
131
|
+
step: int | None = None,
|
132
|
+
format: str | None = None, key: Key | None = None, help: str | None = None, on_change: WidgetCallback | None = None, args: WidgetArgs | None = None, kwargs: WidgetKwargs | None = None, placeholder: str | None = None, disabled: bool = False, label_visibility: LabelVisibility = "visible"
|
133
|
+
) -> int:
|
134
|
+
...
|
135
|
+
|
136
|
+
# If "step=int" is given and all other numerical inputs are "int"s
|
137
|
+
# or not provided (value optionally being "min"), return "int"
|
138
|
+
# If "step=int, value=None" is given and all other numerical inputs
|
139
|
+
# are "int"s or not provided, return "int | None"
|
140
|
+
@overload
|
141
|
+
def number_input(
|
142
|
+
self,
|
143
|
+
label: str,
|
144
|
+
min_value: int | None = None,
|
145
|
+
max_value: int | None = None,
|
146
|
+
value: IntOrNone | Literal["min"] = "min",
|
147
|
+
*,
|
148
|
+
step: int,
|
149
|
+
format: str | None = None, key: Key | None = None, help: str | None = None, on_change: WidgetCallback | None = None, args: WidgetArgs | None = None, kwargs: WidgetKwargs | None = None, placeholder: str | None = None, disabled: bool = False, label_visibility: LabelVisibility = "visible"
|
150
|
+
) -> int | IntOrNone:
|
151
|
+
...
|
152
|
+
|
153
|
+
# If all numerical inputs are floats (with value optionally being "min")
|
154
|
+
# or are not provided, return "float"
|
155
|
+
# If only "value=None" is given and none of the other numerical inputs
|
156
|
+
# are "int"s, return "float | None"
|
157
|
+
@overload
|
158
|
+
def number_input(
|
159
|
+
self,
|
160
|
+
label: str,
|
161
|
+
min_value: float | None = None,
|
162
|
+
max_value: float | None = None,
|
163
|
+
value: FloatOrNone | Literal["min"] = "min",
|
164
|
+
step: float | None = None,
|
165
|
+
format: str | None = None, key: Key | None = None, help: str | None = None, on_change: WidgetCallback | None = None, args: WidgetArgs | None = None, kwargs: WidgetKwargs | None = None, *, placeholder: str | None = None, disabled: bool = False, label_visibility: LabelVisibility = "visible"
|
166
|
+
) -> float | FloatOrNone:
|
167
|
+
...
|
168
|
+
# # fmt: on
|
169
|
+
|
170
|
+
@gather_metrics("number_input")
|
171
|
+
def number_input(
|
172
|
+
self,
|
173
|
+
label: str,
|
174
|
+
min_value: Number | None = None,
|
175
|
+
max_value: Number | None = None,
|
176
|
+
value: Number | Literal["min"] | None = "min",
|
177
|
+
step: Number | None = None,
|
178
|
+
format: str | None = None,
|
179
|
+
key: Key | None = None,
|
180
|
+
help: str | None = None,
|
181
|
+
on_change: WidgetCallback | None = None,
|
182
|
+
args: WidgetArgs | None = None,
|
183
|
+
kwargs: WidgetKwargs | None = None,
|
184
|
+
*, # keyword-only arguments:
|
185
|
+
placeholder: str | None = None,
|
186
|
+
disabled: bool = False,
|
187
|
+
label_visibility: LabelVisibility = "visible",
|
188
|
+
) -> Number | None:
|
189
|
+
r"""Display a numeric input widget.
|
190
|
+
|
191
|
+
.. note::
|
192
|
+
Integer values exceeding +/- ``(1<<53) - 1`` cannot be accurately
|
193
|
+
stored or returned by the widget due to serialization contstraints
|
194
|
+
between the Python server and JavaScript client. You must handle
|
195
|
+
such numbers as floats, leading to a loss in precision.
|
196
|
+
|
197
|
+
Parameters
|
198
|
+
----------
|
199
|
+
label : str
|
200
|
+
A short label explaining to the user what this input is for.
|
201
|
+
The label can optionally contain GitHub-flavored Markdown of the
|
202
|
+
following types: Bold, Italics, Strikethroughs, Inline Code, Links,
|
203
|
+
and Images. Images display like icons, with a max height equal to
|
204
|
+
the font height.
|
205
|
+
|
206
|
+
Unsupported Markdown elements are unwrapped so only their children
|
207
|
+
(text contents) render. Display unsupported elements as literal
|
208
|
+
characters by backslash-escaping them. E.g.,
|
209
|
+
``"1\. Not an ordered list"``.
|
210
|
+
|
211
|
+
See the ``body`` parameter of |st.markdown|_ for additional,
|
212
|
+
supported Markdown directives.
|
213
|
+
|
214
|
+
For accessibility reasons, you should never set an empty label, but
|
215
|
+
you can hide it with ``label_visibility`` if needed. In the future,
|
216
|
+
we may disallow empty labels by raising an exception.
|
217
|
+
|
218
|
+
.. |st.markdown| replace:: ``st.markdown``
|
219
|
+
.. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
|
220
|
+
|
221
|
+
min_value : int, float, or None
|
222
|
+
The minimum permitted value.
|
223
|
+
If None, there will be no minimum.
|
224
|
+
|
225
|
+
max_value : int, float, or None
|
226
|
+
The maximum permitted value.
|
227
|
+
If None, there will be no maximum.
|
228
|
+
|
229
|
+
value : int, float, "min" or None
|
230
|
+
The value of this widget when it first renders. If ``None``, will initialize
|
231
|
+
empty and return ``None`` until the user provides input.
|
232
|
+
If "min" (default), will initialize with min_value, or 0.0 if
|
233
|
+
min_value is None.
|
234
|
+
|
235
|
+
step : int, float, or None
|
236
|
+
The stepping interval.
|
237
|
+
Defaults to 1 if the value is an int, 0.01 otherwise.
|
238
|
+
If the value is not specified, the format parameter will be used.
|
239
|
+
|
240
|
+
format : str or None
|
241
|
+
A printf-style format string controlling how the interface should
|
242
|
+
display numbers. The output must be purely numeric. This does not
|
243
|
+
impact the return value of the widget. For more information about
|
244
|
+
the formatting specification, see `sprintf.js
|
245
|
+
<https://github.com/alexei/sprintf.js?tab=readme-ov-file#format-specification>`_.
|
246
|
+
|
247
|
+
For example, ``format="%0.1f"`` adjusts the displayed decimal
|
248
|
+
precision to only show one digit after the decimal.
|
249
|
+
|
250
|
+
key : str or int
|
251
|
+
An optional string or integer to use as the unique key for the widget.
|
252
|
+
If this is omitted, a key will be generated for the widget
|
253
|
+
based on its content. No two widgets may have the same key.
|
254
|
+
|
255
|
+
help : str or None
|
256
|
+
A tooltip that gets displayed next to the widget label. Streamlit
|
257
|
+
only displays the tooltip when ``label_visibility="visible"``. If
|
258
|
+
this is ``None`` (default), no tooltip is displayed.
|
259
|
+
|
260
|
+
The tooltip can optionally contain GitHub-flavored Markdown,
|
261
|
+
including the Markdown directives described in the ``body``
|
262
|
+
parameter of ``st.markdown``.
|
263
|
+
|
264
|
+
on_change : callable
|
265
|
+
An optional callback invoked when this number_input's value changes.
|
266
|
+
|
267
|
+
args : tuple
|
268
|
+
An optional tuple of args to pass to the callback.
|
269
|
+
|
270
|
+
kwargs : dict
|
271
|
+
An optional dict of kwargs to pass to the callback.
|
272
|
+
|
273
|
+
placeholder : str or None
|
274
|
+
An optional string displayed when the number input is empty.
|
275
|
+
If None, no placeholder is displayed.
|
276
|
+
|
277
|
+
disabled : bool
|
278
|
+
An optional boolean that disables the number input if set to
|
279
|
+
``True``. The default is ``False``.
|
280
|
+
|
281
|
+
label_visibility : "visible", "hidden", or "collapsed"
|
282
|
+
The visibility of the label. The default is ``"visible"``. If this
|
283
|
+
is ``"hidden"``, Streamlit displays an empty spacer instead of the
|
284
|
+
label, which can help keep the widget alligned with other widgets.
|
285
|
+
If this is ``"collapsed"``, Streamlit displays no label or spacer.
|
286
|
+
|
287
|
+
Returns
|
288
|
+
-------
|
289
|
+
int or float or None
|
290
|
+
The current value of the numeric input widget or ``None`` if the widget
|
291
|
+
is empty. The return type will match the data type of the value parameter.
|
292
|
+
|
293
|
+
Example
|
294
|
+
-------
|
295
|
+
>>> import streamlit as st
|
296
|
+
>>>
|
297
|
+
>>> number = st.number_input("Insert a number")
|
298
|
+
>>> st.write("The current number is ", number)
|
299
|
+
|
300
|
+
.. output::
|
301
|
+
https://doc-number-input.streamlit.app/
|
302
|
+
height: 260px
|
303
|
+
|
304
|
+
To initialize an empty number input, use ``None`` as the value:
|
305
|
+
|
306
|
+
>>> import streamlit as st
|
307
|
+
>>>
|
308
|
+
>>> number = st.number_input(
|
309
|
+
... "Insert a number", value=None, placeholder="Type a number..."
|
310
|
+
... )
|
311
|
+
>>> st.write("The current number is ", number)
|
312
|
+
|
313
|
+
.. output::
|
314
|
+
https://doc-number-input-empty.streamlit.app/
|
315
|
+
height: 260px
|
316
|
+
|
317
|
+
"""
|
318
|
+
ctx = get_script_run_ctx()
|
319
|
+
return self._number_input(
|
320
|
+
label=label,
|
321
|
+
min_value=min_value,
|
322
|
+
max_value=max_value,
|
323
|
+
value=value,
|
324
|
+
step=step,
|
325
|
+
format=format,
|
326
|
+
key=key,
|
327
|
+
help=help,
|
328
|
+
on_change=on_change,
|
329
|
+
args=args,
|
330
|
+
kwargs=kwargs,
|
331
|
+
placeholder=placeholder,
|
332
|
+
disabled=disabled,
|
333
|
+
label_visibility=label_visibility,
|
334
|
+
ctx=ctx,
|
335
|
+
)
|
336
|
+
|
337
|
+
def _number_input(
|
338
|
+
self,
|
339
|
+
label: str,
|
340
|
+
min_value: Number | None = None,
|
341
|
+
max_value: Number | None = None,
|
342
|
+
value: Number | Literal["min"] | None = "min",
|
343
|
+
step: Number | None = None,
|
344
|
+
format: str | None = None,
|
345
|
+
key: Key | None = None,
|
346
|
+
help: str | None = None,
|
347
|
+
on_change: WidgetCallback | None = None,
|
348
|
+
args: WidgetArgs | None = None,
|
349
|
+
kwargs: WidgetKwargs | None = None,
|
350
|
+
*, # keyword-only arguments:
|
351
|
+
placeholder: str | None = None,
|
352
|
+
disabled: bool = False,
|
353
|
+
label_visibility: LabelVisibility = "visible",
|
354
|
+
ctx: ScriptRunContext | None = None,
|
355
|
+
) -> Number | None:
|
356
|
+
key = to_key(key)
|
357
|
+
|
358
|
+
check_widget_policies(
|
359
|
+
self.dg,
|
360
|
+
key,
|
361
|
+
on_change,
|
362
|
+
default_value=value if value != "min" else None,
|
363
|
+
)
|
364
|
+
maybe_raise_label_warnings(label, label_visibility)
|
365
|
+
|
366
|
+
element_id = compute_and_register_element_id(
|
367
|
+
"number_input",
|
368
|
+
user_key=key,
|
369
|
+
form_id=current_form_id(self.dg),
|
370
|
+
label=label,
|
371
|
+
min_value=min_value,
|
372
|
+
max_value=max_value,
|
373
|
+
value=value,
|
374
|
+
step=step,
|
375
|
+
format=format,
|
376
|
+
help=help,
|
377
|
+
placeholder=None if placeholder is None else str(placeholder),
|
378
|
+
)
|
379
|
+
|
380
|
+
# Ensure that all arguments are of the same type.
|
381
|
+
number_input_args = [min_value, max_value, value, step]
|
382
|
+
|
383
|
+
all_int_args = all(
|
384
|
+
isinstance(a, (numbers.Integral, type(None), str))
|
385
|
+
for a in number_input_args
|
386
|
+
)
|
387
|
+
|
388
|
+
all_float_args = all(
|
389
|
+
isinstance(a, (float, type(None), str)) for a in number_input_args
|
390
|
+
)
|
391
|
+
|
392
|
+
if not all_int_args and not all_float_args:
|
393
|
+
raise StreamlitMixedNumericTypesError(value=value, min_value=min_value, max_value=max_value, step=step)
|
394
|
+
|
395
|
+
session_state = get_session_state().filtered_state
|
396
|
+
if key is not None and key in session_state and session_state[key] is None:
|
397
|
+
value = None
|
398
|
+
|
399
|
+
if value == "min":
|
400
|
+
if min_value is not None:
|
401
|
+
value = min_value
|
402
|
+
elif all_int_args and all_float_args:
|
403
|
+
value = 0.0 # if no values are provided, defaults to float
|
404
|
+
elif all_int_args:
|
405
|
+
value = 0
|
406
|
+
else:
|
407
|
+
value = 0.0
|
408
|
+
|
409
|
+
int_value = isinstance(value, numbers.Integral)
|
410
|
+
float_value = isinstance(value, float)
|
411
|
+
|
412
|
+
if value is None:
|
413
|
+
if all_int_args and not all_float_args:
|
414
|
+
# Select int type if all relevant args are ints:
|
415
|
+
int_value = True
|
416
|
+
else:
|
417
|
+
# Otherwise, defaults to float:
|
418
|
+
float_value = True
|
419
|
+
|
420
|
+
if format is None:
|
421
|
+
format = "%d" if int_value else "%0.2f"
|
422
|
+
|
423
|
+
# Warn user if they format an int type as a float or vice versa.
|
424
|
+
if format in ["%d", "%u", "%i"] and float_value:
|
425
|
+
import streamlit as st
|
426
|
+
|
427
|
+
st.warning(
|
428
|
+
"Warning: NumberInput value below has type float,"
|
429
|
+
f" but format {format} displays as integer."
|
430
|
+
)
|
431
|
+
elif format[-1] == "f" and int_value:
|
432
|
+
import streamlit as st
|
433
|
+
|
434
|
+
st.warning(
|
435
|
+
"Warning: NumberInput value below has type int so is"
|
436
|
+
f" displayed as int despite format string {format}."
|
437
|
+
)
|
438
|
+
|
439
|
+
if step is None:
|
440
|
+
step = 1 if int_value else 0.01
|
441
|
+
|
442
|
+
try:
|
443
|
+
float(format % 2)
|
444
|
+
except (TypeError, ValueError):
|
445
|
+
raise StreamlitInvalidNumberFormatError(format)
|
446
|
+
|
447
|
+
|
448
|
+
# Ensure that the value matches arguments' types.
|
449
|
+
all_ints = int_value and all_int_args
|
450
|
+
|
451
|
+
if min_value is not None and value is not None and min_value > value:
|
452
|
+
raise StreamlitValueBelowMinError(value=value, min_value=min_value)
|
453
|
+
|
454
|
+
|
455
|
+
if max_value is not None and value is not None and max_value < value:
|
456
|
+
raise StreamlitValueAboveMaxError(value=value, max_value=max_value)
|
457
|
+
|
458
|
+
# Bounds checks. JSNumber produces human-readable exceptions that
|
459
|
+
# we simply re-package as StreamlitAPIExceptions.
|
460
|
+
try:
|
461
|
+
if all_ints:
|
462
|
+
if min_value is not None:
|
463
|
+
JSNumber.validate_int_bounds(int(min_value), "`min_value`")
|
464
|
+
if max_value is not None:
|
465
|
+
JSNumber.validate_int_bounds(int(max_value), "`max_value`")
|
466
|
+
if step is not None:
|
467
|
+
JSNumber.validate_int_bounds(int(step), "`step`")
|
468
|
+
if value is not None:
|
469
|
+
JSNumber.validate_int_bounds(int(value), "`value`")
|
470
|
+
else:
|
471
|
+
if min_value is not None:
|
472
|
+
JSNumber.validate_float_bounds(min_value, "`min_value`")
|
473
|
+
if max_value is not None:
|
474
|
+
JSNumber.validate_float_bounds(max_value, "`max_value`")
|
475
|
+
if step is not None:
|
476
|
+
JSNumber.validate_float_bounds(step, "`step`")
|
477
|
+
if value is not None:
|
478
|
+
JSNumber.validate_float_bounds(value, "`value`")
|
479
|
+
except JSNumberBoundsException as e:
|
480
|
+
raise StreamlitJSNumberBoundsError(str(e))
|
481
|
+
|
482
|
+
data_type = NumberInputProto.INT if all_ints else NumberInputProto.FLOAT
|
483
|
+
|
484
|
+
number_input_proto = NumberInputProto()
|
485
|
+
number_input_proto.id = element_id
|
486
|
+
number_input_proto.data_type = data_type
|
487
|
+
number_input_proto.label = label
|
488
|
+
if value is not None:
|
489
|
+
number_input_proto.default = value
|
490
|
+
if placeholder is not None:
|
491
|
+
number_input_proto.placeholder = str(placeholder)
|
492
|
+
number_input_proto.form_id = current_form_id(self.dg)
|
493
|
+
number_input_proto.disabled = disabled
|
494
|
+
number_input_proto.label_visibility.value = get_label_visibility_proto_value(
|
495
|
+
label_visibility
|
496
|
+
)
|
497
|
+
|
498
|
+
if help is not None:
|
499
|
+
number_input_proto.help = dedent(help)
|
500
|
+
|
501
|
+
if min_value is not None:
|
502
|
+
number_input_proto.min = min_value
|
503
|
+
number_input_proto.has_min = True
|
504
|
+
|
505
|
+
if max_value is not None:
|
506
|
+
number_input_proto.max = max_value
|
507
|
+
number_input_proto.has_max = True
|
508
|
+
|
509
|
+
if step is not None:
|
510
|
+
number_input_proto.step = step
|
511
|
+
|
512
|
+
if format is not None:
|
513
|
+
number_input_proto.format = format
|
514
|
+
|
515
|
+
serde = NumberInputSerde(value, data_type)
|
516
|
+
widget_state = register_widget(
|
517
|
+
number_input_proto.id,
|
518
|
+
on_change_handler=on_change,
|
519
|
+
args=args,
|
520
|
+
kwargs=kwargs,
|
521
|
+
deserializer=serde.deserialize,
|
522
|
+
serializer=serde.serialize,
|
523
|
+
ctx=ctx,
|
524
|
+
value_type="double_value"
|
525
|
+
)
|
526
|
+
|
527
|
+
if widget_state.value_changed:
|
528
|
+
if widget_state.value is not None:
|
529
|
+
# Min/Max bounds checks when the value is updated.
|
530
|
+
if number_input_proto.has_min and widget_state.value < number_input_proto.min:
|
531
|
+
raise StreamlitValueBelowMinError(value=widget_state.value, min_value=number_input_proto.min)
|
532
|
+
|
533
|
+
if number_input_proto.has_max and widget_state.value > number_input_proto.max:
|
534
|
+
raise StreamlitValueAboveMaxError(value=widget_state.value, max_value=number_input_proto.max)
|
535
|
+
|
536
|
+
number_input_proto.value = widget_state.value
|
537
|
+
number_input_proto.set_value = True
|
538
|
+
|
539
|
+
self.dg._enqueue("number_input", number_input_proto)
|
540
|
+
return widget_state.value
|
541
|
+
|
542
|
+
@property
|
543
|
+
def dg(self) -> DeltaGenerator:
|
544
|
+
"""Get our DeltaGenerator."""
|
545
|
+
return cast("DeltaGenerator", self)
|