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,158 @@
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
+ import os
18
+ from abc import ABC, abstractmethod
19
+ from typing import TYPE_CHECKING, Any
20
+
21
+ from streamlit import util
22
+ from streamlit.errors import StreamlitAPIException
23
+
24
+ if TYPE_CHECKING:
25
+ from streamlit.runtime.state.common import WidgetCallback
26
+
27
+
28
+ class MarshallComponentException(StreamlitAPIException):
29
+ """Class for exceptions generated during custom component marshalling."""
30
+
31
+
32
+ class BaseCustomComponent(ABC):
33
+ """Interface for CustomComponents."""
34
+
35
+ def __init__(
36
+ self,
37
+ name: str,
38
+ path: str | None = None,
39
+ url: str | None = None,
40
+ module_name: str | None = None,
41
+ ) -> None:
42
+ if path is None and url is None:
43
+ raise StreamlitAPIException("Either 'path' or 'url' must be set.")
44
+
45
+ self._name = name
46
+ self._path = path
47
+ self._url = url
48
+ self._module_name = module_name
49
+
50
+ def __repr__(self) -> str:
51
+ return util.repr_(self)
52
+
53
+ def __call__(
54
+ self,
55
+ *args: Any,
56
+ default: Any = None,
57
+ key: str | None = None,
58
+ on_change: WidgetCallback | None = None,
59
+ tab_index: int | None = None,
60
+ **kwargs: Any,
61
+ ) -> Any:
62
+ """An alias for create_instance."""
63
+ return self.create_instance(
64
+ *args,
65
+ default=default,
66
+ key=key,
67
+ on_change=on_change,
68
+ tab_index=tab_index,
69
+ **kwargs,
70
+ )
71
+
72
+ @property
73
+ def abspath(self) -> str | None:
74
+ if self._path is None:
75
+ return None
76
+ return os.path.abspath(self._path)
77
+
78
+ @property
79
+ def module_name(self) -> str | None:
80
+ return self._module_name
81
+
82
+ @property
83
+ def name(self) -> str:
84
+ return self._name
85
+
86
+ @property
87
+ def path(self) -> str | None:
88
+ return self._path
89
+
90
+ @property
91
+ def url(self) -> str | None:
92
+ return self._url
93
+
94
+ def __str__(self) -> str:
95
+ return f"'{self.name}': {self.path if self.path is not None else self.url}"
96
+
97
+ def __hash__(self) -> int:
98
+ return hash((self.name, self.path, self.url, self.module_name))
99
+
100
+ @abstractmethod
101
+ def __eq__(self, other: object) -> bool:
102
+ """Equality operator."""
103
+ return NotImplemented
104
+
105
+ @abstractmethod
106
+ def __ne__(self, other: object) -> bool:
107
+ """Inequality operator."""
108
+ return NotImplemented
109
+
110
+ @abstractmethod
111
+ def create_instance(
112
+ self,
113
+ *args: Any,
114
+ default: Any = None,
115
+ key: str | None = None,
116
+ on_change: WidgetCallback | None = None,
117
+ tab_index: int | None = None,
118
+ **kwargs: Any,
119
+ ) -> Any:
120
+ """Create a new instance of the component.
121
+
122
+ Parameters
123
+ ----------
124
+ *args
125
+ Must be empty; all args must be named. (This parameter exists to
126
+ enforce correct use of the function.)
127
+ default: any or None
128
+ The default return value for the component. This is returned when
129
+ the component's frontend hasn't yet specified a value with
130
+ `setComponentValue`.
131
+ key: str or None
132
+ If not None, this is the user key we use to generate the
133
+ component's "widget ID".
134
+ on_change: WidgetCallback or None
135
+ An optional callback invoked when the widget's value changes. No arguments are passed to it.
136
+ tab_index: int or None
137
+ Specifies the tab order of the iframe containing the component.
138
+ Possible values are:
139
+ - ``None`` (default): Browser default behavior.
140
+ - ``-1``: Removes the iframe from the natural tab order, but it can still be focused programmatically.
141
+ - ``0`` or positive integer: Includes the iframe in the natural tab order.
142
+ **kwargs
143
+ Keyword args to pass to the component.
144
+
145
+ Raises
146
+ ------
147
+ MarshallComponentException
148
+ Raised when args is not empty or component cannot be marshalled.
149
+ StreamlitAPIException
150
+ Raised when PyArrow is not installed.
151
+
152
+ Returns
153
+ -------
154
+ any or None
155
+ The component's widget value.
156
+
157
+ """
158
+ raise NotImplementedError
@@ -0,0 +1,29 @@
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
+ """Contains the files and modules for the exposed API."""
16
+
17
+ import streamlit
18
+ from streamlit.components.v1.component_registry import declare_component
19
+
20
+ # `html` and `iframe` are part of Custom Components, so they appear in this
21
+ # `streamlit.components.v1` namespace.
22
+ html = streamlit._main._html
23
+ iframe = streamlit._main._iframe
24
+
25
+ __all__ = [
26
+ "declare_component",
27
+ "html",
28
+ "iframe",
29
+ ]
@@ -0,0 +1,141 @@
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
+ """Data marshalling utilities for ArrowTable protobufs, which are used by
16
+ CustomComponent for dataframe serialization.
17
+ """
18
+
19
+ from __future__ import annotations
20
+
21
+ from typing import TYPE_CHECKING, Any
22
+
23
+ from streamlit import dataframe_util
24
+ from streamlit.elements.lib import pandas_styler_utils
25
+
26
+ if TYPE_CHECKING:
27
+ from pandas import DataFrame, Index
28
+
29
+ from streamlit.proto.Components_pb2 import ArrowTable as ArrowTableProto
30
+
31
+
32
+ def _maybe_tuple_to_list(item: Any) -> Any:
33
+ """Convert a tuple to a list. Leave as is if it's not a tuple."""
34
+ return list(item) if isinstance(item, tuple) else item
35
+
36
+
37
+ def marshall(
38
+ proto: ArrowTableProto, data: Any, default_uuid: str | None = None
39
+ ) -> None:
40
+ """Marshall data into an ArrowTable proto.
41
+
42
+ Parameters
43
+ ----------
44
+ proto : proto.ArrowTable
45
+ Output. The protobuf for a Streamlit ArrowTable proto.
46
+
47
+ data : pandas.DataFrame, pandas.Styler, numpy.ndarray, Iterable, dict, or None
48
+ Something that is or can be converted to a dataframe.
49
+
50
+ """
51
+ if dataframe_util.is_pandas_styler(data):
52
+ pandas_styler_utils.marshall_styler(proto, data, default_uuid) # type: ignore
53
+
54
+ df = dataframe_util.convert_anything_to_pandas_df(data)
55
+ _marshall_index(proto, df.index)
56
+ _marshall_columns(proto, df.columns)
57
+ _marshall_data(proto, df)
58
+
59
+
60
+ def _marshall_index(proto: ArrowTableProto, index: Index[Any]) -> None:
61
+ """Marshall pandas.DataFrame index into an ArrowTable proto.
62
+
63
+ Parameters
64
+ ----------
65
+ proto : proto.ArrowTable
66
+ Output. The protobuf for a Streamlit ArrowTable proto.
67
+
68
+ index : pd.Index
69
+ Index to use for resulting frame.
70
+ Will default to RangeIndex (0, 1, 2, ..., n) if no index is provided.
71
+
72
+ """
73
+ import pandas as pd
74
+
75
+ index_values = list(map(_maybe_tuple_to_list, index.values))
76
+ index_df = pd.DataFrame(index_values)
77
+ proto.index = dataframe_util.convert_pandas_df_to_arrow_bytes(index_df)
78
+
79
+
80
+ def _marshall_columns(proto: ArrowTableProto, columns: Index[Any]) -> None:
81
+ """Marshall pandas.DataFrame columns into an ArrowTable proto.
82
+
83
+ Parameters
84
+ ----------
85
+ proto : proto.ArrowTable
86
+ Output. The protobuf for a Streamlit ArrowTable proto.
87
+
88
+ columns : Index
89
+ Column labels to use for resulting frame.
90
+ Will default to RangeIndex (0, 1, 2, ..., n) if no column labels are provided.
91
+
92
+ """
93
+ import pandas as pd
94
+
95
+ column_values = list(map(_maybe_tuple_to_list, columns.values))
96
+ columns_df = pd.DataFrame(column_values)
97
+ proto.columns = dataframe_util.convert_pandas_df_to_arrow_bytes(columns_df)
98
+
99
+
100
+ def _marshall_data(proto: ArrowTableProto, df: DataFrame) -> None:
101
+ """Marshall pandas.DataFrame data into an ArrowTable proto.
102
+
103
+ Parameters
104
+ ----------
105
+ proto : proto.ArrowTable
106
+ Output. The protobuf for a Streamlit ArrowTable proto.
107
+
108
+ df : pandas.DataFrame
109
+ A dataframe to marshall.
110
+
111
+ """
112
+ proto.data = dataframe_util.convert_pandas_df_to_arrow_bytes(df)
113
+
114
+
115
+ def arrow_proto_to_dataframe(proto: ArrowTableProto) -> DataFrame:
116
+ """Convert ArrowTable proto to pandas.DataFrame.
117
+
118
+ Parameters
119
+ ----------
120
+ proto : proto.ArrowTable
121
+ Output. pandas.DataFrame
122
+
123
+ """
124
+
125
+ if dataframe_util.is_pyarrow_version_less_than("14.0.1"):
126
+ raise RuntimeError(
127
+ "The installed pyarrow version is not compatible with this component. "
128
+ "Please upgrade to 14.0.1 or higher: pip install -U pyarrow"
129
+ )
130
+
131
+ import pandas as pd
132
+
133
+ data = dataframe_util.convert_arrow_bytes_to_pandas_df(proto.data)
134
+ index = dataframe_util.convert_arrow_bytes_to_pandas_df(proto.index)
135
+ columns = dataframe_util.convert_arrow_bytes_to_pandas_df(proto.columns)
136
+
137
+ return pd.DataFrame(
138
+ data.to_numpy(),
139
+ index=index.to_numpy().T.tolist(),
140
+ columns=columns.to_numpy().T.tolist(),
141
+ )
@@ -0,0 +1,147 @@
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
+ import inspect
18
+ import os
19
+ from pathlib import Path
20
+ from typing import TYPE_CHECKING
21
+
22
+ from streamlit import config
23
+ from streamlit.components.v1.custom_component import CustomComponent
24
+ from streamlit.runtime import get_instance
25
+ from streamlit.runtime.scriptrunner_utils.script_run_context import get_script_run_ctx
26
+
27
+ if TYPE_CHECKING:
28
+ from types import FrameType
29
+
30
+ from streamlit.components.types.base_component_registry import BaseComponentRegistry
31
+
32
+
33
+ def _get_module_name(caller_frame: FrameType) -> str:
34
+ # Get the caller's module name. `__name__` gives us the module's
35
+ # fully-qualified name, which includes its package.
36
+ module = inspect.getmodule(caller_frame)
37
+ if module is None:
38
+ raise RuntimeError("module is None. This should never happen.")
39
+ module_name = module.__name__
40
+
41
+ # If the caller was the main module that was executed (that is, if the
42
+ # user executed `python my_component.py`), then this name will be
43
+ # "__main__" instead of the actual package name. In this case, we use
44
+ # the main module's filename, sans `.py` extension, as the component name.
45
+ if module_name == "__main__":
46
+ file_path = inspect.getfile(caller_frame)
47
+ filename = os.path.basename(file_path)
48
+ module_name, _ = os.path.splitext(filename)
49
+
50
+ return module_name
51
+
52
+
53
+ def declare_component(
54
+ name: str,
55
+ path: str | Path | None = None,
56
+ url: str | None = None,
57
+ ) -> CustomComponent:
58
+ """Create a custom component and register it if there is a ``ScriptRunContext``.
59
+
60
+ The component is not registered when there is no ``ScriptRunContext``.
61
+ This can happen when a ``CustomComponent`` is executed as standalone
62
+ command (e.g. for testing).
63
+
64
+ To use this function, import it from the ``streamlit.components.v1``
65
+ module.
66
+
67
+ .. warning::
68
+ Using ``st.components.v1.declare_component`` directly (instead of
69
+ importing its module) is deprecated and will be disallowed in a later
70
+ version.
71
+
72
+ Parameters
73
+ ----------
74
+ name : str
75
+ A short, descriptive name for the component, like "slider".
76
+
77
+ path: str, Path, or None
78
+ The path to serve the component's frontend files from. The path should
79
+ be absolute. If ``path`` is ``None`` (default), Streamlit will serve
80
+ the component from the location in ``url``. Either ``path`` or ``url``
81
+ must be specified. If both are specified, then ``url`` will take
82
+ precedence.
83
+
84
+ url: str or None
85
+ The URL that the component is served from. If ``url`` is ``None``
86
+ (default), Streamlit will serve the component from the location in
87
+ ``path``. Either ``path`` or ``url`` must be specified. If both are
88
+ specified, then ``url`` will take precedence.
89
+
90
+
91
+ Returns
92
+ -------
93
+ CustomComponent
94
+ A ``CustomComponent`` that can be called like a function.
95
+ Calling the component will create a new instance of the component
96
+ in the Streamlit app.
97
+
98
+ """
99
+ if path is not None and isinstance(path, Path):
100
+ path = str(path)
101
+
102
+ # Get our stack frame.
103
+ current_frame: FrameType | None = inspect.currentframe()
104
+ if current_frame is None:
105
+ raise RuntimeError("current_frame is None. This should never happen.")
106
+ # Get the stack frame of our calling function.
107
+ caller_frame = current_frame.f_back
108
+ if caller_frame is None:
109
+ raise RuntimeError("caller_frame is None. This should never happen.")
110
+
111
+ module_name = _get_module_name(caller_frame)
112
+
113
+ # Build the component name.
114
+ component_name = f"{module_name}.{name}"
115
+
116
+ # NOTE: We intentionally don't mention this behavior in this function's
117
+ # docstring as we're only using it internally for now (the config option
118
+ # is also hidden). This should be properly documented if/when we do decide
119
+ # to expose it more publicly.
120
+ if not url and (
121
+ component_base_path := config.get_option("server.customComponentBaseUrlPath")
122
+ ):
123
+ url = f"{component_base_path}/{component_name}/" # ty: ignore[possibly-unresolved-reference]
124
+
125
+ # Create our component object, and register it.
126
+ component = CustomComponent(
127
+ name=component_name, path=path, url=url, module_name=module_name
128
+ )
129
+ # the ctx can be None if a custom component script is run outside of Streamlit, e.g. via 'python ...'
130
+ ctx = get_script_run_ctx()
131
+ if ctx is not None:
132
+ get_instance().component_registry.register_component(component)
133
+ return component
134
+
135
+
136
+ # Keep for backwards-compatibility for now as we don't know whether existing custom
137
+ # components use this method. We made significant refactors to the custom component
138
+ # registry code in https://github.com/streamlit/streamlit/pull/8193 and after
139
+ # that is out in the wild, we can follow-up with more refactorings, e.g. remove
140
+ # the following class and method. When we do that, we should conduct some testing with
141
+ # popular custom components.
142
+ class ComponentRegistry:
143
+ @classmethod
144
+ def instance(cls) -> BaseComponentRegistry:
145
+ """Returns the ComponentRegistry of the runtime instance."""
146
+
147
+ return get_instance().component_registry
@@ -0,0 +1,38 @@
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
+ # The components.py file exists because existing custom components have started
16
+ # to rely on internals of the components package. For example, streamlit-option-menu accesses
17
+ # [register_widget](https://github.com/victoryhb/streamlit-option-menu/blob/master/streamlit_option_menu/streamlit_callback.py#L28),
18
+ # which is only a transitive import through `streamlit.components.v1.custom_component`.
19
+ # Since we do not know what other internals are used out in the wild, let's try to
20
+ # model the old behavior and not to break things.
21
+
22
+ # This should be cleaned up in the future, e.g. as part of components v2.
23
+
24
+ from streamlit.components.v1.component_registry import (
25
+ declare_component,
26
+ )
27
+ from streamlit.components.v1.custom_component import (
28
+ CustomComponent,
29
+ MarshallComponentException,
30
+ )
31
+ from streamlit.runtime.state import register_widget
32
+
33
+ __all__ = [
34
+ "CustomComponent",
35
+ "MarshallComponentException",
36
+ "declare_component",
37
+ "register_widget",
38
+ ]