streamlit-nightly 1.43.2.dev20250307__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (563) hide show
  1. streamlit/__init__.py +306 -0
  2. streamlit/__main__.py +20 -0
  3. streamlit/auth_util.py +218 -0
  4. streamlit/cli_util.py +105 -0
  5. streamlit/column_config.py +56 -0
  6. streamlit/commands/__init__.py +13 -0
  7. streamlit/commands/echo.py +126 -0
  8. streamlit/commands/execution_control.py +238 -0
  9. streamlit/commands/experimental_query_params.py +169 -0
  10. streamlit/commands/logo.py +189 -0
  11. streamlit/commands/navigation.py +385 -0
  12. streamlit/commands/page_config.py +311 -0
  13. streamlit/components/__init__.py +13 -0
  14. streamlit/components/lib/__init__.py +13 -0
  15. streamlit/components/lib/local_component_registry.py +84 -0
  16. streamlit/components/types/__init__.py +13 -0
  17. streamlit/components/types/base_component_registry.py +99 -0
  18. streamlit/components/types/base_custom_component.py +150 -0
  19. streamlit/components/v1/__init__.py +31 -0
  20. streamlit/components/v1/component_arrow.py +141 -0
  21. streamlit/components/v1/component_registry.py +130 -0
  22. streamlit/components/v1/components.py +38 -0
  23. streamlit/components/v1/custom_component.py +243 -0
  24. streamlit/config.py +1513 -0
  25. streamlit/config_option.py +311 -0
  26. streamlit/config_util.py +177 -0
  27. streamlit/connections/__init__.py +28 -0
  28. streamlit/connections/base_connection.py +174 -0
  29. streamlit/connections/snowflake_connection.py +562 -0
  30. streamlit/connections/snowpark_connection.py +213 -0
  31. streamlit/connections/sql_connection.py +425 -0
  32. streamlit/connections/util.py +97 -0
  33. streamlit/cursor.py +210 -0
  34. streamlit/dataframe_util.py +1416 -0
  35. streamlit/delta_generator.py +602 -0
  36. streamlit/delta_generator_singletons.py +204 -0
  37. streamlit/deprecation_util.py +209 -0
  38. streamlit/development.py +21 -0
  39. streamlit/elements/__init__.py +13 -0
  40. streamlit/elements/alert.py +234 -0
  41. streamlit/elements/arrow.py +962 -0
  42. streamlit/elements/balloons.py +47 -0
  43. streamlit/elements/bokeh_chart.py +133 -0
  44. streamlit/elements/code.py +114 -0
  45. streamlit/elements/deck_gl_json_chart.py +546 -0
  46. streamlit/elements/dialog_decorator.py +267 -0
  47. streamlit/elements/doc_string.py +558 -0
  48. streamlit/elements/empty.py +130 -0
  49. streamlit/elements/exception.py +331 -0
  50. streamlit/elements/form.py +354 -0
  51. streamlit/elements/graphviz_chart.py +150 -0
  52. streamlit/elements/heading.py +302 -0
  53. streamlit/elements/html.py +105 -0
  54. streamlit/elements/iframe.py +191 -0
  55. streamlit/elements/image.py +196 -0
  56. streamlit/elements/json.py +139 -0
  57. streamlit/elements/layouts.py +879 -0
  58. streamlit/elements/lib/__init__.py +13 -0
  59. streamlit/elements/lib/built_in_chart_utils.py +1157 -0
  60. streamlit/elements/lib/color_util.py +263 -0
  61. streamlit/elements/lib/column_config_utils.py +542 -0
  62. streamlit/elements/lib/column_types.py +2188 -0
  63. streamlit/elements/lib/dialog.py +147 -0
  64. streamlit/elements/lib/dicttools.py +154 -0
  65. streamlit/elements/lib/event_utils.py +37 -0
  66. streamlit/elements/lib/file_uploader_utils.py +66 -0
  67. streamlit/elements/lib/form_utils.py +77 -0
  68. streamlit/elements/lib/image_utils.py +441 -0
  69. streamlit/elements/lib/js_number.py +105 -0
  70. streamlit/elements/lib/mutable_status_container.py +183 -0
  71. streamlit/elements/lib/options_selector_utils.py +250 -0
  72. streamlit/elements/lib/pandas_styler_utils.py +274 -0
  73. streamlit/elements/lib/policies.py +194 -0
  74. streamlit/elements/lib/streamlit_plotly_theme.py +207 -0
  75. streamlit/elements/lib/subtitle_utils.py +176 -0
  76. streamlit/elements/lib/utils.py +250 -0
  77. streamlit/elements/map.py +508 -0
  78. streamlit/elements/markdown.py +277 -0
  79. streamlit/elements/media.py +793 -0
  80. streamlit/elements/metric.py +301 -0
  81. streamlit/elements/plotly_chart.py +546 -0
  82. streamlit/elements/progress.py +156 -0
  83. streamlit/elements/pyplot.py +194 -0
  84. streamlit/elements/snow.py +47 -0
  85. streamlit/elements/spinner.py +113 -0
  86. streamlit/elements/text.py +76 -0
  87. streamlit/elements/toast.py +98 -0
  88. streamlit/elements/vega_charts.py +1984 -0
  89. streamlit/elements/widgets/__init__.py +13 -0
  90. streamlit/elements/widgets/audio_input.py +310 -0
  91. streamlit/elements/widgets/button.py +1123 -0
  92. streamlit/elements/widgets/button_group.py +1008 -0
  93. streamlit/elements/widgets/camera_input.py +263 -0
  94. streamlit/elements/widgets/chat.py +647 -0
  95. streamlit/elements/widgets/checkbox.py +352 -0
  96. streamlit/elements/widgets/color_picker.py +265 -0
  97. streamlit/elements/widgets/data_editor.py +983 -0
  98. streamlit/elements/widgets/file_uploader.py +486 -0
  99. streamlit/elements/widgets/multiselect.py +338 -0
  100. streamlit/elements/widgets/number_input.py +545 -0
  101. streamlit/elements/widgets/radio.py +407 -0
  102. streamlit/elements/widgets/select_slider.py +437 -0
  103. streamlit/elements/widgets/selectbox.py +366 -0
  104. streamlit/elements/widgets/slider.py +880 -0
  105. streamlit/elements/widgets/text_widgets.py +628 -0
  106. streamlit/elements/widgets/time_widgets.py +970 -0
  107. streamlit/elements/write.py +574 -0
  108. streamlit/emojis.py +34 -0
  109. streamlit/env_util.py +61 -0
  110. streamlit/error_util.py +105 -0
  111. streamlit/errors.py +452 -0
  112. streamlit/external/__init__.py +13 -0
  113. streamlit/external/langchain/__init__.py +23 -0
  114. streamlit/external/langchain/streamlit_callback_handler.py +406 -0
  115. streamlit/file_util.py +247 -0
  116. streamlit/git_util.py +173 -0
  117. streamlit/hello/__init__.py +13 -0
  118. streamlit/hello/animation_demo.py +82 -0
  119. streamlit/hello/dataframe_demo.py +71 -0
  120. streamlit/hello/hello.py +37 -0
  121. streamlit/hello/mapping_demo.py +114 -0
  122. streamlit/hello/plotting_demo.py +55 -0
  123. streamlit/hello/streamlit_app.py +55 -0
  124. streamlit/hello/utils.py +28 -0
  125. streamlit/logger.py +130 -0
  126. streamlit/material_icon_names.py +25 -0
  127. streamlit/navigation/__init__.py +13 -0
  128. streamlit/navigation/page.py +302 -0
  129. streamlit/net_util.py +125 -0
  130. streamlit/platform.py +33 -0
  131. streamlit/proto/Alert_pb2.py +29 -0
  132. streamlit/proto/Alert_pb2.pyi +90 -0
  133. streamlit/proto/AppPage_pb2.py +27 -0
  134. streamlit/proto/AppPage_pb2.pyi +64 -0
  135. streamlit/proto/ArrowNamedDataSet_pb2.py +28 -0
  136. streamlit/proto/ArrowNamedDataSet_pb2.pyi +57 -0
  137. streamlit/proto/ArrowVegaLiteChart_pb2.py +29 -0
  138. streamlit/proto/ArrowVegaLiteChart_pb2.pyi +84 -0
  139. streamlit/proto/Arrow_pb2.py +33 -0
  140. streamlit/proto/Arrow_pb2.pyi +188 -0
  141. streamlit/proto/AudioInput_pb2.py +28 -0
  142. streamlit/proto/AudioInput_pb2.pyi +58 -0
  143. streamlit/proto/Audio_pb2.py +27 -0
  144. streamlit/proto/Audio_pb2.pyi +58 -0
  145. streamlit/proto/AuthRedirect_pb2.py +27 -0
  146. streamlit/proto/AuthRedirect_pb2.pyi +41 -0
  147. streamlit/proto/AutoRerun_pb2.py +27 -0
  148. streamlit/proto/AutoRerun_pb2.pyi +45 -0
  149. streamlit/proto/BackMsg_pb2.py +29 -0
  150. streamlit/proto/BackMsg_pb2.pyi +105 -0
  151. streamlit/proto/Balloons_pb2.py +27 -0
  152. streamlit/proto/Balloons_pb2.pyi +43 -0
  153. streamlit/proto/Block_pb2.py +53 -0
  154. streamlit/proto/Block_pb2.pyi +322 -0
  155. streamlit/proto/BokehChart_pb2.py +27 -0
  156. streamlit/proto/BokehChart_pb2.pyi +49 -0
  157. streamlit/proto/ButtonGroup_pb2.py +36 -0
  158. streamlit/proto/ButtonGroup_pb2.pyi +169 -0
  159. streamlit/proto/Button_pb2.py +27 -0
  160. streamlit/proto/Button_pb2.pyi +71 -0
  161. streamlit/proto/CameraInput_pb2.py +28 -0
  162. streamlit/proto/CameraInput_pb2.pyi +58 -0
  163. streamlit/proto/ChatInput_pb2.py +31 -0
  164. streamlit/proto/ChatInput_pb2.pyi +111 -0
  165. streamlit/proto/Checkbox_pb2.py +30 -0
  166. streamlit/proto/Checkbox_pb2.pyi +90 -0
  167. streamlit/proto/ClientState_pb2.py +30 -0
  168. streamlit/proto/ClientState_pb2.pyi +90 -0
  169. streamlit/proto/Code_pb2.py +27 -0
  170. streamlit/proto/Code_pb2.pyi +55 -0
  171. streamlit/proto/ColorPicker_pb2.py +28 -0
  172. streamlit/proto/ColorPicker_pb2.pyi +67 -0
  173. streamlit/proto/Common_pb2.py +51 -0
  174. streamlit/proto/Common_pb2.pyi +293 -0
  175. streamlit/proto/Components_pb2.py +35 -0
  176. streamlit/proto/Components_pb2.pyi +172 -0
  177. streamlit/proto/DataFrame_pb2.py +56 -0
  178. streamlit/proto/DataFrame_pb2.pyi +397 -0
  179. streamlit/proto/DateInput_pb2.py +28 -0
  180. streamlit/proto/DateInput_pb2.pyi +83 -0
  181. streamlit/proto/DeckGlJsonChart_pb2.py +29 -0
  182. streamlit/proto/DeckGlJsonChart_pb2.pyi +102 -0
  183. streamlit/proto/Delta_pb2.py +31 -0
  184. streamlit/proto/Delta_pb2.pyi +74 -0
  185. streamlit/proto/DocString_pb2.py +29 -0
  186. streamlit/proto/DocString_pb2.pyi +93 -0
  187. streamlit/proto/DownloadButton_pb2.py +27 -0
  188. streamlit/proto/DownloadButton_pb2.pyi +70 -0
  189. streamlit/proto/Element_pb2.py +78 -0
  190. streamlit/proto/Element_pb2.pyi +312 -0
  191. streamlit/proto/Empty_pb2.py +27 -0
  192. streamlit/proto/Empty_pb2.pyi +36 -0
  193. streamlit/proto/Exception_pb2.py +27 -0
  194. streamlit/proto/Exception_pb2.pyi +72 -0
  195. streamlit/proto/Favicon_pb2.py +27 -0
  196. streamlit/proto/Favicon_pb2.pyi +40 -0
  197. streamlit/proto/FileUploader_pb2.py +28 -0
  198. streamlit/proto/FileUploader_pb2.pyi +78 -0
  199. streamlit/proto/ForwardMsg_pb2.py +53 -0
  200. streamlit/proto/ForwardMsg_pb2.pyi +293 -0
  201. streamlit/proto/GitInfo_pb2.py +29 -0
  202. streamlit/proto/GitInfo_pb2.pyi +83 -0
  203. streamlit/proto/GraphVizChart_pb2.py +27 -0
  204. streamlit/proto/GraphVizChart_pb2.pyi +53 -0
  205. streamlit/proto/Heading_pb2.py +27 -0
  206. streamlit/proto/Heading_pb2.pyi +56 -0
  207. streamlit/proto/Html_pb2.py +27 -0
  208. streamlit/proto/Html_pb2.pyi +42 -0
  209. streamlit/proto/IFrame_pb2.py +27 -0
  210. streamlit/proto/IFrame_pb2.pyi +59 -0
  211. streamlit/proto/Image_pb2.py +29 -0
  212. streamlit/proto/Image_pb2.pyi +84 -0
  213. streamlit/proto/Json_pb2.py +27 -0
  214. streamlit/proto/Json_pb2.pyi +53 -0
  215. streamlit/proto/LabelVisibilityMessage_pb2.py +29 -0
  216. streamlit/proto/LabelVisibilityMessage_pb2.pyi +68 -0
  217. streamlit/proto/LinkButton_pb2.py +27 -0
  218. streamlit/proto/LinkButton_pb2.pyi +58 -0
  219. streamlit/proto/Logo_pb2.py +27 -0
  220. streamlit/proto/Logo_pb2.pyi +51 -0
  221. streamlit/proto/Markdown_pb2.py +29 -0
  222. streamlit/proto/Markdown_pb2.pyi +86 -0
  223. streamlit/proto/Metric_pb2.py +32 -0
  224. streamlit/proto/Metric_pb2.pyi +101 -0
  225. streamlit/proto/MetricsEvent_pb2.py +30 -0
  226. streamlit/proto/MetricsEvent_pb2.pyi +200 -0
  227. streamlit/proto/MultiSelect_pb2.py +28 -0
  228. streamlit/proto/MultiSelect_pb2.pyi +81 -0
  229. streamlit/proto/NamedDataSet_pb2.py +28 -0
  230. streamlit/proto/NamedDataSet_pb2.pyi +59 -0
  231. streamlit/proto/Navigation_pb2.py +30 -0
  232. streamlit/proto/Navigation_pb2.pyi +84 -0
  233. streamlit/proto/NewSession_pb2.py +51 -0
  234. streamlit/proto/NewSession_pb2.pyi +481 -0
  235. streamlit/proto/NumberInput_pb2.py +30 -0
  236. streamlit/proto/NumberInput_pb2.pyi +121 -0
  237. streamlit/proto/PageConfig_pb2.py +33 -0
  238. streamlit/proto/PageConfig_pb2.pyi +126 -0
  239. streamlit/proto/PageInfo_pb2.py +27 -0
  240. streamlit/proto/PageInfo_pb2.pyi +43 -0
  241. streamlit/proto/PageLink_pb2.py +27 -0
  242. streamlit/proto/PageLink_pb2.pyi +63 -0
  243. streamlit/proto/PageNotFound_pb2.py +27 -0
  244. streamlit/proto/PageNotFound_pb2.pyi +42 -0
  245. streamlit/proto/PageProfile_pb2.py +31 -0
  246. streamlit/proto/PageProfile_pb2.pyi +127 -0
  247. streamlit/proto/PagesChanged_pb2.py +28 -0
  248. streamlit/proto/PagesChanged_pb2.pyi +48 -0
  249. streamlit/proto/ParentMessage_pb2.py +27 -0
  250. streamlit/proto/ParentMessage_pb2.pyi +46 -0
  251. streamlit/proto/PlotlyChart_pb2.py +31 -0
  252. streamlit/proto/PlotlyChart_pb2.pyi +131 -0
  253. streamlit/proto/Progress_pb2.py +27 -0
  254. streamlit/proto/Progress_pb2.pyi +43 -0
  255. streamlit/proto/Radio_pb2.py +28 -0
  256. streamlit/proto/Radio_pb2.pyi +84 -0
  257. streamlit/proto/RootContainer_pb2.py +27 -0
  258. streamlit/proto/RootContainer_pb2.pyi +56 -0
  259. streamlit/proto/Selectbox_pb2.py +28 -0
  260. streamlit/proto/Selectbox_pb2.pyi +80 -0
  261. streamlit/proto/SessionEvent_pb2.py +28 -0
  262. streamlit/proto/SessionEvent_pb2.pyi +62 -0
  263. streamlit/proto/SessionStatus_pb2.py +27 -0
  264. streamlit/proto/SessionStatus_pb2.pyi +57 -0
  265. streamlit/proto/Skeleton_pb2.py +29 -0
  266. streamlit/proto/Skeleton_pb2.pyi +71 -0
  267. streamlit/proto/Slider_pb2.py +32 -0
  268. streamlit/proto/Slider_pb2.pyi +142 -0
  269. streamlit/proto/Snow_pb2.py +27 -0
  270. streamlit/proto/Snow_pb2.pyi +43 -0
  271. streamlit/proto/Spinner_pb2.py +27 -0
  272. streamlit/proto/Spinner_pb2.pyi +49 -0
  273. streamlit/proto/TextArea_pb2.py +28 -0
  274. streamlit/proto/TextArea_pb2.pyi +80 -0
  275. streamlit/proto/TextInput_pb2.py +30 -0
  276. streamlit/proto/TextInput_pb2.pyi +107 -0
  277. streamlit/proto/Text_pb2.py +27 -0
  278. streamlit/proto/Text_pb2.pyi +46 -0
  279. streamlit/proto/TimeInput_pb2.py +28 -0
  280. streamlit/proto/TimeInput_pb2.pyi +74 -0
  281. streamlit/proto/Toast_pb2.py +27 -0
  282. streamlit/proto/Toast_pb2.pyi +45 -0
  283. streamlit/proto/VegaLiteChart_pb2.py +29 -0
  284. streamlit/proto/VegaLiteChart_pb2.pyi +71 -0
  285. streamlit/proto/Video_pb2.py +31 -0
  286. streamlit/proto/Video_pb2.pyi +117 -0
  287. streamlit/proto/WidgetStates_pb2.py +31 -0
  288. streamlit/proto/WidgetStates_pb2.pyi +126 -0
  289. streamlit/proto/__init__.py +15 -0
  290. streamlit/proto/openmetrics_data_model_pb2.py +60 -0
  291. streamlit/proto/openmetrics_data_model_pb2.pyi +522 -0
  292. streamlit/py.typed +0 -0
  293. streamlit/runtime/__init__.py +50 -0
  294. streamlit/runtime/app_session.py +982 -0
  295. streamlit/runtime/caching/__init__.py +98 -0
  296. streamlit/runtime/caching/cache_data_api.py +665 -0
  297. streamlit/runtime/caching/cache_errors.py +142 -0
  298. streamlit/runtime/caching/cache_resource_api.py +527 -0
  299. streamlit/runtime/caching/cache_type.py +33 -0
  300. streamlit/runtime/caching/cache_utils.py +523 -0
  301. streamlit/runtime/caching/cached_message_replay.py +290 -0
  302. streamlit/runtime/caching/hashing.py +637 -0
  303. streamlit/runtime/caching/legacy_cache_api.py +169 -0
  304. streamlit/runtime/caching/storage/__init__.py +29 -0
  305. streamlit/runtime/caching/storage/cache_storage_protocol.py +239 -0
  306. streamlit/runtime/caching/storage/dummy_cache_storage.py +60 -0
  307. streamlit/runtime/caching/storage/in_memory_cache_storage_wrapper.py +145 -0
  308. streamlit/runtime/caching/storage/local_disk_cache_storage.py +223 -0
  309. streamlit/runtime/connection_factory.py +436 -0
  310. streamlit/runtime/context.py +280 -0
  311. streamlit/runtime/credentials.py +364 -0
  312. streamlit/runtime/forward_msg_cache.py +296 -0
  313. streamlit/runtime/forward_msg_queue.py +240 -0
  314. streamlit/runtime/fragment.py +477 -0
  315. streamlit/runtime/media_file_manager.py +234 -0
  316. streamlit/runtime/media_file_storage.py +143 -0
  317. streamlit/runtime/memory_media_file_storage.py +181 -0
  318. streamlit/runtime/memory_session_storage.py +77 -0
  319. streamlit/runtime/memory_uploaded_file_manager.py +138 -0
  320. streamlit/runtime/metrics_util.py +486 -0
  321. streamlit/runtime/pages_manager.py +165 -0
  322. streamlit/runtime/runtime.py +792 -0
  323. streamlit/runtime/runtime_util.py +106 -0
  324. streamlit/runtime/script_data.py +46 -0
  325. streamlit/runtime/scriptrunner/__init__.py +38 -0
  326. streamlit/runtime/scriptrunner/exec_code.py +159 -0
  327. streamlit/runtime/scriptrunner/magic.py +273 -0
  328. streamlit/runtime/scriptrunner/magic_funcs.py +32 -0
  329. streamlit/runtime/scriptrunner/script_cache.py +89 -0
  330. streamlit/runtime/scriptrunner/script_runner.py +756 -0
  331. streamlit/runtime/scriptrunner_utils/__init__.py +19 -0
  332. streamlit/runtime/scriptrunner_utils/exceptions.py +48 -0
  333. streamlit/runtime/scriptrunner_utils/script_requests.py +307 -0
  334. streamlit/runtime/scriptrunner_utils/script_run_context.py +287 -0
  335. streamlit/runtime/secrets.py +534 -0
  336. streamlit/runtime/session_manager.py +394 -0
  337. streamlit/runtime/state/__init__.py +41 -0
  338. streamlit/runtime/state/common.py +191 -0
  339. streamlit/runtime/state/query_params.py +205 -0
  340. streamlit/runtime/state/query_params_proxy.py +218 -0
  341. streamlit/runtime/state/safe_session_state.py +138 -0
  342. streamlit/runtime/state/session_state.py +772 -0
  343. streamlit/runtime/state/session_state_proxy.py +153 -0
  344. streamlit/runtime/state/widgets.py +135 -0
  345. streamlit/runtime/stats.py +109 -0
  346. streamlit/runtime/uploaded_file_manager.py +148 -0
  347. streamlit/runtime/websocket_session_manager.py +167 -0
  348. streamlit/source_util.py +98 -0
  349. streamlit/static/favicon.png +0 -0
  350. streamlit/static/index.html +61 -0
  351. streamlit/static/static/css/index.Bmkmz40k.css +1 -0
  352. streamlit/static/static/css/index.DpJG_94W.css +1 -0
  353. streamlit/static/static/css/index.DzuxGC_t.css +1 -0
  354. streamlit/static/static/js/FileDownload.esm.Bp9m5jrx.js +1 -0
  355. streamlit/static/static/js/FileHelper.D_3pbilj.js +5 -0
  356. streamlit/static/static/js/FormClearHelper.Ct2rwLXo.js +1 -0
  357. streamlit/static/static/js/Hooks.BKdzj5MJ.js +1 -0
  358. streamlit/static/static/js/InputInstructions.DB3QGNJP.js +1 -0
  359. streamlit/static/static/js/ProgressBar.D40A5xc2.js +2 -0
  360. streamlit/static/static/js/RenderInPortalIfExists.DLUCooTN.js +1 -0
  361. streamlit/static/static/js/Toolbar.BiGGIQun.js +1 -0
  362. streamlit/static/static/js/UploadFileInfo.C-jY39rj.js +1 -0
  363. streamlit/static/static/js/base-input.CQBQT24M.js +4 -0
  364. streamlit/static/static/js/checkbox.Buj8gd_M.js +9 -0
  365. streamlit/static/static/js/createDownloadLinkElement.DZMwyjvU.js +1 -0
  366. streamlit/static/static/js/createSuper.CesK3I23.js +1 -0
  367. streamlit/static/static/js/data-grid-overlay-editor.B69OOFM4.js +1 -0
  368. streamlit/static/static/js/downloader.BZQhlBNT.js +1 -0
  369. streamlit/static/static/js/es6.D9Zhqujy.js +2 -0
  370. streamlit/static/static/js/iframeResizer.contentWindow.CAzcBpCC.js +1 -0
  371. streamlit/static/static/js/index.08vcOOvb.js +1 -0
  372. streamlit/static/static/js/index.0uqKfJUS.js +1 -0
  373. streamlit/static/static/js/index.B02M5u69.js +203 -0
  374. streamlit/static/static/js/index.B7mcZKMx.js +1 -0
  375. streamlit/static/static/js/index.BAQDHFA_.js +1 -0
  376. streamlit/static/static/js/index.BI60cMVr.js +2 -0
  377. streamlit/static/static/js/index.BLug2inK.js +1 -0
  378. streamlit/static/static/js/index.BM6TMY8g.js +2 -0
  379. streamlit/static/static/js/index.BZ9p1t7G.js +1 -0
  380. streamlit/static/static/js/index.BZqa87a1.js +2 -0
  381. streamlit/static/static/js/index.BcsRUzZZ.js +1 -0
  382. streamlit/static/static/js/index.BgVMiY_P.js +197 -0
  383. streamlit/static/static/js/index.BtuGy7By.js +6 -0
  384. streamlit/static/static/js/index.BuDuBmrs.js +1 -0
  385. streamlit/static/static/js/index.BvXU2oKV.js +1 -0
  386. streamlit/static/static/js/index.BxcwPacT.js +73 -0
  387. streamlit/static/static/js/index.CWX8KB81.js +1 -0
  388. streamlit/static/static/js/index.CXzZTo_q.js +1 -0
  389. streamlit/static/static/js/index.CcRWp_KL.js +1 -0
  390. streamlit/static/static/js/index.Cd-_xe55.js +3 -0
  391. streamlit/static/static/js/index.CdG2PXln.js +4537 -0
  392. streamlit/static/static/js/index.CjXvXmcP.js +1 -0
  393. streamlit/static/static/js/index.D1HZENZx.js +776 -0
  394. streamlit/static/static/js/index.D21Efo64.js +1617 -0
  395. streamlit/static/static/js/index.D9WgGVBx.js +7 -0
  396. streamlit/static/static/js/index.DEcsHtvb.js +12 -0
  397. streamlit/static/static/js/index.DFeMfr_K.js +1 -0
  398. streamlit/static/static/js/index.DHFBoItz.js +1 -0
  399. streamlit/static/static/js/index.D_PrBKnJ.js +3 -0
  400. streamlit/static/static/js/index.DmuRkekN.js +3855 -0
  401. streamlit/static/static/js/index.Do6eY8sf.js +1 -0
  402. streamlit/static/static/js/index.Dz3lP2P-.js +1 -0
  403. streamlit/static/static/js/index.Dz_UqF-s.js +1 -0
  404. streamlit/static/static/js/index.GkSUsPhJ.js +1 -0
  405. streamlit/static/static/js/index.H1U1IC_d.js +3 -0
  406. streamlit/static/static/js/index.g6p_4DPr.js +1 -0
  407. streamlit/static/static/js/index.g9x_GKss.js +1 -0
  408. streamlit/static/static/js/index.zo9jm08y.js +1 -0
  409. streamlit/static/static/js/input.DnaFglHq.js +2 -0
  410. streamlit/static/static/js/inputUtils.CQWz5UKz.js +1 -0
  411. streamlit/static/static/js/memory.Crb9x4-F.js +1 -0
  412. streamlit/static/static/js/mergeWith.ouAz0sK3.js +1 -0
  413. streamlit/static/static/js/number-overlay-editor._UaN-O48.js +9 -0
  414. streamlit/static/static/js/possibleConstructorReturn.CtGjGFHz.js +1 -0
  415. streamlit/static/static/js/sandbox.CBybYOhV.js +1 -0
  416. streamlit/static/static/js/sprintf.D7DtBTRn.js +1 -0
  417. streamlit/static/static/js/textarea.Cb_uJt5U.js +2 -0
  418. streamlit/static/static/js/threshold.DjX0wlsa.js +1 -0
  419. streamlit/static/static/js/timepicker.DKT7pfoF.js +4 -0
  420. streamlit/static/static/js/timer.CAwTRJ_g.js +1 -0
  421. streamlit/static/static/js/toConsumableArray.05Ikp13-.js +3 -0
  422. streamlit/static/static/js/uniqueId.D2FMWUEI.js +1 -0
  423. streamlit/static/static/js/useBasicWidgetState.urnZLANY.js +1 -0
  424. streamlit/static/static/js/useOnInputChange.BOKIIdJ1.js +1 -0
  425. streamlit/static/static/js/value.CgPGBV_l.js +1 -0
  426. streamlit/static/static/js/withFullScreenWrapper.C_N8J0Xx.js +1 -0
  427. streamlit/static/static/media/KaTeX_AMS-Regular.BQhdFMY1.woff2 +0 -0
  428. streamlit/static/static/media/KaTeX_AMS-Regular.DMm9YOAa.woff +0 -0
  429. streamlit/static/static/media/KaTeX_AMS-Regular.DRggAlZN.ttf +0 -0
  430. streamlit/static/static/media/KaTeX_Caligraphic-Bold.ATXxdsX0.ttf +0 -0
  431. streamlit/static/static/media/KaTeX_Caligraphic-Bold.BEiXGLvX.woff +0 -0
  432. streamlit/static/static/media/KaTeX_Caligraphic-Bold.Dq_IR9rO.woff2 +0 -0
  433. streamlit/static/static/media/KaTeX_Caligraphic-Regular.CTRA-rTL.woff +0 -0
  434. streamlit/static/static/media/KaTeX_Caligraphic-Regular.Di6jR-x-.woff2 +0 -0
  435. streamlit/static/static/media/KaTeX_Caligraphic-Regular.wX97UBjC.ttf +0 -0
  436. streamlit/static/static/media/KaTeX_Fraktur-Bold.BdnERNNW.ttf +0 -0
  437. streamlit/static/static/media/KaTeX_Fraktur-Bold.BsDP51OF.woff +0 -0
  438. streamlit/static/static/media/KaTeX_Fraktur-Bold.CL6g_b3V.woff2 +0 -0
  439. streamlit/static/static/media/KaTeX_Fraktur-Regular.CB_wures.ttf +0 -0
  440. streamlit/static/static/media/KaTeX_Fraktur-Regular.CTYiF6lA.woff2 +0 -0
  441. streamlit/static/static/media/KaTeX_Fraktur-Regular.Dxdc4cR9.woff +0 -0
  442. streamlit/static/static/media/KaTeX_Main-Bold.Cx986IdX.woff2 +0 -0
  443. streamlit/static/static/media/KaTeX_Main-Bold.Jm3AIy58.woff +0 -0
  444. streamlit/static/static/media/KaTeX_Main-Bold.waoOVXN0.ttf +0 -0
  445. streamlit/static/static/media/KaTeX_Main-BoldItalic.DxDJ3AOS.woff2 +0 -0
  446. streamlit/static/static/media/KaTeX_Main-BoldItalic.DzxPMmG6.ttf +0 -0
  447. streamlit/static/static/media/KaTeX_Main-BoldItalic.SpSLRI95.woff +0 -0
  448. streamlit/static/static/media/KaTeX_Main-Italic.3WenGoN9.ttf +0 -0
  449. streamlit/static/static/media/KaTeX_Main-Italic.BMLOBm91.woff +0 -0
  450. streamlit/static/static/media/KaTeX_Main-Italic.NWA7e6Wa.woff2 +0 -0
  451. streamlit/static/static/media/KaTeX_Main-Regular.B22Nviop.woff2 +0 -0
  452. streamlit/static/static/media/KaTeX_Main-Regular.Dr94JaBh.woff +0 -0
  453. streamlit/static/static/media/KaTeX_Main-Regular.ypZvNtVU.ttf +0 -0
  454. streamlit/static/static/media/KaTeX_Math-BoldItalic.B3XSjfu4.ttf +0 -0
  455. streamlit/static/static/media/KaTeX_Math-BoldItalic.CZnvNsCZ.woff2 +0 -0
  456. streamlit/static/static/media/KaTeX_Math-BoldItalic.iY-2wyZ7.woff +0 -0
  457. streamlit/static/static/media/KaTeX_Math-Italic.DA0__PXp.woff +0 -0
  458. streamlit/static/static/media/KaTeX_Math-Italic.flOr_0UB.ttf +0 -0
  459. streamlit/static/static/media/KaTeX_Math-Italic.t53AETM-.woff2 +0 -0
  460. streamlit/static/static/media/KaTeX_SansSerif-Bold.CFMepnvq.ttf +0 -0
  461. streamlit/static/static/media/KaTeX_SansSerif-Bold.D1sUS0GD.woff2 +0 -0
  462. streamlit/static/static/media/KaTeX_SansSerif-Bold.DbIhKOiC.woff +0 -0
  463. streamlit/static/static/media/KaTeX_SansSerif-Italic.C3H0VqGB.woff2 +0 -0
  464. streamlit/static/static/media/KaTeX_SansSerif-Italic.DN2j7dab.woff +0 -0
  465. streamlit/static/static/media/KaTeX_SansSerif-Italic.YYjJ1zSn.ttf +0 -0
  466. streamlit/static/static/media/KaTeX_SansSerif-Regular.BNo7hRIc.ttf +0 -0
  467. streamlit/static/static/media/KaTeX_SansSerif-Regular.CS6fqUqJ.woff +0 -0
  468. streamlit/static/static/media/KaTeX_SansSerif-Regular.DDBCnlJ7.woff2 +0 -0
  469. streamlit/static/static/media/KaTeX_Script-Regular.C5JkGWo-.ttf +0 -0
  470. streamlit/static/static/media/KaTeX_Script-Regular.D3wIWfF6.woff2 +0 -0
  471. streamlit/static/static/media/KaTeX_Script-Regular.D5yQViql.woff +0 -0
  472. streamlit/static/static/media/KaTeX_Size1-Regular.C195tn64.woff +0 -0
  473. streamlit/static/static/media/KaTeX_Size1-Regular.Dbsnue_I.ttf +0 -0
  474. streamlit/static/static/media/KaTeX_Size1-Regular.mCD8mA8B.woff2 +0 -0
  475. streamlit/static/static/media/KaTeX_Size2-Regular.B7gKUWhC.ttf +0 -0
  476. streamlit/static/static/media/KaTeX_Size2-Regular.Dy4dx90m.woff2 +0 -0
  477. streamlit/static/static/media/KaTeX_Size2-Regular.oD1tc_U0.woff +0 -0
  478. streamlit/static/static/media/KaTeX_Size3-Regular.CTq5MqoE.woff +0 -0
  479. streamlit/static/static/media/KaTeX_Size3-Regular.DgpXs0kz.ttf +0 -0
  480. streamlit/static/static/media/KaTeX_Size4-Regular.BF-4gkZK.woff +0 -0
  481. streamlit/static/static/media/KaTeX_Size4-Regular.DWFBv043.ttf +0 -0
  482. streamlit/static/static/media/KaTeX_Size4-Regular.Dl5lxZxV.woff2 +0 -0
  483. streamlit/static/static/media/KaTeX_Typewriter-Regular.C0xS9mPB.woff +0 -0
  484. streamlit/static/static/media/KaTeX_Typewriter-Regular.CO6r4hn1.woff2 +0 -0
  485. streamlit/static/static/media/KaTeX_Typewriter-Regular.D3Ib7_Hf.ttf +0 -0
  486. streamlit/static/static/media/MaterialSymbols-Rounded.DcZbplWk.woff2 +0 -0
  487. streamlit/static/static/media/SourceCodePro-Bold.CFEfr7-q.woff2 +0 -0
  488. streamlit/static/static/media/SourceCodePro-BoldItalic.C-LkFXxa.woff2 +0 -0
  489. streamlit/static/static/media/SourceCodePro-Italic.CxFOx7N-.woff2 +0 -0
  490. streamlit/static/static/media/SourceCodePro-Regular.CBOlD63d.woff2 +0 -0
  491. streamlit/static/static/media/SourceCodePro-SemiBold.CFHwW3Wd.woff2 +0 -0
  492. streamlit/static/static/media/SourceCodePro-SemiBoldItalic.Cg2yRu82.woff2 +0 -0
  493. streamlit/static/static/media/SourceSansPro-Bold.-6c9oR8J.woff2 +0 -0
  494. streamlit/static/static/media/SourceSansPro-BoldItalic.DmM_grLY.woff2 +0 -0
  495. streamlit/static/static/media/SourceSansPro-Italic.I1ipWe7Q.woff2 +0 -0
  496. streamlit/static/static/media/SourceSansPro-Regular.DZLUzqI4.woff2 +0 -0
  497. streamlit/static/static/media/SourceSansPro-SemiBold.sKQIyTMz.woff2 +0 -0
  498. streamlit/static/static/media/SourceSansPro-SemiBoldItalic.C0wP0icr.woff2 +0 -0
  499. streamlit/static/static/media/SourceSerifPro-Bold.8TUnKj4x.woff2 +0 -0
  500. streamlit/static/static/media/SourceSerifPro-BoldItalic.CBVO7Ve7.woff2 +0 -0
  501. streamlit/static/static/media/SourceSerifPro-Italic.DkFgL2HZ.woff2 +0 -0
  502. streamlit/static/static/media/SourceSerifPro-Regular.CNJNET2S.woff2 +0 -0
  503. streamlit/static/static/media/SourceSerifPro-SemiBold.CHyh9GC5.woff2 +0 -0
  504. streamlit/static/static/media/SourceSerifPro-SemiBoldItalic.CBtz8sWN.woff2 +0 -0
  505. streamlit/static/static/media/balloon-0.Czj7AKwE.png +0 -0
  506. streamlit/static/static/media/balloon-1.CNvFFrND.png +0 -0
  507. streamlit/static/static/media/balloon-2.DTvC6B1t.png +0 -0
  508. streamlit/static/static/media/balloon-3.CgSk4tbL.png +0 -0
  509. streamlit/static/static/media/balloon-4.mbtFrzxf.png +0 -0
  510. streamlit/static/static/media/balloon-5.CSwkUfRA.png +0 -0
  511. streamlit/static/static/media/fireworks.B4d-_KUe.gif +0 -0
  512. streamlit/static/static/media/flake-0.DgWaVvm5.png +0 -0
  513. streamlit/static/static/media/flake-1.B2r5AHMK.png +0 -0
  514. streamlit/static/static/media/flake-2.BnWSExPC.png +0 -0
  515. streamlit/static/static/media/snowflake.JU2jBHL8.svg +11 -0
  516. streamlit/string_util.py +203 -0
  517. streamlit/temporary_directory.py +56 -0
  518. streamlit/testing/__init__.py +13 -0
  519. streamlit/testing/v1/__init__.py +17 -0
  520. streamlit/testing/v1/app_test.py +1050 -0
  521. streamlit/testing/v1/element_tree.py +2083 -0
  522. streamlit/testing/v1/local_script_runner.py +180 -0
  523. streamlit/testing/v1/util.py +53 -0
  524. streamlit/time_util.py +75 -0
  525. streamlit/type_util.py +460 -0
  526. streamlit/url_util.py +122 -0
  527. streamlit/user_info.py +519 -0
  528. streamlit/util.py +72 -0
  529. streamlit/vendor/__init__.py +0 -0
  530. streamlit/vendor/pympler/__init__.py +0 -0
  531. streamlit/vendor/pympler/asizeof.py +2869 -0
  532. streamlit/version.py +18 -0
  533. streamlit/watcher/__init__.py +28 -0
  534. streamlit/watcher/event_based_path_watcher.py +406 -0
  535. streamlit/watcher/folder_black_list.py +82 -0
  536. streamlit/watcher/local_sources_watcher.py +233 -0
  537. streamlit/watcher/path_watcher.py +185 -0
  538. streamlit/watcher/polling_path_watcher.py +124 -0
  539. streamlit/watcher/util.py +207 -0
  540. streamlit/web/__init__.py +13 -0
  541. streamlit/web/bootstrap.py +353 -0
  542. streamlit/web/cache_storage_manager_config.py +38 -0
  543. streamlit/web/cli.py +369 -0
  544. streamlit/web/server/__init__.py +26 -0
  545. streamlit/web/server/app_static_file_handler.py +93 -0
  546. streamlit/web/server/authlib_tornado_integration.py +60 -0
  547. streamlit/web/server/browser_websocket_handler.py +246 -0
  548. streamlit/web/server/component_request_handler.py +116 -0
  549. streamlit/web/server/media_file_handler.py +141 -0
  550. streamlit/web/server/oauth_authlib_routes.py +176 -0
  551. streamlit/web/server/oidc_mixin.py +108 -0
  552. streamlit/web/server/routes.py +295 -0
  553. streamlit/web/server/server.py +479 -0
  554. streamlit/web/server/server_util.py +161 -0
  555. streamlit/web/server/stats_request_handler.py +95 -0
  556. streamlit/web/server/upload_file_request_handler.py +137 -0
  557. streamlit/web/server/websocket_headers.py +56 -0
  558. streamlit_nightly-1.43.2.dev20250307.data/scripts/streamlit.cmd +16 -0
  559. streamlit_nightly-1.43.2.dev20250307.dist-info/METADATA +207 -0
  560. streamlit_nightly-1.43.2.dev20250307.dist-info/RECORD +563 -0
  561. streamlit_nightly-1.43.2.dev20250307.dist-info/WHEEL +5 -0
  562. streamlit_nightly-1.43.2.dev20250307.dist-info/entry_points.txt +2 -0
  563. streamlit_nightly-1.43.2.dev20250307.dist-info/top_level.txt +1 -0
@@ -0,0 +1,204 @@
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
+ """
16
+ The main purpose of this module (right now at least) is to avoid a dependency
17
+ cycle between streamlit.delta_generator and some elements.
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ from contextvars import ContextVar, Token
23
+ from typing import TYPE_CHECKING, Callable, Generic, TypeVar
24
+
25
+ from streamlit.proto.RootContainer_pb2 import RootContainer as _RootContainer
26
+
27
+ if TYPE_CHECKING:
28
+ from streamlit.delta_generator import DeltaGenerator
29
+ from streamlit.elements.lib.dialog import Dialog
30
+ from streamlit.elements.lib.mutable_status_container import StatusContainer
31
+
32
+
33
+ class DeltaGeneratorSingleton:
34
+ """Used to initialize the DeltaGenerator classes and store them as singletons.
35
+ This module allows us to avoid circular imports between DeltaGenerator and elements,
36
+ because elemens can import this singleton module instead of DeltaGenerator directly.
37
+ """
38
+
39
+ _instance: DeltaGeneratorSingleton | None = None
40
+
41
+ @classmethod
42
+ def instance(cls) -> DeltaGeneratorSingleton:
43
+ """Return the singleton DeltaGeneratorSingleton instance. Raise an Error if the
44
+ DeltaGeneratorSingleton hasn't been created yet.
45
+ """
46
+ if cls._instance is None:
47
+ raise RuntimeError("DeltaGeneratorSingleton hasn't been created!")
48
+ return cls._instance
49
+
50
+ def __init__(
51
+ self,
52
+ delta_generator_cls: type[DeltaGenerator],
53
+ status_container_cls: type[StatusContainer],
54
+ dialog_container_cls: type[Dialog],
55
+ ):
56
+ """Registers and initializes all delta-generator classes.
57
+
58
+ Parameters
59
+ ----------
60
+
61
+ delta_generator_cls : type[DeltaGenerator]
62
+ The main DeltaGenerator class.
63
+ status_container_cls : type[StatusContainer]
64
+ The delta-generator class that is used as return value for `st.status`.
65
+ dialog_container_cls : type[Dialog]
66
+ The delta-generator class used is used as return value for `st.dialog`.
67
+
68
+ Raises
69
+ ------
70
+ RuntimeError
71
+ If the DeltaGeneratorSingleton instance already exists.
72
+ """
73
+ if DeltaGeneratorSingleton._instance is not None:
74
+ raise RuntimeError("DeltaGeneratorSingleton instance already exists!")
75
+ DeltaGeneratorSingleton._instance = self
76
+
77
+ self._main_dg = delta_generator_cls(root_container=_RootContainer.MAIN)
78
+ self._sidebar_dg = delta_generator_cls(
79
+ root_container=_RootContainer.SIDEBAR, parent=self._main_dg
80
+ )
81
+ self._event_dg = delta_generator_cls(
82
+ root_container=_RootContainer.EVENT, parent=self._main_dg
83
+ )
84
+ self._bottom_dg = delta_generator_cls(
85
+ root_container=_RootContainer.BOTTOM, parent=self._main_dg
86
+ )
87
+ self._status_container_cls = status_container_cls
88
+ self._dialog_container_cls = dialog_container_cls
89
+
90
+ @property
91
+ def main_dg(self) -> DeltaGenerator:
92
+ return self._main_dg
93
+
94
+ @property
95
+ def sidebar_dg(self) -> DeltaGenerator:
96
+ return self._sidebar_dg
97
+
98
+ @property
99
+ def event_dg(self) -> DeltaGenerator:
100
+ return self._event_dg
101
+
102
+ @property
103
+ def bottom_dg(self) -> DeltaGenerator:
104
+ return self._bottom_dg
105
+
106
+ @property
107
+ def status_container_cls(
108
+ self,
109
+ ) -> type[StatusContainer]:
110
+ """Stub for StatusContainer. Since StatusContainer inherits from DeltaGenerator,
111
+ this is used to avoid circular imports.
112
+ """
113
+ return self._status_container_cls
114
+
115
+ @property
116
+ def dialog_container_cls(self) -> type[Dialog]:
117
+ """Stub for Dialog. Since Dialog inherits from DeltaGenerator,
118
+ this is used to avoid circular imports.
119
+ """
120
+ return self._dialog_container_cls
121
+
122
+
123
+ def get_dg_singleton_instance() -> DeltaGeneratorSingleton:
124
+ """Return the DeltaGeneratorSingleton instance. Raise an Error if the
125
+ DeltaGeneratorSingleton hasn't been created yet.
126
+ """
127
+ return DeltaGeneratorSingleton.instance()
128
+
129
+
130
+ _T = TypeVar("_T")
131
+
132
+
133
+ class ContextVarWithLazyDefault(Generic[_T]):
134
+ """The dg_stack tracks the currently active DeltaGenerator, and is pushed to when
135
+ a DeltaGenerator is entered via a `with` block. This is implemented as a ContextVar
136
+ so that different threads or async tasks can have their own stacks.
137
+
138
+ We have a wrapper around it because ContextVar default cannot be a function, but
139
+ the default dg (main_dg) might not exist yet when this module is imported.
140
+ """
141
+
142
+ def __init__(self, name: str, *, default: Callable[[], _T]):
143
+ self._name = name
144
+ self._default = default
145
+ self._context_var: ContextVar[_T] | None = None
146
+
147
+ def _init_context_var(self) -> None:
148
+ self._context_var = ContextVar(self._name, default=self._default()) # noqa: B039
149
+
150
+ def get(self) -> _T:
151
+ if self._context_var is None:
152
+ self._init_context_var()
153
+ return self._context_var.get() # type: ignore[union-attr]
154
+
155
+ def set(self, value: _T) -> Token[_T]:
156
+ if self._context_var is None:
157
+ self._init_context_var()
158
+ return self._context_var.set(value) # type: ignore[union-attr]
159
+
160
+ def reset(self, token: Token[_T]) -> None:
161
+ if self._context_var is None:
162
+ self._init_context_var()
163
+ self._context_var.reset(token) # type: ignore[union-attr]
164
+
165
+ def __hash__(self) -> int:
166
+ if self._context_var is None:
167
+ self._init_context_var()
168
+ return self._context_var.__hash__()
169
+
170
+
171
+ # we don't use the default factory here because `main_dg` is not initialized when this
172
+ # module is imported. This is why we have our own ContextVar wrapper.
173
+ context_dg_stack: ContextVarWithLazyDefault[tuple[DeltaGenerator, ...]] = (
174
+ ContextVarWithLazyDefault(
175
+ "context_dg_stack", default=lambda: (get_dg_singleton_instance().main_dg,)
176
+ )
177
+ )
178
+
179
+
180
+ def get_default_dg_stack_value() -> tuple[DeltaGenerator, ...]:
181
+ """Get the default dg_stack value with which the dg_stack should
182
+ be initialized and reset if needed."""
183
+ instance = get_dg_singleton_instance()
184
+ if instance._main_dg is None:
185
+ raise RuntimeError("main_dg is not set")
186
+
187
+ return (instance._main_dg,)
188
+
189
+
190
+ def get_last_dg_added_to_context_stack() -> DeltaGenerator | None:
191
+ """Get the last added DeltaGenerator of the stack in the current context.
192
+
193
+ Returns None if the stack has only one element or is empty for whatever reason.
194
+ """
195
+ current_stack = context_dg_stack.get()
196
+ # If set to "> 0" and thus return the only delta generator in the stack -
197
+ # which logically makes more sense -, some unit tests fail.
198
+ # It looks like the reason is that they create their own main delta generator
199
+ # but do not populate the dg_stack correctly. However, to be on the safe-side,
200
+ # we keep the logic but leave the comment as shared knowledge for whoever will look
201
+ # into this in the future.
202
+ if len(current_stack) > 1:
203
+ return current_stack[-1]
204
+ return None
@@ -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
+ import functools
18
+ from typing import Any, Callable, Final, TypeVar, cast
19
+
20
+ import streamlit
21
+ from streamlit import config
22
+ from streamlit.logger import get_logger
23
+
24
+ _LOGGER: Final = get_logger(__name__)
25
+
26
+ TFunc = TypeVar("TFunc", bound=Callable[..., Any])
27
+ TObj = TypeVar("TObj", bound=object)
28
+
29
+
30
+ def _should_show_deprecation_warning_in_browser() -> bool:
31
+ """True if we should print deprecation warnings to the browser."""
32
+ return bool(config.get_option("client.showErrorDetails"))
33
+
34
+
35
+ def show_deprecation_warning(message: str) -> None:
36
+ """Show a deprecation warning message."""
37
+ if _should_show_deprecation_warning_in_browser():
38
+ streamlit.warning(message)
39
+
40
+ # We always log deprecation warnings
41
+ _LOGGER.warning(message)
42
+
43
+
44
+ def make_deprecated_name_warning(
45
+ old_name: str,
46
+ new_name: str,
47
+ removal_date: str,
48
+ extra_message: str | None = None,
49
+ include_st_prefix: bool = True,
50
+ ) -> str:
51
+ if include_st_prefix:
52
+ old_name = f"st.{old_name}"
53
+ new_name = f"st.{new_name}"
54
+
55
+ return (
56
+ f"Please replace `{old_name}` with `{new_name}`.\n\n"
57
+ f"`{old_name}` will be removed after {removal_date}."
58
+ + (f"\n\n{extra_message}" if extra_message else "")
59
+ )
60
+
61
+
62
+ def deprecate_func_name(
63
+ func: TFunc,
64
+ old_name: str,
65
+ removal_date: str,
66
+ extra_message: str | None = None,
67
+ name_override: str | None = None,
68
+ ) -> TFunc:
69
+ """Wrap an `st` function whose name has changed.
70
+
71
+ Wrapped functions will run as normal, but will also show an st.warning
72
+ saying that the old name will be removed after removal_date.
73
+
74
+ (We generally set `removal_date` to 3 months from the deprecation date.)
75
+
76
+ Parameters
77
+ ----------
78
+ func
79
+ The `st.` function whose name has changed.
80
+
81
+ old_name
82
+ The function's deprecated name within __init__.py.
83
+
84
+ removal_date
85
+ A date like "2020-01-01", indicating the last day we'll guarantee
86
+ support for the deprecated name.
87
+
88
+ extra_message
89
+ An optional extra message to show in the deprecation warning.
90
+
91
+ name_override
92
+ An optional name to use in place of func.__name__.
93
+ """
94
+
95
+ @functools.wraps(func)
96
+ def wrapped_func(*args, **kwargs):
97
+ result = func(*args, **kwargs)
98
+ show_deprecation_warning(
99
+ make_deprecated_name_warning(
100
+ old_name, name_override or func.__name__, removal_date, extra_message
101
+ )
102
+ )
103
+ return result
104
+
105
+ # Update the wrapped func's name & docstring so st.help does the right thing
106
+ wrapped_func.__name__ = old_name
107
+ wrapped_func.__doc__ = func.__doc__
108
+ return cast(TFunc, wrapped_func)
109
+
110
+
111
+ def deprecate_obj_name(
112
+ obj: TObj,
113
+ old_name: str,
114
+ new_name: str,
115
+ removal_date: str,
116
+ include_st_prefix: bool = True,
117
+ ) -> TObj:
118
+ """Wrap an `st` object whose name has changed.
119
+
120
+ Wrapped objects will behave as normal, but will also show an st.warning
121
+ saying that the old name will be removed after `removal_date`.
122
+
123
+ (We generally set `removal_date` to 3 months from the deprecation date.)
124
+
125
+ Parameters
126
+ ----------
127
+ obj
128
+ The `st.` object whose name has changed.
129
+
130
+ old_name
131
+ The object's deprecated name within __init__.py.
132
+
133
+ new_name
134
+ The object's new name within __init__.py.
135
+
136
+ removal_date
137
+ A date like "2020-01-01", indicating the last day we'll guarantee
138
+ support for the deprecated name.
139
+
140
+ include_st_prefix
141
+ If False, does not prefix each of the object names in the deprecation
142
+ essage with `st.*`. Defaults to True.
143
+ """
144
+
145
+ return _create_deprecated_obj_wrapper(
146
+ obj,
147
+ lambda: show_deprecation_warning(
148
+ make_deprecated_name_warning(
149
+ old_name, new_name, removal_date, include_st_prefix=include_st_prefix
150
+ )
151
+ ),
152
+ )
153
+
154
+
155
+ def _create_deprecated_obj_wrapper(obj: TObj, show_warning: Callable[[], Any]) -> TObj:
156
+ """Create a wrapper for an object that has been deprecated. The first
157
+ time one of the object's properties or functions is accessed, the
158
+ given `show_warning` callback will be called.
159
+ """
160
+ has_shown_warning = False
161
+
162
+ def maybe_show_warning() -> None:
163
+ # Call `show_warning` if it hasn't already been called once.
164
+ nonlocal has_shown_warning
165
+ if not has_shown_warning:
166
+ has_shown_warning = True
167
+ show_warning()
168
+
169
+ class Wrapper:
170
+ def __init__(self):
171
+ # Override all the Wrapped object's magic functions
172
+ for name in Wrapper._get_magic_functions(obj.__class__):
173
+ setattr(
174
+ self.__class__,
175
+ name,
176
+ property(self._make_magic_function_proxy(name)),
177
+ )
178
+
179
+ def __getattr__(self, attr):
180
+ # We handle __getattr__ separately from our other magic
181
+ # functions. The wrapped class may not actually implement it,
182
+ # but we still need to implement it to call all its normal
183
+ # functions.
184
+ if attr in self.__dict__:
185
+ return getattr(self, attr)
186
+
187
+ maybe_show_warning()
188
+ return getattr(obj, attr)
189
+
190
+ @staticmethod
191
+ def _get_magic_functions(cls) -> list[str]:
192
+ # ignore the handful of magic functions we cannot override without
193
+ # breaking the Wrapper.
194
+ ignore = ("__class__", "__dict__", "__getattribute__", "__getattr__")
195
+ return [
196
+ name
197
+ for name in dir(cls)
198
+ if name not in ignore and name.startswith("__")
199
+ ]
200
+
201
+ @staticmethod
202
+ def _make_magic_function_proxy(name):
203
+ def proxy(self, *args):
204
+ maybe_show_warning()
205
+ return getattr(obj, name)
206
+
207
+ return proxy
208
+
209
+ return cast(TObj, Wrapper())
@@ -0,0 +1,21 @@
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
+ """Variables for dev purposes.
16
+
17
+ The main purpose of this module (right now at least) is to avoid a dependency
18
+ cycle between streamlit.config and streamlit.logger.
19
+ """
20
+
21
+ is_development_mode = False
@@ -0,0 +1,13 @@
1
+ # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2025)
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
@@ -0,0 +1,234 @@
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 typing import TYPE_CHECKING, cast
18
+
19
+ from streamlit.proto.Alert_pb2 import Alert as AlertProto
20
+ from streamlit.runtime.metrics_util import gather_metrics
21
+ from streamlit.string_util import clean_text, validate_icon_or_emoji
22
+
23
+ if TYPE_CHECKING:
24
+ from streamlit.delta_generator import DeltaGenerator
25
+ from streamlit.type_util import SupportsStr
26
+
27
+
28
+ class AlertMixin:
29
+ @gather_metrics("error")
30
+ def error(
31
+ self,
32
+ body: SupportsStr,
33
+ *, # keyword-only args:
34
+ icon: str | None = None,
35
+ ) -> DeltaGenerator:
36
+ """Display error message.
37
+
38
+ Parameters
39
+ ----------
40
+ body : str
41
+ The text to display as GitHub-flavored Markdown. Syntax
42
+ information can be found at: https://github.github.com/gfm.
43
+
44
+ See the ``body`` parameter of |st.markdown|_ for additional,
45
+ supported Markdown directives.
46
+
47
+ .. |st.markdown| replace:: ``st.markdown``
48
+ .. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
49
+ icon : str, None
50
+ An optional emoji or icon to display next to the alert. If ``icon``
51
+ is ``None`` (default), no icon is displayed. If ``icon`` is a
52
+ string, the following options are valid:
53
+
54
+ - A single-character emoji. For example, you can set ``icon="🚨"``
55
+ or ``icon="đŸ”Ĩ"``. Emoji short codes are not supported.
56
+
57
+ - An icon from the Material Symbols library (rounded style) in the
58
+ format ``":material/icon_name:"`` where "icon_name" is the name
59
+ of the icon in snake case.
60
+
61
+ For example, ``icon=":material/thumb_up:"`` will display the
62
+ Thumb Up icon. Find additional icons in the `Material Symbols \
63
+ <https://fonts.google.com/icons?icon.set=Material+Symbols&icon.style=Rounded>`_
64
+ font library.
65
+
66
+ Example
67
+ -------
68
+ >>> import streamlit as st
69
+ >>>
70
+ >>> st.error('This is an error', icon="🚨")
71
+
72
+ """
73
+ alert_proto = AlertProto()
74
+
75
+ alert_proto.icon = validate_icon_or_emoji(icon)
76
+ alert_proto.body = clean_text(body)
77
+ alert_proto.format = AlertProto.ERROR
78
+ return self.dg._enqueue("alert", alert_proto)
79
+
80
+ @gather_metrics("warning")
81
+ def warning(
82
+ self,
83
+ body: SupportsStr,
84
+ *, # keyword-only args:
85
+ icon: str | None = None,
86
+ ) -> DeltaGenerator:
87
+ """Display warning message.
88
+
89
+ Parameters
90
+ ----------
91
+ body : str
92
+ The text to display as GitHub-flavored Markdown. Syntax
93
+ information can be found at: https://github.github.com/gfm.
94
+
95
+ See the ``body`` parameter of |st.markdown|_ for additional,
96
+ supported Markdown directives.
97
+
98
+ .. |st.markdown| replace:: ``st.markdown``
99
+ .. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
100
+ icon : str, None
101
+ An optional emoji or icon to display next to the alert. If ``icon``
102
+ is ``None`` (default), no icon is displayed. If ``icon`` is a
103
+ string, the following options are valid:
104
+
105
+ - A single-character emoji. For example, you can set ``icon="🚨"``
106
+ or ``icon="đŸ”Ĩ"``. Emoji short codes are not supported.
107
+
108
+ - An icon from the Material Symbols library (rounded style) in the
109
+ format ``":material/icon_name:"`` where "icon_name" is the name
110
+ of the icon in snake case.
111
+
112
+ For example, ``icon=":material/thumb_up:"`` will display the
113
+ Thumb Up icon. Find additional icons in the `Material Symbols \
114
+ <https://fonts.google.com/icons?icon.set=Material+Symbols&icon.style=Rounded>`_
115
+ font library.
116
+
117
+ Example
118
+ -------
119
+ >>> import streamlit as st
120
+ >>>
121
+ >>> st.warning('This is a warning', icon="âš ī¸")
122
+
123
+ """
124
+ alert_proto = AlertProto()
125
+ alert_proto.body = clean_text(body)
126
+ alert_proto.icon = validate_icon_or_emoji(icon)
127
+ alert_proto.format = AlertProto.WARNING
128
+ return self.dg._enqueue("alert", alert_proto)
129
+
130
+ @gather_metrics("info")
131
+ def info(
132
+ self,
133
+ body: SupportsStr,
134
+ *, # keyword-only args:
135
+ icon: str | None = None,
136
+ ) -> DeltaGenerator:
137
+ """Display an informational message.
138
+
139
+ Parameters
140
+ ----------
141
+ body : str
142
+ The text to display as GitHub-flavored Markdown. Syntax
143
+ information can be found at: https://github.github.com/gfm.
144
+
145
+ See the ``body`` parameter of |st.markdown|_ for additional,
146
+ supported Markdown directives.
147
+
148
+ .. |st.markdown| replace:: ``st.markdown``
149
+ .. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
150
+ icon : str, None
151
+ An optional emoji or icon to display next to the alert. If ``icon``
152
+ is ``None`` (default), no icon is displayed. If ``icon`` is a
153
+ string, the following options are valid:
154
+
155
+ - A single-character emoji. For example, you can set ``icon="🚨"``
156
+ or ``icon="đŸ”Ĩ"``. Emoji short codes are not supported.
157
+
158
+ - An icon from the Material Symbols library (rounded style) in the
159
+ format ``":material/icon_name:"`` where "icon_name" is the name
160
+ of the icon in snake case.
161
+
162
+ For example, ``icon=":material/thumb_up:"`` will display the
163
+ Thumb Up icon. Find additional icons in the `Material Symbols \
164
+ <https://fonts.google.com/icons?icon.set=Material+Symbols&icon.style=Rounded>`_
165
+ font library.
166
+
167
+ Example
168
+ -------
169
+ >>> import streamlit as st
170
+ >>>
171
+ >>> st.info('This is a purely informational message', icon="â„šī¸")
172
+
173
+ """
174
+
175
+ alert_proto = AlertProto()
176
+ alert_proto.body = clean_text(body)
177
+ alert_proto.icon = validate_icon_or_emoji(icon)
178
+ alert_proto.format = AlertProto.INFO
179
+ return self.dg._enqueue("alert", alert_proto)
180
+
181
+ @gather_metrics("success")
182
+ def success(
183
+ self,
184
+ body: SupportsStr,
185
+ *, # keyword-only args:
186
+ icon: str | None = None,
187
+ ) -> DeltaGenerator:
188
+ """Display a success message.
189
+
190
+ Parameters
191
+ ----------
192
+ body : str
193
+ The text to display as GitHub-flavored Markdown. Syntax
194
+ information can be found at: https://github.github.com/gfm.
195
+
196
+ See the ``body`` parameter of |st.markdown|_ for additional,
197
+ supported Markdown directives.
198
+
199
+ .. |st.markdown| replace:: ``st.markdown``
200
+ .. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
201
+ icon : str, None
202
+ An optional emoji or icon to display next to the alert. If ``icon``
203
+ is ``None`` (default), no icon is displayed. If ``icon`` is a
204
+ string, the following options are valid:
205
+
206
+ - A single-character emoji. For example, you can set ``icon="🚨"``
207
+ or ``icon="đŸ”Ĩ"``. Emoji short codes are not supported.
208
+
209
+ - An icon from the Material Symbols library (rounded style) in the
210
+ format ``":material/icon_name:"`` where "icon_name" is the name
211
+ of the icon in snake case.
212
+
213
+ For example, ``icon=":material/thumb_up:"`` will display the
214
+ Thumb Up icon. Find additional icons in the `Material Symbols \
215
+ <https://fonts.google.com/icons?icon.set=Material+Symbols&icon.style=Rounded>`_
216
+ font library.
217
+
218
+ Example
219
+ -------
220
+ >>> import streamlit as st
221
+ >>>
222
+ >>> st.success('This is a success message!', icon="✅")
223
+
224
+ """
225
+ alert_proto = AlertProto()
226
+ alert_proto.body = clean_text(body)
227
+ alert_proto.icon = validate_icon_or_emoji(icon)
228
+ alert_proto.format = AlertProto.SUCCESS
229
+ return self.dg._enqueue("alert", alert_proto)
230
+
231
+ @property
232
+ def dg(self) -> DeltaGenerator:
233
+ """Get our DeltaGenerator."""
234
+ return cast("DeltaGenerator", self)