skypilot-nightly 1.0.0.dev20241223__py3-none-any.whl → 1.0.0.dev20241224__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.
sky/__init__.py CHANGED
@@ -5,7 +5,7 @@ from typing import Optional
5
5
  import urllib.request
6
6
 
7
7
  # Replaced with the current commit when building the wheels.
8
- _SKYPILOT_COMMIT_SHA = '2bd7c3ed35ce27d5ffeb9010e23da8d9ebb3ffa7'
8
+ _SKYPILOT_COMMIT_SHA = '6b62570e8b29bb682ae46157ccc757d70fbb975c'
9
9
 
10
10
 
11
11
  def _get_git_commit():
@@ -35,7 +35,7 @@ def _get_git_commit():
35
35
 
36
36
 
37
37
  __commit__ = _get_git_commit()
38
- __version__ = '1.0.0.dev20241223'
38
+ __version__ = '1.0.0.dev20241224'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -1019,10 +1019,6 @@ def _add_auth_to_cluster_config(cloud: clouds.Cloud, cluster_config_file: str):
1019
1019
  common_utils.dump_yaml(cluster_config_file, config)
1020
1020
 
1021
1021
 
1022
- def get_run_timestamp() -> str:
1023
- return 'sky-' + datetime.now().strftime('%Y-%m-%d-%H-%M-%S-%f')
1024
-
1025
-
1026
1022
  def get_timestamp_from_run_timestamp(run_timestamp: str) -> float:
1027
1023
  return datetime.strptime(
1028
1024
  run_timestamp.partition('-')[2], '%Y-%m-%d-%H-%M-%S-%f').timestamp()
@@ -2599,7 +2599,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
2599
2599
  ResourceHandle = CloudVmRayResourceHandle # pylint: disable=invalid-name
2600
2600
 
2601
2601
  def __init__(self):
2602
- self.run_timestamp = backend_utils.get_run_timestamp()
2602
+ self.run_timestamp = sky_logging.get_run_timestamp()
2603
2603
  # NOTE: do not expanduser() here, as this '~/...' path is used for
2604
2604
  # remote as well to be expanded on the remote side.
2605
2605
  self.log_dir = os.path.join(constants.SKY_LOGS_DIRECTORY,
@@ -535,7 +535,7 @@ def launch_benchmark_clusters(benchmark: str, clusters: List[str],
535
535
  for yaml_fd, cluster in zip(yaml_fds, clusters)]
536
536
 
537
537
  # Save stdout/stderr from cluster launches.
538
- run_timestamp = backend_utils.get_run_timestamp()
538
+ run_timestamp = sky_logging.get_run_timestamp()
539
539
  log_dir = os.path.join(constants.SKY_LOGS_DIRECTORY, run_timestamp)
540
540
  log_dir = os.path.expanduser(log_dir)
541
541
  logger.info(
sky/cli.py CHANGED
@@ -830,7 +830,7 @@ class _NaturalOrderGroup(click.Group):
830
830
  Reference: https://github.com/pallets/click/issues/513
831
831
  """
832
832
 
833
- def list_commands(self, ctx):
833
+ def list_commands(self, ctx): # pylint: disable=unused-argument
834
834
  return self.commands.keys()
835
835
 
836
836
  @usage_lib.entrypoint('sky.cli', fallback=True)
@@ -5286,7 +5286,7 @@ def _deploy_local_cluster(gpus: bool):
5286
5286
  run_command = shlex.split(run_command)
5287
5287
 
5288
5288
  # Setup logging paths
5289
- run_timestamp = backend_utils.get_run_timestamp()
5289
+ run_timestamp = sky_logging.get_run_timestamp()
5290
5290
  log_path = os.path.join(constants.SKY_LOGS_DIRECTORY, run_timestamp,
5291
5291
  'local_up.log')
5292
5292
  tail_cmd = 'tail -n100 -f ' + log_path
@@ -5400,7 +5400,7 @@ def _deploy_remote_cluster(ip_file: str, ssh_user: str, ssh_key_path: str,
5400
5400
  deploy_command = shlex.split(deploy_command)
5401
5401
 
5402
5402
  # Setup logging paths
5403
- run_timestamp = backend_utils.get_run_timestamp()
5403
+ run_timestamp = sky_logging.get_run_timestamp()
5404
5404
  log_path = os.path.join(constants.SKY_LOGS_DIRECTORY, run_timestamp,
5405
5405
  'local_up.log')
5406
5406
  tail_cmd = 'tail -n100 -f ' + log_path
@@ -5515,7 +5515,7 @@ def local_down():
5515
5515
  run_command = shlex.split(down_script_path)
5516
5516
 
5517
5517
  # Setup logging paths
5518
- run_timestamp = backend_utils.get_run_timestamp()
5518
+ run_timestamp = sky_logging.get_run_timestamp()
5519
5519
  log_path = os.path.join(constants.SKY_LOGS_DIRECTORY, run_timestamp,
5520
5520
  'local_down.log')
5521
5521
  tail_cmd = 'tail -n100 -f ' + log_path
sky/data/data_utils.py CHANGED
@@ -20,6 +20,7 @@ from sky.adaptors import azure
20
20
  from sky.adaptors import cloudflare
21
21
  from sky.adaptors import gcp
22
22
  from sky.adaptors import ibm
23
+ from sky.skylet import log_lib
23
24
  from sky.utils import common_utils
24
25
  from sky.utils import ux_utils
25
26
 
@@ -430,6 +431,7 @@ def _group_files_by_dir(
430
431
  def parallel_upload(source_path_list: List[str],
431
432
  filesync_command_generator: Callable[[str, List[str]], str],
432
433
  dirsync_command_generator: Callable[[str, str], str],
434
+ log_path: str,
433
435
  bucket_name: str,
434
436
  access_denied_message: str,
435
437
  create_dirs: bool = False,
@@ -445,6 +447,7 @@ def parallel_upload(source_path_list: List[str],
445
447
  for a list of files belonging to the same dir.
446
448
  dirsync_command_generator: Callable that generates rsync command
447
449
  for a directory.
450
+ log_path: Path to the log file.
448
451
  access_denied_message: Message to intercept from the underlying
449
452
  upload utility when permissions are insufficient. Used in
450
453
  exception handling.
@@ -477,7 +480,7 @@ def parallel_upload(source_path_list: List[str],
477
480
  p.starmap(
478
481
  run_upload_cli,
479
482
  zip(commands, [access_denied_message] * len(commands),
480
- [bucket_name] * len(commands)))
483
+ [bucket_name] * len(commands), [log_path] * len(commands)))
481
484
 
482
485
 
483
486
  def get_gsutil_command() -> Tuple[str, str]:
@@ -518,37 +521,27 @@ def get_gsutil_command() -> Tuple[str, str]:
518
521
  return gsutil_alias, alias_gen
519
522
 
520
523
 
521
- def run_upload_cli(command: str, access_denied_message: str, bucket_name: str):
522
- # TODO(zhwu): Use log_lib.run_with_log() and redirect the output
523
- # to a log file.
524
- with subprocess.Popen(command,
525
- stderr=subprocess.PIPE,
526
- stdout=subprocess.DEVNULL,
527
- shell=True) as process:
528
- stderr = []
529
- assert process.stderr is not None # for mypy
530
- while True:
531
- line = process.stderr.readline()
532
- if not line:
533
- break
534
- str_line = line.decode('utf-8')
535
- stderr.append(str_line)
536
- if access_denied_message in str_line:
537
- process.kill()
538
- with ux_utils.print_exception_no_traceback():
539
- raise PermissionError(
540
- 'Failed to upload files to '
541
- 'the remote bucket. The bucket does not have '
542
- 'write permissions. It is possible that '
543
- 'the bucket is public.')
544
- returncode = process.wait()
545
- if returncode != 0:
546
- stderr_str = '\n'.join(stderr)
547
- with ux_utils.print_exception_no_traceback():
548
- logger.error(stderr_str)
549
- raise exceptions.StorageUploadError(
550
- f'Upload to bucket failed for store {bucket_name}. '
551
- 'Please check the logs.')
524
+ def run_upload_cli(command: str, access_denied_message: str, bucket_name: str,
525
+ log_path: str):
526
+ returncode, stdout, stderr = log_lib.run_with_log(command,
527
+ log_path,
528
+ shell=True,
529
+ require_outputs=True)
530
+ if access_denied_message in stderr:
531
+ with ux_utils.print_exception_no_traceback():
532
+ raise PermissionError('Failed to upload files to '
533
+ 'the remote bucket. The bucket does not have '
534
+ 'write permissions. It is possible that '
535
+ 'the bucket is public.')
536
+ if returncode != 0:
537
+ with ux_utils.print_exception_no_traceback():
538
+ logger.error(stderr)
539
+ raise exceptions.StorageUploadError(
540
+ f'Upload to bucket failed for store {bucket_name}. '
541
+ f'Please check the logs: {log_path}')
542
+ if not stdout:
543
+ logger.debug('No file uploaded. This could be due to an error or '
544
+ 'because all files already exist on the cloud.')
552
545
 
553
546
 
554
547
  def get_cos_regions() -> List[str]:
sky/data/storage.py CHANGED
@@ -72,6 +72,8 @@ _BUCKET_EXTERNALLY_DELETED_DEBUG_MESSAGE = (
72
72
  'Bucket {bucket_name!r} does not exist. '
73
73
  'It may have been deleted externally.')
74
74
 
75
+ _STORAGE_LOG_FILE_NAME = 'storage_sync.log'
76
+
75
77
 
76
78
  def get_cached_enabled_storage_clouds_or_refresh(
77
79
  raise_if_no_cloud_access: bool = False) -> List[str]:
@@ -1331,17 +1333,24 @@ class S3Store(AbstractStore):
1331
1333
  else:
1332
1334
  source_message = source_path_list[0]
1333
1335
 
1336
+ log_path = sky_logging.generate_tmp_logging_file_path(
1337
+ _STORAGE_LOG_FILE_NAME)
1338
+ sync_path = f'{source_message} -> s3://{self.name}/'
1334
1339
  with rich_utils.safe_status(
1335
- ux_utils.spinner_message(f'Syncing {source_message} -> '
1336
- f's3://{self.name}/')):
1340
+ ux_utils.spinner_message(f'Syncing {sync_path}',
1341
+ log_path=log_path)):
1337
1342
  data_utils.parallel_upload(
1338
1343
  source_path_list,
1339
1344
  get_file_sync_command,
1340
1345
  get_dir_sync_command,
1346
+ log_path,
1341
1347
  self.name,
1342
1348
  self._ACCESS_DENIED_MESSAGE,
1343
1349
  create_dirs=create_dirs,
1344
1350
  max_concurrent_uploads=_MAX_CONCURRENT_UPLOADS)
1351
+ logger.info(
1352
+ ux_utils.finishing_message(f'Storage synced: {sync_path}',
1353
+ log_path))
1345
1354
 
1346
1355
  def _transfer_to_s3(self) -> None:
1347
1356
  assert isinstance(self.source, str), self.source
@@ -1741,13 +1750,19 @@ class GcsStore(AbstractStore):
1741
1750
  gsutil_alias, alias_gen = data_utils.get_gsutil_command()
1742
1751
  sync_command = (f'{alias_gen}; echo "{copy_list}" | {gsutil_alias} '
1743
1752
  f'cp -e -n -r -I gs://{self.name}')
1744
-
1753
+ log_path = sky_logging.generate_tmp_logging_file_path(
1754
+ _STORAGE_LOG_FILE_NAME)
1755
+ sync_path = f'{source_message} -> gs://{self.name}/'
1745
1756
  with rich_utils.safe_status(
1746
- ux_utils.spinner_message(f'Syncing {source_message} -> '
1747
- f'gs://{self.name}/')):
1757
+ ux_utils.spinner_message(f'Syncing {sync_path}',
1758
+ log_path=log_path)):
1748
1759
  data_utils.run_upload_cli(sync_command,
1749
1760
  self._ACCESS_DENIED_MESSAGE,
1750
- bucket_name=self.name)
1761
+ bucket_name=self.name,
1762
+ log_path=log_path)
1763
+ logger.info(
1764
+ ux_utils.finishing_message(f'Storage synced: {sync_path}',
1765
+ log_path))
1751
1766
 
1752
1767
  def batch_gsutil_rsync(self,
1753
1768
  source_path_list: List[Path],
@@ -1797,17 +1812,24 @@ class GcsStore(AbstractStore):
1797
1812
  else:
1798
1813
  source_message = source_path_list[0]
1799
1814
 
1815
+ log_path = sky_logging.generate_tmp_logging_file_path(
1816
+ _STORAGE_LOG_FILE_NAME)
1817
+ sync_path = f'{source_message} -> gs://{self.name}/'
1800
1818
  with rich_utils.safe_status(
1801
- ux_utils.spinner_message(f'Syncing {source_message} -> '
1802
- f'gs://{self.name}/')):
1819
+ ux_utils.spinner_message(f'Syncing {sync_path}',
1820
+ log_path=log_path)):
1803
1821
  data_utils.parallel_upload(
1804
1822
  source_path_list,
1805
1823
  get_file_sync_command,
1806
1824
  get_dir_sync_command,
1825
+ log_path,
1807
1826
  self.name,
1808
1827
  self._ACCESS_DENIED_MESSAGE,
1809
1828
  create_dirs=create_dirs,
1810
1829
  max_concurrent_uploads=_MAX_CONCURRENT_UPLOADS)
1830
+ logger.info(
1831
+ ux_utils.finishing_message(f'Storage synced: {sync_path}',
1832
+ log_path))
1811
1833
 
1812
1834
  def _transfer_to_gcs(self) -> None:
1813
1835
  if isinstance(self.source, str) and self.source.startswith('s3://'):
@@ -2535,17 +2557,24 @@ class AzureBlobStore(AbstractStore):
2535
2557
  container_endpoint = data_utils.AZURE_CONTAINER_URL.format(
2536
2558
  storage_account_name=self.storage_account_name,
2537
2559
  container_name=self.name)
2560
+ log_path = sky_logging.generate_tmp_logging_file_path(
2561
+ _STORAGE_LOG_FILE_NAME)
2562
+ sync_path = f'{source_message} -> {container_endpoint}/'
2538
2563
  with rich_utils.safe_status(
2539
- ux_utils.spinner_message(
2540
- f'Syncing {source_message} -> {container_endpoint}/')):
2564
+ ux_utils.spinner_message(f'Syncing {sync_path}',
2565
+ log_path=log_path)):
2541
2566
  data_utils.parallel_upload(
2542
2567
  source_path_list,
2543
2568
  get_file_sync_command,
2544
2569
  get_dir_sync_command,
2570
+ log_path,
2545
2571
  self.name,
2546
2572
  self._ACCESS_DENIED_MESSAGE,
2547
2573
  create_dirs=create_dirs,
2548
2574
  max_concurrent_uploads=_MAX_CONCURRENT_UPLOADS)
2575
+ logger.info(
2576
+ ux_utils.finishing_message(f'Storage synced: {sync_path}',
2577
+ log_path))
2549
2578
 
2550
2579
  def _get_bucket(self) -> Tuple[str, bool]:
2551
2580
  """Obtains the AZ Container.
@@ -2938,17 +2967,24 @@ class R2Store(AbstractStore):
2938
2967
  else:
2939
2968
  source_message = source_path_list[0]
2940
2969
 
2970
+ log_path = sky_logging.generate_tmp_logging_file_path(
2971
+ _STORAGE_LOG_FILE_NAME)
2972
+ sync_path = f'{source_message} -> r2://{self.name}/'
2941
2973
  with rich_utils.safe_status(
2942
- ux_utils.spinner_message(
2943
- f'Syncing {source_message} -> r2://{self.name}/')):
2974
+ ux_utils.spinner_message(f'Syncing {sync_path}',
2975
+ log_path=log_path)):
2944
2976
  data_utils.parallel_upload(
2945
2977
  source_path_list,
2946
2978
  get_file_sync_command,
2947
2979
  get_dir_sync_command,
2980
+ log_path,
2948
2981
  self.name,
2949
2982
  self._ACCESS_DENIED_MESSAGE,
2950
2983
  create_dirs=create_dirs,
2951
2984
  max_concurrent_uploads=_MAX_CONCURRENT_UPLOADS)
2985
+ logger.info(
2986
+ ux_utils.finishing_message(f'Storage synced: {sync_path}',
2987
+ log_path))
2952
2988
 
2953
2989
  def _transfer_to_r2(self) -> None:
2954
2990
  assert isinstance(self.source, str), self.source
@@ -3379,17 +3415,24 @@ class IBMCosStore(AbstractStore):
3379
3415
  else:
3380
3416
  source_message = source_path_list[0]
3381
3417
 
3418
+ log_path = sky_logging.generate_tmp_logging_file_path(
3419
+ _STORAGE_LOG_FILE_NAME)
3420
+ sync_path = f'{source_message} -> cos://{self.region}/{self.name}/'
3382
3421
  with rich_utils.safe_status(
3383
- ux_utils.spinner_message(f'Syncing {source_message} -> '
3384
- f'cos://{self.region}/{self.name}/')):
3422
+ ux_utils.spinner_message(f'Syncing {sync_path}',
3423
+ log_path=log_path)):
3385
3424
  data_utils.parallel_upload(
3386
3425
  source_path_list,
3387
3426
  get_file_sync_command,
3388
3427
  get_dir_sync_command,
3428
+ log_path,
3389
3429
  self.name,
3390
3430
  self._ACCESS_DENIED_MESSAGE,
3391
3431
  create_dirs=create_dirs,
3392
3432
  max_concurrent_uploads=_MAX_CONCURRENT_UPLOADS)
3433
+ logger.info(
3434
+ ux_utils.finishing_message(f'Storage synced: {sync_path}',
3435
+ log_path))
3393
3436
 
3394
3437
  def _get_bucket(self) -> Tuple[StorageHandle, bool]:
3395
3438
  """returns IBM COS bucket object if exists, otherwise creates it.
sky/sky_logging.py CHANGED
@@ -1,12 +1,15 @@
1
1
  """Logging utilities."""
2
2
  import builtins
3
3
  import contextlib
4
+ from datetime import datetime
4
5
  import logging
6
+ import os
5
7
  import sys
6
8
  import threading
7
9
 
8
10
  import colorama
9
11
 
12
+ from sky.skylet import constants
10
13
  from sky.utils import env_options
11
14
  from sky.utils import rich_utils
12
15
 
@@ -113,7 +116,7 @@ def reload_logger():
113
116
  _setup_logger()
114
117
 
115
118
 
116
- def init_logger(name: str):
119
+ def init_logger(name: str) -> logging.Logger:
117
120
  return logging.getLogger(name)
118
121
 
119
122
 
@@ -161,3 +164,16 @@ def is_silent():
161
164
  # threads.
162
165
  _logging_config.is_silent = False
163
166
  return _logging_config.is_silent
167
+
168
+
169
+ def get_run_timestamp() -> str:
170
+ return 'sky-' + datetime.now().strftime('%Y-%m-%d-%H-%M-%S-%f')
171
+
172
+
173
+ def generate_tmp_logging_file_path(file_name: str) -> str:
174
+ """Generate an absolute path of a tmp file for logging."""
175
+ run_timestamp = get_run_timestamp()
176
+ log_dir = os.path.join(constants.SKY_LOGS_DIRECTORY, run_timestamp)
177
+ log_path = os.path.expanduser(os.path.join(log_dir, file_name))
178
+
179
+ return log_path
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20241223
3
+ Version: 1.0.0.dev20241224
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -1,8 +1,8 @@
1
- sky/__init__.py,sha256=qaji5mPk8826kqAsy1YvT58jAowR_jtmJBPDLr9mlJU,5944
1
+ sky/__init__.py,sha256=7KrC5-VKTeGjLCJDRTP12YbMTcyXOartNSRt0v5WKnY,5944
2
2
  sky/admin_policy.py,sha256=hPo02f_A32gCqhUueF0QYy1fMSSKqRwYEg_9FxScN_s,3248
3
3
  sky/authentication.py,sha256=kACHmiZgWgRpYd1wx1ofbXRMErfMcFmWrkw4a9NxYrY,20988
4
4
  sky/check.py,sha256=s8deMVL-k9y8gd519K7NWZc3DqWsEySwiAr0uH3Vvcc,9459
5
- sky/cli.py,sha256=_Q-NmuNpXc_h-Fnz2K0nu4VCvMtERFIL08C4sa1UZ9Y,214005
5
+ sky/cli.py,sha256=eFlx0PM6k2XnWN9DFOaqrfHVR8D7KkiGBACI1NIGExg,214034
6
6
  sky/cloud_stores.py,sha256=kqWqnldCtGJvGFmwspLsNF9AGEub1MyzvmYWZBUhARw,21147
7
7
  sky/core.py,sha256=CPwNZQlC5WKLzTb2Tjo2Uogg0EvOt-yLCRlegqK_92A,38598
8
8
  sky/dag.py,sha256=f3sJlkH4bE6Uuz3ozNtsMhcBpRx7KmC9Sa4seDKt4hU,3104
@@ -11,7 +11,7 @@ sky/execution.py,sha256=dpbk1kGRkGHT0FCJKGvjqeV3qIGEN2K20NDZbVrcAvI,28483
11
11
  sky/global_user_state.py,sha256=m2LJsXkh8eAvvz0ADnSP6idfYWZTA_Xi3uxwR3DrJxo,30241
12
12
  sky/optimizer.py,sha256=vzoLxhs535FnRlQB0D_DIidF42mXdPXT3BcALYWzf6M,59732
13
13
  sky/resources.py,sha256=zgUHgqCZGxvAABTe3JYukl4HrzQZi67D7ULFzAMk9YY,70325
14
- sky/sky_logging.py,sha256=SSHibLotMOQKYX_XKj4Va2PTt6dKGZNCWvGm3FuM-Sc,5373
14
+ sky/sky_logging.py,sha256=7Zk9mL1TDxFkGsy3INMBKYlqsbognVGSMzAsHZdZlhw,5891
15
15
  sky/skypilot_config.py,sha256=FN93hSG-heQCHBnemlIK2TwrJngKbpx4vMXNUzPIzV8,9087
16
16
  sky/status_lib.py,sha256=J7Jb4_Dz0v2T64ttOdyUgpokvl4S0sBJrMfH7Fvo51A,1457
17
17
  sky/task.py,sha256=lS8ajVgqMZ1AtIWRzao2BXF2_KL4tPEdlmWg31TPhIo,49760
@@ -30,15 +30,15 @@ sky/adaptors/runpod.py,sha256=4Nt_BfZhJAKQNA3wO8cxvvNI8x4NsDGHu_4EhRDlGYQ,225
30
30
  sky/adaptors/vsphere.py,sha256=zJP9SeObEoLrpgHW2VHvZE48EhgVf8GfAEIwBeaDMfM,2129
31
31
  sky/backends/__init__.py,sha256=UDjwbUgpTRApbPJnNfR786GadUuwgRk3vsWoVu5RB_c,536
32
32
  sky/backends/backend.py,sha256=iBs5gnMaaUoH2OIQ3xhAjWdrJWqj8T61Za9TGsBFpvQ,7515
33
- sky/backends/backend_utils.py,sha256=gWLucPCYroR0qlsRXP7FXjgo2I9CEf_cZB_eR67Rdl8,135440
34
- sky/backends/cloud_vm_ray_backend.py,sha256=C5w0GrQFXS9GQT5XJYWuihhGyIoPoRCpVsdrBFiCzSk,239217
33
+ sky/backends/backend_utils.py,sha256=s_r37B-uJw92Fz1n3OXBPjHjegOOy2wzG_Cny4joVbY,135338
34
+ sky/backends/cloud_vm_ray_backend.py,sha256=yX55EfXJXjvBNJPJ1uEQ-BjNg0v0FSd33t9xNyA72xA,239215
35
35
  sky/backends/docker_utils.py,sha256=Hyw1YY20EyghhEbYx6O2FIMDcGkNzBzV9TM7LFynei8,8358
36
36
  sky/backends/local_docker_backend.py,sha256=nSYCjms3HOPjPNOrcCqsUKm1WV3AAovRFjEQ7hcEXW4,17021
37
37
  sky/backends/wheel_utils.py,sha256=CUVOwlBtQjOMv-RSDGx2jMQ0M1D0w9ZPm0TDafJwBDI,8180
38
38
  sky/backends/monkey_patches/monkey_patch_ray_up.py,sha256=76-y2fCaE3JINj8lEwHT1eirYzCbpD8O1ySsysuGu8o,3450
39
39
  sky/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
40
  sky/benchmark/benchmark_state.py,sha256=X8CXmuU9KgsDRhKedhFgjeRMUFWtQsjFs1qECvPG2yg,8723
41
- sky/benchmark/benchmark_utils.py,sha256=eb-i6zYoo-Zkod-T9qtCu1FcYLw--Yyos1SyibUPZNE,26194
41
+ sky/benchmark/benchmark_utils.py,sha256=mP8Ox2WiKfthq6LcUAZnHknFQ0n8v9o_rCh1LXLgkqc,26192
42
42
  sky/clouds/__init__.py,sha256=WuNIJEnZmBO72tU5awgaaL3rdvFRSkgaYNNeuY68dXo,1356
43
43
  sky/clouds/aws.py,sha256=EDhoMe6P20HisrPzi9yGG0y5ePvCFy4GsLeSA8DirBw,49637
44
44
  sky/clouds/azure.py,sha256=KtnnNZn4ZEr7xndBHxX91v0YXSI1QWPgIefuM1zDUBA,30784
@@ -89,9 +89,9 @@ sky/clouds/utils/oci_utils.py,sha256=e3k6GR0DBP6ansLtA3f1ojJXKrUbP-hBsLKZjJOjRtA
89
89
  sky/clouds/utils/scp_utils.py,sha256=r4lhRLtNgoz5nmkfN2ctAXYugF_-Et8TYH6ZlbbFfo8,15791
90
90
  sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
91
91
  sky/data/data_transfer.py,sha256=MBmjey9_p2L3IKNKTi8um09SlZe32n4wK3CkVnlTVvo,7346
92
- sky/data/data_utils.py,sha256=-P5GsDH_m4slrCz4vHdgiFezIys8ufzvhEKePJwfjFc,28597
92
+ sky/data/data_utils.py,sha256=JTvhmB3Es9vTmWaRRCQJJ-ynKCzJl487Os65Lzrf0l0,28507
93
93
  sky/data/mounting_utils.py,sha256=HwBGg1NmX-2IJZV_6h2r1U3ajTGOyfmA3MqboA7znqU,11004
94
- sky/data/storage.py,sha256=mO_nsxttwINKV6Q88AmPNy4EN6R6RDAOZUWzSr6C_lU,163866
94
+ sky/data/storage.py,sha256=osFIiFSsNHQqKccOmtAgL0m-KD8GHIuoMwg7URbLZ6k,165891
95
95
  sky/data/storage_utils.py,sha256=cM3kxlffYE7PnJySDu8huyUsMX_JYsf9uer8r5OYsjo,9556
96
96
  sky/jobs/__init__.py,sha256=yucibSB_ZimtJMvOhMxn6ZqwBIYNfcwmc6pSXtCqmNQ,1483
97
97
  sky/jobs/constants.py,sha256=YLgcCg_RHSYr_rfsI_4UIdXk78KKKOK29Oem88t5j8I,1350
@@ -279,9 +279,9 @@ sky/utils/kubernetes/k8s_gpu_labeler_job.yaml,sha256=k0TBoQ4zgf79-sVkixKSGYFHQ7Z
279
279
  sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml,sha256=VLKT2KKimZu1GDg_4AIlIt488oMQvhRZWwsj9vBbPUg,3812
280
280
  sky/utils/kubernetes/rsync_helper.sh,sha256=h4YwrPFf9727CACnMJvF3EyK_0OeOYKKt4su_daKekw,1256
281
281
  sky/utils/kubernetes/ssh_jump_lifecycle_manager.py,sha256=Kq1MDygF2IxFmu9FXpCxqucXLmeUrvs6OtRij6XTQbo,6554
282
- skypilot_nightly-1.0.0.dev20241223.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
283
- skypilot_nightly-1.0.0.dev20241223.dist-info/METADATA,sha256=31R_rLqzlqxKmpeU6jZFNpYFlCj2UDfGrkdRu9cUNJA,20149
284
- skypilot_nightly-1.0.0.dev20241223.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
285
- skypilot_nightly-1.0.0.dev20241223.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
286
- skypilot_nightly-1.0.0.dev20241223.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
287
- skypilot_nightly-1.0.0.dev20241223.dist-info/RECORD,,
282
+ skypilot_nightly-1.0.0.dev20241224.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
283
+ skypilot_nightly-1.0.0.dev20241224.dist-info/METADATA,sha256=Ti6DzDHEaqvKFrmPR4a_HhDZnHElmjXYUWq8X8W8dvM,20149
284
+ skypilot_nightly-1.0.0.dev20241224.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
285
+ skypilot_nightly-1.0.0.dev20241224.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
286
+ skypilot_nightly-1.0.0.dev20241224.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
287
+ skypilot_nightly-1.0.0.dev20241224.dist-info/RECORD,,