streamlit-nightly 1.45.2.dev20250606__py3-none-any.whl → 1.45.2.dev20250610__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.
- streamlit/commands/execution_control.py +1 -0
- streamlit/elements/code.py +2 -2
- streamlit/elements/lib/pandas_styler_utils.py +9 -1
- streamlit/elements/map.py +5 -25
- streamlit/elements/spinner.py +17 -1
- streamlit/elements/widgets/radio.py +21 -1
- streamlit/runtime/scriptrunner/script_runner.py +2 -0
- streamlit/static/index.html +5 -5
- streamlit/static/manifest.json +287 -287
- streamlit/static/static/css/{index.C6rq3aMZ.css → index.B57yoT8i.css} +1 -1
- streamlit/static/static/js/{ErrorOutline.esm.BPlheRUg.js → ErrorOutline.esm.BFmVpS9Y.js} +1 -1
- streamlit/static/static/js/{FileDownload.esm.DBPvJlIO.js → FileDownload.esm.CUwGnb6l.js} +1 -1
- streamlit/static/static/js/{FileHelper.D7hqm1rs.js → FileHelper.7jhiJzN9.js} +1 -1
- streamlit/static/static/js/{FormClearHelper.CiuGPbiw.js → FormClearHelper.DHx8ahLp.js} +1 -1
- streamlit/static/static/js/{Hooks.i-LEuQVS.js → Hooks.BDCbPb9Z.js} +1 -1
- streamlit/static/static/js/{InputInstructions.DiyV2lfI.js → InputInstructions.B29VfaHu.js} +1 -1
- streamlit/static/static/js/{ProgressBar.DsZbmX1F.js → ProgressBar.DCvzFED3.js} +1 -1
- streamlit/static/static/js/{RenderInPortalIfExists.BMEXbaG1.js → RenderInPortalIfExists.Dum6Yo4x.js} +1 -1
- streamlit/static/static/js/{Toolbar.DOqF9PKk.js → Toolbar.BKJU0yem.js} +1 -1
- streamlit/static/static/js/{base-input.BYC-_bsx.js → base-input.B5D5SCDU.js} +1 -1
- streamlit/static/static/js/{checkbox.DnegvBUn.js → checkbox.eyyRCmXH.js} +1 -1
- streamlit/static/static/js/{createSuper.Dcf6Du3v.js → createSuper.Bfw-n2CW.js} +1 -1
- streamlit/static/static/js/{data-grid-overlay-editor.ODa6iMNd.js → data-grid-overlay-editor.Ic_-1uWB.js} +1 -1
- streamlit/static/static/js/{downloader.CUFbUoPx.js → downloader.BrOujhsH.js} +1 -1
- streamlit/static/static/js/{es6.BX8MS_9G.js → es6.Da9PSRiO.js} +2 -2
- streamlit/static/static/js/{iframeResizer.contentWindow.Bu7_8x8S.js → iframeResizer.contentWindow.-m9KEHjj.js} +1 -1
- streamlit/static/static/js/{index.Bf7OiFUq.js → index.B2Wwybqa.js} +1 -1
- streamlit/static/static/js/{index.5kO-eVzI.js → index.B6hFQ_0c.js} +1 -1
- streamlit/static/static/js/{index.UEvOImwt.js → index.B9Hmg5tY.js} +1 -1
- streamlit/static/static/js/{index.DT_2un9f.js → index.B9zQe0Ch.js} +12 -12
- streamlit/static/static/js/{index.x6To5k1N.js → index.BCuDY7Wq.js} +1 -1
- streamlit/static/static/js/{index.CxgTbOOW.js → index.BFvBq9Ky.js} +1 -1
- streamlit/static/static/js/{index.-reZVx4t.js → index.B_hrvDfD.js} +1 -1
- streamlit/static/static/js/{index.6U8xZd9t.js → index.Bkc0rVhi.js} +1 -1
- streamlit/static/static/js/{index.HnTahnXx.js → index.BxCeuwGy.js} +11 -11
- streamlit/static/static/js/{index.cClaHld2.js → index.C2jhjPwI.js} +1 -1
- streamlit/static/static/js/{index.CF6QAdiF.js → index.C8Tx_yNT.js} +1 -1
- streamlit/static/static/js/{index.pJ5b-MCg.js → index.CVnrNDsY.js} +1 -1
- streamlit/static/static/js/{index.ClhWXWt6.js → index.CZ7DfyLC.js} +1 -1
- streamlit/static/static/js/{index.CfYt2tbH.js → index.CsG3cY4S.js} +1 -1
- streamlit/static/static/js/{index.DoOOYKo6.js → index.CsRqF1UT.js} +1 -1
- streamlit/static/static/js/{index.BSLU45nm.js → index.Cy5cgtmd.js} +1 -1
- streamlit/static/static/js/{index.kmRXFfH8.js → index.D-xYY77h.js} +1 -1
- streamlit/static/static/js/{index.DZvJRRXE.js → index.DD4IkJLw.js} +6 -6
- streamlit/static/static/js/{index.BSvv4neZ.js → index.DHyANL2t.js} +1 -1
- streamlit/static/static/js/{index.BpQQaYsH.js → index.DKRwWqPL.js} +1 -1
- streamlit/static/static/js/{index.D45QkWY6.js → index.DM31JZhq.js} +1 -1
- streamlit/static/static/js/{index.C1Ax3fWo.js → index.DVX3m8nA.js} +1 -1
- streamlit/static/static/js/{index.C5MN-1yU.js → index.DWZy7E8v.js} +1 -1
- streamlit/static/static/js/{index.D3prumL7.js → index.Da6TsobW.js} +1 -1
- streamlit/static/static/js/{index.DK6Kov-Y.js → index.DkDFCkmE.js} +1 -1
- streamlit/static/static/js/{index.htD_aLlM.js → index.DpjOn_mW.js} +1 -1
- streamlit/static/static/js/{index.Dupfq6Y_.js → index.Dv1JTAEg.js} +1 -1
- streamlit/static/static/js/{index.1wqJoatM.js → index.Dzd6lYTb.js} +1 -1
- streamlit/static/static/js/{index.BTofb2AK.js → index.E46WZGKk.js} +1 -1
- streamlit/static/static/js/{index.BaPm_YQ4.js → index.Ff_iBwit.js} +1 -1
- streamlit/static/static/js/{index.ChqQHZSD.js → index.LVLiaAG5.js} +1 -1
- streamlit/static/static/js/{index.Ctp7gmwv.js → index.X0NCujg7.js} +1 -1
- streamlit/static/static/js/{index.C35iYNLZ.js → index.bgJFjVuq.js} +20 -20
- streamlit/static/static/js/{index.CF1yxAvR.js → index.hHS2hw5y.js} +1 -1
- streamlit/static/static/js/{index.CzjTnGFD.js → index.lfluHnyb.js} +1 -1
- streamlit/static/static/js/{index.BRC4CPJr.js → index.rCHgixxf.js} +1 -1
- streamlit/static/static/js/{index.D9XODeBi.js → index.tgnkrUS7.js} +1 -1
- streamlit/static/static/js/{input.BbTx2QYD.js → input.CcBKvzV7.js} +1 -1
- streamlit/static/static/js/{memory.B6iT9_rU.js → memory.Dy3vhhGd.js} +1 -1
- streamlit/static/static/js/{mergeWith.DixCnRNB.js → mergeWith.Br7ttj2E.js} +1 -1
- streamlit/static/static/js/{number-overlay-editor.Q7y8nwGm.js → number-overlay-editor.Dp8qIE2c.js} +1 -1
- streamlit/static/static/js/{possibleConstructorReturn.BIBtSx1r.js → possibleConstructorReturn.DrBKFKPb.js} +1 -1
- streamlit/static/static/js/{sandbox.C2ZPzr_l.js → sandbox._fV6ffVT.js} +1 -1
- streamlit/static/static/js/{textarea.BMQ_ba_z.js → textarea.CG3YusUv.js} +1 -1
- streamlit/static/static/js/{timepicker.dDYgD4FB.js → timepicker.CgWFbpop.js} +1 -1
- streamlit/static/static/js/{toConsumableArray.D25TFALF.js → toConsumableArray.COmxQMZV.js} +1 -1
- streamlit/static/static/js/{uniqueId.D0Y_FD3n.js → uniqueId.Cp7qO6qN.js} +1 -1
- streamlit/static/static/js/{useBasicWidgetState.mCO15TrK.js → useBasicWidgetState.CunX1Hmv.js} +1 -1
- streamlit/static/static/js/{useOnInputChange.D2L-eHJs.js → useOnInputChange.DCd-U4SE.js} +1 -1
- streamlit/static/static/js/{withFullScreenWrapper.D8Fqz3rF.js → withFullScreenWrapper.C9CPnWj9.js} +1 -1
- streamlit/static/static/media/SourceSans-Bold.ttf.gn7Db9ke.woff2 +0 -0
- streamlit/static/static/media/SourceSans-BoldIt.ttf.Bp6Ygjgu.woff2 +0 -0
- streamlit/static/static/media/SourceSans-It.ttf.CKnmOrYX.woff2 +0 -0
- streamlit/static/static/media/SourceSans-Regular.ttf.BqTI-3mA.woff2 +0 -0
- streamlit/static/static/media/SourceSans-Semibold.ttf.BQV5CVwD.woff2 +0 -0
- streamlit/static/static/media/SourceSans-SemiboldIt.ttf.C62jiOej.woff2 +0 -0
- streamlit/static/static/media/SourceSerif-Bold.ttf.Csh8T7yr.woff2 +0 -0
- streamlit/static/static/media/SourceSerif-BoldIt.ttf.1j4hxMHI.woff2 +0 -0
- streamlit/static/static/media/SourceSerif-It.ttf.Cr-UUpZM.woff2 +0 -0
- streamlit/static/static/media/SourceSerif-Regular.ttf.BNbBs0kC.woff2 +0 -0
- streamlit/static/static/media/SourceSerif-Semibold.ttf.CL4HK1l8.woff2 +0 -0
- streamlit/static/static/media/SourceSerif-SemiboldIt.ttf.C2G1sf1n.woff2 +0 -0
- streamlit/watcher/local_sources_watcher.py +11 -3
- {streamlit_nightly-1.45.2.dev20250606.dist-info → streamlit_nightly-1.45.2.dev20250610.dist-info}/METADATA +1 -1
- {streamlit_nightly-1.45.2.dev20250606.dist-info → streamlit_nightly-1.45.2.dev20250610.dist-info}/RECORD +101 -101
- streamlit/static/static/media/SourceSansPro-Bold.-6c9oR8J.woff2 +0 -0
- streamlit/static/static/media/SourceSansPro-BoldItalic.DmM_grLY.woff2 +0 -0
- streamlit/static/static/media/SourceSansPro-Italic.I1ipWe7Q.woff2 +0 -0
- streamlit/static/static/media/SourceSansPro-Regular.DZLUzqI4.woff2 +0 -0
- streamlit/static/static/media/SourceSansPro-SemiBold.sKQIyTMz.woff2 +0 -0
- streamlit/static/static/media/SourceSansPro-SemiBoldItalic.C0wP0icr.woff2 +0 -0
- streamlit/static/static/media/SourceSerifPro-Bold.8TUnKj4x.woff2 +0 -0
- streamlit/static/static/media/SourceSerifPro-BoldItalic.CBVO7Ve7.woff2 +0 -0
- streamlit/static/static/media/SourceSerifPro-Italic.DkFgL2HZ.woff2 +0 -0
- streamlit/static/static/media/SourceSerifPro-Regular.CNJNET2S.woff2 +0 -0
- streamlit/static/static/media/SourceSerifPro-SemiBold.CHyh9GC5.woff2 +0 -0
- streamlit/static/static/media/SourceSerifPro-SemiBoldItalic.CBtz8sWN.woff2 +0 -0
- /streamlit/static/static/media/{SourceCodePro-Bold.CFEfr7-q.woff2 → SourceCode-Bold.ttf.CFEfr7-q.woff2} +0 -0
- /streamlit/static/static/media/{SourceCodePro-BoldItalic.C-LkFXxa.woff2 → SourceCode-BoldIt.ttf.C-LkFXxa.woff2} +0 -0
- /streamlit/static/static/media/{SourceCodePro-Italic.CxFOx7N-.woff2 → SourceCode-It.ttf.CxFOx7N-.woff2} +0 -0
- /streamlit/static/static/media/{SourceCodePro-Regular.CBOlD63d.woff2 → SourceCode-Regular.ttf.CBOlD63d.woff2} +0 -0
- /streamlit/static/static/media/{SourceCodePro-SemiBold.CFHwW3Wd.woff2 → SourceCode-Semibold.ttf.CFHwW3Wd.woff2} +0 -0
- /streamlit/static/static/media/{SourceCodePro-SemiBoldItalic.Cg2yRu82.woff2 → SourceCode-SemiboldIt.ttf.Cg2yRu82.woff2} +0 -0
- {streamlit_nightly-1.45.2.dev20250606.data → streamlit_nightly-1.45.2.dev20250610.data}/scripts/streamlit.cmd +0 -0
- {streamlit_nightly-1.45.2.dev20250606.dist-info → streamlit_nightly-1.45.2.dev20250610.dist-info}/WHEEL +0 -0
- {streamlit_nightly-1.45.2.dev20250606.dist-info → streamlit_nightly-1.45.2.dev20250610.dist-info}/entry_points.txt +0 -0
- {streamlit_nightly-1.45.2.dev20250606.dist-info → streamlit_nightly-1.45.2.dev20250610.dist-info}/top_level.txt +0 -0
@@ -236,6 +236,7 @@ def switch_page(page: str | Path | StreamlitPage) -> NoReturn: # type: ignore[m
|
|
236
236
|
query_string=ctx.query_string,
|
237
237
|
page_script_hash=page_script_hash,
|
238
238
|
cached_message_hashes=ctx.cached_message_hashes,
|
239
|
+
context_info=ctx.context_info,
|
239
240
|
)
|
240
241
|
)
|
241
242
|
# Force a yield point so the runner can do the rerun
|
streamlit/elements/code.py
CHANGED
@@ -14,6 +14,7 @@
|
|
14
14
|
|
15
15
|
from __future__ import annotations
|
16
16
|
|
17
|
+
import re
|
17
18
|
from typing import TYPE_CHECKING, cast
|
18
19
|
|
19
20
|
from streamlit.elements.lib.layout_utils import (
|
@@ -25,7 +26,6 @@ from streamlit.elements.lib.layout_utils import (
|
|
25
26
|
)
|
26
27
|
from streamlit.proto.Code_pb2 import Code as CodeProto
|
27
28
|
from streamlit.runtime.metrics_util import gather_metrics
|
28
|
-
from streamlit.string_util import clean_text
|
29
29
|
|
30
30
|
if TYPE_CHECKING:
|
31
31
|
from streamlit.delta_generator import DeltaGenerator
|
@@ -113,7 +113,7 @@ class CodeMixin:
|
|
113
113
|
height: 380px
|
114
114
|
"""
|
115
115
|
code_proto = CodeProto()
|
116
|
-
code_proto.code_text =
|
116
|
+
code_proto.code_text = re.sub(r"\n\Z", "", re.sub(r"\A\n", "", str(body)))
|
117
117
|
code_proto.language = language or "plaintext"
|
118
118
|
code_proto.show_line_numbers = line_numbers
|
119
119
|
code_proto.wrap_lines = wrap_lines
|
@@ -26,6 +26,8 @@ if TYPE_CHECKING:
|
|
26
26
|
|
27
27
|
from streamlit.proto.Arrow_pb2 import Arrow as ArrowProto
|
28
28
|
|
29
|
+
from enum import Enum
|
30
|
+
|
29
31
|
|
30
32
|
def marshall_styler(proto: ArrowProto, styler: Styler, default_uuid: str) -> None:
|
31
33
|
"""Marshall pandas.Styler into an Arrow proto.
|
@@ -265,6 +267,12 @@ def _use_display_values(df: DataFrame, styles: Mapping[str, Any]) -> DataFrame:
|
|
265
267
|
for cell in row:
|
266
268
|
if "id" in cell and (match := cell_selector_regex.match(cell["id"])):
|
267
269
|
r, c = map(int, match.groups())
|
268
|
-
|
270
|
+
# Check if the display value is an Enum type. Enum values need to be
|
271
|
+
# converted to their `.value` attribute to ensure proper serialization
|
272
|
+
# and display logic.
|
273
|
+
if isinstance(cell["display_value"], Enum):
|
274
|
+
new_df.iloc[r, c] = str(cell["display_value"].value)
|
275
|
+
else:
|
276
|
+
new_df.iloc[r, c] = str(cell["display_value"])
|
269
277
|
|
270
278
|
return new_df
|
streamlit/elements/map.py
CHANGED
@@ -230,23 +230,8 @@ class MapMixin:
|
|
230
230
|
height: 600px
|
231
231
|
|
232
232
|
"""
|
233
|
-
# This feature was turned off while we investigate why different
|
234
|
-
# map styles cause DeckGL to crash.
|
235
|
-
#
|
236
|
-
# For reference, this was the docstring for map_style:
|
237
|
-
#
|
238
|
-
# map_style : str, None
|
239
|
-
# One of Mapbox's map style URLs. A full list can be found here:
|
240
|
-
# https://docs.mapbox.com/api/maps/styles/#mapbox-styles
|
241
|
-
#
|
242
|
-
# This feature requires a Mapbox token. See the top of these docs
|
243
|
-
# for information on how to get one and set it up in Streamlit.
|
244
|
-
#
|
245
|
-
map_style = None
|
246
233
|
map_proto = DeckGlJsonChartProto()
|
247
|
-
deck_gl_json = to_deckgl_json(
|
248
|
-
data, latitude, longitude, size, color, map_style, zoom
|
249
|
-
)
|
234
|
+
deck_gl_json = to_deckgl_json(data, latitude, longitude, size, color, zoom)
|
250
235
|
marshall(
|
251
236
|
map_proto, deck_gl_json, use_container_width, width=width, height=height
|
252
237
|
)
|
@@ -264,7 +249,6 @@ def to_deckgl_json(
|
|
264
249
|
lon: str | None,
|
265
250
|
size: None | str | float,
|
266
251
|
color: None | str | Collection[float],
|
267
|
-
map_style: str | None,
|
268
252
|
zoom: int | None,
|
269
253
|
) -> str:
|
270
254
|
if data is None:
|
@@ -318,14 +302,6 @@ def to_deckgl_json(
|
|
318
302
|
}
|
319
303
|
]
|
320
304
|
|
321
|
-
if map_style:
|
322
|
-
if not config.get_option("mapbox.token"):
|
323
|
-
raise StreamlitAPIException(
|
324
|
-
"You need a Mapbox token in order to select a map type. "
|
325
|
-
"Refer to the docs for st.map for more information."
|
326
|
-
)
|
327
|
-
default["mapStyle"] = map_style
|
328
|
-
|
329
305
|
return json.dumps(default)
|
330
306
|
|
331
307
|
|
@@ -502,3 +478,7 @@ def marshall(
|
|
502
478
|
pydeck_proto.height = height
|
503
479
|
|
504
480
|
pydeck_proto.id = ""
|
481
|
+
|
482
|
+
mapbox_token = config.get_option("mapbox.token")
|
483
|
+
if mapbox_token:
|
484
|
+
pydeck_proto.mapbox_token = mapbox_token
|
streamlit/elements/spinner.py
CHANGED
@@ -19,6 +19,11 @@ import threading
|
|
19
19
|
from typing import TYPE_CHECKING, Final
|
20
20
|
|
21
21
|
import streamlit as st
|
22
|
+
from streamlit.elements.lib.layout_utils import (
|
23
|
+
LayoutConfig,
|
24
|
+
Width,
|
25
|
+
validate_width,
|
26
|
+
)
|
22
27
|
from streamlit.runtime.scriptrunner import add_script_run_ctx
|
23
28
|
|
24
29
|
if TYPE_CHECKING:
|
@@ -35,6 +40,7 @@ def spinner(
|
|
35
40
|
*,
|
36
41
|
show_time: bool = False,
|
37
42
|
_cache: bool = False,
|
43
|
+
width: Width = "content",
|
38
44
|
) -> Iterator[None]:
|
39
45
|
"""Display a loading spinner while executing a block of code.
|
40
46
|
|
@@ -59,6 +65,11 @@ def spinner(
|
|
59
65
|
elapsed time is displayed with a precision of 0.1 seconds. The time
|
60
66
|
format is not configurable.
|
61
67
|
|
68
|
+
width : "content", "stretch", or int
|
69
|
+
The width of the spinner. Can be "content" (default) to size the spinner
|
70
|
+
to its content, "stretch" to fill the container width, or an integer
|
71
|
+
number of pixels.
|
72
|
+
|
62
73
|
Example
|
63
74
|
-------
|
64
75
|
>>> import streamlit as st
|
@@ -77,6 +88,9 @@ def spinner(
|
|
77
88
|
from streamlit.proto.Spinner_pb2 import Spinner as SpinnerProto
|
78
89
|
from streamlit.string_util import clean_text
|
79
90
|
|
91
|
+
validate_width(width, allow_content=True)
|
92
|
+
layout_config = LayoutConfig(width=width)
|
93
|
+
|
80
94
|
message = st.empty()
|
81
95
|
|
82
96
|
display_message = True
|
@@ -91,7 +105,9 @@ def spinner(
|
|
91
105
|
spinner_proto.text = clean_text(text)
|
92
106
|
spinner_proto.cache = _cache
|
93
107
|
spinner_proto.show_time = show_time
|
94
|
-
message._enqueue(
|
108
|
+
message._enqueue(
|
109
|
+
"spinner", spinner_proto, layout_config=layout_config
|
110
|
+
)
|
95
111
|
|
96
112
|
add_script_run_ctx(threading.Timer(DELAY_SECS, set_message)).start()
|
97
113
|
|
@@ -22,6 +22,11 @@ from typing_extensions import Never
|
|
22
22
|
|
23
23
|
from streamlit.dataframe_util import OptionSequence, convert_anything_to_list
|
24
24
|
from streamlit.elements.lib.form_utils import current_form_id
|
25
|
+
from streamlit.elements.lib.layout_utils import (
|
26
|
+
LayoutConfig,
|
27
|
+
Width,
|
28
|
+
validate_width,
|
29
|
+
)
|
25
30
|
from streamlit.elements.lib.options_selector_utils import index_, maybe_coerce_enum
|
26
31
|
from streamlit.elements.lib.policies import (
|
27
32
|
check_widget_policies,
|
@@ -98,6 +103,7 @@ class RadioMixin:
|
|
98
103
|
horizontal: bool = False,
|
99
104
|
captions: Sequence[str] | None = None,
|
100
105
|
label_visibility: LabelVisibility = "visible",
|
106
|
+
width: Width = "content",
|
101
107
|
) -> None: ...
|
102
108
|
|
103
109
|
@overload
|
@@ -117,6 +123,7 @@ class RadioMixin:
|
|
117
123
|
horizontal: bool = False,
|
118
124
|
captions: Sequence[str] | None = None,
|
119
125
|
label_visibility: LabelVisibility = "visible",
|
126
|
+
width: Width = "content",
|
120
127
|
) -> T: ...
|
121
128
|
|
122
129
|
@overload
|
@@ -136,6 +143,7 @@ class RadioMixin:
|
|
136
143
|
horizontal: bool = False,
|
137
144
|
captions: Sequence[str] | None = None,
|
138
145
|
label_visibility: LabelVisibility = "visible",
|
146
|
+
width: Width = "content",
|
139
147
|
) -> T | None: ...
|
140
148
|
|
141
149
|
@gather_metrics("radio")
|
@@ -155,6 +163,7 @@ class RadioMixin:
|
|
155
163
|
horizontal: bool = False,
|
156
164
|
captions: Sequence[str] | None = None,
|
157
165
|
label_visibility: LabelVisibility = "visible",
|
166
|
+
width: Width = "content",
|
158
167
|
) -> T | None:
|
159
168
|
r"""Display a radio button widget.
|
160
169
|
|
@@ -243,6 +252,11 @@ class RadioMixin:
|
|
243
252
|
label, which can help keep the widget aligned with other widgets.
|
244
253
|
If this is ``"collapsed"``, Streamlit displays no label or spacer.
|
245
254
|
|
255
|
+
width : "content", "stretch", or int
|
256
|
+
The width of the widget. Can be "content" (default) to size the widget
|
257
|
+
to its content, "stretch" to fill the container width, or an integer
|
258
|
+
number of pixels.
|
259
|
+
|
246
260
|
Returns
|
247
261
|
-------
|
248
262
|
any
|
@@ -304,6 +318,7 @@ class RadioMixin:
|
|
304
318
|
captions=captions,
|
305
319
|
label_visibility=label_visibility,
|
306
320
|
ctx=ctx,
|
321
|
+
width=width,
|
307
322
|
)
|
308
323
|
|
309
324
|
def _radio(
|
@@ -323,6 +338,7 @@ class RadioMixin:
|
|
323
338
|
label_visibility: LabelVisibility = "visible",
|
324
339
|
captions: Sequence[str] | None = None,
|
325
340
|
ctx: ScriptRunContext | None,
|
341
|
+
width: Width = "content",
|
326
342
|
) -> T | None:
|
327
343
|
key = to_key(key)
|
328
344
|
|
@@ -334,6 +350,9 @@ class RadioMixin:
|
|
334
350
|
)
|
335
351
|
maybe_raise_label_warnings(label, label_visibility)
|
336
352
|
|
353
|
+
validate_width(width, allow_content=True)
|
354
|
+
layout_config = LayoutConfig(width=width)
|
355
|
+
|
337
356
|
opt = convert_anything_to_list(options)
|
338
357
|
check_python_comparable(opt)
|
339
358
|
|
@@ -348,6 +367,7 @@ class RadioMixin:
|
|
348
367
|
help=help,
|
349
368
|
horizontal=horizontal,
|
350
369
|
captions=captions,
|
370
|
+
width=width,
|
351
371
|
)
|
352
372
|
|
353
373
|
if not isinstance(index, int) and index is not None:
|
@@ -415,7 +435,7 @@ class RadioMixin:
|
|
415
435
|
|
416
436
|
if ctx:
|
417
437
|
save_for_app_testing(ctx, element_id, format_func)
|
418
|
-
self.dg._enqueue("radio", radio_proto)
|
438
|
+
self.dg._enqueue("radio", radio_proto, layout_config=layout_config)
|
419
439
|
return widget_state.value
|
420
440
|
|
421
441
|
@property
|
@@ -388,6 +388,8 @@ class ScriptRunner:
|
|
388
388
|
client_state = ClientState()
|
389
389
|
client_state.query_string = ctx.query_string
|
390
390
|
client_state.page_script_hash = ctx.page_script_hash
|
391
|
+
if ctx.context_info:
|
392
|
+
client_state.context_info.CopyFrom(ctx.context_info)
|
391
393
|
self.on_event.send(
|
392
394
|
self, event=ScriptRunnerEvent.SHUTDOWN, client_state=client_state
|
393
395
|
)
|
streamlit/static/index.html
CHANGED
@@ -25,21 +25,21 @@
|
|
25
25
|
<link rel="shortcut icon" href="./favicon.png" />
|
26
26
|
<link
|
27
27
|
rel="preload"
|
28
|
-
href="./static/media/
|
28
|
+
href="./static/media/SourceSans-Regular.ttf.BqTI-3mA.woff2"
|
29
29
|
as="font"
|
30
30
|
type="font/woff2"
|
31
31
|
crossorigin
|
32
32
|
/>
|
33
33
|
<link
|
34
34
|
rel="preload"
|
35
|
-
href="./static/media/
|
35
|
+
href="./static/media/SourceSans-Semibold.ttf.BQV5CVwD.woff2"
|
36
36
|
as="font"
|
37
37
|
type="font/woff2"
|
38
38
|
crossorigin
|
39
39
|
/>
|
40
40
|
<link
|
41
41
|
rel="preload"
|
42
|
-
href="./static/media/
|
42
|
+
href="./static/media/SourceSans-Bold.ttf.gn7Db9ke.woff2"
|
43
43
|
as="font"
|
44
44
|
type="font/woff2"
|
45
45
|
crossorigin
|
@@ -51,8 +51,8 @@
|
|
51
51
|
<script>
|
52
52
|
window.prerenderReady = false
|
53
53
|
</script>
|
54
|
-
<script type="module" crossorigin src="./static/js/index.
|
55
|
-
<link rel="stylesheet" crossorigin href="./static/css/index.
|
54
|
+
<script type="module" crossorigin src="./static/js/index.BxCeuwGy.js"></script>
|
55
|
+
<link rel="stylesheet" crossorigin href="./static/css/index.B57yoT8i.css">
|
56
56
|
</head>
|
57
57
|
<body>
|
58
58
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|