streamlit-nightly 1.45.2.dev20250527__py3-none-any.whl → 1.45.2.dev20250530__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/auth_util.py +3 -3
- streamlit/commands/echo.py +1 -1
- streamlit/config.py +32 -12
- streamlit/config_option.py +3 -5
- streamlit/config_util.py +4 -5
- streamlit/connections/snowflake_connection.py +4 -3
- streamlit/delta_generator.py +10 -14
- streamlit/elements/arrow.py +1 -0
- streamlit/elements/deck_gl_json_chart.py +1 -0
- streamlit/elements/doc_string.py +7 -15
- streamlit/elements/exception.py +4 -12
- streamlit/elements/form.py +14 -0
- streamlit/elements/graphviz_chart.py +1 -1
- streamlit/elements/heading.py +3 -4
- streamlit/elements/json.py +7 -6
- streamlit/elements/layouts.py +21 -3
- streamlit/elements/lib/image_utils.py +2 -3
- streamlit/elements/lib/layout_utils.py +24 -0
- streamlit/elements/lib/mutable_status_container.py +9 -0
- streamlit/elements/lib/streamlit_plotly_theme.py +54 -53
- streamlit/elements/lib/utils.py +15 -0
- streamlit/elements/markdown.py +34 -4
- streamlit/elements/media.py +1 -1
- streamlit/elements/plotly_chart.py +1 -0
- streamlit/elements/progress.py +6 -15
- streamlit/elements/spinner.py +5 -4
- streamlit/elements/vega_charts.py +1 -0
- streamlit/elements/widgets/audio_input.py +4 -10
- streamlit/elements/widgets/button.py +3 -1
- streamlit/elements/widgets/button_group.py +1 -0
- streamlit/elements/widgets/camera_input.py +6 -9
- streamlit/elements/widgets/chat.py +11 -13
- streamlit/elements/widgets/checkbox.py +1 -0
- streamlit/elements/widgets/color_picker.py +9 -14
- streamlit/elements/widgets/data_editor.py +9 -5
- streamlit/elements/widgets/file_uploader.py +10 -9
- streamlit/elements/widgets/multiselect.py +1 -0
- streamlit/elements/widgets/number_input.py +12 -12
- streamlit/elements/widgets/radio.py +2 -1
- streamlit/elements/widgets/select_slider.py +4 -10
- streamlit/elements/widgets/selectbox.py +11 -13
- streamlit/elements/widgets/slider.py +28 -41
- streamlit/elements/widgets/text_widgets.py +16 -24
- streamlit/elements/widgets/time_widgets.py +15 -22
- streamlit/hello/animation_demo.py +9 -9
- streamlit/hello/dataframe_demo.py +2 -2
- streamlit/hello/hello.py +1 -0
- streamlit/hello/mapping_demo.py +5 -6
- streamlit/hello/streamlit_app.py +27 -25
- streamlit/logger.py +1 -1
- streamlit/proto/AudioInput_pb2.py +3 -4
- streamlit/proto/AudioInput_pb2.pyi +2 -7
- streamlit/proto/Block_pb2.py +27 -27
- streamlit/proto/Block_pb2.pyi +3 -17
- streamlit/proto/CameraInput_pb2.py +3 -4
- streamlit/proto/CameraInput_pb2.pyi +2 -8
- streamlit/proto/ChatInput_pb2.py +7 -8
- streamlit/proto/ChatInput_pb2.pyi +1 -10
- streamlit/proto/Code_pb2.py +3 -4
- streamlit/proto/DateInput_pb2.py +3 -4
- streamlit/proto/DateInput_pb2.pyi +2 -8
- streamlit/proto/DocString_pb2.py +5 -6
- streamlit/proto/DocString_pb2.pyi +1 -9
- streamlit/proto/FileUploader_pb2.py +3 -4
- streamlit/proto/FileUploader_pb2.pyi +2 -8
- streamlit/proto/Json_pb2.py +3 -4
- streamlit/proto/Json_pb2.pyi +2 -9
- streamlit/proto/NewSession_pb2.py +16 -16
- streamlit/proto/NewSession_pb2.pyi +7 -2
- streamlit/proto/NumberInput_pb2.py +5 -6
- streamlit/proto/NumberInput_pb2.pyi +2 -9
- streamlit/proto/Progress_pb2.py +3 -4
- streamlit/proto/Progress_pb2.pyi +1 -7
- streamlit/proto/Selectbox_pb2.py +3 -4
- streamlit/proto/Selectbox_pb2.pyi +2 -9
- streamlit/proto/Slider_pb2.py +7 -8
- streamlit/proto/Slider_pb2.pyi +2 -8
- streamlit/proto/TextArea_pb2.py +3 -4
- streamlit/proto/TextArea_pb2.pyi +2 -9
- streamlit/proto/TextInput_pb2.py +5 -6
- streamlit/proto/TextInput_pb2.pyi +2 -9
- streamlit/proto/TimeInput_pb2.py +3 -4
- streamlit/proto/TimeInput_pb2.pyi +2 -9
- streamlit/runtime/app_session.py +11 -8
- streamlit/runtime/caching/hashing.py +8 -9
- streamlit/runtime/caching/storage/local_disk_cache_storage.py +3 -3
- streamlit/runtime/connection_factory.py +12 -12
- streamlit/runtime/credentials.py +13 -26
- streamlit/runtime/runtime_util.py +2 -2
- streamlit/runtime/scriptrunner/script_runner.py +8 -7
- streamlit/static/index.html +1 -1
- streamlit/static/manifest.json +1240 -0
- streamlit/static/static/js/{ErrorOutline.esm.qteVcUUN.js → ErrorOutline.esm.D5NgCh5m.js} +1 -1
- streamlit/static/static/js/{FileDownload.esm.ncu7N-Hr.js → FileDownload.esm.NuObx1Tl.js} +1 -1
- streamlit/static/static/js/{FileHelper.zsMZ7RXt.js → FileHelper.BH7o4_P9.js} +5 -5
- streamlit/static/static/js/{FormClearHelper.W8yVYXZp.js → FormClearHelper.BAxB8JFY.js} +1 -1
- streamlit/static/static/js/{Hooks.DBj6srQ1.js → Hooks.Bjt8oBOT.js} +1 -1
- streamlit/static/static/js/{InputInstructions.BobLsJJb.js → InputInstructions.BZZLp6t9.js} +1 -1
- streamlit/static/static/js/{ProgressBar.CtvJrIzN.js → ProgressBar.BwRgGfI0.js} +2 -2
- streamlit/static/static/js/{RenderInPortalIfExists.DnT_UdzV.js → RenderInPortalIfExists.C_c286r8.js} +1 -1
- streamlit/static/static/js/{Toolbar.BVF7NtOB.js → Toolbar.5tXjF_eX.js} +1 -1
- streamlit/static/static/js/{base-input.B4sdS3vw.js → base-input.wfBDFTlB.js} +1 -1
- streamlit/static/static/js/{checkbox.DKDitzF8.js → checkbox.D1GhNngU.js} +1 -1
- streamlit/static/static/js/{createSuper.mhx956J9.js → createSuper.CudEEVs2.js} +1 -1
- streamlit/static/static/js/{data-grid-overlay-editor.CmXS0PAX.js → data-grid-overlay-editor.DUTI_Rbg.js} +1 -1
- streamlit/static/static/js/{downloader.Cnd9SuxG.js → downloader.BwLpAoXN.js} +1 -1
- streamlit/static/static/js/{es6.DM-pf09u.js → es6.B_HLnUb9.js} +2 -2
- streamlit/static/static/js/{iframeResizer.contentWindow.Gc5GAjZM.js → iframeResizer.contentWindow.BNcjOcan.js} +1 -1
- streamlit/static/static/js/{index.D4XRYl23.js → index.3WJoJFGb.js} +1 -1
- streamlit/static/static/js/{index.C_2m4F7k.js → index.B0h616Th.js} +1 -1
- streamlit/static/static/js/{index.p2Wl4zMi.js → index.B0paBg5x.js} +1 -1
- streamlit/static/static/js/index.B3vWaIrN.js +1 -0
- streamlit/static/static/js/{index.B45ExNhw.js → index.B4PbMsBe.js} +1 -1
- streamlit/static/static/js/{index.BWTBe3a1.js → index.BGKVW2u9.js} +1 -1
- streamlit/static/static/js/index.BJQPxOFd.js +12 -0
- streamlit/static/static/js/{index.DdyZtGcg.js → index.BOHEcsVb.js} +1 -1
- streamlit/static/static/js/{index.BR-S54Iv.js → index.BPGAPI9w.js} +1 -1
- streamlit/static/static/js/{index.gBOr8z2K.js → index.Bj6uLiaA.js} +1 -1
- streamlit/static/static/js/{index.I3iNnzJx.js → index.BkvVxUIW.js} +1 -1
- streamlit/static/static/js/{index._BaeK1t7.js → index.Bs0m0eUy.js} +1 -1
- streamlit/static/static/js/{index.DwUISpCs.js → index.BtpsTdHN.js} +177 -174
- streamlit/static/static/js/index.C1GNiWbH.js +1 -0
- streamlit/static/static/js/{index.B6xTo8b8.js → index.CL0UH4WF.js} +1 -1
- streamlit/static/static/js/{index.BJQNG4O1.js → index.CXP5ffxh.js} +1 -1
- streamlit/static/static/js/{index.DAvhwYMG.js → index.Ca-9xoC2.js} +1 -1
- streamlit/static/static/js/{index.COBionvf.js → index.Cdd7Ri21.js} +1 -1
- streamlit/static/static/js/index.Cf8KcH2X.js +1 -0
- streamlit/static/static/js/{index.BkLkRTpZ.js → index.CfzaRR6P.js} +1 -1
- streamlit/static/static/js/{index.CkKptP1T.js → index.CjRwuAdg.js} +1 -1
- streamlit/static/static/js/{index.CjBaoWYr.js → index.CkOUlPYT.js} +1 -1
- streamlit/static/static/js/{index.DQGSbu2C.js → index.CxtkoiKl.js} +1 -1
- streamlit/static/static/js/index.D3wYqvI6.js +1 -0
- streamlit/static/static/js/index.D8i27llu.js +3 -0
- streamlit/static/static/js/{index.BfusYuD8.js → index.DA7wmIe4.js} +1 -1
- streamlit/static/static/js/index.DIG9Mo9J.js +1 -0
- streamlit/static/static/js/index.DNR4wKJg.js +1 -0
- streamlit/static/static/js/{index.B29JQLHa.js → index.DNS8a-dx.js} +20 -20
- streamlit/static/static/js/{index.BNNR5Jmd.js → index.NveskZ7j.js} +1 -1
- streamlit/static/static/js/{index.CWgnk1N4.js → index.PR2mcvVR.js} +1 -1
- streamlit/static/static/js/{index.CJ-XXd1r.js → index.df4uuSoD.js} +1 -1
- streamlit/static/static/js/{index.WWYmGCrM.js → index.flyQEkeT.js} +1 -1
- streamlit/static/static/js/{index.vOqxh1m2.js → index.iF9jUtwl.js} +1 -1
- streamlit/static/static/js/{index.C5KKmyWy.js → index.jyqBAhvH.js} +1 -1
- streamlit/static/static/js/{index.AWkO-7e-.js → index.sYLAHlH0.js} +1 -1
- streamlit/static/static/js/{index.CZ5fZcT5.js → index.zq3LdRhj.js} +1 -1
- streamlit/static/static/js/{input.BvD9DHLa.js → input.CtZjQ6Pv.js} +1 -1
- streamlit/static/static/js/{memory.DCVB1HOm.js → memory.Ddl3R0up.js} +1 -1
- streamlit/static/static/js/{mergeWith.BqTORFAq.js → mergeWith.D-TqDY0-.js} +1 -1
- streamlit/static/static/js/{number-overlay-editor.VB_OvuPv.js → number-overlay-editor.Dndf05Hx.js} +1 -1
- streamlit/static/static/js/{possibleConstructorReturn.DhYxBDlj.js → possibleConstructorReturn.DNEY6J9G.js} +1 -1
- streamlit/static/static/js/{sandbox.CoN7LRFk.js → sandbox.B_XDPkfx.js} +1 -1
- streamlit/static/static/js/{textarea.DkHpIjdT.js → textarea.BZ9lTMhV.js} +1 -1
- streamlit/static/static/js/{timepicker.C8UIzYhf.js → timepicker.D9UUwpRT.js} +1 -1
- streamlit/static/static/js/{toConsumableArray.DXfr1fvT.js → toConsumableArray.DNJjbOUS.js} +1 -1
- streamlit/static/static/js/{uniqueId.CgrMSBTb.js → uniqueId.psBJ_tSg.js} +1 -1
- streamlit/static/static/js/{useBasicWidgetState.C-e-WEFS.js → useBasicWidgetState.CTpx4w-3.js} +1 -1
- streamlit/static/static/js/{useOnInputChange.CtRJhZD6.js → useOnInputChange.WKTDSC4O.js} +1 -1
- streamlit/static/static/js/{withFullScreenWrapper.od0SAvAK.js → withFullScreenWrapper.oyWCn2-3.js} +1 -1
- streamlit/watcher/local_sources_watcher.py +1 -1
- streamlit/watcher/path_watcher.py +2 -3
- streamlit/web/bootstrap.py +1 -1
- streamlit/web/cli.py +5 -5
- streamlit/web/server/authlib_tornado_integration.py +3 -3
- streamlit/web/server/oauth_authlib_routes.py +4 -2
- streamlit/web/server/oidc_mixin.py +6 -5
- streamlit/web/server/server.py +1 -1
- {streamlit_nightly-1.45.2.dev20250527.dist-info → streamlit_nightly-1.45.2.dev20250530.dist-info}/METADATA +2 -2
- {streamlit_nightly-1.45.2.dev20250527.dist-info → streamlit_nightly-1.45.2.dev20250530.dist-info}/RECORD +172 -171
- streamlit/static/static/js/index.B0E6Rv1F.js +0 -1
- streamlit/static/static/js/index.BONHiJUZ.js +0 -1
- streamlit/static/static/js/index.BV38yp5k.js +0 -1
- streamlit/static/static/js/index.CgOynO1t.js +0 -1
- streamlit/static/static/js/index.DIyx-z1Q.js +0 -1
- streamlit/static/static/js/index.DOYomqqU.js +0 -1
- streamlit/static/static/js/index.DOl-SOKu.js +0 -3
- streamlit/static/static/js/index.DTU7qmDP.js +0 -12
- {streamlit_nightly-1.45.2.dev20250527.data → streamlit_nightly-1.45.2.dev20250530.data}/scripts/streamlit.cmd +0 -0
- {streamlit_nightly-1.45.2.dev20250527.dist-info → streamlit_nightly-1.45.2.dev20250530.dist-info}/WHEEL +0 -0
- {streamlit_nightly-1.45.2.dev20250527.dist-info → streamlit_nightly-1.45.2.dev20250530.dist-info}/entry_points.txt +0 -0
- {streamlit_nightly-1.45.2.dev20250527.dist-info → streamlit_nightly-1.45.2.dev20250530.dist-info}/top_level.txt +0 -0
streamlit/proto/TextArea_pb2.pyi
CHANGED
@@ -21,7 +21,6 @@ import builtins
|
|
21
21
|
import google.protobuf.descriptor
|
22
22
|
import google.protobuf.message
|
23
23
|
import streamlit.proto.LabelVisibilityMessage_pb2
|
24
|
-
import streamlit.proto.WidthConfig_pb2
|
25
24
|
import typing
|
26
25
|
|
27
26
|
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
@@ -42,7 +41,6 @@ class TextArea(google.protobuf.message.Message):
|
|
42
41
|
PLACEHOLDER_FIELD_NUMBER: builtins.int
|
43
42
|
DISABLED_FIELD_NUMBER: builtins.int
|
44
43
|
LABEL_VISIBILITY_FIELD_NUMBER: builtins.int
|
45
|
-
WIDTH_CONFIG_FIELD_NUMBER: builtins.int
|
46
44
|
id: builtins.str
|
47
45
|
label: builtins.str
|
48
46
|
default: builtins.str
|
@@ -56,8 +54,6 @@ class TextArea(google.protobuf.message.Message):
|
|
56
54
|
disabled: builtins.bool
|
57
55
|
@property
|
58
56
|
def label_visibility(self) -> streamlit.proto.LabelVisibilityMessage_pb2.LabelVisibilityMessage: ...
|
59
|
-
@property
|
60
|
-
def width_config(self) -> streamlit.proto.WidthConfig_pb2.WidthConfig: ...
|
61
57
|
def __init__(
|
62
58
|
self,
|
63
59
|
*,
|
@@ -73,15 +69,12 @@ class TextArea(google.protobuf.message.Message):
|
|
73
69
|
placeholder: builtins.str = ...,
|
74
70
|
disabled: builtins.bool = ...,
|
75
71
|
label_visibility: streamlit.proto.LabelVisibilityMessage_pb2.LabelVisibilityMessage | None = ...,
|
76
|
-
width_config: streamlit.proto.WidthConfig_pb2.WidthConfig | None = ...,
|
77
72
|
) -> None: ...
|
78
|
-
def HasField(self, field_name: typing.Literal["_default", b"_default", "_value", b"_value", "
|
79
|
-
def ClearField(self, field_name: typing.Literal["_default", b"_default", "_value", b"_value", "
|
73
|
+
def HasField(self, field_name: typing.Literal["_default", b"_default", "_value", b"_value", "default", b"default", "label_visibility", b"label_visibility", "value", b"value"]) -> builtins.bool: ...
|
74
|
+
def ClearField(self, field_name: typing.Literal["_default", b"_default", "_value", b"_value", "default", b"default", "disabled", b"disabled", "form_id", b"form_id", "height", b"height", "help", b"help", "id", b"id", "label", b"label", "label_visibility", b"label_visibility", "max_chars", b"max_chars", "placeholder", b"placeholder", "set_value", b"set_value", "value", b"value"]) -> None: ...
|
80
75
|
@typing.overload
|
81
76
|
def WhichOneof(self, oneof_group: typing.Literal["_default", b"_default"]) -> typing.Literal["default"] | None: ...
|
82
77
|
@typing.overload
|
83
78
|
def WhichOneof(self, oneof_group: typing.Literal["_value", b"_value"]) -> typing.Literal["value"] | None: ...
|
84
|
-
@typing.overload
|
85
|
-
def WhichOneof(self, oneof_group: typing.Literal["_width_config", b"_width_config"]) -> typing.Literal["width_config"] | None: ...
|
86
79
|
|
87
80
|
global___TextArea = TextArea
|
streamlit/proto/TextInput_pb2.py
CHANGED
@@ -13,10 +13,9 @@ _sym_db = _symbol_database.Default()
|
|
13
13
|
|
14
14
|
|
15
15
|
from streamlit.proto import LabelVisibilityMessage_pb2 as streamlit_dot_proto_dot_LabelVisibilityMessage__pb2
|
16
|
-
from streamlit.proto import WidthConfig_pb2 as streamlit_dot_proto_dot_WidthConfig__pb2
|
17
16
|
|
18
17
|
|
19
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fstreamlit/proto/TextInput.proto\x1a,streamlit/proto/LabelVisibilityMessage.proto\
|
18
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fstreamlit/proto/TextInput.proto\x1a,streamlit/proto/LabelVisibilityMessage.proto\"\xeb\x02\n\tTextInput\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05label\x18\x02 \x01(\t\x12\x14\n\x07\x64\x65\x66\x61ult\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x04type\x18\x04 \x01(\x0e\x32\x0f.TextInput.Type\x12\x11\n\tmax_chars\x18\x05 \x01(\r\x12\x0c\n\x04help\x18\x06 \x01(\t\x12\x0f\n\x07\x66orm_id\x18\x07 \x01(\t\x12\x12\n\x05value\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x11\n\tset_value\x18\t \x01(\x08\x12\x14\n\x0c\x61utocomplete\x18\n \x01(\t\x12\x13\n\x0bplaceholder\x18\x0b \x01(\t\x12\x10\n\x08\x64isabled\x18\x0c \x01(\x08\x12\x31\n\x10label_visibility\x18\r \x01(\x0b\x32\x17.LabelVisibilityMessage\x12\x0c\n\x04icon\x18\x0e \x01(\t\"!\n\x04Type\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x0c\n\x08PASSWORD\x10\x01\x42\n\n\x08_defaultB\x08\n\x06_valueB.\n\x1c\x63om.snowflake.apps.streamlitB\x0eTextInputProtob\x06proto3')
|
20
19
|
|
21
20
|
_globals = globals()
|
22
21
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
@@ -24,8 +23,8 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'streamlit.proto.TextInput_p
|
|
24
23
|
if not _descriptor._USE_C_DESCRIPTORS:
|
25
24
|
_globals['DESCRIPTOR']._loaded_options = None
|
26
25
|
_globals['DESCRIPTOR']._serialized_options = b'\n\034com.snowflake.apps.streamlitB\016TextInputProto'
|
27
|
-
_globals['_TEXTINPUT']._serialized_start=
|
28
|
-
_globals['_TEXTINPUT']._serialized_end=
|
29
|
-
_globals['_TEXTINPUT_TYPE']._serialized_start=
|
30
|
-
_globals['_TEXTINPUT_TYPE']._serialized_end=
|
26
|
+
_globals['_TEXTINPUT']._serialized_start=82
|
27
|
+
_globals['_TEXTINPUT']._serialized_end=445
|
28
|
+
_globals['_TEXTINPUT_TYPE']._serialized_start=390
|
29
|
+
_globals['_TEXTINPUT_TYPE']._serialized_end=423
|
31
30
|
# @@protoc_insertion_point(module_scope)
|
@@ -22,7 +22,6 @@ import google.protobuf.descriptor
|
|
22
22
|
import google.protobuf.internal.enum_type_wrapper
|
23
23
|
import google.protobuf.message
|
24
24
|
import streamlit.proto.LabelVisibilityMessage_pb2
|
25
|
-
import streamlit.proto.WidthConfig_pb2
|
26
25
|
import sys
|
27
26
|
import typing
|
28
27
|
|
@@ -68,7 +67,6 @@ class TextInput(google.protobuf.message.Message):
|
|
68
67
|
DISABLED_FIELD_NUMBER: builtins.int
|
69
68
|
LABEL_VISIBILITY_FIELD_NUMBER: builtins.int
|
70
69
|
ICON_FIELD_NUMBER: builtins.int
|
71
|
-
WIDTH_CONFIG_FIELD_NUMBER: builtins.int
|
72
70
|
id: builtins.str
|
73
71
|
label: builtins.str
|
74
72
|
default: builtins.str
|
@@ -84,8 +82,6 @@ class TextInput(google.protobuf.message.Message):
|
|
84
82
|
icon: builtins.str
|
85
83
|
@property
|
86
84
|
def label_visibility(self) -> streamlit.proto.LabelVisibilityMessage_pb2.LabelVisibilityMessage: ...
|
87
|
-
@property
|
88
|
-
def width_config(self) -> streamlit.proto.WidthConfig_pb2.WidthConfig: ...
|
89
85
|
def __init__(
|
90
86
|
self,
|
91
87
|
*,
|
@@ -103,15 +99,12 @@ class TextInput(google.protobuf.message.Message):
|
|
103
99
|
disabled: builtins.bool = ...,
|
104
100
|
label_visibility: streamlit.proto.LabelVisibilityMessage_pb2.LabelVisibilityMessage | None = ...,
|
105
101
|
icon: builtins.str = ...,
|
106
|
-
width_config: streamlit.proto.WidthConfig_pb2.WidthConfig | None = ...,
|
107
102
|
) -> None: ...
|
108
|
-
def HasField(self, field_name: typing.Literal["_default", b"_default", "_value", b"_value", "
|
109
|
-
def ClearField(self, field_name: typing.Literal["_default", b"_default", "_value", b"_value", "
|
103
|
+
def HasField(self, field_name: typing.Literal["_default", b"_default", "_value", b"_value", "default", b"default", "label_visibility", b"label_visibility", "value", b"value"]) -> builtins.bool: ...
|
104
|
+
def ClearField(self, field_name: typing.Literal["_default", b"_default", "_value", b"_value", "autocomplete", b"autocomplete", "default", b"default", "disabled", b"disabled", "form_id", b"form_id", "help", b"help", "icon", b"icon", "id", b"id", "label", b"label", "label_visibility", b"label_visibility", "max_chars", b"max_chars", "placeholder", b"placeholder", "set_value", b"set_value", "type", b"type", "value", b"value"]) -> None: ...
|
110
105
|
@typing.overload
|
111
106
|
def WhichOneof(self, oneof_group: typing.Literal["_default", b"_default"]) -> typing.Literal["default"] | None: ...
|
112
107
|
@typing.overload
|
113
108
|
def WhichOneof(self, oneof_group: typing.Literal["_value", b"_value"]) -> typing.Literal["value"] | None: ...
|
114
|
-
@typing.overload
|
115
|
-
def WhichOneof(self, oneof_group: typing.Literal["_width_config", b"_width_config"]) -> typing.Literal["width_config"] | None: ...
|
116
109
|
|
117
110
|
global___TextInput = TextInput
|
streamlit/proto/TimeInput_pb2.py
CHANGED
@@ -13,10 +13,9 @@ _sym_db = _symbol_database.Default()
|
|
13
13
|
|
14
14
|
|
15
15
|
from streamlit.proto import LabelVisibilityMessage_pb2 as streamlit_dot_proto_dot_LabelVisibilityMessage__pb2
|
16
|
-
from streamlit.proto import WidthConfig_pb2 as streamlit_dot_proto_dot_WidthConfig__pb2
|
17
16
|
|
18
17
|
|
19
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fstreamlit/proto/TimeInput.proto\x1a,streamlit/proto/LabelVisibilityMessage.proto\
|
18
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fstreamlit/proto/TimeInput.proto\x1a,streamlit/proto/LabelVisibilityMessage.proto\"\xeb\x01\n\tTimeInput\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05label\x18\x02 \x01(\t\x12\x14\n\x07\x64\x65\x66\x61ult\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x0c\n\x04help\x18\x04 \x01(\t\x12\x0f\n\x07\x66orm_id\x18\x05 \x01(\t\x12\x12\n\x05value\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\x11\n\tset_value\x18\x07 \x01(\x08\x12\x10\n\x08\x64isabled\x18\x08 \x01(\x08\x12\x31\n\x10label_visibility\x18\t \x01(\x0b\x32\x17.LabelVisibilityMessage\x12\x0c\n\x04step\x18\n \x01(\x03\x42\n\n\x08_defaultB\x08\n\x06_valueB.\n\x1c\x63om.snowflake.apps.streamlitB\x0eTimeInputProtob\x06proto3')
|
20
19
|
|
21
20
|
_globals = globals()
|
22
21
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
@@ -24,6 +23,6 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'streamlit.proto.TimeInput_p
|
|
24
23
|
if not _descriptor._USE_C_DESCRIPTORS:
|
25
24
|
_globals['DESCRIPTOR']._loaded_options = None
|
26
25
|
_globals['DESCRIPTOR']._serialized_options = b'\n\034com.snowflake.apps.streamlitB\016TimeInputProto'
|
27
|
-
_globals['_TIMEINPUT']._serialized_start=
|
28
|
-
_globals['_TIMEINPUT']._serialized_end=
|
26
|
+
_globals['_TIMEINPUT']._serialized_start=82
|
27
|
+
_globals['_TIMEINPUT']._serialized_end=317
|
29
28
|
# @@protoc_insertion_point(module_scope)
|
@@ -21,7 +21,6 @@ import builtins
|
|
21
21
|
import google.protobuf.descriptor
|
22
22
|
import google.protobuf.message
|
23
23
|
import streamlit.proto.LabelVisibilityMessage_pb2
|
24
|
-
import streamlit.proto.WidthConfig_pb2
|
25
24
|
import typing
|
26
25
|
|
27
26
|
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
@@ -40,7 +39,6 @@ class TimeInput(google.protobuf.message.Message):
|
|
40
39
|
DISABLED_FIELD_NUMBER: builtins.int
|
41
40
|
LABEL_VISIBILITY_FIELD_NUMBER: builtins.int
|
42
41
|
STEP_FIELD_NUMBER: builtins.int
|
43
|
-
WIDTH_CONFIG_FIELD_NUMBER: builtins.int
|
44
42
|
id: builtins.str
|
45
43
|
label: builtins.str
|
46
44
|
default: builtins.str
|
@@ -52,8 +50,6 @@ class TimeInput(google.protobuf.message.Message):
|
|
52
50
|
step: builtins.int
|
53
51
|
@property
|
54
52
|
def label_visibility(self) -> streamlit.proto.LabelVisibilityMessage_pb2.LabelVisibilityMessage: ...
|
55
|
-
@property
|
56
|
-
def width_config(self) -> streamlit.proto.WidthConfig_pb2.WidthConfig: ...
|
57
53
|
def __init__(
|
58
54
|
self,
|
59
55
|
*,
|
@@ -67,15 +63,12 @@ class TimeInput(google.protobuf.message.Message):
|
|
67
63
|
disabled: builtins.bool = ...,
|
68
64
|
label_visibility: streamlit.proto.LabelVisibilityMessage_pb2.LabelVisibilityMessage | None = ...,
|
69
65
|
step: builtins.int = ...,
|
70
|
-
width_config: streamlit.proto.WidthConfig_pb2.WidthConfig | None = ...,
|
71
66
|
) -> None: ...
|
72
|
-
def HasField(self, field_name: typing.Literal["_default", b"_default", "_value", b"_value", "
|
73
|
-
def ClearField(self, field_name: typing.Literal["_default", b"_default", "_value", b"_value", "
|
67
|
+
def HasField(self, field_name: typing.Literal["_default", b"_default", "_value", b"_value", "default", b"default", "label_visibility", b"label_visibility", "value", b"value"]) -> builtins.bool: ...
|
68
|
+
def ClearField(self, field_name: typing.Literal["_default", b"_default", "_value", b"_value", "default", b"default", "disabled", b"disabled", "form_id", b"form_id", "help", b"help", "id", b"id", "label", b"label", "label_visibility", b"label_visibility", "set_value", b"set_value", "step", b"step", "value", b"value"]) -> None: ...
|
74
69
|
@typing.overload
|
75
70
|
def WhichOneof(self, oneof_group: typing.Literal["_default", b"_default"]) -> typing.Literal["default"] | None: ...
|
76
71
|
@typing.overload
|
77
72
|
def WhichOneof(self, oneof_group: typing.Literal["_value", b"_value"]) -> typing.Literal["value"] | None: ...
|
78
|
-
@typing.overload
|
79
|
-
def WhichOneof(self, oneof_group: typing.Literal["_width_config", b"_width_config"]) -> typing.Literal["width_config"] | None: ...
|
80
73
|
|
81
74
|
global___TimeInput = TimeInput
|
streamlit/runtime/app_session.py
CHANGED
@@ -375,8 +375,9 @@ class AppSession:
|
|
375
375
|
# sometimes stays open.
|
376
376
|
if fragment_id and not self._fragment_storage.contains(fragment_id):
|
377
377
|
_LOGGER.info(
|
378
|
-
|
379
|
-
"it might have been removed during a preceding full-app rerun."
|
378
|
+
"The fragment with id %s does not exist anymore - "
|
379
|
+
"it might have been removed during a preceding full-app rerun.",
|
380
|
+
fragment_id,
|
380
381
|
)
|
381
382
|
return
|
382
383
|
|
@@ -954,9 +955,10 @@ def _populate_theme_msg(msg: CustomThemeConfig, section: str = "theme") -> None:
|
|
954
955
|
if base is not None:
|
955
956
|
if base not in base_map:
|
956
957
|
_LOGGER.warning(
|
957
|
-
|
958
|
-
|
959
|
-
|
958
|
+
'"%s" is an invalid value for theme.base. Allowed values include %s. '
|
959
|
+
'Setting theme.base to "light".',
|
960
|
+
base,
|
961
|
+
list(base_map.keys()),
|
960
962
|
)
|
961
963
|
else:
|
962
964
|
msg.base = base_map[base]
|
@@ -976,8 +978,8 @@ def _populate_theme_msg(msg: CustomThemeConfig, section: str = "theme") -> None:
|
|
976
978
|
font_faces = json.loads(font_faces)
|
977
979
|
except Exception as e:
|
978
980
|
_LOGGER.warning(
|
979
|
-
"Failed to parse the theme.fontFaces config option with json.loads: "
|
980
|
-
|
981
|
+
"Failed to parse the theme.fontFaces config option with json.loads: %s.",
|
982
|
+
font_faces,
|
981
983
|
exc_info=e,
|
982
984
|
)
|
983
985
|
font_faces = None
|
@@ -988,7 +990,8 @@ def _populate_theme_msg(msg: CustomThemeConfig, section: str = "theme") -> None:
|
|
988
990
|
msg.font_faces.append(ParseDict(font_face, FontFace()))
|
989
991
|
except Exception as e: # noqa: PERF203
|
990
992
|
_LOGGER.warning(
|
991
|
-
|
993
|
+
"Failed to parse the theme.fontFaces config option: %s.",
|
994
|
+
font_face,
|
992
995
|
exc_info=e,
|
993
996
|
)
|
994
997
|
|
@@ -92,26 +92,25 @@ class UserHashError(StreamlitAPIException):
|
|
92
92
|
args = self._get_error_message_args(orig_exc, cached_func)
|
93
93
|
|
94
94
|
return (
|
95
|
-
"""
|
96
|
-
|
95
|
+
f"""
|
96
|
+
{args["orig_exception_desc"]}
|
97
97
|
|
98
|
-
This error is likely due to a bug in
|
99
|
-
user-defined hash function that was passed into the
|
100
|
-
|
98
|
+
This error is likely due to a bug in {args["hash_func_name"]}, which is a
|
99
|
+
user-defined hash function that was passed into the `{args["cache_primitive"]}` decorator of
|
100
|
+
{args["object_desc"]}.
|
101
101
|
|
102
|
-
|
103
|
-
|
102
|
+
{args["hash_func_name"]} failed when hashing an object of type
|
103
|
+
`{args["failed_obj_type_str"]}`. If you don't know where that object is coming from,
|
104
104
|
try looking at the hash chain below for an object that you do recognize, then
|
105
105
|
pass that to `hash_funcs` instead:
|
106
106
|
|
107
107
|
```
|
108
|
-
|
108
|
+
{args["hash_stack"]}
|
109
109
|
```
|
110
110
|
|
111
111
|
If you think this is actually a Streamlit bug, please
|
112
112
|
[file a bug report here](https://github.com/streamlit/streamlit/issues/new/choose).
|
113
113
|
"""
|
114
|
-
% args
|
115
114
|
).strip("\n")
|
116
115
|
|
117
116
|
def _get_error_message_args(
|
@@ -109,9 +109,9 @@ class LocalDiskCacheStorageManager(CacheStorageManager):
|
|
109
109
|
and not math.isinf(context.ttl_seconds)
|
110
110
|
):
|
111
111
|
_LOGGER.warning(
|
112
|
-
|
113
|
-
"
|
114
|
-
|
112
|
+
"The cached function '%s' has a TTL that will be ignored. "
|
113
|
+
"Persistent cached functions currently don't support TTL.",
|
114
|
+
context.function_display_name,
|
115
115
|
)
|
116
116
|
|
117
117
|
|
@@ -38,13 +38,13 @@ if TYPE_CHECKING:
|
|
38
38
|
# 2. Writing two new @overloads for connection_factory (one for the case where the
|
39
39
|
# only the connection name is specified and another when both name and type are).
|
40
40
|
# 3. Updating test_get_first_party_connection_helper in connection_factory_test.py.
|
41
|
-
|
41
|
+
_FIRST_PARTY_CONNECTIONS: Final[dict[str, type[BaseConnection[Any]]]] = {
|
42
42
|
"snowflake": SnowflakeConnection,
|
43
43
|
"snowpark": SnowparkConnection,
|
44
44
|
"sql": SQLConnection,
|
45
45
|
}
|
46
|
-
|
47
|
-
|
46
|
+
_MODULE_EXTRACTION_REGEX = re.compile(r"No module named \'(.+)\'")
|
47
|
+
_MODULES_TO_PYPI_PACKAGES: Final[dict[str, str]] = {
|
48
48
|
"MySQLdb": "mysqlclient",
|
49
49
|
"psycopg2": "psycopg2-binary",
|
50
50
|
"sqlalchemy": "sqlalchemy",
|
@@ -52,6 +52,7 @@ MODULES_TO_PYPI_PACKAGES: Final[dict[str, str]] = {
|
|
52
52
|
"snowflake.connector": "snowflake-connector-python",
|
53
53
|
"snowflake.snowpark": "snowflake-snowpark-python",
|
54
54
|
}
|
55
|
+
_USE_ENV_PREFIX: Final = "env:"
|
55
56
|
|
56
57
|
# The BaseConnection bound is parameterized to `Any` below as subclasses of
|
57
58
|
# BaseConnection are responsible for binding the type parameter of BaseConnection to a
|
@@ -104,12 +105,12 @@ def _create_connection(
|
|
104
105
|
|
105
106
|
|
106
107
|
def _get_first_party_connection(connection_class: str) -> type[BaseConnection[Any]]:
|
107
|
-
if connection_class in
|
108
|
-
return
|
108
|
+
if connection_class in _FIRST_PARTY_CONNECTIONS:
|
109
|
+
return _FIRST_PARTY_CONNECTIONS[connection_class]
|
109
110
|
|
110
111
|
raise StreamlitAPIException(
|
111
112
|
f"Invalid connection '{connection_class}'. "
|
112
|
-
f"Supported connection classes: {
|
113
|
+
f"Supported connection classes: {_FIRST_PARTY_CONNECTIONS}"
|
113
114
|
)
|
114
115
|
|
115
116
|
|
@@ -366,12 +367,11 @@ def connection_factory( # type: ignore
|
|
366
367
|
>>> conn = st.connection("my_sql_connection", type=SQLConnection)
|
367
368
|
|
368
369
|
"""
|
369
|
-
USE_ENV_PREFIX = "env:"
|
370
370
|
|
371
|
-
if name.startswith(
|
371
|
+
if name.startswith(_USE_ENV_PREFIX):
|
372
372
|
# It'd be nice to use str.removeprefix() here, but we won't be able to do that
|
373
373
|
# until the minimum Python version we support is 3.9.
|
374
|
-
envvar_name = name[len(
|
374
|
+
envvar_name = name[len(_USE_ENV_PREFIX) :]
|
375
375
|
name = os.environ[envvar_name]
|
376
376
|
|
377
377
|
# type is a nice kwarg name for the st.connection user but is annoying to work with
|
@@ -380,7 +380,7 @@ def connection_factory( # type: ignore
|
|
380
380
|
connection_class = type
|
381
381
|
|
382
382
|
if connection_class is None:
|
383
|
-
if name in
|
383
|
+
if name in _FIRST_PARTY_CONNECTIONS:
|
384
384
|
# We allow users to simply write `st.connection("sql")` instead of
|
385
385
|
# `st.connection("sql", type="sql")`.
|
386
386
|
connection_class = _get_first_party_connection(name)
|
@@ -424,11 +424,11 @@ def connection_factory( # type: ignore
|
|
424
424
|
return conn
|
425
425
|
except ModuleNotFoundError as e:
|
426
426
|
err_string = str(e)
|
427
|
-
missing_module = re.search(
|
427
|
+
missing_module = re.search(_MODULE_EXTRACTION_REGEX, err_string)
|
428
428
|
|
429
429
|
extra_info = "You may be missing a dependency required to use this connection."
|
430
430
|
if missing_module:
|
431
|
-
pypi_package =
|
431
|
+
pypi_package = _MODULES_TO_PYPI_PACKAGES.get(missing_module.group(1))
|
432
432
|
if pypi_package:
|
433
433
|
extra_info = f"You need to install the '{pypi_package}' package to use this connection."
|
434
434
|
|
streamlit/runtime/credentials.py
CHANGED
@@ -29,7 +29,7 @@ from streamlit.logger import get_logger
|
|
29
29
|
_LOGGER: Final = get_logger(__name__)
|
30
30
|
|
31
31
|
|
32
|
-
_CONFIG_FILE_PATH = (
|
32
|
+
_CONFIG_FILE_PATH: Final = (
|
33
33
|
r"%userprofile%/.streamlit/config.toml"
|
34
34
|
if env_util.IS_WINDOWS
|
35
35
|
else "~/.streamlit/config.toml"
|
@@ -263,43 +263,30 @@ class Credentials:
|
|
263
263
|
if self.activation.is_valid:
|
264
264
|
self.save()
|
265
265
|
# IMPORTANT: Break the text below at 80 chars.
|
266
|
-
|
267
|
-
You can find our privacy policy at
|
266
|
+
telemetry_text = f"""
|
267
|
+
You can find our privacy policy at {cli_util.style_for_cli("https://streamlit.io/privacy-policy", underline=True)}
|
268
268
|
|
269
269
|
Summary:
|
270
270
|
- This open source library collects usage statistics.
|
271
271
|
- We cannot see and do not store information contained inside Streamlit apps,
|
272
272
|
such as text, charts, images, etc.
|
273
273
|
- Telemetry data is stored in servers in the United States.
|
274
|
-
- If you'd like to opt out, add the following to
|
274
|
+
- If you'd like to opt out, add the following to {cli_util.style_for_cli(_CONFIG_FILE_PATH)},
|
275
275
|
creating that file if necessary:
|
276
276
|
|
277
277
|
[browser]
|
278
278
|
gatherUsageStats = false
|
279
|
-
"""
|
280
|
-
|
281
|
-
|
282
|
-
),
|
283
|
-
"config": cli_util.style_for_cli(_CONFIG_FILE_PATH),
|
284
|
-
}
|
285
|
-
|
286
|
-
cli_util.print_to_cli(TELEMETRY_TEXT)
|
279
|
+
"""
|
280
|
+
|
281
|
+
cli_util.print_to_cli(telemetry_text)
|
287
282
|
if show_instructions:
|
288
283
|
# IMPORTANT: Break the text below at 80 chars.
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
"""
|
293
|
-
|
294
|
-
|
295
|
-
),
|
296
|
-
"prompt": cli_util.style_for_cli("$", fg="blue"),
|
297
|
-
"hello": cli_util.style_for_cli(
|
298
|
-
"streamlit hello", bold=True
|
299
|
-
),
|
300
|
-
}
|
301
|
-
|
302
|
-
cli_util.print_to_cli(INSTRUCTIONS_TEXT)
|
284
|
+
instructions_text = f"""
|
285
|
+
{cli_util.style_for_cli("Get started by typing:", fg="blue", bold=True)}
|
286
|
+
{cli_util.style_for_cli("$", fg="blue")} {cli_util.style_for_cli("streamlit hello", bold=True)}
|
287
|
+
"""
|
288
|
+
|
289
|
+
cli_util.print_to_cli(instructions_text)
|
303
290
|
activated = True
|
304
291
|
else: # pragma: nocover
|
305
292
|
_LOGGER.error("Please try again.")
|
@@ -79,8 +79,8 @@ def serialize_forward_msg(msg: ForwardMsg) -> bytes:
|
|
79
79
|
|
80
80
|
msg_size_error = MessageSizeError(msg_str)
|
81
81
|
_LOGGER.warning(
|
82
|
-
"Websocket message size limit exceeded. "
|
83
|
-
|
82
|
+
"Websocket message size limit exceeded. Showing error to the user: %s",
|
83
|
+
msg_size_error,
|
84
84
|
)
|
85
85
|
exception.marshall(msg.delta.new_element.exception, msg_size_error)
|
86
86
|
# Deactivate caching for this error message:
|
@@ -130,14 +130,14 @@ def _mpa_v1(main_script_path: str) -> None:
|
|
130
130
|
from streamlit.navigation.page import StreamlitPage
|
131
131
|
|
132
132
|
# Select the folder that should be used for the pages:
|
133
|
-
|
134
|
-
|
133
|
+
resolved_main_script_path: Final = Path(main_script_path).resolve()
|
134
|
+
pages_folder: Final = resolved_main_script_path.parent / "pages"
|
135
135
|
|
136
136
|
# Read out the my_pages folder and create a page for every script:
|
137
137
|
pages = sorted(
|
138
138
|
[
|
139
139
|
page
|
140
|
-
for page in
|
140
|
+
for page in pages_folder.glob("*.py")
|
141
141
|
if page.name.endswith(".py")
|
142
142
|
and not page.name.startswith(".")
|
143
143
|
and page.name != "__init__.py"
|
@@ -146,9 +146,9 @@ def _mpa_v1(main_script_path: str) -> None:
|
|
146
146
|
)
|
147
147
|
|
148
148
|
# Use this script as the main page and
|
149
|
-
main_page = StreamlitPage(
|
149
|
+
main_page = StreamlitPage(resolved_main_script_path, default=True)
|
150
150
|
all_pages = [main_page] + [
|
151
|
-
StreamlitPage(
|
151
|
+
StreamlitPage(pages_folder / page.name) for page in pages
|
152
152
|
]
|
153
153
|
# Initialize the navigation with all the pages:
|
154
154
|
position: Literal["sidebar", "hidden"] = (
|
@@ -639,13 +639,14 @@ class ScriptRunner:
|
|
639
639
|
# (see https://github.com/streamlit/streamlit/issues/9080).
|
640
640
|
if not rerun_data.is_auto_rerun:
|
641
641
|
_LOGGER.warning(
|
642
|
-
|
642
|
+
"Couldn't find fragment with id %s."
|
643
643
|
" This can happen if the fragment does not"
|
644
644
|
" exist anymore when this request is processed,"
|
645
645
|
" for example because a full app rerun happened"
|
646
646
|
" that did not register the fragment."
|
647
647
|
" Usually this doesn't happen or no action is"
|
648
|
-
" required, so its mainly for debugging."
|
648
|
+
" required, so its mainly for debugging.",
|
649
|
+
fragment_id,
|
649
650
|
)
|
650
651
|
except (RerunException, StopException):
|
651
652
|
# The wrapped_fragment function is executed
|
streamlit/static/index.html
CHANGED
@@ -51,7 +51,7 @@
|
|
51
51
|
<script>
|
52
52
|
window.prerenderReady = false
|
53
53
|
</script>
|
54
|
-
<script type="module" crossorigin src="./static/js/index.
|
54
|
+
<script type="module" crossorigin src="./static/js/index.BtpsTdHN.js"></script>
|
55
55
|
<link rel="stylesheet" crossorigin href="./static/css/index.C6rq3aMZ.css">
|
56
56
|
</head>
|
57
57
|
<body>
|