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,545 @@
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 numbers
18
+ from dataclasses import dataclass
19
+ from textwrap import dedent
20
+ from typing import TYPE_CHECKING, Literal, TypeVar, Union, cast, overload
21
+
22
+ from typing_extensions import TypeAlias
23
+
24
+ from streamlit.elements.lib.form_utils import current_form_id
25
+ from streamlit.elements.lib.js_number import JSNumber, JSNumberBoundsException
26
+ from streamlit.elements.lib.policies import (
27
+ check_widget_policies,
28
+ maybe_raise_label_warnings,
29
+ )
30
+ from streamlit.elements.lib.utils import (
31
+ Key,
32
+ LabelVisibility,
33
+ compute_and_register_element_id,
34
+ get_label_visibility_proto_value,
35
+ to_key,
36
+ )
37
+ from streamlit.errors import (
38
+ StreamlitInvalidNumberFormatError,
39
+ StreamlitJSNumberBoundsError,
40
+ StreamlitMixedNumericTypesError,
41
+ StreamlitValueAboveMaxError,
42
+ StreamlitValueBelowMinError,
43
+ )
44
+ from streamlit.proto.NumberInput_pb2 import NumberInput as NumberInputProto
45
+ from streamlit.runtime.metrics_util import gather_metrics
46
+ from streamlit.runtime.scriptrunner import ScriptRunContext, get_script_run_ctx
47
+ from streamlit.runtime.state import (
48
+ WidgetArgs,
49
+ WidgetCallback,
50
+ WidgetKwargs,
51
+ get_session_state,
52
+ register_widget,
53
+ )
54
+
55
+ if TYPE_CHECKING:
56
+ from streamlit.delta_generator import DeltaGenerator
57
+
58
+
59
+ Number: TypeAlias = Union[int, float]
60
+ IntOrNone = TypeVar("IntOrNone", int, None)
61
+ FloatOrNone = TypeVar("FloatOrNone", float, None)
62
+
63
+
64
+ @dataclass
65
+ class NumberInputSerde:
66
+ value: Number | None
67
+ data_type: int
68
+
69
+ def serialize(self, v: Number | None) -> Number | None:
70
+ return v
71
+
72
+ def deserialize(
73
+ self, ui_value: Number | None, widget_id: str = ""
74
+ ) -> Number | None:
75
+ val: Number | None = ui_value if ui_value is not None else self.value
76
+
77
+ if val is not None and self.data_type == NumberInputProto.INT:
78
+ val = int(val)
79
+
80
+ return val
81
+
82
+
83
+ class NumberInputMixin:
84
+ # For easier readability, all the arguments with un-changing types across these overload signatures have been
85
+ # collapsed onto a single line.
86
+
87
+ # fmt: off
88
+ # If "min_value: int" is given and all other numerical inputs are
89
+ # "int"s or not provided (value optionally being "min"), return "int"
90
+ # If "min_value: int, value: None" is given and all other numerical inputs
91
+ # are "int"s or not provided, return "int | None"
92
+ @overload
93
+ def number_input(
94
+ self,
95
+ label: str,
96
+ min_value: int,
97
+ max_value: int | None = None,
98
+ value: IntOrNone | Literal["min"] = "min",
99
+ step: int | None = None,
100
+ format: str | None = None, key: Key | None = None, help: str | None = None, on_change: WidgetCallback | None = None, args: WidgetArgs | None = None, kwargs: WidgetKwargs | None = None, *, placeholder: str | None = None, disabled: bool = False, label_visibility: LabelVisibility = "visible"
101
+ ) -> int | IntOrNone:
102
+ ...
103
+
104
+ # If "max_value: int" is given and all other numerical inputs are
105
+ # "int"s or not provided (value optionally being "min"), return "int"
106
+ # If "max_value: int, value=None" is given and all other numerical inputs
107
+ # are "int"s or not provided, return "int | None"
108
+ @overload
109
+ def number_input(
110
+ self,
111
+ label: str,
112
+ min_value: int | None = None,
113
+ *,
114
+ max_value: int,
115
+ value: IntOrNone | Literal["min"] = "min",
116
+ step: int | None = None,
117
+ format: str | None = None, key: Key | None = None, help: str | None = None, on_change: WidgetCallback | None = None, args: WidgetArgs | None = None, kwargs: WidgetKwargs | None = None, placeholder: str | None = None, disabled: bool = False, label_visibility: LabelVisibility = "visible"
118
+ ) -> int | IntOrNone:
119
+ ...
120
+
121
+ # If "value=int" is given and all other numerical inputs are "int"s
122
+ # or not provided, return "int"
123
+ @overload
124
+ def number_input(
125
+ self,
126
+ label: str,
127
+ min_value: int | None = None,
128
+ max_value: int | None = None,
129
+ *,
130
+ value: int,
131
+ step: int | None = None,
132
+ format: str | None = None, key: Key | None = None, help: str | None = None, on_change: WidgetCallback | None = None, args: WidgetArgs | None = None, kwargs: WidgetKwargs | None = None, placeholder: str | None = None, disabled: bool = False, label_visibility: LabelVisibility = "visible"
133
+ ) -> int:
134
+ ...
135
+
136
+ # If "step=int" is given and all other numerical inputs are "int"s
137
+ # or not provided (value optionally being "min"), return "int"
138
+ # If "step=int, value=None" is given and all other numerical inputs
139
+ # are "int"s or not provided, return "int | None"
140
+ @overload
141
+ def number_input(
142
+ self,
143
+ label: str,
144
+ min_value: int | None = None,
145
+ max_value: int | None = None,
146
+ value: IntOrNone | Literal["min"] = "min",
147
+ *,
148
+ step: int,
149
+ format: str | None = None, key: Key | None = None, help: str | None = None, on_change: WidgetCallback | None = None, args: WidgetArgs | None = None, kwargs: WidgetKwargs | None = None, placeholder: str | None = None, disabled: bool = False, label_visibility: LabelVisibility = "visible"
150
+ ) -> int | IntOrNone:
151
+ ...
152
+
153
+ # If all numerical inputs are floats (with value optionally being "min")
154
+ # or are not provided, return "float"
155
+ # If only "value=None" is given and none of the other numerical inputs
156
+ # are "int"s, return "float | None"
157
+ @overload
158
+ def number_input(
159
+ self,
160
+ label: str,
161
+ min_value: float | None = None,
162
+ max_value: float | None = None,
163
+ value: FloatOrNone | Literal["min"] = "min",
164
+ step: float | None = None,
165
+ format: str | None = None, key: Key | None = None, help: str | None = None, on_change: WidgetCallback | None = None, args: WidgetArgs | None = None, kwargs: WidgetKwargs | None = None, *, placeholder: str | None = None, disabled: bool = False, label_visibility: LabelVisibility = "visible"
166
+ ) -> float | FloatOrNone:
167
+ ...
168
+ # # fmt: on
169
+
170
+ @gather_metrics("number_input")
171
+ def number_input(
172
+ self,
173
+ label: str,
174
+ min_value: Number | None = None,
175
+ max_value: Number | None = None,
176
+ value: Number | Literal["min"] | None = "min",
177
+ step: Number | None = None,
178
+ format: str | None = None,
179
+ key: Key | None = None,
180
+ help: str | None = None,
181
+ on_change: WidgetCallback | None = None,
182
+ args: WidgetArgs | None = None,
183
+ kwargs: WidgetKwargs | None = None,
184
+ *, # keyword-only arguments:
185
+ placeholder: str | None = None,
186
+ disabled: bool = False,
187
+ label_visibility: LabelVisibility = "visible",
188
+ ) -> Number | None:
189
+ r"""Display a numeric input widget.
190
+
191
+ .. note::
192
+ Integer values exceeding +/- ``(1<<53) - 1`` cannot be accurately
193
+ stored or returned by the widget due to serialization contstraints
194
+ between the Python server and JavaScript client. You must handle
195
+ such numbers as floats, leading to a loss in precision.
196
+
197
+ Parameters
198
+ ----------
199
+ label : str
200
+ A short label explaining to the user what this input is for.
201
+ The label can optionally contain GitHub-flavored Markdown of the
202
+ following types: Bold, Italics, Strikethroughs, Inline Code, Links,
203
+ and Images. Images display like icons, with a max height equal to
204
+ the font height.
205
+
206
+ Unsupported Markdown elements are unwrapped so only their children
207
+ (text contents) render. Display unsupported elements as literal
208
+ characters by backslash-escaping them. E.g.,
209
+ ``"1\. Not an ordered list"``.
210
+
211
+ See the ``body`` parameter of |st.markdown|_ for additional,
212
+ supported Markdown directives.
213
+
214
+ For accessibility reasons, you should never set an empty label, but
215
+ you can hide it with ``label_visibility`` if needed. In the future,
216
+ we may disallow empty labels by raising an exception.
217
+
218
+ .. |st.markdown| replace:: ``st.markdown``
219
+ .. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
220
+
221
+ min_value : int, float, or None
222
+ The minimum permitted value.
223
+ If None, there will be no minimum.
224
+
225
+ max_value : int, float, or None
226
+ The maximum permitted value.
227
+ If None, there will be no maximum.
228
+
229
+ value : int, float, "min" or None
230
+ The value of this widget when it first renders. If ``None``, will initialize
231
+ empty and return ``None`` until the user provides input.
232
+ If "min" (default), will initialize with min_value, or 0.0 if
233
+ min_value is None.
234
+
235
+ step : int, float, or None
236
+ The stepping interval.
237
+ Defaults to 1 if the value is an int, 0.01 otherwise.
238
+ If the value is not specified, the format parameter will be used.
239
+
240
+ format : str or None
241
+ A printf-style format string controlling how the interface should
242
+ display numbers. The output must be purely numeric. This does not
243
+ impact the return value of the widget. For more information about
244
+ the formatting specification, see `sprintf.js
245
+ <https://github.com/alexei/sprintf.js?tab=readme-ov-file#format-specification>`_.
246
+
247
+ For example, ``format="%0.1f"`` adjusts the displayed decimal
248
+ precision to only show one digit after the decimal.
249
+
250
+ key : str or int
251
+ An optional string or integer to use as the unique key for the widget.
252
+ If this is omitted, a key will be generated for the widget
253
+ based on its content. No two widgets may have the same key.
254
+
255
+ help : str or None
256
+ A tooltip that gets displayed next to the widget label. Streamlit
257
+ only displays the tooltip when ``label_visibility="visible"``. If
258
+ this is ``None`` (default), no tooltip is displayed.
259
+
260
+ The tooltip can optionally contain GitHub-flavored Markdown,
261
+ including the Markdown directives described in the ``body``
262
+ parameter of ``st.markdown``.
263
+
264
+ on_change : callable
265
+ An optional callback invoked when this number_input's value changes.
266
+
267
+ args : tuple
268
+ An optional tuple of args to pass to the callback.
269
+
270
+ kwargs : dict
271
+ An optional dict of kwargs to pass to the callback.
272
+
273
+ placeholder : str or None
274
+ An optional string displayed when the number input is empty.
275
+ If None, no placeholder is displayed.
276
+
277
+ disabled : bool
278
+ An optional boolean that disables the number input if set to
279
+ ``True``. The default is ``False``.
280
+
281
+ label_visibility : "visible", "hidden", or "collapsed"
282
+ The visibility of the label. The default is ``"visible"``. If this
283
+ is ``"hidden"``, Streamlit displays an empty spacer instead of the
284
+ label, which can help keep the widget alligned with other widgets.
285
+ If this is ``"collapsed"``, Streamlit displays no label or spacer.
286
+
287
+ Returns
288
+ -------
289
+ int or float or None
290
+ The current value of the numeric input widget or ``None`` if the widget
291
+ is empty. The return type will match the data type of the value parameter.
292
+
293
+ Example
294
+ -------
295
+ >>> import streamlit as st
296
+ >>>
297
+ >>> number = st.number_input("Insert a number")
298
+ >>> st.write("The current number is ", number)
299
+
300
+ .. output::
301
+ https://doc-number-input.streamlit.app/
302
+ height: 260px
303
+
304
+ To initialize an empty number input, use ``None`` as the value:
305
+
306
+ >>> import streamlit as st
307
+ >>>
308
+ >>> number = st.number_input(
309
+ ... "Insert a number", value=None, placeholder="Type a number..."
310
+ ... )
311
+ >>> st.write("The current number is ", number)
312
+
313
+ .. output::
314
+ https://doc-number-input-empty.streamlit.app/
315
+ height: 260px
316
+
317
+ """
318
+ ctx = get_script_run_ctx()
319
+ return self._number_input(
320
+ label=label,
321
+ min_value=min_value,
322
+ max_value=max_value,
323
+ value=value,
324
+ step=step,
325
+ format=format,
326
+ key=key,
327
+ help=help,
328
+ on_change=on_change,
329
+ args=args,
330
+ kwargs=kwargs,
331
+ placeholder=placeholder,
332
+ disabled=disabled,
333
+ label_visibility=label_visibility,
334
+ ctx=ctx,
335
+ )
336
+
337
+ def _number_input(
338
+ self,
339
+ label: str,
340
+ min_value: Number | None = None,
341
+ max_value: Number | None = None,
342
+ value: Number | Literal["min"] | None = "min",
343
+ step: Number | None = None,
344
+ format: str | None = None,
345
+ key: Key | None = None,
346
+ help: str | None = None,
347
+ on_change: WidgetCallback | None = None,
348
+ args: WidgetArgs | None = None,
349
+ kwargs: WidgetKwargs | None = None,
350
+ *, # keyword-only arguments:
351
+ placeholder: str | None = None,
352
+ disabled: bool = False,
353
+ label_visibility: LabelVisibility = "visible",
354
+ ctx: ScriptRunContext | None = None,
355
+ ) -> Number | None:
356
+ key = to_key(key)
357
+
358
+ check_widget_policies(
359
+ self.dg,
360
+ key,
361
+ on_change,
362
+ default_value=value if value != "min" else None,
363
+ )
364
+ maybe_raise_label_warnings(label, label_visibility)
365
+
366
+ element_id = compute_and_register_element_id(
367
+ "number_input",
368
+ user_key=key,
369
+ form_id=current_form_id(self.dg),
370
+ label=label,
371
+ min_value=min_value,
372
+ max_value=max_value,
373
+ value=value,
374
+ step=step,
375
+ format=format,
376
+ help=help,
377
+ placeholder=None if placeholder is None else str(placeholder),
378
+ )
379
+
380
+ # Ensure that all arguments are of the same type.
381
+ number_input_args = [min_value, max_value, value, step]
382
+
383
+ all_int_args = all(
384
+ isinstance(a, (numbers.Integral, type(None), str))
385
+ for a in number_input_args
386
+ )
387
+
388
+ all_float_args = all(
389
+ isinstance(a, (float, type(None), str)) for a in number_input_args
390
+ )
391
+
392
+ if not all_int_args and not all_float_args:
393
+ raise StreamlitMixedNumericTypesError(value=value, min_value=min_value, max_value=max_value, step=step)
394
+
395
+ session_state = get_session_state().filtered_state
396
+ if key is not None and key in session_state and session_state[key] is None:
397
+ value = None
398
+
399
+ if value == "min":
400
+ if min_value is not None:
401
+ value = min_value
402
+ elif all_int_args and all_float_args:
403
+ value = 0.0 # if no values are provided, defaults to float
404
+ elif all_int_args:
405
+ value = 0
406
+ else:
407
+ value = 0.0
408
+
409
+ int_value = isinstance(value, numbers.Integral)
410
+ float_value = isinstance(value, float)
411
+
412
+ if value is None:
413
+ if all_int_args and not all_float_args:
414
+ # Select int type if all relevant args are ints:
415
+ int_value = True
416
+ else:
417
+ # Otherwise, defaults to float:
418
+ float_value = True
419
+
420
+ if format is None:
421
+ format = "%d" if int_value else "%0.2f"
422
+
423
+ # Warn user if they format an int type as a float or vice versa.
424
+ if format in ["%d", "%u", "%i"] and float_value:
425
+ import streamlit as st
426
+
427
+ st.warning(
428
+ "Warning: NumberInput value below has type float,"
429
+ f" but format {format} displays as integer."
430
+ )
431
+ elif format[-1] == "f" and int_value:
432
+ import streamlit as st
433
+
434
+ st.warning(
435
+ "Warning: NumberInput value below has type int so is"
436
+ f" displayed as int despite format string {format}."
437
+ )
438
+
439
+ if step is None:
440
+ step = 1 if int_value else 0.01
441
+
442
+ try:
443
+ float(format % 2)
444
+ except (TypeError, ValueError):
445
+ raise StreamlitInvalidNumberFormatError(format)
446
+
447
+
448
+ # Ensure that the value matches arguments' types.
449
+ all_ints = int_value and all_int_args
450
+
451
+ if min_value is not None and value is not None and min_value > value:
452
+ raise StreamlitValueBelowMinError(value=value, min_value=min_value)
453
+
454
+
455
+ if max_value is not None and value is not None and max_value < value:
456
+ raise StreamlitValueAboveMaxError(value=value, max_value=max_value)
457
+
458
+ # Bounds checks. JSNumber produces human-readable exceptions that
459
+ # we simply re-package as StreamlitAPIExceptions.
460
+ try:
461
+ if all_ints:
462
+ if min_value is not None:
463
+ JSNumber.validate_int_bounds(int(min_value), "`min_value`")
464
+ if max_value is not None:
465
+ JSNumber.validate_int_bounds(int(max_value), "`max_value`")
466
+ if step is not None:
467
+ JSNumber.validate_int_bounds(int(step), "`step`")
468
+ if value is not None:
469
+ JSNumber.validate_int_bounds(int(value), "`value`")
470
+ else:
471
+ if min_value is not None:
472
+ JSNumber.validate_float_bounds(min_value, "`min_value`")
473
+ if max_value is not None:
474
+ JSNumber.validate_float_bounds(max_value, "`max_value`")
475
+ if step is not None:
476
+ JSNumber.validate_float_bounds(step, "`step`")
477
+ if value is not None:
478
+ JSNumber.validate_float_bounds(value, "`value`")
479
+ except JSNumberBoundsException as e:
480
+ raise StreamlitJSNumberBoundsError(str(e))
481
+
482
+ data_type = NumberInputProto.INT if all_ints else NumberInputProto.FLOAT
483
+
484
+ number_input_proto = NumberInputProto()
485
+ number_input_proto.id = element_id
486
+ number_input_proto.data_type = data_type
487
+ number_input_proto.label = label
488
+ if value is not None:
489
+ number_input_proto.default = value
490
+ if placeholder is not None:
491
+ number_input_proto.placeholder = str(placeholder)
492
+ number_input_proto.form_id = current_form_id(self.dg)
493
+ number_input_proto.disabled = disabled
494
+ number_input_proto.label_visibility.value = get_label_visibility_proto_value(
495
+ label_visibility
496
+ )
497
+
498
+ if help is not None:
499
+ number_input_proto.help = dedent(help)
500
+
501
+ if min_value is not None:
502
+ number_input_proto.min = min_value
503
+ number_input_proto.has_min = True
504
+
505
+ if max_value is not None:
506
+ number_input_proto.max = max_value
507
+ number_input_proto.has_max = True
508
+
509
+ if step is not None:
510
+ number_input_proto.step = step
511
+
512
+ if format is not None:
513
+ number_input_proto.format = format
514
+
515
+ serde = NumberInputSerde(value, data_type)
516
+ widget_state = register_widget(
517
+ number_input_proto.id,
518
+ on_change_handler=on_change,
519
+ args=args,
520
+ kwargs=kwargs,
521
+ deserializer=serde.deserialize,
522
+ serializer=serde.serialize,
523
+ ctx=ctx,
524
+ value_type="double_value"
525
+ )
526
+
527
+ if widget_state.value_changed:
528
+ if widget_state.value is not None:
529
+ # Min/Max bounds checks when the value is updated.
530
+ if number_input_proto.has_min and widget_state.value < number_input_proto.min:
531
+ raise StreamlitValueBelowMinError(value=widget_state.value, min_value=number_input_proto.min)
532
+
533
+ if number_input_proto.has_max and widget_state.value > number_input_proto.max:
534
+ raise StreamlitValueAboveMaxError(value=widget_state.value, max_value=number_input_proto.max)
535
+
536
+ number_input_proto.value = widget_state.value
537
+ number_input_proto.set_value = True
538
+
539
+ self.dg._enqueue("number_input", number_input_proto)
540
+ return widget_state.value
541
+
542
+ @property
543
+ def dg(self) -> DeltaGenerator:
544
+ """Get our DeltaGenerator."""
545
+ return cast("DeltaGenerator", self)