skypilot-nightly 1.0.0.dev20240912__py3-none-any.whl → 1.0.0.dev20240914__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 +2 -2
- sky/clouds/gcp.py +65 -10
- sky/clouds/service_catalog/__init__.py +6 -3
- sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +35 -13
- sky/clouds/service_catalog/gcp_catalog.py +7 -1
- {skypilot_nightly-1.0.0.dev20240912.dist-info → skypilot_nightly-1.0.0.dev20240914.dist-info}/METADATA +1 -1
- {skypilot_nightly-1.0.0.dev20240912.dist-info → skypilot_nightly-1.0.0.dev20240914.dist-info}/RECORD +11 -11
- {skypilot_nightly-1.0.0.dev20240912.dist-info → skypilot_nightly-1.0.0.dev20240914.dist-info}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20240912.dist-info → skypilot_nightly-1.0.0.dev20240914.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20240912.dist-info → skypilot_nightly-1.0.0.dev20240914.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20240912.dist-info → skypilot_nightly-1.0.0.dev20240914.dist-info}/top_level.txt +0 -0
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 = '
|
8
|
+
_SKYPILOT_COMMIT_SHA = 'c1464e14358f7eecb1c3b7e1de69b17e107a06fe'
|
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.
|
38
|
+
__version__ = '1.0.0.dev20240914'
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
40
40
|
|
41
41
|
|
sky/clouds/gcp.py
CHANGED
@@ -424,6 +424,21 @@ class GCP(clouds.Cloud):
|
|
424
424
|
# issue when first booted.
|
425
425
|
image_id = 'skypilot:cpu-debian-11'
|
426
426
|
|
427
|
+
def _failover_disk_tier() -> Optional[resources_utils.DiskTier]:
|
428
|
+
if (r.disk_tier is not None and
|
429
|
+
r.disk_tier != resources_utils.DiskTier.BEST):
|
430
|
+
return r.disk_tier
|
431
|
+
# Failover disk tier from ultra to low.
|
432
|
+
all_tiers = list(reversed(resources_utils.DiskTier))
|
433
|
+
start_index = all_tiers.index(GCP._translate_disk_tier(r.disk_tier))
|
434
|
+
while start_index < len(all_tiers):
|
435
|
+
disk_tier = all_tiers[start_index]
|
436
|
+
ok, _ = GCP.check_disk_tier(r.instance_type, disk_tier)
|
437
|
+
if ok:
|
438
|
+
return disk_tier
|
439
|
+
start_index += 1
|
440
|
+
assert False, 'Low disk tier should always be supported on GCP.'
|
441
|
+
|
427
442
|
r = resources
|
428
443
|
# Find GPU spec, if any.
|
429
444
|
resources_vars = {
|
@@ -437,7 +452,7 @@ class GCP(clouds.Cloud):
|
|
437
452
|
'custom_resources': None,
|
438
453
|
'use_spot': r.use_spot,
|
439
454
|
'gcp_project_id': self.get_project_id(dryrun),
|
440
|
-
**GCP._get_disk_specs(
|
455
|
+
**GCP._get_disk_specs(_failover_disk_tier()),
|
441
456
|
}
|
442
457
|
accelerators = r.accelerators
|
443
458
|
if accelerators is not None:
|
@@ -532,6 +547,10 @@ class GCP(clouds.Cloud):
|
|
532
547
|
) -> 'resources_utils.FeasibleResources':
|
533
548
|
if resources.instance_type is not None:
|
534
549
|
assert resources.is_launchable(), resources
|
550
|
+
ok, _ = GCP.check_disk_tier(resources.instance_type,
|
551
|
+
resources.disk_tier)
|
552
|
+
if not ok:
|
553
|
+
return resources_utils.FeasibleResources([], [], None)
|
535
554
|
return resources_utils.FeasibleResources([resources], [], None)
|
536
555
|
|
537
556
|
if resources.accelerators is None:
|
@@ -544,15 +563,17 @@ class GCP(clouds.Cloud):
|
|
544
563
|
# TODO: Add hints to all return values in this method to help
|
545
564
|
# users understand why the resources are not launchable.
|
546
565
|
return resources_utils.FeasibleResources([], [], None)
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
566
|
+
ok, _ = GCP.check_disk_tier(host_vm_type, resources.disk_tier)
|
567
|
+
if not ok:
|
568
|
+
return resources_utils.FeasibleResources([], [], None)
|
569
|
+
r = resources.copy(
|
570
|
+
cloud=GCP(),
|
571
|
+
instance_type=host_vm_type,
|
572
|
+
accelerators=None,
|
573
|
+
cpus=None,
|
574
|
+
memory=None,
|
575
|
+
)
|
576
|
+
return resources_utils.FeasibleResources([r], [], None)
|
556
577
|
|
557
578
|
# Find instance candidates to meet user's requirements
|
558
579
|
assert len(resources.accelerators.items()
|
@@ -615,6 +636,10 @@ class GCP(clouds.Cloud):
|
|
615
636
|
else:
|
616
637
|
host_vm_type = instance_list[0]
|
617
638
|
|
639
|
+
ok, _ = GCP.check_disk_tier(host_vm_type, resources.disk_tier)
|
640
|
+
if not ok:
|
641
|
+
return resources_utils.FeasibleResources([], fuzzy_candidate_list,
|
642
|
+
None)
|
618
643
|
acc_dict = {acc: acc_count}
|
619
644
|
r = resources.copy(
|
620
645
|
cloud=GCP(),
|
@@ -916,6 +941,36 @@ class GCP(clouds.Cloud):
|
|
916
941
|
resources.instance_type, resources.accelerators, resources.zone,
|
917
942
|
'gcp')
|
918
943
|
|
944
|
+
@classmethod
|
945
|
+
def check_disk_tier(
|
946
|
+
cls, instance_type: Optional[str],
|
947
|
+
disk_tier: Optional[resources_utils.DiskTier]) -> Tuple[bool, str]:
|
948
|
+
if disk_tier != resources_utils.DiskTier.ULTRA or instance_type is None:
|
949
|
+
return True, ''
|
950
|
+
# Ultra disk tier (pd-extreme) only support m2, m3 and part of n2
|
951
|
+
# instance types, so we failover to lower tiers for other instance
|
952
|
+
# types. Reference:
|
953
|
+
# https://cloud.google.com/compute/docs/disks/extreme-persistent-disk#machine_shape_support # pylint: disable=line-too-long
|
954
|
+
series = instance_type.split('-')[0]
|
955
|
+
if series in ['m2', 'm3', 'n2']:
|
956
|
+
if series == 'n2':
|
957
|
+
num_cpus = int(instance_type.split('-')[2])
|
958
|
+
if num_cpus < 64:
|
959
|
+
return False, ('n2 series with less than 64 vCPUs are '
|
960
|
+
'not supported with pd-extreme.')
|
961
|
+
return True, ''
|
962
|
+
return False, (f'{series} series is not supported with pd-extreme. '
|
963
|
+
'Only m2, m3 series and n2 series with 64 or more vCPUs '
|
964
|
+
'are supported.')
|
965
|
+
|
966
|
+
@classmethod
|
967
|
+
def check_disk_tier_enabled(cls, instance_type: Optional[str],
|
968
|
+
disk_tier: resources_utils.DiskTier) -> None:
|
969
|
+
ok, msg = cls.check_disk_tier(instance_type, disk_tier)
|
970
|
+
if not ok:
|
971
|
+
with ux_utils.print_exception_no_traceback():
|
972
|
+
raise exceptions.NotSupportedError(msg)
|
973
|
+
|
919
974
|
@classmethod
|
920
975
|
def _get_disk_type(cls,
|
921
976
|
disk_tier: Optional[resources_utils.DiskTier]) -> str:
|
@@ -337,10 +337,13 @@ def get_common_gpus() -> List[str]:
|
|
337
337
|
def get_tpus() -> List[str]:
|
338
338
|
"""Returns a list of TPU names."""
|
339
339
|
# TODO(wei-lin): refactor below hard-coded list.
|
340
|
+
# There are many TPU configurations available, we show the three smallest
|
341
|
+
# and the largest configuration for the latest gen TPUs.
|
340
342
|
return [
|
341
|
-
'tpu-v2-
|
342
|
-
'tpu-
|
343
|
-
'tpu-
|
343
|
+
'tpu-v2-512', 'tpu-v3-2048', 'tpu-v4-8', 'tpu-v4-16', 'tpu-v4-32',
|
344
|
+
'tpu-v4-3968', 'tpu-v5litepod-1', 'tpu-v5litepod-4', 'tpu-v5litepod-8',
|
345
|
+
'tpu-v5litepod-256', 'tpu-v5p-8', 'tpu-v5p-32', 'tpu-v5p-128',
|
346
|
+
'tpu-v5p-12288'
|
344
347
|
]
|
345
348
|
|
346
349
|
|
@@ -10,6 +10,7 @@ import io
|
|
10
10
|
import multiprocessing
|
11
11
|
import os
|
12
12
|
import textwrap
|
13
|
+
import time
|
13
14
|
import typing
|
14
15
|
from typing import Any, Callable, Dict, List, Optional, Set
|
15
16
|
|
@@ -19,6 +20,7 @@ import numpy as np
|
|
19
20
|
|
20
21
|
from sky.adaptors import common as adaptors_common
|
21
22
|
from sky.adaptors import gcp
|
23
|
+
from sky.utils import common_utils
|
22
24
|
|
23
25
|
if typing.TYPE_CHECKING:
|
24
26
|
import pandas as pd
|
@@ -38,6 +40,9 @@ TPU_SERVICE_ID = 'E000-3F24-B8AA'
|
|
38
40
|
# The number of digits to round the price to.
|
39
41
|
PRICE_ROUNDING = 5
|
40
42
|
|
43
|
+
# The number of retries for the TPU API.
|
44
|
+
TPU_RETRY_CNT = 3
|
45
|
+
|
41
46
|
# This zone is only for TPU v4, and does not appear in the skus yet.
|
42
47
|
TPU_V4_ZONES = ['us-central2-b']
|
43
48
|
# TPU v3 pods are available in us-east1-d, but hidden in the skus.
|
@@ -518,6 +523,34 @@ def get_gpu_df(skus: List[Dict[str, Any]],
|
|
518
523
|
return df
|
519
524
|
|
520
525
|
|
526
|
+
def _get_tpu_response_for_zone(zone: str) -> list:
|
527
|
+
parent = f'projects/{project_id}/locations/{zone}'
|
528
|
+
# Sometimes the response is empty ({}) even for enabled zones. Here we
|
529
|
+
# retry the request for a few times.
|
530
|
+
backoff = common_utils.Backoff(initial_backoff=1)
|
531
|
+
for _ in range(TPU_RETRY_CNT):
|
532
|
+
tpus_request = (
|
533
|
+
tpu_client.projects().locations().acceleratorTypes().list(
|
534
|
+
parent=parent))
|
535
|
+
try:
|
536
|
+
tpus_response = tpus_request.execute()
|
537
|
+
if 'acceleratorTypes' in tpus_response:
|
538
|
+
return tpus_response['acceleratorTypes']
|
539
|
+
except gcp.http_error_exception() as error:
|
540
|
+
if error.resp.status == 403:
|
541
|
+
print(' TPU API is not enabled or you don\'t have TPU access '
|
542
|
+
f'to zone: {zone!r}.')
|
543
|
+
else:
|
544
|
+
print(f' An error occurred: {error}')
|
545
|
+
# If error happens, fail early.
|
546
|
+
return []
|
547
|
+
time_to_sleep = backoff.current_backoff()
|
548
|
+
print(f' Retry zone {zone!r} in {time_to_sleep} seconds...')
|
549
|
+
time.sleep(time_to_sleep)
|
550
|
+
print(f'ERROR: Failed to fetch TPUs for zone {zone!r}.')
|
551
|
+
return []
|
552
|
+
|
553
|
+
|
521
554
|
def _get_tpu_for_zone(zone: str) -> 'pd.DataFrame':
|
522
555
|
# Use hardcoded TPU V5 data as it is invisible in some zones.
|
523
556
|
missing_tpus_df = pd.DataFrame(columns=[
|
@@ -526,19 +559,8 @@ def _get_tpu_for_zone(zone: str) -> 'pd.DataFrame':
|
|
526
559
|
if zone in TPU_V5_MISSING_ZONES_DF:
|
527
560
|
missing_tpus_df = TPU_V5_MISSING_ZONES_DF[zone]
|
528
561
|
tpus = []
|
529
|
-
|
530
|
-
|
531
|
-
parent=parent)
|
532
|
-
try:
|
533
|
-
tpus_response = tpus_request.execute()
|
534
|
-
for tpu in tpus_response['acceleratorTypes']:
|
535
|
-
tpus.append(tpu)
|
536
|
-
except gcp.http_error_exception() as error:
|
537
|
-
if error.resp.status == 403:
|
538
|
-
print(' TPU API is not enabled or you don\'t have TPU access '
|
539
|
-
f'to zone: {zone!r}.')
|
540
|
-
else:
|
541
|
-
print(f' An error occurred: {error}')
|
562
|
+
for tpu in _get_tpu_response_for_zone(zone):
|
563
|
+
tpus.append(tpu)
|
542
564
|
new_tpus = []
|
543
565
|
for tpu in tpus:
|
544
566
|
tpu_name = tpu['type']
|
@@ -9,6 +9,7 @@ from typing import Dict, List, Optional, Tuple
|
|
9
9
|
from sky import exceptions
|
10
10
|
from sky import sky_logging
|
11
11
|
from sky.adaptors import common as adaptors_common
|
12
|
+
from sky.clouds import GCP
|
12
13
|
from sky.clouds.service_catalog import common
|
13
14
|
from sky.utils import resources_utils
|
14
15
|
from sky.utils import ux_utils
|
@@ -243,7 +244,6 @@ def get_default_instance_type(
|
|
243
244
|
cpus: Optional[str] = None,
|
244
245
|
memory: Optional[str] = None,
|
245
246
|
disk_tier: Optional[resources_utils.DiskTier] = None) -> Optional[str]:
|
246
|
-
del disk_tier # unused
|
247
247
|
if cpus is None and memory is None:
|
248
248
|
cpus = f'{_DEFAULT_NUM_VCPUS}+'
|
249
249
|
if memory is None:
|
@@ -254,6 +254,12 @@ def get_default_instance_type(
|
|
254
254
|
f'{family}-' for family in _DEFAULT_INSTANCE_FAMILY)
|
255
255
|
df = _df[_df['InstanceType'].notna()]
|
256
256
|
df = df[df['InstanceType'].str.startswith(instance_type_prefix)]
|
257
|
+
|
258
|
+
def _filter_disk_type(instance_type: str) -> bool:
|
259
|
+
valid, _ = GCP.check_disk_tier(instance_type, disk_tier)
|
260
|
+
return valid
|
261
|
+
|
262
|
+
df = df.loc[df['InstanceType'].apply(_filter_disk_type)]
|
257
263
|
return common.get_instance_type_for_cpus_mem_impl(df, cpus,
|
258
264
|
memory_gb_or_ratio)
|
259
265
|
|
{skypilot_nightly-1.0.0.dev20240912.dist-info → skypilot_nightly-1.0.0.dev20240914.dist-info}/RECORD
RENAMED
@@ -1,4 +1,4 @@
|
|
1
|
-
sky/__init__.py,sha256
|
1
|
+
sky/__init__.py,sha256=EglV87JjMuUsTAewhIicWlTbUHe6hR3fYA0Yx6Mq0r4,5588
|
2
2
|
sky/authentication.py,sha256=yvpdkXS9htf-X83DPCiSG3mQ41y0zV1BQ0YgOMgTYBU,20612
|
3
3
|
sky/check.py,sha256=jLMIIJrseaZj1_o5WkbaD9XdyXIlCaT6pyAaIFdhdmA,9079
|
4
4
|
sky/cli.py,sha256=2cOw3lXzRA-uLlEH-eK7N_1VmUpf1LR4Ztu-ZaKu3Is,201673
|
@@ -45,7 +45,7 @@ sky/clouds/cloud.py,sha256=PPk-Cbf1YbJT8bswcQLtPBtko02OWrRGJKkLzDpytTI,34858
|
|
45
45
|
sky/clouds/cloud_registry.py,sha256=4yQMv-iBSgyN5aNL4Qxbn0JVE-dkVoEUIgj7S1z9S_Q,955
|
46
46
|
sky/clouds/cudo.py,sha256=H4VyMo5wWGAv2MXZ3xsbWjlZA_cZYnt4ecNlTOOao8Y,13147
|
47
47
|
sky/clouds/fluidstack.py,sha256=iOmoOx52yTrHKMzwBDaxFJCfNo79M61d5tj-Np24Lyc,12436
|
48
|
-
sky/clouds/gcp.py,sha256=
|
48
|
+
sky/clouds/gcp.py,sha256=CrSsaSXd83tM78foKH9viBfW1cQsjve3aUQbshsqvDg,54033
|
49
49
|
sky/clouds/ibm.py,sha256=M8QdjeSFlwssfoY2aOodxG4q5R3eT9K-4lTPDHYvEYI,21476
|
50
50
|
sky/clouds/kubernetes.py,sha256=L_4ES8i4oR27NIalTW3CVgjMUdYScm1lS-GQCueN_js,22198
|
51
51
|
sky/clouds/lambda_cloud.py,sha256=2Al3qCSl-I4iTi7pPPNXcbaLyVfCUgTl__vYBunLB6k,12439
|
@@ -54,7 +54,7 @@ sky/clouds/paperspace.py,sha256=lmUZPYAblaqiBmGQwCunccMiTF_dVA1o3vqY9Q_Nc28,1092
|
|
54
54
|
sky/clouds/runpod.py,sha256=lstUC6f4JDhtcH9NfwkbpCJMmfmvMigoanhPXPbTYds,11540
|
55
55
|
sky/clouds/scp.py,sha256=2KLTuNSMdBzK8CLwSesv7efOuiLidIMoyNG4AOt5Sqw,15870
|
56
56
|
sky/clouds/vsphere.py,sha256=7eZFYIDtY5sX_ATr8h7kwwkY9t8Z-EYMJ9HCjoRBoxI,12309
|
57
|
-
sky/clouds/service_catalog/__init__.py,sha256=
|
57
|
+
sky/clouds/service_catalog/__init__.py,sha256=e0K-c64jQV9d6zly5OnIXMsYaZXs_Ko9osAbDaRlOOw,14743
|
58
58
|
sky/clouds/service_catalog/aws_catalog.py,sha256=OURG9JeSGQ_zNO-E2KwDgUJeQuJEvMa7arzhf4Kza6M,12549
|
59
59
|
sky/clouds/service_catalog/azure_catalog.py,sha256=VJi3yfhZy9Sc6UfcLAc8xIoTlUlUr090TODkCZyyHFw,7311
|
60
60
|
sky/clouds/service_catalog/common.py,sha256=LED9Yzh1nsurvjCtqXGcsbUI8N-YFx05kazBgLF-HIQ,27256
|
@@ -62,7 +62,7 @@ sky/clouds/service_catalog/config.py,sha256=ylzqewdEBjDg4awvFek6ldYmFrnvD2bVGLZu
|
|
62
62
|
sky/clouds/service_catalog/constants.py,sha256=ai2yOlsVqBnEpbxaEHXt61COsHBLwOfw6GZXntEPj7k,411
|
63
63
|
sky/clouds/service_catalog/cudo_catalog.py,sha256=WPLIQ9NVvuKAS48KYujV6dQsyeppIcUCVXpapy13bbI,4335
|
64
64
|
sky/clouds/service_catalog/fluidstack_catalog.py,sha256=c8MMTldG-q97MJ0zJymudQiOVQC_rxS7vqrZgLrgbQA,5038
|
65
|
-
sky/clouds/service_catalog/gcp_catalog.py,sha256
|
65
|
+
sky/clouds/service_catalog/gcp_catalog.py,sha256=MHWq_-jqm68oNpK1i8AlJIGBkSKT-P6xX7DkpvqvpHU,24323
|
66
66
|
sky/clouds/service_catalog/ibm_catalog.py,sha256=0dzjmXABFECzaAuIa0E6pVINhVK6-G6U52Mj-L45gK8,4472
|
67
67
|
sky/clouds/service_catalog/kubernetes_catalog.py,sha256=AYuKWEfrOQP4g0yNscS_vq9zdPSYT0adCuV1VI5Po6k,7892
|
68
68
|
sky/clouds/service_catalog/lambda_catalog.py,sha256=BAhUGqHj8aVe1zUhEQNO7bQUhcd9jAespGvPyQubTJY,5281
|
@@ -77,7 +77,7 @@ sky/clouds/service_catalog/data_fetchers/fetch_aws.py,sha256=Fcm9_IkmTBXM9gp5Voh
|
|
77
77
|
sky/clouds/service_catalog/data_fetchers/fetch_azure.py,sha256=jsSVqbSbBIw_IYmO-y2u4co20AJ-JF713KFjUKdO_VA,12272
|
78
78
|
sky/clouds/service_catalog/data_fetchers/fetch_cudo.py,sha256=52P48lvWN0s1ArjeLPeLemPRpxjSRcHincRle0nqdm4,3440
|
79
79
|
sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py,sha256=35nO_VaDOgp5W13kt_lIANSk_CNf7gBiZGJ5fGyZu6o,6808
|
80
|
-
sky/clouds/service_catalog/data_fetchers/fetch_gcp.py,sha256=
|
80
|
+
sky/clouds/service_catalog/data_fetchers/fetch_gcp.py,sha256=2VebGjKkCckQZgOW3MBlfjFvA56U7eaIAh2q-6NYcL0,29070
|
81
81
|
sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py,sha256=B7H14so38zayuJGgUrD1PJYJKiVZHGnwH6JJop3F7o0,4918
|
82
82
|
sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py,sha256=SF_gTU74qg6L-DSWneCAbqP0lwZXaaDi5otiMIJbrw0,21462
|
83
83
|
sky/clouds/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -270,9 +270,9 @@ sky/utils/kubernetes/k8s_gpu_labeler_job.yaml,sha256=KPqp23B-zQ2SZK03jdHeF9fLTog
|
|
270
270
|
sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml,sha256=VLKT2KKimZu1GDg_4AIlIt488oMQvhRZWwsj9vBbPUg,3812
|
271
271
|
sky/utils/kubernetes/rsync_helper.sh,sha256=Ma-N9a271fTfdgP5-8XIQL7KPf8IPUo-uY004PCdUFo,747
|
272
272
|
sky/utils/kubernetes/ssh_jump_lifecycle_manager.py,sha256=RFLJ3k7MR5UN4SKHykQ0lV9SgXumoULpKYIAt1vh-HU,6560
|
273
|
-
skypilot_nightly-1.0.0.
|
274
|
-
skypilot_nightly-1.0.0.
|
275
|
-
skypilot_nightly-1.0.0.
|
276
|
-
skypilot_nightly-1.0.0.
|
277
|
-
skypilot_nightly-1.0.0.
|
278
|
-
skypilot_nightly-1.0.0.
|
273
|
+
skypilot_nightly-1.0.0.dev20240914.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
|
274
|
+
skypilot_nightly-1.0.0.dev20240914.dist-info/METADATA,sha256=173qFqRG_A3Vs_yjnG4I29fBIHpjiZrZyLQcloyuZ2U,19011
|
275
|
+
skypilot_nightly-1.0.0.dev20240914.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
|
276
|
+
skypilot_nightly-1.0.0.dev20240914.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
|
277
|
+
skypilot_nightly-1.0.0.dev20240914.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
|
278
|
+
skypilot_nightly-1.0.0.dev20240914.dist-info/RECORD,,
|
File without changes
|
{skypilot_nightly-1.0.0.dev20240912.dist-info → skypilot_nightly-1.0.0.dev20240914.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|