streamlit-nightly 1.31.1.dev20240210__py2.py3-none-any.whl → 1.31.2.dev20240212__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 (26) hide show
  1. streamlit/cli_util.py +44 -0
  2. streamlit/config.py +36 -34
  3. streamlit/config_util.py +18 -16
  4. streamlit/delta_generator.py +20 -16
  5. streamlit/elements/image.py +30 -18
  6. streamlit/elements/write.py +5 -6
  7. streamlit/runtime/credentials.py +67 -55
  8. streamlit/runtime/secrets.py +6 -4
  9. streamlit/static/asset-manifest.json +3 -3
  10. streamlit/static/index.html +1 -1
  11. streamlit/static/static/js/4666.ad225eae.chunk.js +1 -0
  12. streamlit/static/static/js/{main.603949f7.js → main.043d802e.js} +2 -2
  13. streamlit/url_util.py +0 -8
  14. streamlit/watcher/path_watcher.py +3 -6
  15. streamlit/web/bootstrap.py +48 -46
  16. streamlit/web/cli.py +8 -5
  17. streamlit/web/server/routes.py +8 -0
  18. streamlit/web/server/server.py +2 -3
  19. {streamlit_nightly-1.31.1.dev20240210.dist-info → streamlit_nightly-1.31.2.dev20240212.dist-info}/METADATA +1 -1
  20. {streamlit_nightly-1.31.1.dev20240210.dist-info → streamlit_nightly-1.31.2.dev20240212.dist-info}/RECORD +25 -24
  21. streamlit/static/static/js/4666.3a6efd97.chunk.js +0 -1
  22. /streamlit/static/static/js/{main.603949f7.js.LICENSE.txt → main.043d802e.js.LICENSE.txt} +0 -0
  23. {streamlit_nightly-1.31.1.dev20240210.data → streamlit_nightly-1.31.2.dev20240212.data}/scripts/streamlit.cmd +0 -0
  24. {streamlit_nightly-1.31.1.dev20240210.dist-info → streamlit_nightly-1.31.2.dev20240212.dist-info}/WHEEL +0 -0
  25. {streamlit_nightly-1.31.1.dev20240210.dist-info → streamlit_nightly-1.31.2.dev20240212.dist-info}/entry_points.txt +0 -0
  26. {streamlit_nightly-1.31.1.dev20240210.dist-info → streamlit_nightly-1.31.2.dev20240212.dist-info}/top_level.txt +0 -0
streamlit/url_util.py CHANGED
@@ -66,14 +66,6 @@ def get_hostname(url: str) -> Optional[str]:
66
66
  return parsed.hostname
67
67
 
68
68
 
69
- def print_url(title, url):
70
- """Pretty-print a URL on the terminal."""
71
- import click
72
-
73
- click.secho(f" {title}: ", nl=False, fg="blue")
74
- click.secho(url, bold=True)
75
-
76
-
77
69
  def is_url(
78
70
  url: str,
79
71
  allowed_schemas: Tuple[UrlSchema, ...] = ("http", "https"),
@@ -17,7 +17,7 @@ from __future__ import annotations
17
17
  from typing import Callable, Type, Union
18
18
 
19
19
  import streamlit.watcher
20
- from streamlit import config, env_util
20
+ from streamlit import cli_util, config, env_util
21
21
  from streamlit.logger import get_logger
22
22
  from streamlit.watcher.polling_path_watcher import PollingPathWatcher
23
23
 
@@ -70,17 +70,14 @@ def report_watchdog_availability():
70
70
  and config.get_option("server.fileWatcherType") not in ["poll", "none"]
71
71
  and not _is_watchdog_available()
72
72
  ):
73
- import click
74
-
75
73
  msg = "\n $ xcode-select --install" if env_util.IS_DARWIN else ""
76
74
 
77
- print("print message")
78
- click.secho(
75
+ cli_util.print_to_cli(
79
76
  " %s" % "For better performance, install the Watchdog module:",
80
77
  fg="blue",
81
78
  bold=True,
82
79
  )
83
- click.secho(
80
+ cli_util.print_to_cli(
84
81
  """%s
85
82
  $ pip install watchdog
86
83
  """
@@ -19,18 +19,15 @@ import os
19
19
  import signal
20
20
  import sys
21
21
  from pathlib import Path
22
- from typing import Any, Dict, Final, List
23
-
24
- # TODO(lukasmasuch): Lazy-load this module:
25
- import click
22
+ from typing import Any, Final
26
23
 
27
24
  from streamlit import (
25
+ cli_util,
28
26
  config,
29
27
  env_util,
30
28
  file_util,
31
29
  net_util,
32
30
  secrets,
33
- url_util,
34
31
  util,
35
32
  version,
36
33
  )
@@ -43,20 +40,6 @@ from streamlit.web.server import Server, server_address_is_unix_socket, server_u
43
40
 
44
41
  _LOGGER: Final = get_logger(__name__)
45
42
 
46
- NEW_VERSION_TEXT: Final = """
47
- %(new_version)s
48
-
49
- See what's new at https://discuss.streamlit.io/c/announcements
50
-
51
- Enter the following command to upgrade:
52
- %(prompt)s %(command)s
53
- """ % {
54
- "new_version": click.style(
55
- "A new version of Streamlit is available.", fg="blue", bold=True
56
- ),
57
- "prompt": click.style("$", fg="blue"),
58
- "command": click.style("pip install streamlit --upgrade", bold=True),
59
- }
60
43
 
61
44
  # The maximum possible total size of a static directory.
62
45
  # We agreed on these limitations for the initial release of static file sharing,
@@ -120,7 +103,7 @@ def _fix_tornado_crash() -> None:
120
103
  asyncio.set_event_loop_policy(WindowsSelectorEventLoopPolicy())
121
104
 
122
105
 
123
- def _fix_sys_argv(main_script_path: str, args: List[str]) -> None:
106
+ def _fix_sys_argv(main_script_path: str, args: list[str]) -> None:
124
107
  """sys.argv needs to exclude streamlit arguments and parameters
125
108
  and be set to what a user's script may expect.
126
109
  """
@@ -198,7 +181,23 @@ def _fix_pydantic_duplicate_validators_error():
198
181
 
199
182
  def _print_new_version_message() -> None:
200
183
  if version.should_show_new_version_notice():
201
- click.secho(NEW_VERSION_TEXT)
184
+ NEW_VERSION_TEXT: Final = """
185
+ %(new_version)s
186
+
187
+ See what's new at https://discuss.streamlit.io/c/announcements
188
+
189
+ Enter the following command to upgrade:
190
+ %(prompt)s %(command)s
191
+ """ % {
192
+ "new_version": cli_util.style_for_cli(
193
+ "A new version of Streamlit is available.", fg="blue", bold=True
194
+ ),
195
+ "prompt": cli_util.style_for_cli("$", fg="blue"),
196
+ "command": cli_util.style_for_cli(
197
+ "pip install streamlit --upgrade", bold=True
198
+ ),
199
+ }
200
+ cli_util.print_to_cli(NEW_VERSION_TEXT)
202
201
 
203
202
 
204
203
  def _maybe_print_static_folder_warning(main_script_path: str) -> None:
@@ -207,7 +206,7 @@ def _maybe_print_static_folder_warning(main_script_path: str) -> None:
207
206
  if config.get_option("server.enableStaticServing"):
208
207
  static_folder_path = file_util.get_app_static_dir(main_script_path)
209
208
  if not os.path.isdir(static_folder_path):
210
- click.secho(
209
+ cli_util.print_to_cli(
211
210
  f"WARNING: Static file serving is enabled, but no static folder found "
212
211
  f"at {static_folder_path}. To disable static file serving, "
213
212
  f"set server.enableStaticServing to false.",
@@ -219,7 +218,7 @@ def _maybe_print_static_folder_warning(main_script_path: str) -> None:
219
218
 
220
219
  if static_folder_size > MAX_APP_STATIC_FOLDER_SIZE:
221
220
  config.set_option("server.enableStaticServing", False)
222
- click.secho(
221
+ cli_util.print_to_cli(
223
222
  "WARNING: Static folder size is larger than 1GB. "
224
223
  "Static file serving has been disabled.",
225
224
  fg="yellow",
@@ -269,23 +268,24 @@ def _print_url(is_running_hello: bool) -> None:
269
268
  if internal_ip:
270
269
  named_urls.append(("Network URL", server_util.get_url(internal_ip)))
271
270
 
272
- click.secho("")
273
- click.secho(" %s" % title_message, fg="blue", bold=True)
274
- click.secho("")
271
+ cli_util.print_to_cli("")
272
+ cli_util.print_to_cli(" %s" % title_message, fg="blue", bold=True)
273
+ cli_util.print_to_cli("")
275
274
 
276
275
  for url_name, url in named_urls:
277
- url_util.print_url(url_name, url)
276
+ cli_util.print_to_cli(f" {url_name}: ", nl=False, fg="blue")
277
+ cli_util.print_to_cli(url, bold=True)
278
278
 
279
- click.secho("")
279
+ cli_util.print_to_cli("")
280
280
 
281
281
  if is_running_hello:
282
- click.secho(" Ready to create your own Python apps super quickly?")
283
- click.secho(" Head over to ", nl=False)
284
- click.secho("https://docs.streamlit.io", bold=True)
285
- click.secho("")
286
- click.secho(" May you create awesome apps!")
287
- click.secho("")
288
- click.secho("")
282
+ cli_util.print_to_cli(" Ready to create your own Python apps super quickly?")
283
+ cli_util.print_to_cli(" Head over to ", nl=False)
284
+ cli_util.print_to_cli("https://docs.streamlit.io", bold=True)
285
+ cli_util.print_to_cli("")
286
+ cli_util.print_to_cli(" May you create awesome apps!")
287
+ cli_util.print_to_cli("")
288
+ cli_util.print_to_cli("")
289
289
 
290
290
 
291
291
  def _maybe_print_old_git_warning(main_script_path: str) -> None:
@@ -300,22 +300,24 @@ def _maybe_print_old_git_warning(main_script_path: str) -> None:
300
300
  ):
301
301
  git_version_string = ".".join(str(val) for val in repo.git_version)
302
302
  min_version_string = ".".join(str(val) for val in MIN_GIT_VERSION)
303
- click.secho("")
304
- click.secho(" Git integration is disabled.", fg="yellow", bold=True)
305
- click.secho("")
306
- click.secho(
303
+ cli_util.print_to_cli("")
304
+ cli_util.print_to_cli(" Git integration is disabled.", fg="yellow", bold=True)
305
+ cli_util.print_to_cli("")
306
+ cli_util.print_to_cli(
307
307
  f" Streamlit requires Git {min_version_string} or later, "
308
308
  f"but you have {git_version_string}.",
309
309
  fg="yellow",
310
310
  )
311
- click.secho(
311
+ cli_util.print_to_cli(
312
312
  " Git is used by Streamlit Cloud (https://streamlit.io/cloud).",
313
313
  fg="yellow",
314
314
  )
315
- click.secho(" To enable this feature, please update Git.", fg="yellow")
315
+ cli_util.print_to_cli(
316
+ " To enable this feature, please update Git.", fg="yellow"
317
+ )
316
318
 
317
319
 
318
- def load_config_options(flag_options: Dict[str, Any]) -> None:
320
+ def load_config_options(flag_options: dict[str, Any]) -> None:
319
321
  """Load config options from config.toml files, then overlay the ones set by
320
322
  flag_options.
321
323
 
@@ -326,7 +328,7 @@ def load_config_options(flag_options: Dict[str, Any]) -> None:
326
328
 
327
329
  Parameters
328
330
  ----------
329
- flag_options : Dict[str, Any]
331
+ flag_options : dict[str, Any]
330
332
  A dict of config options where the keys are the CLI flag version of the
331
333
  config option names.
332
334
  """
@@ -341,7 +343,7 @@ def load_config_options(flag_options: Dict[str, Any]) -> None:
341
343
  config.get_config_options(force_reparse=True, options_from_flags=options_from_flags)
342
344
 
343
345
 
344
- def _install_config_watchers(flag_options: Dict[str, Any]) -> None:
346
+ def _install_config_watchers(flag_options: dict[str, Any]) -> None:
345
347
  def on_config_changed(_path):
346
348
  load_config_options(flag_options)
347
349
 
@@ -368,8 +370,8 @@ def _install_pages_watcher(main_script_path_str: str) -> None:
368
370
  def run(
369
371
  main_script_path: str,
370
372
  is_hello: bool,
371
- args: List[str],
372
- flag_options: Dict[str, Any],
373
+ args: list[str],
374
+ flag_options: dict[str, Any],
373
375
  ) -> None:
374
376
  """Run a script in a separate thread and start a server for the app.
375
377
 
streamlit/web/cli.py CHANGED
@@ -14,10 +14,13 @@
14
14
 
15
15
  """A script which is run when the Streamlit package is executed."""
16
16
 
17
+ from __future__ import annotations
18
+
17
19
  import os
18
20
  import sys
19
- from typing import Any, Dict, List, Optional
21
+ from typing import Any
20
22
 
23
+ # We cannot lazy-load click here because its used via decorators.
21
24
  import click
22
25
 
23
26
  import streamlit.runtime.caching as caching
@@ -37,7 +40,7 @@ LOG_LEVELS = ("error", "warning", "info", "debug")
37
40
 
38
41
  def _convert_config_option_to_click_option(
39
42
  config_option: ConfigOption,
40
- ) -> Dict[str, Any]:
43
+ ) -> dict[str, Any]:
41
44
  """Composes given config option options as options for click lib."""
42
45
  option = f"--{config_option.key}"
43
46
  param = config_option.key.replace(".", "_")
@@ -231,7 +234,7 @@ def main_run(target: str, args=None, **kwargs):
231
234
  _main_run(target, args, flag_options=kwargs)
232
235
 
233
236
 
234
- def _get_command_line_as_string() -> Optional[str]:
237
+ def _get_command_line_as_string() -> str | None:
235
238
  import subprocess
236
239
 
237
240
  parent = click.get_current_context().parent
@@ -251,8 +254,8 @@ def _get_command_line_as_string() -> Optional[str]:
251
254
 
252
255
  def _main_run(
253
256
  file,
254
- args: Optional[List[str]] = None,
255
- flag_options: Optional[Dict[str, Any]] = None,
257
+ args: list[str] | None = None,
258
+ flag_options: dict[str, Any] | None = None,
256
259
  ) -> None:
257
260
  if args is None:
258
261
  args = []
@@ -135,6 +135,14 @@ class HealthHandler(_SpecialRequestHandler):
135
135
  self._callback = callback
136
136
 
137
137
  async def get(self):
138
+ await self.handle_request()
139
+
140
+ # Some monitoring services only support the HTTP HEAD method for requests to
141
+ # healthcheck endpoints, so we support HEAD as well to play nicely with them.
142
+ async def head(self):
143
+ await self.handle_request()
144
+
145
+ async def handle_request(self):
138
146
  if self.request.uri and "_stcore/" not in self.request.uri:
139
147
  new_path = (
140
148
  "/_stcore/script-health-check"
@@ -21,7 +21,6 @@ import sys
21
21
  from pathlib import Path
22
22
  from typing import Any, Awaitable, List, Optional, Union
23
23
 
24
- import click
25
24
  import tornado.concurrent
26
25
  import tornado.locks
27
26
  import tornado.netutil
@@ -30,7 +29,7 @@ import tornado.websocket
30
29
  from tornado.httpserver import HTTPServer
31
30
  from typing_extensions import Final
32
31
 
33
- from streamlit import config, file_util, source_util, util
32
+ from streamlit import cli_util, config, file_util, source_util, util
34
33
  from streamlit.components.v1.components import ComponentRegistry
35
34
  from streamlit.config_option import ConfigOption
36
35
  from streamlit.logger import get_logger
@@ -395,7 +394,7 @@ class Server:
395
394
  return self._main_script_path == Hello.__file__
396
395
 
397
396
  def stop(self) -> None:
398
- click.secho(" Stopping...", fg="blue")
397
+ cli_util.print_to_cli(" Stopping...", fg="blue")
399
398
  self._runtime.stop()
400
399
 
401
400
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: streamlit-nightly
3
- Version: 1.31.1.dev20240210
3
+ Version: 1.31.2.dev20240212
4
4
  Summary: A faster way to build and share data apps
5
5
  Home-page: https://streamlit.io
6
6
  Author: Snowflake Inc
@@ -1,15 +1,16 @@
1
1
  streamlit/__init__.py,sha256=PROUOxEowtwgMmTm53K_WDnz7Q_5pA-GSt80L7NHCus,7997
2
2
  streamlit/__main__.py,sha256=8vHowjccJfFMwrA22IEe3ynE9F670mkspbo9rYdM0ks,868
3
3
  streamlit/case_converters.py,sha256=sWUCbzmHi5C1pg7rz72zh1hgM-oQIUJyzpsRo7kumrQ,2301
4
+ streamlit/cli_util.py,sha256=PZb9adX9_8ml9GP6YxnLL263IUDolzUL7VWZK-rD0gs,1371
4
5
  streamlit/code_util.py,sha256=Kh-3btXs--zaB26hhOyZ1rgIn-tstpQPxSYawxobjSA,2289
5
6
  streamlit/color_util.py,sha256=EqghD4UGKVhvuvtgadZw44qaxXZGtrqID068M8CYcrI,9294
6
7
  streamlit/column_config.py,sha256=mu7BZNKfvRa9i1VDdCg5L9aPTc6Ou7iVaB3zPOIxIdk,1334
7
- streamlit/config.py,sha256=D0O1rrAV8Jqa1eeqPI_TWWvpPnnSu8-34X28JDxhTVc,43612
8
+ streamlit/config.py,sha256=69NqrUGKsno11sWKgKMhqJRaCmwtWJe_Jj7I_viIavA,43730
8
9
  streamlit/config_option.py,sha256=DVyW--G7La2OYu7cyddQybKn21pZPhsWkq8kbSIb_Vo,11512
9
- streamlit/config_util.py,sha256=9ohU5-i9FUh9Nwo7PTS-99fIqvG4gw8hGM0hQ0J7XmU,5870
10
+ streamlit/config_util.py,sha256=-MGb5eBrsZvNmqywmiBmo27ll1F9OmCDX4toGWglv2c,6015
10
11
  streamlit/constants.py,sha256=p_h2r6uLsH6dK9L7hjyCkaQJxpG3U2k8CQqXWJAGutw,762
11
12
  streamlit/cursor.py,sha256=DmsbFc1rVnqMB42N7VfpOA8yc6EF4Z-KKMtJr2rN1lQ,6002
12
- streamlit/delta_generator.py,sha256=vyQjPO7-7_SU_hZj2UlQa2_YLVmeYzOm9O_Vo5PMq6w,31583
13
+ streamlit/delta_generator.py,sha256=oOCdMduU8HZKdkWVXyJCkyedesJDmwONF3IvvP8OA-U,31493
13
14
  streamlit/deprecation_util.py,sha256=biYcvN42E7QSXYLW8YSQ31fri5GbyS4Ng23ecgtiAmc,6507
14
15
  streamlit/development.py,sha256=iO-KQc62Do9uSwoa5vV2tfImqz3QPhJ1Md6DETcnHkc,813
15
16
  streamlit/echo.py,sha256=e7ajxD6vLb4fgxQU8HLSL0CoXZtOLLMhe-Kj9aCjfDI,4060
@@ -29,7 +30,7 @@ streamlit/source_util.py,sha256=Fhh5hF2jQHa73_-7op5PIh_90wxf8lF4YVezb1W_aNE,5693
29
30
  streamlit/string_util.py,sha256=e0B0aDWAhPk_D7PIzM3lg5yTlh7DSNgBGkPutsyCBes,4986
30
31
  streamlit/temporary_directory.py,sha256=5TIFR3vnycZcg--i8KWBFit0Sekj9n8-ELR86QWpehM,1599
31
32
  streamlit/type_util.py,sha256=T_vSCd0QTKdERHLJhLpcXC5Ej2j94HdsSjBTdYXPhpM,44255
32
- streamlit/url_util.py,sha256=y8j1sPL4BXEDtKwnCdfPu_Vqi0z7rXwEt2AZuYuwAx0,3167
33
+ streamlit/url_util.py,sha256=cUF46T3ireuy8e-xZ3_Hp9dw9D0kWqK2IdsqfiyxpLQ,2989
33
34
  streamlit/user_info.py,sha256=HRgLsioCbUP2DNhTDXDyOvWL7i2c65RwFHvF4_WO3hY,3448
34
35
  streamlit/util.py,sha256=p7TFFVV6f7MgV1i7Avyv_e80VMai7Nd9ZfEHfSqK61E,7515
35
36
  streamlit/version.py,sha256=Fhz_UwW47O6ygs8GRjNYjO1r-0IRZmeViaV3Rgg9hN8,3365
@@ -64,7 +65,7 @@ streamlit/elements/form.py,sha256=1u03-OX1ohxmBXG4WIHWbmdfY8hhYDHhXcXy51yLOOY,11
64
65
  streamlit/elements/graphviz_chart.py,sha256=lYbZui-dxwUiKjUU0NbjN-1mh8p9wm6EfPcI03cs90w,4610
65
66
  streamlit/elements/heading.py,sha256=1Q0qqKlkyIOi_ve-LTTwtYC-Kx-2eeXfwHwZvpNKtaU,10559
66
67
  streamlit/elements/iframe.py,sha256=6bW5gPQt5-2FwnlFwjB2JHFOVZ-SOCT5x8VIg7skAC4,4387
67
- streamlit/elements/image.py,sha256=SaJSigznXB11LCcbEklHsHnNJ6V92TAJHAIAhBx_xP8,19958
68
+ streamlit/elements/image.py,sha256=suSAkewW3W6Sb0vuKO0H_4jOTqH1GeXmIDJN_TjAs0o,20099
68
69
  streamlit/elements/json.py,sha256=fMLeA9FcvV1n-SOWaO5XrAI41HoXNo5qY6u7hMVsLFM,3352
69
70
  streamlit/elements/layouts.py,sha256=_G160lkugcbxv0lsvWMZCeJxXzXZXyv54H9j13Mu7y8,22464
70
71
  streamlit/elements/map.py,sha256=F8Hij5e519eOglorpiSSf9f8Lhd4s782KapZU8Kt3n4,16404
@@ -79,7 +80,7 @@ streamlit/elements/spinner.py,sha256=bT5DY0cagbBBcKA8ujj0J77mHgJ3_H2U1hHUYgp17Mo
79
80
  streamlit/elements/text.py,sha256=GTzMlGZrIiqNWsNQMvxQTK33C7iItDOeMNtMjQKlM80,1839
80
81
  streamlit/elements/toast.py,sha256=Ao68WuCe8BRzHEVyFTuEFLN-RVyeT-RYH0oVcrEt1To,3528
81
82
  streamlit/elements/utils.py,sha256=7CFZKIEvB4N0CHkGnkCpQp-w_GAbXEeCkXOYMN63o5A,7133
82
- streamlit/elements/write.py,sha256=IXw4abYXlQlm6ZV2g2hYpZ0saGOCm7b56_Nz4tPFKxQ,18769
83
+ streamlit/elements/write.py,sha256=poCNevJ4DZy9z_t0oJDvMKYI8CsbaumNdUQKj8FxYas,18698
83
84
  streamlit/elements/lib/__init__.py,sha256=Vrf1yVMOcTyhUPnYvsfyeL96Vpd5z8KoSV5ZzTcTQgU,616
84
85
  streamlit/elements/lib/column_config_utils.py,sha256=3fr4bb1rPX2pOd32obmxMk9a5lo1riGVNpN3B_I0Y2A,17232
85
86
  streamlit/elements/lib/column_types.py,sha256=QOOl3XTJeQYaPhMd_5xzyzYgYrGpkCvxNqLvRjekbd4,48401
@@ -261,7 +262,7 @@ streamlit/proto/openmetrics_data_model_pb2.pyi,sha256=cDrO3xOwEF6iy1BZa-PHqmVKTc
261
262
  streamlit/runtime/__init__.py,sha256=pQebv8cw2I9zj1KQ6DGXSS2HffaorePN22ON_ttY1jw,1487
262
263
  streamlit/runtime/app_session.py,sha256=cLoCjSRAjaOe1jiKeKjZDq5r2Dk0DQTDyjaBkOdJBvg,34846
263
264
  streamlit/runtime/connection_factory.py,sha256=0RTg9yj3LcSi_tWjk_QyL6bq0NIR7rvGi4X58s8w0JI,12442
264
- streamlit/runtime/credentials.py,sha256=K4KRxquf8i3nG_dcYXhoWenMbAW2ZmevQlqw8FKK9qk,10803
265
+ streamlit/runtime/credentials.py,sha256=3wwe6U0lounnjPqQFjfOA4xswTJcoLT8-Yg7p2l8NIc,11500
265
266
  streamlit/runtime/forward_msg_cache.py,sha256=SHwwtnQHISNyQogi2g6RUyPy8FQU9dn8A2RWMmFBSa4,9800
266
267
  streamlit/runtime/forward_msg_queue.py,sha256=VEHPHRAr8dhP80nUweq75xGpoU9ujr_BuzHIdJrzXnQ,5554
267
268
  streamlit/runtime/media_file_manager.py,sha256=Mdrcq3mPJx4ZIDYISUyL744Uk54Eggi7GhTaRLDGzhA,8494
@@ -273,7 +274,7 @@ streamlit/runtime/metrics_util.py,sha256=4I1TrALnVn7Pl0a3bNQfjqL_45jsTic8nTsBf7B
273
274
  streamlit/runtime/runtime.py,sha256=8OPZabSDWAKmFhA7KWPeCUB7KqHgGRV0uVexBUxpOGI,28146
274
275
  streamlit/runtime/runtime_util.py,sha256=rnwpKXKXyOJtghLOPC7Ct95Hylqi1Pgz4DnWoytbwco,3795
275
276
  streamlit/runtime/script_data.py,sha256=zLLxR1rw6CNV0nXerHMenk8ZkpFPmHlpQviE3uE2_Mg,1713
276
- streamlit/runtime/secrets.py,sha256=zh1wWeTOO_Ugjz7PKE75B2S6dMfs--Xea3hJesiULB8,12300
277
+ streamlit/runtime/secrets.py,sha256=WYKxFJybhX1AeOabH6WD0d6dAoozUWz6j2E6svqD0fM,12315
277
278
  streamlit/runtime/session_manager.py,sha256=tLAWbl0hwV8LgWCVCymQHgHG2URrmFxpBl95wCyr4I8,13057
278
279
  streamlit/runtime/stats.py,sha256=JtF1hsE5zeahSfOjqiexUKrcNXRa3THC1bd8JTf3zsU,3822
279
280
  streamlit/runtime/uploaded_file_manager.py,sha256=TKZZ08zJryBHRzO8fV8_ALNdAdlGRFj0YwSBWeG8vFY,4783
@@ -309,9 +310,9 @@ streamlit/runtime/state/safe_session_state.py,sha256=UIhqIDtpqP9sX7n3xo1o6X1ft-x
309
310
  streamlit/runtime/state/session_state.py,sha256=B2oRkA-uxFAWVlDZUhHzreTI-Kyln-W3xUgR_e-YHl4,26224
310
311
  streamlit/runtime/state/session_state_proxy.py,sha256=cQBtnC1S2awdXlKPKHPJxdQiL5bjObCjYnhyAGkep6g,5117
311
312
  streamlit/runtime/state/widgets.py,sha256=ll32bOSRCA0eGq8JKWUfhsxBHBGRN8HZo00oFlWh68o,10998
312
- streamlit/static/asset-manifest.json,sha256=K7AzUHCQz9SfkP2EAgNkoyUcAnwuQgrbEGv09KvvEto,14229
313
+ streamlit/static/asset-manifest.json,sha256=5I96evwUEuLkkWyBg2BcdLwPGDA7DFCrpA3cdwBZ3IQ,14229
313
314
  streamlit/static/favicon.png,sha256=if5cVgw7azxKOvV5FpGixga7JLn23rfnHcy1CdWI1-E,1019
314
- streamlit/static/index.html,sha256=4sSWxfny1FjpbcOsSx4ky-87bjg75e2fbVGjAkiIkAo,891
315
+ streamlit/static/index.html,sha256=4pVUlIZ7dkI2mzUlQalR4DxF3D2jk0bxPOtHrFRb2NE,891
315
316
  streamlit/static/static/css/3075.81b3d18f.chunk.css,sha256=7WxsSsC_REs_rrfQTODJt34QZfNePqEv_fc-KFLcOz4,33375
316
317
  streamlit/static/static/css/43.c24b25fa.chunk.css,sha256=oOQFf_CH_DqXNsgcLiXOIk4uuluqNRMkobp8p6uc3y4,2666
317
318
  streamlit/static/static/css/6692.bb444a79.chunk.css,sha256=ijmz-LAYHqKIdoIHza8bHgz1KJvBN6s8MGnh0yloK1A,11157
@@ -345,7 +346,7 @@ streamlit/static/static/js/43.8ca4bc8a.chunk.js,sha256=a-W12RvWnLnFx8oP2vbHWyVFk
345
346
  streamlit/static/static/js/4319.213fc321.chunk.js,sha256=aHGW0HyWTEwz55b0PKJj8n99lZQdKPnJK9mMjLdg4mg,2393
346
347
  streamlit/static/static/js/4477.2555c11a.chunk.js,sha256=0BL08NofHfBWogbfkBPRPBigPSgCGTkAZ_jLaSJurA0,20642
347
348
  streamlit/static/static/js/4500.d1151e3d.chunk.js,sha256=hsu7OiWETXMJ0mG6_YkorT3KVbXZwRk5VIvPnb45Nuw,591
348
- streamlit/static/static/js/4666.3a6efd97.chunk.js,sha256=xfv-Ki8EcIApk6SMZa_epRmOMghHWHMI7XAymA4ASlc,14563
349
+ streamlit/static/static/js/4666.ad225eae.chunk.js,sha256=LRAm0bS1ifeo71_lJGI4LofMZZXlyqiXQj41lN-z-Kk,14660
349
350
  streamlit/static/static/js/474.87506447.chunk.js,sha256=53UXid5OtcopEqbX4i70AszYcQruFauTq2NjP-_5fsY,4800
350
351
  streamlit/static/static/js/5106.22187bfc.chunk.js,sha256=TiIgWIzYEA-emj-p_6hGmGIkqOdpU1Yq6N7xhIXsRU4,7142
351
352
  streamlit/static/static/js/5117.6a701db1.chunk.js,sha256=2uQ5ZntKaf8wpSVyMX1CSnp9P28pw4TdY7MrlnKe-ag,21681
@@ -378,8 +379,8 @@ streamlit/static/static/js/9330.c0dd1723.chunk.js,sha256=GhnPu6wiRJ-Lf8CAPKlEbAk
378
379
  streamlit/static/static/js/9336.2d95d840.chunk.js,sha256=6nGdXfPdjgSauDXzdPVqijnQB2ErTgkzwfoinHGt484,13482
379
380
  streamlit/static/static/js/9656.8c935274.chunk.js,sha256=3VB6NT0EQErJUX2SYLQpmNAp19sWI45AbNOQLVjcvII,22113
380
381
  streamlit/static/static/js/9758.6e6d8662.chunk.js,sha256=3Gtwgkru2xQTl1mCxFjILQ_Ppb8DMKySHY5YVhm9ihY,2119
381
- streamlit/static/static/js/main.603949f7.js,sha256=lLstiEufWXYPEwlk3l5yzIdAB8dt-_7UqjdXlwo2QBc,4353034
382
- streamlit/static/static/js/main.603949f7.js.LICENSE.txt,sha256=8SubmK0oyED9GvrGcKN3O5o2iXWv6SguzCVuy12KUBc,3256
382
+ streamlit/static/static/js/main.043d802e.js,sha256=L3f6_yYB__NHMWqhcXW013N2sZQd07SmgRHDhmBo9fI,4353035
383
+ streamlit/static/static/js/main.043d802e.js.LICENSE.txt,sha256=8SubmK0oyED9GvrGcKN3O5o2iXWv6SguzCVuy12KUBc,3256
383
384
  streamlit/static/static/media/KaTeX_AMS-Regular.73ea273a72f4aca30ca5.woff2,sha256=DN04fJWQoan5eUVgAi27WWVKfYbxh6oMgUla1C06cwg,28076
384
385
  streamlit/static/static/media/KaTeX_AMS-Regular.853be92419a6c3766b9a.ttf,sha256=aFNIQLz90r_7bw6N60hoTdAefwTqKBMmdXevuQbeHRM,63632
385
386
  streamlit/static/static/media/KaTeX_AMS-Regular.d562e886c52f12660a41.woff,sha256=MNqR6EyJP4deJSaJ-uvcWQsocRReitx_mp1NvYzgslE,33516
@@ -484,27 +485,27 @@ streamlit/vendor/pympler/asizeof.py,sha256=noLIqizkYzTkYtA4k8fyvKeiIh8fW9ipW27YP
484
485
  streamlit/watcher/__init__.py,sha256=Tn9E295dBAPIF38TAiWdfIoCsJWXU6rgY1FlxNmLqUU,915
485
486
  streamlit/watcher/event_based_path_watcher.py,sha256=c9xWFVbKTXP9BZVMQJwYzu1MEDNFYwvL70dWfz8DP_0,14055
486
487
  streamlit/watcher/local_sources_watcher.py,sha256=HLcCVQaqNuFYfFicltV6qOFf2nh6KB5sf7XO1KDs8qw,8169
487
- streamlit/watcher/path_watcher.py,sha256=dHYxCvhtiQCerHkxBSM7TlCqh8Wx9MCwn4PLdPDQruE,5748
488
+ streamlit/watcher/path_watcher.py,sha256=jXemvrwA6KrEKvv2O-J6-7SAyZ67Y_Kiuk7m5mu5F-s,5725
488
489
  streamlit/watcher/polling_path_watcher.py,sha256=de4I5qb9tVy1npLllTiW3z5Ij9QC47robSbfGXlwy8I,3769
489
490
  streamlit/watcher/util.py,sha256=cGNY2hmlk3K_i4VBQQ0yTZ49G1TE9zjNz3pBpAF4FOA,5198
490
491
  streamlit/web/__init__.py,sha256=Vrf1yVMOcTyhUPnYvsfyeL96Vpd5z8KoSV5ZzTcTQgU,616
491
- streamlit/web/bootstrap.py,sha256=ssbfV8QycvFrQQhsKTyLIiWLbQbQfR29Krdf2Qf0IJo,14029
492
+ streamlit/web/bootstrap.py,sha256=Pf44qREmcdVeAcNMVae0wOhAC-C53dha3K1fs92o9p0,14374
492
493
  streamlit/web/cache_storage_manager_config.py,sha256=IRAK6bOircT-_gS6DOyr3NaVDMAL_qXx79dAHDTXlco,1122
493
- streamlit/web/cli.py,sha256=zmqUTYKrwczLntyV4wYY_Xws99vKG0SClV-JF0gmI8Q,11250
494
+ streamlit/web/cli.py,sha256=3r4ZMQSQnqk9X4guReFXl5i9lS62L4v8TGT9lFgkuEE,11321
494
495
  streamlit/web/server/__init__.py,sha256=w4TFcV0OjM5zx8ej7oThRIyB6gq3kqdt45XBk1zkRWo,1080
495
496
  streamlit/web/server/app_static_file_handler.py,sha256=zvR_Skw9ejzbLqqgXNNzjf1P6swtHeIHwBTj0RmiTSg,3043
496
497
  streamlit/web/server/browser_websocket_handler.py,sha256=dWJYf_M2QDysig3PZYyltJKK0petJOcDuHJzx3oS47U,7845
497
498
  streamlit/web/server/component_request_handler.py,sha256=gJESMGin22tJp5tu6PG9NXPOEx4HlljU1wIzcSDV1uE,4026
498
499
  streamlit/web/server/media_file_handler.py,sha256=_gpGuhCn7wkfg8Lc2uFNDQeTDE4nqqU5Rss6259Ep-k,5284
499
- streamlit/web/server/routes.py,sha256=wr0fKpj9l735U2MbgXBEc3Rkk3ZT69GaGzp-9IHoPdw,9534
500
- streamlit/web/server/server.py,sha256=BYspyfUBLurAU8nrNRSH7aRKKHoS0tCyfM0u5GClDas,14672
500
+ streamlit/web/server/routes.py,sha256=BXGzuwN2F5cuXonFShZfxnWufhUUsZ7Xiqap4grDlcQ,9833
501
+ streamlit/web/server/server.py,sha256=yYXYGUQcoxAePxN0JeWnVq8VZw3YupMKEgyrDD7RfeM,14679
501
502
  streamlit/web/server/server_util.py,sha256=_-RaGl6LU3gebVlW1W6VTAK_6G1S7Zv9ioSW20RyxnM,4038
502
503
  streamlit/web/server/stats_request_handler.py,sha256=namo6XxyEeACPbKlA9UjnXsJX8pMgVAQDmd7l1iUQvA,3410
503
504
  streamlit/web/server/upload_file_request_handler.py,sha256=WT7SnV6O6hmaK6K2R0smAvvf6LAL-UIMj1ucm5I7514,5034
504
505
  streamlit/web/server/websocket_headers.py,sha256=wZOcWCOZWIfn_omo6ymuy_HaMKa2MMHgri9I2aOggYw,1872
505
- streamlit_nightly-1.31.1.dev20240210.data/scripts/streamlit.cmd,sha256=ZEYM3vBJSp-k7vwSJ3ba5NzEk9-qHdSeLvGYAAe1mMw,676
506
- streamlit_nightly-1.31.1.dev20240210.dist-info/METADATA,sha256=U8JKHt6Bf6aBRba7VjkD4Tld9JiktnIDxDchZpqOZ98,8528
507
- streamlit_nightly-1.31.1.dev20240210.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
508
- streamlit_nightly-1.31.1.dev20240210.dist-info/entry_points.txt,sha256=uNJ4DwGNXEhOK0USwSNanjkYyR-Bk7eYQbJFDrWyOgY,53
509
- streamlit_nightly-1.31.1.dev20240210.dist-info/top_level.txt,sha256=V3FhKbm7G2LnR0s4SytavrjIPNIhvcsAGXfYHAwtQzw,10
510
- streamlit_nightly-1.31.1.dev20240210.dist-info/RECORD,,
506
+ streamlit_nightly-1.31.2.dev20240212.data/scripts/streamlit.cmd,sha256=ZEYM3vBJSp-k7vwSJ3ba5NzEk9-qHdSeLvGYAAe1mMw,676
507
+ streamlit_nightly-1.31.2.dev20240212.dist-info/METADATA,sha256=Fwrqls7X2eJGR2aZ5X_STjJDHJPvxdoClNKJCaRfeWM,8528
508
+ streamlit_nightly-1.31.2.dev20240212.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
509
+ streamlit_nightly-1.31.2.dev20240212.dist-info/entry_points.txt,sha256=uNJ4DwGNXEhOK0USwSNanjkYyR-Bk7eYQbJFDrWyOgY,53
510
+ streamlit_nightly-1.31.2.dev20240212.dist-info/top_level.txt,sha256=V3FhKbm7G2LnR0s4SytavrjIPNIhvcsAGXfYHAwtQzw,10
511
+ streamlit_nightly-1.31.2.dev20240212.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_streamlit_app=self.webpackChunk_streamlit_app||[]).push([[4666],{90186:(e,t,i)=>{i.d(t,{$:()=>c,Z:()=>p});var s=i(66845),n=i(25621),l=i(66694),a=i(27466),r=i(38570),o=i(80318),d=i(40864);let c;!function(e){e.EXTRASMALL="xs",e.SMALL="sm",e.MEDIUM="md",e.LARGE="lg",e.EXTRALARGE="xl"}(c||(c={}));const p=function(e){let{value:t,width:i,size:p=c.SMALL,overrides:g}=e;const h=(0,n.u)(),u={xs:h.spacing.twoXS,sm:h.spacing.sm,md:h.spacing.lg,lg:h.spacing.xl,xl:h.spacing.twoXL},{activeTheme:m}=s.useContext(l.E),f=!(0,a.MJ)(m),x={BarContainer:{style:{marginTop:h.spacing.none,marginBottom:h.spacing.none,marginRight:h.spacing.none,marginLeft:h.spacing.none}},Bar:{style:e=>{let{$theme:t}=e;return{width:i?i.toString():void 0,marginTop:h.spacing.none,marginBottom:h.spacing.none,marginRight:h.spacing.none,marginLeft:h.spacing.none,height:u[p],backgroundColor:t.colors.progressbarTrackFill,borderTopLeftRadius:h.spacing.twoXS,borderTopRightRadius:h.spacing.twoXS,borderBottomLeftRadius:h.spacing.twoXS,borderBottomRightRadius:h.spacing.twoXS}}},BarProgress:{style:()=>({backgroundColor:f?h.colors.primary:h.colors.blue70,borderTopLeftRadius:h.spacing.twoXS,borderTopRightRadius:h.spacing.twoXS,borderBottomLeftRadius:h.spacing.twoXS,borderBottomRightRadius:h.spacing.twoXS})}};return(0,d.jsx)(r.Z,{value:t,overrides:(0,o.aO)(x,g)})}},77367:(e,t,i)=>{i.d(t,{R:()=>s});class s{setStatus(e){return new s(this.name,this.size,this.id,e)}constructor(e,t,i,s){this.name=void 0,this.size=void 0,this.status=void 0,this.id=void 0,this.name=e,this.size=t,this.id=i,this.status=s}}},14666:(e,t,i)=>{i.r(t),i.d(t,{default:()=>he});var s=i(23183),n=i(62813),l=i.n(n),a=i(84693),r=i.n(a),o=i(66845),d=i(16295),c=i(87814),p=i(50641);let g;!function(e){e.Gigabyte="gb",e.Megabyte="mb",e.Kilobyte="kb",e.Byte="b"}(g||(g={}));const h=(0,p.rA)()?1024:1e3,u=[g.Gigabyte,g.Megabyte,g.Kilobyte,g.Byte],m=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(t||(t=g.Byte),i<0&&(i=0),e<0)throw new Error("Size must be greater than or equal to 0");const s=u.indexOf(t);return s&&e>h/2?m(e/h,u[s-1],i):"".concat(e.toFixed(i)).concat(t.toUpperCase())};var f=i(98478),x=i(86659),w=i(8879),y=i(68411),b=i(51622),S=i(9003),F=i(81354),v=i(1515);const j=(0,v.Z)("section",{target:"e1b2p2ww15"})((e=>{let{isDisabled:t,theme:i}=e;return{display:"flex",alignItems:"center",padding:i.spacing.lg,backgroundColor:i.colors.secondaryBg,borderRadius:i.radii.lg,":focus":{outline:"none"},":focus-visible":{boxShadow:"0 0 0 1px ".concat(i.colors.primary)},color:t?i.colors.gray:i.colors.bodyText}}),""),I=(0,v.Z)("div",{target:"e1b2p2ww14"})((()=>({marginRight:"auto",alignItems:"center",display:"flex"})),""),M=(0,v.Z)("span",{target:"e1b2p2ww13"})((e=>{let{theme:t}=e;return{color:t.colors.darkenedBgMix100,marginRight:t.spacing.lg}}),""),z=(0,v.Z)("span",{target:"e1b2p2ww12"})((e=>{let{theme:t}=e;return{marginBottom:t.spacing.twoXS}}),""),L=(0,v.Z)("div",{target:"e1b2p2ww11"})({name:"1fttcpj",styles:"display:flex;flex-direction:column"}),U=(0,v.Z)("div",{target:"e1b2p2ww10"})((e=>{let{theme:t}=e;return{left:0,right:0,lineHeight:t.lineHeights.tight,paddingTop:t.spacing.md,paddingLeft:t.spacing.lg,paddingRight:t.spacing.lg}}),""),C=(0,v.Z)("ul",{target:"e1b2p2ww9"})((()=>({listStyleType:"none",marginBottom:0})),""),B=(0,v.Z)("li",{target:"e1b2p2ww8"})((e=>{let{theme:t}=e;return{margin:t.spacing.none,padding:t.spacing.none}}),""),Z=(0,v.Z)("div",{target:"e1b2p2ww7"})((e=>{let{theme:t}=e;return{display:"flex",alignItems:"baseline",flex:1,paddingLeft:t.spacing.lg,overflow:"hidden"}}),""),R=(0,v.Z)("div",{target:"e1b2p2ww6"})((e=>{let{theme:t}=e;return{marginRight:t.spacing.sm,marginBottom:t.spacing.twoXS,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}),""),k=(0,v.Z)("div",{target:"e1b2p2ww5"})((e=>{let{theme:t}=e;return{display:"flex",alignItems:"center",marginBottom:t.spacing.twoXS}}),""),T=(0,v.Z)("span",{target:"e1b2p2ww4"})((e=>{let{theme:t}=e;return{marginRight:t.spacing.twoXS}}),""),D=(0,v.Z)("div",{target:"e1b2p2ww3"})((e=>{let{theme:t}=e;return{display:"flex",padding:t.spacing.twoXS,color:t.colors.darkenedBgMix100}}),""),X=(0,v.Z)("small",{target:"e1b2p2ww2"})((e=>{let{theme:t}=e;return{color:t.colors.danger,fontSize:t.fontSizes.sm,height:t.fontSizes.sm,lineHeight:t.fontSizes.sm,display:"flex",alignItems:"center",whiteSpace:"nowrap"}}),""),P=(0,v.Z)("span",{target:"e1b2p2ww1"})({name:"0",styles:""}),E=e=>({[j]:{display:"flex",flexDirection:"column",alignItems:"flex-start"},[I]:{marginBottom:e.spacing.lg},[M]:{display:"none"},[U]:{paddingRight:e.spacing.lg},[k]:{maxWidth:"inherit",flex:1,alignItems:"flex-start",marginBottom:e.spacing.sm},[R]:{width:e.sizes.full},[Z]:{flexDirection:"column"},[X]:{height:"auto",whiteSpace:"initial"},[P]:{display:"none"},[B]:{margin:e.spacing.none,padding:e.spacing.none}}),A=(0,v.Z)("div",{target:"e1b2p2ww0"})((e=>{let{theme:t}=e;return t.inSidebar?E(t):{["@media (max-width: ".concat(t.breakpoints.sm,")")]:E(t)}}),"");var V=i(74529),W=i(46927),N=i(33746),O=i(40864);const H=e=>{let{multiple:t,acceptedExtensions:i,maxSizeBytes:s}=e;return(0,O.jsxs)(I,{"data-testid":"stFileDropzoneInstructions",children:[(0,O.jsx)(M,{children:(0,O.jsx)(W.Z,{content:V.n,size:"threeXL"})}),(0,O.jsxs)(L,{children:[(0,O.jsxs)(z,{children:["Drag and drop file",t?"s":""," here"]}),(0,O.jsxs)(N.x,{children:["Limit ".concat(m(s,g.Byte,0)," per file"),i.length?" \u2022 ".concat(i.map((e=>e.replace(/^\./,"").toUpperCase())).join(", ")):null]})]})]})},_=e=>{let{onDrop:t,multiple:i,acceptedExtensions:s,maxSizeBytes:n,disabled:l,label:a}=e;return(0,O.jsx)(b.ZP,{onDrop:t,multiple:i,accept:s.length?s:void 0,maxSize:n,disabled:l,useFsAccessApi:!1,children:e=>{let{getRootProps:t,getInputProps:r}=e;return(0,O.jsxs)(j,{...t(),"data-testid":"stFileUploadDropzone",isDisabled:l,"aria-label":a,children:[(0,O.jsx)("input",{"data-testid":"stDropzoneInput",...r()}),(0,O.jsx)(H,{multiple:i,acceptedExtensions:s,maxSizeBytes:n}),(0,O.jsx)(S.ZP,{kind:F.nW.SECONDARY,disabled:l,size:F.V5.SMALL,children:"Browse files"})]})}})};var G=i(13005),K=i.n(G),$=i(30351),q=i(14609);const J=(0,v.Z)("div",{target:"e16k0npc1"})((e=>{let{theme:t}=e;return{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:t.spacing.twoXS,marginBottom:t.spacing.twoXS}}),""),Y=(0,v.Z)("div",{target:"e16k0npc0"})((e=>{let{theme:t}=e;return{display:"flex",alignItems:"center",justifyContent:"center",color:t.colors.fadedText40}}),""),Q=e=>{let{className:t,currentPage:i,totalPages:s,onNext:n,onPrevious:l}=e;return(0,O.jsxs)(J,{className:t,"data-testid":"stPagination",children:[(0,O.jsx)(N.x,{children:"Showing page ".concat(i," of ").concat(s)}),(0,O.jsxs)(Y,{children:[(0,O.jsx)(S.ZP,{onClick:l,kind:F.nW.MINIMAL,children:(0,O.jsx)(W.Z,{content:$.s,size:"xl"})}),(0,O.jsx)(S.ZP,{onClick:n,kind:F.nW.MINIMAL,children:(0,O.jsx)(W.Z,{content:q._,size:"xl"})})]})]})};var ee=i(88235);const te=(e,t)=>Math.ceil(e.length/t),ie=e=>K()((t=>{let{pageSize:i,items:s,resetOnAdd:n,...l}=t;const[a,r]=(0,o.useState)(0),[d,c]=(0,o.useState)(te(s,i)),p=(0,ee.D)(s);(0,o.useEffect)((()=>{p&&p.length!==s.length&&c(te(s,i)),p&&p.length<s.length?n&&r(0):a+1>=d&&r(d-1)}),[s,a,i,p,n,d]);const g=s.slice(a*i,a*i+i);return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(e,{items:g,...l}),s.length>i?(0,O.jsx)(Q,{className:"streamlit-paginator",pageSize:i,totalPages:d,currentPage:a+1,onNext:()=>{r(Math.min(a+1,d-1))},onPrevious:()=>{r(Math.max(0,a-1))}}):null]})}),e);var se=i(62288),ne=i(87847),le=i(31197),ae=i(90186);const re=e=>{let{fileInfo:t}=e;return"uploading"===t.status.type?(0,O.jsx)(ae.Z,{value:t.status.progress,size:ae.$.SMALL,overrides:{Bar:{style:{marginLeft:0,marginTop:"4px"}}}}):"error"===t.status.type?(0,O.jsxs)(X,{children:[(0,O.jsx)(T,{"data-testid":"stUploadedFileErrorMessage",children:t.status.errorMessage}),(0,O.jsx)(P,{children:(0,O.jsx)(W.Z,{content:se.j,size:"lg"})})]}):"uploaded"===t.status.type?(0,O.jsx)(N.x,{children:m(t.size,g.Byte)}):null},oe=e=>{let{fileInfo:t,onDelete:i}=e;return(0,O.jsxs)(k,{className:"uploadedFile","data-testid":"stUploadedFile",children:[(0,O.jsx)(D,{children:(0,O.jsx)(W.Z,{content:ne.h,size:"twoXL"})}),(0,O.jsxs)(Z,{className:"uploadedFileData",children:[(0,O.jsx)(R,{className:"uploadedFileName",title:t.name,children:t.name}),(0,O.jsx)(re,{fileInfo:t})]}),(0,O.jsx)("div",{"data-testid":"fileDeleteBtn",children:(0,O.jsx)(S.ZP,{onClick:()=>i(t.id),kind:F.nW.MINIMAL,children:(0,O.jsx)(W.Z,{content:le.U,size:"lg"})})})]})},de=ie((e=>{let{items:t,onDelete:i}=e;return(0,O.jsx)(C,{children:t.map((e=>(0,O.jsx)(B,{children:(0,O.jsx)(oe,{fileInfo:e,onDelete:i})},e.id)))})})),ce=e=>(0,O.jsx)(U,{children:(0,O.jsx)(de,{...e})});var pe=i(77367);class ge extends o.PureComponent{constructor(e){super(e),this.formClearHelper=new c.K,this.localFileIdCounter=1,this.componentDidUpdate=()=>{if("ready"!==this.status)return;const e=this.createWidgetValue(),{element:t,widgetMgr:i}=this.props,s=i.getFileUploaderStateValue(t);l()(e,s)||i.setFileUploaderStateValue(t,e,{fromUi:!0})},this.reset=()=>{this.setState({files:[]})},this.dropHandler=(e,t)=>{const{element:i}=this.props,{multipleFiles:s}=i;if(!s&&0===e.length&&t.length>1){const i=t.findIndex((e=>1===e.errors.length&&"too-many-files"===e.errors[0].code));i>=0&&(e.push(t[i].file),t.splice(i,1))}if(this.props.uploadClient.fetchFileURLs(e).then((t=>{if(!s&&e.length>0){const e=this.state.files.find((e=>"error"!==e.status.type));e&&this.deleteFile(e.id)}r()(t,e).forEach((e=>{let[t,i]=e;this.uploadFile(t,i)}))})).catch((t=>{this.addFiles(e.map((e=>new pe.R(e.name,e.size,this.nextLocalFileId(),{type:"error",errorMessage:t}))))})),t.length>0){const e=t.map((e=>{const{file:t}=e;return new pe.R(t.name,t.size,this.nextLocalFileId(),{type:"error",errorMessage:this.getErrorMessage(e.errors[0].code,e.file)})}));this.addFiles(e)}},this.uploadFile=(e,t)=>{const i=s.Z.CancelToken.source(),n=new pe.R(t.name,t.size,this.nextLocalFileId(),{type:"uploading",cancelToken:i,progress:1});this.addFile(n),this.props.uploadClient.uploadFile(this.props.element,e.uploadUrl,t,(e=>this.onUploadProgress(e,n.id)),i.token).then((()=>this.onUploadComplete(n.id,e))).catch((e=>{s.Z.isCancel(e)||this.updateFile(n.id,n.setStatus({type:"error",errorMessage:e?e.toString():"Unknown error"}))}))},this.onUploadComplete=(e,t)=>{const i=this.getFile(e);null!=i&&"uploading"===i.status.type&&this.updateFile(i.id,i.setStatus({type:"uploaded",fileId:t.fileId,fileUrls:t}))},this.getErrorMessage=(e,t)=>{switch(e){case"file-too-large":return"File must be ".concat(m(this.maxUploadSizeInBytes,g.Byte)," or smaller.");case"file-invalid-type":return"".concat(t.type," files are not allowed.");case"file-too-small":return"File size is too small.";case"too-many-files":return"Only one file is allowed.";default:return"Unexpected error. Please try again."}},this.deleteFile=e=>{const t=this.getFile(e);null!=t&&("uploading"===t.status.type&&t.status.cancelToken.cancel(),"uploaded"===t.status.type&&t.status.fileUrls.deleteUrl&&this.props.uploadClient.deleteFile(t.status.fileUrls.deleteUrl),this.removeFile(e))},this.addFile=e=>{this.setState((t=>({files:[...t.files,e]})))},this.addFiles=e=>{this.setState((t=>({files:[...t.files,...e]})))},this.removeFile=e=>{this.setState((t=>({files:t.files.filter((t=>t.id!==e))})))},this.getFile=e=>this.state.files.find((t=>t.id===e)),this.updateFile=(e,t)=>{this.setState((i=>({files:i.files.map((i=>i.id===e?t:i))})))},this.onUploadProgress=(e,t)=>{const i=this.getFile(t);if(null==i||"uploading"!==i.status.type)return;const s=Math.round(100*e.loaded/e.total);i.status.progress!==s&&this.updateFile(t,i.setStatus({type:"uploading",cancelToken:i.status.cancelToken,progress:s}))},this.onFormCleared=()=>{this.setState({files:[]},(()=>{const e=this.createWidgetValue();null!=e&&this.props.widgetMgr.setFileUploaderStateValue(this.props.element,e,{fromUi:!0})}))},this.state=this.initialValue}get initialValue(){const e={files:[],newestServerFileId:0},{widgetMgr:t,element:i}=this.props,s=t.getFileUploaderStateValue(i);if(null==s)return e;const{uploadedFileInfo:n}=s;return null==n||0===n.length?e:{files:n.map((e=>{const t=e.name,i=e.size,s=e.fileId,n=e.fileUrls;return new pe.R(t,i,this.nextLocalFileId(),{type:"uploaded",fileId:s,fileUrls:n})}))}}componentWillUnmount(){this.formClearHelper.disconnect()}get maxUploadSizeInBytes(){return((e,t,i)=>{if(e<0)throw Error("Size must be 0 or greater");const s=u.findIndex((e=>e===t)),n=u.findIndex((e=>e===i));if(-1===s||-1===n)throw Error("Unexpected byte unit provided");if(s===n)return e;const l=Math.abs(s-n),a=h**l;return s>n?e/a:e*a})(this.props.element.maxUploadSizeMb,g.Megabyte,g.Byte)}get status(){return this.state.files.some((e=>"uploading"===e.status.type))?"updating":"ready"}componentDidMount(){const e=this.createWidgetValue(),{element:t,widgetMgr:i}=this.props;void 0===i.getFileUploaderStateValue(t)&&i.setFileUploaderStateValue(t,e,{fromUi:!1})}createWidgetValue(){const e=this.state.files.filter((e=>"uploaded"===e.status.type)).map((e=>{const{name:t,size:i,status:s}=e,{fileId:n,fileUrls:l}=s;return new d.jM({fileId:n,fileUrls:l,name:t,size:i})}));return new d.xO({uploadedFileInfo:e})}render(){var e;const{files:t}=this.state,{element:i,disabled:s,widgetMgr:n}=this.props,l=i.type;this.formClearHelper.manageFormClearListener(n,i.formId,this.onFormCleared);const a=t.slice().reverse();return(0,O.jsxs)(A,{"data-testid":"stFileUploader",children:[(0,O.jsx)(f.O,{label:i.label,disabled:s,labelVisibility:(0,p.iF)(null===(e=i.labelVisibility)||void 0===e?void 0:e.value),children:i.help&&(0,O.jsx)(x.dT,{children:(0,O.jsx)(w.Z,{content:i.help,placement:y.u.TOP_RIGHT})})}),(0,O.jsx)(_,{onDrop:this.dropHandler,multiple:i.multipleFiles,acceptedExtensions:l,maxSizeBytes:this.maxUploadSizeInBytes,label:i.label,disabled:s}),a.length>0&&(0,O.jsx)(ce,{items:a,pageSize:3,onDelete:this.deleteFile,resetOnAdd:!0})]})}nextLocalFileId(){return this.localFileIdCounter++}}const he=ge},87814:(e,t,i)=>{i.d(t,{K:()=>n});var s=i(50641);class n{constructor(){this.formClearListener=void 0,this.lastWidgetMgr=void 0,this.lastFormId=void 0}manageFormClearListener(e,t,i){null!=this.formClearListener&&this.lastWidgetMgr===e&&this.lastFormId===t||(this.disconnect(),(0,s.bM)(t)&&(this.formClearListener=e.addFormClearedListener(t,i),this.lastWidgetMgr=e,this.lastFormId=t))}disconnect(){var e;null===(e=this.formClearListener)||void 0===e||e.disconnect(),this.formClearListener=void 0,this.lastWidgetMgr=void 0,this.lastFormId=void 0}}}}]);