streamlit-nightly 1.41.2.dev20250109__py2.py3-none-any.whl → 1.41.2.dev20250111__py2.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 (96) hide show
  1. streamlit/config.py +3 -2
  2. streamlit/config_option.py +9 -18
  3. streamlit/dataframe_util.py +2 -2
  4. streamlit/delta_generator.py +6 -2
  5. streamlit/elements/exception.py +7 -9
  6. streamlit/elements/widgets/button_group.py +5 -3
  7. streamlit/elements/widgets/data_editor.py +4 -1
  8. streamlit/emojis.py +1 -1
  9. streamlit/runtime/app_session.py +23 -1
  10. streamlit/runtime/caching/cache_data_api.py +2 -2
  11. streamlit/runtime/caching/cache_utils.py +4 -3
  12. streamlit/runtime/caching/storage/local_disk_cache_storage.py +4 -4
  13. streamlit/runtime/credentials.py +4 -4
  14. streamlit/runtime/forward_msg_cache.py +3 -1
  15. streamlit/runtime/pages_manager.py +3 -1
  16. streamlit/runtime/scriptrunner/script_runner.py +1 -1
  17. streamlit/static/index.html +1 -1
  18. streamlit/static/static/js/{FileDownload.esm.C6kraHI_.js → FileDownload.esm.DgMBFvxE.js} +1 -1
  19. streamlit/static/static/js/{FormClearHelper.Tmz_sTQ8.js → FormClearHelper.C-kz8EZa.js} +1 -1
  20. streamlit/static/static/js/{Hooks.ChcK58kV.js → Hooks.BaEjlpBt.js} +1 -1
  21. streamlit/static/static/js/{InputInstructions.CWlmC2Qh.js → InputInstructions.2kJ3lLP5.js} +1 -1
  22. streamlit/static/static/js/{ProgressBar.C2LLZx-o.js → ProgressBar.BmX5Bd8z.js} +2 -2
  23. streamlit/static/static/js/{RenderInPortalIfExists.BFB9tinI.js → RenderInPortalIfExists.DvbHx6rz.js} +1 -1
  24. streamlit/static/static/js/{Toolbar.DVKl5Ty9.js → Toolbar.Cs7p2Lp9.js} +1 -1
  25. streamlit/static/static/js/{base-input.C7heAUz7.js → base-input.CmWUWSJc.js} +4 -4
  26. streamlit/static/static/js/{createSuper.BGkH3lYW.js → createSuper.D46anxnG.js} +1 -1
  27. streamlit/static/static/js/{data-grid-overlay-editor.Cuw9mHAA.js → data-grid-overlay-editor.BspRPTtu.js} +1 -1
  28. streamlit/static/static/js/{downloader.Dt0tCM6a.js → downloader.BX0QN5eD.js} +1 -1
  29. streamlit/static/static/js/{es6.DEWLLkEJ.js → es6.BlW--gnF.js} +2 -2
  30. streamlit/static/static/js/{getPrototypeOf.BobjvJFE.js → getPrototypeOf.BYTPPQIp.js} +1 -1
  31. streamlit/static/static/js/{iframeResizer.contentWindow.Cb2nEQV3.js → iframeResizer.contentWindow.CNHQyyTg.js} +1 -1
  32. streamlit/static/static/js/{index.C4ggakh6.js → index.-JIbeXZC.js} +11 -11
  33. streamlit/static/static/js/{index.BbullfwT.js → index.2kexLuIU.js} +62 -62
  34. streamlit/static/static/js/{index.DTQeyNXN.js → index.5f81IBZP.js} +1 -1
  35. streamlit/static/static/js/{index.BU-BMiNz.js → index.7441r-sL.js} +1 -1
  36. streamlit/static/static/js/index.AzFWl1A_.js +3 -0
  37. streamlit/static/static/js/{index.BhvVhqgM.js → index.B1RTO67W.js} +1 -1
  38. streamlit/static/static/js/{index.b1jbiVGt.js → index.B2lUWG_g.js} +1 -1
  39. streamlit/static/static/js/{index.BBm-I8-2.js → index.B3F-o9ex.js} +1 -1
  40. streamlit/static/static/js/{index.8LNY4OIb.js → index.BBK0SZBc.js} +3 -3
  41. streamlit/static/static/js/{index.CKpkbBQ4.js → index.BBQgDj4i.js} +16 -16
  42. streamlit/static/static/js/{index.CsnZSzHc.js → index.BHVs7_wn.js} +1 -1
  43. streamlit/static/static/js/{index.BSITpAz8.js → index.BRwmGBP4.js} +9 -9
  44. streamlit/static/static/js/{index.CKyzSK7k.js → index.BSabhp-S.js} +2 -2
  45. streamlit/static/static/js/{index.C6zLaEWH.js → index.BX4DPcrq.js} +1 -1
  46. streamlit/static/static/js/{index.IRVXqVyf.js → index.BhQrqdv2.js} +1 -1
  47. streamlit/static/static/js/index.BhRQ3Irc.js +1 -0
  48. streamlit/static/static/js/index.BqCCfwZM.js +1 -0
  49. streamlit/static/static/js/{index.CksJdg_n.js → index.BtaWfSZN.js} +1 -1
  50. streamlit/static/static/js/{index.CWzMR4Qn.js → index.BwvnBWfd.js} +2 -2
  51. streamlit/static/static/js/{index.Caaf3Sch.js → index.CAmkSLgk.js} +1 -1
  52. streamlit/static/static/js/{index.De91xhMb.js → index.CKhEFCMB.js} +1 -1
  53. streamlit/static/static/js/index.CdjxQOw-.js +1 -0
  54. streamlit/static/static/js/index.ClU6Toj3.js +1 -0
  55. streamlit/static/static/js/{index.n7L72_oq.js → index.D4cEoG-b.js} +3 -3
  56. streamlit/static/static/js/{index.DSOFf22B.js → index.D7zDVCSD.js} +1 -1
  57. streamlit/static/static/js/{index.B59J81FK.js → index.D8V0ZERG.js} +1 -1
  58. streamlit/static/static/js/{index.kz_FxQ30.js → index.DAlH7XAu.js} +1 -1
  59. streamlit/static/static/js/index.DGXjFinj.js +1 -0
  60. streamlit/static/static/js/{index.BAlqqBcw.js → index.DKFY5Ha1.js} +3 -3
  61. streamlit/static/static/js/{index.2xRq6cMk.js → index.DRm6hoq7.js} +1 -1
  62. streamlit/static/static/js/index.DhCGDinQ.js +2 -0
  63. streamlit/static/static/js/index.Drqk1Tqs.js +1 -0
  64. streamlit/static/static/js/{index.DeX4c3dx.js → index.DuEIfrbC.js} +1 -1
  65. streamlit/static/static/js/{index.D2_ysKuQ.js → index.a4u3c2yA.js} +1 -1
  66. streamlit/static/static/js/{index.DA-jgmvJ.js → index.d1dU1FHw.js} +1 -1
  67. streamlit/static/static/js/{index.BwUNY-jU.js → index.tQ3BfkaX.js} +1 -1
  68. streamlit/static/static/js/{index.CJrSPe9e.js → index.y-VLJ65m.js} +1 -1
  69. streamlit/static/static/js/{input.qSadM7Tx.js → input.C7wSNGte.js} +2 -2
  70. streamlit/static/static/js/{memory.CROZv0Mn.js → memory.BF0Xc-rJ.js} +1 -1
  71. streamlit/static/static/js/{mergeWith.CO-Rv2Zo.js → mergeWith.CHIovAKI.js} +1 -1
  72. streamlit/static/static/js/{number-overlay-editor.BRQhYKOF.js → number-overlay-editor.DfAWep9y.js} +1 -1
  73. streamlit/static/static/js/{sandbox.CZKLDBgs.js → sandbox.CM0H2h0v.js} +1 -1
  74. streamlit/static/static/js/{slicedToArray.D36w_Bc8.js → slicedToArray.BOBOh4VJ.js} +1 -1
  75. streamlit/static/static/js/{textarea.DvzSPS_8.js → textarea.CINkGDSQ.js} +2 -2
  76. streamlit/static/static/js/{timepicker.FNAmrJ96.js → timepicker.eZuQgQCF.js} +1 -1
  77. streamlit/static/static/js/{uniqueId.BNjI9ROI.js → uniqueId.vdNgUDff.js} +1 -1
  78. streamlit/static/static/js/{useBasicWidgetState.B8IH-5cn.js → useBasicWidgetState.De0NYf9Y.js} +1 -1
  79. streamlit/static/static/js/{useOnInputChange.B1QB2TNw.js → useOnInputChange.cRNtiNHf.js} +1 -1
  80. streamlit/static/static/js/{withFullScreenWrapper.BT91IT4-.js → withFullScreenWrapper.D4HXFzaF.js} +1 -1
  81. streamlit/watcher/local_sources_watcher.py +4 -2
  82. streamlit/web/server/browser_websocket_handler.py +1 -1
  83. {streamlit_nightly-1.41.2.dev20250109.dist-info → streamlit_nightly-1.41.2.dev20250111.dist-info}/METADATA +1 -1
  84. {streamlit_nightly-1.41.2.dev20250109.dist-info → streamlit_nightly-1.41.2.dev20250111.dist-info}/RECORD +88 -88
  85. streamlit/static/static/js/index.3dqlv1Xq.js +0 -2
  86. streamlit/static/static/js/index.4hESrvbj.js +0 -1
  87. streamlit/static/static/js/index.BEEgvyV0.js +0 -1
  88. streamlit/static/static/js/index.Bo2RO7c-.js +0 -1
  89. streamlit/static/static/js/index.CJKd6KIo.js +0 -1
  90. streamlit/static/static/js/index.CdNirCmM.js +0 -1
  91. streamlit/static/static/js/index.Cq6-Dj2J.js +0 -1
  92. streamlit/static/static/js/index.bQJeNN28.js +0 -3
  93. {streamlit_nightly-1.41.2.dev20250109.data → streamlit_nightly-1.41.2.dev20250111.data}/scripts/streamlit.cmd +0 -0
  94. {streamlit_nightly-1.41.2.dev20250109.dist-info → streamlit_nightly-1.41.2.dev20250111.dist-info}/WHEEL +0 -0
  95. {streamlit_nightly-1.41.2.dev20250109.dist-info → streamlit_nightly-1.41.2.dev20250111.dist-info}/entry_points.txt +0 -0
  96. {streamlit_nightly-1.41.2.dev20250109.dist-info → streamlit_nightly-1.41.2.dev20250111.dist-info}/top_level.txt +0 -0
streamlit/config.py CHANGED
@@ -1126,7 +1126,8 @@ def _set_option(key: str, value: Any, where_defined: str) -> None:
1126
1126
  LOGGER = get_logger(__name__)
1127
1127
 
1128
1128
  LOGGER.warning(
1129
- f'"{key}" is not a valid config option. If you previously had this config option set, it may have been removed.'
1129
+ f'"{key}" is not a valid config option. If you previously had this config '
1130
+ "option set, it may have been removed."
1130
1131
  )
1131
1132
 
1132
1133
  else:
@@ -1197,7 +1198,7 @@ def _maybe_read_env_variable(value: Any) -> Any:
1197
1198
 
1198
1199
  LOGGER = get_logger(__name__)
1199
1200
 
1200
- LOGGER.error("No environment variable called %s" % var_name)
1201
+ LOGGER.error("No environment variable called %s", var_name)
1201
1202
  else:
1202
1203
  return _maybe_convert_to_number(env_var)
1203
1204
 
@@ -250,13 +250,6 @@ class ConfigOption:
250
250
  self.is_default = value == self.default_val
251
251
 
252
252
  if self.deprecated and self.where_defined != ConfigOption.DEFAULT_DEFINITION:
253
- details = {
254
- "key": self.key,
255
- "file": self.where_defined,
256
- "explanation": self.deprecation_text,
257
- "date": self.expiration_date,
258
- }
259
-
260
253
  if self.is_expired():
261
254
  # Import here to avoid circular imports
262
255
  from streamlit.logger import get_logger
@@ -264,17 +257,16 @@ class ConfigOption:
264
257
  LOGGER = get_logger(__name__)
265
258
  LOGGER.error(
266
259
  textwrap.dedent(
267
- """
260
+ f"""
268
261
  ════════════════════════════════════════════════
269
- %(key)s IS NO LONGER SUPPORTED.
262
+ {self.key} IS NO LONGER SUPPORTED.
270
263
 
271
- %(explanation)s
264
+ {self.deprecation_text}
272
265
 
273
- Please update %(file)s.
266
+ Please update {self.where_defined}.
274
267
  ════════════════════════════════════════════════
275
268
  """
276
269
  )
277
- % details
278
270
  )
279
271
  else:
280
272
  # Import here to avoid circular imports
@@ -283,18 +275,17 @@ class ConfigOption:
283
275
  LOGGER = get_logger(__name__)
284
276
  LOGGER.warning(
285
277
  textwrap.dedent(
286
- """
278
+ f"""s
287
279
  ════════════════════════════════════════════════
288
- %(key)s IS DEPRECATED.
289
- %(explanation)s
280
+ {self.key} IS DEPRECATED.
281
+ {self.deprecation_text}
290
282
 
291
- This option will be removed on or after %(date)s.
283
+ This option will be removed on or after {self.expiration_date}.
292
284
 
293
- Please update %(file)s.
285
+ Please update {self.where_defined}.
294
286
  ════════════════════════════════════════════════
295
287
  """
296
288
  )
297
- % details
298
289
  )
299
290
 
300
291
  def is_expired(self) -> bool:
@@ -818,10 +818,10 @@ def convert_pandas_df_to_arrow_bytes(df: DataFrame) -> bytes:
818
818
  table = pa.Table.from_pandas(df)
819
819
  except (pa.ArrowTypeError, pa.ArrowInvalid, pa.ArrowNotImplementedError) as ex:
820
820
  _LOGGER.info(
821
- "Serialization of dataframe to Arrow table was unsuccessful due to: %s. "
821
+ "Serialization of dataframe to Arrow table was unsuccessful. "
822
822
  "Applying automatic fixes for column types to make the dataframe "
823
823
  "Arrow-compatible.",
824
- ex,
824
+ exc_info=ex,
825
825
  )
826
826
  df = fix_arrow_incompatible_column_types(df)
827
827
  table = pa.Table.from_pandas(df)
@@ -130,7 +130,9 @@ def _maybe_print_use_warning() -> None:
130
130
 
131
131
  if env_util.is_repl():
132
132
  logger.get_logger("root").warning(
133
- f"\n {warning} to view a Streamlit app on a browser, use Streamlit in a file and\n run it with the following command:\n\n streamlit run [FILE_NAME] [ARGUMENTS]"
133
+ f"\n {warning} to view a Streamlit app on a browser, use Streamlit in "
134
+ "a file and\n run it with the following command:\n\n streamlit run "
135
+ "[FILE_NAME] [ARGUMENTS]"
134
136
  )
135
137
 
136
138
  elif not runtime.exists() and config.get_option(
@@ -139,7 +141,9 @@ def _maybe_print_use_warning() -> None:
139
141
  script_name = sys.argv[0]
140
142
 
141
143
  logger.get_logger("root").warning(
142
- f"\n {warning} to view this Streamlit app on a browser, run it with the following\n command:\n\n streamlit run {script_name} [ARGUMENTS]"
144
+ f"\n {warning} to view this Streamlit app on a browser, run it with "
145
+ f"the following\n command:\n\n streamlit run {script_name} "
146
+ "[ARGUMENTS]"
143
147
  )
144
148
 
145
149
 
@@ -130,20 +130,18 @@ This is usually due to a bug in the Exception object itself. Here is some info
130
130
  about that Exception object, so you can report a bug to the original author:
131
131
 
132
132
  Exception type:
133
- %(etype)s
133
+ %s
134
134
 
135
135
  Problem:
136
- %(str_exception)s
136
+ %s
137
137
 
138
138
  Traceback:
139
- %(str_exception_tb)s
139
+ %s
140
140
 
141
- """
142
- % {
143
- "etype": type(exception).__name__,
144
- "str_exception": str_exception,
145
- "str_exception_tb": "\n".join(_get_stack_trace_str_list(str_exception)),
146
- }
141
+ """,
142
+ type(exception).__name__,
143
+ str_exception,
144
+ "\n".join(_get_stack_trace_str_list(str_exception)),
147
145
  )
148
146
 
149
147
  if is_uncaught_app_exception:
@@ -52,7 +52,7 @@ from streamlit.proto.ButtonGroup_pb2 import ButtonGroup as ButtonGroupProto
52
52
  from streamlit.runtime.metrics_util import gather_metrics
53
53
  from streamlit.runtime.scriptrunner_utils.script_run_context import get_script_run_ctx
54
54
  from streamlit.runtime.state import register_widget
55
- from streamlit.string_util import validate_material_icon
55
+ from streamlit.string_util import is_emoji, validate_material_icon
56
56
  from streamlit.type_util import T
57
57
 
58
58
  if TYPE_CHECKING:
@@ -822,10 +822,12 @@ class ButtonGroupMixin:
822
822
  if len(transformed_parts) > 0:
823
823
  maybe_icon = transformed_parts[0].strip()
824
824
  try:
825
- # we only want to extract material icons because we treat them
826
- # differently than emojis visually
827
825
  if maybe_icon.startswith(":material"):
828
826
  icon = validate_material_icon(maybe_icon)
827
+ elif is_emoji(maybe_icon):
828
+ icon = maybe_icon
829
+
830
+ if icon:
829
831
  # reassamble the option string without the icon - also
830
832
  # works if len(transformed_parts) == 1
831
833
  transformed = " ".join(transformed_parts[1:])
@@ -237,7 +237,10 @@ def _parse_value(
237
237
 
238
238
  except (ValueError, pd.errors.ParserError) as ex:
239
239
  _LOGGER.warning(
240
- "Failed to parse value %s as %s. Exception: %s", value, column_data_kind, ex
240
+ "Failed to parse value %s as %s.",
241
+ value,
242
+ column_data_kind,
243
+ exc_info=ex,
241
244
  )
242
245
  return None
243
246
  return value