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
@@ -0,0 +1,108 @@
|
|
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 tornado.web
|
16
|
+
from authlib.integrations.base_client import ( # type: ignore[import-untyped]
|
17
|
+
BaseApp,
|
18
|
+
BaseOAuth,
|
19
|
+
OAuth2Mixin,
|
20
|
+
OAuthError,
|
21
|
+
OpenIDMixin,
|
22
|
+
)
|
23
|
+
from authlib.integrations.requests_client import ( # type: ignore[import-untyped]
|
24
|
+
OAuth2Session,
|
25
|
+
)
|
26
|
+
|
27
|
+
from streamlit.web.server.authlib_tornado_integration import TornadoIntegration
|
28
|
+
|
29
|
+
|
30
|
+
class TornadoOAuth2App(OAuth2Mixin, OpenIDMixin, BaseApp): # type: ignore[misc]
|
31
|
+
client_cls = OAuth2Session
|
32
|
+
|
33
|
+
def load_server_metadata(self):
|
34
|
+
"""We enforce S256 code challenge method if it is supported by the server."""
|
35
|
+
result = super().load_server_metadata()
|
36
|
+
if "S256" in result.get("code_challenge_methods_supported", []):
|
37
|
+
self.client_kwargs["code_challenge_method"] = "S256"
|
38
|
+
return result
|
39
|
+
|
40
|
+
def authorize_redirect(
|
41
|
+
self, request_handler: tornado.web.RequestHandler, redirect_uri=None, **kwargs
|
42
|
+
):
|
43
|
+
"""Create a HTTP Redirect for Authorization Endpoint.
|
44
|
+
|
45
|
+
:param request_handler: HTTP request instance from Tornado.
|
46
|
+
:param redirect_uri: Callback or redirect URI for authorization.
|
47
|
+
:param kwargs: Extra parameters to include.
|
48
|
+
:return: A HTTP redirect response.
|
49
|
+
"""
|
50
|
+
auth_context = self.create_authorization_url(redirect_uri, **kwargs)
|
51
|
+
self._save_authorize_data(redirect_uri=redirect_uri, **auth_context)
|
52
|
+
request_handler.redirect(auth_context["url"], status=302)
|
53
|
+
|
54
|
+
def authorize_access_token(
|
55
|
+
self, request_handler: tornado.web.RequestHandler, **kwargs
|
56
|
+
):
|
57
|
+
"""
|
58
|
+
:param request_handler: HTTP request instance from Tornado.
|
59
|
+
:return: A token dict.
|
60
|
+
"""
|
61
|
+
error = request_handler.get_argument("error", None)
|
62
|
+
if error:
|
63
|
+
description = request_handler.get_argument("error_description", None)
|
64
|
+
raise OAuthError(error=error, description=description)
|
65
|
+
|
66
|
+
params = {
|
67
|
+
"code": request_handler.get_argument("code"),
|
68
|
+
"state": request_handler.get_argument("state"),
|
69
|
+
}
|
70
|
+
|
71
|
+
assert self.framework.cache is not None
|
72
|
+
session = None
|
73
|
+
|
74
|
+
claims_options = kwargs.pop("claims_options", None)
|
75
|
+
state_data = self.framework.get_state_data(session, params.get("state"))
|
76
|
+
self.framework.clear_state_data(session, params.get("state"))
|
77
|
+
params = self._format_state_params(state_data, params)
|
78
|
+
token = self.fetch_access_token(**params, **kwargs)
|
79
|
+
|
80
|
+
if "id_token" in token and "nonce" in state_data:
|
81
|
+
userinfo = self.parse_id_token(
|
82
|
+
token, nonce=state_data["nonce"], claims_options=claims_options
|
83
|
+
)
|
84
|
+
token = {**token, "userinfo": userinfo}
|
85
|
+
return token
|
86
|
+
|
87
|
+
def _save_authorize_data(self, **kwargs):
|
88
|
+
"""Authlib underlying uses the concept of "session" to store state data.
|
89
|
+
In Tornado, we don't have a session, so we use the framework's cache option.
|
90
|
+
"""
|
91
|
+
state = kwargs.pop("state", None)
|
92
|
+
if state:
|
93
|
+
assert self.framework.cache is not None
|
94
|
+
session = None
|
95
|
+
self.framework.set_state_data(session, state, kwargs)
|
96
|
+
else:
|
97
|
+
raise RuntimeError("Missing state value")
|
98
|
+
|
99
|
+
|
100
|
+
class TornadoOAuth(BaseOAuth): # type: ignore[misc]
|
101
|
+
oauth2_client_cls = TornadoOAuth2App
|
102
|
+
framework_integration_cls = TornadoIntegration
|
103
|
+
|
104
|
+
def __init__(self, config=None, cache=None, fetch_token=None, update_token=None):
|
105
|
+
super().__init__(
|
106
|
+
cache=cache, fetch_token=fetch_token, update_token=update_token
|
107
|
+
)
|
108
|
+
self.config = config
|
streamlit/web/server/routes.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.
|
@@ -22,7 +22,10 @@ import tornado.web
|
|
22
22
|
from streamlit import config, file_util
|
23
23
|
from streamlit.logger import get_logger
|
24
24
|
from streamlit.runtime.runtime_util import serialize_forward_msg
|
25
|
-
from streamlit.web.server.server_util import
|
25
|
+
from streamlit.web.server.server_util import (
|
26
|
+
emit_endpoint_deprecation_notice,
|
27
|
+
is_xsrf_enabled,
|
28
|
+
)
|
26
29
|
|
27
30
|
_LOGGER: Final = get_logger(__name__)
|
28
31
|
|
@@ -58,7 +61,6 @@ class StaticFileHandler(tornado.web.StaticFileHandler):
|
|
58
61
|
be cached indefinitely.
|
59
62
|
"""
|
60
63
|
is_index_url = len(path) == 0
|
61
|
-
|
62
64
|
if is_index_url or path.endswith(".html"):
|
63
65
|
self.set_header("Cache-Control", "no-cache")
|
64
66
|
else:
|
@@ -173,7 +175,7 @@ class HealthHandler(_SpecialRequestHandler):
|
|
173
175
|
# server.enableXsrfProtection is updated, the browser does not reload the document.
|
174
176
|
# Manually setting the cookie on /healthz since it is pinged when the
|
175
177
|
# browser is disconnected from the server.
|
176
|
-
if
|
178
|
+
if is_xsrf_enabled():
|
177
179
|
cookie_kwargs = self.settings.get("xsrf_cookie_kwargs", {})
|
178
180
|
self.set_cookie(
|
179
181
|
self.settings.get("xsrf_cookie_name", "_streamlit_xsrf"),
|
streamlit/web/server/server.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.
|
@@ -30,6 +30,7 @@ import tornado.websocket
|
|
30
30
|
from tornado.httpserver import HTTPServer
|
31
31
|
|
32
32
|
from streamlit import cli_util, config, file_util, util
|
33
|
+
from streamlit.auth_util import is_authlib_installed
|
33
34
|
from streamlit.config_option import ConfigOption
|
34
35
|
from streamlit.logger import get_logger
|
35
36
|
from streamlit.runtime import Runtime, RuntimeConfig, RuntimeState
|
@@ -52,7 +53,12 @@ from streamlit.web.server.routes import (
|
|
52
53
|
RemoveSlashHandler,
|
53
54
|
StaticFileHandler,
|
54
55
|
)
|
55
|
-
from streamlit.web.server.server_util import
|
56
|
+
from streamlit.web.server.server_util import (
|
57
|
+
DEVELOPMENT_PORT,
|
58
|
+
get_cookie_secret,
|
59
|
+
is_xsrf_enabled,
|
60
|
+
make_url_path_regex,
|
61
|
+
)
|
56
62
|
from streamlit.web.server.stats_request_handler import StatsRequestHandler
|
57
63
|
from streamlit.web.server.upload_file_request_handler import UploadFileRequestHandler
|
58
64
|
|
@@ -96,6 +102,10 @@ SCRIPT_HEALTH_CHECK_ENDPOINT: Final = (
|
|
96
102
|
r"(?:script-health-check|_stcore/script-health-check)"
|
97
103
|
)
|
98
104
|
|
105
|
+
OAUTH2_CALLBACK_ENDPOINT: Final = "/oauth2callback"
|
106
|
+
AUTH_LOGIN_ENDPOINT: Final = "/auth/login"
|
107
|
+
AUTH_LOGOUT_ENDPOINT: Final = "/auth/logout"
|
108
|
+
|
99
109
|
|
100
110
|
class RetriesExceeded(Exception):
|
101
111
|
pass
|
@@ -370,6 +380,33 @@ class Server:
|
|
370
380
|
]
|
371
381
|
)
|
372
382
|
|
383
|
+
if is_authlib_installed():
|
384
|
+
from streamlit.web.server.oauth_authlib_routes import (
|
385
|
+
AuthCallbackHandler,
|
386
|
+
AuthLoginHandler,
|
387
|
+
AuthLogoutHandler,
|
388
|
+
)
|
389
|
+
|
390
|
+
routes.extend(
|
391
|
+
[
|
392
|
+
(
|
393
|
+
make_url_path_regex(base, OAUTH2_CALLBACK_ENDPOINT),
|
394
|
+
AuthCallbackHandler,
|
395
|
+
{"base_url": base},
|
396
|
+
),
|
397
|
+
(
|
398
|
+
make_url_path_regex(base, AUTH_LOGIN_ENDPOINT),
|
399
|
+
AuthLoginHandler,
|
400
|
+
{"base_url": base},
|
401
|
+
),
|
402
|
+
(
|
403
|
+
make_url_path_regex(base, AUTH_LOGOUT_ENDPOINT),
|
404
|
+
AuthLogoutHandler,
|
405
|
+
{"base_url": base},
|
406
|
+
),
|
407
|
+
]
|
408
|
+
)
|
409
|
+
|
373
410
|
if config.get_option("global.developmentMode"):
|
374
411
|
_LOGGER.debug("Serving static content from the Node dev server")
|
375
412
|
else:
|
@@ -410,8 +447,8 @@ class Server:
|
|
410
447
|
|
411
448
|
return tornado.web.Application(
|
412
449
|
routes,
|
413
|
-
cookie_secret=
|
414
|
-
xsrf_cookies=
|
450
|
+
cookie_secret=get_cookie_secret(),
|
451
|
+
xsrf_cookies=is_xsrf_enabled(),
|
415
452
|
# Set the websocket message size. The default value is too low.
|
416
453
|
websocket_max_message_size=get_max_message_size_bytes(),
|
417
454
|
**TORNADO_SETTINGS, # type: ignore[arg-type]
|
@@ -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.
|
@@ -20,6 +20,7 @@ from typing import TYPE_CHECKING, Final, Literal
|
|
20
20
|
from urllib.parse import urljoin
|
21
21
|
|
22
22
|
from streamlit import config, net_util, url_util
|
23
|
+
from streamlit.runtime.secrets import secrets_singleton
|
23
24
|
|
24
25
|
if TYPE_CHECKING:
|
25
26
|
from tornado.web import RequestHandler
|
@@ -27,6 +28,8 @@ if TYPE_CHECKING:
|
|
27
28
|
# The port reserved for internal development.
|
28
29
|
DEVELOPMENT_PORT: Final = 3000
|
29
30
|
|
31
|
+
AUTH_COOKIE_NAME: Final = "_streamlit_user"
|
32
|
+
|
30
33
|
|
31
34
|
def is_url_from_allowed_origins(url: str) -> bool:
|
32
35
|
"""Return True if URL is from allowed origins (for CORS purpose).
|
@@ -70,6 +73,27 @@ def is_url_from_allowed_origins(url: str) -> bool:
|
|
70
73
|
return False
|
71
74
|
|
72
75
|
|
76
|
+
def get_cookie_secret() -> str:
|
77
|
+
"""Get the cookie secret.
|
78
|
+
|
79
|
+
If the user has not set a cookie secret, we generate a random one.
|
80
|
+
"""
|
81
|
+
cookie_secret: str = config.get_option("server.cookieSecret")
|
82
|
+
if secrets_singleton.load_if_toml_exists():
|
83
|
+
auth_section = secrets_singleton.get("auth")
|
84
|
+
if auth_section:
|
85
|
+
cookie_secret = auth_section.get("cookie_secret", cookie_secret)
|
86
|
+
return cookie_secret
|
87
|
+
|
88
|
+
|
89
|
+
def is_xsrf_enabled():
|
90
|
+
csrf_enabled = config.get_option("server.enableXsrfProtection")
|
91
|
+
if not csrf_enabled and secrets_singleton.load_if_toml_exists():
|
92
|
+
auth_section = secrets_singleton.get("auth", None)
|
93
|
+
csrf_enabled = csrf_enabled or auth_section is not None
|
94
|
+
return csrf_enabled
|
95
|
+
|
96
|
+
|
73
97
|
def _get_server_address_if_manually_set() -> str | None:
|
74
98
|
if config.is_manually_set("browser.serverAddress"):
|
75
99
|
return url_util.get_hostname(config.get_option("browser.serverAddress"))
|
@@ -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.
|
@@ -22,6 +22,7 @@ import tornado.web
|
|
22
22
|
from streamlit import config
|
23
23
|
from streamlit.runtime.uploaded_file_manager import UploadedFileRec
|
24
24
|
from streamlit.web.server import routes, server_util
|
25
|
+
from streamlit.web.server.server_util import is_xsrf_enabled
|
25
26
|
|
26
27
|
if TYPE_CHECKING:
|
27
28
|
from streamlit.runtime.memory_uploaded_file_manager import MemoryUploadedFileManager
|
@@ -51,7 +52,7 @@ class UploadFileRequestHandler(tornado.web.RequestHandler):
|
|
51
52
|
def set_default_headers(self):
|
52
53
|
self.set_header("Access-Control-Allow-Methods", "PUT, OPTIONS, DELETE")
|
53
54
|
self.set_header("Access-Control-Allow-Headers", "Content-Type")
|
54
|
-
if
|
55
|
+
if is_xsrf_enabled():
|
55
56
|
self.set_header(
|
56
57
|
"Access-Control-Allow-Origin",
|
57
58
|
server_util.get_url(config.get_option("browser.serverAddress")),
|
@@ -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
|
-
rem Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-
|
1
|
+
rem Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
|
2
2
|
rem
|
3
3
|
rem Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
rem you may not use this file except in compliance with the License.
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: streamlit-nightly
|
3
|
-
Version: 1.41.2.
|
3
|
+
Version: 1.41.2.dev20250124
|
4
4
|
Summary: A faster way to build and share data apps
|
5
5
|
Home-page: https://streamlit.io
|
6
6
|
Author: Snowflake Inc
|
@@ -45,14 +45,26 @@ Requires-Dist: requests<3,>=2.27
|
|
45
45
|
Requires-Dist: rich<14,>=10.14.0
|
46
46
|
Requires-Dist: tenacity<10,>=8.1.0
|
47
47
|
Requires-Dist: toml<2,>=0.10.1
|
48
|
-
Requires-Dist: typing-extensions<5,>=4.
|
48
|
+
Requires-Dist: typing-extensions<5,>=4.4.0
|
49
49
|
Requires-Dist: watchdog<7,>=2.1.5; platform_system != "Darwin"
|
50
50
|
Requires-Dist: gitpython!=3.1.19,<4,>=3.0.7
|
51
51
|
Requires-Dist: pydeck<1,>=0.8.0b4
|
52
52
|
Requires-Dist: tornado<7,>=6.0.3
|
53
53
|
Provides-Extra: snowflake
|
54
54
|
Requires-Dist: snowflake-snowpark-python[modin]>=1.17.0; python_version < "3.12" and extra == "snowflake"
|
55
|
-
Requires-Dist: snowflake-connector-python>=
|
55
|
+
Requires-Dist: snowflake-connector-python>=3.3.0; python_version < "3.12" and extra == "snowflake"
|
56
|
+
Dynamic: author
|
57
|
+
Dynamic: author-email
|
58
|
+
Dynamic: classifier
|
59
|
+
Dynamic: description
|
60
|
+
Dynamic: description-content-type
|
61
|
+
Dynamic: home-page
|
62
|
+
Dynamic: license
|
63
|
+
Dynamic: project-url
|
64
|
+
Dynamic: provides-extra
|
65
|
+
Dynamic: requires-dist
|
66
|
+
Dynamic: requires-python
|
67
|
+
Dynamic: summary
|
56
68
|
|
57
69
|
<br>
|
58
70
|
|