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.
Files changed (180) hide show
  1. streamlit/auth_util.py +3 -3
  2. streamlit/commands/echo.py +1 -1
  3. streamlit/config.py +32 -12
  4. streamlit/config_option.py +3 -5
  5. streamlit/config_util.py +4 -5
  6. streamlit/connections/snowflake_connection.py +4 -3
  7. streamlit/delta_generator.py +10 -14
  8. streamlit/elements/arrow.py +1 -0
  9. streamlit/elements/deck_gl_json_chart.py +1 -0
  10. streamlit/elements/doc_string.py +7 -15
  11. streamlit/elements/exception.py +4 -12
  12. streamlit/elements/form.py +14 -0
  13. streamlit/elements/graphviz_chart.py +1 -1
  14. streamlit/elements/heading.py +3 -4
  15. streamlit/elements/json.py +7 -6
  16. streamlit/elements/layouts.py +21 -3
  17. streamlit/elements/lib/image_utils.py +2 -3
  18. streamlit/elements/lib/layout_utils.py +24 -0
  19. streamlit/elements/lib/mutable_status_container.py +9 -0
  20. streamlit/elements/lib/streamlit_plotly_theme.py +54 -53
  21. streamlit/elements/lib/utils.py +15 -0
  22. streamlit/elements/markdown.py +34 -4
  23. streamlit/elements/media.py +1 -1
  24. streamlit/elements/plotly_chart.py +1 -0
  25. streamlit/elements/progress.py +6 -15
  26. streamlit/elements/spinner.py +5 -4
  27. streamlit/elements/vega_charts.py +1 -0
  28. streamlit/elements/widgets/audio_input.py +4 -10
  29. streamlit/elements/widgets/button.py +3 -1
  30. streamlit/elements/widgets/button_group.py +1 -0
  31. streamlit/elements/widgets/camera_input.py +6 -9
  32. streamlit/elements/widgets/chat.py +11 -13
  33. streamlit/elements/widgets/checkbox.py +1 -0
  34. streamlit/elements/widgets/color_picker.py +9 -14
  35. streamlit/elements/widgets/data_editor.py +9 -5
  36. streamlit/elements/widgets/file_uploader.py +10 -9
  37. streamlit/elements/widgets/multiselect.py +1 -0
  38. streamlit/elements/widgets/number_input.py +12 -12
  39. streamlit/elements/widgets/radio.py +2 -1
  40. streamlit/elements/widgets/select_slider.py +4 -10
  41. streamlit/elements/widgets/selectbox.py +11 -13
  42. streamlit/elements/widgets/slider.py +28 -41
  43. streamlit/elements/widgets/text_widgets.py +16 -24
  44. streamlit/elements/widgets/time_widgets.py +15 -22
  45. streamlit/hello/animation_demo.py +9 -9
  46. streamlit/hello/dataframe_demo.py +2 -2
  47. streamlit/hello/hello.py +1 -0
  48. streamlit/hello/mapping_demo.py +5 -6
  49. streamlit/hello/streamlit_app.py +27 -25
  50. streamlit/logger.py +1 -1
  51. streamlit/proto/AudioInput_pb2.py +3 -4
  52. streamlit/proto/AudioInput_pb2.pyi +2 -7
  53. streamlit/proto/Block_pb2.py +27 -27
  54. streamlit/proto/Block_pb2.pyi +3 -17
  55. streamlit/proto/CameraInput_pb2.py +3 -4
  56. streamlit/proto/CameraInput_pb2.pyi +2 -8
  57. streamlit/proto/ChatInput_pb2.py +7 -8
  58. streamlit/proto/ChatInput_pb2.pyi +1 -10
  59. streamlit/proto/Code_pb2.py +3 -4
  60. streamlit/proto/DateInput_pb2.py +3 -4
  61. streamlit/proto/DateInput_pb2.pyi +2 -8
  62. streamlit/proto/DocString_pb2.py +5 -6
  63. streamlit/proto/DocString_pb2.pyi +1 -9
  64. streamlit/proto/FileUploader_pb2.py +3 -4
  65. streamlit/proto/FileUploader_pb2.pyi +2 -8
  66. streamlit/proto/Json_pb2.py +3 -4
  67. streamlit/proto/Json_pb2.pyi +2 -9
  68. streamlit/proto/NewSession_pb2.py +16 -16
  69. streamlit/proto/NewSession_pb2.pyi +7 -2
  70. streamlit/proto/NumberInput_pb2.py +5 -6
  71. streamlit/proto/NumberInput_pb2.pyi +2 -9
  72. streamlit/proto/Progress_pb2.py +3 -4
  73. streamlit/proto/Progress_pb2.pyi +1 -7
  74. streamlit/proto/Selectbox_pb2.py +3 -4
  75. streamlit/proto/Selectbox_pb2.pyi +2 -9
  76. streamlit/proto/Slider_pb2.py +7 -8
  77. streamlit/proto/Slider_pb2.pyi +2 -8
  78. streamlit/proto/TextArea_pb2.py +3 -4
  79. streamlit/proto/TextArea_pb2.pyi +2 -9
  80. streamlit/proto/TextInput_pb2.py +5 -6
  81. streamlit/proto/TextInput_pb2.pyi +2 -9
  82. streamlit/proto/TimeInput_pb2.py +3 -4
  83. streamlit/proto/TimeInput_pb2.pyi +2 -9
  84. streamlit/runtime/app_session.py +11 -8
  85. streamlit/runtime/caching/hashing.py +8 -9
  86. streamlit/runtime/caching/storage/local_disk_cache_storage.py +3 -3
  87. streamlit/runtime/connection_factory.py +12 -12
  88. streamlit/runtime/credentials.py +13 -26
  89. streamlit/runtime/runtime_util.py +2 -2
  90. streamlit/runtime/scriptrunner/script_runner.py +8 -7
  91. streamlit/static/index.html +1 -1
  92. streamlit/static/manifest.json +1240 -0
  93. streamlit/static/static/js/{ErrorOutline.esm.qteVcUUN.js → ErrorOutline.esm.D5NgCh5m.js} +1 -1
  94. streamlit/static/static/js/{FileDownload.esm.ncu7N-Hr.js → FileDownload.esm.NuObx1Tl.js} +1 -1
  95. streamlit/static/static/js/{FileHelper.zsMZ7RXt.js → FileHelper.BH7o4_P9.js} +5 -5
  96. streamlit/static/static/js/{FormClearHelper.W8yVYXZp.js → FormClearHelper.BAxB8JFY.js} +1 -1
  97. streamlit/static/static/js/{Hooks.DBj6srQ1.js → Hooks.Bjt8oBOT.js} +1 -1
  98. streamlit/static/static/js/{InputInstructions.BobLsJJb.js → InputInstructions.BZZLp6t9.js} +1 -1
  99. streamlit/static/static/js/{ProgressBar.CtvJrIzN.js → ProgressBar.BwRgGfI0.js} +2 -2
  100. streamlit/static/static/js/{RenderInPortalIfExists.DnT_UdzV.js → RenderInPortalIfExists.C_c286r8.js} +1 -1
  101. streamlit/static/static/js/{Toolbar.BVF7NtOB.js → Toolbar.5tXjF_eX.js} +1 -1
  102. streamlit/static/static/js/{base-input.B4sdS3vw.js → base-input.wfBDFTlB.js} +1 -1
  103. streamlit/static/static/js/{checkbox.DKDitzF8.js → checkbox.D1GhNngU.js} +1 -1
  104. streamlit/static/static/js/{createSuper.mhx956J9.js → createSuper.CudEEVs2.js} +1 -1
  105. streamlit/static/static/js/{data-grid-overlay-editor.CmXS0PAX.js → data-grid-overlay-editor.DUTI_Rbg.js} +1 -1
  106. streamlit/static/static/js/{downloader.Cnd9SuxG.js → downloader.BwLpAoXN.js} +1 -1
  107. streamlit/static/static/js/{es6.DM-pf09u.js → es6.B_HLnUb9.js} +2 -2
  108. streamlit/static/static/js/{iframeResizer.contentWindow.Gc5GAjZM.js → iframeResizer.contentWindow.BNcjOcan.js} +1 -1
  109. streamlit/static/static/js/{index.D4XRYl23.js → index.3WJoJFGb.js} +1 -1
  110. streamlit/static/static/js/{index.C_2m4F7k.js → index.B0h616Th.js} +1 -1
  111. streamlit/static/static/js/{index.p2Wl4zMi.js → index.B0paBg5x.js} +1 -1
  112. streamlit/static/static/js/index.B3vWaIrN.js +1 -0
  113. streamlit/static/static/js/{index.B45ExNhw.js → index.B4PbMsBe.js} +1 -1
  114. streamlit/static/static/js/{index.BWTBe3a1.js → index.BGKVW2u9.js} +1 -1
  115. streamlit/static/static/js/index.BJQPxOFd.js +12 -0
  116. streamlit/static/static/js/{index.DdyZtGcg.js → index.BOHEcsVb.js} +1 -1
  117. streamlit/static/static/js/{index.BR-S54Iv.js → index.BPGAPI9w.js} +1 -1
  118. streamlit/static/static/js/{index.gBOr8z2K.js → index.Bj6uLiaA.js} +1 -1
  119. streamlit/static/static/js/{index.I3iNnzJx.js → index.BkvVxUIW.js} +1 -1
  120. streamlit/static/static/js/{index._BaeK1t7.js → index.Bs0m0eUy.js} +1 -1
  121. streamlit/static/static/js/{index.DwUISpCs.js → index.BtpsTdHN.js} +177 -174
  122. streamlit/static/static/js/index.C1GNiWbH.js +1 -0
  123. streamlit/static/static/js/{index.B6xTo8b8.js → index.CL0UH4WF.js} +1 -1
  124. streamlit/static/static/js/{index.BJQNG4O1.js → index.CXP5ffxh.js} +1 -1
  125. streamlit/static/static/js/{index.DAvhwYMG.js → index.Ca-9xoC2.js} +1 -1
  126. streamlit/static/static/js/{index.COBionvf.js → index.Cdd7Ri21.js} +1 -1
  127. streamlit/static/static/js/index.Cf8KcH2X.js +1 -0
  128. streamlit/static/static/js/{index.BkLkRTpZ.js → index.CfzaRR6P.js} +1 -1
  129. streamlit/static/static/js/{index.CkKptP1T.js → index.CjRwuAdg.js} +1 -1
  130. streamlit/static/static/js/{index.CjBaoWYr.js → index.CkOUlPYT.js} +1 -1
  131. streamlit/static/static/js/{index.DQGSbu2C.js → index.CxtkoiKl.js} +1 -1
  132. streamlit/static/static/js/index.D3wYqvI6.js +1 -0
  133. streamlit/static/static/js/index.D8i27llu.js +3 -0
  134. streamlit/static/static/js/{index.BfusYuD8.js → index.DA7wmIe4.js} +1 -1
  135. streamlit/static/static/js/index.DIG9Mo9J.js +1 -0
  136. streamlit/static/static/js/index.DNR4wKJg.js +1 -0
  137. streamlit/static/static/js/{index.B29JQLHa.js → index.DNS8a-dx.js} +20 -20
  138. streamlit/static/static/js/{index.BNNR5Jmd.js → index.NveskZ7j.js} +1 -1
  139. streamlit/static/static/js/{index.CWgnk1N4.js → index.PR2mcvVR.js} +1 -1
  140. streamlit/static/static/js/{index.CJ-XXd1r.js → index.df4uuSoD.js} +1 -1
  141. streamlit/static/static/js/{index.WWYmGCrM.js → index.flyQEkeT.js} +1 -1
  142. streamlit/static/static/js/{index.vOqxh1m2.js → index.iF9jUtwl.js} +1 -1
  143. streamlit/static/static/js/{index.C5KKmyWy.js → index.jyqBAhvH.js} +1 -1
  144. streamlit/static/static/js/{index.AWkO-7e-.js → index.sYLAHlH0.js} +1 -1
  145. streamlit/static/static/js/{index.CZ5fZcT5.js → index.zq3LdRhj.js} +1 -1
  146. streamlit/static/static/js/{input.BvD9DHLa.js → input.CtZjQ6Pv.js} +1 -1
  147. streamlit/static/static/js/{memory.DCVB1HOm.js → memory.Ddl3R0up.js} +1 -1
  148. streamlit/static/static/js/{mergeWith.BqTORFAq.js → mergeWith.D-TqDY0-.js} +1 -1
  149. streamlit/static/static/js/{number-overlay-editor.VB_OvuPv.js → number-overlay-editor.Dndf05Hx.js} +1 -1
  150. streamlit/static/static/js/{possibleConstructorReturn.DhYxBDlj.js → possibleConstructorReturn.DNEY6J9G.js} +1 -1
  151. streamlit/static/static/js/{sandbox.CoN7LRFk.js → sandbox.B_XDPkfx.js} +1 -1
  152. streamlit/static/static/js/{textarea.DkHpIjdT.js → textarea.BZ9lTMhV.js} +1 -1
  153. streamlit/static/static/js/{timepicker.C8UIzYhf.js → timepicker.D9UUwpRT.js} +1 -1
  154. streamlit/static/static/js/{toConsumableArray.DXfr1fvT.js → toConsumableArray.DNJjbOUS.js} +1 -1
  155. streamlit/static/static/js/{uniqueId.CgrMSBTb.js → uniqueId.psBJ_tSg.js} +1 -1
  156. streamlit/static/static/js/{useBasicWidgetState.C-e-WEFS.js → useBasicWidgetState.CTpx4w-3.js} +1 -1
  157. streamlit/static/static/js/{useOnInputChange.CtRJhZD6.js → useOnInputChange.WKTDSC4O.js} +1 -1
  158. streamlit/static/static/js/{withFullScreenWrapper.od0SAvAK.js → withFullScreenWrapper.oyWCn2-3.js} +1 -1
  159. streamlit/watcher/local_sources_watcher.py +1 -1
  160. streamlit/watcher/path_watcher.py +2 -3
  161. streamlit/web/bootstrap.py +1 -1
  162. streamlit/web/cli.py +5 -5
  163. streamlit/web/server/authlib_tornado_integration.py +3 -3
  164. streamlit/web/server/oauth_authlib_routes.py +4 -2
  165. streamlit/web/server/oidc_mixin.py +6 -5
  166. streamlit/web/server/server.py +1 -1
  167. {streamlit_nightly-1.45.2.dev20250527.dist-info → streamlit_nightly-1.45.2.dev20250530.dist-info}/METADATA +2 -2
  168. {streamlit_nightly-1.45.2.dev20250527.dist-info → streamlit_nightly-1.45.2.dev20250530.dist-info}/RECORD +172 -171
  169. streamlit/static/static/js/index.B0E6Rv1F.js +0 -1
  170. streamlit/static/static/js/index.BONHiJUZ.js +0 -1
  171. streamlit/static/static/js/index.BV38yp5k.js +0 -1
  172. streamlit/static/static/js/index.CgOynO1t.js +0 -1
  173. streamlit/static/static/js/index.DIyx-z1Q.js +0 -1
  174. streamlit/static/static/js/index.DOYomqqU.js +0 -1
  175. streamlit/static/static/js/index.DOl-SOKu.js +0 -3
  176. streamlit/static/static/js/index.DTU7qmDP.js +0 -12
  177. {streamlit_nightly-1.45.2.dev20250527.data → streamlit_nightly-1.45.2.dev20250530.data}/scripts/streamlit.cmd +0 -0
  178. {streamlit_nightly-1.45.2.dev20250527.dist-info → streamlit_nightly-1.45.2.dev20250530.dist-info}/WHEEL +0 -0
  179. {streamlit_nightly-1.45.2.dev20250527.dist-info → streamlit_nightly-1.45.2.dev20250530.dist-info}/entry_points.txt +0 -0
  180. {streamlit_nightly-1.45.2.dev20250527.dist-info → streamlit_nightly-1.45.2.dev20250530.dist-info}/top_level.txt +0 -0
@@ -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", "_width_config", b"_width_config", "default", b"default", "label_visibility", b"label_visibility", "value", b"value", "width_config", b"width_config"]) -> builtins.bool: ...
79
- def ClearField(self, field_name: typing.Literal["_default", b"_default", "_value", b"_value", "_width_config", b"_width_config", "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", "width_config", b"width_config"]) -> None: ...
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
@@ -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\x1a!streamlit/proto/WidthConfig.proto\"\xaf\x03\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\x12\x31\n\x0cwidth_config\x18\x0f \x01(\x0b\x32\x16.streamlit.WidthConfigH\x02\x88\x01\x01\"!\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\x0f\n\r_width_configB.\n\x1c\x63om.snowflake.apps.streamlitB\x0eTextInputProtob\x06proto3')
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=117
28
- _globals['_TEXTINPUT']._serialized_end=548
29
- _globals['_TEXTINPUT_TYPE']._serialized_start=476
30
- _globals['_TEXTINPUT_TYPE']._serialized_end=509
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", "_width_config", b"_width_config", "default", b"default", "label_visibility", b"label_visibility", "value", b"value", "width_config", b"width_config"]) -> builtins.bool: ...
109
- def ClearField(self, field_name: typing.Literal["_default", b"_default", "_value", b"_value", "_width_config", b"_width_config", "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", "width_config", b"width_config"]) -> None: ...
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
@@ -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\x1a!streamlit/proto/WidthConfig.proto\"\xaf\x02\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\x12\x31\n\x0cwidth_config\x18\x0b \x01(\x0b\x32\x16.streamlit.WidthConfigH\x02\x88\x01\x01\x42\n\n\x08_defaultB\x08\n\x06_valueB\x0f\n\r_width_configB.\n\x1c\x63om.snowflake.apps.streamlitB\x0eTimeInputProtob\x06proto3')
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=117
28
- _globals['_TIMEINPUT']._serialized_end=420
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", "_width_config", b"_width_config", "default", b"default", "label_visibility", b"label_visibility", "value", b"value", "width_config", b"width_config"]) -> builtins.bool: ...
73
- def ClearField(self, field_name: typing.Literal["_default", b"_default", "_value", b"_value", "_width_config", b"_width_config", "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", "width_config", b"width_config"]) -> None: ...
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
@@ -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
- f"The fragment with id {fragment_id} does not exist anymore - "
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
- f'"{base}" is an invalid value for theme.base.'
958
- f" Allowed values include {list(base_map.keys())}."
959
- ' Setting theme.base to "light".'
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
- f"{font_faces}.",
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
- f"Failed to parse the theme.fontFaces config option: {font_face}.",
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
- %(orig_exception_desc)s
95
+ f"""
96
+ {args["orig_exception_desc"]}
97
97
 
98
- This error is likely due to a bug in %(hash_func_name)s, which is a
99
- user-defined hash function that was passed into the `%(cache_primitive)s` decorator of
100
- %(object_desc)s.
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
- %(hash_func_name)s failed when hashing an object of type
103
- `%(failed_obj_type_str)s`. If you don't know where that object is coming from,
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
- %(hash_stack)s
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
- f"The cached function '{context.function_display_name}' has a TTL "
113
- "that will be ignored. Persistent cached functions currently don't "
114
- "support TTL."
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
- FIRST_PARTY_CONNECTIONS: Final[dict[str, type[BaseConnection[Any]]]] = {
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
- MODULE_EXTRACTION_REGEX = re.compile(r"No module named \'(.+)\'")
47
- MODULES_TO_PYPI_PACKAGES: Final[dict[str, str]] = {
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 FIRST_PARTY_CONNECTIONS:
108
- return FIRST_PARTY_CONNECTIONS[connection_class]
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: {FIRST_PARTY_CONNECTIONS}"
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(USE_ENV_PREFIX):
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(USE_ENV_PREFIX) :]
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 FIRST_PARTY_CONNECTIONS:
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(MODULE_EXTRACTION_REGEX, err_string)
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 = MODULES_TO_PYPI_PACKAGES.get(missing_module.group(1))
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
 
@@ -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
- TELEMETRY_TEXT = """
267
- You can find our privacy policy at %(link)s
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 %(config)s,
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
- "link": cli_util.style_for_cli(
281
- "https://streamlit.io/privacy-policy", underline=True
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
- INSTRUCTIONS_TEXT = """
290
- %(start)s
291
- %(prompt)s %(hello)s
292
- """ % {
293
- "start": cli_util.style_for_cli(
294
- "Get started by typing:", fg="blue", bold=True
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
- f"Showing error to the user: {msg_size_error}"
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
- MAIN_SCRIPT_PATH = Path(main_script_path).resolve()
134
- PAGES_FOLDER = MAIN_SCRIPT_PATH.parent / "pages"
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 PAGES_FOLDER.glob("*.py")
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(MAIN_SCRIPT_PATH, default=True)
149
+ main_page = StreamlitPage(resolved_main_script_path, default=True)
150
150
  all_pages = [main_page] + [
151
- StreamlitPage(PAGES_FOLDER / page.name) for page in pages
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
- f"Couldn't find fragment with id {fragment_id}."
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
@@ -51,7 +51,7 @@
51
51
  <script>
52
52
  window.prerenderReady = false
53
53
  </script>
54
- <script type="module" crossorigin src="./static/js/index.DwUISpCs.js"></script>
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>