streamlit-nightly 1.46.1.dev20250622__py3-none-any.whl → 1.46.1.dev20250624__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 (84) hide show
  1. streamlit/components/types/base_custom_component.py +2 -4
  2. streamlit/components/v1/component_registry.py +15 -2
  3. streamlit/config.py +56 -4
  4. streamlit/elements/code.py +3 -2
  5. streamlit/elements/form.py +2 -1
  6. streamlit/elements/widgets/button_group.py +40 -1
  7. streamlit/proto/NewSession_pb2.py +16 -16
  8. streamlit/proto/NewSession_pb2.pyi +17 -2
  9. streamlit/static/index.html +1 -1
  10. streamlit/static/manifest.json +214 -214
  11. streamlit/static/static/js/{ErrorOutline.esm.DV0xGZr0.js → ErrorOutline.esm.DcGodXA0.js} +1 -1
  12. streamlit/static/static/js/{FileDownload.esm.B5OHehZX.js → FileDownload.esm.BtTSWyv0.js} +1 -1
  13. streamlit/static/static/js/{FileHelper.CIllbZ_T.js → FileHelper.BOV_ijyF.js} +1 -1
  14. streamlit/static/static/js/{FormClearHelper.B4Xd3eAo.js → FormClearHelper.YYlwo10a.js} +1 -1
  15. streamlit/static/static/js/{Hooks.DCO6FLy2.js → Hooks.BoB69I0K.js} +1 -1
  16. streamlit/static/static/js/{InputInstructions.8iiiZurT.js → InputInstructions.B5C3dEon.js} +1 -1
  17. streamlit/static/static/js/{ProgressBar.7dxhGygF.js → ProgressBar.2T39z4H_.js} +2 -2
  18. streamlit/static/static/js/{RenderInPortalIfExists.D4Mwwa5a.js → RenderInPortalIfExists.Dr06opo0.js} +1 -1
  19. streamlit/static/static/js/{Toolbar.MfU_z1Pl.js → Toolbar.BRouzc5U.js} +1 -1
  20. streamlit/static/static/js/{base-input.CD_ZJb6M.js → base-input.PyN4CoyX.js} +3 -3
  21. streamlit/static/static/js/{checkbox.DHKvEdaN.js → checkbox.CpyGalPT.js} +2 -2
  22. streamlit/static/static/js/{createSuper.CYFdzcEc.js → createSuper.Jon9k3Yt.js} +1 -1
  23. streamlit/static/static/js/{data-grid-overlay-editor.CASJyml1.js → data-grid-overlay-editor.D4ghymBb.js} +1 -1
  24. streamlit/static/static/js/{downloader.BujRtTJQ.js → downloader.FX1msyAN.js} +1 -1
  25. streamlit/static/static/js/{es6.BzpKRHTl.js → es6.QGDMdnvM.js} +2 -2
  26. streamlit/static/static/js/{iframeResizer.contentWindow.DdNKjgL-.js → iframeResizer.contentWindow.t8qLRzyv.js} +1 -1
  27. streamlit/static/static/js/{index.l0tODCkU.js → index.2JQx94HQ.js} +1 -1
  28. streamlit/static/static/js/{index.SXFI-bxq.js → index.ArgFGqRm.js} +1 -1
  29. streamlit/static/static/js/{index.31L_nN7t.js → index.B-vIEt1m.js} +1 -1
  30. streamlit/static/static/js/{index.CCloC5pv.js → index.B2Y8O1Wt.js} +1 -1
  31. streamlit/static/static/js/{index.BYzu-8O6.js → index.B5UnBp6n.js} +1 -1
  32. streamlit/static/static/js/{index.C4zuEVgR.js → index.B7osuoZN.js} +1 -1
  33. streamlit/static/static/js/{index.CGTmrxQF.js → index.BG2gdqVa.js} +1 -1
  34. streamlit/static/static/js/{index.BRALdPQV.js → index.BJhXUMZ4.js} +1 -1
  35. streamlit/static/static/js/{index.RGCDyZwL.js → index.BM1_hMg8.js} +1 -1
  36. streamlit/static/static/js/{index.25z42FPO.js → index.BTUUpB01.js} +1 -1
  37. streamlit/static/static/js/{index.EBCAt5lH.js → index.BXxgCK9y.js} +1 -1
  38. streamlit/static/static/js/{index.UT1zwx6I.js → index.B_pohBxx.js} +1 -1
  39. streamlit/static/static/js/index.By43fiCF.js +1 -0
  40. streamlit/static/static/js/{index.ofH1nMYX.js → index.Bzp1Qysi.js} +1 -1
  41. streamlit/static/static/js/{index.BFZO9BwP.js → index.C-vLCSJp.js} +138 -112
  42. streamlit/static/static/js/{index.cKbFF_YI.js → index.C4qeNI_i.js} +1 -1
  43. streamlit/static/static/js/{index.DvR5u8dP.js → index.C78GEvay.js} +1 -1
  44. streamlit/static/static/js/{index.BF7tH6NK.js → index.C8r7DD-9.js} +1 -1
  45. streamlit/static/static/js/{index.CweOixv3.js → index.COUW2Eq4.js} +2 -2
  46. streamlit/static/static/js/{index.D33D625y.js → index.CU45_Nrh.js} +1 -1
  47. streamlit/static/static/js/{index.Cd7pSbPb.js → index.CUBt4-Uz.js} +1 -1
  48. streamlit/static/static/js/{index.BmCdua0H.js → index.CZttj0Fd.js} +1 -1
  49. streamlit/static/static/js/{index.DSUJ0c6K.js → index.CdJwjLfQ.js} +1 -1
  50. streamlit/static/static/js/{index.C4XoxASX.js → index.CuLeR7Zz.js} +1 -1
  51. streamlit/static/static/js/{index.B5CWfjKJ.js → index.CvFBPhOY.js} +1 -1
  52. streamlit/static/static/js/{index.BBxmbB8u.js → index.CwKcK2uB.js} +1 -1
  53. streamlit/static/static/js/{index.e7dbVhPC.js → index.D4M62uXW.js} +1 -1
  54. streamlit/static/static/js/{index.fSbFmy0I.js → index.DdfoIDPC.js} +1 -1
  55. streamlit/static/static/js/{index.XK0W3e5F.js → index.DgNa_UKX.js} +6 -6
  56. streamlit/static/static/js/{index.pFmc4GEU.js → index.Dieu6abC.js} +1 -1
  57. streamlit/static/static/js/{index.CW_IFCtB.js → index.DthY-obI.js} +1 -1
  58. streamlit/static/static/js/{index.CNPzEZK5.js → index.Dz6zHKtI.js} +1 -1
  59. streamlit/static/static/js/{index.CwTKDRFO.js → index.GgMflWG-.js} +1 -1
  60. streamlit/static/static/js/{index.CYj0qmZR.js → index.IZ-swmmu.js} +1 -1
  61. streamlit/static/static/js/index.PsjpMKwq.js +2 -0
  62. streamlit/static/static/js/{index.kWcXsYvp.js → index.cLUrTr09.js} +1 -1
  63. streamlit/static/static/js/{index.BLKUfpY9.js → index.kEHB5PaN.js} +1 -1
  64. streamlit/static/static/js/{input.Cc_dbkdO.js → input.mfVbl2I5.js} +2 -2
  65. streamlit/static/static/js/{memory.BUJhegEf.js → memory.B-p09GS3.js} +1 -1
  66. streamlit/static/static/js/{mergeWith.BihcIFU9.js → mergeWith.D6q7TPdQ.js} +1 -1
  67. streamlit/static/static/js/{number-overlay-editor.t4ZZhdY2.js → number-overlay-editor.QOWTlq5z.js} +1 -1
  68. streamlit/static/static/js/{possibleConstructorReturn.B1UQDThh.js → possibleConstructorReturn.DO-pRPNX.js} +1 -1
  69. streamlit/static/static/js/{sandbox.CISGR_4e.js → sandbox.DREGkhZ5.js} +1 -1
  70. streamlit/static/static/js/{textarea.BXc2-al_.js → textarea.RxMqblTR.js} +2 -2
  71. streamlit/static/static/js/{timepicker.CmUmXHhB.js → timepicker.BSrUPnyZ.js} +4 -4
  72. streamlit/static/static/js/{toConsumableArray.YAwDRCO5.js → toConsumableArray.BkyyIrpf.js} +1 -1
  73. streamlit/static/static/js/{uniqueId.B5Af-iXZ.js → uniqueId.CXqhuYjv.js} +1 -1
  74. streamlit/static/static/js/{useBasicWidgetState.GEeXHHcq.js → useBasicWidgetState.QQhMYIp5.js} +1 -1
  75. streamlit/static/static/js/{useOnInputChange.BUgD6B0U.js → useOnInputChange.DvWbafRm.js} +1 -1
  76. streamlit/static/static/js/{withFullScreenWrapper.Pb8hqWLi.js → withFullScreenWrapper.CX_bKrfm.js} +1 -1
  77. {streamlit_nightly-1.46.1.dev20250622.dist-info → streamlit_nightly-1.46.1.dev20250624.dist-info}/METADATA +1 -1
  78. {streamlit_nightly-1.46.1.dev20250622.dist-info → streamlit_nightly-1.46.1.dev20250624.dist-info}/RECORD +82 -82
  79. streamlit/static/static/js/index.B5SF9Bg7.js +0 -1
  80. streamlit/static/static/js/index.BsUjj-QK.js +0 -2
  81. {streamlit_nightly-1.46.1.dev20250622.data → streamlit_nightly-1.46.1.dev20250624.data}/scripts/streamlit.cmd +0 -0
  82. {streamlit_nightly-1.46.1.dev20250622.dist-info → streamlit_nightly-1.46.1.dev20250624.dist-info}/WHEEL +0 -0
  83. {streamlit_nightly-1.46.1.dev20250622.dist-info → streamlit_nightly-1.46.1.dev20250624.dist-info}/entry_points.txt +0 -0
  84. {streamlit_nightly-1.46.1.dev20250622.dist-info → streamlit_nightly-1.46.1.dev20250624.dist-info}/top_level.txt +0 -0
@@ -41,10 +41,8 @@ class BaseCustomComponent(ABC):
41
41
  url: str | None = None,
42
42
  module_name: str | None = None,
43
43
  ) -> None:
44
- if (path is None and url is None) or (path is not None and url is not None):
45
- raise StreamlitAPIException(
46
- "Either 'path' or 'url' must be set, but not both."
47
- )
44
+ if path is None and url is None:
45
+ raise StreamlitAPIException("Either 'path' or 'url' must be set.")
48
46
 
49
47
  self._name = name
50
48
  self._path = path
@@ -19,6 +19,7 @@ import os
19
19
  from pathlib import Path
20
20
  from typing import TYPE_CHECKING
21
21
 
22
+ from streamlit import config
22
23
  from streamlit.components.v1.custom_component import CustomComponent
23
24
  from streamlit.runtime import get_instance
24
25
  from streamlit.runtime.scriptrunner_utils.script_run_context import get_script_run_ctx
@@ -77,12 +78,15 @@ def declare_component(
77
78
  The path to serve the component's frontend files from. The path should
78
79
  be absolute. If ``path`` is ``None`` (default), Streamlit will serve
79
80
  the component from the location in ``url``. Either ``path`` or ``url``
80
- must be specified, but not both.
81
+ must be specified. If both are specified, then ``url`` will take
82
+ precedence.
81
83
 
82
84
  url: str or None
83
85
  The URL that the component is served from. If ``url`` is ``None``
84
86
  (default), Streamlit will serve the component from the location in
85
- ``path``. Either ``path`` or ``url`` must be specified, but not both.
87
+ ``path``. Either ``path`` or ``url`` must be specified. If both are
88
+ specified, then ``url`` will take precedence.
89
+
86
90
 
87
91
  Returns
88
92
  -------
@@ -109,6 +113,15 @@ def declare_component(
109
113
  # Build the component name.
110
114
  component_name = f"{module_name}.{name}"
111
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}/"
124
+
112
125
  # Create our component object, and register it.
113
126
  component = CustomComponent(
114
127
  name=component_name, path=path, url=url, module_name=module_name
streamlit/config.py CHANGED
@@ -825,6 +825,19 @@ _create_option(
825
825
  type_=str,
826
826
  )
827
827
 
828
+ _create_option(
829
+ "server.customComponentBaseUrlPath",
830
+ description="""
831
+ The base path for the URL where Streamlit should serve custom
832
+ components. If this config var is set and a call to ``declare_component``
833
+ does not specify a URL, the component's URL will be set to
834
+ ``f"{server.customComponentBaseUrlPath}/{component_name}/"``.
835
+ """,
836
+ default_val="",
837
+ type_=str,
838
+ visibility="hidden",
839
+ )
840
+
828
841
  # TODO: Rename to server.enableCorsProtection.
829
842
  _create_option(
830
843
  "server.enableCORS",
@@ -1210,6 +1223,20 @@ _create_theme_options(
1210
1223
  """,
1211
1224
  )
1212
1225
 
1226
+ _create_theme_options(
1227
+ "codeFontWeight",
1228
+ categories=["theme"],
1229
+ description="""
1230
+ The font weight for code blocks and code text.
1231
+
1232
+ This applies to inline code, code blocks (ex: `st.code`), and font in `st.json` and `st.help`.
1233
+ Valid values are 100-900, in increments of 100.
1234
+
1235
+ When unset, the default code font weight will be 400.
1236
+ """,
1237
+ type_=int,
1238
+ )
1239
+
1213
1240
  _create_theme_options(
1214
1241
  "headingFont",
1215
1242
  categories=["theme", CustomThemeCategories.SIDEBAR],
@@ -1318,6 +1345,17 @@ _create_theme_options(
1318
1345
  """,
1319
1346
  )
1320
1347
 
1348
+ _create_theme_options(
1349
+ "dataframeHeaderBackgroundColor",
1350
+ categories=["theme", CustomThemeCategories.SIDEBAR],
1351
+ description="""
1352
+ The background color of the dataframe's header.
1353
+
1354
+ If no dataframe header background color is set, Streamlit uses a mix of
1355
+ `theme.bgColor` and `theme.secondaryBg`.
1356
+ """,
1357
+ )
1358
+
1321
1359
  _create_theme_options(
1322
1360
  "showWidgetBorder",
1323
1361
  categories=["theme", CustomThemeCategories.SIDEBAR],
@@ -1327,6 +1365,16 @@ _create_theme_options(
1327
1365
  type_=bool,
1328
1366
  )
1329
1367
 
1368
+ _create_theme_options(
1369
+ "showSidebarBorder",
1370
+ categories=["theme"],
1371
+ description="""
1372
+ Whether to show a vertical separator between the sidebar and the main
1373
+ content area.
1374
+ """,
1375
+ type_=bool,
1376
+ )
1377
+
1330
1378
  _create_theme_options(
1331
1379
  "baseFontSize",
1332
1380
  categories=["theme"],
@@ -1341,13 +1389,17 @@ _create_theme_options(
1341
1389
  )
1342
1390
 
1343
1391
  _create_theme_options(
1344
- "showSidebarBorder",
1392
+ "baseFontWeight",
1345
1393
  categories=["theme"],
1346
1394
  description="""
1347
- Whether to show a vertical separator between the sidebar and the main
1348
- content area.
1395
+ Sets the root font weight for the app.
1396
+
1397
+ This determines the overall weight of text and UI elements.
1398
+ Valid values are 100-600, in increments of 100.
1399
+
1400
+ When unset, the font weight will be set to normal 400.
1349
1401
  """,
1350
- type_=bool,
1402
+ type_=int,
1351
1403
  )
1352
1404
 
1353
1405
  # Config Section: Secrets #
@@ -15,9 +15,10 @@
15
15
  from __future__ import annotations
16
16
 
17
17
  import re
18
- from typing import TYPE_CHECKING, Literal, cast
18
+ from typing import TYPE_CHECKING, cast
19
19
 
20
20
  from streamlit.elements.lib.layout_utils import (
21
+ Height,
21
22
  LayoutConfig,
22
23
  WidthWithoutContent,
23
24
  validate_height,
@@ -40,7 +41,7 @@ class CodeMixin:
40
41
  *,
41
42
  line_numbers: bool = False,
42
43
  wrap_lines: bool = False,
43
- height: int | Literal["content"] | None = "content",
44
+ height: Height | None = "content",
44
45
  width: WidthWithoutContent = "stretch",
45
46
  ) -> DeltaGenerator:
46
47
  """Display a code block with optional syntax highlighting.
@@ -18,6 +18,7 @@ from typing import TYPE_CHECKING, Literal, cast
18
18
 
19
19
  from streamlit.elements.lib.form_utils import FormData, current_form_id, is_in_form
20
20
  from streamlit.elements.lib.layout_utils import (
21
+ Height,
21
22
  Width,
22
23
  get_height_config,
23
24
  get_width_config,
@@ -75,7 +76,7 @@ class FormMixin:
75
76
  enter_to_submit: bool = True,
76
77
  border: bool = True,
77
78
  width: Width = "stretch",
78
- height: int | Literal["content"] = "content",
79
+ height: Height = "content",
79
80
  ) -> DeltaGenerator:
80
81
  """Create a form that batches elements together with a "Submit" button.
81
82
 
@@ -31,6 +31,11 @@ from typing import (
31
31
  from typing_extensions import TypeAlias
32
32
 
33
33
  from streamlit.elements.lib.form_utils import current_form_id
34
+ from streamlit.elements.lib.layout_utils import (
35
+ LayoutConfig,
36
+ Width,
37
+ validate_width,
38
+ )
34
39
  from streamlit.elements.lib.options_selector_utils import (
35
40
  check_and_convert_to_indices,
36
41
  convert_to_sequence_and_check_comparable,
@@ -276,6 +281,7 @@ class ButtonGroupMixin:
276
281
  on_change: WidgetCallback | None = None,
277
282
  args: WidgetArgs | None = None,
278
283
  kwargs: WidgetKwargs | None = None,
284
+ width: Width = "content",
279
285
  ) -> Literal[0, 1] | None: ...
280
286
  @overload
281
287
  def feedback(
@@ -287,6 +293,7 @@ class ButtonGroupMixin:
287
293
  on_change: WidgetCallback | None = None,
288
294
  args: WidgetArgs | None = None,
289
295
  kwargs: WidgetKwargs | None = None,
296
+ width: Width = "content",
290
297
  ) -> Literal[0, 1, 2, 3, 4] | None: ...
291
298
  @gather_metrics("feedback")
292
299
  def feedback(
@@ -298,6 +305,7 @@ class ButtonGroupMixin:
298
305
  on_change: WidgetCallback | None = None,
299
306
  args: WidgetArgs | None = None,
300
307
  kwargs: WidgetKwargs | None = None,
308
+ width: Width = "content",
301
309
  ) -> int | None:
302
310
  """Display a feedback widget.
303
311
 
@@ -338,6 +346,11 @@ class ButtonGroupMixin:
338
346
  kwargs : dict
339
347
  An optional dict of kwargs to pass to the callback.
340
348
 
349
+ width : int or "stretch" or "content"
350
+ The width of the feedback widget. Can be an integer (pixels),
351
+ "stretch" to use the full width of the container, or "content"
352
+ (default) to size based on the content.
353
+
341
354
  Returns
342
355
  -------
343
356
  int or None
@@ -408,6 +421,7 @@ class ButtonGroupMixin:
408
421
  kwargs=kwargs,
409
422
  selection_visualization=selection_visualization,
410
423
  style="borderless",
424
+ width=width,
411
425
  )
412
426
  return sentiment.value
413
427
 
@@ -427,6 +441,7 @@ class ButtonGroupMixin:
427
441
  kwargs: WidgetKwargs | None = None,
428
442
  disabled: bool = False,
429
443
  label_visibility: LabelVisibility = "visible",
444
+ width: Width = "content",
430
445
  ) -> V | None: ...
431
446
  @overload
432
447
  def pills(
@@ -444,6 +459,7 @@ class ButtonGroupMixin:
444
459
  kwargs: WidgetKwargs | None = None,
445
460
  disabled: bool = False,
446
461
  label_visibility: LabelVisibility = "visible",
462
+ width: Width = "content",
447
463
  ) -> list[V]: ...
448
464
  @gather_metrics("pills")
449
465
  def pills(
@@ -461,6 +477,7 @@ class ButtonGroupMixin:
461
477
  kwargs: WidgetKwargs | None = None,
462
478
  disabled: bool = False,
463
479
  label_visibility: LabelVisibility = "visible",
480
+ width: Width = "content",
464
481
  ) -> list[V] | V | None:
465
482
  r"""Display a pills widget.
466
483
 
@@ -553,6 +570,11 @@ class ButtonGroupMixin:
553
570
  label, which can help keep the widget aligned with other widgets.
554
571
  If this is ``"collapsed"``, Streamlit displays no label or spacer.
555
572
 
573
+ width: int or "stretch" or "content"
574
+ The width of the widget. Can be an integer (pixels), "stretch" to use
575
+ the full width of the container, or "content" (default) to size based
576
+ on the content.
577
+
556
578
  Returns
557
579
  -------
558
580
  list of V, V, or None
@@ -618,6 +640,7 @@ class ButtonGroupMixin:
618
640
  kwargs=kwargs,
619
641
  disabled=disabled,
620
642
  label_visibility=label_visibility,
643
+ width=width,
621
644
  )
622
645
 
623
646
  @overload
@@ -636,6 +659,7 @@ class ButtonGroupMixin:
636
659
  kwargs: WidgetKwargs | None = None,
637
660
  disabled: bool = False,
638
661
  label_visibility: LabelVisibility = "visible",
662
+ width: Width = "content",
639
663
  ) -> V | None: ...
640
664
  @overload
641
665
  def segmented_control(
@@ -653,6 +677,7 @@ class ButtonGroupMixin:
653
677
  kwargs: WidgetKwargs | None = None,
654
678
  disabled: bool = False,
655
679
  label_visibility: LabelVisibility = "visible",
680
+ width: Width = "content",
656
681
  ) -> list[V]: ...
657
682
 
658
683
  @gather_metrics("segmented_control")
@@ -671,6 +696,7 @@ class ButtonGroupMixin:
671
696
  kwargs: WidgetKwargs | None = None,
672
697
  disabled: bool = False,
673
698
  label_visibility: LabelVisibility = "visible",
699
+ width: Width = "content",
674
700
  ) -> list[V] | V | None:
675
701
  r"""Display a segmented control widget.
676
702
 
@@ -762,6 +788,11 @@ class ButtonGroupMixin:
762
788
  label, which can help keep the widget aligned with other widgets.
763
789
  If this is ``"collapsed"``, Streamlit displays no label or spacer.
764
790
 
791
+ width: int or "stretch" or "content"
792
+ The width of the widget. Can be an integer (pixels), "stretch" to
793
+ use the full width of the container, or "content" (default) to size
794
+ based on the content.
795
+
765
796
  Returns
766
797
  -------
767
798
  list of V, V, or None
@@ -830,6 +861,7 @@ class ButtonGroupMixin:
830
861
  kwargs=kwargs,
831
862
  disabled=disabled,
832
863
  label_visibility=label_visibility,
864
+ width=width,
833
865
  )
834
866
 
835
867
  @gather_metrics("_internal_button_group")
@@ -849,6 +881,7 @@ class ButtonGroupMixin:
849
881
  label: str | None = None,
850
882
  label_visibility: LabelVisibility = "visible",
851
883
  help: str | None = None,
884
+ width: Width = "content",
852
885
  ) -> list[V] | V | None:
853
886
  maybe_raise_label_warnings(label, label_visibility)
854
887
 
@@ -902,6 +935,7 @@ class ButtonGroupMixin:
902
935
  kwargs=kwargs,
903
936
  label=label,
904
937
  label_visibility=label_visibility,
938
+ width=width,
905
939
  )
906
940
 
907
941
  if selection_mode == "multi":
@@ -932,6 +966,7 @@ class ButtonGroupMixin:
932
966
  label: str | None = None,
933
967
  label_visibility: LabelVisibility = "visible",
934
968
  help: str | None = None,
969
+ width: Width = "content",
935
970
  ) -> RegisterWidgetResult[T]:
936
971
  _maybe_raise_selection_mode_warning(selection_mode)
937
972
 
@@ -967,6 +1002,9 @@ class ButtonGroupMixin:
967
1002
  if default is not None and len(default) == 0:
968
1003
  _default = None
969
1004
 
1005
+ validate_width(width, allow_content=True)
1006
+ layout_config = LayoutConfig(width=width)
1007
+
970
1008
  check_widget_policies(self.dg, key, on_change, default_value=_default)
971
1009
 
972
1010
  widget_name = "button_group"
@@ -989,6 +1027,7 @@ class ButtonGroupMixin:
989
1027
  default=default,
990
1028
  click_mode=parsed_selection_mode,
991
1029
  style=style,
1030
+ width=width,
992
1031
  )
993
1032
 
994
1033
  proto = _build_proto(
@@ -1023,7 +1062,7 @@ class ButtonGroupMixin:
1023
1062
  if ctx:
1024
1063
  save_for_app_testing(ctx, element_id, format_func)
1025
1064
 
1026
- self.dg._enqueue(widget_name, proto)
1065
+ self.dg._enqueue(widget_name, proto, layout_config=layout_config)
1027
1066
 
1028
1067
  return widget_state
1029
1068
 
@@ -16,7 +16,7 @@ from streamlit.proto import AppPage_pb2 as streamlit_dot_proto_dot_AppPage__pb2
16
16
  from streamlit.proto import SessionStatus_pb2 as streamlit_dot_proto_dot_SessionStatus__pb2
17
17
 
18
18
 
19
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n streamlit/proto/NewSession.proto\x1a\x1dstreamlit/proto/AppPage.proto\x1a#streamlit/proto/SessionStatus.proto\"\xa5\x02\n\nNewSession\x12\x1f\n\ninitialize\x18\x01 \x01(\x0b\x32\x0b.Initialize\x12\x15\n\rscript_run_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x18\n\x10main_script_path\x18\x04 \x01(\t\x12\x17\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x07.Config\x12(\n\x0c\x63ustom_theme\x18\x07 \x01(\x0b\x32\x12.CustomThemeConfig\x12\x1b\n\tapp_pages\x18\x08 \x03(\x0b\x32\x08.AppPage\x12\x18\n\x10page_script_hash\x18\t \x01(\t\x12\x1d\n\x15\x66ragment_ids_this_run\x18\n \x03(\t\x12\x18\n\x10main_script_hash\x18\x0b \x01(\tJ\x04\x08\x05\x10\x06\"\xba\x01\n\nInitialize\x12\x1c\n\tuser_info\x18\x01 \x01(\x0b\x32\t.UserInfo\x12*\n\x10\x65nvironment_info\x18\x03 \x01(\x0b\x32\x10.EnvironmentInfo\x12&\n\x0esession_status\x18\x04 \x01(\x0b\x32\x0e.SessionStatus\x12\x14\n\x0c\x63ommand_line\x18\x05 \x01(\t\x12\x12\n\nsession_id\x18\x06 \x01(\t\x12\x10\n\x08is_hello\x18\x07 \x01(\x08\"\x97\x02\n\x06\x43onfig\x12\x1a\n\x12gather_usage_stats\x18\x02 \x01(\x08\x12\x1e\n\x16max_cached_message_age\x18\x03 \x01(\x05\x12\x14\n\x0cmapbox_token\x18\x04 \x01(\t\x12\x19\n\x11\x61llow_run_on_save\x18\x05 \x01(\x08\x12\x14\n\x0chide_top_bar\x18\x06 \x01(\x08\x12\x18\n\x10hide_sidebar_nav\x18\x07 \x01(\x08\x12)\n\x0ctoolbar_mode\x18\x08 \x01(\x0e\x32\x13.Config.ToolbarMode\"?\n\x0bToolbarMode\x12\x08\n\x04\x41UTO\x10\x00\x12\r\n\tDEVELOPER\x10\x01\x12\n\n\x06VIEWER\x10\x02\x12\x0b\n\x07MINIMAL\x10\x03J\x04\x08\x01\x10\x02\"\x84\t\n\x11\x43ustomThemeConfig\x12\x15\n\rprimary_color\x18\x01 \x01(\t\x12\"\n\x1asecondary_background_color\x18\x02 \x01(\t\x12\x18\n\x10\x62\x61\x63kground_color\x18\x03 \x01(\t\x12\x12\n\ntext_color\x18\x04 \x01(\t\x12+\n\x04\x66ont\x18\x05 \x01(\x0e\x32\x1d.CustomThemeConfig.FontFamily\x12*\n\x04\x62\x61se\x18\x06 \x01(\x0e\x32\x1c.CustomThemeConfig.BaseTheme\x12\x1f\n\x17widget_background_color\x18\x07 \x01(\t\x12\x1b\n\x13widget_border_color\x18\x08 \x01(\t\x12\x15\n\x05radii\x18\t \x01(\x0b\x32\x06.Radii\x12\x14\n\x0cheading_font\x18\x0c \x01(\t\x12\x11\n\tbody_font\x18\r \x01(\t\x12\x11\n\tcode_font\x18\x0e \x01(\t\x12\x1d\n\nfont_faces\x18\x0f \x03(\x0b\x32\t.FontFace\x12\x1e\n\nfont_sizes\x18\x10 \x01(\x0b\x32\n.FontSizes\x12!\n\x19skeleton_background_color\x18\x11 \x01(\t\x12\x18\n\x0b\x62\x61se_radius\x18\x12 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rbutton_radius\x18\x1a \x01(\tH\x01\x88\x01\x01\x12\x19\n\x0c\x62order_color\x18\x13 \x01(\tH\x02\x88\x01\x01\x12#\n\x16\x64\x61taframe_border_color\x18\x1b \x01(\tH\x03\x88\x01\x01\x12\x1f\n\x12show_widget_border\x18\x14 \x01(\x08H\x04\x88\x01\x01\x12\x17\n\nlink_color\x18\x15 \x01(\tH\x05\x88\x01\x01\x12\x1b\n\x0elink_underline\x18\x1d \x01(\x08H\x06\x88\x01\x01\x12\x1b\n\x0e\x62\x61se_font_size\x18\x16 \x01(\x05H\x07\x88\x01\x01\x12\x1b\n\x0e\x63ode_font_size\x18\x1c \x01(\tH\x08\x88\x01\x01\x12 \n\x13show_sidebar_border\x18\x17 \x01(\x08H\t\x88\x01\x01\x12(\n\x07sidebar\x18\x18 \x01(\x0b\x32\x12.CustomThemeConfigH\n\x88\x01\x01\x12\"\n\x15\x63ode_background_color\x18\x19 \x01(\tH\x0b\x88\x01\x01\" \n\tBaseTheme\x12\t\n\x05LIGHT\x10\x00\x12\x08\n\x04\x44\x41RK\x10\x01\"6\n\nFontFamily\x12\x0e\n\nSANS_SERIF\x10\x00\x12\t\n\x05SERIF\x10\x01\x12\r\n\tMONOSPACE\x10\x02\x42\x0e\n\x0c_base_radiusB\x10\n\x0e_button_radiusB\x0f\n\r_border_colorB\x19\n\x17_dataframe_border_colorB\x15\n\x13_show_widget_borderB\r\n\x0b_link_colorB\x11\n\x0f_link_underlineB\x11\n\x0f_base_font_sizeB\x11\n\x0f_code_font_sizeB\x16\n\x14_show_sidebar_borderB\n\n\x08_sidebarB\x18\n\x16_code_background_color\"w\n\x08\x46ontFace\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x0e\n\x06\x66\x61mily\x18\x02 \x01(\t\x12\x12\n\x06weight\x18\x03 \x01(\x05\x42\x02\x18\x01\x12\x14\n\x0cweight_range\x18\x05 \x01(\t\x12\r\n\x05style\x18\x04 \x01(\t\x12\x15\n\runicode_range\x18\x06 \x01(\t\"<\n\x05Radii\x12\x1a\n\x12\x62\x61se_widget_radius\x18\x01 \x01(\x05\x12\x17\n\x0f\x63heckbox_radius\x18\x02 \x01(\x05\"T\n\tFontSizes\x12\x16\n\x0etiny_font_size\x18\x01 \x01(\x05\x12\x17\n\x0fsmall_font_size\x18\x02 \x01(\x05\x12\x16\n\x0e\x62\x61se_font_size\x18\x03 \x01(\x05\"a\n\x08UserInfo\x12\x17\n\x0finstallation_id\x18\x01 \x01(\t\x12\x1a\n\x12installation_id_v3\x18\x05 \x01(\t\x12\x1a\n\x12installation_id_v4\x18\x06 \x01(\tJ\x04\x08\x02\x10\x03\"l\n\x0f\x45nvironmentInfo\x12\x19\n\x11streamlit_version\x18\x01 \x01(\t\x12\x16\n\x0epython_version\x18\x02 \x01(\t\x12\x11\n\tserver_os\x18\x03 \x01(\t\x12\x13\n\x0bhas_display\x18\x04 \x01(\x08\x42/\n\x1c\x63om.snowflake.apps.streamlitB\x0fNewSessionProtob\x06proto3')
19
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n streamlit/proto/NewSession.proto\x1a\x1dstreamlit/proto/AppPage.proto\x1a#streamlit/proto/SessionStatus.proto\"\xa5\x02\n\nNewSession\x12\x1f\n\ninitialize\x18\x01 \x01(\x0b\x32\x0b.Initialize\x12\x15\n\rscript_run_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x18\n\x10main_script_path\x18\x04 \x01(\t\x12\x17\n\x06\x63onfig\x18\x06 \x01(\x0b\x32\x07.Config\x12(\n\x0c\x63ustom_theme\x18\x07 \x01(\x0b\x32\x12.CustomThemeConfig\x12\x1b\n\tapp_pages\x18\x08 \x03(\x0b\x32\x08.AppPage\x12\x18\n\x10page_script_hash\x18\t \x01(\t\x12\x1d\n\x15\x66ragment_ids_this_run\x18\n \x03(\t\x12\x18\n\x10main_script_hash\x18\x0b \x01(\tJ\x04\x08\x05\x10\x06\"\xba\x01\n\nInitialize\x12\x1c\n\tuser_info\x18\x01 \x01(\x0b\x32\t.UserInfo\x12*\n\x10\x65nvironment_info\x18\x03 \x01(\x0b\x32\x10.EnvironmentInfo\x12&\n\x0esession_status\x18\x04 \x01(\x0b\x32\x0e.SessionStatus\x12\x14\n\x0c\x63ommand_line\x18\x05 \x01(\t\x12\x12\n\nsession_id\x18\x06 \x01(\t\x12\x10\n\x08is_hello\x18\x07 \x01(\x08\"\x97\x02\n\x06\x43onfig\x12\x1a\n\x12gather_usage_stats\x18\x02 \x01(\x08\x12\x1e\n\x16max_cached_message_age\x18\x03 \x01(\x05\x12\x14\n\x0cmapbox_token\x18\x04 \x01(\t\x12\x19\n\x11\x61llow_run_on_save\x18\x05 \x01(\x08\x12\x14\n\x0chide_top_bar\x18\x06 \x01(\x08\x12\x18\n\x10hide_sidebar_nav\x18\x07 \x01(\x08\x12)\n\x0ctoolbar_mode\x18\x08 \x01(\x0e\x32\x13.Config.ToolbarMode\"?\n\x0bToolbarMode\x12\x08\n\x04\x41UTO\x10\x00\x12\r\n\tDEVELOPER\x10\x01\x12\n\n\x06VIEWER\x10\x02\x12\x0b\n\x07MINIMAL\x10\x03J\x04\x08\x01\x10\x02\"\xc2\n\n\x11\x43ustomThemeConfig\x12\x15\n\rprimary_color\x18\x01 \x01(\t\x12\"\n\x1asecondary_background_color\x18\x02 \x01(\t\x12\x18\n\x10\x62\x61\x63kground_color\x18\x03 \x01(\t\x12\x12\n\ntext_color\x18\x04 \x01(\t\x12+\n\x04\x66ont\x18\x05 \x01(\x0e\x32\x1d.CustomThemeConfig.FontFamily\x12*\n\x04\x62\x61se\x18\x06 \x01(\x0e\x32\x1c.CustomThemeConfig.BaseTheme\x12\x1f\n\x17widget_background_color\x18\x07 \x01(\t\x12\x1b\n\x13widget_border_color\x18\x08 \x01(\t\x12\x15\n\x05radii\x18\t \x01(\x0b\x32\x06.Radii\x12\x14\n\x0cheading_font\x18\x0c \x01(\t\x12\x11\n\tbody_font\x18\r \x01(\t\x12\x11\n\tcode_font\x18\x0e \x01(\t\x12\x1d\n\nfont_faces\x18\x0f \x03(\x0b\x32\t.FontFace\x12\x1e\n\nfont_sizes\x18\x10 \x01(\x0b\x32\n.FontSizes\x12!\n\x19skeleton_background_color\x18\x11 \x01(\t\x12\x18\n\x0b\x62\x61se_radius\x18\x12 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rbutton_radius\x18\x1a \x01(\tH\x01\x88\x01\x01\x12\x19\n\x0c\x62order_color\x18\x13 \x01(\tH\x02\x88\x01\x01\x12#\n\x16\x64\x61taframe_border_color\x18\x1b \x01(\tH\x03\x88\x01\x01\x12\x1f\n\x12show_widget_border\x18\x14 \x01(\x08H\x04\x88\x01\x01\x12\x17\n\nlink_color\x18\x15 \x01(\tH\x05\x88\x01\x01\x12\x1b\n\x0elink_underline\x18\x1d \x01(\x08H\x06\x88\x01\x01\x12\x1b\n\x0e\x62\x61se_font_size\x18\x16 \x01(\x05H\x07\x88\x01\x01\x12\x1d\n\x10\x62\x61se_font_weight\x18\x1e \x01(\x05H\x08\x88\x01\x01\x12\x1d\n\x10\x63ode_font_weight\x18 \x01(\x05H\t\x88\x01\x01\x12\x1b\n\x0e\x63ode_font_size\x18\x1c \x01(\tH\n\x88\x01\x01\x12 \n\x13show_sidebar_border\x18\x17 \x01(\x08H\x0b\x88\x01\x01\x12(\n\x07sidebar\x18\x18 \x01(\x0b\x32\x12.CustomThemeConfigH\x0c\x88\x01\x01\x12\"\n\x15\x63ode_background_color\x18\x19 \x01(\tH\r\x88\x01\x01\x12.\n!dataframe_header_background_color\x18\x1f \x01(\tH\x0e\x88\x01\x01\" \n\tBaseTheme\x12\t\n\x05LIGHT\x10\x00\x12\x08\n\x04\x44\x41RK\x10\x01\"6\n\nFontFamily\x12\x0e\n\nSANS_SERIF\x10\x00\x12\t\n\x05SERIF\x10\x01\x12\r\n\tMONOSPACE\x10\x02\x42\x0e\n\x0c_base_radiusB\x10\n\x0e_button_radiusB\x0f\n\r_border_colorB\x19\n\x17_dataframe_border_colorB\x15\n\x13_show_widget_borderB\r\n\x0b_link_colorB\x11\n\x0f_link_underlineB\x11\n\x0f_base_font_sizeB\x13\n\x11_base_font_weightB\x13\n\x11_code_font_weightB\x11\n\x0f_code_font_sizeB\x16\n\x14_show_sidebar_borderB\n\n\x08_sidebarB\x18\n\x16_code_background_colorB$\n\"_dataframe_header_background_color\"w\n\x08\x46ontFace\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x0e\n\x06\x66\x61mily\x18\x02 \x01(\t\x12\x12\n\x06weight\x18\x03 \x01(\x05\x42\x02\x18\x01\x12\x14\n\x0cweight_range\x18\x05 \x01(\t\x12\r\n\x05style\x18\x04 \x01(\t\x12\x15\n\runicode_range\x18\x06 \x01(\t\"<\n\x05Radii\x12\x1a\n\x12\x62\x61se_widget_radius\x18\x01 \x01(\x05\x12\x17\n\x0f\x63heckbox_radius\x18\x02 \x01(\x05\"T\n\tFontSizes\x12\x16\n\x0etiny_font_size\x18\x01 \x01(\x05\x12\x17\n\x0fsmall_font_size\x18\x02 \x01(\x05\x12\x16\n\x0e\x62\x61se_font_size\x18\x03 \x01(\x05\"a\n\x08UserInfo\x12\x17\n\x0finstallation_id\x18\x01 \x01(\t\x12\x1a\n\x12installation_id_v3\x18\x05 \x01(\t\x12\x1a\n\x12installation_id_v4\x18\x06 \x01(\tJ\x04\x08\x02\x10\x03\"l\n\x0f\x45nvironmentInfo\x12\x19\n\x11streamlit_version\x18\x01 \x01(\t\x12\x16\n\x0epython_version\x18\x02 \x01(\t\x12\x11\n\tserver_os\x18\x03 \x01(\t\x12\x13\n\x0bhas_display\x18\x04 \x01(\x08\x42/\n\x1c\x63om.snowflake.apps.streamlitB\x0fNewSessionProtob\x06proto3')
20
20
 
21
21
  _globals = globals()
22
22
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -35,19 +35,19 @@ if not _descriptor._USE_C_DESCRIPTORS:
35
35
  _globals['_CONFIG_TOOLBARMODE']._serialized_start=800
36
36
  _globals['_CONFIG_TOOLBARMODE']._serialized_end=863
37
37
  _globals['_CUSTOMTHEMECONFIG']._serialized_start=872
38
- _globals['_CUSTOMTHEMECONFIG']._serialized_end=2028
39
- _globals['_CUSTOMTHEMECONFIG_BASETHEME']._serialized_start=1705
40
- _globals['_CUSTOMTHEMECONFIG_BASETHEME']._serialized_end=1737
41
- _globals['_CUSTOMTHEMECONFIG_FONTFAMILY']._serialized_start=1739
42
- _globals['_CUSTOMTHEMECONFIG_FONTFAMILY']._serialized_end=1793
43
- _globals['_FONTFACE']._serialized_start=2030
44
- _globals['_FONTFACE']._serialized_end=2149
45
- _globals['_RADII']._serialized_start=2151
46
- _globals['_RADII']._serialized_end=2211
47
- _globals['_FONTSIZES']._serialized_start=2213
48
- _globals['_FONTSIZES']._serialized_end=2297
49
- _globals['_USERINFO']._serialized_start=2299
50
- _globals['_USERINFO']._serialized_end=2396
51
- _globals['_ENVIRONMENTINFO']._serialized_start=2398
52
- _globals['_ENVIRONMENTINFO']._serialized_end=2506
38
+ _globals['_CUSTOMTHEMECONFIG']._serialized_end=2218
39
+ _globals['_CUSTOMTHEMECONFIG_BASETHEME']._serialized_start=1815
40
+ _globals['_CUSTOMTHEMECONFIG_BASETHEME']._serialized_end=1847
41
+ _globals['_CUSTOMTHEMECONFIG_FONTFAMILY']._serialized_start=1849
42
+ _globals['_CUSTOMTHEMECONFIG_FONTFAMILY']._serialized_end=1903
43
+ _globals['_FONTFACE']._serialized_start=2220
44
+ _globals['_FONTFACE']._serialized_end=2339
45
+ _globals['_RADII']._serialized_start=2341
46
+ _globals['_RADII']._serialized_end=2401
47
+ _globals['_FONTSIZES']._serialized_start=2403
48
+ _globals['_FONTSIZES']._serialized_end=2487
49
+ _globals['_USERINFO']._serialized_start=2489
50
+ _globals['_USERINFO']._serialized_end=2586
51
+ _globals['_ENVIRONMENTINFO']._serialized_start=2588
52
+ _globals['_ENVIRONMENTINFO']._serialized_end=2696
53
53
  # @@protoc_insertion_point(module_scope)
@@ -292,10 +292,13 @@ class CustomThemeConfig(google.protobuf.message.Message):
292
292
  LINK_COLOR_FIELD_NUMBER: builtins.int
293
293
  LINK_UNDERLINE_FIELD_NUMBER: builtins.int
294
294
  BASE_FONT_SIZE_FIELD_NUMBER: builtins.int
295
+ BASE_FONT_WEIGHT_FIELD_NUMBER: builtins.int
296
+ CODE_FONT_WEIGHT_FIELD_NUMBER: builtins.int
295
297
  CODE_FONT_SIZE_FIELD_NUMBER: builtins.int
296
298
  SHOW_SIDEBAR_BORDER_FIELD_NUMBER: builtins.int
297
299
  SIDEBAR_FIELD_NUMBER: builtins.int
298
300
  CODE_BACKGROUND_COLOR_FIELD_NUMBER: builtins.int
301
+ DATAFRAME_HEADER_BACKGROUND_COLOR_FIELD_NUMBER: builtins.int
299
302
  primary_color: builtins.str
300
303
  secondary_background_color: builtins.str
301
304
  background_color: builtins.str
@@ -320,9 +323,12 @@ class CustomThemeConfig(google.protobuf.message.Message):
320
323
  link_color: builtins.str
321
324
  link_underline: builtins.bool
322
325
  base_font_size: builtins.int
326
+ base_font_weight: builtins.int
327
+ code_font_weight: builtins.int
323
328
  code_font_size: builtins.str
324
329
  show_sidebar_border: builtins.bool
325
330
  code_background_color: builtins.str
331
+ dataframe_header_background_color: builtins.str
326
332
  @property
327
333
  def radii(self) -> global___Radii:
328
334
  """DEPRECATED: Please use the base_radius theme config instead:"""
@@ -361,16 +367,21 @@ class CustomThemeConfig(google.protobuf.message.Message):
361
367
  link_color: builtins.str | None = ...,
362
368
  link_underline: builtins.bool | None = ...,
363
369
  base_font_size: builtins.int | None = ...,
370
+ base_font_weight: builtins.int | None = ...,
371
+ code_font_weight: builtins.int | None = ...,
364
372
  code_font_size: builtins.str | None = ...,
365
373
  show_sidebar_border: builtins.bool | None = ...,
366
374
  sidebar: global___CustomThemeConfig | None = ...,
367
375
  code_background_color: builtins.str | None = ...,
376
+ dataframe_header_background_color: builtins.str | None = ...,
368
377
  ) -> None: ...
369
- def HasField(self, field_name: typing.Literal["_base_font_size", b"_base_font_size", "_base_radius", b"_base_radius", "_border_color", b"_border_color", "_button_radius", b"_button_radius", "_code_background_color", b"_code_background_color", "_code_font_size", b"_code_font_size", "_dataframe_border_color", b"_dataframe_border_color", "_link_color", b"_link_color", "_link_underline", b"_link_underline", "_show_sidebar_border", b"_show_sidebar_border", "_show_widget_border", b"_show_widget_border", "_sidebar", b"_sidebar", "base_font_size", b"base_font_size", "base_radius", b"base_radius", "border_color", b"border_color", "button_radius", b"button_radius", "code_background_color", b"code_background_color", "code_font_size", b"code_font_size", "dataframe_border_color", b"dataframe_border_color", "font_sizes", b"font_sizes", "link_color", b"link_color", "link_underline", b"link_underline", "radii", b"radii", "show_sidebar_border", b"show_sidebar_border", "show_widget_border", b"show_widget_border", "sidebar", b"sidebar"]) -> builtins.bool: ...
370
- def ClearField(self, field_name: typing.Literal["_base_font_size", b"_base_font_size", "_base_radius", b"_base_radius", "_border_color", b"_border_color", "_button_radius", b"_button_radius", "_code_background_color", b"_code_background_color", "_code_font_size", b"_code_font_size", "_dataframe_border_color", b"_dataframe_border_color", "_link_color", b"_link_color", "_link_underline", b"_link_underline", "_show_sidebar_border", b"_show_sidebar_border", "_show_widget_border", b"_show_widget_border", "_sidebar", b"_sidebar", "background_color", b"background_color", "base", b"base", "base_font_size", b"base_font_size", "base_radius", b"base_radius", "body_font", b"body_font", "border_color", b"border_color", "button_radius", b"button_radius", "code_background_color", b"code_background_color", "code_font", b"code_font", "code_font_size", b"code_font_size", "dataframe_border_color", b"dataframe_border_color", "font", b"font", "font_faces", b"font_faces", "font_sizes", b"font_sizes", "heading_font", b"heading_font", "link_color", b"link_color", "link_underline", b"link_underline", "primary_color", b"primary_color", "radii", b"radii", "secondary_background_color", b"secondary_background_color", "show_sidebar_border", b"show_sidebar_border", "show_widget_border", b"show_widget_border", "sidebar", b"sidebar", "skeleton_background_color", b"skeleton_background_color", "text_color", b"text_color", "widget_background_color", b"widget_background_color", "widget_border_color", b"widget_border_color"]) -> None: ...
378
+ def HasField(self, field_name: typing.Literal["_base_font_size", b"_base_font_size", "_base_font_weight", b"_base_font_weight", "_base_radius", b"_base_radius", "_border_color", b"_border_color", "_button_radius", b"_button_radius", "_code_background_color", b"_code_background_color", "_code_font_size", b"_code_font_size", "_code_font_weight", b"_code_font_weight", "_dataframe_border_color", b"_dataframe_border_color", "_dataframe_header_background_color", b"_dataframe_header_background_color", "_link_color", b"_link_color", "_link_underline", b"_link_underline", "_show_sidebar_border", b"_show_sidebar_border", "_show_widget_border", b"_show_widget_border", "_sidebar", b"_sidebar", "base_font_size", b"base_font_size", "base_font_weight", b"base_font_weight", "base_radius", b"base_radius", "border_color", b"border_color", "button_radius", b"button_radius", "code_background_color", b"code_background_color", "code_font_size", b"code_font_size", "code_font_weight", b"code_font_weight", "dataframe_border_color", b"dataframe_border_color", "dataframe_header_background_color", b"dataframe_header_background_color", "font_sizes", b"font_sizes", "link_color", b"link_color", "link_underline", b"link_underline", "radii", b"radii", "show_sidebar_border", b"show_sidebar_border", "show_widget_border", b"show_widget_border", "sidebar", b"sidebar"]) -> builtins.bool: ...
379
+ def ClearField(self, field_name: typing.Literal["_base_font_size", b"_base_font_size", "_base_font_weight", b"_base_font_weight", "_base_radius", b"_base_radius", "_border_color", b"_border_color", "_button_radius", b"_button_radius", "_code_background_color", b"_code_background_color", "_code_font_size", b"_code_font_size", "_code_font_weight", b"_code_font_weight", "_dataframe_border_color", b"_dataframe_border_color", "_dataframe_header_background_color", b"_dataframe_header_background_color", "_link_color", b"_link_color", "_link_underline", b"_link_underline", "_show_sidebar_border", b"_show_sidebar_border", "_show_widget_border", b"_show_widget_border", "_sidebar", b"_sidebar", "background_color", b"background_color", "base", b"base", "base_font_size", b"base_font_size", "base_font_weight", b"base_font_weight", "base_radius", b"base_radius", "body_font", b"body_font", "border_color", b"border_color", "button_radius", b"button_radius", "code_background_color", b"code_background_color", "code_font", b"code_font", "code_font_size", b"code_font_size", "code_font_weight", b"code_font_weight", "dataframe_border_color", b"dataframe_border_color", "dataframe_header_background_color", b"dataframe_header_background_color", "font", b"font", "font_faces", b"font_faces", "font_sizes", b"font_sizes", "heading_font", b"heading_font", "link_color", b"link_color", "link_underline", b"link_underline", "primary_color", b"primary_color", "radii", b"radii", "secondary_background_color", b"secondary_background_color", "show_sidebar_border", b"show_sidebar_border", "show_widget_border", b"show_widget_border", "sidebar", b"sidebar", "skeleton_background_color", b"skeleton_background_color", "text_color", b"text_color", "widget_background_color", b"widget_background_color", "widget_border_color", b"widget_border_color"]) -> None: ...
371
380
  @typing.overload
372
381
  def WhichOneof(self, oneof_group: typing.Literal["_base_font_size", b"_base_font_size"]) -> typing.Literal["base_font_size"] | None: ...
373
382
  @typing.overload
383
+ def WhichOneof(self, oneof_group: typing.Literal["_base_font_weight", b"_base_font_weight"]) -> typing.Literal["base_font_weight"] | None: ...
384
+ @typing.overload
374
385
  def WhichOneof(self, oneof_group: typing.Literal["_base_radius", b"_base_radius"]) -> typing.Literal["base_radius"] | None: ...
375
386
  @typing.overload
376
387
  def WhichOneof(self, oneof_group: typing.Literal["_border_color", b"_border_color"]) -> typing.Literal["border_color"] | None: ...
@@ -381,8 +392,12 @@ class CustomThemeConfig(google.protobuf.message.Message):
381
392
  @typing.overload
382
393
  def WhichOneof(self, oneof_group: typing.Literal["_code_font_size", b"_code_font_size"]) -> typing.Literal["code_font_size"] | None: ...
383
394
  @typing.overload
395
+ def WhichOneof(self, oneof_group: typing.Literal["_code_font_weight", b"_code_font_weight"]) -> typing.Literal["code_font_weight"] | None: ...
396
+ @typing.overload
384
397
  def WhichOneof(self, oneof_group: typing.Literal["_dataframe_border_color", b"_dataframe_border_color"]) -> typing.Literal["dataframe_border_color"] | None: ...
385
398
  @typing.overload
399
+ def WhichOneof(self, oneof_group: typing.Literal["_dataframe_header_background_color", b"_dataframe_header_background_color"]) -> typing.Literal["dataframe_header_background_color"] | None: ...
400
+ @typing.overload
386
401
  def WhichOneof(self, oneof_group: typing.Literal["_link_color", b"_link_color"]) -> typing.Literal["link_color"] | None: ...
387
402
  @typing.overload
388
403
  def WhichOneof(self, oneof_group: typing.Literal["_link_underline", b"_link_underline"]) -> typing.Literal["link_underline"] | None: ...
@@ -37,7 +37,7 @@
37
37
  <script>
38
38
  window.prerenderReady = false
39
39
  </script>
40
- <script type="module" crossorigin src="./static/js/index.BFZO9BwP.js"></script>
40
+ <script type="module" crossorigin src="./static/js/index.C-vLCSJp.js"></script>
41
41
  <link rel="stylesheet" crossorigin href="./static/css/index.CJVRHjQZ.css">
42
42
  </head>
43
43
  <body>