skypilot-nightly 1.0.0.dev20250703__py3-none-any.whl → 1.0.0.dev20250704__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 (41) hide show
  1. sky/__init__.py +2 -2
  2. sky/backends/backend_utils.py +24 -24
  3. sky/catalog/data_fetchers/fetch_cudo.py +37 -37
  4. sky/client/sdk.py +4 -6
  5. sky/clouds/aws.py +1 -1
  6. sky/clouds/cudo.py +1 -1
  7. sky/dashboard/out/404.html +1 -1
  8. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  9. sky/dashboard/out/clusters/[cluster].html +1 -1
  10. sky/dashboard/out/clusters.html +1 -1
  11. sky/dashboard/out/config.html +1 -1
  12. sky/dashboard/out/index.html +1 -1
  13. sky/dashboard/out/infra/[context].html +1 -1
  14. sky/dashboard/out/infra.html +1 -1
  15. sky/dashboard/out/jobs/[job].html +1 -1
  16. sky/dashboard/out/jobs.html +1 -1
  17. sky/dashboard/out/users.html +1 -1
  18. sky/dashboard/out/volumes.html +1 -1
  19. sky/dashboard/out/workspace/new.html +1 -1
  20. sky/dashboard/out/workspaces/[name].html +1 -1
  21. sky/dashboard/out/workspaces.html +1 -1
  22. sky/exceptions.py +5 -0
  23. sky/jobs/client/sdk.py +3 -1
  24. sky/jobs/server/core.py +3 -1
  25. sky/provision/cudo/cudo_utils.py +14 -8
  26. sky/provision/cudo/cudo_wrapper.py +71 -70
  27. sky/server/common.py +46 -92
  28. sky/server/constants.py +25 -4
  29. sky/server/requests/payloads.py +55 -10
  30. sky/server/requests/requests.py +6 -28
  31. sky/server/rest.py +15 -4
  32. sky/server/server.py +40 -7
  33. sky/server/versions.py +270 -0
  34. {skypilot_nightly-1.0.0.dev20250703.dist-info → skypilot_nightly-1.0.0.dev20250704.dist-info}/METADATA +1 -1
  35. {skypilot_nightly-1.0.0.dev20250703.dist-info → skypilot_nightly-1.0.0.dev20250704.dist-info}/RECORD +41 -40
  36. /sky/dashboard/out/_next/static/{A-fbCEgJE_q2cV8biIOIr → 6TieQqyqsJiaJC33q0FfI}/_buildManifest.js +0 -0
  37. /sky/dashboard/out/_next/static/{A-fbCEgJE_q2cV8biIOIr → 6TieQqyqsJiaJC33q0FfI}/_ssgManifest.js +0 -0
  38. {skypilot_nightly-1.0.0.dev20250703.dist-info → skypilot_nightly-1.0.0.dev20250704.dist-info}/WHEEL +0 -0
  39. {skypilot_nightly-1.0.0.dev20250703.dist-info → skypilot_nightly-1.0.0.dev20250704.dist-info}/entry_points.txt +0 -0
  40. {skypilot_nightly-1.0.0.dev20250703.dist-info → skypilot_nightly-1.0.0.dev20250704.dist-info}/licenses/LICENSE +0 -0
  41. {skypilot_nightly-1.0.0.dev20250703.dist-info → skypilot_nightly-1.0.0.dev20250704.dist-info}/top_level.txt +0 -0
sky/server/server.py CHANGED
@@ -4,7 +4,6 @@ import argparse
4
4
  import asyncio
5
5
  import base64
6
6
  import contextlib
7
- import dataclasses
8
7
  import datetime
9
8
  import hashlib
10
9
  import json
@@ -49,6 +48,7 @@ from sky.server import constants as server_constants
49
48
  from sky.server import metrics
50
49
  from sky.server import state
51
50
  from sky.server import stream_utils
51
+ from sky.server import versions
52
52
  from sky.server.requests import executor
53
53
  from sky.server.requests import payloads
54
54
  from sky.server.requests import preconditions
@@ -559,6 +559,35 @@ class GracefulShutdownMiddleware(starlette.middleware.base.BaseHTTPMiddleware):
559
559
  return await call_next(request)
560
560
 
561
561
 
562
+ class APIVersionMiddleware(starlette.middleware.base.BaseHTTPMiddleware):
563
+ """Middleware to add API version to the request."""
564
+
565
+ async def dispatch(self, request: fastapi.Request, call_next):
566
+ version_info = versions.check_compatibility_at_server(request.headers)
567
+ # Bypass version handling for backward compatibility with clients prior
568
+ # to v0.11.0, the client will check the version in the body of
569
+ # /api/health response and hint an upgrade.
570
+ # TODO(aylei): remove this after v0.13.0 is released.
571
+ if version_info is None:
572
+ return await call_next(request)
573
+ if version_info.error is None:
574
+ versions.set_remote_api_version(version_info.api_version)
575
+ versions.set_remote_version(version_info.version)
576
+ response = await call_next(request)
577
+ else:
578
+ response = fastapi.responses.JSONResponse(
579
+ status_code=400,
580
+ content={
581
+ 'error': common.ApiServerStatus.VERSION_MISMATCH.value,
582
+ 'message': version_info.error,
583
+ })
584
+ response.headers[server_constants.API_VERSION_HEADER] = str(
585
+ server_constants.API_VERSION)
586
+ response.headers[server_constants.VERSION_HEADER] = \
587
+ versions.get_local_readable_version()
588
+ return response
589
+
590
+
562
591
  app = fastapi.FastAPI(prefix='/api/v1', debug=True, lifespan=lifespan)
563
592
  # Middleware wraps in the order defined here. E.g., given
564
593
  # app.add_middleware(Middleware1)
@@ -571,6 +600,8 @@ app = fastapi.FastAPI(prefix='/api/v1', debug=True, lifespan=lifespan)
571
600
  # Use environment variable to make the metrics middleware optional.
572
601
  if os.environ.get(constants.ENV_VAR_SERVER_METRICS_ENABLED):
573
602
  app.add_middleware(metrics.PrometheusMiddleware)
603
+ app.add_middleware(APIVersionMiddleware)
604
+ app.add_middleware(RBACMiddleware)
574
605
  app.add_middleware(InternalDashboardPrefixMiddleware)
575
606
  app.add_middleware(GracefulShutdownMiddleware)
576
607
  app.add_middleware(PathCleanMiddleware)
@@ -1335,7 +1366,7 @@ async def local_down(request: fastapi.Request) -> None:
1335
1366
 
1336
1367
  # === API server related APIs ===
1337
1368
  @app.get('/api/get')
1338
- async def api_get(request_id: str) -> requests_lib.RequestPayload:
1369
+ async def api_get(request_id: str) -> payloads.RequestPayload:
1339
1370
  """Gets a request with a given request ID prefix."""
1340
1371
  while True:
1341
1372
  request_task = requests_lib.get_request(request_id)
@@ -1350,9 +1381,8 @@ async def api_get(request_id: str) -> requests_lib.RequestPayload:
1350
1381
  detail=f'Request {request_id!r} should be retried')
1351
1382
  request_error = request_task.get_error()
1352
1383
  if request_error is not None:
1353
- raise fastapi.HTTPException(status_code=500,
1354
- detail=dataclasses.asdict(
1355
- request_task.encode()))
1384
+ raise fastapi.HTTPException(
1385
+ status_code=500, detail=request_task.encode().model_dump())
1356
1386
  return request_task.encode()
1357
1387
  # yield control to allow other coroutines to run, sleep shortly
1358
1388
  # to avoid storming the DB and CPU in the meantime
@@ -1490,7 +1520,7 @@ async def api_status(
1490
1520
  None, description='Request IDs to get status for.'),
1491
1521
  all_status: bool = fastapi.Query(
1492
1522
  False, description='Get finished requests as well.'),
1493
- ) -> List[requests_lib.RequestPayload]:
1523
+ ) -> List[payloads.RequestPayload]:
1494
1524
  """Gets the list of requests."""
1495
1525
  if request_ids is None:
1496
1526
  statuses = None
@@ -1530,7 +1560,10 @@ async def health(request: fastapi.Request) -> Dict[str, Any]:
1530
1560
  logger.info(f'Health endpoint: request.state.auth_user = {user}')
1531
1561
  return {
1532
1562
  'status': common.ApiServerStatus.HEALTHY.value,
1533
- 'api_version': server_constants.API_VERSION,
1563
+ # Kept for backward compatibility, clients before 0.11.0 will read this
1564
+ # field to check compatibility and hint the user to upgrade the CLI.
1565
+ # TODO(aylei): remove this field after 0.13.0
1566
+ 'api_version': str(server_constants.API_VERSION),
1534
1567
  'version': sky.__version__,
1535
1568
  'version_on_disk': common.get_skypilot_version_on_disk(),
1536
1569
  'commit': sky.__commit__,
sky/server/versions.py ADDED
@@ -0,0 +1,270 @@
1
+ """API versioning module."""
2
+
3
+ import contextvars
4
+ import functools
5
+ import re
6
+ from typing import Callable, Literal, Mapping, NamedTuple, Optional, Tuple
7
+
8
+ import colorama
9
+ from packaging import version as version_lib
10
+
11
+ import sky
12
+ from sky import exceptions
13
+ from sky import sky_logging
14
+ from sky.server import constants
15
+ from sky.utils import ux_utils
16
+
17
+ logger = sky_logging.init_logger(__name__)
18
+
19
+ CLIENT_TOO_OLD_ERROR = (
20
+ f'{colorama.Fore.YELLOW}Your SkyPilot client version is too old:'
21
+ '{remote_version}\n'
22
+ f'{colorama.Style.RESET_ALL}'
23
+ 'The server is running on {local_version} and the minimum compatible '
24
+ 'version is {min_version}.\n'
25
+ f'Upgrade your client with:\n{colorama.Fore.YELLOW}'
26
+ '{command}'
27
+ f'{colorama.Style.RESET_ALL}')
28
+ SERVER_TOO_OLD_ERROR = (
29
+ f'{colorama.Fore.YELLOW}Your SkyPilot API server version is too old: '
30
+ '{remote_version}\n'
31
+ f'{colorama.Style.RESET_ALL}'
32
+ 'The client is running on {local_version} and the minimum compatible '
33
+ 'version is {min_version}.\n'
34
+ 'Contact your administrator to upgrade the remote API server or downgrade '
35
+ f'your client with:\n{colorama.Fore.YELLOW}'
36
+ '{command}'
37
+ f'{colorama.Style.RESET_ALL}')
38
+
39
+ # SkyPilot dev version.
40
+ DEV_VERSION = '1.0.0-dev0'
41
+
42
+ _REMOTE_TO_ERROR = {
43
+ 'client': CLIENT_TOO_OLD_ERROR,
44
+ 'server': SERVER_TOO_OLD_ERROR,
45
+ }
46
+
47
+ # Context-local (thread or cooroutine) remote API version, captured during
48
+ # communication with the remote peer.
49
+ _remote_api_version: contextvars.ContextVar[Optional[int]] = \
50
+ contextvars.ContextVar('remote_api_version', default=None)
51
+ _remote_version: contextvars.ContextVar[str] = \
52
+ contextvars.ContextVar('remote_version', default='unknown')
53
+ _reminded_for_minor_version_upgrade = False
54
+
55
+
56
+ def get_remote_api_version() -> Optional[int]:
57
+ return _remote_api_version.get()
58
+
59
+
60
+ def set_remote_api_version(api_version: int) -> None:
61
+ _remote_api_version.set(api_version)
62
+
63
+
64
+ def get_remote_version() -> str:
65
+ return _remote_version.get()
66
+
67
+
68
+ def set_remote_version(version: str) -> None:
69
+ _remote_version.set(version)
70
+
71
+
72
+ class VersionInfo(NamedTuple):
73
+ api_version: int
74
+ version: str
75
+ error: Optional[str] = None
76
+
77
+
78
+ def check_compatibility_at_server(
79
+ client_headers: Mapping[str, str]) -> Optional[VersionInfo]:
80
+ """Check API compatibility between client and server."""
81
+ return _check_version_compatibility(client_headers, 'client')
82
+
83
+
84
+ def check_compatibility_at_client(
85
+ server_headers: Mapping[str, str]) -> Optional[VersionInfo]:
86
+ """Check API compatibility between client and server."""
87
+ return _check_version_compatibility(server_headers, 'server')
88
+
89
+
90
+ def _check_version_compatibility(
91
+ remote_headers: Mapping[str, str],
92
+ remote_type: Literal['client', 'server']) -> Optional[VersionInfo]:
93
+ """Check API compatibility between client and server.
94
+
95
+ This function can be called at both client and server side, where the
96
+ headers should contain the version info of the remote.
97
+
98
+ Args:
99
+ remote_headers: The headers of the request/response sent from the
100
+ remote.
101
+ remote_type: The type of the remote, used to determine the error
102
+ message. Valid options are 'client' and 'server'.
103
+
104
+ Returns:
105
+ The version info of the remote, None if the version info is not found
106
+ in the headers for backward compatibility.
107
+ """
108
+ api_version_str = remote_headers.get(constants.API_VERSION_HEADER)
109
+ version = remote_headers.get(constants.VERSION_HEADER)
110
+ if version is None or api_version_str is None:
111
+ return None
112
+ try:
113
+ api_version = int(api_version_str)
114
+ except ValueError:
115
+ # The future change is expected to not break the compatibility of this
116
+ # header, so we are encountering a bug or a malicious request here,
117
+ # just raise an error.
118
+ raise ValueError(
119
+ f'Header {constants.API_VERSION_HEADER}: '
120
+ f'{api_version_str} is not a valid API version.') from None
121
+
122
+ if api_version < constants.MIN_COMPATIBLE_API_VERSION:
123
+ if remote_type == 'server':
124
+ # Hint the user to downgrade to client to the remote server server.
125
+ server_version, server_commit = parse_readable_version(version)
126
+ command = install_version_command(server_version, server_commit)
127
+ else:
128
+ # Hint the client to upgrade to upgrade the server version
129
+ command = install_version_command(sky.__version__, sky.__commit__)
130
+ return VersionInfo(api_version=api_version,
131
+ version=version,
132
+ error=_REMOTE_TO_ERROR[remote_type].format(
133
+ remote_version=version,
134
+ local_version=get_local_readable_version(),
135
+ min_version=constants.MIN_COMPATIBLE_VERSION,
136
+ command=command,
137
+ ))
138
+
139
+ if remote_type == 'server':
140
+ # Only print the reminder at client-side.
141
+ _remind_minor_version_upgrade(version)
142
+
143
+ return VersionInfo(api_version=api_version, version=version)
144
+
145
+
146
+ def get_local_readable_version() -> str:
147
+ """Get the readable version of the SkyPilot code loaded in current process.
148
+
149
+ For dev version, the version is formatted as: 1.0.0-dev0 (commit: 1234567)
150
+ to make it meaningful for users.
151
+ """
152
+ if sky.__version__ == DEV_VERSION:
153
+ return f'{sky.__version__} (commit: {sky.__commit__})'
154
+ else:
155
+ return sky.__version__
156
+
157
+
158
+ def parse_readable_version(version: str) -> Tuple[str, Optional[str]]:
159
+ """Parse a readable produced by get_local_readable_version.
160
+
161
+ Args:
162
+ version: The version string to parse.
163
+
164
+ Returns:
165
+ A tuple of (version, optional_commit) where:
166
+ - version: The base version string (e.g., "1.0.0-dev0")
167
+ - optional_commit: The commit hash if present, None otherwise
168
+ """
169
+ # Check if this is a dev version with commit info
170
+ # Format: "1.0.0-dev0 (commit: 1234567)"
171
+ commit_pattern = r'^(.+) \(commit: ([a-f0-9]+)\)$'
172
+ match = re.match(commit_pattern, version)
173
+
174
+ if match:
175
+ base_version = match.group(1)
176
+ commit = match.group(2)
177
+ return base_version, commit
178
+ else:
179
+ # Regular version without commit info
180
+ return version, None
181
+
182
+
183
+ def install_version_command(version: str, commit: Optional[str] = None) -> str:
184
+ if version == DEV_VERSION:
185
+ if commit is not None:
186
+ return ('pip install git+https://github.com/skypilot-org/skypilot@'
187
+ f'{commit}')
188
+ elif 'dev' in version:
189
+ return f'pip install -U "skypilot-nightly=={version}"'
190
+ return f'pip install -U "skypilot=={version}"'
191
+
192
+
193
+ def _remind_minor_version_upgrade(remote_version: str) -> None:
194
+ """Remind the user to upgrade the CLI/SDK."""
195
+ # Only print the reminder once per process.
196
+ global _reminded_for_minor_version_upgrade
197
+ if _reminded_for_minor_version_upgrade:
198
+ return
199
+ # Skip for dev versions.
200
+ if 'dev' in sky.__version__ or 'dev' in remote_version:
201
+ return
202
+
203
+ # Remove the commit info if any.
204
+ remote_base_version, _ = parse_readable_version(remote_version)
205
+
206
+ # Parse semver for both local and remote versions
207
+ try:
208
+ local = version_lib.parse(sky.__version__)
209
+ remote = version_lib.parse(remote_base_version)
210
+
211
+ # Check if local version is behind remote version, ignore patch version.
212
+ if (local.major, local.minor) < (remote.major, remote.minor):
213
+ logger.warning(
214
+ f'{colorama.Fore.YELLOW}The SkyPilot API server is running in '
215
+ f'version {remote_version}, which is newer than your client '
216
+ f'version {sky.__version__}. The compatibility for your '
217
+ f'current version might be dropped in the next server upgrade.'
218
+ f'\nConsider upgrading your client with:\n'
219
+ f'{install_version_command(remote_version)}'
220
+ f'{colorama.Style.RESET_ALL}')
221
+ _reminded_for_minor_version_upgrade = True
222
+ except version_lib.InvalidVersion:
223
+ # Skip for non-valid semver (probabely a dev version)
224
+ pass
225
+
226
+
227
+ # TODO(aylei): maybe we can use similiar approach to mark a new argument can
228
+ # only be used in the new server version.
229
+ def minimal_api_version(min_version: int) -> Callable:
230
+ """Decorator to enforce a minimum remote API version for an SDK function.
231
+
232
+ New SDK method must be decorated with this decorator to make sure it raises
233
+ an readable error when the remote server is not upgraded.
234
+
235
+ Args:
236
+ min_version: The minimum remote API version required to call the
237
+ function.
238
+
239
+ Returns:
240
+ A decorator function that checks API version before execution.
241
+
242
+ Raises:
243
+ APINotSupportedError: If the remote API version is below the minimum
244
+ required.
245
+ """
246
+
247
+ def decorator(func: Callable) -> Callable:
248
+
249
+ @functools.wraps(func)
250
+ def wrapper(*args, **kwargs):
251
+ remote_api_version = get_remote_api_version()
252
+ if remote_api_version is None:
253
+ return func(*args, **kwargs)
254
+ if remote_api_version < min_version:
255
+ with ux_utils.print_exception_no_traceback():
256
+ hint = 'Please upgrade the remote server.'
257
+ # The client runs in a released version, do better hint.
258
+ if 'dev' not in sky.__version__:
259
+ hint = (
260
+ f'Upgrade the remote server to {sky.__version__} '
261
+ 'and re-run the command.')
262
+ raise exceptions.APINotSupportedError(
263
+ f'Function {func.__name__} is introduced after the '
264
+ f'remote server version {get_remote_version()!r} is '
265
+ f'released. {hint}')
266
+ return func(*args, **kwargs)
267
+
268
+ return wrapper
269
+
270
+ return decorator
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250703
3
+ Version: 1.0.0.dev20250704
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -1,4 +1,4 @@
1
- sky/__init__.py,sha256=HYORW0WyBLZnvFY4uVWHILG1Ai9Z63rJxFMVnszizFg,6419
1
+ sky/__init__.py,sha256=8LPF74IsNl_AZzy1od36U0W_b93dBkCKW3e5LZWLLKs,6419
2
2
  sky/admin_policy.py,sha256=FMiizgvVTmD9gFA2OUaveXnuY3lbNU-fCbUYAODBZj4,9427
3
3
  sky/authentication.py,sha256=V7zGSV7bqcAKC_EGOOS0KhJ01ZFLnme0WnjLFO7zavs,25603
4
4
  sky/check.py,sha256=R0pFsTq2v-wr3NFePlX9DmDhsbvWEoFJAXsys3pUmT4,30338
@@ -6,7 +6,7 @@ sky/cli.py,sha256=VXIZryeTtJPYpPTBKymVPmuOCyh8knfWrq-qnkr6R-4,178
6
6
  sky/cloud_stores.py,sha256=Ln5GBpel-sEs7rVx7bBrMkfLwA_bctI05Rox2uoz7Lo,26388
7
7
  sky/core.py,sha256=5UbaZ5xamYTajEq4TyiT81Q_cVzqPnMQRXASSz4OcNg,56272
8
8
  sky/dag.py,sha256=5MFXlP43y9U54zxfYGhVyBiWEInoFFlt_zJ7ASJntXw,3889
9
- sky/exceptions.py,sha256=YRPgpFkBRGE9jmG2r3SWJGS9p9-RPP2TZGjfd2VblSc,19044
9
+ sky/exceptions.py,sha256=Vn7VVhyrTaMBTdVxsro325aKSMM4_KRJOghFX31xIVM,19164
10
10
  sky/execution.py,sha256=BhI4paGKpXMhWJoelHFe7LGFbCnW7hl0rIAmdIay-dk,33223
11
11
  sky/global_user_state.py,sha256=8_oKM5l5aey_IadFC6beiilfsbG10J27sqVxnHxFc7A,73040
12
12
  sky/models.py,sha256=Eor-cT4D71QTimogcnJ5ey1G1PXK-OXN-snEtE8Uu_g,3152
@@ -34,7 +34,7 @@ sky/adaptors/vast.py,sha256=tpvmHi7IkQNzbbHVkeo04kUSajoEpSzXr2XgeO_I1LU,695
34
34
  sky/adaptors/vsphere.py,sha256=zJP9SeObEoLrpgHW2VHvZE48EhgVf8GfAEIwBeaDMfM,2129
35
35
  sky/backends/__init__.py,sha256=tpa9gAygQopsiBUUuy3wVmr4E05FoPTFHIWqEo4i-u0,627
36
36
  sky/backends/backend.py,sha256=o47WUnB_h2nd_SkV0q0NTJ4vCwk23-KH5DgAm_JpKgE,7739
37
- sky/backends/backend_utils.py,sha256=HFuEwwO28H-V3ytr18rNFMr1ol9sAroG8VeXTgKi9YQ,145088
37
+ sky/backends/backend_utils.py,sha256=1FlFUQbJfwWBs8kaBP4oCH6K7frcLYTewivh3xqJG5I,145117
38
38
  sky/backends/cloud_vm_ray_backend.py,sha256=ILAOxfN4tZJolbmx7Sl1kTaSnd-sZdNTtvZKFbfzDoM,259464
39
39
  sky/backends/docker_utils.py,sha256=Hyw1YY20EyghhEbYx6O2FIMDcGkNzBzV9TM7LFynei8,8358
40
40
  sky/backends/local_docker_backend.py,sha256=r80BGJZmAH8F49v6Y_pG3_pHmW5LQEQRusLkKoYoe9Q,17047
@@ -65,7 +65,7 @@ sky/catalog/data_fetchers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
65
65
  sky/catalog/data_fetchers/analyze.py,sha256=ftnrOceREmjimFWBLwhtF2aqOnOZNl6TmYxqD6eIhHY,2069
66
66
  sky/catalog/data_fetchers/fetch_aws.py,sha256=RTkqG2LE2YxRoK4K4p_hq-vA9tsPr9UoWIiNamGyLyI,23406
67
67
  sky/catalog/data_fetchers/fetch_azure.py,sha256=7YVnoGDGGZI2TK02bj_LOoD4E5J5CFl6eqz2XlR4Vy8,12790
68
- sky/catalog/data_fetchers/fetch_cudo.py,sha256=52P48lvWN0s1ArjeLPeLemPRpxjSRcHincRle0nqdm4,3440
68
+ sky/catalog/data_fetchers/fetch_cudo.py,sha256=hmVt7yTQ50EFPhum3rstKdy9cxv2GoxkpDaSRFP7ITc,3635
69
69
  sky/catalog/data_fetchers/fetch_fluidstack.py,sha256=hsqpQi_YUI-qil3zLCEGatrR7BkWzywr4otRdHrd-4k,7350
70
70
  sky/catalog/data_fetchers/fetch_gcp.py,sha256=y3boC2NBLRErLyY12078AS7QWGx9ItrzmFcO17h_VH8,31925
71
71
  sky/catalog/data_fetchers/fetch_hyperbolic.py,sha256=VLBJXWvrKJH5QbMUiREPEMfO3x37_XsqMAmOo7bCQtc,4537
@@ -76,17 +76,17 @@ sky/catalog/data_fetchers/fetch_vsphere.py,sha256=Yf7tKzwJsQ_4f64IT1EAP108C1D3Rg
76
76
  sky/client/__init__.py,sha256=pz6xvVSd9X-gwqbsDL0E9QOojYqM0KAD0j-NCyCIF1k,38
77
77
  sky/client/common.py,sha256=E_5cjxd8fWRB7fU1yfIbiyQf-IyVhpD5KkB7Fl3cQEI,15215
78
78
  sky/client/oauth.py,sha256=sNJ_DMsSTcxluj5FeNQ2IafZJLImRFmCAZ79bXeABn4,2871
79
- sky/client/sdk.py,sha256=uVzzJpsokxAdhLaK4JyMRia1wj6PI5qYpvBSZfnFwqk,91054
79
+ sky/client/sdk.py,sha256=hZ2SLsHItKJOs-t_suVDMxIrvEixr1ZWzDehkOYycSc,91024
80
80
  sky/client/service_account_auth.py,sha256=5jXk0G6ufuW-SHCO7BEHQeTO0_2a8KfFmA63auXFRj4,1529
81
81
  sky/client/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
82
  sky/client/cli/command.py,sha256=tuK-39aOz9xresShPe4uvGAjn7OgnyxLovnycJUAzaE,217309
83
83
  sky/client/cli/deprecation_utils.py,sha256=H_d5UyF2CekEoThduAzt5cihBO8hwKYMu0-Wqfbjv5E,3370
84
84
  sky/client/cli/flags.py,sha256=6IdS_G2lB1C6r8kJMzLVREY_qV50VHiSfWlmppVrWuc,11623
85
85
  sky/clouds/__init__.py,sha256=tC9_Vi6GvVceWUi6uZvm7vXzBa0uH3CjRQ-QCYqdJMw,1624
86
- sky/clouds/aws.py,sha256=SDCYjS_4PsICbhnG9a1hf-ufOd8MBQ4ErK7ZKYjYIJM,55189
86
+ sky/clouds/aws.py,sha256=A7ouOPS4vvh4rLbwMLTyAW5aih9d151Fz7KvHfo7b9I,55192
87
87
  sky/clouds/azure.py,sha256=Tm2kl-p736MGL9z-r7HTADneRKEVg-p2Lq3yHVaLAn8,32683
88
88
  sky/clouds/cloud.py,sha256=R4bdXwIWx66GkBeFFRdapZOQTTB7pSFonCRqmVT25_s,38995
89
- sky/clouds/cudo.py,sha256=DvKod2xbCqd7wCXzwC3ePtz9GRLZhCiBl09QJVLWwYg,13643
89
+ sky/clouds/cudo.py,sha256=L657d8oD9XP8upQjWmG8h-MHmhS0C81FEhcwqdbZ6so,13648
90
90
  sky/clouds/do.py,sha256=x1oxaoGL3ioFJFwt3BA1N4seGyetPpV23ENemQLDe2I,11999
91
91
  sky/clouds/fluidstack.py,sha256=FYjTOYXulqUx_nH7iL3CpHTAxMMyFymKIW35LHtuvaM,13054
92
92
  sky/clouds/gcp.py,sha256=lXKymalvUeqS7XcBxZXXFVd1Z6r8TXtMTte7npTqEf8,68326
@@ -108,19 +108,19 @@ sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4
108
108
  sky/clouds/utils/gcp_utils.py,sha256=ZNupZEBsZS9ZvvzB7vsc6f5y1JUBoRcKE0erso_Y93k,7659
109
109
  sky/clouds/utils/oci_utils.py,sha256=yv_Y9oM5WNCnOofu44aKyOPTZZdKfpFLCx3ewZ2VBFY,7994
110
110
  sky/clouds/utils/scp_utils.py,sha256=VGuccVO5uFGr8-yolWSoYrgr11z6cIeDBGcqkBzAyOs,18409
111
- sky/dashboard/out/404.html,sha256=3Z9o8-G_0ariIM0EjvOMuFok7w5FIL3wsT3y7FxrQKc,1423
112
- sky/dashboard/out/clusters.html,sha256=nGWP5odfKHxeIVIbwA1kzbT350a2NOVa9NpMsPX-xG4,1418
113
- sky/dashboard/out/config.html,sha256=SJfQDV-NZXrfZlFLj6f_OCIFepaiJ5Z6rKSa9WSC-Cg,1414
111
+ sky/dashboard/out/404.html,sha256=yNzQQsN9o6oyq0e-av29_xLDT1r1OTML7o9TWGuS0m0,1423
112
+ sky/dashboard/out/clusters.html,sha256=0rJ4h7PP3KGRHOrmAGPP7lvXuJVkLpIkiHRGxQZFY_4,1418
113
+ sky/dashboard/out/config.html,sha256=rKr2CZvuJm1U2NFfNiEvNCka0yJB2d_V_JHcTVA2Iik,1414
114
114
  sky/dashboard/out/favicon.ico,sha256=XilUZZglAl_1zRsg85QsbQgmQAzGPQjcUIJ-A3AzYn8,93590
115
- sky/dashboard/out/index.html,sha256=adPxHrDh5nHcfgvaahhjYEx3AzjAXlxvbZfZNRQPdDg,1407
116
- sky/dashboard/out/infra.html,sha256=c5BiYNHeKaGqAfl_FFE5MpVaUAIpGap3Dfxc78vH3Tg,1412
117
- sky/dashboard/out/jobs.html,sha256=MtDz29kuHJqiUfAMGa-xPjf8I9v7UGbTJbGdNXqjoDc,1410
115
+ sky/dashboard/out/index.html,sha256=Euf9Dw7IjOxchHvRWdFygR8SkMsn0QpcVeC4iFG2kiI,1407
116
+ sky/dashboard/out/infra.html,sha256=Ppikha45vtEboyLPM2frMRSlXN5JUQ9VZp_yiGYP1MQ,1412
117
+ sky/dashboard/out/jobs.html,sha256=aziBpqaL9ghltymq6J8WslEaFg78f90tmdaAMLd5GL0,1410
118
118
  sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
119
- sky/dashboard/out/users.html,sha256=LQfZnMjkwRnp25ipelg-NIAxRTJW8OjjNuUDOBbW0gc,1412
120
- sky/dashboard/out/volumes.html,sha256=kcLh9GM3mSxXfjaUbQev6BCdS2VNZr7XLE85SMT4Y0o,1416
121
- sky/dashboard/out/workspaces.html,sha256=nrQcaWz2Uq7nO6sv9d-G5ISQSmEXcApFl6NAmdUoghM,1422
122
- sky/dashboard/out/_next/static/A-fbCEgJE_q2cV8biIOIr/_buildManifest.js,sha256=SMKLljkiS_9UQoF0v1MyY_ziwbXl8KnBBlwCuTRc3V8,2235
123
- sky/dashboard/out/_next/static/A-fbCEgJE_q2cV8biIOIr/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
119
+ sky/dashboard/out/users.html,sha256=QF18NuylmTUhFshF7ArVA6vE2pLFymlclX0D6CHgJJw,1412
120
+ sky/dashboard/out/volumes.html,sha256=OOjj7wqNfoNem-U7_NzW-pmrZ5qj_71lx0bmG6z_f68,1416
121
+ sky/dashboard/out/workspaces.html,sha256=VRpJVIhkZw5z8iLNZO9sJP3QbXWDwMhLDonxy5L4w3Q,1422
122
+ sky/dashboard/out/_next/static/6TieQqyqsJiaJC33q0FfI/_buildManifest.js,sha256=SMKLljkiS_9UQoF0v1MyY_ziwbXl8KnBBlwCuTRc3V8,2235
123
+ sky/dashboard/out/_next/static/6TieQqyqsJiaJC33q0FfI/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
124
124
  sky/dashboard/out/_next/static/chunks/1043-1b39779691bb4030.js,sha256=k8-hHIedPKi22M0wZwGOdWZ_S-H0jVnepFwm7i9_zg4,18192
125
125
  sky/dashboard/out/_next/static/chunks/1141-726e5a3f00b67185.js,sha256=lEAVPk_18NZpZuPrGx1Xy9VWqE_5n3JuqWbIPS1_ZMw,17823
126
126
  sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js,sha256=VJ6y-Z6Eg2T93hQIRfWAbjAkQ7nQhglmIaVbEpKSILY,38451
@@ -174,13 +174,13 @@ sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-c4d5cfac7fbc0668.js,sha25
174
174
  sky/dashboard/out/_next/static/chunks/pages/workspace/new-5629d4e551dba1ee.js,sha256=K9tqKHcB2kiSHTAddLaM2oL1PzmqZNTdLDOuNzCaJNM,765
175
175
  sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-7c0187f43757a548.js,sha256=FsoenC6VRkPLE29KkLd4nlSq2qociH4zFexYMxgetOM,1530
176
176
  sky/dashboard/out/_next/static/css/0da6afe66176678a.css,sha256=I8b7x4ULdoXHkgk0BsNa0D6k2UYoA2mEhq7H1G_tVQE,44869
177
- sky/dashboard/out/clusters/[cluster].html,sha256=mY0B5gBqQT3iNb0bN_EgEieJfSCgRn8GUYk7bl0C33g,2847
178
- sky/dashboard/out/clusters/[cluster]/[job].html,sha256=AhJQHw0K7mci6JCElhojEl48QV5BXMjAfj4A4XbFX0c,2160
179
- sky/dashboard/out/infra/[context].html,sha256=mSeFwt9GELEjyn-_E2iieEb-buu1VsyW0KRKA7qtds0,1436
180
- sky/dashboard/out/jobs/[job].html,sha256=xAah-qb6eem_iCkDpGaZNeJ3S2z6WRejS3_U-sycrUQ,2304
177
+ sky/dashboard/out/clusters/[cluster].html,sha256=lxJjYd3ccjhdhqCoJbdqxqQJb-J9nW7hOhGHg1Cad0w,2847
178
+ sky/dashboard/out/clusters/[cluster]/[job].html,sha256=3dpg96pStIpsO21nEAh0mQvjCrHmrsOmoq7u1xXf1Vo,2160
179
+ sky/dashboard/out/infra/[context].html,sha256=zB4Y-_FgAUCUZ-_TUvxXxNqdXjDbvJmWNZT9F-OlaWI,1436
180
+ sky/dashboard/out/jobs/[job].html,sha256=ZBj9RP-fE-lNYtoqg2LK4BJua_0zlOhq0Fw-WmqFFqM,2304
181
181
  sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
182
- sky/dashboard/out/workspace/new.html,sha256=yS_2o5DPO-pTtHFCxQ93lEjrjrzEy-NyQOTqErOlCF8,1428
183
- sky/dashboard/out/workspaces/[name].html,sha256=T9-LqiM6c38fzGRacsi92uruk71NiDw2F8bOn1Y5glo,2845
182
+ sky/dashboard/out/workspace/new.html,sha256=XSCLSV2bZqtbyD-eqS7mRyLOhLBpucznrYXxdx2tEyI,1428
183
+ sky/dashboard/out/workspaces/[name].html,sha256=M0x3-_wm2L2VSRSY-0SzCHkSpMjZLbuTUw1Ln3d1kK0,2845
184
184
  sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
185
185
  sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
186
186
  sky/data/data_utils.py,sha256=CNYPM963qby5ddW0DZNbhiWXkqgB9MHh_jrC5DoBctM,33437
@@ -195,9 +195,9 @@ sky/jobs/scheduler.py,sha256=b3RAjEzCXyoikh_BcmmGjoZ9ZeXr-tBnXoLFctt95ko,14375
195
195
  sky/jobs/state.py,sha256=HHERdEhuJ3QHMu5dvY2mHVJgtHzIkAI6F1Cv2Iz3Hvw,65516
196
196
  sky/jobs/utils.py,sha256=gfW4smCWWMmE4OwIbEqI5j5gVh5Gvfs6paqKQR2Tia8,70920
197
197
  sky/jobs/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
198
- sky/jobs/client/sdk.py,sha256=0ZDm5h1kqPYXvsgiXBhbsXj9jfKW7GHH_VtQbSQjmCw,11068
198
+ sky/jobs/client/sdk.py,sha256=Nw7bP8pJ-uLIi14kMekEtmzqPmdIiN-CbhoNCJlHA7s,11340
199
199
  sky/jobs/server/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
200
- sky/jobs/server/core.py,sha256=fLj6k6m2SkU6UJT24rhtoUrmASPrnMay_Rkm5KqMvs4,31720
200
+ sky/jobs/server/core.py,sha256=U9vkOAcg381yh_te-ZTXxDgQ1CrxAVzOx9dUkzXuELo,31992
201
201
  sky/jobs/server/server.py,sha256=ae8JAs-2ipWqL_GsA3x8T2mY-OJLc3ioWg_CfRzCUIY,4011
202
202
  sky/logs/__init__.py,sha256=0ybWMfXcpAzh8dtDnJwpfovNIk0zJRJvzdISqFdKmdE,549
203
203
  sky/logs/agent.py,sha256=tv0C40_FauZpvU93Ro_mC23LnaXWhSTjqch1JQMXiqw,2771
@@ -223,8 +223,8 @@ sky/provision/azure/instance.py,sha256=BQ4stZl_m76iULPY_TFEN4WDwNPWI1jmw-LswxxqX
223
223
  sky/provision/cudo/__init__.py,sha256=KAEl26MVPsk7IoP9Gg-MOJJRIV6-X9B0fbyHdyJWdLo,741
224
224
  sky/provision/cudo/config.py,sha256=RYOVkV0MoUqVBJRZiKhBZhjFygeyFs7eUdVMdPg1vds,327
225
225
  sky/provision/cudo/cudo_machine_type.py,sha256=Bo2z4DyIvCFe98kYD8itTADx6MG7tn8ny8Jbh6QYbGg,681
226
- sky/provision/cudo/cudo_utils.py,sha256=fIwRpCSOXOyIcCLh-kGMdfl-ACTXdTwyHf6o27rMA6Y,1730
227
- sky/provision/cudo/cudo_wrapper.py,sha256=WgtA1-ZMytR7tG7UFOH93hSvSAqDWymwWxQREspbZAQ,4678
226
+ sky/provision/cudo/cudo_utils.py,sha256=GFwSEf_LXN7Dh37m5UOLs6wXEJqF8kGI2-ys35L4rl8,1883
227
+ sky/provision/cudo/cudo_wrapper.py,sha256=JG9s8_qh8IR8E-D_x4Mokyv7ZJzSky38sbcD3pnyzss,4919
228
228
  sky/provision/cudo/instance.py,sha256=C2tl48PtQWz0irDWiSNoqWu8YcrDqQrucau0KGUFFxg,8828
229
229
  sky/provision/do/__init__.py,sha256=VAhSO9F9FDAjvEuCDlRPueB-TTA3XHR61vVXyUe85z0,518
230
230
  sky/provision/do/config.py,sha256=WWFz6kZLKrUHoJoKRzHGY8ck_ieQiBrMWDb5JP6rWUk,387
@@ -321,24 +321,25 @@ sky/serve/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
321
321
  sky/serve/server/core.py,sha256=zKvDnq6W9CftH5ljmNMdTDGsLO3mzbFgrMBMCSua4dM,41662
322
322
  sky/serve/server/server.py,sha256=A9K37a0nQgZeN3eKWv62Oh2C5TSAReTZ9pHmztqlI-c,4396
323
323
  sky/server/__init__.py,sha256=MPPBqFzXz6Jv5QSk6td_IcvnfXfNErDZVcizu4MLRow,27
324
- sky/server/common.py,sha256=prLb_p0wuHwTRNhF0zAUzxeWhhpZNvbET3t1N7KYUsY,36670
324
+ sky/server/common.py,sha256=u7hV5oGdCj5GfCxpNmLd6yl0B1mlh11FMFIR5ZoW5pA,34492
325
325
  sky/server/config.py,sha256=XWf5Kw4am6vMO5wcyWevbQAFH-dmKb7AMEgDzD083-M,8538
326
- sky/server/constants.py,sha256=15r9CGX4yo62BeRLSfyrVaKd5fqeu_8GBS_JqyeXSfk,1431
326
+ sky/server/constants.py,sha256=v6RP8ZEwCNsxO2s2IukgOcEldZO5bvcQaxmOTA0Cf0g,2321
327
327
  sky/server/metrics.py,sha256=aVRaSwpBVXE9dXIVd9bNsSigKM4bkqNq0eTpP0Noyo8,3657
328
- sky/server/rest.py,sha256=3xOQXsQ_r9XBcUOhQbf-Wk0UXx0XrAmzQ6JSqLr6nJ0,5430
329
- sky/server/server.py,sha256=KXv-Q3tAJ0flFoKYG0xjpcJTqALn7iMvCni5883f95c,71254
328
+ sky/server/rest.py,sha256=elMpi-cS301OqTwmFZb7fWYXr1vdJ28YT1zIDH1IpBk,5968
329
+ sky/server/server.py,sha256=Zv9WgfGfg9dnGQaEfA5mxsua9x3vp067TvCiCxHDIKA,72833
330
330
  sky/server/state.py,sha256=YbVOMJ1JipQQv17gLIGyiGN7MKfnP83qlUa5MB1z0Yk,747
331
331
  sky/server/stream_utils.py,sha256=RS4RuMxQqTGqp3uxzZVtmFWzos4d49P7hMX_VklzEVU,9189
332
332
  sky/server/uvicorn.py,sha256=3mdSUbc8zHRYAbZZLkfPB6U9VXD_t2jDM1BMjpTx1Mo,9014
333
+ sky/server/versions.py,sha256=3atZzUa7y1XeKNcrfVxKWAo_5ZyCOnbY7DKpIqed7Do,10011
333
334
  sky/server/html/log.html,sha256=TSGZktua9Ysl_ysg3w60rjxAxhH61AJnsYDHdtqrjmI,6929
334
335
  sky/server/html/token_page.html,sha256=eUndS5u1foL9vaWGPRTLMt7lCzD1g0wYJ2v_EeeFzlc,7046
335
336
  sky/server/requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
336
337
  sky/server/requests/event_loop.py,sha256=OhpPbuce65bbjpGRlcJa78AVnYSm08SzFKt70ypCUuQ,1211
337
338
  sky/server/requests/executor.py,sha256=v_ae2H9GGMiwxbVT9h0J2fUOSjqIs3F9lKbMtrzb1-k,26476
338
- sky/server/requests/payloads.py,sha256=12UdUnAprNc8DmhbeLjL-HhAxXPGTsk_Qzd3iDzAdBY,21498
339
+ sky/server/requests/payloads.py,sha256=P4Qv8fWQD6Xz7hP-dMvsA63SpPbWjYespgO5-ch2wik,23334
339
340
  sky/server/requests/preconditions.py,sha256=uUQjzFFHf7O5-WvBypMzqViGmd1CXksbqrrDPmY_s_Y,7178
340
341
  sky/server/requests/process.py,sha256=I0ToOcF_cMJi5TfZMJOn9rDmJYewQOV07Pnetzqj2IU,10805
341
- sky/server/requests/requests.py,sha256=bz2TTgynYz1ip93SBf4_vFLVHc-WtuNpQ1Tnd3gQHZs,25625
342
+ sky/server/requests/requests.py,sha256=AT4nJKCa2I13rVhZq929hMtZF5-So7w-gp9E_Ld60Xk,25193
342
343
  sky/server/requests/queues/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
343
344
  sky/server/requests/queues/local_queue.py,sha256=X6VkBiUmgd_kfqIK1hCtMWG1b8GiZbY70TBiBR6c6GY,416
344
345
  sky/server/requests/queues/mp_queue.py,sha256=jDqP4Jd28U3ibSFyMR1DF9I2OWZrPZqFJrG5S6RFpyw,3403
@@ -478,9 +479,9 @@ sky/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
478
479
  sky/workspaces/core.py,sha256=MkQoVqWN67tf4VRq284U9vgAw4lwb_cpUfwHQT4V9Ow,16598
479
480
  sky/workspaces/server.py,sha256=Box45DS54xXGHy7I3tGKGy-JP0a8G_z6IhfvGlEXtsA,3439
480
481
  sky/workspaces/utils.py,sha256=IIAiFoS6sdb2t0X5YoX9AietpTanZUQNTK8cePun-sY,2143
481
- skypilot_nightly-1.0.0.dev20250703.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
482
- skypilot_nightly-1.0.0.dev20250703.dist-info/METADATA,sha256=cdLrpjGYff1T2vXfn3iDEoODJiWUgdSWHVOXRauR7OM,18908
483
- skypilot_nightly-1.0.0.dev20250703.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
484
- skypilot_nightly-1.0.0.dev20250703.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
485
- skypilot_nightly-1.0.0.dev20250703.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
486
- skypilot_nightly-1.0.0.dev20250703.dist-info/RECORD,,
482
+ skypilot_nightly-1.0.0.dev20250704.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
483
+ skypilot_nightly-1.0.0.dev20250704.dist-info/METADATA,sha256=IhXJKqXPO1QKORMRMFI0hQidarSR6N7yvDbv43VHvFI,18908
484
+ skypilot_nightly-1.0.0.dev20250704.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
485
+ skypilot_nightly-1.0.0.dev20250704.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
486
+ skypilot_nightly-1.0.0.dev20250704.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
487
+ skypilot_nightly-1.0.0.dev20250704.dist-info/RECORD,,