streamlit-data-editor-plus 0.1.0__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 (456) hide show
  1. streamlit/__init__.py +292 -0
  2. streamlit/__main__.py +20 -0
  3. streamlit/auth_util.py +583 -0
  4. streamlit/cli_util.py +107 -0
  5. streamlit/column_config.py +60 -0
  6. streamlit/commands/__init__.py +13 -0
  7. streamlit/commands/echo.py +128 -0
  8. streamlit/commands/execution_control.py +318 -0
  9. streamlit/commands/logo.py +250 -0
  10. streamlit/commands/navigation.py +430 -0
  11. streamlit/commands/page_config.py +335 -0
  12. streamlit/components/__init__.py +13 -0
  13. streamlit/components/lib/__init__.py +13 -0
  14. streamlit/components/lib/local_component_registry.py +84 -0
  15. streamlit/components/types/__init__.py +13 -0
  16. streamlit/components/types/base_component_registry.py +99 -0
  17. streamlit/components/types/base_custom_component.py +158 -0
  18. streamlit/components/v1/__init__.py +29 -0
  19. streamlit/components/v1/component_arrow.py +141 -0
  20. streamlit/components/v1/component_registry.py +147 -0
  21. streamlit/components/v1/components.py +38 -0
  22. streamlit/components/v1/custom_component.py +239 -0
  23. streamlit/components/v2/__init__.py +531 -0
  24. streamlit/components/v2/bidi_component/__init__.py +20 -0
  25. streamlit/components/v2/bidi_component/constants.py +29 -0
  26. streamlit/components/v2/bidi_component/main.py +537 -0
  27. streamlit/components/v2/bidi_component/serialization.py +272 -0
  28. streamlit/components/v2/bidi_component/state.py +92 -0
  29. streamlit/components/v2/component_definition_resolver.py +143 -0
  30. streamlit/components/v2/component_file_watcher.py +403 -0
  31. streamlit/components/v2/component_manager.py +439 -0
  32. streamlit/components/v2/component_manifest_handler.py +122 -0
  33. streamlit/components/v2/component_path_utils.py +233 -0
  34. streamlit/components/v2/component_registry.py +426 -0
  35. streamlit/components/v2/get_bidi_component_manager.py +51 -0
  36. streamlit/components/v2/manifest_scanner.py +620 -0
  37. streamlit/components/v2/presentation.py +198 -0
  38. streamlit/components/v2/types.py +317 -0
  39. streamlit/config.py +2977 -0
  40. streamlit/config_option.py +319 -0
  41. streamlit/config_util.py +887 -0
  42. streamlit/connections/__init__.py +32 -0
  43. streamlit/connections/base_connection.py +215 -0
  44. streamlit/connections/snowflake_connection.py +765 -0
  45. streamlit/connections/snowpark_connection.py +213 -0
  46. streamlit/connections/sql_connection.py +427 -0
  47. streamlit/connections/util.py +97 -0
  48. streamlit/cursor.py +314 -0
  49. streamlit/dataframe_util.py +1434 -0
  50. streamlit/delta_generator.py +696 -0
  51. streamlit/delta_generator_singletons.py +243 -0
  52. streamlit/deprecation_util.py +253 -0
  53. streamlit/development.py +21 -0
  54. streamlit/elements/__init__.py +13 -0
  55. streamlit/elements/alert.py +341 -0
  56. streamlit/elements/arrow.py +1065 -0
  57. streamlit/elements/balloons.py +47 -0
  58. streamlit/elements/bokeh_chart.py +75 -0
  59. streamlit/elements/code.py +154 -0
  60. streamlit/elements/deck_gl_json_chart.py +627 -0
  61. streamlit/elements/dialog_decorator.py +320 -0
  62. streamlit/elements/empty.py +130 -0
  63. streamlit/elements/exception.py +370 -0
  64. streamlit/elements/form.py +481 -0
  65. streamlit/elements/graphviz_chart.py +226 -0
  66. streamlit/elements/heading.py +407 -0
  67. streamlit/elements/help.py +565 -0
  68. streamlit/elements/html.py +189 -0
  69. streamlit/elements/iframe.py +245 -0
  70. streamlit/elements/image.py +221 -0
  71. streamlit/elements/json.py +171 -0
  72. streamlit/elements/layouts.py +1534 -0
  73. streamlit/elements/lib/__init__.py +13 -0
  74. streamlit/elements/lib/built_in_chart_utils.py +1316 -0
  75. streamlit/elements/lib/color_util.py +272 -0
  76. streamlit/elements/lib/column_config_utils.py +555 -0
  77. streamlit/elements/lib/column_types.py +2699 -0
  78. streamlit/elements/lib/dialog.py +212 -0
  79. streamlit/elements/lib/dicttools.py +152 -0
  80. streamlit/elements/lib/file_uploader_utils.py +91 -0
  81. streamlit/elements/lib/form_utils.py +77 -0
  82. streamlit/elements/lib/image_utils.py +447 -0
  83. streamlit/elements/lib/js_number.py +105 -0
  84. streamlit/elements/lib/layout_utils.py +325 -0
  85. streamlit/elements/lib/mutable_expander_container.py +73 -0
  86. streamlit/elements/lib/mutable_popover_container.py +73 -0
  87. streamlit/elements/lib/mutable_status_container.py +194 -0
  88. streamlit/elements/lib/mutable_tab_container.py +73 -0
  89. streamlit/elements/lib/options_selector_utils.py +480 -0
  90. streamlit/elements/lib/pandas_styler_utils.py +302 -0
  91. streamlit/elements/lib/policies.py +198 -0
  92. streamlit/elements/lib/shortcut_utils.py +152 -0
  93. streamlit/elements/lib/streamlit_plotly_theme.py +206 -0
  94. streamlit/elements/lib/subtitle_utils.py +175 -0
  95. streamlit/elements/lib/utils.py +274 -0
  96. streamlit/elements/map.py +526 -0
  97. streamlit/elements/markdown.py +529 -0
  98. streamlit/elements/media.py +843 -0
  99. streamlit/elements/metric.py +529 -0
  100. streamlit/elements/pdf.py +190 -0
  101. streamlit/elements/plotly_chart.py +779 -0
  102. streamlit/elements/progress.py +172 -0
  103. streamlit/elements/pyplot.py +240 -0
  104. streamlit/elements/snow.py +47 -0
  105. streamlit/elements/space.py +121 -0
  106. streamlit/elements/spinner.py +152 -0
  107. streamlit/elements/table.py +240 -0
  108. streamlit/elements/text.py +113 -0
  109. streamlit/elements/toast.py +175 -0
  110. streamlit/elements/vega_charts.py +2510 -0
  111. streamlit/elements/widgets/__init__.py +13 -0
  112. streamlit/elements/widgets/audio_input.py +334 -0
  113. streamlit/elements/widgets/button.py +1559 -0
  114. streamlit/elements/widgets/button_group.py +1061 -0
  115. streamlit/elements/widgets/camera_input.py +281 -0
  116. streamlit/elements/widgets/chat.py +1028 -0
  117. streamlit/elements/widgets/checkbox.py +420 -0
  118. streamlit/elements/widgets/color_picker.py +329 -0
  119. streamlit/elements/widgets/data_editor.py +1168 -0
  120. streamlit/elements/widgets/data_editor_plus.py +902 -0
  121. streamlit/elements/widgets/feedback.py +322 -0
  122. streamlit/elements/widgets/file_uploader.py +592 -0
  123. streamlit/elements/widgets/multiselect.py +654 -0
  124. streamlit/elements/widgets/number_input.py +719 -0
  125. streamlit/elements/widgets/radio.py +551 -0
  126. streamlit/elements/widgets/select_slider.py +568 -0
  127. streamlit/elements/widgets/selectbox.py +680 -0
  128. streamlit/elements/widgets/slider.py +1093 -0
  129. streamlit/elements/widgets/text_widgets.py +779 -0
  130. streamlit/elements/widgets/time_widgets.py +1712 -0
  131. streamlit/elements/write.py +585 -0
  132. streamlit/emojis.py +34 -0
  133. streamlit/env_util.py +56 -0
  134. streamlit/error_util.py +112 -0
  135. streamlit/errors.py +680 -0
  136. streamlit/external/__init__.py +13 -0
  137. streamlit/external/langchain/__init__.py +23 -0
  138. streamlit/external/langchain/streamlit_callback_handler.py +410 -0
  139. streamlit/file_util.py +266 -0
  140. streamlit/git_util.py +200 -0
  141. streamlit/hello/__init__.py +13 -0
  142. streamlit/hello/__pycache__/__init__.cpython-312.pyc +0 -0
  143. streamlit/hello/__pycache__/streamlit_app.cpython-312.pyc +0 -0
  144. streamlit/hello/animation_demo.py +82 -0
  145. streamlit/hello/dataframe_demo.py +71 -0
  146. streamlit/hello/hello.py +46 -0
  147. streamlit/hello/mapping_demo.py +113 -0
  148. streamlit/hello/plotting_demo.py +62 -0
  149. streamlit/hello/streamlit_app.py +57 -0
  150. streamlit/hello/utils.py +30 -0
  151. streamlit/logger.py +129 -0
  152. streamlit/material_icon_names.py +25 -0
  153. streamlit/navigation/__init__.py +13 -0
  154. streamlit/navigation/page.py +365 -0
  155. streamlit/net_util.py +125 -0
  156. streamlit/path_security.py +98 -0
  157. streamlit/platform.py +31 -0
  158. streamlit/proto/Alert_pb2.py +28 -0
  159. streamlit/proto/Alert_pb2.pyi +100 -0
  160. streamlit/proto/AppPage_pb2.py +25 -0
  161. streamlit/proto/AppPage_pb2.pyi +75 -0
  162. streamlit/proto/ArrowData_pb2.py +27 -0
  163. streamlit/proto/ArrowData_pb2.pyi +103 -0
  164. streamlit/proto/ArrowNamedDataSet_pb2.py +26 -0
  165. streamlit/proto/ArrowNamedDataSet_pb2.pyi +65 -0
  166. streamlit/proto/AudioInput_pb2.py +26 -0
  167. streamlit/proto/AudioInput_pb2.pyi +72 -0
  168. streamlit/proto/Audio_pb2.py +26 -0
  169. streamlit/proto/Audio_pb2.pyi +75 -0
  170. streamlit/proto/AuthRedirect_pb2.py +25 -0
  171. streamlit/proto/AuthRedirect_pb2.pyi +48 -0
  172. streamlit/proto/AutoRerun_pb2.py +25 -0
  173. streamlit/proto/AutoRerun_pb2.pyi +52 -0
  174. streamlit/proto/BackMsg_pb2.py +29 -0
  175. streamlit/proto/BackMsg_pb2.pyi +132 -0
  176. streamlit/proto/Balloons_pb2.py +25 -0
  177. streamlit/proto/Balloons_pb2.pyi +48 -0
  178. streamlit/proto/BidiComponent_pb2.py +32 -0
  179. streamlit/proto/BidiComponent_pb2.pyi +176 -0
  180. streamlit/proto/Block_pb2.py +62 -0
  181. streamlit/proto/Block_pb2.pyi +518 -0
  182. streamlit/proto/ButtonGroup_pb2.py +32 -0
  183. streamlit/proto/ButtonGroup_pb2.pyi +157 -0
  184. streamlit/proto/ButtonLikeIconPosition_pb2.py +25 -0
  185. streamlit/proto/ButtonLikeIconPosition_pb2.pyi +47 -0
  186. streamlit/proto/Button_pb2.py +26 -0
  187. streamlit/proto/Button_pb2.pyi +82 -0
  188. streamlit/proto/CameraInput_pb2.py +26 -0
  189. streamlit/proto/CameraInput_pb2.pyi +66 -0
  190. streamlit/proto/ChatInput_pb2.py +27 -0
  191. streamlit/proto/ChatInput_pb2.pyi +113 -0
  192. streamlit/proto/Checkbox_pb2.py +28 -0
  193. streamlit/proto/Checkbox_pb2.pyi +99 -0
  194. streamlit/proto/ClientState_pb2.py +28 -0
  195. streamlit/proto/ClientState_pb2.pyi +137 -0
  196. streamlit/proto/Code_pb2.py +25 -0
  197. streamlit/proto/Code_pb2.pyi +59 -0
  198. streamlit/proto/ColorPicker_pb2.py +26 -0
  199. streamlit/proto/ColorPicker_pb2.pyi +82 -0
  200. streamlit/proto/Common_pb2.py +49 -0
  201. streamlit/proto/Common_pb2.pyi +325 -0
  202. streamlit/proto/Components_pb2.py +33 -0
  203. streamlit/proto/Components_pb2.pyi +196 -0
  204. streamlit/proto/Dataframe_pb2.py +30 -0
  205. streamlit/proto/Dataframe_pb2.pyi +172 -0
  206. streamlit/proto/DateInput_pb2.py +26 -0
  207. streamlit/proto/DateInput_pb2.pyi +91 -0
  208. streamlit/proto/DateTimeInput_pb2.py +26 -0
  209. streamlit/proto/DateTimeInput_pb2.pyi +94 -0
  210. streamlit/proto/DeckGlJsonChart_pb2.py +27 -0
  211. streamlit/proto/DeckGlJsonChart_pb2.pyi +91 -0
  212. streamlit/proto/Delta_pb2.py +29 -0
  213. streamlit/proto/Delta_pb2.pyi +82 -0
  214. streamlit/proto/DownloadButton_pb2.py +26 -0
  215. streamlit/proto/DownloadButton_pb2.pyi +92 -0
  216. streamlit/proto/Element_pb2.py +81 -0
  217. streamlit/proto/Element_pb2.pyi +348 -0
  218. streamlit/proto/Empty_pb2.py +25 -0
  219. streamlit/proto/Empty_pb2.pyi +42 -0
  220. streamlit/proto/Exception_pb2.py +26 -0
  221. streamlit/proto/Exception_pb2.pyi +88 -0
  222. streamlit/proto/Favicon_pb2.py +25 -0
  223. streamlit/proto/Favicon_pb2.pyi +47 -0
  224. streamlit/proto/Feedback_pb2.py +27 -0
  225. streamlit/proto/Feedback_pb2.pyi +93 -0
  226. streamlit/proto/FileUploader_pb2.py +26 -0
  227. streamlit/proto/FileUploader_pb2.pyi +90 -0
  228. streamlit/proto/ForwardMsg_pb2.py +48 -0
  229. streamlit/proto/ForwardMsg_pb2.pyi +296 -0
  230. streamlit/proto/GapSize_pb2.py +27 -0
  231. streamlit/proto/GapSize_pb2.pyi +82 -0
  232. streamlit/proto/GitInfo_pb2.py +27 -0
  233. streamlit/proto/GitInfo_pb2.pyi +84 -0
  234. streamlit/proto/GraphVizChart_pb2.py +25 -0
  235. streamlit/proto/GraphVizChart_pb2.pyi +56 -0
  236. streamlit/proto/Heading_pb2.py +25 -0
  237. streamlit/proto/Heading_pb2.pyi +63 -0
  238. streamlit/proto/HeightConfig_pb2.py +25 -0
  239. streamlit/proto/HeightConfig_pb2.pyi +61 -0
  240. streamlit/proto/Help_pb2.py +27 -0
  241. streamlit/proto/Help_pb2.pyi +104 -0
  242. streamlit/proto/Html_pb2.py +25 -0
  243. streamlit/proto/Html_pb2.pyi +52 -0
  244. streamlit/proto/IFrame_pb2.py +25 -0
  245. streamlit/proto/IFrame_pb2.pyi +68 -0
  246. streamlit/proto/Image_pb2.py +27 -0
  247. streamlit/proto/Image_pb2.pyi +73 -0
  248. streamlit/proto/Json_pb2.py +25 -0
  249. streamlit/proto/Json_pb2.pyi +63 -0
  250. streamlit/proto/LabelVisibility_pb2.py +27 -0
  251. streamlit/proto/LabelVisibility_pb2.pyi +69 -0
  252. streamlit/proto/LinkButton_pb2.py +26 -0
  253. streamlit/proto/LinkButton_pb2.pyi +76 -0
  254. streamlit/proto/Logo_pb2.py +27 -0
  255. streamlit/proto/Logo_pb2.pyi +82 -0
  256. streamlit/proto/Markdown_pb2.py +27 -0
  257. streamlit/proto/Markdown_pb2.pyi +83 -0
  258. streamlit/proto/Metric_pb2.py +32 -0
  259. streamlit/proto/Metric_pb2.pyi +145 -0
  260. streamlit/proto/MetricsEvent_pb2.py +28 -0
  261. streamlit/proto/MetricsEvent_pb2.pyi +224 -0
  262. streamlit/proto/MultiSelect_pb2.py +26 -0
  263. streamlit/proto/MultiSelect_pb2.pyi +108 -0
  264. streamlit/proto/Navigation_pb2.py +28 -0
  265. streamlit/proto/Navigation_pb2.pyi +89 -0
  266. streamlit/proto/NewSession_pb2.py +47 -0
  267. streamlit/proto/NewSession_pb2.pyi +753 -0
  268. streamlit/proto/NumberInput_pb2.py +28 -0
  269. streamlit/proto/NumberInput_pb2.pyi +138 -0
  270. streamlit/proto/PageConfig_pb2.py +33 -0
  271. streamlit/proto/PageConfig_pb2.pyi +179 -0
  272. streamlit/proto/PageInfo_pb2.py +25 -0
  273. streamlit/proto/PageInfo_pb2.pyi +50 -0
  274. streamlit/proto/PageLink_pb2.py +26 -0
  275. streamlit/proto/PageLink_pb2.pyi +80 -0
  276. streamlit/proto/PageNotFound_pb2.py +25 -0
  277. streamlit/proto/PageNotFound_pb2.pyi +49 -0
  278. streamlit/proto/PageProfile_pb2.py +29 -0
  279. streamlit/proto/PageProfile_pb2.pyi +146 -0
  280. streamlit/proto/ParentMessage_pb2.py +25 -0
  281. streamlit/proto/ParentMessage_pb2.pyi +53 -0
  282. streamlit/proto/PlotlyChart_pb2.py +27 -0
  283. streamlit/proto/PlotlyChart_pb2.pyi +96 -0
  284. streamlit/proto/Progress_pb2.py +25 -0
  285. streamlit/proto/Progress_pb2.pyi +50 -0
  286. streamlit/proto/Radio_pb2.py +26 -0
  287. streamlit/proto/Radio_pb2.pyi +104 -0
  288. streamlit/proto/RootContainer_pb2.py +25 -0
  289. streamlit/proto/RootContainer_pb2.pyi +56 -0
  290. streamlit/proto/Selectbox_pb2.py +26 -0
  291. streamlit/proto/Selectbox_pb2.pyi +107 -0
  292. streamlit/proto/SessionEvent_pb2.py +26 -0
  293. streamlit/proto/SessionEvent_pb2.pyi +72 -0
  294. streamlit/proto/SessionStatus_pb2.py +25 -0
  295. streamlit/proto/SessionStatus_pb2.pyi +64 -0
  296. streamlit/proto/Skeleton_pb2.py +27 -0
  297. streamlit/proto/Skeleton_pb2.pyi +75 -0
  298. streamlit/proto/Slider_pb2.py +30 -0
  299. streamlit/proto/Slider_pb2.pyi +161 -0
  300. streamlit/proto/Snow_pb2.py +25 -0
  301. streamlit/proto/Snow_pb2.pyi +48 -0
  302. streamlit/proto/Space_pb2.py +25 -0
  303. streamlit/proto/Space_pb2.pyi +48 -0
  304. streamlit/proto/Spinner_pb2.py +25 -0
  305. streamlit/proto/Spinner_pb2.pyi +56 -0
  306. streamlit/proto/Table_pb2.py +28 -0
  307. streamlit/proto/Table_pb2.pyi +83 -0
  308. streamlit/proto/TextAlignmentConfig_pb2.py +27 -0
  309. streamlit/proto/TextAlignmentConfig_pb2.pyi +69 -0
  310. streamlit/proto/TextArea_pb2.py +26 -0
  311. streamlit/proto/TextArea_pb2.pyi +97 -0
  312. streamlit/proto/TextInput_pb2.py +28 -0
  313. streamlit/proto/TextInput_pb2.pyi +124 -0
  314. streamlit/proto/Text_pb2.py +25 -0
  315. streamlit/proto/Text_pb2.pyi +53 -0
  316. streamlit/proto/TimeInput_pb2.py +26 -0
  317. streamlit/proto/TimeInput_pb2.pyi +86 -0
  318. streamlit/proto/Toast_pb2.py +25 -0
  319. streamlit/proto/Toast_pb2.pyi +64 -0
  320. streamlit/proto/Transient_pb2.py +26 -0
  321. streamlit/proto/Transient_pb2.pyi +53 -0
  322. streamlit/proto/VegaLiteChart_pb2.py +27 -0
  323. streamlit/proto/VegaLiteChart_pb2.pyi +92 -0
  324. streamlit/proto/Video_pb2.py +30 -0
  325. streamlit/proto/Video_pb2.pyi +129 -0
  326. streamlit/proto/WidgetStates_pb2.py +31 -0
  327. streamlit/proto/WidgetStates_pb2.pyi +157 -0
  328. streamlit/proto/WidthConfig_pb2.py +25 -0
  329. streamlit/proto/WidthConfig_pb2.pyi +61 -0
  330. streamlit/proto/__init__.py +15 -0
  331. streamlit/proto/openmetrics_data_model_pb2.py +58 -0
  332. streamlit/proto/openmetrics_data_model_pb2.pyi +558 -0
  333. streamlit/py.typed +0 -0
  334. streamlit/runtime/__init__.py +50 -0
  335. streamlit/runtime/app_session.py +1302 -0
  336. streamlit/runtime/caching/__init__.py +118 -0
  337. streamlit/runtime/caching/cache_data_api.py +775 -0
  338. streamlit/runtime/caching/cache_errors.py +143 -0
  339. streamlit/runtime/caching/cache_resource_api.py +756 -0
  340. streamlit/runtime/caching/cache_type.py +33 -0
  341. streamlit/runtime/caching/cache_utils.py +601 -0
  342. streamlit/runtime/caching/cached_message_replay.py +290 -0
  343. streamlit/runtime/caching/hashing.py +655 -0
  344. streamlit/runtime/caching/legacy_cache_api.py +170 -0
  345. streamlit/runtime/caching/storage/__init__.py +29 -0
  346. streamlit/runtime/caching/storage/cache_storage_protocol.py +236 -0
  347. streamlit/runtime/caching/storage/dummy_cache_storage.py +60 -0
  348. streamlit/runtime/caching/storage/in_memory_cache_storage_wrapper.py +159 -0
  349. streamlit/runtime/caching/storage/local_disk_cache_storage.py +223 -0
  350. streamlit/runtime/caching/ttl_cleanup_cache.py +85 -0
  351. streamlit/runtime/connection_factory.py +498 -0
  352. streamlit/runtime/context.py +449 -0
  353. streamlit/runtime/context_util.py +49 -0
  354. streamlit/runtime/credentials.py +355 -0
  355. streamlit/runtime/download_data_util.py +53 -0
  356. streamlit/runtime/forward_msg_cache.py +101 -0
  357. streamlit/runtime/forward_msg_queue.py +263 -0
  358. streamlit/runtime/fragment.py +441 -0
  359. streamlit/runtime/media_file_manager.py +409 -0
  360. streamlit/runtime/media_file_storage.py +143 -0
  361. streamlit/runtime/memory_media_file_storage.py +201 -0
  362. streamlit/runtime/memory_session_storage.py +77 -0
  363. streamlit/runtime/memory_uploaded_file_manager.py +149 -0
  364. streamlit/runtime/metrics_util.py +612 -0
  365. streamlit/runtime/pages_manager.py +160 -0
  366. streamlit/runtime/runtime.py +775 -0
  367. streamlit/runtime/runtime_util.py +108 -0
  368. streamlit/runtime/script_data.py +46 -0
  369. streamlit/runtime/scriptrunner/__init__.py +38 -0
  370. streamlit/runtime/scriptrunner/exec_code.py +167 -0
  371. streamlit/runtime/scriptrunner/magic.py +277 -0
  372. streamlit/runtime/scriptrunner/magic_funcs.py +32 -0
  373. streamlit/runtime/scriptrunner/script_cache.py +89 -0
  374. streamlit/runtime/scriptrunner/script_runner.py +805 -0
  375. streamlit/runtime/scriptrunner_utils/__init__.py +19 -0
  376. streamlit/runtime/scriptrunner_utils/exceptions.py +44 -0
  377. streamlit/runtime/scriptrunner_utils/script_requests.py +311 -0
  378. streamlit/runtime/scriptrunner_utils/script_run_context.py +277 -0
  379. streamlit/runtime/secrets.py +533 -0
  380. streamlit/runtime/session_manager.py +430 -0
  381. streamlit/runtime/state/__init__.py +47 -0
  382. streamlit/runtime/state/common.py +256 -0
  383. streamlit/runtime/state/presentation.py +85 -0
  384. streamlit/runtime/state/query_params.py +767 -0
  385. streamlit/runtime/state/query_params_proxy.py +222 -0
  386. streamlit/runtime/state/safe_session_state.py +146 -0
  387. streamlit/runtime/state/session_state.py +1299 -0
  388. streamlit/runtime/state/session_state_proxy.py +153 -0
  389. streamlit/runtime/state/widgets.py +197 -0
  390. streamlit/runtime/stats.py +356 -0
  391. streamlit/runtime/theme_util.py +148 -0
  392. streamlit/runtime/uploaded_file_manager.py +152 -0
  393. streamlit/runtime/websocket_session_manager.py +301 -0
  394. streamlit/source_util.py +97 -0
  395. streamlit/starlette.py +34 -0
  396. streamlit/string_util.py +264 -0
  397. streamlit/temporary_directory.py +67 -0
  398. streamlit/testing/__init__.py +13 -0
  399. streamlit/testing/v1/__init__.py +17 -0
  400. streamlit/testing/v1/app_test.py +1089 -0
  401. streamlit/testing/v1/element_tree.py +2272 -0
  402. streamlit/testing/v1/local_script_runner.py +176 -0
  403. streamlit/testing/v1/util.py +61 -0
  404. streamlit/time_util.py +73 -0
  405. streamlit/type_util.py +480 -0
  406. streamlit/url_util.py +120 -0
  407. streamlit/user_info.py +698 -0
  408. streamlit/util.py +108 -0
  409. streamlit/vendor/__init__.py +0 -0
  410. streamlit/vendor/pympler/__init__.py +0 -0
  411. streamlit/vendor/pympler/asizeof.py +2870 -0
  412. streamlit/version.py +18 -0
  413. streamlit/watcher/__init__.py +28 -0
  414. streamlit/watcher/event_based_path_watcher.py +500 -0
  415. streamlit/watcher/folder_black_list.py +82 -0
  416. streamlit/watcher/local_sources_watcher.py +297 -0
  417. streamlit/watcher/path_watcher.py +244 -0
  418. streamlit/watcher/polling_path_watcher.py +138 -0
  419. streamlit/watcher/util.py +223 -0
  420. streamlit/web/__init__.py +13 -0
  421. streamlit/web/bootstrap.py +463 -0
  422. streamlit/web/cache_storage_manager_config.py +38 -0
  423. streamlit/web/cli.py +465 -0
  424. streamlit/web/server/__init__.py +30 -0
  425. streamlit/web/server/app_discovery.py +422 -0
  426. streamlit/web/server/app_static_file_handler.py +102 -0
  427. streamlit/web/server/authlib_tornado_integration.py +125 -0
  428. streamlit/web/server/bidi_component_request_handler.py +193 -0
  429. streamlit/web/server/browser_websocket_handler.py +341 -0
  430. streamlit/web/server/component_file_utils.py +105 -0
  431. streamlit/web/server/component_request_handler.py +107 -0
  432. streamlit/web/server/media_file_handler.py +148 -0
  433. streamlit/web/server/oauth_authlib_routes.py +314 -0
  434. streamlit/web/server/oidc_mixin.py +138 -0
  435. streamlit/web/server/routes.py +257 -0
  436. streamlit/web/server/server.py +555 -0
  437. streamlit/web/server/server_util.py +235 -0
  438. streamlit/web/server/starlette/__init__.py +23 -0
  439. streamlit/web/server/starlette/starlette_app.py +541 -0
  440. streamlit/web/server/starlette/starlette_app_utils.py +306 -0
  441. streamlit/web/server/starlette/starlette_auth_routes.py +584 -0
  442. streamlit/web/server/starlette/starlette_gzip_middleware.py +121 -0
  443. streamlit/web/server/starlette/starlette_path_security_middleware.py +97 -0
  444. streamlit/web/server/starlette/starlette_routes.py +884 -0
  445. streamlit/web/server/starlette/starlette_server.py +496 -0
  446. streamlit/web/server/starlette/starlette_server_config.py +55 -0
  447. streamlit/web/server/starlette/starlette_static_routes.py +181 -0
  448. streamlit/web/server/starlette/starlette_websocket.py +560 -0
  449. streamlit/web/server/stats_request_handler.py +116 -0
  450. streamlit/web/server/upload_file_request_handler.py +158 -0
  451. streamlit/web/server/websocket_headers.py +56 -0
  452. streamlit_data_editor_plus-0.1.0.dist-info/METADATA +76 -0
  453. streamlit_data_editor_plus-0.1.0.dist-info/RECORD +456 -0
  454. streamlit_data_editor_plus-0.1.0.dist-info/WHEEL +5 -0
  455. streamlit_data_editor_plus-0.1.0.dist-info/entry_points.txt +2 -0
  456. streamlit_data_editor_plus-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,320 @@
1
+ # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2026)
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 Callable
18
+ from functools import wraps
19
+ from typing import TYPE_CHECKING, Any, Literal, TypeVar, cast, overload
20
+
21
+ from streamlit.delta_generator_singletons import (
22
+ get_dg_singleton_instance,
23
+ get_last_dg_added_to_context_stack,
24
+ )
25
+ from streamlit.errors import StreamlitAPIException
26
+ from streamlit.runtime.fragment import _fragment
27
+ from streamlit.runtime.metrics_util import gather_metrics
28
+ from streamlit.type_util import get_object_name
29
+
30
+ if TYPE_CHECKING:
31
+ from streamlit.elements.lib.dialog import DialogWidth
32
+ from streamlit.runtime.state import WidgetCallback
33
+
34
+
35
+ def _assert_no_nested_dialogs() -> None:
36
+ """Check the current stack for existing DeltaGenerator's of type 'dialog'.
37
+ Note that the check like this only works when Dialog is called as a context manager,
38
+ as this populates the dg_stack in delta_generator correctly.
39
+
40
+ This does not detect the edge case in which someone calls, for example,
41
+ `with st.sidebar` inside of a dialog function and opens a dialog in there, as
42
+ `with st.sidebar` pushes the new DeltaGenerator to the stack. In order to check for
43
+ that edge case, we could try to check all DeltaGenerators in the stack, and not only
44
+ the last one. Since we deem this to be an edge case, we lean towards simplicity
45
+ here.
46
+
47
+ Raises
48
+ ------
49
+ StreamlitAPIException
50
+ Raised if the user tries to nest dialogs inside of each other.
51
+ """
52
+ last_dg_in_current_context = get_last_dg_added_to_context_stack()
53
+ if last_dg_in_current_context and "dialog" in set(
54
+ last_dg_in_current_context._ancestor_block_types
55
+ ):
56
+ raise StreamlitAPIException("Dialogs may not be nested inside other dialogs.")
57
+
58
+
59
+ F = TypeVar("F", bound=Callable[..., Any])
60
+
61
+
62
+ def _dialog_decorator(
63
+ non_optional_func: F,
64
+ title: str,
65
+ *,
66
+ width: DialogWidth = "small",
67
+ dismissible: bool = True,
68
+ icon: str | None = None,
69
+ on_dismiss: Literal["ignore", "rerun"] | WidgetCallback = "ignore",
70
+ ) -> F:
71
+ if title is None or title == "":
72
+ raise StreamlitAPIException(
73
+ "A non-empty `title` argument has to be provided for dialogs, for example "
74
+ '`@st.dialog("Example Title")`.'
75
+ )
76
+
77
+ @wraps(non_optional_func)
78
+ def wrap(*args: Any, **kwargs: Any) -> None:
79
+ _assert_no_nested_dialogs()
80
+ # Call the Dialog on the event_dg because it lives outside of the normal
81
+ # Streamlit UI flow. For example, if it is called from the sidebar, it should
82
+ # not inherit the sidebar theming.
83
+ dialog = get_dg_singleton_instance().event_dg._dialog(
84
+ title=title,
85
+ dismissible=dismissible,
86
+ width=width,
87
+ icon=icon,
88
+ on_dismiss=on_dismiss,
89
+ )
90
+ dialog.open()
91
+
92
+ def dialog_content() -> None:
93
+ # if the dialog should be closed, st.rerun() has to be called
94
+ # (same behavior as with st.fragment)
95
+ _ = non_optional_func(*args, **kwargs)
96
+
97
+ # the fragment decorator has multiple return types so that you can pass
98
+ # arguments to it. Here we know the return type, so we cast
99
+ fragmented_dialog_content = cast(
100
+ "Callable[[], None]",
101
+ _fragment(
102
+ dialog_content, additional_hash_info=get_object_name(non_optional_func)
103
+ ),
104
+ )
105
+
106
+ with dialog:
107
+ fragmented_dialog_content()
108
+ return
109
+
110
+ return cast("F", wrap)
111
+
112
+
113
+ @overload
114
+ def dialog_decorator(
115
+ title: str,
116
+ *,
117
+ width: DialogWidth = "small",
118
+ dismissible: bool = True,
119
+ icon: str | None = None,
120
+ on_dismiss: Literal["ignore", "rerun"] | WidgetCallback = "ignore",
121
+ ) -> Callable[[F], F]: ...
122
+
123
+
124
+ # 'title' can be a function since `dialog_decorator` is a decorator.
125
+ # We just call it 'title' here though to make the user-doc more friendly as
126
+ # we want the user to pass a title, not a function. The user is supposed to
127
+ # call it like @st.dialog("my_title") , which makes 'title' a positional arg, hence
128
+ # this 'trick'. The overload is required to have a good type hint for the decorated
129
+ # function args.
130
+ @overload
131
+ def dialog_decorator(
132
+ title: F,
133
+ *,
134
+ width: DialogWidth = "small",
135
+ dismissible: bool = True,
136
+ icon: str | None = None,
137
+ on_dismiss: Literal["ignore", "rerun"] | WidgetCallback = "ignore",
138
+ ) -> F: ...
139
+
140
+
141
+ @gather_metrics("dialog")
142
+ def dialog_decorator(
143
+ title: F | str,
144
+ *,
145
+ width: DialogWidth = "small",
146
+ dismissible: bool = True,
147
+ icon: str | None = None,
148
+ on_dismiss: Literal["ignore", "rerun"] | WidgetCallback = "ignore",
149
+ ) -> F | Callable[[F], F]:
150
+ r"""Function decorator to create a modal dialog.
151
+
152
+ A function decorated with ``@st.dialog`` becomes a dialog
153
+ function. When you call a dialog function, Streamlit inserts a modal dialog
154
+ into your app. Streamlit element commands called within the dialog function
155
+ render inside the modal dialog.
156
+
157
+ The dialog function can accept arguments that can be passed when it is
158
+ called. Any values from the dialog that need to be accessed from the wider
159
+ app should generally be stored in Session State.
160
+
161
+ If a dialog is dismissible, a user can dismiss it by clicking outside of
162
+ it, clicking the "**X**" in its upper-right corner, or pressing ``ESC`` on
163
+ their keyboard. You can configure whether this triggers a rerun of the app
164
+ by setting the ``on_dismiss`` parameter.
165
+
166
+ If a dialog is not dismissible, it must be closed programmatically by
167
+ calling ``st.rerun()`` inside the dialog function. This is useful when you
168
+ want to ensure that the dialog is always closed programmatically, such as
169
+ when the dialog contains a form that must be submitted before closing.
170
+
171
+ ``st.dialog`` inherits behavior from |st.fragment|_.
172
+ When a user interacts with an input widget created inside a dialog function,
173
+ Streamlit only reruns the dialog function instead of the full script.
174
+
175
+ Calling ``st.sidebar`` in a dialog function is not supported.
176
+
177
+ Dialog code can interact with Session State, imported modules, and other
178
+ Streamlit elements created outside the dialog. Note that these interactions
179
+ are additive across multiple dialog reruns. You are responsible for
180
+ handling any side effects of that behavior.
181
+
182
+ .. warning::
183
+ Only one dialog function may be called in a script run, which means
184
+ that only one dialog can be open at any given time.
185
+
186
+ .. |st.fragment| replace:: ``st.fragment``
187
+ .. _st.fragment: https://docs.streamlit.io/develop/api-reference/execution-flow/st.fragment
188
+
189
+ Parameters
190
+ ----------
191
+ title : str
192
+ The title to display at the top of the modal dialog. It cannot be empty.
193
+
194
+ The title can optionally contain GitHub-flavored Markdown of the
195
+ following types: Bold, Italics, Strikethroughs, Inline Code, Links,
196
+ and Images. Images display like icons, with a max height equal to
197
+ the font height.
198
+
199
+ Unsupported Markdown elements are unwrapped so only their children
200
+ (text contents) render. Display unsupported elements as literal
201
+ characters by backslash-escaping them. E.g.,
202
+ ``"1\. Not an ordered list"``.
203
+
204
+ See the ``body`` parameter of |st.markdown|_ for additional,
205
+ supported Markdown directives.
206
+
207
+ .. |st.markdown| replace:: ``st.markdown``
208
+ .. _st.markdown: https://docs.streamlit.io/develop/api-reference/text/st.markdown
209
+
210
+ width : "small", "medium", "large"
211
+ The width of the modal dialog. This can be one of the following:
212
+
213
+ - ``"small"`` (default): The modal dialog will be a maximum of 500
214
+ pixels wide.
215
+ - ``"medium"``: The modal dialog will be up to 750 pixels wide.
216
+ - ``"large"``: The modal dialog will be up to 1280 pixels wide.
217
+
218
+ dismissible : bool
219
+ Whether the modal dialog can be dismissed by the user. If this is
220
+ ``True`` (default), the user can dismiss the dialog by clicking
221
+ outside of it, clicking the "**X**" in its upper-right corner, or
222
+ pressing ``ESC`` on their keyboard. If this is ``False``, the "**X**"
223
+ in the upper-right corner is hidden and the dialog must be closed
224
+ programmatically by calling ``st.rerun()`` inside the dialog function.
225
+
226
+ .. note::
227
+ Setting ``dismissible`` to ``False`` does not guarantee that all
228
+ interactions in the main app are blocked. Don't rely on
229
+ ``dismissible`` for security-critical checks.
230
+
231
+ icon : str or None
232
+ An optional emoji or icon to display next to the dialog title. If ``icon``
233
+ is ``None`` (default), no icon is displayed. If ``icon`` is a
234
+ string, the following options are valid:
235
+
236
+ - A single-character emoji. For example, you can set ``icon="🚨"``
237
+ or ``icon="🔥"``. Emoji short codes are not supported.
238
+
239
+ - An icon from the Material Symbols library (rounded style) in the
240
+ format ``":material/icon_name:"`` where "icon_name" is the name
241
+ of the icon in snake case.
242
+
243
+ For example, ``icon=":material/thumb_up:"`` will display the
244
+ Thumb Up icon. Find additional icons in the `Material Symbols \
245
+ <https://fonts.google.com/icons?icon.set=Material+Symbols&icon.style=Rounded>`_
246
+ font library.
247
+
248
+ - ``"spinner"``: Displays a spinner as an icon.
249
+
250
+ on_dismiss : "ignore", "rerun", or callable
251
+ How the dialog should respond to dismissal events.
252
+ This can be one of the following:
253
+
254
+ - ``"ignore"`` (default): Streamlit will not rerun the app when the
255
+ user dismisses the dialog.
256
+
257
+ - ``"rerun"``: Streamlit will rerun the app when the user dismisses
258
+ the dialog.
259
+
260
+ - A ``callable``: Streamlit will rerun the app when the user dismisses
261
+ the dialog and execute the ``callable`` as a callback function
262
+ before the rest of the app.
263
+
264
+ Examples
265
+ --------
266
+ The following example demonstrates the basic usage of ``@st.dialog``.
267
+ In this app, clicking "**A**" or "**B**" will open a modal dialog and prompt you
268
+ to enter a reason for your vote. In the modal dialog, click "**Submit**" to record
269
+ your vote into Session State and rerun the app. This will close the modal dialog
270
+ since the dialog function is not called during the full-script rerun.
271
+
272
+ >>> import streamlit as st
273
+ >>>
274
+ >>> @st.dialog("Cast your vote")
275
+ >>> def vote(item):
276
+ >>> st.write(f"Why is {item} your favorite?")
277
+ >>> reason = st.text_input("Because...")
278
+ >>> if st.button("Submit"):
279
+ >>> st.session_state.vote = {"item": item, "reason": reason}
280
+ >>> st.rerun()
281
+ >>>
282
+ >>> if "vote" not in st.session_state:
283
+ >>> st.write("Vote for your favorite")
284
+ >>> if st.button("A"):
285
+ >>> vote("A")
286
+ >>> if st.button("B"):
287
+ >>> vote("B")
288
+ >>> else:
289
+ >>> f"You voted for {st.session_state.vote['item']} because {st.session_state.vote['reason']}"
290
+
291
+ .. output::
292
+ https://doc-modal-dialog.streamlit.app/
293
+ height: 350px
294
+
295
+ """
296
+
297
+ func_or_title = title
298
+ if isinstance(func_or_title, str):
299
+ # Support passing the params via function decorator
300
+ def wrapper(f: F) -> F:
301
+ return _dialog_decorator(
302
+ non_optional_func=f,
303
+ title=func_or_title,
304
+ width=width,
305
+ dismissible=dismissible,
306
+ icon=icon,
307
+ on_dismiss=on_dismiss,
308
+ )
309
+
310
+ return wrapper
311
+
312
+ func: F = func_or_title
313
+ return _dialog_decorator(
314
+ func,
315
+ "",
316
+ width=width,
317
+ dismissible=dismissible,
318
+ icon=icon,
319
+ on_dismiss=on_dismiss,
320
+ )
@@ -0,0 +1,130 @@
1
+ # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2026)
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ from __future__ import annotations
16
+
17
+ from typing import TYPE_CHECKING, cast
18
+
19
+ from streamlit.proto.Empty_pb2 import Empty as EmptyProto
20
+ from streamlit.proto.Skeleton_pb2 import Skeleton as SkeletonProto
21
+ from streamlit.runtime.metrics_util import gather_metrics
22
+
23
+ if TYPE_CHECKING:
24
+ from streamlit.delta_generator import DeltaGenerator
25
+
26
+
27
+ class EmptyMixin:
28
+ @gather_metrics("empty")
29
+ def empty(self) -> DeltaGenerator:
30
+ """Insert a single-element container.
31
+
32
+ Inserts a container into your app that can be used to hold a single element.
33
+ This allows you to, for example, remove elements at any point, or replace
34
+ several elements at once (using a child multi-element container).
35
+
36
+ To insert/replace/clear an element on the returned container, you can
37
+ use ``with`` notation or just call methods directly on the returned object.
38
+ See examples below.
39
+
40
+ Examples
41
+ --------
42
+ Inside a ``with st.empty():`` block, each displayed element will
43
+ replace the previous one.
44
+
45
+ >>> import streamlit as st
46
+ >>> import time
47
+ >>>
48
+ >>> with st.empty():
49
+ ... for seconds in range(10):
50
+ ... st.write(f"⏳ {seconds} seconds have passed")
51
+ ... time.sleep(1)
52
+ ... st.write(":material/check: 10 seconds over!")
53
+ ... st.button("Rerun")
54
+
55
+ .. output::
56
+ https://doc-empty.streamlit.app/
57
+ height: 220px
58
+
59
+ You can use an ``st.empty`` to replace multiple elements in
60
+ succession. Use ``st.container`` inside ``st.empty`` to display (and
61
+ later replace) a group of elements.
62
+
63
+ >>> import streamlit as st
64
+ >>> import time
65
+ >>>
66
+ >>> st.button("Start over")
67
+ >>>
68
+ >>> placeholder = st.empty()
69
+ >>> placeholder.markdown("Hello")
70
+ >>> time.sleep(1)
71
+ >>>
72
+ >>> placeholder.progress(0, "Wait for it...")
73
+ >>> time.sleep(1)
74
+ >>> placeholder.progress(50, "Wait for it...")
75
+ >>> time.sleep(1)
76
+ >>> placeholder.progress(100, "Wait for it...")
77
+ >>> time.sleep(1)
78
+ >>>
79
+ >>> with placeholder.container():
80
+ ... st.line_chart({"data": [1, 5, 2, 6]})
81
+ ... time.sleep(1)
82
+ ... st.markdown("3...")
83
+ ... time.sleep(1)
84
+ ... st.markdown("2...")
85
+ ... time.sleep(1)
86
+ ... st.markdown("1...")
87
+ ... time.sleep(1)
88
+ >>>
89
+ >>> placeholder.markdown("Poof!")
90
+ >>> time.sleep(1)
91
+ >>>
92
+ >>> placeholder.empty()
93
+
94
+ .. output::
95
+ https://doc-empty-placeholder.streamlit.app/
96
+ height: 600px
97
+
98
+ """
99
+ empty_proto = EmptyProto()
100
+ return self.dg._enqueue("empty", empty_proto)
101
+
102
+ @gather_metrics("_skeleton")
103
+ def _skeleton(self, *, height: int | None = None) -> DeltaGenerator:
104
+ """Insert a single-element container which displays a "skeleton" placeholder.
105
+
106
+ Inserts a container into your app that can be used to hold a single element.
107
+ This allows you to, for example, remove elements at any point, or replace
108
+ several elements at once (using a child multi-element container).
109
+
110
+ To insert/replace/clear an element on the returned container, you can
111
+ use ``with`` notation or just call methods directly on the returned object.
112
+ See some of the examples below.
113
+
114
+ This is an internal method and should not be used directly.
115
+
116
+ Parameters
117
+ ----------
118
+ height: int or None
119
+ Desired height of the skeleton expressed in pixels. If None, a
120
+ default height is used.
121
+ """
122
+ skeleton_proto = SkeletonProto()
123
+ if height:
124
+ skeleton_proto.height = height
125
+ return self.dg._enqueue("skeleton", skeleton_proto)
126
+
127
+ @property
128
+ def dg(self) -> DeltaGenerator:
129
+ """Get our DeltaGenerator."""
130
+ return cast("DeltaGenerator", self)