streamlit-nightly 1.45.2.dev20250512__py3-none-any.whl → 1.45.2.dev20250513__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 (131) hide show
  1. streamlit/__init__.py +1 -0
  2. streamlit/auth_util.py +6 -6
  3. streamlit/commands/echo.py +5 -3
  4. streamlit/components/v1/custom_component.py +2 -2
  5. streamlit/config.py +7 -7
  6. streamlit/config_util.py +5 -6
  7. streamlit/delta_generator.py +4 -1
  8. streamlit/deprecation_util.py +5 -5
  9. streamlit/elements/doc_string.py +4 -6
  10. streamlit/elements/lib/built_in_chart_utils.py +13 -8
  11. streamlit/elements/lib/policies.py +1 -1
  12. streamlit/elements/spinner.py +1 -1
  13. streamlit/elements/vega_charts.py +1 -1
  14. streamlit/elements/widgets/slider.py +1 -1
  15. streamlit/elements/write.py +2 -2
  16. streamlit/error_util.py +15 -8
  17. streamlit/errors.py +10 -7
  18. streamlit/file_util.py +6 -3
  19. streamlit/git_util.py +26 -21
  20. streamlit/hello/dataframe_demo.py +1 -1
  21. streamlit/hello/mapping_demo.py +1 -1
  22. streamlit/hello/plotting_demo.py +3 -3
  23. streamlit/hello/streamlit_app.py +1 -1
  24. streamlit/hello/utils.py +2 -1
  25. streamlit/runtime/app_session.py +4 -4
  26. streamlit/runtime/caching/cache_data_api.py +2 -2
  27. streamlit/runtime/caching/cache_resource_api.py +1 -1
  28. streamlit/runtime/caching/cache_utils.py +3 -3
  29. streamlit/runtime/caching/hashing.py +2 -2
  30. streamlit/runtime/credentials.py +4 -4
  31. streamlit/runtime/forward_msg_queue.py +1 -1
  32. streamlit/runtime/memory_uploaded_file_manager.py +1 -1
  33. streamlit/runtime/metrics_util.py +1 -1
  34. streamlit/runtime/runtime.py +1 -1
  35. streamlit/runtime/scriptrunner/exec_code.py +1 -1
  36. streamlit/runtime/scriptrunner/script_cache.py +1 -1
  37. streamlit/runtime/scriptrunner/script_runner.py +9 -2
  38. streamlit/runtime/scriptrunner_utils/script_requests.py +3 -3
  39. streamlit/runtime/scriptrunner_utils/script_run_context.py +3 -3
  40. streamlit/runtime/secrets.py +6 -7
  41. streamlit/runtime/state/query_params.py +1 -1
  42. streamlit/runtime/stats.py +1 -1
  43. streamlit/static/index.html +1 -1
  44. streamlit/static/static/js/{ErrorOutline.esm.Cfhrjz42.js → ErrorOutline.esm.CxkgXqSh.js} +1 -1
  45. streamlit/static/static/js/{FileDownload.esm.BN5DkI-d.js → FileDownload.esm.DVrjmwoh.js} +1 -1
  46. streamlit/static/static/js/{FileHelper.BWWhRdUs.js → FileHelper.CMA9s0t3.js} +1 -1
  47. streamlit/static/static/js/{FormClearHelper.CHPGUkGG.js → FormClearHelper.Ca3GFjxv.js} +1 -1
  48. streamlit/static/static/js/{Hooks.DjxyUmgD.js → Hooks.BpCPXt5n.js} +1 -1
  49. streamlit/static/static/js/{InputInstructions.Bkai2tFZ.js → InputInstructions.BO_BnHv5.js} +1 -1
  50. streamlit/static/static/js/{ProgressBar.DFiqS51i.js → ProgressBar.Ctk1m4EX.js} +1 -1
  51. streamlit/static/static/js/{RenderInPortalIfExists.DWTzV71R.js → RenderInPortalIfExists.kuKoxpXt.js} +1 -1
  52. streamlit/static/static/js/{Toolbar.Dk2A3VxL.js → Toolbar.Cde1fEcQ.js} +1 -1
  53. streamlit/static/static/js/{base-input.DfiT3r4p.js → base-input.BwCmIYba.js} +1 -1
  54. streamlit/static/static/js/{checkbox.DLXFjls2.js → checkbox.CwPOyuag.js} +1 -1
  55. streamlit/static/static/js/{createSuper.n2DV0o-4.js → createSuper.BMtevhyt.js} +1 -1
  56. streamlit/static/static/js/{data-grid-overlay-editor.v1LF25Ml.js → data-grid-overlay-editor.gtfE9z1L.js} +1 -1
  57. streamlit/static/static/js/{downloader.CI8EFE9Y.js → downloader.-58ZXBvx.js} +1 -1
  58. streamlit/static/static/js/{es6.CH6Tf3Uw.js → es6.6JpsZqpF.js} +2 -2
  59. streamlit/static/static/js/{iframeResizer.contentWindow.VCjyiSg6.js → iframeResizer.contentWindow.Dvm_jxul.js} +1 -1
  60. streamlit/static/static/js/{index.BEE4v1Vc.js → index.9Bu4pGgs.js} +1 -1
  61. streamlit/static/static/js/{index.DM_jnlWC.js → index.B1T1N6vQ.js} +1 -1
  62. streamlit/static/static/js/{index.CmsMgepL.js → index.B9LBeTzL.js} +1 -1
  63. streamlit/static/static/js/{index.hFB9saa3.js → index.BXdNB_A0.js} +1 -1
  64. streamlit/static/static/js/{index.STF1QdPr.js → index.Bd91GXu8.js} +1 -1
  65. streamlit/static/static/js/{index.LqvX_Kr6.js → index.BdEKCy-o.js} +1 -1
  66. streamlit/static/static/js/{index.C1P3O0oI.js → index.BhODUTaJ.js} +1 -1
  67. streamlit/static/static/js/{index.nmbrjghZ.js → index.BjtSRm-c.js} +1 -1
  68. streamlit/static/static/js/{index.C9ORVZvA.js → index.BnK8pWHN.js} +1 -1
  69. streamlit/static/static/js/{index.BWVpiUBA.js → index.C5xsotRs.js} +1 -1
  70. streamlit/static/static/js/{index.DUU38l7N.js → index.CD3lJu6g.js} +1 -1
  71. streamlit/static/static/js/{index.B-Q1qQil.js → index.CGJjlswG.js} +1 -1
  72. streamlit/static/static/js/{index.uN3TP5oq.js → index.CIZd1q4K.js} +1 -1
  73. streamlit/static/static/js/{index.DoM9A12Z.js → index.CZy9JHE4.js} +2 -2
  74. streamlit/static/static/js/{index.9p279joF.js → index.Ce-7kIl6.js} +1 -1
  75. streamlit/static/static/js/{index.D_Bv6KD1.js → index.CiiU1-bS.js} +1 -1
  76. streamlit/static/static/js/{index.D1An7GDs.js → index.ClE8XHxl.js} +1 -1
  77. streamlit/static/static/js/{index.SPkHHODG.js → index.CvKH37SN.js} +1 -1
  78. streamlit/static/static/js/{index.BFEA8ufN.js → index.D0G-y_z6.js} +1 -1
  79. streamlit/static/static/js/{index.uhNJX5pn.js → index.D1ccH_2Z.js} +1 -1
  80. streamlit/static/static/js/{index.DKsDSPTo.js → index.D3ES4sSL.js} +1 -1
  81. streamlit/static/static/js/{index.BROoC18J.js → index.DJ0X7aeY.js} +1 -1
  82. streamlit/static/static/js/{index.BgY_Js0s.js → index.DNNQBTM6.js} +1 -1
  83. streamlit/static/static/js/{index.Ovig-AMR.js → index.DQJE0i9s.js} +5 -5
  84. streamlit/static/static/js/{index.ZuW7Olhm.js → index.DR9ekgzX.js} +1 -1
  85. streamlit/static/static/js/{index.DXDmqevk.js → index.DUizq_aW.js} +1 -1
  86. streamlit/static/static/js/{index.D1DxKfIm.js → index.DVE5BhiT.js} +1 -1
  87. streamlit/static/static/js/{index.7XN_jSTW.js → index.DW60zbv4.js} +1 -1
  88. streamlit/static/static/js/{index.Cdsxte9t.js → index.DenamHJl.js} +1 -1
  89. streamlit/static/static/js/{index.DMDjQhhk.js → index.DgnhzFgr.js} +1 -1
  90. streamlit/static/static/js/{index.DgeyRl4J.js → index.Dk_aZplH.js} +1 -1
  91. streamlit/static/static/js/{index.C1TEsRV0.js → index.Dqcp7EZB.js} +43 -43
  92. streamlit/static/static/js/{index.CXpQxU0G.js → index.NfOJ2GJ6.js} +1 -1
  93. streamlit/static/static/js/{index.CR4eM0Q3.js → index.WVgPkrrw.js} +1 -1
  94. streamlit/static/static/js/{index.jZkr87Ly.js → index.bkU6rhIM.js} +1 -1
  95. streamlit/static/static/js/{index.DcH46Eo2.js → index.hQ5adhxG.js} +1 -1
  96. streamlit/static/static/js/{index.B1j5m20t.js → index.lYSTjxV_.js} +1 -1
  97. streamlit/static/static/js/{input.BAfiLByr.js → input.JEUWF6Z-.js} +1 -1
  98. streamlit/static/static/js/{memory.CvD1KGKJ.js → memory.BToPJrCN.js} +1 -1
  99. streamlit/static/static/js/{mergeWith.Dy4BuY-h.js → mergeWith.DGon2YId.js} +1 -1
  100. streamlit/static/static/js/{number-overlay-editor.Bl84FLfp.js → number-overlay-editor.kqkFTYSn.js} +1 -1
  101. streamlit/static/static/js/{possibleConstructorReturn.gffiKeDQ.js → possibleConstructorReturn.twGQoCQl.js} +1 -1
  102. streamlit/static/static/js/{sandbox.BXw8ya9t.js → sandbox.o85HOKwq.js} +1 -1
  103. streamlit/static/static/js/{textarea.DNNNKi6n.js → textarea.CdOYpTta.js} +1 -1
  104. streamlit/static/static/js/{timepicker.CgHlrhoy.js → timepicker.Cy1BKBo3.js} +1 -1
  105. streamlit/static/static/js/{toConsumableArray.MtZ-3vir.js → toConsumableArray.BVXfsvDc.js} +1 -1
  106. streamlit/static/static/js/{uniqueId.CFcd6g0d.js → uniqueId.Dz7-nY8K.js} +1 -1
  107. streamlit/static/static/js/{useBasicWidgetState.DadZUraL.js → useBasicWidgetState.CeKdNkz-.js} +1 -1
  108. streamlit/static/static/js/{useOnInputChange.V6d5TCFH.js → useOnInputChange.CM8BtP-c.js} +1 -1
  109. streamlit/static/static/js/{withFullScreenWrapper.8qpius26.js → withFullScreenWrapper.DuyW554J.js} +1 -1
  110. streamlit/temporary_directory.py +2 -2
  111. streamlit/testing/v1/app_test.py +2 -2
  112. streamlit/testing/v1/element_tree.py +5 -5
  113. streamlit/watcher/folder_black_list.py +1 -1
  114. streamlit/watcher/local_sources_watcher.py +5 -3
  115. streamlit/watcher/path_watcher.py +1 -1
  116. streamlit/watcher/polling_path_watcher.py +1 -1
  117. streamlit/watcher/util.py +6 -5
  118. streamlit/web/bootstrap.py +4 -4
  119. streamlit/web/cli.py +13 -13
  120. streamlit/web/server/app_static_file_handler.py +1 -1
  121. streamlit/web/server/authlib_tornado_integration.py +6 -1
  122. streamlit/web/server/oauth_authlib_routes.py +3 -3
  123. streamlit/web/server/oidc_mixin.py +15 -3
  124. streamlit/web/server/routes.py +11 -11
  125. streamlit/web/server/stats_request_handler.py +2 -2
  126. {streamlit_nightly-1.45.2.dev20250512.dist-info → streamlit_nightly-1.45.2.dev20250513.dist-info}/METADATA +1 -1
  127. {streamlit_nightly-1.45.2.dev20250512.dist-info → streamlit_nightly-1.45.2.dev20250513.dist-info}/RECORD +131 -131
  128. {streamlit_nightly-1.45.2.dev20250512.data → streamlit_nightly-1.45.2.dev20250513.data}/scripts/streamlit.cmd +0 -0
  129. {streamlit_nightly-1.45.2.dev20250512.dist-info → streamlit_nightly-1.45.2.dev20250513.dist-info}/WHEEL +0 -0
  130. {streamlit_nightly-1.45.2.dev20250512.dist-info → streamlit_nightly-1.45.2.dev20250513.dist-info}/entry_points.txt +0 -0
  131. {streamlit_nightly-1.45.2.dev20250512.dist-info → streamlit_nightly-1.45.2.dev20250513.dist-info}/top_level.txt +0 -0
streamlit/web/cli.py CHANGED
@@ -127,7 +127,7 @@ def _download_remote(main_script_path: str, url_path: str) -> None:
127
127
  @click.group(context_settings={"auto_envvar_prefix": "STREAMLIT"})
128
128
  @click.option("--log_level", show_default=True, type=click.Choice(LOG_LEVELS))
129
129
  @click.version_option(prog_name="Streamlit")
130
- def main(log_level="info"):
130
+ def main(log_level: str = "info") -> None:
131
131
  """Try out a demo with:
132
132
 
133
133
  $ streamlit hello
@@ -148,7 +148,7 @@ def main(log_level="info"):
148
148
 
149
149
 
150
150
  @main.command("help")
151
- def help(): # noqa: A001
151
+ def help() -> None: # noqa: A001
152
152
  """Print this help message."""
153
153
  # We use _get_command_line_as_string to run some error checks but don't do
154
154
  # anything with its return value.
@@ -162,7 +162,7 @@ def help(): # noqa: A001
162
162
 
163
163
 
164
164
  @main.command("version")
165
- def main_version():
165
+ def main_version() -> None:
166
166
  """Print Streamlit's version number."""
167
167
  # Pretend user typed 'streamlit --version' instead of 'streamlit version'
168
168
  import sys
@@ -177,7 +177,7 @@ def main_version():
177
177
 
178
178
 
179
179
  @main.command("docs")
180
- def main_docs():
180
+ def main_docs() -> None:
181
181
  """Show help in browser."""
182
182
  click.echo("Showing help page in browser...")
183
183
  from streamlit import cli_util
@@ -187,7 +187,7 @@ def main_docs():
187
187
 
188
188
  @main.command("hello")
189
189
  @configurator_options
190
- def main_hello(**kwargs):
190
+ def main_hello(**kwargs: Any) -> None:
191
191
  """Runs the Hello World script."""
192
192
  from streamlit.hello import streamlit_app
193
193
 
@@ -282,13 +282,13 @@ def _main_run(
282
282
 
283
283
 
284
284
  @main.group("cache")
285
- def cache():
285
+ def cache() -> None:
286
286
  """Manage the Streamlit cache."""
287
287
  pass
288
288
 
289
289
 
290
290
  @cache.command("clear")
291
- def cache_clear():
291
+ def cache_clear() -> None:
292
292
  """Clear st.cache_data and st.cache_resource caches."""
293
293
 
294
294
  # in this `streamlit cache clear` cli command we cannot use the
@@ -305,14 +305,14 @@ def cache_clear():
305
305
 
306
306
 
307
307
  @main.group("config")
308
- def config():
308
+ def config() -> None:
309
309
  """Manage Streamlit's config settings."""
310
310
  pass
311
311
 
312
312
 
313
313
  @config.command("show")
314
314
  @configurator_options
315
- def config_show(**kwargs):
315
+ def config_show(**kwargs: Any) -> None:
316
316
  """Show all of Streamlit's config settings."""
317
317
 
318
318
  bootstrap.load_config_options(flag_options=kwargs)
@@ -325,14 +325,14 @@ def config_show(**kwargs):
325
325
 
326
326
  @main.group("activate", invoke_without_command=True)
327
327
  @click.pass_context
328
- def activate(ctx):
328
+ def activate(ctx: click.Context) -> None:
329
329
  """Activate Streamlit by entering your email."""
330
330
  if not ctx.invoked_subcommand:
331
331
  Credentials.get_current().activate()
332
332
 
333
333
 
334
334
  @activate.command("reset")
335
- def activate_reset():
335
+ def activate_reset() -> None:
336
336
  """Reset Activation Credentials."""
337
337
  Credentials.get_current().reset()
338
338
 
@@ -341,7 +341,7 @@ def activate_reset():
341
341
 
342
342
 
343
343
  @main.group("test", hidden=True)
344
- def test():
344
+ def test() -> None:
345
345
  """Internal-only commands used for testing.
346
346
 
347
347
  These commands are not included in the output of `streamlit help`.
@@ -350,7 +350,7 @@ def test():
350
350
 
351
351
 
352
352
  @test.command("prog_name")
353
- def test_prog_name():
353
+ def test_prog_name() -> None:
354
354
  """Assert that the program name is set to `streamlit test`.
355
355
 
356
356
  This is used by our cli-smoke-tests to verify that the program name is set
@@ -82,7 +82,7 @@ class AppStaticFileHandler(tornado.web.StaticFileHandler):
82
82
 
83
83
  return ret_val
84
84
 
85
- def set_default_headers(self):
85
+ def set_default_headers(self) -> None:
86
86
  # CORS protection is disabled because we need access to this endpoint
87
87
  # from the inner iframe.
88
88
  self.set_header("Access-Control-Allow-Origin", "*")
@@ -29,7 +29,12 @@ if TYPE_CHECKING:
29
29
 
30
30
 
31
31
  class TornadoIntegration(FrameworkIntegration): # type: ignore[misc]
32
- def update_token(self, token, refresh_token=None, access_token=None):
32
+ def update_token(
33
+ self,
34
+ token: dict[str, Any],
35
+ refresh_token: dict[str, Any] | None = None,
36
+ access_token: dict[str, Any] | None = None,
37
+ ) -> None:
33
38
  """We do not support access token refresh, since we obtain and operate only on
34
39
  identity tokens. We override this method explicitly to implement all abstract
35
40
  methods of base class.
@@ -102,7 +102,7 @@ class AuthHandlerMixin(tornado.web.RequestHandler):
102
102
 
103
103
 
104
104
  class AuthLoginHandler(AuthHandlerMixin, tornado.web.RequestHandler):
105
- async def get(self):
105
+ async def get(self) -> None:
106
106
  """Redirect to the OAuth provider login page."""
107
107
  provider = self._parse_provider_token()
108
108
  if provider is None:
@@ -128,13 +128,13 @@ class AuthLoginHandler(AuthHandlerMixin, tornado.web.RequestHandler):
128
128
 
129
129
 
130
130
  class AuthLogoutHandler(AuthHandlerMixin, tornado.web.RequestHandler):
131
- def get(self):
131
+ def get(self) -> None:
132
132
  self.clear_auth_cookie()
133
133
  self.redirect_to_base()
134
134
 
135
135
 
136
136
  class AuthCallbackHandler(AuthHandlerMixin, tornado.web.RequestHandler):
137
- async def get(self):
137
+ async def get(self) -> None:
138
138
  provider = self._get_provider_by_state()
139
139
  origin = self._get_origin_from_secrets()
140
140
  if origin is None:
@@ -14,9 +14,10 @@
14
14
 
15
15
  # ruff: noqa: ANN201
16
16
 
17
- from typing import Any, cast
17
+ from __future__ import annotations
18
+
19
+ from typing import TYPE_CHECKING, Any, Callable, cast
18
20
 
19
- import tornado.web
20
21
  from authlib.integrations.base_client import ( # type: ignore[import-untyped]
21
22
  BaseApp,
22
23
  BaseOAuth,
@@ -30,6 +31,11 @@ from authlib.integrations.requests_client import ( # type: ignore[import-untype
30
31
 
31
32
  from streamlit.web.server.authlib_tornado_integration import TornadoIntegration
32
33
 
34
+ if TYPE_CHECKING:
35
+ import tornado.web
36
+
37
+ from streamlit.auth_util import AuthCache
38
+
33
39
 
34
40
  class TornadoOAuth2App(OAuth2Mixin, OpenIDMixin, BaseApp): # type: ignore[misc]
35
41
  client_cls = OAuth2Session
@@ -108,7 +114,13 @@ class TornadoOAuth(BaseOAuth): # type: ignore[misc]
108
114
  oauth2_client_cls = TornadoOAuth2App
109
115
  framework_integration_cls = TornadoIntegration
110
116
 
111
- def __init__(self, config=None, cache=None, fetch_token=None, update_token=None):
117
+ def __init__(
118
+ self,
119
+ config: dict[str, Any] | None = None,
120
+ cache: AuthCache | None = None,
121
+ fetch_token: Callable[[dict[str, Any]], dict[str, Any]] | None = None,
122
+ update_token: Callable[[dict[str, Any]], dict[str, Any]] | None = None,
123
+ ):
112
124
  super().__init__(
113
125
  cache=cache, fetch_token=fetch_token, update_token=update_token
114
126
  )
@@ -15,7 +15,7 @@
15
15
  from __future__ import annotations
16
16
 
17
17
  import os
18
- from typing import TYPE_CHECKING, Any
18
+ from typing import TYPE_CHECKING, Any, Callable
19
19
 
20
20
  import tornado.web
21
21
 
@@ -26,7 +26,7 @@ from streamlit.web.server.server_util import (
26
26
  )
27
27
 
28
28
  if TYPE_CHECKING:
29
- from collections.abc import Sequence
29
+ from collections.abc import Awaitable, Sequence
30
30
 
31
31
 
32
32
  def allow_cross_origin_requests() -> bool:
@@ -96,25 +96,25 @@ class StaticFileHandler(tornado.web.StaticFileHandler):
96
96
 
97
97
  class AddSlashHandler(tornado.web.RequestHandler):
98
98
  @tornado.web.addslash
99
- def get(self):
99
+ def get(self) -> None:
100
100
  pass
101
101
 
102
102
 
103
103
  class RemoveSlashHandler(tornado.web.RequestHandler):
104
104
  @tornado.web.removeslash
105
- def get(self):
105
+ def get(self) -> None:
106
106
  pass
107
107
 
108
108
 
109
109
  class _SpecialRequestHandler(tornado.web.RequestHandler):
110
110
  """Superclass for "special" endpoints, like /healthz."""
111
111
 
112
- def set_default_headers(self):
112
+ def set_default_headers(self) -> None:
113
113
  self.set_header("Cache-Control", "no-cache")
114
114
  if allow_cross_origin_requests():
115
115
  self.set_header("Access-Control-Allow-Origin", "*")
116
116
 
117
- def options(self):
117
+ def options(self) -> None:
118
118
  """/OPTIONS handler for preflight CORS checks.
119
119
 
120
120
  When a browser is making a CORS request, it may sometimes first
@@ -136,7 +136,7 @@ class _SpecialRequestHandler(tornado.web.RequestHandler):
136
136
 
137
137
 
138
138
  class HealthHandler(_SpecialRequestHandler):
139
- def initialize(self, callback):
139
+ def initialize(self, callback: Callable[[], Awaitable[tuple[bool, str]]]) -> None:
140
140
  """Initialize the handler.
141
141
 
142
142
  Parameters
@@ -147,15 +147,15 @@ class HealthHandler(_SpecialRequestHandler):
147
147
  """
148
148
  self._callback = callback
149
149
 
150
- async def get(self):
150
+ async def get(self) -> None:
151
151
  await self.handle_request()
152
152
 
153
153
  # Some monitoring services only support the HTTP HEAD method for requests to
154
154
  # healthcheck endpoints, so we support HEAD as well to play nicely with them.
155
- async def head(self):
155
+ async def head(self) -> None:
156
156
  await self.handle_request()
157
157
 
158
- async def handle_request(self):
158
+ async def handle_request(self) -> None:
159
159
  if self.request.uri and "_stcore/" not in self.request.uri:
160
160
  new_path = (
161
161
  "/_stcore/script-health-check"
@@ -212,7 +212,7 @@ _DEFAULT_ALLOWED_MESSAGE_ORIGINS = [
212
212
 
213
213
 
214
214
  class HostConfigHandler(_SpecialRequestHandler):
215
- def initialize(self):
215
+ def initialize(self) -> None:
216
216
  # Make a copy of the allowedOrigins list, since we might modify it later:
217
217
  self._allowed_origins = _DEFAULT_ALLOWED_MESSAGE_ORIGINS.copy()
218
218
 
@@ -30,11 +30,11 @@ class StatsRequestHandler(tornado.web.RequestHandler):
30
30
  def initialize(self, stats_manager: StatsManager) -> None:
31
31
  self._manager = stats_manager
32
32
 
33
- def set_default_headers(self):
33
+ def set_default_headers(self) -> None:
34
34
  if allow_cross_origin_requests():
35
35
  self.set_header("Access-Control-Allow-Origin", "*")
36
36
 
37
- def options(self):
37
+ def options(self) -> None:
38
38
  """/OPTIONS handler for preflight CORS checks."""
39
39
  self.set_status(204)
40
40
  self.finish()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: streamlit-nightly
3
- Version: 1.45.2.dev20250512
3
+ Version: 1.45.2.dev20250513
4
4
  Summary: A faster way to build and share data apps
5
5
  Home-page: https://streamlit.io
6
6
  Author: Snowflake Inc