streamlit-nightly 1.41.2.dev20241227__py2.py3-none-any.whl → 1.41.2.dev20250124__py2.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 +11 -2
- streamlit/__main__.py +1 -1
- streamlit/auth_util.py +209 -0
- streamlit/cli_util.py +1 -1
- streamlit/column_config.py +1 -1
- streamlit/commands/__init__.py +1 -1
- streamlit/commands/echo.py +1 -1
- streamlit/commands/execution_control.py +1 -1
- streamlit/commands/experimental_query_params.py +1 -1
- streamlit/commands/logo.py +1 -1
- streamlit/commands/navigation.py +16 -15
- streamlit/commands/page_config.py +1 -1
- streamlit/components/__init__.py +1 -1
- streamlit/components/lib/__init__.py +1 -1
- streamlit/components/lib/local_component_registry.py +1 -1
- streamlit/components/types/__init__.py +1 -1
- streamlit/components/types/base_component_registry.py +1 -1
- streamlit/components/types/base_custom_component.py +1 -1
- streamlit/components/v1/__init__.py +1 -1
- streamlit/components/v1/component_arrow.py +1 -1
- streamlit/components/v1/component_registry.py +1 -1
- streamlit/components/v1/components.py +1 -1
- streamlit/components/v1/custom_component.py +1 -1
- streamlit/config.py +18 -3
- streamlit/config_option.py +10 -19
- streamlit/config_util.py +1 -1
- streamlit/connections/__init__.py +1 -1
- streamlit/connections/base_connection.py +1 -1
- streamlit/connections/snowflake_connection.py +31 -50
- streamlit/connections/snowpark_connection.py +1 -1
- streamlit/connections/sql_connection.py +1 -1
- streamlit/connections/util.py +1 -1
- streamlit/cursor.py +1 -1
- streamlit/dataframe_util.py +3 -3
- streamlit/delta_generator.py +7 -3
- streamlit/delta_generator_singletons.py +1 -1
- streamlit/deprecation_util.py +1 -1
- streamlit/development.py +1 -1
- streamlit/elements/__init__.py +1 -1
- streamlit/elements/alert.py +1 -1
- streamlit/elements/arrow.py +25 -3
- streamlit/elements/balloons.py +1 -1
- streamlit/elements/bokeh_chart.py +1 -1
- streamlit/elements/code.py +9 -1
- streamlit/elements/deck_gl_json_chart.py +1 -1
- streamlit/elements/dialog_decorator.py +1 -1
- streamlit/elements/doc_string.py +1 -1
- streamlit/elements/empty.py +1 -1
- streamlit/elements/exception.py +8 -10
- streamlit/elements/form.py +1 -1
- streamlit/elements/graphviz_chart.py +1 -1
- streamlit/elements/heading.py +1 -1
- streamlit/elements/html.py +1 -1
- streamlit/elements/iframe.py +1 -1
- streamlit/elements/image.py +1 -1
- streamlit/elements/json.py +1 -1
- streamlit/elements/layouts.py +1 -1
- streamlit/elements/lib/__init__.py +1 -1
- streamlit/elements/lib/built_in_chart_utils.py +1 -1
- streamlit/elements/lib/color_util.py +1 -1
- streamlit/elements/lib/column_config_utils.py +1 -1
- streamlit/elements/lib/column_types.py +1 -1
- streamlit/elements/lib/dialog.py +1 -1
- streamlit/elements/lib/dicttools.py +1 -1
- streamlit/elements/lib/event_utils.py +1 -1
- streamlit/elements/lib/file_uploader_utils.py +1 -1
- streamlit/elements/lib/form_utils.py +1 -1
- streamlit/elements/lib/image_utils.py +1 -1
- streamlit/elements/lib/js_number.py +1 -1
- streamlit/elements/lib/mutable_status_container.py +1 -1
- streamlit/elements/lib/options_selector_utils.py +1 -1
- streamlit/elements/lib/pandas_styler_utils.py +1 -1
- streamlit/elements/lib/policies.py +1 -1
- streamlit/elements/lib/streamlit_plotly_theme.py +1 -1
- streamlit/elements/lib/subtitle_utils.py +1 -1
- streamlit/elements/lib/utils.py +1 -1
- streamlit/elements/map.py +1 -1
- streamlit/elements/markdown.py +3 -3
- streamlit/elements/media.py +1 -1
- streamlit/elements/metric.py +1 -1
- streamlit/elements/plotly_chart.py +1 -1
- streamlit/elements/progress.py +1 -1
- streamlit/elements/pyplot.py +1 -1
- streamlit/elements/snow.py +1 -1
- streamlit/elements/spinner.py +14 -7
- streamlit/elements/text.py +1 -1
- streamlit/elements/toast.py +1 -1
- streamlit/elements/vega_charts.py +20 -6
- streamlit/elements/widgets/__init__.py +1 -1
- streamlit/elements/widgets/audio_input.py +1 -1
- streamlit/elements/widgets/button.py +9 -8
- streamlit/elements/widgets/button_group.py +6 -4
- streamlit/elements/widgets/camera_input.py +1 -1
- streamlit/elements/widgets/chat.py +1 -1
- streamlit/elements/widgets/checkbox.py +1 -1
- streamlit/elements/widgets/color_picker.py +1 -1
- streamlit/elements/widgets/data_editor.py +6 -5
- streamlit/elements/widgets/file_uploader.py +1 -1
- streamlit/elements/widgets/multiselect.py +1 -1
- streamlit/elements/widgets/number_input.py +1 -1
- streamlit/elements/widgets/radio.py +1 -1
- streamlit/elements/widgets/select_slider.py +1 -1
- streamlit/elements/widgets/selectbox.py +1 -1
- streamlit/elements/widgets/slider.py +1 -1
- streamlit/elements/widgets/text_widgets.py +1 -1
- streamlit/elements/widgets/time_widgets.py +63 -3
- streamlit/elements/write.py +2 -2
- streamlit/emojis.py +2 -2
- streamlit/env_util.py +1 -1
- streamlit/error_util.py +9 -3
- streamlit/errors.py +5 -1
- streamlit/external/__init__.py +1 -1
- streamlit/external/langchain/__init__.py +1 -1
- streamlit/external/langchain/streamlit_callback_handler.py +1 -1
- streamlit/file_util.py +1 -1
- streamlit/git_util.py +1 -1
- streamlit/hello/__init__.py +1 -1
- streamlit/hello/animation_demo.py +1 -1
- streamlit/hello/dataframe_demo.py +1 -1
- streamlit/hello/hello.py +1 -1
- streamlit/hello/mapping_demo.py +1 -1
- streamlit/hello/plotting_demo.py +1 -1
- streamlit/hello/streamlit_app.py +1 -1
- streamlit/hello/utils.py +1 -1
- streamlit/logger.py +1 -1
- streamlit/material_icon_names.py +2 -2
- streamlit/navigation/__init__.py +1 -1
- streamlit/navigation/page.py +7 -4
- streamlit/net_util.py +1 -1
- streamlit/platform.py +1 -1
- streamlit/proto/Alert_pb2.pyi +1 -1
- streamlit/proto/AppPage_pb2.pyi +1 -1
- streamlit/proto/ArrowNamedDataSet_pb2.pyi +1 -1
- streamlit/proto/ArrowVegaLiteChart_pb2.pyi +1 -1
- streamlit/proto/Arrow_pb2.pyi +1 -1
- streamlit/proto/AudioInput_pb2.pyi +1 -1
- streamlit/proto/Audio_pb2.pyi +1 -1
- streamlit/proto/AuthRedirect_pb2.py +27 -0
- streamlit/proto/AuthRedirect_pb2.pyi +41 -0
- streamlit/proto/AutoRerun_pb2.pyi +1 -1
- streamlit/proto/BackMsg_pb2.pyi +1 -1
- streamlit/proto/Balloons_pb2.pyi +1 -1
- streamlit/proto/Block_pb2.pyi +1 -1
- streamlit/proto/BokehChart_pb2.pyi +1 -1
- streamlit/proto/ButtonGroup_pb2.pyi +1 -1
- streamlit/proto/Button_pb2.pyi +1 -1
- streamlit/proto/CameraInput_pb2.pyi +1 -1
- streamlit/proto/ChatInput_pb2.pyi +1 -1
- streamlit/proto/Checkbox_pb2.pyi +1 -1
- streamlit/proto/ClientState_pb2.pyi +1 -1
- streamlit/proto/Code_pb2.py +2 -2
- streamlit/proto/Code_pb2.pyi +5 -2
- streamlit/proto/ColorPicker_pb2.pyi +1 -1
- streamlit/proto/Common_pb2.pyi +1 -1
- streamlit/proto/Components_pb2.pyi +1 -1
- streamlit/proto/DataFrame_pb2.pyi +1 -1
- streamlit/proto/DateInput_pb2.pyi +1 -1
- streamlit/proto/DeckGlJsonChart_pb2.pyi +1 -1
- streamlit/proto/Delta_pb2.pyi +1 -1
- streamlit/proto/DocString_pb2.pyi +1 -1
- streamlit/proto/DownloadButton_pb2.pyi +1 -1
- streamlit/proto/Element_pb2.pyi +1 -1
- streamlit/proto/Empty_pb2.pyi +1 -1
- streamlit/proto/Exception_pb2.pyi +1 -1
- streamlit/proto/Favicon_pb2.pyi +1 -1
- streamlit/proto/FileUploader_pb2.pyi +1 -1
- streamlit/proto/ForwardMsg_pb2.py +12 -9
- streamlit/proto/ForwardMsg_pb2.pyi +34 -4
- streamlit/proto/GitInfo_pb2.pyi +1 -1
- streamlit/proto/GraphVizChart_pb2.pyi +1 -1
- streamlit/proto/Heading_pb2.pyi +1 -1
- streamlit/proto/Html_pb2.pyi +1 -1
- streamlit/proto/IFrame_pb2.pyi +1 -1
- streamlit/proto/Image_pb2.pyi +1 -1
- streamlit/proto/Json_pb2.pyi +1 -1
- streamlit/proto/LabelVisibilityMessage_pb2.pyi +1 -1
- streamlit/proto/LinkButton_pb2.pyi +1 -1
- streamlit/proto/Logo_pb2.pyi +1 -1
- streamlit/proto/Markdown_pb2.pyi +1 -1
- streamlit/proto/Metric_pb2.pyi +1 -1
- streamlit/proto/MetricsEvent_pb2.pyi +1 -1
- streamlit/proto/MultiSelect_pb2.pyi +1 -1
- streamlit/proto/NamedDataSet_pb2.pyi +1 -1
- streamlit/proto/Navigation_pb2.pyi +1 -1
- streamlit/proto/NewSession_pb2.pyi +1 -1
- streamlit/proto/NumberInput_pb2.pyi +1 -1
- streamlit/proto/PageConfig_pb2.pyi +1 -1
- streamlit/proto/PageInfo_pb2.pyi +1 -1
- streamlit/proto/PageLink_pb2.pyi +1 -1
- streamlit/proto/PageNotFound_pb2.pyi +1 -1
- streamlit/proto/PageProfile_pb2.pyi +1 -1
- streamlit/proto/PagesChanged_pb2.pyi +1 -1
- streamlit/proto/ParentMessage_pb2.pyi +1 -1
- streamlit/proto/PlotlyChart_pb2.pyi +1 -1
- streamlit/proto/Progress_pb2.pyi +1 -1
- streamlit/proto/Radio_pb2.pyi +1 -1
- streamlit/proto/RootContainer_pb2.pyi +1 -1
- streamlit/proto/Selectbox_pb2.pyi +1 -1
- streamlit/proto/SessionEvent_pb2.pyi +1 -1
- streamlit/proto/SessionStatus_pb2.pyi +1 -1
- streamlit/proto/Skeleton_pb2.pyi +1 -1
- streamlit/proto/Slider_pb2.pyi +1 -1
- streamlit/proto/Snow_pb2.pyi +1 -1
- streamlit/proto/Spinner_pb2.py +2 -2
- streamlit/proto/Spinner_pb2.pyi +6 -2
- streamlit/proto/TextArea_pb2.pyi +1 -1
- streamlit/proto/TextInput_pb2.pyi +1 -1
- streamlit/proto/Text_pb2.pyi +1 -1
- streamlit/proto/TimeInput_pb2.pyi +1 -1
- streamlit/proto/Toast_pb2.pyi +1 -1
- streamlit/proto/VegaLiteChart_pb2.pyi +1 -1
- streamlit/proto/Video_pb2.pyi +1 -1
- streamlit/proto/WidgetStates_pb2.pyi +1 -1
- streamlit/proto/__init__.py +1 -1
- streamlit/runtime/__init__.py +1 -1
- streamlit/runtime/app_session.py +29 -5
- streamlit/runtime/caching/__init__.py +1 -1
- streamlit/runtime/caching/cache_data_api.py +3 -3
- streamlit/runtime/caching/cache_errors.py +1 -1
- streamlit/runtime/caching/cache_resource_api.py +1 -1
- streamlit/runtime/caching/cache_type.py +1 -1
- streamlit/runtime/caching/cache_utils.py +5 -4
- streamlit/runtime/caching/cached_message_replay.py +1 -1
- streamlit/runtime/caching/hashing.py +1 -1
- streamlit/runtime/caching/legacy_cache_api.py +1 -1
- streamlit/runtime/caching/storage/__init__.py +1 -1
- streamlit/runtime/caching/storage/cache_storage_protocol.py +1 -1
- streamlit/runtime/caching/storage/dummy_cache_storage.py +1 -1
- streamlit/runtime/caching/storage/in_memory_cache_storage_wrapper.py +1 -1
- streamlit/runtime/caching/storage/local_disk_cache_storage.py +5 -5
- streamlit/runtime/connection_factory.py +1 -1
- streamlit/runtime/context.py +1 -1
- streamlit/runtime/credentials.py +5 -5
- streamlit/runtime/forward_msg_cache.py +4 -2
- streamlit/runtime/forward_msg_queue.py +33 -5
- streamlit/runtime/fragment.py +2 -2
- streamlit/runtime/media_file_manager.py +1 -1
- streamlit/runtime/media_file_storage.py +1 -1
- streamlit/runtime/memory_media_file_storage.py +1 -1
- streamlit/runtime/memory_session_storage.py +1 -1
- streamlit/runtime/memory_uploaded_file_manager.py +1 -1
- streamlit/runtime/metrics_util.py +2 -1
- streamlit/runtime/pages_manager.py +4 -2
- streamlit/runtime/runtime.py +22 -6
- streamlit/runtime/runtime_util.py +1 -1
- streamlit/runtime/script_data.py +1 -1
- streamlit/runtime/scriptrunner/__init__.py +1 -1
- streamlit/runtime/scriptrunner/exec_code.py +34 -1
- streamlit/runtime/scriptrunner/magic.py +1 -1
- streamlit/runtime/scriptrunner/magic_funcs.py +1 -1
- streamlit/runtime/scriptrunner/script_cache.py +1 -1
- streamlit/runtime/scriptrunner/script_runner.py +23 -12
- streamlit/runtime/scriptrunner_utils/__init__.py +1 -1
- streamlit/runtime/scriptrunner_utils/exceptions.py +1 -1
- streamlit/runtime/scriptrunner_utils/script_requests.py +2 -1
- streamlit/runtime/scriptrunner_utils/script_run_context.py +2 -2
- streamlit/runtime/secrets.py +1 -1
- streamlit/runtime/session_manager.py +2 -2
- streamlit/runtime/state/__init__.py +1 -1
- streamlit/runtime/state/common.py +1 -1
- streamlit/runtime/state/query_params.py +2 -2
- streamlit/runtime/state/query_params_proxy.py +15 -5
- streamlit/runtime/state/safe_session_state.py +1 -1
- streamlit/runtime/state/session_state.py +1 -1
- streamlit/runtime/state/session_state_proxy.py +1 -1
- streamlit/runtime/state/widgets.py +1 -1
- streamlit/runtime/stats.py +1 -1
- streamlit/runtime/uploaded_file_manager.py +1 -1
- streamlit/runtime/websocket_session_manager.py +2 -2
- streamlit/source_util.py +1 -1
- streamlit/static/index.html +3 -3
- streamlit/static/static/css/index.mUTQuMqR.css +1 -0
- streamlit/static/static/js/{FileDownload.esm.WslOojMp.js → FileDownload.esm.C1QvS8Zm.js} +1 -1
- streamlit/static/static/js/{FormClearHelper.DSgVZ-NK.js → FormClearHelper.mT4-5rFn.js} +1 -1
- streamlit/static/static/js/{Hooks.wzeYp0oD.js → Hooks.CVNEuaGG.js} +1 -1
- streamlit/static/static/js/InputInstructions.BCvAGBeC.js +1 -0
- streamlit/static/static/js/{ProgressBar.D1he2Gib.js → ProgressBar.CcQcYD9u.js} +2 -2
- streamlit/static/static/js/RenderInPortalIfExists.DHDG9PHn.js +1 -0
- streamlit/static/static/js/Toolbar.yTE_O6B7.js +1 -0
- streamlit/static/static/js/{base-input.gDrmzpbY.js → base-input.CQPY9_oN.js} +4 -4
- streamlit/static/static/js/createSuper.DE47Tkz4.js +1 -0
- streamlit/static/static/js/data-grid-overlay-editor.5JEQwfzp.js +1 -0
- streamlit/static/static/js/{downloader.B-SkHjg2.js → downloader.CX7_KkfB.js} +1 -1
- streamlit/static/static/js/{es6.DoVDVSd_.js → es6.Be2vwxoI.js} +2 -2
- streamlit/static/static/js/{iframeResizer.contentWindow.Exq_q4jU.js → iframeResizer.contentWindow.CFHofqC-.js} +1 -1
- streamlit/static/static/js/index.0OeiPvr3.js +1 -0
- streamlit/static/static/js/index.1GBg_Cdb.js +1 -0
- streamlit/static/static/js/index.4nNgvhbk.js +4 -0
- streamlit/static/static/js/index.5F9_LJ-9.js +1 -0
- streamlit/static/static/js/index.6v5ZgUAy.js +1 -0
- streamlit/static/static/js/index.8tVXPrLX.js +1 -0
- streamlit/static/static/js/index.AExANgn1.js +1 -0
- streamlit/static/static/js/index.AXOgS1NM.js +1 -0
- streamlit/static/static/js/index.B-xzXPZE.js +3 -0
- streamlit/static/static/js/index.B0pfFJGU.js +1 -0
- streamlit/static/static/js/index.BBjf7kH1.js +1 -0
- streamlit/static/static/js/index.BGICDmL0.js +201 -0
- streamlit/static/static/js/{index.rDDlhQFp.js → index.BOeLQ18h.js} +1 -1
- streamlit/static/static/js/index.BUgJRfqp.js +3 -0
- streamlit/static/static/js/index.BpeIAypN.js +1 -0
- streamlit/static/static/js/{index.BjQJsYG6.js → index.C0ZNaKGF.js} +1 -1
- streamlit/static/static/js/index.C3eR9AQ5.js +1 -0
- streamlit/static/static/js/index.CCmrDm8Z.js +2 -0
- streamlit/static/static/js/index.CHuo89tL.js +1 -0
- streamlit/static/static/js/index.Cbi_d9ak.js +197 -0
- streamlit/static/static/js/{index.CyRDf6c5.js → index.Cg7T4wJt.js} +3 -3
- streamlit/static/static/js/index.Ci3iebpl.js +1 -0
- streamlit/static/static/js/index.CjsaBedq.js +1 -0
- streamlit/static/static/js/{index.CLHVvMN0.js → index.CvqaNor_.js} +139 -128
- streamlit/static/static/js/index.D0lxtOCO.js +2 -0
- streamlit/static/static/js/index.D1AD4NsW.js +1 -0
- streamlit/static/static/js/{index.4lqQPLdu.js → index.DLjk_wlB.js} +1 -1
- streamlit/static/static/js/{index.DfwGDOWW.js → index.DNDhYAPI.js} +2 -2
- streamlit/static/static/js/index.DY6666R7.js +1 -0
- streamlit/static/static/js/{index.DaTKmBKa.js → index.Dkr_c_9x.js} +100 -100
- streamlit/static/static/js/{index.Bcz23DKe.js → index.Hhv6gSq2.js} +12 -12
- streamlit/static/static/js/{index.Bm2n8u7I.js → index.OM83ZHKg.js} +2 -2
- streamlit/static/static/js/index.SLleoa9s.js +1 -0
- streamlit/static/static/js/{index.2Rr5kbVL.js → index.XCwDes79.js} +1 -1
- streamlit/static/static/js/{index.B_RzfO7U.js → index.a6pesEXT.js} +1 -1
- streamlit/static/static/js/{index.CAkYXoVB.js → index.er3Zfn3e.js} +2 -2
- streamlit/static/static/js/{index.CZ-znj8N.js → index.mtSGfsND.js} +1 -1
- streamlit/static/static/js/{input.28wXD4uV.js → input.B07wSbwn.js} +2 -2
- streamlit/static/static/js/{memory.jbWyoc5k.js → memory.CC_p93jh.js} +1 -1
- streamlit/static/static/js/mergeWith.ivc75cD1.js +1 -0
- streamlit/static/static/js/number-overlay-editor.Db2Be6nq.js +9 -0
- streamlit/static/static/js/possibleConstructorReturn.BNprLGNF.js +1 -0
- streamlit/static/static/js/{sandbox.CfK9-cKf.js → sandbox.BlG3HhHL.js} +1 -1
- streamlit/static/static/js/{textarea.C5OZk1uL.js → textarea.Bz6Z-kmO.js} +2 -2
- streamlit/static/static/js/threshold.B8r8f5kt.js +1 -0
- streamlit/static/static/js/{timepicker.DEpQEk7W.js → timepicker.BMSb5NlP.js} +3 -3
- streamlit/static/static/js/timer.RueuYoQV.js +1 -0
- streamlit/static/static/js/toConsumableArray.uYLXBIlD.js +3 -0
- streamlit/static/static/js/uniqueId.BdisvZXg.js +1 -0
- streamlit/static/static/js/{useBasicWidgetState.C2DsWpWi.js → useBasicWidgetState.BJFGEQDL.js} +1 -1
- streamlit/static/static/js/{useOnInputChange.Bw6YkmJD.js → useOnInputChange.BmSN_ACz.js} +1 -1
- streamlit/static/static/js/value.iufjd77T.js +1 -0
- streamlit/static/static/js/withFullScreenWrapper.CbOOMX5j.js +1 -0
- streamlit/static/static/media/MaterialSymbols-Rounded.DzyB5T7Y.woff2 +0 -0
- streamlit/string_util.py +1 -1
- streamlit/temporary_directory.py +1 -1
- streamlit/testing/__init__.py +1 -1
- streamlit/testing/v1/__init__.py +1 -1
- streamlit/testing/v1/app_test.py +1 -1
- streamlit/testing/v1/element_tree.py +1 -1
- streamlit/testing/v1/local_script_runner.py +1 -1
- streamlit/testing/v1/util.py +1 -1
- streamlit/time_util.py +1 -1
- streamlit/type_util.py +2 -2
- streamlit/url_util.py +24 -1
- streamlit/user_info.py +445 -25
- streamlit/util.py +1 -1
- streamlit/version.py +1 -1
- streamlit/watcher/__init__.py +1 -1
- streamlit/watcher/event_based_path_watcher.py +1 -1
- streamlit/watcher/folder_black_list.py +1 -1
- streamlit/watcher/local_sources_watcher.py +5 -3
- streamlit/watcher/path_watcher.py +1 -1
- streamlit/watcher/polling_path_watcher.py +1 -1
- streamlit/watcher/util.py +87 -21
- streamlit/web/__init__.py +1 -1
- streamlit/web/bootstrap.py +22 -2
- streamlit/web/cache_storage_manager_config.py +1 -1
- streamlit/web/cli.py +1 -1
- streamlit/web/server/__init__.py +1 -1
- streamlit/web/server/app_static_file_handler.py +1 -1
- streamlit/web/server/authlib_tornado_integration.py +58 -0
- streamlit/web/server/browser_websocket_handler.py +73 -7
- streamlit/web/server/component_request_handler.py +1 -1
- streamlit/web/server/media_file_handler.py +1 -1
- streamlit/web/server/oauth_authlib_routes.py +176 -0
- streamlit/web/server/oidc_mixin.py +108 -0
- streamlit/web/server/routes.py +6 -4
- streamlit/web/server/server.py +41 -4
- streamlit/web/server/server_util.py +25 -1
- streamlit/web/server/stats_request_handler.py +1 -1
- streamlit/web/server/upload_file_request_handler.py +3 -2
- streamlit/web/server/websocket_headers.py +1 -1
- {streamlit_nightly-1.41.2.dev20241227.data → streamlit_nightly-1.41.2.dev20250124.data}/scripts/streamlit.cmd +1 -1
- {streamlit_nightly-1.41.2.dev20241227.dist-info → streamlit_nightly-1.41.2.dev20250124.dist-info}/METADATA +16 -4
- streamlit_nightly-1.41.2.dev20250124.dist-info/RECORD +560 -0
- {streamlit_nightly-1.41.2.dev20241227.dist-info → streamlit_nightly-1.41.2.dev20250124.dist-info}/WHEEL +1 -1
- streamlit/static/static/css/index.ZIJkhegp.css +0 -1
- streamlit/static/static/js/InputInstructions.DpTmOmkP.js +0 -1
- streamlit/static/static/js/RenderInPortalIfExists.CphMKHZ_.js +0 -1
- streamlit/static/static/js/Toolbar.YZjXpW2P.js +0 -1
- streamlit/static/static/js/_commonjs-dynamic-modules.TDtrdbi3.js +0 -1
- streamlit/static/static/js/createSuper.Cj3WfXha.js +0 -1
- streamlit/static/static/js/data-grid-overlay-editor.CXW3Vrt9.js +0 -1
- streamlit/static/static/js/getPrototypeOf.BZAK2f3t.js +0 -1
- streamlit/static/static/js/index.1auHKWgw.js +0 -3
- streamlit/static/static/js/index.2XFKVtzu.js +0 -1
- streamlit/static/static/js/index.B9O1l5Yf.js +0 -32
- streamlit/static/static/js/index.BjtDBCFh.js +0 -2
- streamlit/static/static/js/index.Bp-uIPRI.js +0 -1
- streamlit/static/static/js/index.BrGYP4fV.js +0 -1
- streamlit/static/static/js/index.BwUmNKlx.js +0 -1
- streamlit/static/static/js/index.CCVCD0op.js +0 -1
- streamlit/static/static/js/index.CP7C0jmi.js +0 -1
- streamlit/static/static/js/index.CVNaQiWI.js +0 -4
- streamlit/static/static/js/index.CX7qwffH.js +0 -1
- streamlit/static/static/js/index.CaCnIXu_.js +0 -1
- streamlit/static/static/js/index.Ck6XWYeb.js +0 -1
- streamlit/static/static/js/index.CmD2DSvp.js +0 -201
- streamlit/static/static/js/index.CnX4MRBV.js +0 -1
- streamlit/static/static/js/index.DR8k91Kp.js +0 -1
- streamlit/static/static/js/index.Dc0EFNHf.js +0 -197
- streamlit/static/static/js/index.M9USxdKN.js +0 -1
- streamlit/static/static/js/index.MCDV8ab_.js +0 -1
- streamlit/static/static/js/index.T4c5nSGV.js +0 -2
- streamlit/static/static/js/index.brVZtr01.js +0 -1
- streamlit/static/static/js/index.fm1fEqFi.js +0 -1
- streamlit/static/static/js/index.vm3Bds7I.js +0 -1
- streamlit/static/static/js/index.y_EIxzAg.js +0 -1
- streamlit/static/static/js/number-overlay-editor.D5dgP2YW.js +0 -9
- streamlit/static/static/js/slicedToArray.DVgs1NsC.js +0 -2
- streamlit/static/static/js/string.Bl9OLDCw.js +0 -1
- streamlit/static/static/js/threshold.skajmqVB.js +0 -1
- streamlit/static/static/js/timer.DwZfkapc.js +0 -1
- streamlit/static/static/js/uniqueId.OJw6SDpp.js +0 -1
- streamlit/static/static/js/withFullScreenWrapper.BjS0eA06.js +0 -1
- streamlit/static/static/media/MaterialSymbols-Rounded.MYSe4dsi.woff2 +0 -0
- streamlit/vendor/ipython/__init__.py +0 -0
- streamlit/vendor/ipython/modified_sys_path.py +0 -67
- streamlit_nightly-1.41.2.dev20241227.dist-info/RECORD +0 -556
- /streamlit/static/static/css/{index.B26BQfSF.css → index.Bmkmz40k.css} +0 -0
- /streamlit/static/static/css/{index.CG16XVnL.css → index.DzuxGC_t.css} +0 -0
- {streamlit_nightly-1.41.2.dev20241227.dist-info → streamlit_nightly-1.41.2.dev20250124.dist-info}/entry_points.txt +0 -0
- {streamlit_nightly-1.41.2.dev20241227.dist-info → streamlit_nightly-1.41.2.dev20250124.dist-info}/top_level.txt +0 -0
streamlit/__init__.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -115,7 +115,11 @@ from streamlit.runtime.state import (
|
|
115
115
|
SessionStateProxy as _SessionStateProxy,
|
116
116
|
QueryParamsProxy as _QueryParamsProxy,
|
117
117
|
)
|
118
|
-
from streamlit.user_info import
|
118
|
+
from streamlit.user_info import (
|
119
|
+
UserInfoProxy as _UserInfoProxy,
|
120
|
+
login as _login,
|
121
|
+
logout as _logout,
|
122
|
+
)
|
119
123
|
from streamlit.commands.experimental_query_params import (
|
120
124
|
get_query_params as _get_query_params,
|
121
125
|
set_query_params as _set_query_params,
|
@@ -267,6 +271,11 @@ connection = _connection
|
|
267
271
|
dialog = _dialog_decorator
|
268
272
|
fragment = _fragment
|
269
273
|
|
274
|
+
|
275
|
+
# Auth
|
276
|
+
login = _login
|
277
|
+
logout = _logout
|
278
|
+
|
270
279
|
# Experimental APIs
|
271
280
|
experimental_audio_input = _main.experimental_audio_input
|
272
281
|
experimental_dialog = _experimental_dialog_decorator
|
streamlit/__main__.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
streamlit/auth_util.py
ADDED
@@ -0,0 +1,209 @@
|
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
|
17
|
+
from datetime import datetime, timedelta, timezone
|
18
|
+
from typing import TYPE_CHECKING, Any, Mapping, TypedDict, cast
|
19
|
+
|
20
|
+
from streamlit import config
|
21
|
+
from streamlit.errors import StreamlitAuthError
|
22
|
+
from streamlit.runtime.secrets import AttrDict, secrets_singleton
|
23
|
+
|
24
|
+
if TYPE_CHECKING:
|
25
|
+
|
26
|
+
class ProviderTokenPayload(TypedDict):
|
27
|
+
provider: str
|
28
|
+
exp: int
|
29
|
+
|
30
|
+
|
31
|
+
class AuthCache:
|
32
|
+
"""Simple cache implementation for storing info required for Authlib."""
|
33
|
+
|
34
|
+
def __init__(self):
|
35
|
+
self.cache = {}
|
36
|
+
|
37
|
+
def get(self, key):
|
38
|
+
return self.cache.get(key)
|
39
|
+
|
40
|
+
# for set method, we are follow the same signature used in Authlib
|
41
|
+
# the expires_in is not used in our case
|
42
|
+
def set(self, key, value, expires_in):
|
43
|
+
self.cache[key] = value
|
44
|
+
|
45
|
+
def get_dict(self):
|
46
|
+
return self.cache
|
47
|
+
|
48
|
+
def delete(self, key):
|
49
|
+
self.cache.pop(key, None)
|
50
|
+
|
51
|
+
|
52
|
+
def is_authlib_installed() -> bool:
|
53
|
+
"""Check if Authlib is installed."""
|
54
|
+
try:
|
55
|
+
import authlib # type: ignore[import-untyped]
|
56
|
+
|
57
|
+
authlib_version = authlib.__version__
|
58
|
+
authlib_version_tuple = tuple(map(int, authlib_version.split(".")))
|
59
|
+
|
60
|
+
if authlib_version_tuple < (1, 3, 2):
|
61
|
+
return False
|
62
|
+
except (ImportError, ModuleNotFoundError):
|
63
|
+
return False
|
64
|
+
return True
|
65
|
+
|
66
|
+
|
67
|
+
def get_signing_secret() -> str:
|
68
|
+
"""Get the cookie signing secret from the configuration or secrets.toml."""
|
69
|
+
signing_secret: str = config.get_option("server.cookieSecret")
|
70
|
+
if secrets_singleton.load_if_toml_exists():
|
71
|
+
auth_section = secrets_singleton.get("auth")
|
72
|
+
if auth_section:
|
73
|
+
signing_secret = auth_section.get("cookie_secret", signing_secret)
|
74
|
+
return signing_secret
|
75
|
+
|
76
|
+
|
77
|
+
def get_secrets_auth_section() -> AttrDict:
|
78
|
+
auth_section = AttrDict({})
|
79
|
+
"""Get the 'auth' section of the secrets.toml."""
|
80
|
+
if secrets_singleton.load_if_toml_exists():
|
81
|
+
auth_section = cast(AttrDict, secrets_singleton.get("auth"))
|
82
|
+
|
83
|
+
return auth_section
|
84
|
+
|
85
|
+
|
86
|
+
def encode_provider_token(provider: str) -> str:
|
87
|
+
"""Returns a signed JWT token with the provider and expiration time."""
|
88
|
+
try:
|
89
|
+
from authlib.jose import jwt # type: ignore[import-untyped]
|
90
|
+
except ImportError:
|
91
|
+
raise StreamlitAuthError(
|
92
|
+
"""To use authentication features, you need to install Authlib>=1.3.2, e.g. via `pip install Authlib`."""
|
93
|
+
) from None
|
94
|
+
|
95
|
+
header = {"alg": "HS256"}
|
96
|
+
payload = {
|
97
|
+
"provider": provider,
|
98
|
+
"exp": datetime.now(timezone.utc) + timedelta(minutes=2),
|
99
|
+
}
|
100
|
+
provider_token: bytes = jwt.encode(header, payload, get_signing_secret())
|
101
|
+
# JWT token is a byte string, so we need to decode it to a URL compatible string
|
102
|
+
return provider_token.decode("latin-1")
|
103
|
+
|
104
|
+
|
105
|
+
def decode_provider_token(provider_token: str) -> ProviderTokenPayload:
|
106
|
+
"""Decode the JWT token and validate the claims."""
|
107
|
+
try:
|
108
|
+
from authlib.jose import JoseError, JWTClaims, jwt
|
109
|
+
except ImportError:
|
110
|
+
raise StreamlitAuthError(
|
111
|
+
"""To use authentication features, you need to install Authlib>=1.3.2, e.g. via `pip install Authlib`."""
|
112
|
+
) from None
|
113
|
+
|
114
|
+
# Our JWT token is short-lived (2 minutes), so we check here that it contains
|
115
|
+
# the 'exp' (and it is not expired), and 'provider' field exists.
|
116
|
+
claim_options = {"exp": {"essential": True}, "provider": {"essential": True}}
|
117
|
+
try:
|
118
|
+
payload: JWTClaims = jwt.decode(
|
119
|
+
provider_token, get_signing_secret(), claims_options=claim_options
|
120
|
+
)
|
121
|
+
payload.validate()
|
122
|
+
except JoseError as e:
|
123
|
+
raise StreamlitAuthError(f"Error decoding provider token: {e}") from None
|
124
|
+
|
125
|
+
return cast("ProviderTokenPayload", payload)
|
126
|
+
|
127
|
+
|
128
|
+
def generate_default_provider_section(auth_section) -> dict[str, Any]:
|
129
|
+
"""Generate a default provider section for the 'auth' section of secrets.toml."""
|
130
|
+
default_provider_section = {}
|
131
|
+
if auth_section.get("client_id"):
|
132
|
+
default_provider_section["client_id"] = auth_section.get("client_id")
|
133
|
+
if auth_section.get("client_secret"):
|
134
|
+
default_provider_section["client_secret"] = auth_section.get("client_secret")
|
135
|
+
if auth_section.get("server_metadata_url"):
|
136
|
+
default_provider_section["server_metadata_url"] = auth_section.get(
|
137
|
+
"server_metadata_url"
|
138
|
+
)
|
139
|
+
if auth_section.get("client_kwargs"):
|
140
|
+
default_provider_section["client_kwargs"] = auth_section.get(
|
141
|
+
"client_kwargs"
|
142
|
+
).to_dict()
|
143
|
+
return default_provider_section
|
144
|
+
|
145
|
+
|
146
|
+
def validate_auth_credentials(provider: str) -> None:
|
147
|
+
"""Validate the general auth credentials and auth credentials for the given
|
148
|
+
provider."""
|
149
|
+
if not secrets_singleton.load_if_toml_exists():
|
150
|
+
raise StreamlitAuthError(
|
151
|
+
"""To use authentication features you need to configure credentials for at
|
152
|
+
least one authentication provider in `.streamlit/secrets.toml`."""
|
153
|
+
)
|
154
|
+
|
155
|
+
auth_section = secrets_singleton.get("auth")
|
156
|
+
if auth_section is None:
|
157
|
+
raise StreamlitAuthError(
|
158
|
+
"""To use authentication features you need to configure credentials for at
|
159
|
+
least one authentication provider in `.streamlit/secrets.toml`."""
|
160
|
+
)
|
161
|
+
if "redirect_uri" not in auth_section:
|
162
|
+
raise StreamlitAuthError(
|
163
|
+
"""Authentication credentials in `.streamlit/secrets.toml` are missing the
|
164
|
+
"redirect_uri" key. Please check your configuration."""
|
165
|
+
)
|
166
|
+
if "cookie_secret" not in auth_section:
|
167
|
+
raise StreamlitAuthError(
|
168
|
+
"""Authentication credentials in `.streamlit/secrets.toml` are missing the
|
169
|
+
"cookie_secret" key. Please check your configuration."""
|
170
|
+
)
|
171
|
+
|
172
|
+
provider_section = auth_section.get(provider)
|
173
|
+
|
174
|
+
if provider_section is None and provider == "default":
|
175
|
+
provider_section = generate_default_provider_section(auth_section)
|
176
|
+
|
177
|
+
if provider_section is None:
|
178
|
+
if provider == "default":
|
179
|
+
raise StreamlitAuthError(
|
180
|
+
"""Authentication credentials in `.streamlit/secrets.toml` are missing for
|
181
|
+
the default authentication provider. Please check your configuration."""
|
182
|
+
)
|
183
|
+
raise StreamlitAuthError(
|
184
|
+
f"Authentication credentials in `.streamlit/secrets.toml` are missing for "
|
185
|
+
f'the authentication provider "{provider}". Please check your '
|
186
|
+
f"configuration."
|
187
|
+
)
|
188
|
+
|
189
|
+
if not isinstance(provider_section, Mapping):
|
190
|
+
raise StreamlitAuthError(
|
191
|
+
f"Authentication credentials in `.streamlit/secrets.toml` for the "
|
192
|
+
f'authentication provider "{provider}" must be valid TOML. Please check '
|
193
|
+
f"your configuration."
|
194
|
+
)
|
195
|
+
|
196
|
+
required_keys = ["client_id", "client_secret", "server_metadata_url"]
|
197
|
+
missing_keys = [key for key in required_keys if key not in provider_section]
|
198
|
+
if missing_keys:
|
199
|
+
if provider == "default":
|
200
|
+
raise StreamlitAuthError(
|
201
|
+
"Authentication credentials in `.streamlit/secrets.toml` for the "
|
202
|
+
f"default authentication provider are missing the following keys: "
|
203
|
+
f"{missing_keys}. Please check your configuration."
|
204
|
+
)
|
205
|
+
raise StreamlitAuthError(
|
206
|
+
"Authentication credentials in `.streamlit/secrets.toml` for the "
|
207
|
+
f'authentication provider "{provider}" are missing the following keys: '
|
208
|
+
f"{missing_keys}. Please check your configuration."
|
209
|
+
)
|
streamlit/cli_util.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
streamlit/column_config.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
streamlit/commands/__init__.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
streamlit/commands/echo.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
streamlit/commands/logo.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
streamlit/commands/navigation.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -228,9 +228,7 @@ def navigation(
|
|
228
228
|
default_page = None
|
229
229
|
pagehash_to_pageinfo: dict[PageHash, PageInfo] = {}
|
230
230
|
|
231
|
-
#
|
232
|
-
# 1. the default page
|
233
|
-
# 2. the pagehash to pageinfo mapping
|
231
|
+
# Get the default page.
|
234
232
|
for section_header in nav_sections:
|
235
233
|
for page in nav_sections[section_header]:
|
236
234
|
if page._default:
|
@@ -241,6 +239,20 @@ def navigation(
|
|
241
239
|
)
|
242
240
|
default_page = page
|
243
241
|
|
242
|
+
if default_page is None:
|
243
|
+
default_page = page_list[0]
|
244
|
+
default_page._default = True
|
245
|
+
|
246
|
+
ctx = get_script_run_ctx()
|
247
|
+
if not ctx:
|
248
|
+
# This should never run in Streamlit, but we want to make sure that
|
249
|
+
# the function always returns a page
|
250
|
+
default_page._can_be_called = True
|
251
|
+
return default_page
|
252
|
+
|
253
|
+
# Build the pagehash-to-pageinfo mapping.
|
254
|
+
for section_header in nav_sections:
|
255
|
+
for page in nav_sections[section_header]:
|
244
256
|
if isinstance(page._page, Path):
|
245
257
|
script_path = str(page._page)
|
246
258
|
else:
|
@@ -264,10 +276,6 @@ def navigation(
|
|
264
276
|
"url_pathname": page.url_path,
|
265
277
|
}
|
266
278
|
|
267
|
-
if default_page is None:
|
268
|
-
default_page = page_list[0]
|
269
|
-
default_page._default = True
|
270
|
-
|
271
279
|
msg = ForwardMsg()
|
272
280
|
if position == "hidden":
|
273
281
|
msg.navigation.position = NavigationProto.Position.HIDDEN
|
@@ -288,13 +296,6 @@ def navigation(
|
|
288
296
|
p.section_header = section_header
|
289
297
|
p.url_pathname = page.url_path
|
290
298
|
|
291
|
-
ctx = get_script_run_ctx()
|
292
|
-
if not ctx:
|
293
|
-
# This should never run in Streamlit, but we want to make sure that
|
294
|
-
# the function always returns a page
|
295
|
-
default_page._can_be_called = True
|
296
|
-
return default_page
|
297
|
-
|
298
299
|
# Inform our page manager about the set of pages we have
|
299
300
|
ctx.pages_manager.set_pages(pagehash_to_pageinfo)
|
300
301
|
found_page = ctx.pages_manager.get_page_script(
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
streamlit/components/__init__.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
streamlit/config.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -420,6 +420,20 @@ _create_option(
|
|
420
420
|
type_=bool,
|
421
421
|
)
|
422
422
|
|
423
|
+
_create_option(
|
424
|
+
"global.includeFragmentRunsInForwardMessageCacheCount",
|
425
|
+
description="""
|
426
|
+
If True, the server will include fragment runs in the count for the
|
427
|
+
forward message cache. The implication is that apps with fragments may
|
428
|
+
see messages being removed from the cache faster. This aligns the server
|
429
|
+
count with the frontend count. This is a temporary fix while we assess the
|
430
|
+
design of the cache.
|
431
|
+
""",
|
432
|
+
visibility="hidden",
|
433
|
+
default_val=False,
|
434
|
+
type_=bool,
|
435
|
+
)
|
436
|
+
|
423
437
|
|
424
438
|
# Config Section: Logger #
|
425
439
|
_create_section("logger", "Settings to customize Streamlit log messages.")
|
@@ -1126,7 +1140,8 @@ def _set_option(key: str, value: Any, where_defined: str) -> None:
|
|
1126
1140
|
LOGGER = get_logger(__name__)
|
1127
1141
|
|
1128
1142
|
LOGGER.warning(
|
1129
|
-
f'"{key}" is not a valid config option. If you previously had this config
|
1143
|
+
f'"{key}" is not a valid config option. If you previously had this config '
|
1144
|
+
"option set, it may have been removed."
|
1130
1145
|
)
|
1131
1146
|
|
1132
1147
|
else:
|
@@ -1197,7 +1212,7 @@ def _maybe_read_env_variable(value: Any) -> Any:
|
|
1197
1212
|
|
1198
1213
|
LOGGER = get_logger(__name__)
|
1199
1214
|
|
1200
|
-
LOGGER.error("No environment variable called %s"
|
1215
|
+
LOGGER.error("No environment variable called %s", var_name)
|
1201
1216
|
else:
|
1202
1217
|
return _maybe_convert_to_number(env_var)
|
1203
1218
|
|
streamlit/config_option.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -250,13 +250,6 @@ class ConfigOption:
|
|
250
250
|
self.is_default = value == self.default_val
|
251
251
|
|
252
252
|
if self.deprecated and self.where_defined != ConfigOption.DEFAULT_DEFINITION:
|
253
|
-
details = {
|
254
|
-
"key": self.key,
|
255
|
-
"file": self.where_defined,
|
256
|
-
"explanation": self.deprecation_text,
|
257
|
-
"date": self.expiration_date,
|
258
|
-
}
|
259
|
-
|
260
253
|
if self.is_expired():
|
261
254
|
# Import here to avoid circular imports
|
262
255
|
from streamlit.logger import get_logger
|
@@ -264,17 +257,16 @@ class ConfigOption:
|
|
264
257
|
LOGGER = get_logger(__name__)
|
265
258
|
LOGGER.error(
|
266
259
|
textwrap.dedent(
|
267
|
-
"""
|
260
|
+
f"""
|
268
261
|
════════════════════════════════════════════════
|
269
|
-
|
262
|
+
{self.key} IS NO LONGER SUPPORTED.
|
270
263
|
|
271
|
-
|
264
|
+
{self.deprecation_text}
|
272
265
|
|
273
|
-
Please update
|
266
|
+
Please update {self.where_defined}.
|
274
267
|
════════════════════════════════════════════════
|
275
268
|
"""
|
276
269
|
)
|
277
|
-
% details
|
278
270
|
)
|
279
271
|
else:
|
280
272
|
# Import here to avoid circular imports
|
@@ -283,18 +275,17 @@ class ConfigOption:
|
|
283
275
|
LOGGER = get_logger(__name__)
|
284
276
|
LOGGER.warning(
|
285
277
|
textwrap.dedent(
|
286
|
-
"""
|
278
|
+
f"""s
|
287
279
|
════════════════════════════════════════════════
|
288
|
-
|
289
|
-
|
280
|
+
{self.key} IS DEPRECATED.
|
281
|
+
{self.deprecation_text}
|
290
282
|
|
291
|
-
This option will be removed on or after
|
283
|
+
This option will be removed on or after {self.expiration_date}.
|
292
284
|
|
293
|
-
Please update
|
285
|
+
Please update {self.where_defined}.
|
294
286
|
════════════════════════════════════════════════
|
295
287
|
"""
|
296
288
|
)
|
297
|
-
% details
|
298
289
|
)
|
299
290
|
|
300
291
|
def is_expired(self) -> bool:
|
streamlit/config_util.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|