streamlit-nightly 1.46.2.dev20250715__py3-none-any.whl → 1.47.1.dev20250717__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/connections/snowflake_connection.py +2 -2
- streamlit/elements/graphviz_chart.py +7 -0
- streamlit/elements/lib/file_uploader_utils.py +21 -2
- streamlit/elements/plotly_chart.py +6 -2
- streamlit/elements/pyplot.py +5 -1
- streamlit/elements/widgets/chat.py +6 -0
- streamlit/elements/widgets/file_uploader.py +6 -0
- streamlit/static/index.html +1 -1
- streamlit/static/manifest.json +218 -218
- streamlit/static/static/js/{ErrorOutline.esm.CaUhmcG6.js → ErrorOutline.esm.77fHhxmf.js} +1 -1
- streamlit/static/static/js/{FileDownload.esm.ZEl-HfEg.js → FileDownload.esm.qBSGbtBF.js} +1 -1
- streamlit/static/static/js/{FileHelper.BKIVKQnB.js → FileHelper.BYzZxqTl.js} +1 -1
- streamlit/static/static/js/{FormClearHelper.C4W8xjEX.js → FormClearHelper.BapTKtHM.js} +1 -1
- streamlit/static/static/js/{Hooks.Bcs7Dqad.js → Hooks.DQUBTvpJ.js} +1 -1
- streamlit/static/static/js/{InputInstructions.CAp9mFM6.js → InputInstructions.DfmDQyfZ.js} +1 -1
- streamlit/static/static/js/{ProgressBar.DBmbQ5U6.js → ProgressBar.DH8nVA3A.js} +1 -1
- streamlit/static/static/js/{RenderInPortalIfExists.BGENGpwt.js → RenderInPortalIfExists.Dc3T7qg7.js} +1 -1
- streamlit/static/static/js/{Toolbar.CA92Moni.js → Toolbar.DoQICZLn.js} +1 -1
- streamlit/static/static/js/{base-input.C-H36mFE.js → base-input.DJLL2PiI.js} +1 -1
- streamlit/static/static/js/{checkbox.B6I7DbdE.js → checkbox.BEZCVkdu.js} +1 -1
- streamlit/static/static/js/{createSuper.DEaMobJa.js → createSuper.Cd0gz3ZP.js} +1 -1
- streamlit/static/static/js/{data-grid-overlay-editor.CxvB719M.js → data-grid-overlay-editor.DBCkAuJT.js} +1 -1
- streamlit/static/static/js/{downloader.CDDSxxak.js → downloader.CNEzyeJy.js} +1 -1
- streamlit/static/static/js/{es6.BMYexa9t.js → es6.Dj_qfQ-J.js} +2 -2
- streamlit/static/static/js/{iframeResizer.contentWindow.D-l9cCws.js → iframeResizer.contentWindow.DWZGbVE9.js} +1 -1
- streamlit/static/static/js/{index.CqALE_Sz.js → index.3629iKJ_.js} +1 -1
- streamlit/static/static/js/{index.1ZtAvXND.js → index.9H0CGffC.js} +1 -1
- streamlit/static/static/js/{index.Bb5Sxtkx.js → index.B5PCerES.js} +1 -1
- streamlit/static/static/js/{index.BQQ5JTaz.js → index.BCYov0Z6.js} +1 -1
- streamlit/static/static/js/{index.CfoE7jon.js → index.BQkb06fM.js} +1 -1
- streamlit/static/static/js/{index.DzH3Qe6P.js → index.BlsArqdU.js} +1 -1
- streamlit/static/static/js/{index.CEUhSvrW.js → index.Bnbuv9NG.js} +1 -1
- streamlit/static/static/js/{index.Ct2v9YN2.js → index.BqR_ah2P.js} +1 -1
- streamlit/static/static/js/{index.aLRZj3JI.js → index.Bwe6rc_e.js} +1 -1
- streamlit/static/static/js/{index.phUFaJLn.js → index.BwewuyvV.js} +1 -1
- streamlit/static/static/js/{index.BoTBd6Jn.js → index.CA4nGH2a.js} +1 -1
- streamlit/static/static/js/{index.Ch30W6NP.js → index.CHmeRQB0.js} +1 -1
- streamlit/static/static/js/{index.Ce906Q5W.js → index.CSEGzY5i.js} +1 -1
- streamlit/static/static/js/{index.CS9yBABI.js → index.CoYP8GwB.js} +1 -1
- streamlit/static/static/js/{index.Ou3kxN43.js → index.Co_D1bGa.js} +1 -1
- streamlit/static/static/js/{index.Dm8vdcs9.js → index.CtsW3eJF.js} +1 -1
- streamlit/static/static/js/{index.BdazK8za.js → index.D4efqxNs.js} +1 -1
- streamlit/static/static/js/{index.CphcnmQO.js → index.DF-6qVO2.js} +1 -1
- streamlit/static/static/js/{index.DNoDZbuV.js → index.DIxNMQxZ.js} +1 -1
- streamlit/static/static/js/{index.D9XZpDDt.js → index.DYQbjkZY.js} +1 -1
- streamlit/static/static/js/{index.Buz-cCdK.js → index.DaegFwX9.js} +1 -1
- streamlit/static/static/js/{index.DHv7KxuP.js → index.DcXKaleC.js} +1 -1
- streamlit/static/static/js/{index.vRRu8CJW.js → index.Dh4PSyeU.js} +1 -1
- streamlit/static/static/js/{index.CZbA_QY0.js → index.Dj_sBWoU.js} +1 -1
- streamlit/static/static/js/{index.C_f3O5DO.js → index.DkYSvvUe.js} +1 -1
- streamlit/static/static/js/{index.DMzpbFDn.js → index.Dxi0xeeC.js} +1 -1
- streamlit/static/static/js/{index.Br2RYgMU.js → index.Dy9mt1lb.js} +1 -1
- streamlit/static/static/js/{index.B-g_Erog.js → index.DyKNikeb.js} +72 -72
- streamlit/static/static/js/{index.C9PLrvrw.js → index.HTy-ykxC.js} +1 -1
- streamlit/static/static/js/{index.DBVPN8iJ.js → index.HcR5RThE.js} +1 -1
- streamlit/static/static/js/{index.EAQB8Tuq.js → index.SCzIN5SB.js} +3 -3
- streamlit/static/static/js/{index.DygxY7Lg.js → index.Uzv6ooYp.js} +2 -2
- streamlit/static/static/js/{index.DYvo87DK.js → index.gupvSUiZ.js} +1 -1
- streamlit/static/static/js/{index.kIS8fJE1.js → index.hExo-vs3.js} +1 -1
- streamlit/static/static/js/{index.DFjvmFUl.js → index.jtH7YSzj.js} +1 -1
- streamlit/static/static/js/{index.DJ6SMXzt.js → index.nKiB2Lb1.js} +1 -1
- streamlit/static/static/js/{index.BjJqANY4.js → index.r5SsG0UH.js} +1 -1
- streamlit/static/static/js/{input.DjnwsrgF.js → input.C4PKmVyq.js} +1 -1
- streamlit/static/static/js/{memory.C-fF2BpE.js → memory.BlWtC9mT.js} +1 -1
- streamlit/static/static/js/{mergeWith.Cjweouij.js → mergeWith.BpStvP-d.js} +1 -1
- streamlit/static/static/js/{number-overlay-editor.BFTlQD7x.js → number-overlay-editor.h2wH-G_L.js} +1 -1
- streamlit/static/static/js/{possibleConstructorReturn.Cy1PJuxU.js → possibleConstructorReturn.CU3h0WWI.js} +1 -1
- streamlit/static/static/js/{sandbox.DvSXZ4R-.js → sandbox.BW2Eycz9.js} +1 -1
- streamlit/static/static/js/{timepicker.bPCY7gSF.js → timepicker.ASDBDZeB.js} +1 -1
- streamlit/static/static/js/{toConsumableArray.DaNXH4b3.js → toConsumableArray.Dn5dJvBy.js} +1 -1
- streamlit/static/static/js/{uniqueId.CDZNs_pn.js → uniqueId.8z-ePOzb.js} +1 -1
- streamlit/static/static/js/{useBasicWidgetState.YAhDGDM8.js → useBasicWidgetState.Bg3DrOCg.js} +1 -1
- streamlit/static/static/js/{useOnInputChange.HiDk3WIa.js → useOnInputChange.SNHZF6F7.js} +1 -1
- streamlit/static/static/js/{useTextInputAutoExpand.CwuIWHHK.js → useTextInputAutoExpand.Dm8V44AL.js} +1 -1
- streamlit/static/static/js/{withFullScreenWrapper.C4lh8vGd.js → withFullScreenWrapper.Drneg2_8.js} +1 -1
- streamlit/user_info.py +5 -1
- {streamlit_nightly-1.46.2.dev20250715.dist-info → streamlit_nightly-1.47.1.dev20250717.dist-info}/METADATA +13 -1
- {streamlit_nightly-1.46.2.dev20250715.dist-info → streamlit_nightly-1.47.1.dev20250717.dist-info}/RECORD +82 -82
- {streamlit_nightly-1.46.2.dev20250715.data → streamlit_nightly-1.47.1.dev20250717.data}/scripts/streamlit.cmd +0 -0
- {streamlit_nightly-1.46.2.dev20250715.dist-info → streamlit_nightly-1.47.1.dev20250717.dist-info}/WHEEL +0 -0
- {streamlit_nightly-1.46.2.dev20250715.dist-info → streamlit_nightly-1.47.1.dev20250717.dist-info}/entry_points.txt +0 -0
- {streamlit_nightly-1.46.2.dev20250715.dist-info → streamlit_nightly-1.47.1.dev20250717.dist-info}/top_level.txt +0 -0
@@ -68,10 +68,10 @@ class SnowflakeConnection(BaseConnection["InternalSnowflakeConnection"]):
|
|
68
68
|
.. |snowflake.connector.connect()| replace:: ``snowflake.connector.connect()``
|
69
69
|
.. _snowflake.connector.connect(): https://docs.snowflake.com/en/developer-guide/python-connector/python-connector-api#label-snowflake-connector-methods-connect
|
70
70
|
|
71
|
-
..
|
71
|
+
.. Important::
|
72
72
|
`snowflake-snowpark-python <https://pypi.org/project/snowflake-snowpark-python/>`_
|
73
73
|
must be installed in your environment to use this connection. You can
|
74
|
-
install
|
74
|
+
install it as an extra with Streamlit:
|
75
75
|
|
76
76
|
>>> pip install streamlit[snowflake]
|
77
77
|
|
@@ -45,6 +45,13 @@ class GraphvizMixin:
|
|
45
45
|
) -> DeltaGenerator:
|
46
46
|
"""Display a graph using the dagre-d3 library.
|
47
47
|
|
48
|
+
.. Important::
|
49
|
+
You must install ``graphviz>=0.19.0`` to use this command. You can
|
50
|
+
install all charting dependencies (except Bokeh) as an extra with
|
51
|
+
Streamlit:
|
52
|
+
|
53
|
+
>>> pip install streamlit[charts]
|
54
|
+
|
48
55
|
Parameters
|
49
56
|
----------
|
50
57
|
figure_or_dot : graphviz.dot.Graph, graphviz.dot.Digraph, graphviz.sources.Source, str
|
@@ -31,6 +31,18 @@ TYPE_PAIRS = [
|
|
31
31
|
]
|
32
32
|
|
33
33
|
|
34
|
+
def _get_main_filename_and_extension(filename: str) -> tuple[str, str]:
|
35
|
+
"""Returns the main part of a filename and its extension."""
|
36
|
+
# Handle NTFS Alternate Data Streams (ADS) on Windows, e.g: "file.txt:ads" -> ("file.txt", ".txt")
|
37
|
+
if os.name == "nt" and ":" in filename:
|
38
|
+
main_filename, ads_part = filename.split(":", 1)
|
39
|
+
# We only treat it as an ADS if the part after the colon has an extension.
|
40
|
+
if os.path.splitext(ads_part)[1]:
|
41
|
+
return main_filename, os.path.splitext(main_filename)[1]
|
42
|
+
|
43
|
+
return filename, os.path.splitext(filename)[1]
|
44
|
+
|
45
|
+
|
34
46
|
def normalize_upload_file_type(file_type: str | Sequence[str]) -> Sequence[str]:
|
35
47
|
if isinstance(file_type, str):
|
36
48
|
file_type = [file_type]
|
@@ -59,8 +71,15 @@ def enforce_filename_restriction(filename: str, allowed_types: Sequence[str]) ->
|
|
59
71
|
enforce file type check by extension on the frontend, but we check it on backend
|
60
72
|
before returning file to the user to protect ourselves.
|
61
73
|
"""
|
62
|
-
|
63
|
-
|
74
|
+
|
75
|
+
# Ensure that there isn't a null byte in a filename
|
76
|
+
# since this could be a workaround to bypass the file type check.
|
77
|
+
if "\0" in filename:
|
78
|
+
raise StreamlitAPIException("Filename cannot contain null bytes.")
|
79
|
+
|
80
|
+
main_filename, extension = _get_main_filename_and_extension(filename)
|
81
|
+
normalized_filename = main_filename.lower()
|
82
|
+
|
64
83
|
normalized_allowed_types = [allowed_type.lower() for allowed_type in allowed_types]
|
65
84
|
|
66
85
|
if not any(
|
@@ -328,8 +328,12 @@ class PlotlyMixin:
|
|
328
328
|
you would call Plotly's ``py.plot`` or ``py.iplot``.
|
329
329
|
|
330
330
|
.. Important::
|
331
|
-
You must install ``plotly`` to use this command. Your app's
|
332
|
-
performance may be enhanced by installing ``orjson`` as well.
|
331
|
+
You must install ``plotly>=4.0.0`` to use this command. Your app's
|
332
|
+
performance may be enhanced by installing ``orjson`` as well. You
|
333
|
+
can install all charting dependencies (except Bokeh) as an extra
|
334
|
+
with Streamlit:
|
335
|
+
|
336
|
+
>>> pip install streamlit[charts]
|
333
337
|
|
334
338
|
Parameters
|
335
339
|
----------
|
streamlit/elements/pyplot.py
CHANGED
@@ -42,7 +42,11 @@ class PyplotMixin:
|
|
42
42
|
"""Display a matplotlib.pyplot figure.
|
43
43
|
|
44
44
|
.. Important::
|
45
|
-
You must install ``matplotlib`` to use this command.
|
45
|
+
You must install ``matplotlib>=3.0.0`` to use this command. You can
|
46
|
+
install all charting dependencies (except Bokeh) as an extra with
|
47
|
+
Streamlit:
|
48
|
+
|
49
|
+
>>> pip install streamlit[charts]
|
46
50
|
|
47
51
|
Parameters
|
48
52
|
----------
|
@@ -465,6 +465,12 @@ class ChatMixin:
|
|
465
465
|
example, to only accept JPG/JPEG and PNG files, use
|
466
466
|
``["jpg", "jpeg", "png"]``.
|
467
467
|
|
468
|
+
.. note::
|
469
|
+
This is a best-effort check, but doesn't provide a
|
470
|
+
security guarantee against users uploading files of other types
|
471
|
+
or type extensions. The correct handling of uploaded files is
|
472
|
+
part of the app developer's responsibility.
|
473
|
+
|
468
474
|
disabled : bool
|
469
475
|
Whether the chat input should be disabled. This defaults to
|
470
476
|
``False``.
|
@@ -296,6 +296,12 @@ class FileUploaderMixin:
|
|
296
296
|
example, to only accept JPG/JPEG and PNG files, use
|
297
297
|
``["jpg", "jpeg", "png"]``.
|
298
298
|
|
299
|
+
.. note::
|
300
|
+
This is a best-effort check, but doesn't provide a
|
301
|
+
security guarantee against users uploading files of other types
|
302
|
+
or type extensions. The correct handling of uploaded files is
|
303
|
+
part of the app developer's responsibility.
|
304
|
+
|
299
305
|
accept_multiple_files : bool
|
300
306
|
Whether to accept more than one file in a submission. If this is
|
301
307
|
``False`` (default), the user can only submit one file at a time.
|
streamlit/static/index.html
CHANGED
@@ -37,7 +37,7 @@
|
|
37
37
|
<script>
|
38
38
|
window.prerenderReady = false
|
39
39
|
</script>
|
40
|
-
<script type="module" crossorigin src="./static/js/index.
|
40
|
+
<script type="module" crossorigin src="./static/js/index.SCzIN5SB.js"></script>
|
41
41
|
<link rel="stylesheet" crossorigin href="./static/css/index.CJVRHjQZ.css">
|
42
42
|
</head>
|
43
43
|
<body>
|