streamlit-nightly 1.41.2.dev20250107__py2.py3-none-any.whl → 1.41.2.dev20250108__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.
Files changed (390) hide show
  1. streamlit/__init__.py +11 -2
  2. streamlit/__main__.py +1 -1
  3. streamlit/auth_util.py +209 -0
  4. streamlit/cli_util.py +1 -1
  5. streamlit/column_config.py +1 -1
  6. streamlit/commands/__init__.py +1 -1
  7. streamlit/commands/echo.py +1 -1
  8. streamlit/commands/execution_control.py +1 -1
  9. streamlit/commands/experimental_query_params.py +1 -1
  10. streamlit/commands/logo.py +1 -1
  11. streamlit/commands/navigation.py +1 -1
  12. streamlit/commands/page_config.py +1 -1
  13. streamlit/components/__init__.py +1 -1
  14. streamlit/components/lib/__init__.py +1 -1
  15. streamlit/components/lib/local_component_registry.py +1 -1
  16. streamlit/components/types/__init__.py +1 -1
  17. streamlit/components/types/base_component_registry.py +1 -1
  18. streamlit/components/types/base_custom_component.py +1 -1
  19. streamlit/components/v1/__init__.py +1 -1
  20. streamlit/components/v1/component_arrow.py +1 -1
  21. streamlit/components/v1/component_registry.py +1 -1
  22. streamlit/components/v1/components.py +1 -1
  23. streamlit/components/v1/custom_component.py +1 -1
  24. streamlit/config.py +1 -1
  25. streamlit/config_option.py +1 -1
  26. streamlit/config_util.py +1 -1
  27. streamlit/connections/__init__.py +1 -1
  28. streamlit/connections/base_connection.py +1 -1
  29. streamlit/connections/snowflake_connection.py +1 -1
  30. streamlit/connections/snowpark_connection.py +1 -1
  31. streamlit/connections/sql_connection.py +1 -1
  32. streamlit/connections/util.py +1 -1
  33. streamlit/cursor.py +1 -1
  34. streamlit/dataframe_util.py +1 -1
  35. streamlit/delta_generator.py +1 -1
  36. streamlit/delta_generator_singletons.py +1 -1
  37. streamlit/deprecation_util.py +1 -1
  38. streamlit/development.py +1 -1
  39. streamlit/elements/__init__.py +1 -1
  40. streamlit/elements/alert.py +1 -1
  41. streamlit/elements/arrow.py +1 -1
  42. streamlit/elements/balloons.py +1 -1
  43. streamlit/elements/bokeh_chart.py +1 -1
  44. streamlit/elements/code.py +1 -1
  45. streamlit/elements/deck_gl_json_chart.py +1 -1
  46. streamlit/elements/dialog_decorator.py +1 -1
  47. streamlit/elements/doc_string.py +1 -1
  48. streamlit/elements/empty.py +1 -1
  49. streamlit/elements/exception.py +1 -1
  50. streamlit/elements/form.py +1 -1
  51. streamlit/elements/graphviz_chart.py +1 -1
  52. streamlit/elements/heading.py +1 -1
  53. streamlit/elements/html.py +1 -1
  54. streamlit/elements/iframe.py +1 -1
  55. streamlit/elements/image.py +1 -1
  56. streamlit/elements/json.py +1 -1
  57. streamlit/elements/layouts.py +1 -1
  58. streamlit/elements/lib/__init__.py +1 -1
  59. streamlit/elements/lib/built_in_chart_utils.py +1 -1
  60. streamlit/elements/lib/color_util.py +1 -1
  61. streamlit/elements/lib/column_config_utils.py +1 -1
  62. streamlit/elements/lib/column_types.py +1 -1
  63. streamlit/elements/lib/dialog.py +1 -1
  64. streamlit/elements/lib/dicttools.py +1 -1
  65. streamlit/elements/lib/event_utils.py +1 -1
  66. streamlit/elements/lib/file_uploader_utils.py +1 -1
  67. streamlit/elements/lib/form_utils.py +1 -1
  68. streamlit/elements/lib/image_utils.py +1 -1
  69. streamlit/elements/lib/js_number.py +1 -1
  70. streamlit/elements/lib/mutable_status_container.py +1 -1
  71. streamlit/elements/lib/options_selector_utils.py +1 -1
  72. streamlit/elements/lib/pandas_styler_utils.py +1 -1
  73. streamlit/elements/lib/policies.py +1 -1
  74. streamlit/elements/lib/streamlit_plotly_theme.py +1 -1
  75. streamlit/elements/lib/subtitle_utils.py +1 -1
  76. streamlit/elements/lib/utils.py +1 -1
  77. streamlit/elements/map.py +1 -1
  78. streamlit/elements/markdown.py +1 -1
  79. streamlit/elements/media.py +1 -1
  80. streamlit/elements/metric.py +1 -1
  81. streamlit/elements/plotly_chart.py +1 -1
  82. streamlit/elements/progress.py +1 -1
  83. streamlit/elements/pyplot.py +1 -1
  84. streamlit/elements/snow.py +1 -1
  85. streamlit/elements/spinner.py +14 -7
  86. streamlit/elements/text.py +1 -1
  87. streamlit/elements/toast.py +1 -1
  88. streamlit/elements/vega_charts.py +1 -1
  89. streamlit/elements/widgets/__init__.py +1 -1
  90. streamlit/elements/widgets/audio_input.py +1 -1
  91. streamlit/elements/widgets/button.py +1 -1
  92. streamlit/elements/widgets/button_group.py +1 -1
  93. streamlit/elements/widgets/camera_input.py +1 -1
  94. streamlit/elements/widgets/chat.py +1 -1
  95. streamlit/elements/widgets/checkbox.py +1 -1
  96. streamlit/elements/widgets/color_picker.py +1 -1
  97. streamlit/elements/widgets/data_editor.py +1 -1
  98. streamlit/elements/widgets/file_uploader.py +1 -1
  99. streamlit/elements/widgets/multiselect.py +1 -1
  100. streamlit/elements/widgets/number_input.py +1 -1
  101. streamlit/elements/widgets/radio.py +1 -1
  102. streamlit/elements/widgets/select_slider.py +1 -1
  103. streamlit/elements/widgets/selectbox.py +1 -1
  104. streamlit/elements/widgets/slider.py +1 -1
  105. streamlit/elements/widgets/text_widgets.py +1 -1
  106. streamlit/elements/widgets/time_widgets.py +1 -1
  107. streamlit/elements/write.py +1 -1
  108. streamlit/emojis.py +1 -1
  109. streamlit/env_util.py +1 -1
  110. streamlit/error_util.py +1 -1
  111. streamlit/errors.py +5 -1
  112. streamlit/external/__init__.py +1 -1
  113. streamlit/external/langchain/__init__.py +1 -1
  114. streamlit/external/langchain/streamlit_callback_handler.py +1 -1
  115. streamlit/file_util.py +1 -1
  116. streamlit/git_util.py +1 -1
  117. streamlit/hello/__init__.py +1 -1
  118. streamlit/hello/animation_demo.py +1 -1
  119. streamlit/hello/dataframe_demo.py +1 -1
  120. streamlit/hello/hello.py +1 -1
  121. streamlit/hello/mapping_demo.py +1 -1
  122. streamlit/hello/plotting_demo.py +1 -1
  123. streamlit/hello/streamlit_app.py +1 -1
  124. streamlit/hello/utils.py +1 -1
  125. streamlit/logger.py +1 -1
  126. streamlit/material_icon_names.py +1 -1
  127. streamlit/navigation/__init__.py +1 -1
  128. streamlit/navigation/page.py +1 -1
  129. streamlit/net_util.py +1 -1
  130. streamlit/platform.py +1 -1
  131. streamlit/proto/Alert_pb2.pyi +1 -1
  132. streamlit/proto/AppPage_pb2.pyi +1 -1
  133. streamlit/proto/ArrowNamedDataSet_pb2.pyi +1 -1
  134. streamlit/proto/ArrowVegaLiteChart_pb2.pyi +1 -1
  135. streamlit/proto/Arrow_pb2.pyi +1 -1
  136. streamlit/proto/AudioInput_pb2.pyi +1 -1
  137. streamlit/proto/Audio_pb2.pyi +1 -1
  138. streamlit/proto/AuthRedirect_pb2.py +27 -0
  139. streamlit/proto/AuthRedirect_pb2.pyi +41 -0
  140. streamlit/proto/AutoRerun_pb2.pyi +1 -1
  141. streamlit/proto/BackMsg_pb2.pyi +1 -1
  142. streamlit/proto/Balloons_pb2.pyi +1 -1
  143. streamlit/proto/Block_pb2.pyi +1 -1
  144. streamlit/proto/BokehChart_pb2.pyi +1 -1
  145. streamlit/proto/ButtonGroup_pb2.pyi +1 -1
  146. streamlit/proto/Button_pb2.pyi +1 -1
  147. streamlit/proto/CameraInput_pb2.pyi +1 -1
  148. streamlit/proto/ChatInput_pb2.pyi +1 -1
  149. streamlit/proto/Checkbox_pb2.pyi +1 -1
  150. streamlit/proto/ClientState_pb2.pyi +1 -1
  151. streamlit/proto/Code_pb2.pyi +1 -1
  152. streamlit/proto/ColorPicker_pb2.pyi +1 -1
  153. streamlit/proto/Common_pb2.pyi +1 -1
  154. streamlit/proto/Components_pb2.pyi +1 -1
  155. streamlit/proto/DataFrame_pb2.pyi +1 -1
  156. streamlit/proto/DateInput_pb2.pyi +1 -1
  157. streamlit/proto/DeckGlJsonChart_pb2.pyi +1 -1
  158. streamlit/proto/Delta_pb2.pyi +1 -1
  159. streamlit/proto/DocString_pb2.pyi +1 -1
  160. streamlit/proto/DownloadButton_pb2.pyi +1 -1
  161. streamlit/proto/Element_pb2.pyi +1 -1
  162. streamlit/proto/Empty_pb2.pyi +1 -1
  163. streamlit/proto/Exception_pb2.pyi +1 -1
  164. streamlit/proto/Favicon_pb2.pyi +1 -1
  165. streamlit/proto/FileUploader_pb2.pyi +1 -1
  166. streamlit/proto/ForwardMsg_pb2.py +10 -9
  167. streamlit/proto/ForwardMsg_pb2.pyi +11 -4
  168. streamlit/proto/GitInfo_pb2.pyi +1 -1
  169. streamlit/proto/GraphVizChart_pb2.pyi +1 -1
  170. streamlit/proto/Heading_pb2.pyi +1 -1
  171. streamlit/proto/Html_pb2.pyi +1 -1
  172. streamlit/proto/IFrame_pb2.pyi +1 -1
  173. streamlit/proto/Image_pb2.pyi +1 -1
  174. streamlit/proto/Json_pb2.pyi +1 -1
  175. streamlit/proto/LabelVisibilityMessage_pb2.pyi +1 -1
  176. streamlit/proto/LinkButton_pb2.pyi +1 -1
  177. streamlit/proto/Logo_pb2.pyi +1 -1
  178. streamlit/proto/Markdown_pb2.pyi +1 -1
  179. streamlit/proto/Metric_pb2.pyi +1 -1
  180. streamlit/proto/MetricsEvent_pb2.pyi +1 -1
  181. streamlit/proto/MultiSelect_pb2.pyi +1 -1
  182. streamlit/proto/NamedDataSet_pb2.pyi +1 -1
  183. streamlit/proto/Navigation_pb2.pyi +1 -1
  184. streamlit/proto/NewSession_pb2.pyi +1 -1
  185. streamlit/proto/NumberInput_pb2.pyi +1 -1
  186. streamlit/proto/PageConfig_pb2.pyi +1 -1
  187. streamlit/proto/PageInfo_pb2.pyi +1 -1
  188. streamlit/proto/PageLink_pb2.pyi +1 -1
  189. streamlit/proto/PageNotFound_pb2.pyi +1 -1
  190. streamlit/proto/PageProfile_pb2.pyi +1 -1
  191. streamlit/proto/PagesChanged_pb2.pyi +1 -1
  192. streamlit/proto/ParentMessage_pb2.pyi +1 -1
  193. streamlit/proto/PlotlyChart_pb2.pyi +1 -1
  194. streamlit/proto/Progress_pb2.pyi +1 -1
  195. streamlit/proto/Radio_pb2.pyi +1 -1
  196. streamlit/proto/RootContainer_pb2.pyi +1 -1
  197. streamlit/proto/Selectbox_pb2.pyi +1 -1
  198. streamlit/proto/SessionEvent_pb2.pyi +1 -1
  199. streamlit/proto/SessionStatus_pb2.pyi +1 -1
  200. streamlit/proto/Skeleton_pb2.pyi +1 -1
  201. streamlit/proto/Slider_pb2.pyi +1 -1
  202. streamlit/proto/Snow_pb2.pyi +1 -1
  203. streamlit/proto/Spinner_pb2.py +2 -2
  204. streamlit/proto/Spinner_pb2.pyi +6 -2
  205. streamlit/proto/TextArea_pb2.pyi +1 -1
  206. streamlit/proto/TextInput_pb2.pyi +1 -1
  207. streamlit/proto/Text_pb2.pyi +1 -1
  208. streamlit/proto/TimeInput_pb2.pyi +1 -1
  209. streamlit/proto/Toast_pb2.pyi +1 -1
  210. streamlit/proto/VegaLiteChart_pb2.pyi +1 -1
  211. streamlit/proto/Video_pb2.pyi +1 -1
  212. streamlit/proto/WidgetStates_pb2.pyi +1 -1
  213. streamlit/proto/__init__.py +1 -1
  214. streamlit/runtime/__init__.py +1 -1
  215. streamlit/runtime/app_session.py +6 -2
  216. streamlit/runtime/caching/__init__.py +1 -1
  217. streamlit/runtime/caching/cache_data_api.py +1 -1
  218. streamlit/runtime/caching/cache_errors.py +1 -1
  219. streamlit/runtime/caching/cache_resource_api.py +1 -1
  220. streamlit/runtime/caching/cache_type.py +1 -1
  221. streamlit/runtime/caching/cache_utils.py +1 -1
  222. streamlit/runtime/caching/cached_message_replay.py +1 -1
  223. streamlit/runtime/caching/hashing.py +1 -1
  224. streamlit/runtime/caching/legacy_cache_api.py +1 -1
  225. streamlit/runtime/caching/storage/__init__.py +1 -1
  226. streamlit/runtime/caching/storage/cache_storage_protocol.py +1 -1
  227. streamlit/runtime/caching/storage/dummy_cache_storage.py +1 -1
  228. streamlit/runtime/caching/storage/in_memory_cache_storage_wrapper.py +1 -1
  229. streamlit/runtime/caching/storage/local_disk_cache_storage.py +1 -1
  230. streamlit/runtime/connection_factory.py +1 -1
  231. streamlit/runtime/context.py +1 -1
  232. streamlit/runtime/credentials.py +1 -1
  233. streamlit/runtime/forward_msg_cache.py +1 -1
  234. streamlit/runtime/forward_msg_queue.py +1 -1
  235. streamlit/runtime/fragment.py +1 -1
  236. streamlit/runtime/media_file_manager.py +1 -1
  237. streamlit/runtime/media_file_storage.py +1 -1
  238. streamlit/runtime/memory_media_file_storage.py +1 -1
  239. streamlit/runtime/memory_session_storage.py +1 -1
  240. streamlit/runtime/memory_uploaded_file_manager.py +1 -1
  241. streamlit/runtime/metrics_util.py +2 -1
  242. streamlit/runtime/pages_manager.py +1 -1
  243. streamlit/runtime/runtime.py +14 -3
  244. streamlit/runtime/runtime_util.py +1 -1
  245. streamlit/runtime/script_data.py +1 -1
  246. streamlit/runtime/scriptrunner/__init__.py +1 -1
  247. streamlit/runtime/scriptrunner/exec_code.py +1 -1
  248. streamlit/runtime/scriptrunner/magic.py +1 -1
  249. streamlit/runtime/scriptrunner/magic_funcs.py +1 -1
  250. streamlit/runtime/scriptrunner/script_cache.py +1 -1
  251. streamlit/runtime/scriptrunner/script_runner.py +18 -9
  252. streamlit/runtime/scriptrunner_utils/__init__.py +1 -1
  253. streamlit/runtime/scriptrunner_utils/exceptions.py +1 -1
  254. streamlit/runtime/scriptrunner_utils/script_requests.py +1 -1
  255. streamlit/runtime/scriptrunner_utils/script_run_context.py +2 -2
  256. streamlit/runtime/secrets.py +1 -1
  257. streamlit/runtime/session_manager.py +2 -2
  258. streamlit/runtime/state/__init__.py +1 -1
  259. streamlit/runtime/state/common.py +1 -1
  260. streamlit/runtime/state/query_params.py +1 -1
  261. streamlit/runtime/state/query_params_proxy.py +1 -1
  262. streamlit/runtime/state/safe_session_state.py +1 -1
  263. streamlit/runtime/state/session_state.py +1 -1
  264. streamlit/runtime/state/session_state_proxy.py +1 -1
  265. streamlit/runtime/state/widgets.py +1 -1
  266. streamlit/runtime/stats.py +1 -1
  267. streamlit/runtime/uploaded_file_manager.py +1 -1
  268. streamlit/runtime/websocket_session_manager.py +2 -2
  269. streamlit/source_util.py +1 -1
  270. streamlit/static/index.html +2 -2
  271. streamlit/static/static/js/{FileDownload.esm.Dod29kzi.js → FileDownload.esm.CXWFIN7B.js} +1 -1
  272. streamlit/static/static/js/{FormClearHelper.0CIwSBFI.js → FormClearHelper.dauERNYc.js} +1 -1
  273. streamlit/static/static/js/{Hooks.D0iBCSJR.js → Hooks.CqBCxxzg.js} +1 -1
  274. streamlit/static/static/js/{InputInstructions.BGz0VNnm.js → InputInstructions.Dm8zppD9.js} +1 -1
  275. streamlit/static/static/js/{ProgressBar.BaPlfiH4.js → ProgressBar.CQTs8xxT.js} +1 -1
  276. streamlit/static/static/js/RenderInPortalIfExists.BIVWPcSk.js +1 -0
  277. streamlit/static/static/js/Toolbar.D_9Mp69H.js +1 -0
  278. streamlit/static/static/js/{base-input.Fk16kR45.js → base-input.JrivAGt5.js} +1 -1
  279. streamlit/static/static/js/{createSuper.B8NDjS0T.js → createSuper.BLkfEjg8.js} +1 -1
  280. streamlit/static/static/js/{data-grid-overlay-editor.C0oC7OWz.js → data-grid-overlay-editor.4d_NBoKr.js} +1 -1
  281. streamlit/static/static/js/{downloader.BLJWoPl1.js → downloader.i394ggfM.js} +1 -1
  282. streamlit/static/static/js/{es6.D9yZ4-e5.js → es6.BPf5kpFH.js} +2 -2
  283. streamlit/static/static/js/{getPrototypeOf.DKKmv0PS.js → getPrototypeOf.DcAVjrh9.js} +1 -1
  284. streamlit/static/static/js/{iframeResizer.contentWindow.Du2ek_IY.js → iframeResizer.contentWindow.YDN8GVx9.js} +1 -1
  285. streamlit/static/static/js/index.57g5CAPC.js +1 -0
  286. streamlit/static/static/js/{index.CxrCMTqd.js → index.B3dyGG7q.js} +1 -1
  287. streamlit/static/static/js/index.B6GM885g.js +1 -0
  288. streamlit/static/static/js/{index.CzDEy16B.js → index.BB2p9KgS.js} +1 -1
  289. streamlit/static/static/js/{index.UMKksAwF.js → index.BOBIcAmK.js} +1 -1
  290. streamlit/static/static/js/{index.C2_hseSo.js → index.B_o9A-oO.js} +1 -1
  291. streamlit/static/static/js/{index.HXS4cXj6.js → index.BfABFd7-.js} +2 -2
  292. streamlit/static/static/js/{index.BAADbUet.js → index.BidgRpd5.js} +1 -1
  293. streamlit/static/static/js/{index.DcJiNltm.js → index.Bj7LBigw.js} +7 -7
  294. streamlit/static/static/js/{index.BY0L_QLh.js → index.C-TBipT2.js} +2 -2
  295. streamlit/static/static/js/{index.CaORMlLk.js → index.C4muCvfN.js} +1 -1
  296. streamlit/static/static/js/{index.ncJlJcLt.js → index.CAZAG6f3.js} +1 -1
  297. streamlit/static/static/js/{index.BZAVJreZ.js → index.CJlBME-_.js} +1 -1
  298. streamlit/static/static/js/{index.CCLqv4q8.js → index.CMAjN-j5.js} +2 -2
  299. streamlit/static/static/js/{index.DxFUMDyF.js → index.CSmBE6cg.js} +1 -1
  300. streamlit/static/static/js/{index.CGSuEM6K.js → index.CgkfCbvP.js} +1 -1
  301. streamlit/static/static/js/index.D1CJOG3s.js +1 -0
  302. streamlit/static/static/js/index.D1qR2sOA.js +1 -0
  303. streamlit/static/static/js/{index.d_eIUHvJ.js → index.D7EG5vd0.js} +2 -2
  304. streamlit/static/static/js/{index.BGyFJsxB.js → index.DE-FOSSU.js} +1 -1
  305. streamlit/static/static/js/{index.Cfmr2hoW.js → index.DWU1GWqY.js} +1 -1
  306. streamlit/static/static/js/{index.CgHOvdK_.js → index.D_bHPQ8s.js} +1 -1
  307. streamlit/static/static/js/{index.DU9T3IwS.js → index.DalTq5GL.js} +1 -1
  308. streamlit/static/static/js/index.Df7nX4KF.js +1 -0
  309. streamlit/static/static/js/index.DgOwxLz5.js +4 -0
  310. streamlit/static/static/js/{index.DCosyf4Y.js → index.DmHQeMtj.js} +1 -1
  311. streamlit/static/static/js/{index.clUXhmTv.js → index.DsKBnIk-.js} +13 -13
  312. streamlit/static/static/js/{index.C73yVjC9.js → index.DxsOgtLc.js} +1 -1
  313. streamlit/static/static/js/{index.BEr9HRGP.js → index.DyNkf5tM.js} +1 -1
  314. streamlit/static/static/js/{index.D-s5XFne.js → index.Dz6VQ3qN.js} +1 -1
  315. streamlit/static/static/js/{index.K_IYAbRz.js → index.HktO7F0v.js} +51 -51
  316. streamlit/static/static/js/{index.DdG-jRFd.js → index.PriAkdhw.js} +1 -1
  317. streamlit/static/static/js/{index.CTvaDQgd.js → index.SKaK1lYU.js} +2 -2
  318. streamlit/static/static/js/index.V5OLP0n7.js +1 -0
  319. streamlit/static/static/js/index.YfuWGKrN.js +1 -0
  320. streamlit/static/static/js/index.g_BxiUns.js +1 -0
  321. streamlit/static/static/js/{index.B8MC65SU.js → index.kc3Ycvjj.js} +28 -28
  322. streamlit/static/static/js/{input.BX19stYv.js → input.CqdNsSbL.js} +1 -1
  323. streamlit/static/static/js/{memory.DrUTC0E1.js → memory.Bkvk-eRa.js} +1 -1
  324. streamlit/static/static/js/{mergeWith.DthgK8_y.js → mergeWith.DtsbyD6H.js} +1 -1
  325. streamlit/static/static/js/{number-overlay-editor.17BCi9Ve.js → number-overlay-editor.CR4D4kK1.js} +1 -1
  326. streamlit/static/static/js/{sandbox.5Hd92fh0.js → sandbox.C5M8yw5Z.js} +1 -1
  327. streamlit/static/static/js/{slicedToArray.Bu7hUD78.js → slicedToArray.BL5-s74J.js} +1 -1
  328. streamlit/static/static/js/{textarea.B2pXMKyh.js → textarea.DrGlWUDC.js} +1 -1
  329. streamlit/static/static/js/{timepicker.5G_63qYl.js → timepicker.Bdf2lGHx.js} +1 -1
  330. streamlit/static/static/js/{uniqueId.B7repv29.js → uniqueId.LGvQ35eR.js} +1 -1
  331. streamlit/static/static/js/{useBasicWidgetState.ZoM17KXF.js → useBasicWidgetState.TTzKcGCs.js} +1 -1
  332. streamlit/static/static/js/{useOnInputChange.DK_jsnv_.js → useOnInputChange.ChvkrwHU.js} +1 -1
  333. streamlit/static/static/js/{withFullScreenWrapper.ByjGCoNh.js → withFullScreenWrapper.ChQqb1TZ.js} +1 -1
  334. streamlit/string_util.py +1 -1
  335. streamlit/temporary_directory.py +1 -1
  336. streamlit/testing/__init__.py +1 -1
  337. streamlit/testing/v1/__init__.py +1 -1
  338. streamlit/testing/v1/app_test.py +1 -1
  339. streamlit/testing/v1/element_tree.py +1 -1
  340. streamlit/testing/v1/local_script_runner.py +1 -1
  341. streamlit/testing/v1/util.py +1 -1
  342. streamlit/time_util.py +1 -1
  343. streamlit/type_util.py +1 -1
  344. streamlit/url_util.py +24 -1
  345. streamlit/user_info.py +94 -27
  346. streamlit/util.py +1 -1
  347. streamlit/version.py +1 -1
  348. streamlit/watcher/__init__.py +1 -1
  349. streamlit/watcher/event_based_path_watcher.py +1 -1
  350. streamlit/watcher/folder_black_list.py +1 -1
  351. streamlit/watcher/local_sources_watcher.py +1 -1
  352. streamlit/watcher/path_watcher.py +1 -1
  353. streamlit/watcher/polling_path_watcher.py +1 -1
  354. streamlit/watcher/util.py +1 -1
  355. streamlit/web/__init__.py +1 -1
  356. streamlit/web/bootstrap.py +1 -1
  357. streamlit/web/cache_storage_manager_config.py +1 -1
  358. streamlit/web/cli.py +1 -1
  359. streamlit/web/server/__init__.py +1 -1
  360. streamlit/web/server/app_static_file_handler.py +1 -1
  361. streamlit/web/server/authlib_tornado_integration.py +58 -0
  362. streamlit/web/server/browser_websocket_handler.py +72 -6
  363. streamlit/web/server/component_request_handler.py +1 -1
  364. streamlit/web/server/media_file_handler.py +1 -1
  365. streamlit/web/server/oauth_authlib_routes.py +176 -0
  366. streamlit/web/server/oidc_mixin.py +108 -0
  367. streamlit/web/server/routes.py +6 -4
  368. streamlit/web/server/server.py +41 -4
  369. streamlit/web/server/server_util.py +25 -1
  370. streamlit/web/server/stats_request_handler.py +1 -1
  371. streamlit/web/server/upload_file_request_handler.py +3 -2
  372. streamlit/web/server/websocket_headers.py +1 -1
  373. {streamlit_nightly-1.41.2.dev20250107.data → streamlit_nightly-1.41.2.dev20250108.data}/scripts/streamlit.cmd +1 -1
  374. {streamlit_nightly-1.41.2.dev20250107.dist-info → streamlit_nightly-1.41.2.dev20250108.dist-info}/METADATA +14 -2
  375. streamlit_nightly-1.41.2.dev20250108.dist-info/RECORD +562 -0
  376. {streamlit_nightly-1.41.2.dev20250107.dist-info → streamlit_nightly-1.41.2.dev20250108.dist-info}/WHEEL +1 -1
  377. streamlit/static/static/js/RenderInPortalIfExists.CDLwOGJN.js +0 -1
  378. streamlit/static/static/js/Toolbar.U2Q07lHA.js +0 -1
  379. streamlit/static/static/js/index.C9Sks6cD.js +0 -1
  380. streamlit/static/static/js/index.CIPlrA_8.js +0 -1
  381. streamlit/static/static/js/index.CKwgjL0N.js +0 -1
  382. streamlit/static/static/js/index.Chl3QVe6.js +0 -1
  383. streamlit/static/static/js/index.Cnd636WC.js +0 -4
  384. streamlit/static/static/js/index.DbcRQLkk.js +0 -1
  385. streamlit/static/static/js/index.DnCNih03.js +0 -1
  386. streamlit/static/static/js/index.NpAsSk7C.js +0 -1
  387. streamlit/static/static/js/index.n6SGF_yN.js +0 -1
  388. streamlit_nightly-1.41.2.dev20250107.dist-info/RECORD +0 -556
  389. {streamlit_nightly-1.41.2.dev20250107.dist-info → streamlit_nightly-1.41.2.dev20250108.dist-info}/entry_points.txt +0 -0
  390. {streamlit_nightly-1.41.2.dev20250107.dist-info → streamlit_nightly-1.41.2.dev20250108.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-2024)
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 UserInfoProxy as _UserInfoProxy
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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_util.py CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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/cursor.py CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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/development.py CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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-2024)
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.