streamlit-nightly 1.53.2.dev20260127__py3-none-any.whl → 1.53.2.dev20260131__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 (225) hide show
  1. streamlit/config.py +14 -2
  2. streamlit/config_util.py +63 -8
  3. streamlit/elements/deck_gl_json_chart.py +5 -1
  4. streamlit/elements/lib/built_in_chart_utils.py +24 -4
  5. streamlit/elements/lib/color_util.py +20 -1
  6. streamlit/elements/vega_charts.py +24 -4
  7. streamlit/proto/Alert_pb2.py +2 -3
  8. streamlit/proto/AppPage_pb2.py +2 -3
  9. streamlit/proto/ArrowData_pb2.py +2 -3
  10. streamlit/proto/ArrowNamedDataSet_pb2.py +2 -3
  11. streamlit/proto/ArrowVegaLiteChart_pb2.py +2 -3
  12. streamlit/proto/Arrow_pb2.py +11 -18
  13. streamlit/proto/Arrow_pb2.pyi +1 -42
  14. streamlit/proto/AudioInput_pb2.py +2 -3
  15. streamlit/proto/Audio_pb2.py +2 -3
  16. streamlit/proto/AuthRedirect_pb2.py +2 -3
  17. streamlit/proto/AutoRerun_pb2.py +2 -3
  18. streamlit/proto/BackMsg_pb2.py +2 -3
  19. streamlit/proto/Balloons_pb2.py +2 -3
  20. streamlit/proto/BidiComponent_pb2.py +2 -3
  21. streamlit/proto/Block_pb2.py +36 -43
  22. streamlit/proto/Block_pb2.pyi +3 -48
  23. streamlit/proto/BokehChart_pb2.py +2 -3
  24. streamlit/proto/ButtonGroup_pb2.py +2 -3
  25. streamlit/proto/ButtonLikeIconPosition_pb2.py +2 -3
  26. streamlit/proto/Button_pb2.py +3 -6
  27. streamlit/proto/Button_pb2.pyi +1 -18
  28. streamlit/proto/CameraInput_pb2.py +2 -3
  29. streamlit/proto/ChatInput_pb2.py +5 -8
  30. streamlit/proto/ChatInput_pb2.pyi +1 -17
  31. streamlit/proto/Checkbox_pb2.py +2 -3
  32. streamlit/proto/ClientState_pb2.py +2 -3
  33. streamlit/proto/Code_pb2.py +3 -6
  34. streamlit/proto/Code_pb2.pyi +1 -18
  35. streamlit/proto/ColorPicker_pb2.py +2 -3
  36. streamlit/proto/Common_pb2.py +7 -8
  37. streamlit/proto/Common_pb2.pyi +2 -10
  38. streamlit/proto/Components_pb2.py +2 -3
  39. streamlit/proto/DateInput_pb2.py +2 -3
  40. streamlit/proto/DateTimeInput_pb2.py +2 -3
  41. streamlit/proto/DeckGlJsonChart_pb2.py +5 -12
  42. streamlit/proto/DeckGlJsonChart_pb2.pyi +1 -54
  43. streamlit/proto/Delta_pb2.py +4 -6
  44. streamlit/proto/Delta_pb2.pyi +5 -14
  45. streamlit/proto/DocString_pb2.py +2 -3
  46. streamlit/proto/DownloadButton_pb2.py +2 -3
  47. streamlit/proto/Element_pb2.py +4 -7
  48. streamlit/proto/Element_pb2.pyi +3 -23
  49. streamlit/proto/Empty_pb2.py +2 -3
  50. streamlit/proto/Exception_pb2.py +2 -3
  51. streamlit/proto/Favicon_pb2.py +2 -3
  52. streamlit/proto/FileUploader_pb2.py +2 -3
  53. streamlit/proto/ForwardMsg_pb2.py +12 -18
  54. streamlit/proto/ForwardMsg_pb2.pyi +4 -48
  55. streamlit/proto/GapSize_pb2.py +2 -3
  56. streamlit/proto/GitInfo_pb2.py +2 -3
  57. streamlit/proto/GraphVizChart_pb2.py +3 -6
  58. streamlit/proto/GraphVizChart_pb2.pyi +1 -18
  59. streamlit/proto/Heading_pb2.py +2 -3
  60. streamlit/proto/HeightConfig_pb2.py +2 -3
  61. streamlit/proto/Html_pb2.py +2 -3
  62. streamlit/proto/IFrame_pb2.py +3 -10
  63. streamlit/proto/IFrame_pb2.pyi +1 -42
  64. streamlit/proto/Image_pb2.py +3 -6
  65. streamlit/proto/Image_pb2.pyi +1 -18
  66. streamlit/proto/Json_pb2.py +2 -3
  67. streamlit/proto/LabelVisibilityMessage_pb2.py +2 -3
  68. streamlit/proto/LinkButton_pb2.py +2 -3
  69. streamlit/proto/Logo_pb2.py +2 -3
  70. streamlit/proto/Markdown_pb2.py +2 -3
  71. streamlit/proto/Metric_pb2.py +2 -3
  72. streamlit/proto/MetricsEvent_pb2.py +2 -3
  73. streamlit/proto/MultiSelect_pb2.py +3 -6
  74. streamlit/proto/MultiSelect_pb2.pyi +1 -11
  75. streamlit/proto/Navigation_pb2.py +2 -3
  76. streamlit/proto/NewSession_pb2.py +27 -26
  77. streamlit/proto/NewSession_pb2.pyi +24 -12
  78. streamlit/proto/NumberInput_pb2.py +2 -3
  79. streamlit/proto/PageConfig_pb2.py +2 -3
  80. streamlit/proto/PageInfo_pb2.py +2 -3
  81. streamlit/proto/PageLink_pb2.py +2 -3
  82. streamlit/proto/PageNotFound_pb2.py +2 -3
  83. streamlit/proto/PageProfile_pb2.py +2 -3
  84. streamlit/proto/ParentMessage_pb2.py +2 -3
  85. streamlit/proto/PlotlyChart_pb2.py +5 -10
  86. streamlit/proto/PlotlyChart_pb2.pyi +1 -58
  87. streamlit/proto/Progress_pb2.py +2 -3
  88. streamlit/proto/Radio_pb2.py +3 -6
  89. streamlit/proto/Radio_pb2.pyi +2 -19
  90. streamlit/proto/RootContainer_pb2.py +2 -3
  91. streamlit/proto/Selectbox_pb2.py +3 -6
  92. streamlit/proto/Selectbox_pb2.pyi +2 -19
  93. streamlit/proto/SessionEvent_pb2.py +2 -3
  94. streamlit/proto/SessionStatus_pb2.py +2 -3
  95. streamlit/proto/Skeleton_pb2.py +2 -3
  96. streamlit/proto/Slider_pb2.py +2 -3
  97. streamlit/proto/Snow_pb2.py +2 -3
  98. streamlit/proto/Space_pb2.py +2 -3
  99. streamlit/proto/Spinner_pb2.py +2 -3
  100. streamlit/proto/TextAlignmentConfig_pb2.py +2 -3
  101. streamlit/proto/TextArea_pb2.py +3 -6
  102. streamlit/proto/TextArea_pb2.pyi +1 -18
  103. streamlit/proto/TextInput_pb2.py +2 -3
  104. streamlit/proto/Text_pb2.py +2 -3
  105. streamlit/proto/TimeInput_pb2.py +2 -3
  106. streamlit/proto/Toast_pb2.py +2 -3
  107. streamlit/proto/Transient_pb2.py +2 -3
  108. streamlit/proto/Video_pb2.py +2 -3
  109. streamlit/proto/WidgetStates_pb2.py +2 -3
  110. streamlit/proto/WidthConfig_pb2.py +2 -3
  111. streamlit/proto/openmetrics_data_model_pb2.py +2 -3
  112. streamlit/runtime/app_session.py +19 -0
  113. streamlit/runtime/runtime.py +0 -4
  114. streamlit/static/index.html +1 -1
  115. streamlit/static/manifest.json +296 -296
  116. streamlit/static/static/js/{ErrorOutline.esm.DiaGWPsE.js → ErrorOutline.esm.DC6KVDKK.js} +1 -1
  117. streamlit/static/static/js/{FileDownload.esm.D-Qgpk5d.js → FileDownload.esm.Z9hRQIHi.js} +1 -1
  118. streamlit/static/static/js/{FileHelper.DmtDDGp0.js → FileHelper.DqvW90pm.js} +1 -1
  119. streamlit/static/static/js/{FormClearHelper.BM3uDLnU.js → FormClearHelper.DTFnX0js.js} +1 -1
  120. streamlit/static/static/js/{InputInstructions.B2YZ5Lle.js → InputInstructions.CdzsN_Va.js} +1 -1
  121. streamlit/static/static/js/{Particles.BzfZrl-0.js → Particles.12xFSjcn.js} +1 -1
  122. streamlit/static/static/js/{ProgressBar.DWErD3j3.js → ProgressBar.Dg-oMbWg.js} +1 -1
  123. streamlit/static/static/js/{StreamlitSyntaxHighlighter.DB31rUPf.js → StreamlitSyntaxHighlighter.rbzmcipw.js} +1 -1
  124. streamlit/static/static/js/{TableChart.esm.D3oUYYYd.js → TableChart.esm.CzJtGIR-.js} +1 -1
  125. streamlit/static/static/js/{Toolbar.CPyjMABY.js → Toolbar.COH7NaOE.js} +1 -1
  126. streamlit/static/static/js/{WidgetLabelHelpIconInline.C1NBCx-y.js → WidgetLabelHelpIconInline.Dlc8f0Ji.js} +1 -1
  127. streamlit/static/static/js/{base-input.C_CrNgNd.js → base-input.Q-zJLgRK.js} +4 -4
  128. streamlit/static/static/js/{checkbox.S6O8DPFl.js → checkbox.BKgWNdeI.js} +1 -1
  129. streamlit/static/static/js/{createDownloadLinkElement.B-5tIJBw.js → createDownloadLinkElement.6oO-YlYv.js} +1 -1
  130. streamlit/static/static/js/{data-grid-overlay-editor.BW5aAEJN.js → data-grid-overlay-editor.CO0xdNiG.js} +1 -1
  131. streamlit/static/static/js/{downloader.BswLlj7p.js → downloader.BBXcXdX1.js} +1 -1
  132. streamlit/static/static/js/{embed.QjYZXbaW.js → embed.CJzOXYBF.js} +1 -1
  133. streamlit/static/static/js/{es6.Dm_kl6Cp.js → es6.CdxPQzwJ.js} +2 -2
  134. streamlit/static/static/js/{formatNumber.CH39oSMw.js → formatNumber.DB5irY8c.js} +1 -1
  135. streamlit/static/static/js/{iconPosition.Dp9f2jam.js → iconPosition.BVScIr6G.js} +1 -1
  136. streamlit/static/static/js/{iframeResizer.contentWindow.DOprY46-.js → iframeResizer.contentWindow.D_QHVqPM.js} +1 -1
  137. streamlit/static/static/js/{index.CAzk7fUP.js → index.6DFY6LUF.js} +1 -1
  138. streamlit/static/static/js/{index.BBVcEzWu.js → index.B80gSxrS.js} +1 -1
  139. streamlit/static/static/js/{index.6UQ__fP7.js → index.BDtN2n7T.js} +1 -1
  140. streamlit/static/static/js/{index.BYjec3-R.js → index.BED2_zc7.js} +1 -1
  141. streamlit/static/static/js/{index.DMwRlpNi.js → index.BQnLeHnr.js} +1 -1
  142. streamlit/static/static/js/{index.s9zpEF8P.js → index.BSYebegS.js} +1 -1
  143. streamlit/static/static/js/{index.6OwBTJdz.js → index.BSpYHDvk.js} +1 -1
  144. streamlit/static/static/js/{index.BUbgW8RJ.js → index.BiCbrx53.js} +1 -1
  145. streamlit/static/static/js/{index.CYxcFtYt.js → index.Biyf9aUg.js} +1 -1
  146. streamlit/static/static/js/{index.BQu5Qf_i.js → index.BqbKiDp2.js} +1 -1
  147. streamlit/static/static/js/{index.BcUwq6kI.js → index.BqxwnMem.js} +1 -1
  148. streamlit/static/static/js/{index.CDZffl1q.js → index.BtOoVQt7.js} +1 -1
  149. streamlit/static/static/js/{index.C57ViuAX.js → index.BxMkW82k.js} +1 -1
  150. streamlit/static/static/js/{index.DypwtfIh.js → index.BxQxTpWl.js} +1 -1
  151. streamlit/static/static/js/{index.BaKZ4ira.js → index.C5oqIM3a.js} +1 -1
  152. streamlit/static/static/js/{index.tjRGlTlQ.js → index.CBE2cIbj.js} +1 -1
  153. streamlit/static/static/js/{index.Cb7V19H9.js → index.CE2WIFD1.js} +1 -1
  154. streamlit/static/static/js/{index.lMhsw-5K.js → index.CPc_uZux.js} +50 -50
  155. streamlit/static/static/js/{index.CfXTal6g.js → index.CUYi3FrD.js} +1 -1
  156. streamlit/static/static/js/index.Cpu2p5bH.js +1 -0
  157. streamlit/static/static/js/{index.OI2eh_me.js → index.CrY1BsL3.js} +1 -1
  158. streamlit/static/static/js/{index.B9XI6y3j.js → index.CtbETWQK.js} +1 -1
  159. streamlit/static/static/js/{index.6iOQDEVC.js → index.CvtybR-u.js} +1 -1
  160. streamlit/static/static/js/{index.DK9Im19R.js → index.CxoREvnF.js} +1 -1
  161. streamlit/static/static/js/{index.DsZNm1_D.js → index.D6OexhdL.js} +1 -1
  162. streamlit/static/static/js/{index.Ci3x7GcT.js → index.D9v2Y8Gk.js} +1 -1
  163. streamlit/static/static/js/{index.BFxjXeYb.js → index.DAfIQKfP.js} +1 -1
  164. streamlit/static/static/js/index.DAnczAW2.js +2 -0
  165. streamlit/static/static/js/{index.D1tkD8Lg.js → index.DAyGxxdm.js} +1 -1
  166. streamlit/static/static/js/{index.BNsCI-Q1.js → index.DCe7fo-m.js} +1 -1
  167. streamlit/static/static/js/{index.B6Sk5Jwr.js → index.DNfyKqhQ.js} +1 -1
  168. streamlit/static/static/js/{index.BlgpfTUq.js → index.DRoJNzFX.js} +1 -1
  169. streamlit/static/static/js/{index.CkSzTTpO.js → index.DU68jVpM.js} +54 -54
  170. streamlit/static/static/js/{index.TTO_Lb69.js → index.DZmBuE3z.js} +2 -2
  171. streamlit/static/static/js/{index.Cw5Xlisw.js → index.DhRAGiPR.js} +1 -1
  172. streamlit/static/static/js/{index.BUOjbZl6.js → index.DrcbvB2t.js} +1 -1
  173. streamlit/static/static/js/{index.wKGUZfH4.js → index.Dud7RRHc.js} +1 -1
  174. streamlit/static/static/js/{index.BxtweGcn.js → index.DyXcT2tD.js} +1 -1
  175. streamlit/static/static/js/{index.X1r5cenD.js → index.DyfvmNCy.js} +222 -222
  176. streamlit/static/static/js/{index.JKOtpaMf.js → index.GieKl4BG.js} +1 -1
  177. streamlit/static/static/js/{index.CuJ82OKQ.js → index.YULCxEtm.js} +1 -1
  178. streamlit/static/static/js/{index.-7yn3zqE.js → index._1zqETQ9.js} +2 -2
  179. streamlit/static/static/js/{index.gsc49XzN.js → index.bQJYmJ2T.js} +1 -1
  180. streamlit/static/static/js/{index.BlchQrZL.js → index.iXh5nbLZ.js} +1 -1
  181. streamlit/static/static/js/index.mSdC1FV6.js +1 -0
  182. streamlit/static/static/js/{index.DoRYpzHm.js → index.nL1fkE1D.js} +1 -1
  183. streamlit/static/static/js/{index.4QSKV4yi.js → index.tuFFlbxa.js} +1 -1
  184. streamlit/static/static/js/{index.Bwaj-9Zv.js → index.y-pa6LIX.js} +1 -1
  185. streamlit/static/static/js/{input.CIKqvWjB.js → input.BcC6sPE_.js} +1 -1
  186. streamlit/static/static/js/{main.BkNqoTrd.js → main.TU5_aabd.js} +1 -1
  187. streamlit/static/static/js/{memory.DNcbFok2.js → memory.By_OTlI4.js} +1 -1
  188. streamlit/static/static/js/{number-overlay-editor.DwjiYKav.js → number-overlay-editor.FSRaRpbU.js} +1 -1
  189. streamlit/static/static/js/{pandasStylerUtils.BSc50we3.js → pandasStylerUtils.3IiIKU9-.js} +1 -1
  190. streamlit/static/static/js/{sandbox.DJL9Gdcf.js → sandbox.DnxTbWzV.js} +1 -1
  191. streamlit/static/static/js/{styled-components.D4jE1G9j.js → styled-components.BeEcZ0vW.js} +1 -1
  192. streamlit/static/static/js/{throttle.dHeXiPIK.js → throttle.emUyC44c.js} +1 -1
  193. streamlit/static/static/js/{timepicker.CIpoSUyW.js → timepicker.DZ_ZufYF.js} +1 -1
  194. streamlit/static/static/js/{toConsumableArray.AOXQx2YY.js → toConsumableArray.DDV1bN1-.js} +1 -1
  195. streamlit/static/static/js/uniqueId.DTwvAE-J.js +1 -0
  196. streamlit/static/static/js/{useBasicWidgetState.BwQxG7iA.js → useBasicWidgetState.DvpdEDYZ.js} +1 -1
  197. streamlit/static/static/js/{useIntlLocale.JXPZPWaJ.js → useIntlLocale.BBDLbTq9.js} +1 -1
  198. streamlit/static/static/js/{useTextInputAutoExpand.CD_nhoE_.js → useTextInputAutoExpand.BIApLJKn.js} +1 -1
  199. streamlit/static/static/js/{useUpdateUiValue.Cl1Y22Ao.js → useUpdateUiValue.DQ4RuJNC.js} +1 -1
  200. streamlit/static/static/js/{useWaveformController.DJhScSDn.js → useWaveformController.B0olyXLQ.js} +1 -1
  201. streamlit/static/static/js/{withCalculatedWidth.CrAfFzO9.js → withCalculatedWidth.DYeqePuh.js} +1 -1
  202. streamlit/static/static/js/{withFullScreenWrapper.EdE3zOz5.js → withFullScreenWrapper.DtkUCO_d.js} +1 -1
  203. streamlit/testing/v1/element_tree.py +16 -2
  204. streamlit/web/bootstrap.py +5 -2
  205. streamlit/web/server/server.py +0 -1
  206. streamlit/web/server/server_util.py +22 -0
  207. streamlit/web/server/starlette/starlette_app.py +0 -1
  208. {streamlit_nightly-1.53.2.dev20260127.dist-info → streamlit_nightly-1.53.2.dev20260131.dist-info}/METADATA +10 -25
  209. {streamlit_nightly-1.53.2.dev20260127.dist-info → streamlit_nightly-1.53.2.dev20260131.dist-info}/RECORD +212 -221
  210. streamlit/proto/DataFrame_pb2.py +0 -56
  211. streamlit/proto/DataFrame_pb2.pyi +0 -430
  212. streamlit/proto/NamedDataSet_pb2.py +0 -28
  213. streamlit/proto/NamedDataSet_pb2.pyi +0 -67
  214. streamlit/proto/PagesChanged_pb2.py +0 -28
  215. streamlit/proto/PagesChanged_pb2.pyi +0 -55
  216. streamlit/proto/VegaLiteChart_pb2.py +0 -29
  217. streamlit/proto/VegaLiteChart_pb2.pyi +0 -79
  218. streamlit/static/static/js/index.B0Wcvg8a.js +0 -2
  219. streamlit/static/static/js/index.CivdhE_9.js +0 -1
  220. streamlit/static/static/js/index.DTUAvbJ0.js +0 -1
  221. streamlit/static/static/js/uniqueId.DRPc21MO.js +0 -1
  222. streamlit_nightly-1.53.2.dev20260127.data/scripts/streamlit.cmd +0 -16
  223. {streamlit_nightly-1.53.2.dev20260127.dist-info → streamlit_nightly-1.53.2.dev20260131.dist-info}/WHEEL +0 -0
  224. {streamlit_nightly-1.53.2.dev20260127.dist-info → streamlit_nightly-1.53.2.dev20260131.dist-info}/entry_points.txt +0 -0
  225. {streamlit_nightly-1.53.2.dev20260127.dist-info → streamlit_nightly-1.53.2.dev20260131.dist-info}/top_level.txt +0 -0
streamlit/config.py CHANGED
@@ -617,6 +617,17 @@ _create_option(
617
617
  scriptable=True,
618
618
  )
619
619
 
620
+ _create_option(
621
+ "client.showErrorLinks",
622
+ description="""
623
+ Controls whether to show external help links (Google, ChatGPT) in
624
+ error displays. Can be "auto" (shows on localhost only), true (always
625
+ show), or false (never show).
626
+ """,
627
+ default_val="auto",
628
+ type_=str,
629
+ )
630
+
620
631
  # Config Section: Runner #
621
632
 
622
633
  _create_section("runner", "Settings for how Streamlit executes your script")
@@ -2694,7 +2705,8 @@ def get_config_options(
2694
2705
 
2695
2706
  # Values set in files later in the CONFIG_FILENAMES list overwrite those
2696
2707
  # set earlier.
2697
- for filename in get_config_files("config.toml"):
2708
+ config_files = get_config_files("config.toml")
2709
+ for filename in config_files:
2698
2710
  if not os.path.exists(filename):
2699
2711
  continue
2700
2712
 
@@ -2712,7 +2724,7 @@ def get_config_options(
2712
2724
  # This happens AFTER all config sources (files, env vars, flags) are processed
2713
2725
  # so theme.base can be set via any of those
2714
2726
  config_util.process_theme_inheritance(
2715
- _config_options, _config_options_template, _set_option
2727
+ _config_options, _config_options_template, _set_option, config_files
2716
2728
  )
2717
2729
 
2718
2730
  if old_options and config_util.server_option_changed(
streamlit/config_util.py CHANGED
@@ -19,10 +19,10 @@ import os
19
19
  import re
20
20
  import urllib.error
21
21
  import urllib.request
22
- from typing import TYPE_CHECKING, Any
22
+ from typing import TYPE_CHECKING, Any, TypedDict
23
23
 
24
24
  if TYPE_CHECKING:
25
- from collections.abc import Iterator
25
+ from collections.abc import Iterator, Sequence
26
26
 
27
27
  from streamlit import cli_util, url_util
28
28
  from streamlit.config_option import ConfigOption
@@ -36,6 +36,31 @@ from streamlit.errors import (
36
36
  # Maximum size for theme files (1MB). Theme files should be small configuration
37
37
  # files containing only theme options, not large data files.
38
38
  _MAX_THEME_FILE_SIZE_BYTES = 1024 * 1024 # 1MB
39
+ _CONFIG_FILE_SCOPES = ("global", "project", "script")
40
+
41
+
42
+ class _ThemeOverride(TypedDict):
43
+ value: Any
44
+ where_defined: str
45
+
46
+
47
+ def _format_config_file_label(
48
+ where_defined: str | None, config_file_paths: Sequence[str] | None
49
+ ) -> str | None:
50
+ """Return a scope-labeled config.toml path if where_defined matches a config file."""
51
+ if not where_defined or not config_file_paths:
52
+ return None
53
+
54
+ for index, path in enumerate(config_file_paths):
55
+ if where_defined == path:
56
+ scope = (
57
+ _CONFIG_FILE_SCOPES[index] if index < len(_CONFIG_FILE_SCOPES) else None
58
+ )
59
+ if scope:
60
+ return f"config.toml ({scope}): {path}"
61
+ return f"config.toml: {path}"
62
+
63
+ return None
39
64
 
40
65
 
41
66
  def _get_logger() -> Any:
@@ -720,6 +745,7 @@ def process_theme_inheritance(
720
745
  config_options: dict[str, ConfigOption] | None,
721
746
  config_options_template: dict[str, ConfigOption],
722
747
  set_option_func: Any,
748
+ config_file_paths: Sequence[str] | None = None,
723
749
  ) -> None:
724
750
  """
725
751
  Process theme inheritance if theme.base points to a theme file.
@@ -729,6 +755,18 @@ def process_theme_inheritance(
729
755
  current config.toml values override the theme.base file values.
730
756
 
731
757
  Sets the merged theme options to the config.
758
+
759
+ Parameters
760
+ ----------
761
+ config_options : dict[str, ConfigOption] | None
762
+ Current configuration options.
763
+ config_options_template : dict[str, ConfigOption]
764
+ Template of all valid config options.
765
+ set_option_func : Any
766
+ Function to set config option values.
767
+ config_file_paths : Sequence[str] | None, optional
768
+ Ordered list of config.toml file paths (global, project, script).
769
+ Used to label where_defined with scope for clearer provenance.
732
770
  """
733
771
  # Get the current theme.base value
734
772
  if config_options is None:
@@ -770,7 +808,8 @@ def process_theme_inheritance(
770
808
  )
771
809
 
772
810
  # Preserve theme options set by env vars and command line flags (higher precedence)
773
- high_precedence_theme_options = {}
811
+ high_precedence_theme_options: dict[str, _ThemeOverride] = {}
812
+ config_theme_overrides: dict[str, _ThemeOverride] = {}
774
813
  if config_options is not None:
775
814
  for opt_name, opt_config in config_options.items():
776
815
  if (
@@ -786,6 +825,18 @@ def process_theme_inheritance(
786
825
  "value": opt_config.value,
787
826
  "where_defined": opt_config.where_defined,
788
827
  }
828
+ config_label = _format_config_file_label(
829
+ opt_config.where_defined, config_file_paths
830
+ )
831
+ if (
832
+ opt_name.startswith("theme.")
833
+ and opt_name != "theme.base"
834
+ and config_label is not None
835
+ ):
836
+ config_theme_overrides[opt_name] = {
837
+ "value": opt_config.value,
838
+ "where_defined": config_label,
839
+ }
789
840
 
790
841
  # Clear existing theme options (except base) to prepare for inheritance
791
842
  theme_options_to_remove = [
@@ -799,19 +850,23 @@ def process_theme_inheritance(
799
850
  # Handle theme.base - always set it to a valid value ("light" or "dark", not a path/URL)
800
851
  theme_file_base = theme_file_content.get("theme", {}).get("base")
801
852
  if theme_file_base:
802
- set_option_func("theme.base", theme_file_base, f"theme file: {base_value}")
803
- else:
804
- # Theme file doesn't specify a base, default to "light"
805
853
  set_option_func(
806
- "theme.base", "light", f"theme file: {base_value} (default)"
854
+ "theme.base", theme_file_base, f"base theme file: {base_value}"
807
855
  )
856
+ else:
857
+ # Theme file doesn't specify a base, default to "light"
858
+ set_option_func("theme.base", "light", "default light theme")
808
859
 
809
860
  # Set the merged theme options using recursive helper
810
861
  theme_section = merged_theme.get("theme", {})
811
862
  _set_theme_options_recursive(
812
- theme_section, "theme", set_option_func, f"theme file: {base_value}"
863
+ theme_section, "theme", set_option_func, f"base theme file: {base_value}"
813
864
  )
814
865
 
866
+ # Restore theme options set in config.toml (override base theme file)
867
+ for opt_name, opt_data in config_theme_overrides.items():
868
+ set_option_func(opt_name, opt_data["value"], opt_data["where_defined"])
869
+
815
870
  # Finally, restore theme options set by env vars and command line flags (highest precedence)
816
871
  for opt_name, opt_data in high_precedence_theme_options.items():
817
872
  set_option_func(opt_name, opt_data["value"], opt_data["where_defined"])
@@ -556,7 +556,11 @@ class PydeckMixin:
556
556
  pydeck_proto.id = compute_and_register_element_id(
557
557
  "deck_gl_json_chart",
558
558
  user_key=key,
559
- key_as_main_identity=False,
559
+ # When a key is provided, only selection_mode affects the element ID.
560
+ # This allows selection state to persist across data/spec changes.
561
+ # Note: This can lead to orphaned selections if data length shrinks,
562
+ # but the frontend handles this by sanitizing invalid indices.
563
+ key_as_main_identity={"selection_mode"},
560
564
  dg=self.dg,
561
565
  is_selection_activated=is_selection_activated,
562
566
  selection_mode=selection_mode,
@@ -24,6 +24,7 @@ from typing import TYPE_CHECKING, Any, Final, Literal, TypeAlias, TypedDict, cas
24
24
  from streamlit import dataframe_util, type_util
25
25
  from streamlit.elements.lib.color_util import (
26
26
  Color,
27
+ is_builtin_color_name,
27
28
  is_color_like,
28
29
  is_color_tuple_like,
29
30
  is_hex_color_like,
@@ -1080,6 +1081,14 @@ def _get_color_encoding(
1080
1081
 
1081
1082
  return alt.ColorValue(to_css_color(cast("Any", color_value)))
1082
1083
 
1084
+ # Check for built-in color names (resolved on frontend, not converted here)
1085
+ if isinstance(color_value, str) and is_builtin_color_name(color_value):
1086
+ if len(y_column_list) != 1:
1087
+ raise StreamlitColorLengthError(
1088
+ [color_value] if color_value else [], y_column_list
1089
+ )
1090
+ return alt.ColorValue(color_value)
1091
+
1083
1092
  # If the color value is a list of colors of appropriate length, return that.
1084
1093
  if isinstance(color_value, (list, tuple)):
1085
1094
  color_values = cast("Collection[Color]", color_value)
@@ -1088,12 +1097,23 @@ def _get_color_encoding(
1088
1097
  raise StreamlitColorLengthError(color_values, y_column_list)
1089
1098
 
1090
1099
  if len(color_values) == 1:
1091
- return alt.ColorValue(to_css_color(cast("Any", color_value[0])))
1100
+ first_color = cast("Any", color_value[0])
1101
+ # Pass through built-in color names as-is (resolved on frontend)
1102
+ if isinstance(first_color, str) and is_builtin_color_name(first_color):
1103
+ return alt.ColorValue(first_color)
1104
+ return alt.ColorValue(to_css_color(first_color))
1105
+
1106
+ # Convert colors, but pass through built-in color names as-is
1107
+ resolved_colors: list[Color] = []
1108
+ for c in color_values:
1109
+ if isinstance(c, str) and is_builtin_color_name(c):
1110
+ resolved_colors.append(c)
1111
+ else:
1112
+ resolved_colors.append(to_css_color(c))
1113
+
1092
1114
  return alt.Color(
1093
1115
  field=color_column if color_column is not None else alt.Undefined,
1094
- scale=alt.Scale(
1095
- domain=y_column_list, range=[to_css_color(c) for c in color_values]
1096
- ),
1116
+ scale=alt.Scale(domain=y_column_list, range=resolved_colors),
1097
1117
  legend=_COLOR_LEGEND_SETTINGS,
1098
1118
  type="nominal",
1099
1119
  title=" ",
@@ -15,10 +15,16 @@
15
15
  from __future__ import annotations
16
16
 
17
17
  from collections.abc import Callable, Collection
18
- from typing import Any, TypeAlias, cast
18
+ from typing import Any, Final, TypeAlias, cast
19
19
 
20
20
  from streamlit.errors import StreamlitInvalidColorError
21
21
 
22
+ # Built-in color names that map to Streamlit theme colors.
23
+ # These are resolved to actual color values on the frontend.
24
+ BUILTIN_COLOR_NAMES: Final[frozenset[str]] = frozenset(
25
+ {"red", "orange", "yellow", "green", "blue", "violet", "gray", "grey", "primary"}
26
+ )
27
+
22
28
  # components go from 0.0 to 1.0
23
29
  # Supported by Pillow and pretty common.
24
30
  FloatRGBColorTuple: TypeAlias = tuple[float, float, float]
@@ -131,11 +137,24 @@ def is_color_tuple_like(color: MaybeColor) -> bool:
131
137
  )
132
138
 
133
139
 
140
+ def is_builtin_color_name(color: MaybeColor) -> bool:
141
+ """Check whether the input is a built-in Streamlit color name.
142
+
143
+ Built-in color names (red, orange, yellow, green, blue, violet, gray/grey, primary)
144
+ are resolved to theme colors on the frontend.
145
+ """
146
+ return isinstance(color, str) and color.lower() in BUILTIN_COLOR_NAMES
147
+
148
+
134
149
  def is_color_like(color: MaybeColor) -> bool:
135
150
  """A fairly lightweight check of whether the input is a color.
136
151
 
137
152
  This isn't meant to be a definitive answer. The definitive solution is to
138
153
  try to convert and see if an error is thrown.
154
+
155
+ NOTE: This does NOT include built-in color names (red, blue, etc.) because
156
+ those require special handling and cannot be converted via to_css_color().
157
+ Use is_builtin_color_name() separately when validating color parameter arguments.
139
158
  """
140
159
  return is_css_color_like(color) or is_color_tuple_like(color)
141
160
 
@@ -725,6 +725,10 @@ class VegaChartsMixin:
725
725
  - An RGB or RGBA tuple with the red, green, blue, and alpha
726
726
  components specified as ints from 0 to 255 or floats from 0.0 to
727
727
  1.0.
728
+ - A built-in color name: "red", "orange", "yellow", "green",
729
+ "blue", "violet", "gray"/"grey", or "primary". These map to
730
+ theme colors that you can customize using ``theme.<color>Color``
731
+ configuration options.
728
732
 
729
733
  For a line chart with multiple lines, where the dataframe is in
730
734
  long format (that is, y is None or just one column), this can be:
@@ -753,7 +757,8 @@ class VegaChartsMixin:
753
757
  - A list of string colors or color tuples to be used for each of
754
758
  the lines in the chart. This list should have the same length
755
759
  as the number of y values (e.g. ``color=["#fd0", "#f0f", "#04f"]``
756
- for three lines).
760
+ for three lines). You can also use built-in color names in the
761
+ list (e.g. ``color=["red", "blue", "green"]``).
757
762
 
758
763
  You can set the default colors in the ``theme.chartCategoryColors``
759
764
  configuration option.
@@ -959,6 +964,10 @@ class VegaChartsMixin:
959
964
  - An RGB or RGBA tuple with the red, green, blue, and alpha
960
965
  components specified as ints from 0 to 255 or floats from 0.0 to
961
966
  1.0.
967
+ - A built-in color name: "red", "orange", "yellow", "green",
968
+ "blue", "violet", "gray"/"grey", or "primary". These map to
969
+ theme colors that you can customize using ``theme.<color>Color``
970
+ configuration options.
962
971
 
963
972
  For an area chart with multiple series, where the dataframe is in
964
973
  long format (that is, y is None or just one column), this can be:
@@ -987,7 +996,8 @@ class VegaChartsMixin:
987
996
  - A list of string colors or color tuples to be used for each of
988
997
  the series in the chart. This list should have the same length
989
998
  as the number of y values (e.g. ``color=["#fd0", "#f0f", "#04f"]``
990
- for three lines).
999
+ for three lines). You can also use built-in color names in the
1000
+ list (e.g. ``color=["red", "blue", "green"]``).
991
1001
 
992
1002
  You can set the default colors in the ``theme.chartCategoryColors``
993
1003
  configuration option.
@@ -1248,6 +1258,10 @@ class VegaChartsMixin:
1248
1258
  - An RGB or RGBA tuple with the red, green, blue, and alpha
1249
1259
  components specified as ints from 0 to 255 or floats from 0.0 to
1250
1260
  1.0.
1261
+ - A built-in color name: "red", "orange", "yellow", "green",
1262
+ "blue", "violet", "gray"/"grey", or "primary". These map to
1263
+ theme colors that you can customize using ``theme.<color>Color``
1264
+ configuration options.
1251
1265
 
1252
1266
  For a bar chart with multiple series, where the dataframe is in
1253
1267
  long format (that is, y is None or just one column), this can be:
@@ -1276,7 +1290,8 @@ class VegaChartsMixin:
1276
1290
  - A list of string colors or color tuples to be used for each of
1277
1291
  the series in the chart. This list should have the same length
1278
1292
  as the number of y values (e.g. ``color=["#fd0", "#f0f", "#04f"]``
1279
- for three lines).
1293
+ for three lines). You can also use built-in color names in the
1294
+ list (e.g. ``color=["red", "blue", "green"]``).
1280
1295
 
1281
1296
  You can set the default colors in the ``theme.chartCategoryColors``
1282
1297
  configuration option.
@@ -1575,6 +1590,10 @@ class VegaChartsMixin:
1575
1590
  - An RGB or RGBA tuple with the red, green, blue, and alpha
1576
1591
  components specified as ints from 0 to 255 or floats from 0.0 to
1577
1592
  1.0.
1593
+ - A built-in color name: "red", "orange", "yellow", "green",
1594
+ "blue", "violet", "gray"/"grey", or "primary". These map to
1595
+ theme colors that you can customize using ``theme.<color>Color``
1596
+ configuration options.
1578
1597
  - The name of a column in the dataset where the color of that
1579
1598
  datapoint will come from.
1580
1599
 
@@ -1602,7 +1621,8 @@ class VegaChartsMixin:
1602
1621
  - A list of string colors or color tuples to be used for each of
1603
1622
  the series in the chart. This list should have the same length
1604
1623
  as the number of y values (e.g. ``color=["#fd0", "#f0f", "#04f"]``
1605
- for three series).
1624
+ for three series). You can also use built-in color names in the
1625
+ list (e.g. ``color=["red", "blue", "green"]``).
1606
1626
 
1607
1627
  size : str, float, int, or None
1608
1628
  The size of the circles representing each point.
@@ -15,14 +15,13 @@ _sym_db = _symbol_database.Default()
15
15
  from streamlit.proto import WidthConfig_pb2 as streamlit_dot_proto_dot_WidthConfig__pb2
16
16
 
17
17
 
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bstreamlit/proto/Alert.proto\x1a!streamlit/proto/WidthConfig.proto\"\xb5\x01\n\x05\x41lert\x12\x0c\n\x04\x62ody\x18\x01 \x01(\t\x12\x1d\n\x06\x66ormat\x18\x02 \x01(\x0e\x32\r.Alert.Format\x12\x0c\n\x04icon\x18\x03 \x01(\t\x12,\n\x0cwidth_config\x18\x04 \x01(\x0b\x32\x16.streamlit.WidthConfig\"C\n\x06\x46ormat\x12\n\n\x06UNUSED\x10\x00\x12\t\n\x05\x45RROR\x10\x01\x12\x0b\n\x07WARNING\x10\x02\x12\x08\n\x04INFO\x10\x03\x12\x0b\n\x07SUCCESS\x10\x04\x42*\n\x1c\x63om.snowflake.apps.streamlitB\nAlertProtob\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bstreamlit/proto/Alert.proto\x1a!streamlit/proto/WidthConfig.proto\"\xb5\x01\n\x05\x41lert\x12\x0c\n\x04\x62ody\x18\x01 \x01(\t\x12\x1d\n\x06\x66ormat\x18\x02 \x01(\x0e\x32\r.Alert.Format\x12\x0c\n\x04icon\x18\x03 \x01(\t\x12,\n\x0cwidth_config\x18\x04 \x01(\x0b\x32\x16.streamlit.WidthConfig\"C\n\x06\x46ormat\x12\n\n\x06UNUSED\x10\x00\x12\t\n\x05\x45RROR\x10\x01\x12\x0b\n\x07WARNING\x10\x02\x12\x08\n\x04INFO\x10\x03\x12\x0b\n\x07SUCCESS\x10\x04\x62\x06proto3')
19
19
 
20
20
  _globals = globals()
21
21
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
22
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'streamlit.proto.Alert_pb2', _globals)
23
23
  if not _descriptor._USE_C_DESCRIPTORS:
24
- _globals['DESCRIPTOR']._loaded_options = None
25
- _globals['DESCRIPTOR']._serialized_options = b'\n\034com.snowflake.apps.streamlitB\nAlertProto'
24
+ DESCRIPTOR._loaded_options = None
26
25
  _globals['_ALERT']._serialized_start=67
27
26
  _globals['_ALERT']._serialized_end=248
28
27
  _globals['_ALERT_FORMAT']._serialized_start=181
@@ -14,14 +14,13 @@ _sym_db = _symbol_database.Default()
14
14
 
15
15
 
16
16
 
17
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dstreamlit/proto/AppPage.proto\"\x86\x01\n\x07\x41ppPage\x12\x18\n\x10page_script_hash\x18\x01 \x01(\t\x12\x11\n\tpage_name\x18\x02 \x01(\t\x12\x0c\n\x04icon\x18\x03 \x01(\t\x12\x12\n\nis_default\x18\x04 \x01(\x08\x12\x16\n\x0esection_header\x18\x05 \x01(\t\x12\x14\n\x0curl_pathname\x18\x06 \x01(\tB,\n\x1c\x63om.snowflake.apps.streamlitB\x0c\x41ppPageProtob\x06proto3')
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dstreamlit/proto/AppPage.proto\"\x86\x01\n\x07\x41ppPage\x12\x18\n\x10page_script_hash\x18\x01 \x01(\t\x12\x11\n\tpage_name\x18\x02 \x01(\t\x12\x0c\n\x04icon\x18\x03 \x01(\t\x12\x12\n\nis_default\x18\x04 \x01(\x08\x12\x16\n\x0esection_header\x18\x05 \x01(\t\x12\x14\n\x0curl_pathname\x18\x06 \x01(\tb\x06proto3')
18
18
 
19
19
  _globals = globals()
20
20
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
21
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'streamlit.proto.AppPage_pb2', _globals)
22
22
  if not _descriptor._USE_C_DESCRIPTORS:
23
- _globals['DESCRIPTOR']._loaded_options = None
24
- _globals['DESCRIPTOR']._serialized_options = b'\n\034com.snowflake.apps.streamlitB\014AppPageProto'
23
+ DESCRIPTOR._loaded_options = None
25
24
  _globals['_APPPAGE']._serialized_start=34
26
25
  _globals['_APPPAGE']._serialized_end=168
27
26
  # @@protoc_insertion_point(module_scope)
@@ -14,14 +14,13 @@ _sym_db = _symbol_database.Default()
14
14
 
15
15
 
16
16
 
17
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fstreamlit/proto/ArrowData.proto\"\x19\n\tArrowData\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x42.\n\x1c\x63om.snowflake.apps.streamlitB\x0e\x41rrowDataProtob\x06proto3')
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fstreamlit/proto/ArrowData.proto\"\x19\n\tArrowData\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x62\x06proto3')
18
18
 
19
19
  _globals = globals()
20
20
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
21
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'streamlit.proto.ArrowData_pb2', _globals)
22
22
  if not _descriptor._USE_C_DESCRIPTORS:
23
- _globals['DESCRIPTOR']._loaded_options = None
24
- _globals['DESCRIPTOR']._serialized_options = b'\n\034com.snowflake.apps.streamlitB\016ArrowDataProto'
23
+ DESCRIPTOR._loaded_options = None
25
24
  _globals['_ARROWDATA']._serialized_start=35
26
25
  _globals['_ARROWDATA']._serialized_end=60
27
26
  # @@protoc_insertion_point(module_scope)
@@ -15,14 +15,13 @@ _sym_db = _symbol_database.Default()
15
15
  from streamlit.proto import Arrow_pb2 as streamlit_dot_proto_dot_Arrow__pb2
16
16
 
17
17
 
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'streamlit/proto/ArrowNamedDataSet.proto\x1a\x1bstreamlit/proto/Arrow.proto\"I\n\x11\x41rrowNamedDataSet\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08has_name\x18\x03 \x01(\x08\x12\x14\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x06.ArrowB6\n\x1c\x63om.snowflake.apps.streamlitB\x16\x41rrowNamedDataSetProtob\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'streamlit/proto/ArrowNamedDataSet.proto\x1a\x1bstreamlit/proto/Arrow.proto\"I\n\x11\x41rrowNamedDataSet\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08has_name\x18\x03 \x01(\x08\x12\x14\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x06.Arrowb\x06proto3')
19
19
 
20
20
  _globals = globals()
21
21
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
22
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'streamlit.proto.ArrowNamedDataSet_pb2', _globals)
23
23
  if not _descriptor._USE_C_DESCRIPTORS:
24
- _globals['DESCRIPTOR']._loaded_options = None
25
- _globals['DESCRIPTOR']._serialized_options = b'\n\034com.snowflake.apps.streamlitB\026ArrowNamedDataSetProto'
24
+ DESCRIPTOR._loaded_options = None
26
25
  _globals['_ARROWNAMEDDATASET']._serialized_start=72
27
26
  _globals['_ARROWNAMEDDATASET']._serialized_end=145
28
27
  # @@protoc_insertion_point(module_scope)
@@ -16,14 +16,13 @@ from streamlit.proto import Arrow_pb2 as streamlit_dot_proto_dot_Arrow__pb2
16
16
  from streamlit.proto import ArrowNamedDataSet_pb2 as streamlit_dot_proto_dot_ArrowNamedDataSet__pb2
17
17
 
18
18
 
19
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(streamlit/proto/ArrowVegaLiteChart.proto\x1a\x1bstreamlit/proto/Arrow.proto\x1a\'streamlit/proto/ArrowNamedDataSet.proto\"\xc5\x01\n\x12\x41rrowVegaLiteChart\x12\x0c\n\x04spec\x18\x01 \x01(\t\x12\x14\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x06.Arrow\x12$\n\x08\x64\x61tasets\x18\x04 \x03(\x0b\x32\x12.ArrowNamedDataSet\x12\x1b\n\x13use_container_width\x18\x05 \x01(\x08\x12\r\n\x05theme\x18\x06 \x01(\t\x12\n\n\x02id\x18\x07 \x01(\t\x12\x16\n\x0eselection_mode\x18\x08 \x03(\t\x12\x0f\n\x07\x66orm_id\x18\t \x01(\tJ\x04\x08\x03\x10\x04\x42\x37\n\x1c\x63om.snowflake.apps.streamlitB\x17\x41rrowVegaLiteChartProtob\x06proto3')
19
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(streamlit/proto/ArrowVegaLiteChart.proto\x1a\x1bstreamlit/proto/Arrow.proto\x1a\'streamlit/proto/ArrowNamedDataSet.proto\"\xc5\x01\n\x12\x41rrowVegaLiteChart\x12\x0c\n\x04spec\x18\x01 \x01(\t\x12\x14\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x06.Arrow\x12$\n\x08\x64\x61tasets\x18\x04 \x03(\x0b\x32\x12.ArrowNamedDataSet\x12\x1b\n\x13use_container_width\x18\x05 \x01(\x08\x12\r\n\x05theme\x18\x06 \x01(\t\x12\n\n\x02id\x18\x07 \x01(\t\x12\x16\n\x0eselection_mode\x18\x08 \x03(\t\x12\x0f\n\x07\x66orm_id\x18\t \x01(\tJ\x04\x08\x03\x10\x04\x62\x06proto3')
20
20
 
21
21
  _globals = globals()
22
22
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
23
23
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'streamlit.proto.ArrowVegaLiteChart_pb2', _globals)
24
24
  if not _descriptor._USE_C_DESCRIPTORS:
25
- _globals['DESCRIPTOR']._loaded_options = None
26
- _globals['DESCRIPTOR']._serialized_options = b'\n\034com.snowflake.apps.streamlitB\027ArrowVegaLiteChartProto'
25
+ DESCRIPTOR._loaded_options = None
27
26
  _globals['_ARROWVEGALITECHART']._serialized_start=115
28
27
  _globals['_ARROWVEGALITECHART']._serialized_end=312
29
28
  # @@protoc_insertion_point(module_scope)
@@ -14,28 +14,21 @@ _sym_db = _symbol_database.Default()
14
14
 
15
15
 
16
16
 
17
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bstreamlit/proto/Arrow.proto\"\x9a\x05\n\x05\x41rrow\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\x17\n\x06styler\x18\x02 \x01(\x0b\x32\x07.Styler\x12\x11\n\x05width\x18\x03 \x01(\rB\x02\x18\x01\x12\x12\n\x06height\x18\x04 \x01(\rB\x02\x18\x01\x12\x1f\n\x13use_container_width\x18\x05 \x01(\x08\x42\x02\x18\x01\x12\n\n\x02id\x18\x06 \x01(\t\x12\x0f\n\x07\x63olumns\x18\x07 \x01(\t\x12(\n\x0c\x65\x64iting_mode\x18\x08 \x01(\x0e\x32\x12.Arrow.EditingMode\x12\x10\n\x08\x64isabled\x18\t \x01(\x08\x12\x0f\n\x07\x66orm_id\x18\n \x01(\t\x12\x14\n\x0c\x63olumn_order\x18\x0b \x03(\t\x12,\n\x0eselection_mode\x18\x0c \x03(\x0e\x32\x14.Arrow.SelectionMode\x12\x17\n\nrow_height\x18\r \x01(\rH\x00\x88\x01\x01\x12&\n\x0b\x62order_mode\x18\x0e \x01(\x0e\x32\x11.Arrow.BorderMode\x12\x18\n\x0bplaceholder\x18\x0f \x01(\tH\x01\x88\x01\x01\"S\n\x0b\x45\x64itingMode\x12\r\n\tREAD_ONLY\x10\x00\x12\t\n\x05\x46IXED\x10\x01\x12\x0b\n\x07\x44YNAMIC\x10\x02\x12\x0c\n\x08\x41\x44\x44_ONLY\x10\x03\x12\x0f\n\x0b\x44\x45LETE_ONLY\x10\x04\"t\n\rSelectionMode\x12\x0e\n\nSINGLE_ROW\x10\x00\x12\r\n\tMULTI_ROW\x10\x01\x12\x11\n\rSINGLE_COLUMN\x10\x02\x12\x10\n\x0cMULTI_COLUMN\x10\x03\x12\x0f\n\x0bSINGLE_CELL\x10\x04\x12\x0e\n\nMULTI_CELL\x10\x05\"/\n\nBorderMode\x12\x07\n\x03\x41LL\x10\x00\x12\x08\n\x04NONE\x10\x01\x12\x0e\n\nHORIZONTAL\x10\x02\x42\r\n\x0b_row_heightB\x0e\n\x0c_placeholder\"O\n\x06Styler\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61ption\x18\x02 \x01(\t\x12\x0e\n\x06styles\x18\x03 \x01(\t\x12\x16\n\x0e\x64isplay_values\x18\x04 \x01(\x0c\x42*\n\x1c\x63om.snowflake.apps.streamlitB\nArrowProtob\x06proto3')
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bstreamlit/proto/Arrow.proto\"\x88\x05\n\x05\x41rrow\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\x17\n\x06styler\x18\x02 \x01(\x0b\x32\x07.Styler\x12\n\n\x02id\x18\x06 \x01(\t\x12\x0f\n\x07\x63olumns\x18\x07 \x01(\t\x12(\n\x0c\x65\x64iting_mode\x18\x08 \x01(\x0e\x32\x12.Arrow.EditingMode\x12\x10\n\x08\x64isabled\x18\t \x01(\x08\x12\x0f\n\x07\x66orm_id\x18\n \x01(\t\x12\x14\n\x0c\x63olumn_order\x18\x0b \x03(\t\x12,\n\x0eselection_mode\x18\x0c \x03(\x0e\x32\x14.Arrow.SelectionMode\x12\x17\n\nrow_height\x18\r \x01(\rH\x00\x88\x01\x01\x12&\n\x0b\x62order_mode\x18\x0e \x01(\x0e\x32\x11.Arrow.BorderMode\x12\x18\n\x0bplaceholder\x18\x0f \x01(\tH\x01\x88\x01\x01\"S\n\x0b\x45\x64itingMode\x12\r\n\tREAD_ONLY\x10\x00\x12\t\n\x05\x46IXED\x10\x01\x12\x0b\n\x07\x44YNAMIC\x10\x02\x12\x0c\n\x08\x41\x44\x44_ONLY\x10\x03\x12\x0f\n\x0b\x44\x45LETE_ONLY\x10\x04\"t\n\rSelectionMode\x12\x0e\n\nSINGLE_ROW\x10\x00\x12\r\n\tMULTI_ROW\x10\x01\x12\x11\n\rSINGLE_COLUMN\x10\x02\x12\x10\n\x0cMULTI_COLUMN\x10\x03\x12\x0f\n\x0bSINGLE_CELL\x10\x04\x12\x0e\n\nMULTI_CELL\x10\x05\"/\n\nBorderMode\x12\x07\n\x03\x41LL\x10\x00\x12\x08\n\x04NONE\x10\x01\x12\x0e\n\nHORIZONTAL\x10\x02\x42\r\n\x0b_row_heightB\x0e\n\x0c_placeholderJ\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06R\x05widthR\x06heightR\x13use_container_width\"O\n\x06Styler\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x0f\n\x07\x63\x61ption\x18\x02 \x01(\t\x12\x0e\n\x06styles\x18\x03 \x01(\t\x12\x16\n\x0e\x64isplay_values\x18\x04 \x01(\x0c\x62\x06proto3')
18
18
 
19
19
  _globals = globals()
20
20
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
21
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'streamlit.proto.Arrow_pb2', _globals)
22
22
  if not _descriptor._USE_C_DESCRIPTORS:
23
- _globals['DESCRIPTOR']._loaded_options = None
24
- _globals['DESCRIPTOR']._serialized_options = b'\n\034com.snowflake.apps.streamlitB\nArrowProto'
25
- _globals['_ARROW'].fields_by_name['width']._loaded_options = None
26
- _globals['_ARROW'].fields_by_name['width']._serialized_options = b'\030\001'
27
- _globals['_ARROW'].fields_by_name['height']._loaded_options = None
28
- _globals['_ARROW'].fields_by_name['height']._serialized_options = b'\030\001'
29
- _globals['_ARROW'].fields_by_name['use_container_width']._loaded_options = None
30
- _globals['_ARROW'].fields_by_name['use_container_width']._serialized_options = b'\030\001'
23
+ DESCRIPTOR._loaded_options = None
31
24
  _globals['_ARROW']._serialized_start=32
32
- _globals['_ARROW']._serialized_end=698
33
- _globals['_ARROW_EDITINGMODE']._serialized_start=417
34
- _globals['_ARROW_EDITINGMODE']._serialized_end=500
35
- _globals['_ARROW_SELECTIONMODE']._serialized_start=502
36
- _globals['_ARROW_SELECTIONMODE']._serialized_end=618
37
- _globals['_ARROW_BORDERMODE']._serialized_start=620
38
- _globals['_ARROW_BORDERMODE']._serialized_end=667
39
- _globals['_STYLER']._serialized_start=700
40
- _globals['_STYLER']._serialized_end=779
25
+ _globals['_ARROW']._serialized_end=680
26
+ _globals['_ARROW_EDITINGMODE']._serialized_start=345
27
+ _globals['_ARROW_EDITINGMODE']._serialized_end=428
28
+ _globals['_ARROW_SELECTIONMODE']._serialized_start=430
29
+ _globals['_ARROW_SELECTIONMODE']._serialized_end=546
30
+ _globals['_ARROW_BORDERMODE']._serialized_start=548
31
+ _globals['_ARROW_BORDERMODE']._serialized_end=595
32
+ _globals['_STYLER']._serialized_start=682
33
+ _globals['_STYLER']._serialized_end=761
41
34
  # @@protoc_insertion_point(module_scope)
@@ -31,11 +31,6 @@ if sys.version_info >= (3, 10):
31
31
  else:
32
32
  from typing_extensions import TypeAlias as _TypeAlias
33
33
 
34
- if sys.version_info >= (3, 13):
35
- from warnings import deprecated as _deprecated
36
- else:
37
- from typing_extensions import deprecated as _deprecated
38
-
39
34
  DESCRIPTOR: _descriptor.FileDescriptor
40
35
 
41
36
  @_typing.final
@@ -133,9 +128,6 @@ class Arrow(_message.Message):
133
128
 
134
129
  DATA_FIELD_NUMBER: _builtins.int
135
130
  STYLER_FIELD_NUMBER: _builtins.int
136
- WIDTH_FIELD_NUMBER: _builtins.int
137
- HEIGHT_FIELD_NUMBER: _builtins.int
138
- USE_CONTAINER_WIDTH_FIELD_NUMBER: _builtins.int
139
131
  ID_FIELD_NUMBER: _builtins.int
140
132
  COLUMNS_FIELD_NUMBER: _builtins.int
141
133
  EDITING_MODE_FIELD_NUMBER: _builtins.int
@@ -148,36 +140,6 @@ class Arrow(_message.Message):
148
140
  PLACEHOLDER_FIELD_NUMBER: _builtins.int
149
141
  data: _builtins.bytes
150
142
  """The serialized arrow dataframe"""
151
- @_builtins.property
152
- @_deprecated("""This field has been marked as deprecated using proto field options.""")
153
- def width(self) -> _builtins.int:
154
- """DEPRECATED: Width in pixels. Use Element.width_config instead."""
155
-
156
- @width.setter
157
- @_deprecated("""This field has been marked as deprecated using proto field options.""")
158
- def width(self, value: _builtins.int) -> None:
159
- """DEPRECATED: Width in pixels. Use Element.width_config instead."""
160
-
161
- @_builtins.property
162
- @_deprecated("""This field has been marked as deprecated using proto field options.""")
163
- def height(self) -> _builtins.int:
164
- """DEPRECATED: Height in pixels. Use Element.height_config instead."""
165
-
166
- @height.setter
167
- @_deprecated("""This field has been marked as deprecated using proto field options.""")
168
- def height(self, value: _builtins.int) -> None:
169
- """DEPRECATED: Height in pixels. Use Element.height_config instead."""
170
-
171
- @_builtins.property
172
- @_deprecated("""This field has been marked as deprecated using proto field options.""")
173
- def use_container_width(self) -> _builtins.bool:
174
- """DEPRECATED: Use Element.width_config.use_stretch instead."""
175
-
176
- @use_container_width.setter
177
- @_deprecated("""This field has been marked as deprecated using proto field options.""")
178
- def use_container_width(self, value: _builtins.bool) -> None:
179
- """DEPRECATED: Use Element.width_config.use_stretch instead."""
180
-
181
143
  id: _builtins.str
182
144
  """The id of the widget, this is required if the dataframe is editable"""
183
145
  columns: _builtins.str
@@ -213,9 +175,6 @@ class Arrow(_message.Message):
213
175
  *,
214
176
  data: _builtins.bytes = ...,
215
177
  styler: Global___Styler | None = ...,
216
- width: _builtins.int = ...,
217
- height: _builtins.int = ...,
218
- use_container_width: _builtins.bool = ...,
219
178
  id: _builtins.str = ...,
220
179
  columns: _builtins.str = ...,
221
180
  editing_mode: Global___Arrow.EditingMode.ValueType = ...,
@@ -229,7 +188,7 @@ class Arrow(_message.Message):
229
188
  ) -> None: ...
230
189
  _HasFieldArgType: _TypeAlias = _typing.Literal["_placeholder", b"_placeholder", "_row_height", b"_row_height", "placeholder", b"placeholder", "row_height", b"row_height", "styler", b"styler"] # noqa: Y015
231
190
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
232
- _ClearFieldArgType: _TypeAlias = _typing.Literal["_placeholder", b"_placeholder", "_row_height", b"_row_height", "border_mode", b"border_mode", "column_order", b"column_order", "columns", b"columns", "data", b"data", "disabled", b"disabled", "editing_mode", b"editing_mode", "form_id", b"form_id", "height", b"height", "id", b"id", "placeholder", b"placeholder", "row_height", b"row_height", "selection_mode", b"selection_mode", "styler", b"styler", "use_container_width", b"use_container_width", "width", b"width"] # noqa: Y015
191
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["_placeholder", b"_placeholder", "_row_height", b"_row_height", "border_mode", b"border_mode", "column_order", b"column_order", "columns", b"columns", "data", b"data", "disabled", b"disabled", "editing_mode", b"editing_mode", "form_id", b"form_id", "id", b"id", "placeholder", b"placeholder", "row_height", b"row_height", "selection_mode", b"selection_mode", "styler", b"styler"] # noqa: Y015
233
192
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
234
193
  _WhichOneofReturnType__placeholder: _TypeAlias = _typing.Literal["placeholder"] # noqa: Y015
235
194
  _WhichOneofArgType__placeholder: _TypeAlias = _typing.Literal["_placeholder", b"_placeholder"] # noqa: Y015
@@ -15,14 +15,13 @@ _sym_db = _symbol_database.Default()
15
15
  from streamlit.proto import LabelVisibilityMessage_pb2 as streamlit_dot_proto_dot_LabelVisibilityMessage__pb2
16
16
 
17
17
 
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n streamlit/proto/AudioInput.proto\x1a,streamlit/proto/LabelVisibilityMessage.proto\"\xb5\x01\n\nAudioInput\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05label\x18\x02 \x01(\t\x12\x0c\n\x04help\x18\x03 \x01(\t\x12\x0f\n\x07\x66orm_id\x18\x04 \x01(\t\x12\x10\n\x08\x64isabled\x18\x05 \x01(\x08\x12\x31\n\x10label_visibility\x18\x06 \x01(\x0b\x32\x17.LabelVisibilityMessage\x12\x18\n\x0bsample_rate\x18\x07 \x01(\x05H\x00\x88\x01\x01\x42\x0e\n\x0c_sample_rateB/\n\x1c\x63om.snowflake.apps.streamlitB\x0f\x41udioInputProtob\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n streamlit/proto/AudioInput.proto\x1a,streamlit/proto/LabelVisibilityMessage.proto\"\xb5\x01\n\nAudioInput\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05label\x18\x02 \x01(\t\x12\x0c\n\x04help\x18\x03 \x01(\t\x12\x0f\n\x07\x66orm_id\x18\x04 \x01(\t\x12\x10\n\x08\x64isabled\x18\x05 \x01(\x08\x12\x31\n\x10label_visibility\x18\x06 \x01(\x0b\x32\x17.LabelVisibilityMessage\x12\x18\n\x0bsample_rate\x18\x07 \x01(\x05H\x00\x88\x01\x01\x42\x0e\n\x0c_sample_rateb\x06proto3')
19
19
 
20
20
  _globals = globals()
21
21
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
22
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'streamlit.proto.AudioInput_pb2', _globals)
23
23
  if not _descriptor._USE_C_DESCRIPTORS:
24
- _globals['DESCRIPTOR']._loaded_options = None
25
- _globals['DESCRIPTOR']._serialized_options = b'\n\034com.snowflake.apps.streamlitB\017AudioInputProto'
24
+ DESCRIPTOR._loaded_options = None
26
25
  _globals['_AUDIOINPUT']._serialized_start=83
27
26
  _globals['_AUDIOINPUT']._serialized_end=264
28
27
  # @@protoc_insertion_point(module_scope)
@@ -15,14 +15,13 @@ _sym_db = _symbol_database.Default()
15
15
  from streamlit.proto import WidthConfig_pb2 as streamlit_dot_proto_dot_WidthConfig__pb2
16
16
 
17
17
 
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bstreamlit/proto/Audio.proto\x1a!streamlit/proto/WidthConfig.proto\"\xca\x01\n\x05\x41udio\x12\x0b\n\x03url\x18\x05 \x01(\t\x12\x12\n\nstart_time\x18\x03 \x01(\x05\x12\x10\n\x08\x65nd_time\x18\x06 \x01(\x05\x12\x0c\n\x04loop\x18\x07 \x01(\x08\x12\x10\n\x08\x61utoplay\x18\x08 \x01(\x08\x12\n\n\x02id\x18\t \x01(\t\x12\x31\n\x0cwidth_config\x18\n \x01(\x0b\x32\x16.streamlit.WidthConfigH\x00\x88\x01\x01\x42\x0f\n\r_width_configJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x04\x10\x05R\x04\x64\x61taR\x06\x66ormatB*\n\x1c\x63om.snowflake.apps.streamlitB\nAudioProtob\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bstreamlit/proto/Audio.proto\x1a!streamlit/proto/WidthConfig.proto\"\xca\x01\n\x05\x41udio\x12\x0b\n\x03url\x18\x05 \x01(\t\x12\x12\n\nstart_time\x18\x03 \x01(\x05\x12\x10\n\x08\x65nd_time\x18\x06 \x01(\x05\x12\x0c\n\x04loop\x18\x07 \x01(\x08\x12\x10\n\x08\x61utoplay\x18\x08 \x01(\x08\x12\n\n\x02id\x18\t \x01(\t\x12\x31\n\x0cwidth_config\x18\n \x01(\x0b\x32\x16.streamlit.WidthConfigH\x00\x88\x01\x01\x42\x0f\n\r_width_configJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x04\x10\x05R\x04\x64\x61taR\x06\x66ormatb\x06proto3')
19
19
 
20
20
  _globals = globals()
21
21
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
22
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'streamlit.proto.Audio_pb2', _globals)
23
23
  if not _descriptor._USE_C_DESCRIPTORS:
24
- _globals['DESCRIPTOR']._loaded_options = None
25
- _globals['DESCRIPTOR']._serialized_options = b'\n\034com.snowflake.apps.streamlitB\nAudioProto'
24
+ DESCRIPTOR._loaded_options = None
26
25
  _globals['_AUDIO']._serialized_start=67
27
26
  _globals['_AUDIO']._serialized_end=269
28
27
  # @@protoc_insertion_point(module_scope)
@@ -14,14 +14,13 @@ _sym_db = _symbol_database.Default()
14
14
 
15
15
 
16
16
 
17
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"streamlit/proto/AuthRedirect.proto\"\x1b\n\x0c\x41uthRedirect\x12\x0b\n\x03url\x18\x01 \x01(\tB1\n\x1c\x63om.snowflake.apps.streamlitB\x11\x41uthRedirectProtob\x06proto3')
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"streamlit/proto/AuthRedirect.proto\"\x1b\n\x0c\x41uthRedirect\x12\x0b\n\x03url\x18\x01 \x01(\tb\x06proto3')
18
18
 
19
19
  _globals = globals()
20
20
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
21
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'streamlit.proto.AuthRedirect_pb2', _globals)
22
22
  if not _descriptor._USE_C_DESCRIPTORS:
23
- _globals['DESCRIPTOR']._loaded_options = None
24
- _globals['DESCRIPTOR']._serialized_options = b'\n\034com.snowflake.apps.streamlitB\021AuthRedirectProto'
23
+ DESCRIPTOR._loaded_options = None
25
24
  _globals['_AUTHREDIRECT']._serialized_start=38
26
25
  _globals['_AUTHREDIRECT']._serialized_end=65
27
26
  # @@protoc_insertion_point(module_scope)