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
streamlit/__init__.py ADDED
@@ -0,0 +1,306 @@
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
+ # isort: skip_file
16
+
17
+ """Streamlit.
18
+
19
+ How to use Streamlit in 3 seconds:
20
+
21
+ 1. Write an app
22
+ >>> import streamlit as st
23
+ >>> st.write(anything_you_want)
24
+
25
+ 2. Run your app
26
+ $ streamlit run my_script.py
27
+
28
+ 3. Use your app
29
+ A new tab will open on your browser. That's your Streamlit app!
30
+
31
+ 4. Modify your code, save it, and watch changes live on your browser.
32
+
33
+ Take a look at the other commands in this module to find out what else
34
+ Streamlit can do:
35
+
36
+ >>> dir(streamlit)
37
+
38
+ Or try running our "Hello World":
39
+
40
+ $ streamlit hello
41
+
42
+ For more detailed info, see https://docs.streamlit.io.
43
+ """
44
+
45
+ # IMPORTANT: Prefix with an underscore anything that the user shouldn't see.
46
+
47
+ import os as _os
48
+
49
+ # Set Matplotlib backend to avoid a crash.
50
+ # The default Matplotlib backend crashes Python on OSX when run on a thread
51
+ # that's not the main thread, so here we set a safer backend as a fix.
52
+ # This fix is OS-independent. We didn't see a good reason to make this
53
+ # Mac-only. Consistency within Streamlit seemed more important.
54
+ # IMPORTANT: This needs to run on top of all imports before any other
55
+ # import of matplotlib could happen.
56
+ _os.environ["MPLBACKEND"] = "Agg"
57
+
58
+
59
+ # Must be at the top, to avoid circular dependency.
60
+ from streamlit import logger as _logger
61
+ from streamlit import config as _config
62
+ from streamlit.deprecation_util import deprecate_func_name as _deprecate_func_name
63
+ from streamlit.version import STREAMLIT_VERSION_STRING as _STREAMLIT_VERSION_STRING
64
+
65
+ # Give the package a version.
66
+ __version__ = _STREAMLIT_VERSION_STRING
67
+
68
+ # DeltaGenerator methods:
69
+ # We initialize them here so that it is clear where they are instantiated.
70
+ # Further, it helps us to break circular imports because the DeltaGenerator
71
+ # imports the different elements but some elements also require DeltaGenerator
72
+ # functions such as the dg_stack. Now, elements that require DeltaGenerator functions
73
+ # can import the singleton module.
74
+ from streamlit.delta_generator_singletons import (
75
+ DeltaGeneratorSingleton as _DeltaGeneratorSingleton,
76
+ )
77
+ from streamlit.delta_generator import DeltaGenerator as _DeltaGenerator
78
+ from streamlit.elements.lib.mutable_status_container import (
79
+ StatusContainer as _StatusContainer,
80
+ )
81
+ from streamlit.elements.lib.dialog import Dialog as _Dialog
82
+
83
+ # instantiate the DeltaGeneratorSingleton
84
+ _dg_singleton = _DeltaGeneratorSingleton(
85
+ delta_generator_cls=_DeltaGenerator,
86
+ status_container_cls=_StatusContainer,
87
+ dialog_container_cls=_Dialog,
88
+ )
89
+ _main = _dg_singleton._main_dg
90
+ sidebar = _dg_singleton._sidebar_dg
91
+ _event = _dg_singleton._event_dg
92
+ _bottom = _dg_singleton._bottom_dg
93
+
94
+
95
+ from streamlit.elements.dialog_decorator import (
96
+ dialog_decorator as _dialog_decorator,
97
+ experimental_dialog_decorator as _experimental_dialog_decorator,
98
+ )
99
+ from streamlit.runtime.caching import (
100
+ cache_resource as _cache_resource,
101
+ cache_data as _cache_data,
102
+ cache as _cache,
103
+ )
104
+ from streamlit.runtime.connection_factory import (
105
+ connection_factory as _connection,
106
+ )
107
+ from streamlit.runtime.fragment import (
108
+ experimental_fragment as _experimental_fragment,
109
+ fragment as _fragment,
110
+ )
111
+ from streamlit.runtime.metrics_util import gather_metrics as _gather_metrics
112
+ from streamlit.runtime.secrets import secrets_singleton as _secrets_singleton
113
+ from streamlit.runtime.context import ContextProxy as _ContextProxy
114
+ from streamlit.runtime.state import (
115
+ SessionStateProxy as _SessionStateProxy,
116
+ QueryParamsProxy as _QueryParamsProxy,
117
+ )
118
+ from streamlit.user_info import (
119
+ UserInfoProxy as _UserInfoProxy,
120
+ login as _login,
121
+ logout as _logout,
122
+ )
123
+ from streamlit.commands.experimental_query_params import (
124
+ get_query_params as _get_query_params,
125
+ set_query_params as _set_query_params,
126
+ )
127
+
128
+ import streamlit.column_config as _column_config
129
+
130
+ # Modules that the user should have access to. These are imported with the "as" syntax
131
+ # and the same name; note that renaming the import with "as" does not make it an
132
+ # explicit export. In this case, you should import it with an underscore to make clear
133
+ # that it is internal and then assign it to a variable with the new intended name.
134
+ # You can check the export behavior by running 'mypy --strict example_app.py', which
135
+ # disables implicit_reexport, where you use the respective command in the example_app.py
136
+ # Streamlit app.
137
+
138
+ from streamlit.commands.echo import echo as echo
139
+ from streamlit.commands.logo import logo as logo
140
+ from streamlit.commands.navigation import navigation as navigation
141
+ from streamlit.navigation.page import Page as Page
142
+ from streamlit.elements.spinner import spinner as spinner
143
+
144
+ from streamlit.commands.page_config import set_page_config as set_page_config
145
+ from streamlit.commands.execution_control import (
146
+ stop as stop,
147
+ rerun as rerun,
148
+ switch_page as switch_page,
149
+ )
150
+
151
+
152
+ def _update_logger() -> None:
153
+ _logger.set_log_level(_config.get_option("logger.level").upper())
154
+ _logger.update_formatter()
155
+ _logger.init_tornado_logs()
156
+
157
+
158
+ # Make this file only depend on config option in an asynchronous manner. This
159
+ # avoids a race condition when another file (such as a test file) tries to pass
160
+ # in an alternative config.
161
+ _config.on_config_parsed(_update_logger, True)
162
+
163
+ secrets = _secrets_singleton
164
+
165
+ altair_chart = _main.altair_chart
166
+ area_chart = _main.area_chart
167
+ audio = _main.audio
168
+ audio_input = _main.audio_input
169
+ balloons = _main.balloons
170
+ bar_chart = _main.bar_chart
171
+ bokeh_chart = _main.bokeh_chart
172
+ button = _main.button
173
+ caption = _main.caption
174
+ camera_input = _main.camera_input
175
+ chat_message = _main.chat_message
176
+ chat_input = _main.chat_input
177
+ checkbox = _main.checkbox
178
+ code = _main.code
179
+ columns = _main.columns
180
+ tabs = _main.tabs
181
+ container = _main.container
182
+ dataframe = _main.dataframe
183
+ data_editor = _main.data_editor
184
+ date_input = _main.date_input
185
+ divider = _main.divider
186
+ download_button = _main.download_button
187
+ expander = _main.expander
188
+ feedback = _main.feedback
189
+ pydeck_chart = _main.pydeck_chart
190
+ empty = _main.empty
191
+ error = _main.error
192
+ exception = _main.exception
193
+ file_uploader = _main.file_uploader
194
+ form = _main.form
195
+ form_submit_button = _main.form_submit_button
196
+ graphviz_chart = _main.graphviz_chart
197
+ header = _main.header
198
+ help = _main.help
199
+ html = _main.html
200
+ image = _main.image
201
+ info = _main.info
202
+ json = _main.json
203
+ latex = _main.latex
204
+ line_chart = _main.line_chart
205
+ link_button = _main.link_button
206
+ map = _main.map
207
+ markdown = _main.markdown
208
+ metric = _main.metric
209
+ multiselect = _main.multiselect
210
+ number_input = _main.number_input
211
+ page_link = _main.page_link
212
+ pills = _main.pills
213
+ plotly_chart = _main.plotly_chart
214
+ popover = _main.popover
215
+ progress = _main.progress
216
+ pyplot = _main.pyplot
217
+ radio = _main.radio
218
+ scatter_chart = _main.scatter_chart
219
+ selectbox = _main.selectbox
220
+ select_slider = _main.select_slider
221
+ segmented_control = _main.segmented_control
222
+ slider = _main.slider
223
+ snow = _main.snow
224
+ subheader = _main.subheader
225
+ success = _main.success
226
+ table = _main.table
227
+ text = _main.text
228
+ text_area = _main.text_area
229
+ text_input = _main.text_input
230
+ toggle = _main.toggle
231
+ time_input = _main.time_input
232
+ title = _main.title
233
+ vega_lite_chart = _main.vega_lite_chart
234
+ video = _main.video
235
+ warning = _main.warning
236
+ write = _main.write
237
+ write_stream = _main.write_stream
238
+ color_picker = _main.color_picker
239
+ status = _main.status
240
+
241
+ # Events - Note: these methods cannot be called directly on sidebar
242
+ # (ex: st.sidebar.toast)
243
+ toast = _event.toast
244
+
245
+ # Config
246
+ # We add the metrics tracking here, since importing
247
+ # gather_metrics in config causes a circular dependency
248
+ get_option = _gather_metrics("get_option", _config.get_option)
249
+ set_option = _gather_metrics("set_option", _config.set_user_option)
250
+
251
+ # Session State
252
+ session_state = _SessionStateProxy()
253
+
254
+ query_params = _QueryParamsProxy()
255
+
256
+ context = _ContextProxy()
257
+
258
+ # Caching
259
+ cache_data = _cache_data
260
+ cache_resource = _cache_resource
261
+ # `st.cache` is deprecated and should be removed soon
262
+ cache = _cache
263
+
264
+ # Namespaces
265
+ column_config = _column_config
266
+
267
+ # Connection
268
+ connection = _connection
269
+
270
+ # Fragment and dialog
271
+ dialog = _dialog_decorator
272
+ fragment = _fragment
273
+
274
+
275
+ # Auth
276
+ login = _login
277
+ logout = _logout
278
+
279
+ # Experimental APIs
280
+ experimental_audio_input = _main.experimental_audio_input
281
+ experimental_dialog = _experimental_dialog_decorator
282
+ experimental_fragment = _experimental_fragment
283
+ experimental_user = _UserInfoProxy()
284
+
285
+ _EXPERIMENTAL_QUERY_PARAMS_DEPRECATE_MSG = "Refer to our [docs page](https://docs.streamlit.io/develop/api-reference/caching-and-state/st.query_params) for more information."
286
+
287
+ experimental_get_query_params = _deprecate_func_name(
288
+ _get_query_params,
289
+ "experimental_get_query_params",
290
+ "2024-04-11",
291
+ _EXPERIMENTAL_QUERY_PARAMS_DEPRECATE_MSG,
292
+ name_override="query_params",
293
+ )
294
+ experimental_set_query_params = _deprecate_func_name(
295
+ _set_query_params,
296
+ "experimental_set_query_params",
297
+ "2024-04-11",
298
+ _EXPERIMENTAL_QUERY_PARAMS_DEPRECATE_MSG,
299
+ name_override="query_params",
300
+ )
301
+
302
+
303
+ # make it possible to call streamlit.components.v1.html etc. by importing it here
304
+ # import in the very end to avoid partially-initialized module import errors, because
305
+ # streamlit.components.v1 also uses some streamlit imports
306
+ import streamlit.components.v1 # noqa: F401
streamlit/__main__.py ADDED
@@ -0,0 +1,20 @@
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 streamlit.web.cli import main
16
+
17
+ if __name__ == "__main__":
18
+ # Set prog_name so that the Streamlit server sees the same command line
19
+ # string whether streamlit is called directly or via `python -m streamlit`.
20
+ main(prog_name="streamlit")
streamlit/auth_util.py ADDED
@@ -0,0 +1,218 @@
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 collections.abc import Mapping
18
+ from datetime import datetime, timedelta, timezone
19
+ from typing import TYPE_CHECKING, Any, TypedDict, cast
20
+
21
+ from streamlit import config
22
+ from streamlit.errors import StreamlitAuthError
23
+ from streamlit.runtime.secrets import AttrDict, secrets_singleton
24
+
25
+ if TYPE_CHECKING:
26
+
27
+ class ProviderTokenPayload(TypedDict):
28
+ provider: str
29
+ exp: int
30
+
31
+
32
+ class AuthCache:
33
+ """Simple cache implementation for storing info required for Authlib."""
34
+
35
+ def __init__(self):
36
+ self.cache = {}
37
+
38
+ def get(self, key):
39
+ return self.cache.get(key)
40
+
41
+ # for set method, we are follow the same signature used in Authlib
42
+ # the expires_in is not used in our case
43
+ def set(self, key, value, expires_in):
44
+ self.cache[key] = value
45
+
46
+ def get_dict(self):
47
+ return self.cache
48
+
49
+ def delete(self, key):
50
+ self.cache.pop(key, None)
51
+
52
+
53
+ def is_authlib_installed() -> bool:
54
+ """Check if Authlib is installed."""
55
+ try:
56
+ import authlib # type: ignore[import-untyped]
57
+
58
+ authlib_version = authlib.__version__
59
+ authlib_version_tuple = tuple(map(int, authlib_version.split(".")))
60
+
61
+ if authlib_version_tuple < (1, 3, 2):
62
+ return False
63
+ except (ImportError, ModuleNotFoundError):
64
+ return False
65
+ return True
66
+
67
+
68
+ def get_signing_secret() -> str:
69
+ """Get the cookie signing secret from the configuration or secrets.toml."""
70
+ signing_secret: str = config.get_option("server.cookieSecret")
71
+ if secrets_singleton.load_if_toml_exists():
72
+ auth_section = secrets_singleton.get("auth")
73
+ if auth_section:
74
+ signing_secret = auth_section.get("cookie_secret", signing_secret)
75
+ return signing_secret
76
+
77
+
78
+ def get_secrets_auth_section() -> AttrDict:
79
+ auth_section = AttrDict({})
80
+ """Get the 'auth' section of the secrets.toml."""
81
+ if secrets_singleton.load_if_toml_exists():
82
+ auth_section = cast(AttrDict, secrets_singleton.get("auth"))
83
+
84
+ return auth_section
85
+
86
+
87
+ def encode_provider_token(provider: str) -> str:
88
+ """Returns a signed JWT token with the provider and expiration time."""
89
+ try:
90
+ from authlib.jose import jwt # type: ignore[import-untyped]
91
+ except ImportError:
92
+ raise StreamlitAuthError(
93
+ """To use authentication features, you need to install Authlib>=1.3.2, e.g. via `pip install Authlib`."""
94
+ ) from None
95
+
96
+ header = {"alg": "HS256"}
97
+ payload = {
98
+ "provider": provider,
99
+ "exp": datetime.now(timezone.utc) + timedelta(minutes=2),
100
+ }
101
+ provider_token: bytes = jwt.encode(header, payload, get_signing_secret())
102
+ # JWT token is a byte string, so we need to decode it to a URL compatible string
103
+ return provider_token.decode("latin-1")
104
+
105
+
106
+ def decode_provider_token(provider_token: str) -> ProviderTokenPayload:
107
+ """Decode the JWT token and validate the claims."""
108
+ try:
109
+ from authlib.jose import JoseError, JWTClaims, jwt
110
+ except ImportError:
111
+ raise StreamlitAuthError(
112
+ """To use authentication features, you need to install Authlib>=1.3.2, e.g. via `pip install Authlib`."""
113
+ ) from None
114
+
115
+ # Our JWT token is short-lived (2 minutes), so we check here that it contains
116
+ # the 'exp' (and it is not expired), and 'provider' field exists.
117
+ claim_options = {"exp": {"essential": True}, "provider": {"essential": True}}
118
+ try:
119
+ payload: JWTClaims = jwt.decode(
120
+ provider_token, get_signing_secret(), claims_options=claim_options
121
+ )
122
+ payload.validate()
123
+ except JoseError as e:
124
+ raise StreamlitAuthError(f"Error decoding provider token: {e}") from None
125
+
126
+ return cast("ProviderTokenPayload", payload)
127
+
128
+
129
+ def generate_default_provider_section(auth_section) -> dict[str, Any]:
130
+ """Generate a default provider section for the 'auth' section of secrets.toml."""
131
+ default_provider_section = {}
132
+ if auth_section.get("client_id"):
133
+ default_provider_section["client_id"] = auth_section.get("client_id")
134
+ if auth_section.get("client_secret"):
135
+ default_provider_section["client_secret"] = auth_section.get("client_secret")
136
+ if auth_section.get("server_metadata_url"):
137
+ default_provider_section["server_metadata_url"] = auth_section.get(
138
+ "server_metadata_url"
139
+ )
140
+ if auth_section.get("client_kwargs"):
141
+ default_provider_section["client_kwargs"] = auth_section.get(
142
+ "client_kwargs"
143
+ ).to_dict()
144
+ return default_provider_section
145
+
146
+
147
+ def validate_auth_credentials(provider: str) -> None:
148
+ """Validate the general auth credentials and auth credentials for the given
149
+ provider."""
150
+ if not secrets_singleton.load_if_toml_exists():
151
+ raise StreamlitAuthError(
152
+ """To use authentication features you need to configure credentials for at
153
+ least one authentication provider in `.streamlit/secrets.toml`."""
154
+ )
155
+
156
+ auth_section = secrets_singleton.get("auth")
157
+ if auth_section is None:
158
+ raise StreamlitAuthError(
159
+ """To use authentication features you need to configure credentials for at
160
+ least one authentication provider in `.streamlit/secrets.toml`."""
161
+ )
162
+ if "redirect_uri" not in auth_section:
163
+ raise StreamlitAuthError(
164
+ """Authentication credentials in `.streamlit/secrets.toml` are missing the
165
+ "redirect_uri" key. Please check your configuration."""
166
+ )
167
+ if "cookie_secret" not in auth_section:
168
+ raise StreamlitAuthError(
169
+ """Authentication credentials in `.streamlit/secrets.toml` are missing the
170
+ "cookie_secret" key. Please check your configuration."""
171
+ )
172
+
173
+ provider_section = auth_section.get(provider)
174
+
175
+ # TODO(kajarenc): Revisit this check later when investigating the ability
176
+ # TODO(kajarenc): to add "_" to the provider name.
177
+ if "_" in provider:
178
+ raise StreamlitAuthError(
179
+ f'Auth provider name "{provider}" contains an underscore. '
180
+ f"Please use a provider name without underscores."
181
+ )
182
+
183
+ if provider_section is None and provider == "default":
184
+ provider_section = generate_default_provider_section(auth_section)
185
+
186
+ if provider_section is None:
187
+ if provider == "default":
188
+ raise StreamlitAuthError(
189
+ """Authentication credentials in `.streamlit/secrets.toml` are missing for
190
+ the default authentication provider. Please check your configuration."""
191
+ )
192
+ raise StreamlitAuthError(
193
+ f"Authentication credentials in `.streamlit/secrets.toml` are missing for "
194
+ f'the authentication provider "{provider}". Please check your '
195
+ f"configuration."
196
+ )
197
+
198
+ if not isinstance(provider_section, Mapping):
199
+ raise StreamlitAuthError(
200
+ f"Authentication credentials in `.streamlit/secrets.toml` for the "
201
+ f'authentication provider "{provider}" must be valid TOML. Please check '
202
+ f"your configuration."
203
+ )
204
+
205
+ required_keys = ["client_id", "client_secret", "server_metadata_url"]
206
+ missing_keys = [key for key in required_keys if key not in provider_section]
207
+ if missing_keys:
208
+ if provider == "default":
209
+ raise StreamlitAuthError(
210
+ "Authentication credentials in `.streamlit/secrets.toml` for the "
211
+ f"default authentication provider are missing the following keys: "
212
+ f"{missing_keys}. Please check your configuration."
213
+ )
214
+ raise StreamlitAuthError(
215
+ "Authentication credentials in `.streamlit/secrets.toml` for the "
216
+ f'authentication provider "{provider}" are missing the following keys: '
217
+ f"{missing_keys}. Please check your configuration."
218
+ )
streamlit/cli_util.py ADDED
@@ -0,0 +1,105 @@
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
+ """Utilities related to the CLI."""
16
+
17
+ from __future__ import annotations
18
+
19
+ import os
20
+ import subprocess
21
+
22
+ from streamlit import env_util, errors
23
+
24
+
25
+ def print_to_cli(message: str, **kwargs) -> None:
26
+ """Print a message to the terminal using click if available, else print
27
+ using the built-in print function.
28
+
29
+ You can provide any keyword arguments that click.secho supports.
30
+ """
31
+ try:
32
+ import click
33
+
34
+ click.secho(message, **kwargs)
35
+ except ImportError:
36
+ print(message, flush=True) # noqa: T201
37
+
38
+
39
+ def style_for_cli(message: str, **kwargs) -> str:
40
+ """Style a message using click if available, else return the message
41
+ unchanged.
42
+
43
+ You can provide any keyword arguments that click.style supports.
44
+ """
45
+
46
+ try:
47
+ import click
48
+
49
+ return click.style(message, **kwargs)
50
+ except ImportError:
51
+ return message
52
+
53
+
54
+ def _open_browser_with_webbrowser(url: str) -> None:
55
+ import webbrowser
56
+
57
+ webbrowser.open(url)
58
+
59
+
60
+ def _open_browser_with_command(command: str, url: str) -> None:
61
+ cmd_line = [command, url]
62
+ with open(os.devnull, "w") as devnull:
63
+ subprocess.Popen(cmd_line, stdout=devnull, stderr=subprocess.STDOUT)
64
+
65
+
66
+ def open_browser(url: str) -> None:
67
+ """Open a web browser pointing to a given URL.
68
+
69
+ We use this function instead of Python's `webbrowser` module because this
70
+ way we can capture stdout/stderr to avoid polluting the terminal with the
71
+ browser's messages. For example, Chrome always prints things like "Created
72
+ new window in existing browser session", and those get on the user's way.
73
+
74
+ url : str
75
+ The URL. Must include the protocol.
76
+
77
+ """
78
+ # Treat Windows separately because:
79
+ # 1. /dev/null doesn't exist.
80
+ # 2. subprocess.Popen(['start', url]) doesn't actually pop up the
81
+ # browser even though 'start url' works from the command prompt.
82
+ # Fun!
83
+ # Also, use webbrowser if we are on Linux and xdg-open is not installed.
84
+ #
85
+ # We don't use the webbrowser module on Linux and Mac because some browsers
86
+ # (ahem... Chrome) always print "Opening in existing browser session" to
87
+ # the terminal, which is spammy and annoying. So instead we start the
88
+ # browser ourselves and send all its output to /dev/null.
89
+
90
+ if env_util.IS_WINDOWS:
91
+ _open_browser_with_webbrowser(url)
92
+ return
93
+ if env_util.IS_LINUX_OR_BSD:
94
+ if env_util.is_executable_in_path("xdg-open"):
95
+ _open_browser_with_command("xdg-open", url)
96
+ return
97
+ _open_browser_with_webbrowser(url)
98
+ return
99
+ if env_util.IS_DARWIN:
100
+ _open_browser_with_command("open", url)
101
+ return
102
+
103
+ import platform
104
+
105
+ raise errors.Error(f'Cannot open browser in platform "{platform.system()}"')