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
streamlit/git_util.py
ADDED
@@ -0,0 +1,173 @@
|
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
|
17
|
+
import os
|
18
|
+
import re
|
19
|
+
from typing import Any
|
20
|
+
|
21
|
+
from streamlit import util
|
22
|
+
|
23
|
+
# Github has two URLs, one that is https and one that is ssh
|
24
|
+
GITHUB_HTTP_URL = r"^https://(www\.)?github.com/(.+)/(.+)(?:.git)?$"
|
25
|
+
GITHUB_SSH_URL = r"^git@github.com:(.+)/(.+)(?:.git)?$"
|
26
|
+
|
27
|
+
# We don't support git < 2.7, because we can't get repo info without
|
28
|
+
# talking to the remote server, which results in the user being prompted
|
29
|
+
# for credentials.
|
30
|
+
MIN_GIT_VERSION = (2, 7, 0)
|
31
|
+
|
32
|
+
|
33
|
+
class GitRepo:
|
34
|
+
def __init__(self, path):
|
35
|
+
# If we have a valid repo, git_version will be a tuple of 3+ ints:
|
36
|
+
# (major, minor, patch, possible_additional_patch_number)
|
37
|
+
self.git_version: tuple[int, ...] | None = None
|
38
|
+
|
39
|
+
try:
|
40
|
+
import git
|
41
|
+
|
42
|
+
# GitPython is not fully typed, and mypy is outputting inconsistent
|
43
|
+
# type errors on Mac and Linux. We bypass type checking entirely
|
44
|
+
# by re-declaring the `git` import as an "Any".
|
45
|
+
git_package: Any = git
|
46
|
+
self.repo = git_package.Repo(path, search_parent_directories=True)
|
47
|
+
self.git_version = self.repo.git.version_info
|
48
|
+
|
49
|
+
if self.git_version >= MIN_GIT_VERSION:
|
50
|
+
git_root = self.repo.git.rev_parse("--show-toplevel")
|
51
|
+
self.module = os.path.relpath(path, git_root)
|
52
|
+
except Exception:
|
53
|
+
# The git repo must be invalid for the following reasons:
|
54
|
+
# * git binary or GitPython not installed
|
55
|
+
# * No .git folder
|
56
|
+
# * Corrupted .git folder
|
57
|
+
# * Path is invalid
|
58
|
+
self.repo = None
|
59
|
+
|
60
|
+
def __repr__(self) -> str:
|
61
|
+
return util.repr_(self)
|
62
|
+
|
63
|
+
def is_valid(self) -> bool:
|
64
|
+
"""True if there's a git repo here, and git.version >= MIN_GIT_VERSION."""
|
65
|
+
return (
|
66
|
+
self.repo is not None
|
67
|
+
and self.git_version is not None
|
68
|
+
and self.git_version >= MIN_GIT_VERSION
|
69
|
+
)
|
70
|
+
|
71
|
+
@property
|
72
|
+
def tracking_branch(self):
|
73
|
+
if not self.is_valid():
|
74
|
+
return None
|
75
|
+
|
76
|
+
if self.is_head_detached:
|
77
|
+
return None
|
78
|
+
|
79
|
+
return self.repo.active_branch.tracking_branch()
|
80
|
+
|
81
|
+
@property
|
82
|
+
def untracked_files(self):
|
83
|
+
if not self.is_valid():
|
84
|
+
return None
|
85
|
+
|
86
|
+
return self.repo.untracked_files
|
87
|
+
|
88
|
+
@property
|
89
|
+
def is_head_detached(self):
|
90
|
+
if not self.is_valid():
|
91
|
+
return False
|
92
|
+
|
93
|
+
return self.repo.head.is_detached
|
94
|
+
|
95
|
+
@property
|
96
|
+
def uncommitted_files(self):
|
97
|
+
if not self.is_valid():
|
98
|
+
return None
|
99
|
+
|
100
|
+
return [item.a_path for item in self.repo.index.diff(None)]
|
101
|
+
|
102
|
+
@property
|
103
|
+
def ahead_commits(self):
|
104
|
+
if not self.is_valid():
|
105
|
+
return None
|
106
|
+
|
107
|
+
try:
|
108
|
+
remote, branch_name = self.get_tracking_branch_remote()
|
109
|
+
remote_branch = f"{remote.name}/{branch_name}"
|
110
|
+
|
111
|
+
return list(self.repo.iter_commits(f"{remote_branch}..{branch_name}"))
|
112
|
+
except Exception:
|
113
|
+
return []
|
114
|
+
|
115
|
+
def get_tracking_branch_remote(self):
|
116
|
+
if not self.is_valid():
|
117
|
+
return None
|
118
|
+
|
119
|
+
tracking_branch = self.tracking_branch
|
120
|
+
|
121
|
+
if tracking_branch is None:
|
122
|
+
return None
|
123
|
+
|
124
|
+
remote_name, *branch = tracking_branch.name.split("/")
|
125
|
+
branch_name = "/".join(branch)
|
126
|
+
|
127
|
+
return self.repo.remote(remote_name), branch_name
|
128
|
+
|
129
|
+
def is_github_repo(self) -> bool:
|
130
|
+
if not self.is_valid():
|
131
|
+
return False
|
132
|
+
|
133
|
+
remote_info = self.get_tracking_branch_remote()
|
134
|
+
if remote_info is None:
|
135
|
+
return False
|
136
|
+
|
137
|
+
remote, _branch = remote_info
|
138
|
+
|
139
|
+
for url in remote.urls:
|
140
|
+
if (
|
141
|
+
re.match(GITHUB_HTTP_URL, url) is not None
|
142
|
+
or re.match(GITHUB_SSH_URL, url) is not None
|
143
|
+
):
|
144
|
+
return True
|
145
|
+
|
146
|
+
return False
|
147
|
+
|
148
|
+
def get_repo_info(self):
|
149
|
+
if not self.is_valid():
|
150
|
+
return None
|
151
|
+
|
152
|
+
remote_info = self.get_tracking_branch_remote()
|
153
|
+
if remote_info is None:
|
154
|
+
return None
|
155
|
+
|
156
|
+
remote, branch = remote_info
|
157
|
+
|
158
|
+
repo = None
|
159
|
+
for url in remote.urls:
|
160
|
+
https_matches = re.match(GITHUB_HTTP_URL, url)
|
161
|
+
ssh_matches = re.match(GITHUB_SSH_URL, url)
|
162
|
+
if https_matches is not None:
|
163
|
+
repo = f"{https_matches.group(2)}/{https_matches.group(3)}"
|
164
|
+
break
|
165
|
+
|
166
|
+
if ssh_matches is not None:
|
167
|
+
repo = f"{ssh_matches.group(1)}/{ssh_matches.group(2)}"
|
168
|
+
break
|
169
|
+
|
170
|
+
if repo is None:
|
171
|
+
return None
|
172
|
+
|
173
|
+
return repo, branch, self.module
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
@@ -0,0 +1,82 @@
|
|
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 typing import Any
|
16
|
+
|
17
|
+
import numpy as np
|
18
|
+
|
19
|
+
import streamlit as st
|
20
|
+
from streamlit.hello.utils import show_code
|
21
|
+
|
22
|
+
|
23
|
+
def animation_demo() -> None:
|
24
|
+
# Interactive Streamlit elements, like these sliders, return their value.
|
25
|
+
# This gives you an extremely simple interaction model.
|
26
|
+
iterations = st.sidebar.slider("Level of detail", 2, 20, 10, 1)
|
27
|
+
separation = st.sidebar.slider("Separation", 0.7, 2.0, 0.7885)
|
28
|
+
|
29
|
+
# Non-interactive elements return a placeholder to their location
|
30
|
+
# in the app. Here we're storing progress_bar to update it later.
|
31
|
+
progress_bar = st.sidebar.progress(0)
|
32
|
+
|
33
|
+
# These two elements will be filled in later, so we create a placeholder
|
34
|
+
# for them using st.empty()
|
35
|
+
frame_text = st.sidebar.empty()
|
36
|
+
image = st.empty()
|
37
|
+
|
38
|
+
m, n, s = 960, 640, 400
|
39
|
+
x = np.linspace(-m / s, m / s, num=m).reshape((1, m))
|
40
|
+
y = np.linspace(-n / s, n / s, num=n).reshape((n, 1))
|
41
|
+
|
42
|
+
for frame_num, a in enumerate(np.linspace(0.0, 4 * np.pi, 100)):
|
43
|
+
# Here were setting value for these two elements.
|
44
|
+
progress_bar.progress(frame_num)
|
45
|
+
frame_text.text("Frame %i/100" % (frame_num + 1))
|
46
|
+
|
47
|
+
# Performing some fractal wizardry.
|
48
|
+
c = separation * np.exp(1j * a)
|
49
|
+
Z = np.tile(x, (n, 1)) + 1j * np.tile(y, (1, m))
|
50
|
+
C = np.full((n, m), c)
|
51
|
+
M: Any = np.full((n, m), True, dtype=bool)
|
52
|
+
N = np.zeros((n, m))
|
53
|
+
|
54
|
+
for i in range(iterations):
|
55
|
+
Z[M] = Z[M] * Z[M] + C[M]
|
56
|
+
M[np.abs(Z) > 2] = False
|
57
|
+
N[M] = i
|
58
|
+
|
59
|
+
# Update the image placeholder by calling the image() function on it.
|
60
|
+
image.image(1.0 - (N / N.max()), use_container_width=True)
|
61
|
+
|
62
|
+
# We clear elements by calling empty on them.
|
63
|
+
progress_bar.empty()
|
64
|
+
frame_text.empty()
|
65
|
+
|
66
|
+
# Streamlit widgets automatically run the script from top to bottom. Since
|
67
|
+
# this button is not connected to any other logic, it just causes a plain
|
68
|
+
# rerun.
|
69
|
+
st.button("Rerun")
|
70
|
+
|
71
|
+
|
72
|
+
st.set_page_config(page_title="Animation demo", page_icon=":material/animation:")
|
73
|
+
st.title("Animation demo")
|
74
|
+
st.write(
|
75
|
+
"""
|
76
|
+
This app shows how you can use Streamlit to build cool animations.
|
77
|
+
It displays an animated fractal based on the Julia Set. Use the slider
|
78
|
+
to tune different parameters.
|
79
|
+
"""
|
80
|
+
)
|
81
|
+
animation_demo()
|
82
|
+
show_code(animation_demo)
|
@@ -0,0 +1,71 @@
|
|
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 urllib.error import URLError
|
16
|
+
|
17
|
+
import altair as alt
|
18
|
+
import pandas as pd
|
19
|
+
|
20
|
+
import streamlit as st
|
21
|
+
from streamlit.hello.utils import show_code
|
22
|
+
|
23
|
+
|
24
|
+
def data_frame_demo():
|
25
|
+
@st.cache_data
|
26
|
+
def get_UN_data():
|
27
|
+
AWS_BUCKET_URL = "https://streamlit-demo-data.s3-us-west-2.amazonaws.com"
|
28
|
+
df = pd.read_csv(AWS_BUCKET_URL + "/agri.csv.gz")
|
29
|
+
return df.set_index("Region")
|
30
|
+
|
31
|
+
try:
|
32
|
+
df = get_UN_data()
|
33
|
+
countries = st.multiselect(
|
34
|
+
"Choose countries", list(df.index), ["China", "United States of America"]
|
35
|
+
)
|
36
|
+
if not countries:
|
37
|
+
st.error("Please select at least one country.")
|
38
|
+
else:
|
39
|
+
data = df.loc[countries]
|
40
|
+
data /= 1000000.0
|
41
|
+
st.subheader("Gross agricultural production ($B)")
|
42
|
+
st.dataframe(data.sort_index())
|
43
|
+
|
44
|
+
data = data.T.reset_index()
|
45
|
+
data = pd.melt(data, id_vars=["index"]).rename(
|
46
|
+
columns={"index": "year", "value": "Gross Agricultural Product ($B)"}
|
47
|
+
)
|
48
|
+
chart = (
|
49
|
+
alt.Chart(data)
|
50
|
+
.mark_area(opacity=0.3)
|
51
|
+
.encode(
|
52
|
+
x="year:T",
|
53
|
+
y=alt.Y("Gross Agricultural Product ($B):Q", stack=None),
|
54
|
+
color="Region:N",
|
55
|
+
)
|
56
|
+
)
|
57
|
+
st.altair_chart(chart, use_container_width=True)
|
58
|
+
except URLError as e:
|
59
|
+
st.error(f"This demo requires internet access. Connection error: {e.reason}")
|
60
|
+
|
61
|
+
|
62
|
+
st.set_page_config(page_title="DataFrame demo", page_icon=":material/table:")
|
63
|
+
st.title("DataFrame demo")
|
64
|
+
st.write(
|
65
|
+
"""
|
66
|
+
This demo shows how to use `st.dataframe` to visualize a Pandas DataFrame.
|
67
|
+
Data courtesy of the [UN Data Explorer](http://data.un.org/Explorer.aspx).
|
68
|
+
"""
|
69
|
+
)
|
70
|
+
data_frame_demo()
|
71
|
+
show_code(data_frame_demo)
|
streamlit/hello/hello.py
ADDED
@@ -0,0 +1,37 @@
|
|
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
|
+
import streamlit as st
|
16
|
+
|
17
|
+
st.set_page_config(page_title="Hello", page_icon=":material/waving_hand:")
|
18
|
+
st.title("Welcome to Streamlit! 👋")
|
19
|
+
st.write(
|
20
|
+
"""
|
21
|
+
Streamlit is an open-source app framework built specifically for
|
22
|
+
machine learning and data science projects.
|
23
|
+
**👈 Select a demo from the sidebar** to see some examples
|
24
|
+
of what Streamlit can do!
|
25
|
+
|
26
|
+
### Want to learn more?
|
27
|
+
- Check out [streamlit.io](https://streamlit.io)
|
28
|
+
- Jump into our [documentation](https://docs.streamlit.io)
|
29
|
+
- Ask a question in our [community
|
30
|
+
forums](https://discuss.streamlit.io)
|
31
|
+
|
32
|
+
### See more complex demos
|
33
|
+
- Use a neural net to [analyze the Udacity Self-driving Car Image
|
34
|
+
Dataset](https://github.com/streamlit/demo-self-driving)
|
35
|
+
- Explore a [New York City rideshare dataset](https://github.com/streamlit/demo-uber-nyc-pickups)
|
36
|
+
"""
|
37
|
+
)
|
@@ -0,0 +1,114 @@
|
|
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 urllib.error import URLError
|
16
|
+
|
17
|
+
import pandas as pd
|
18
|
+
import pydeck as pdk
|
19
|
+
|
20
|
+
import streamlit as st
|
21
|
+
from streamlit.hello.utils import show_code
|
22
|
+
|
23
|
+
|
24
|
+
def mapping_demo():
|
25
|
+
@st.cache_data
|
26
|
+
def from_data_file(filename):
|
27
|
+
url = (
|
28
|
+
"https://raw.githubusercontent.com/streamlit/"
|
29
|
+
"example-data/master/hello/v1/%s" % filename
|
30
|
+
)
|
31
|
+
return pd.read_json(url)
|
32
|
+
|
33
|
+
try:
|
34
|
+
ALL_LAYERS = {
|
35
|
+
"Bike rentals": pdk.Layer(
|
36
|
+
"HexagonLayer",
|
37
|
+
data=from_data_file("bike_rental_stats.json"),
|
38
|
+
get_position=["lon", "lat"],
|
39
|
+
radius=200,
|
40
|
+
elevation_scale=4,
|
41
|
+
elevation_range=[0, 1000],
|
42
|
+
extruded=True,
|
43
|
+
),
|
44
|
+
"Bart stop exits": pdk.Layer(
|
45
|
+
"ScatterplotLayer",
|
46
|
+
data=from_data_file("bart_stop_stats.json"),
|
47
|
+
get_position=["lon", "lat"],
|
48
|
+
get_color=[200, 30, 0, 160],
|
49
|
+
get_radius="[exits]",
|
50
|
+
radius_scale=0.05,
|
51
|
+
),
|
52
|
+
"Bart stop names": pdk.Layer(
|
53
|
+
"TextLayer",
|
54
|
+
data=from_data_file("bart_stop_stats.json"),
|
55
|
+
get_position=["lon", "lat"],
|
56
|
+
get_text="name",
|
57
|
+
get_color=[0, 0, 0, 200],
|
58
|
+
get_size=10,
|
59
|
+
get_alignment_baseline="'bottom'",
|
60
|
+
),
|
61
|
+
"Outbound flow": pdk.Layer(
|
62
|
+
"ArcLayer",
|
63
|
+
data=from_data_file("bart_path_stats.json"),
|
64
|
+
get_source_position=["lon", "lat"],
|
65
|
+
get_target_position=["lon2", "lat2"],
|
66
|
+
get_source_color=[200, 30, 0, 160],
|
67
|
+
get_target_color=[200, 30, 0, 160],
|
68
|
+
auto_highlight=True,
|
69
|
+
width_scale=0.0001,
|
70
|
+
get_width="outbound",
|
71
|
+
width_min_pixels=3,
|
72
|
+
width_max_pixels=30,
|
73
|
+
),
|
74
|
+
}
|
75
|
+
st.sidebar.subheader("Map layers")
|
76
|
+
selected_layers = [
|
77
|
+
layer
|
78
|
+
for layer_name, layer in ALL_LAYERS.items()
|
79
|
+
if st.sidebar.checkbox(layer_name, True)
|
80
|
+
]
|
81
|
+
if selected_layers:
|
82
|
+
st.pydeck_chart(
|
83
|
+
pdk.Deck(
|
84
|
+
map_style=None,
|
85
|
+
initial_view_state={
|
86
|
+
"latitude": 37.76,
|
87
|
+
"longitude": -122.4,
|
88
|
+
"zoom": 11,
|
89
|
+
"pitch": 50,
|
90
|
+
},
|
91
|
+
layers=selected_layers,
|
92
|
+
)
|
93
|
+
)
|
94
|
+
else:
|
95
|
+
st.error("Please choose at least one layer above.")
|
96
|
+
except URLError as e:
|
97
|
+
st.error(
|
98
|
+
"""
|
99
|
+
**This demo requires internet access.**
|
100
|
+
Connection error: %s
|
101
|
+
"""
|
102
|
+
% e.reason
|
103
|
+
)
|
104
|
+
|
105
|
+
|
106
|
+
st.set_page_config(page_title="Mapping demo", page_icon=":material/public:")
|
107
|
+
st.title("Mapping demo")
|
108
|
+
st.write(
|
109
|
+
"""
|
110
|
+
This demo shows how to use `st.pydeck_chart` to display geospatial data.
|
111
|
+
"""
|
112
|
+
)
|
113
|
+
mapping_demo()
|
114
|
+
show_code(mapping_demo)
|
@@ -0,0 +1,55 @@
|
|
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
|
+
import time
|
16
|
+
|
17
|
+
import numpy as np
|
18
|
+
|
19
|
+
import streamlit as st
|
20
|
+
from streamlit.hello.utils import show_code
|
21
|
+
|
22
|
+
|
23
|
+
def plotting_demo():
|
24
|
+
progress_bar = st.sidebar.progress(0)
|
25
|
+
status_text = st.sidebar.empty()
|
26
|
+
last_rows = np.random.randn(1, 1)
|
27
|
+
chart = st.line_chart(last_rows)
|
28
|
+
|
29
|
+
for i in range(1, 101):
|
30
|
+
new_rows = last_rows[-1, :] + np.random.randn(5, 1).cumsum(axis=0)
|
31
|
+
status_text.text(f"{i}% complete")
|
32
|
+
chart.add_rows(new_rows)
|
33
|
+
progress_bar.progress(i)
|
34
|
+
last_rows = new_rows
|
35
|
+
time.sleep(0.05)
|
36
|
+
|
37
|
+
progress_bar.empty()
|
38
|
+
|
39
|
+
# Streamlit widgets automatically run the script from top to bottom. Since
|
40
|
+
# this button is not connected to any other logic, it just causes a plain
|
41
|
+
# rerun.
|
42
|
+
st.button("Rerun")
|
43
|
+
|
44
|
+
|
45
|
+
st.set_page_config(page_title="Plotting demo", page_icon=":material/show_chart:")
|
46
|
+
st.title("Plotting demo")
|
47
|
+
st.write(
|
48
|
+
"""
|
49
|
+
This demo illustrates a combination of plotting and animation with
|
50
|
+
Streamlit. We're generating a bunch of random numbers in a loop for around
|
51
|
+
5 seconds. Enjoy!
|
52
|
+
"""
|
53
|
+
)
|
54
|
+
plotting_demo()
|
55
|
+
show_code(plotting_demo)
|
@@ -0,0 +1,55 @@
|
|
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 pathlib import Path
|
16
|
+
|
17
|
+
import streamlit as st
|
18
|
+
|
19
|
+
dir_path = Path(__file__).parent
|
20
|
+
|
21
|
+
|
22
|
+
# Note that this needs to be in a method so we can have an e2e playwright test.
|
23
|
+
def run():
|
24
|
+
page = st.navigation(
|
25
|
+
[
|
26
|
+
st.Page(
|
27
|
+
dir_path / "hello.py", title="Hello", icon=":material/waving_hand:"
|
28
|
+
),
|
29
|
+
st.Page(
|
30
|
+
dir_path / "dataframe_demo.py",
|
31
|
+
title="DataFrame demo",
|
32
|
+
icon=":material/table:",
|
33
|
+
),
|
34
|
+
st.Page(
|
35
|
+
dir_path / "plotting_demo.py",
|
36
|
+
title="Plotting demo",
|
37
|
+
icon=":material/show_chart:",
|
38
|
+
),
|
39
|
+
st.Page(
|
40
|
+
dir_path / "mapping_demo.py",
|
41
|
+
title="Mapping demo",
|
42
|
+
icon=":material/public:",
|
43
|
+
),
|
44
|
+
st.Page(
|
45
|
+
dir_path / "animation_demo.py",
|
46
|
+
title="Animation demo",
|
47
|
+
icon=":material/animation:",
|
48
|
+
),
|
49
|
+
]
|
50
|
+
)
|
51
|
+
page.run()
|
52
|
+
|
53
|
+
|
54
|
+
if __name__ == "__main__":
|
55
|
+
run()
|
streamlit/hello/utils.py
ADDED
@@ -0,0 +1,28 @@
|
|
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
|
+
import inspect
|
16
|
+
import textwrap
|
17
|
+
|
18
|
+
import streamlit as st
|
19
|
+
|
20
|
+
|
21
|
+
def show_code(demo):
|
22
|
+
"""Showing the code of the demo."""
|
23
|
+
show_code = st.sidebar.checkbox("Show code", True)
|
24
|
+
if show_code:
|
25
|
+
# Showing the code of the demo.
|
26
|
+
st.markdown("## Code")
|
27
|
+
sourcelines, _ = inspect.getsourcelines(demo)
|
28
|
+
st.code(textwrap.dedent("".join(sourcelines[1:])))
|