skypilot-nightly 1.0.0.dev20250702__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.
- sky/__init__.py +2 -2
- sky/backends/backend_utils.py +24 -24
- sky/catalog/data_fetchers/fetch_cudo.py +37 -37
- sky/client/sdk.py +4 -6
- sky/clouds/aws.py +1 -1
- sky/clouds/cudo.py +1 -1
- sky/dashboard/out/404.html +1 -1
- sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- sky/dashboard/out/clusters/[cluster].html +1 -1
- sky/dashboard/out/clusters.html +1 -1
- sky/dashboard/out/config.html +1 -1
- sky/dashboard/out/index.html +1 -1
- sky/dashboard/out/infra/[context].html +1 -1
- sky/dashboard/out/infra.html +1 -1
- sky/dashboard/out/jobs/[job].html +1 -1
- sky/dashboard/out/jobs.html +1 -1
- sky/dashboard/out/users.html +1 -1
- sky/dashboard/out/volumes.html +1 -1
- sky/dashboard/out/workspace/new.html +1 -1
- sky/dashboard/out/workspaces/[name].html +1 -1
- sky/dashboard/out/workspaces.html +1 -1
- sky/exceptions.py +5 -0
- sky/jobs/client/sdk.py +3 -1
- sky/jobs/server/core.py +16 -11
- sky/metrics/__init__.py +0 -0
- sky/provision/cudo/cudo_utils.py +14 -8
- sky/provision/cudo/cudo_wrapper.py +71 -70
- sky/server/common.py +59 -94
- sky/server/constants.py +25 -4
- sky/server/requests/payloads.py +55 -10
- sky/server/requests/requests.py +6 -28
- sky/server/rest.py +15 -4
- sky/server/server.py +51 -7
- sky/server/versions.py +270 -0
- sky/setup_files/MANIFEST.in +0 -1
- {skypilot_nightly-1.0.0.dev20250702.dist-info → skypilot_nightly-1.0.0.dev20250704.dist-info}/METADATA +1 -1
- {skypilot_nightly-1.0.0.dev20250702.dist-info → skypilot_nightly-1.0.0.dev20250704.dist-info}/RECORD +43 -41
- /sky/dashboard/out/_next/static/{N5IdFnjR1RaPGBAVYeTIr → 6TieQqyqsJiaJC33q0FfI}/_buildManifest.js +0 -0
- /sky/dashboard/out/_next/static/{N5IdFnjR1RaPGBAVYeTIr → 6TieQqyqsJiaJC33q0FfI}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250702.dist-info → skypilot_nightly-1.0.0.dev20250704.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20250702.dist-info → skypilot_nightly-1.0.0.dev20250704.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250702.dist-info → skypilot_nightly-1.0.0.dev20250704.dist-info}/licenses/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250702.dist-info → skypilot_nightly-1.0.0.dev20250704.dist-info}/top_level.txt +0 -0
sky/server/rest.py
CHANGED
@@ -12,6 +12,8 @@ import colorama
|
|
12
12
|
from sky import exceptions
|
13
13
|
from sky import sky_logging
|
14
14
|
from sky.adaptors import common as adaptors_common
|
15
|
+
from sky.server import constants
|
16
|
+
from sky.server import versions
|
15
17
|
from sky.utils import common_utils
|
16
18
|
from sky.utils import rich_utils
|
17
19
|
from sky.utils import ux_utils
|
@@ -28,6 +30,11 @@ F = TypeVar('F', bound=Callable[..., Any])
|
|
28
30
|
|
29
31
|
_RETRY_CONTEXT = contextvars.ContextVar('retry_context', default=None)
|
30
32
|
|
33
|
+
_session = requests.Session()
|
34
|
+
_session.headers[constants.API_VERSION_HEADER] = str(constants.API_VERSION)
|
35
|
+
_session.headers[constants.VERSION_HEADER] = (
|
36
|
+
versions.get_local_readable_version())
|
37
|
+
|
31
38
|
|
32
39
|
class RetryContext:
|
33
40
|
|
@@ -132,13 +139,17 @@ def handle_server_unavailable(response: 'requests.Response') -> None:
|
|
132
139
|
def request(method, url, **kwargs) -> 'requests.Response':
|
133
140
|
"""Send a request to the API server, retry on server temporarily
|
134
141
|
unavailable."""
|
135
|
-
|
136
|
-
handle_server_unavailable(response)
|
137
|
-
return response
|
142
|
+
return request_without_retry(method, url, **kwargs)
|
138
143
|
|
139
144
|
|
140
145
|
def request_without_retry(method, url, **kwargs) -> 'requests.Response':
|
141
146
|
"""Send a request to the API server without retry."""
|
142
|
-
response =
|
147
|
+
response = _session.request(method, url, **kwargs)
|
143
148
|
handle_server_unavailable(response)
|
149
|
+
remote_api_version = response.headers.get(constants.API_VERSION_HEADER)
|
150
|
+
remote_version = response.headers.get(constants.VERSION_HEADER)
|
151
|
+
if remote_api_version is not None:
|
152
|
+
versions.set_remote_api_version(int(remote_api_version))
|
153
|
+
if remote_version is not None:
|
154
|
+
versions.set_remote_version(remote_version)
|
144
155
|
return response
|
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
|
@@ -14,6 +13,7 @@ import os
|
|
14
13
|
import pathlib
|
15
14
|
import posixpath
|
16
15
|
import re
|
16
|
+
import resource
|
17
17
|
import shutil
|
18
18
|
import sys
|
19
19
|
import threading
|
@@ -48,6 +48,7 @@ from sky.server import constants as server_constants
|
|
48
48
|
from sky.server import metrics
|
49
49
|
from sky.server import state
|
50
50
|
from sky.server import stream_utils
|
51
|
+
from sky.server import versions
|
51
52
|
from sky.server.requests import executor
|
52
53
|
from sky.server.requests import payloads
|
53
54
|
from sky.server.requests import preconditions
|
@@ -558,6 +559,35 @@ class GracefulShutdownMiddleware(starlette.middleware.base.BaseHTTPMiddleware):
|
|
558
559
|
return await call_next(request)
|
559
560
|
|
560
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
|
+
|
561
591
|
app = fastapi.FastAPI(prefix='/api/v1', debug=True, lifespan=lifespan)
|
562
592
|
# Middleware wraps in the order defined here. E.g., given
|
563
593
|
# app.add_middleware(Middleware1)
|
@@ -570,6 +600,8 @@ app = fastapi.FastAPI(prefix='/api/v1', debug=True, lifespan=lifespan)
|
|
570
600
|
# Use environment variable to make the metrics middleware optional.
|
571
601
|
if os.environ.get(constants.ENV_VAR_SERVER_METRICS_ENABLED):
|
572
602
|
app.add_middleware(metrics.PrometheusMiddleware)
|
603
|
+
app.add_middleware(APIVersionMiddleware)
|
604
|
+
app.add_middleware(RBACMiddleware)
|
573
605
|
app.add_middleware(InternalDashboardPrefixMiddleware)
|
574
606
|
app.add_middleware(GracefulShutdownMiddleware)
|
575
607
|
app.add_middleware(PathCleanMiddleware)
|
@@ -614,6 +646,16 @@ app.include_router(ssh_node_pools_rest.router,
|
|
614
646
|
prefix='/ssh_node_pools',
|
615
647
|
tags=['ssh_node_pools'])
|
616
648
|
|
649
|
+
# Increase the limit of files we can open to our hard limit. This fixes bugs
|
650
|
+
# where we can not aquire file locks or open enough logs and the API server
|
651
|
+
# crashes. On Mac, the hard limit is 9,223,372,036,854,775,807.
|
652
|
+
# TODO(luca) figure out what to do if we need to open more than 2^63 files.
|
653
|
+
try:
|
654
|
+
soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
|
655
|
+
resource.setrlimit(resource.RLIMIT_NOFILE, (hard, hard))
|
656
|
+
except Exception: # pylint: disable=broad-except
|
657
|
+
pass # no issue, we will warn the user later if its too low
|
658
|
+
|
617
659
|
|
618
660
|
@app.get('/token')
|
619
661
|
async def token(request: fastapi.Request,
|
@@ -1324,7 +1366,7 @@ async def local_down(request: fastapi.Request) -> None:
|
|
1324
1366
|
|
1325
1367
|
# === API server related APIs ===
|
1326
1368
|
@app.get('/api/get')
|
1327
|
-
async def api_get(request_id: str) ->
|
1369
|
+
async def api_get(request_id: str) -> payloads.RequestPayload:
|
1328
1370
|
"""Gets a request with a given request ID prefix."""
|
1329
1371
|
while True:
|
1330
1372
|
request_task = requests_lib.get_request(request_id)
|
@@ -1339,9 +1381,8 @@ async def api_get(request_id: str) -> requests_lib.RequestPayload:
|
|
1339
1381
|
detail=f'Request {request_id!r} should be retried')
|
1340
1382
|
request_error = request_task.get_error()
|
1341
1383
|
if request_error is not None:
|
1342
|
-
raise fastapi.HTTPException(
|
1343
|
-
|
1344
|
-
request_task.encode()))
|
1384
|
+
raise fastapi.HTTPException(
|
1385
|
+
status_code=500, detail=request_task.encode().model_dump())
|
1345
1386
|
return request_task.encode()
|
1346
1387
|
# yield control to allow other coroutines to run, sleep shortly
|
1347
1388
|
# to avoid storming the DB and CPU in the meantime
|
@@ -1479,7 +1520,7 @@ async def api_status(
|
|
1479
1520
|
None, description='Request IDs to get status for.'),
|
1480
1521
|
all_status: bool = fastapi.Query(
|
1481
1522
|
False, description='Get finished requests as well.'),
|
1482
|
-
) -> List[
|
1523
|
+
) -> List[payloads.RequestPayload]:
|
1483
1524
|
"""Gets the list of requests."""
|
1484
1525
|
if request_ids is None:
|
1485
1526
|
statuses = None
|
@@ -1519,7 +1560,10 @@ async def health(request: fastapi.Request) -> Dict[str, Any]:
|
|
1519
1560
|
logger.info(f'Health endpoint: request.state.auth_user = {user}')
|
1520
1561
|
return {
|
1521
1562
|
'status': common.ApiServerStatus.HEALTHY.value,
|
1522
|
-
|
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),
|
1523
1567
|
'version': sky.__version__,
|
1524
1568
|
'version_on_disk': common.get_skypilot_version_on_disk(),
|
1525
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
|
sky/setup_files/MANIFEST.in
CHANGED
{skypilot_nightly-1.0.0.dev20250702.dist-info → skypilot_nightly-1.0.0.dev20250704.dist-info}/RECORD
RENAMED
@@ -1,4 +1,4 @@
|
|
1
|
-
sky/__init__.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
112
|
-
sky/dashboard/out/clusters.html,sha256=
|
113
|
-
sky/dashboard/out/config.html,sha256=
|
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=
|
116
|
-
sky/dashboard/out/infra.html,sha256=
|
117
|
-
sky/dashboard/out/jobs.html,sha256=
|
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=
|
120
|
-
sky/dashboard/out/volumes.html,sha256=
|
121
|
-
sky/dashboard/out/workspaces.html,sha256=
|
122
|
-
sky/dashboard/out/_next/static/
|
123
|
-
sky/dashboard/out/_next/static/
|
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=
|
178
|
-
sky/dashboard/out/clusters/[cluster]/[job].html,sha256=
|
179
|
-
sky/dashboard/out/infra/[context].html,sha256=
|
180
|
-
sky/dashboard/out/jobs/[job].html,sha256=
|
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=
|
183
|
-
sky/dashboard/out/workspaces/[name].html,sha256=
|
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,13 +195,14 @@ 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=
|
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=
|
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
|
204
204
|
sky/logs/gcp.py,sha256=eKVEcHO3FJRg_YTcE9omE8uAIF6AdBWWpkEPqWFAqXg,3857
|
205
|
+
sky/metrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
205
206
|
sky/metrics/utils.py,sha256=Cww3yNG4HyW4DEdLOFUayFgMZ16t2JFSvvhuTTV7Vio,7654
|
206
207
|
sky/provision/__init__.py,sha256=bADZkpZdy7QxIc7WDkh-X5cd3Uv64wy2K7IB9Xpw348,7554
|
207
208
|
sky/provision/common.py,sha256=LdjM9SL9NDtsARom12tVv_WoUNL3PTlU5RoLfeWGGgM,10807
|
@@ -222,8 +223,8 @@ sky/provision/azure/instance.py,sha256=BQ4stZl_m76iULPY_TFEN4WDwNPWI1jmw-LswxxqX
|
|
222
223
|
sky/provision/cudo/__init__.py,sha256=KAEl26MVPsk7IoP9Gg-MOJJRIV6-X9B0fbyHdyJWdLo,741
|
223
224
|
sky/provision/cudo/config.py,sha256=RYOVkV0MoUqVBJRZiKhBZhjFygeyFs7eUdVMdPg1vds,327
|
224
225
|
sky/provision/cudo/cudo_machine_type.py,sha256=Bo2z4DyIvCFe98kYD8itTADx6MG7tn8ny8Jbh6QYbGg,681
|
225
|
-
sky/provision/cudo/cudo_utils.py,sha256=
|
226
|
-
sky/provision/cudo/cudo_wrapper.py,sha256=
|
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
|
227
228
|
sky/provision/cudo/instance.py,sha256=C2tl48PtQWz0irDWiSNoqWu8YcrDqQrucau0KGUFFxg,8828
|
228
229
|
sky/provision/do/__init__.py,sha256=VAhSO9F9FDAjvEuCDlRPueB-TTA3XHR61vVXyUe85z0,518
|
229
230
|
sky/provision/do/config.py,sha256=WWFz6kZLKrUHoJoKRzHGY8ck_ieQiBrMWDb5JP6rWUk,387
|
@@ -320,31 +321,32 @@ sky/serve/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
|
|
320
321
|
sky/serve/server/core.py,sha256=zKvDnq6W9CftH5ljmNMdTDGsLO3mzbFgrMBMCSua4dM,41662
|
321
322
|
sky/serve/server/server.py,sha256=A9K37a0nQgZeN3eKWv62Oh2C5TSAReTZ9pHmztqlI-c,4396
|
322
323
|
sky/server/__init__.py,sha256=MPPBqFzXz6Jv5QSk6td_IcvnfXfNErDZVcizu4MLRow,27
|
323
|
-
sky/server/common.py,sha256=
|
324
|
+
sky/server/common.py,sha256=u7hV5oGdCj5GfCxpNmLd6yl0B1mlh11FMFIR5ZoW5pA,34492
|
324
325
|
sky/server/config.py,sha256=XWf5Kw4am6vMO5wcyWevbQAFH-dmKb7AMEgDzD083-M,8538
|
325
|
-
sky/server/constants.py,sha256=
|
326
|
+
sky/server/constants.py,sha256=v6RP8ZEwCNsxO2s2IukgOcEldZO5bvcQaxmOTA0Cf0g,2321
|
326
327
|
sky/server/metrics.py,sha256=aVRaSwpBVXE9dXIVd9bNsSigKM4bkqNq0eTpP0Noyo8,3657
|
327
|
-
sky/server/rest.py,sha256=
|
328
|
-
sky/server/server.py,sha256=
|
328
|
+
sky/server/rest.py,sha256=elMpi-cS301OqTwmFZb7fWYXr1vdJ28YT1zIDH1IpBk,5968
|
329
|
+
sky/server/server.py,sha256=Zv9WgfGfg9dnGQaEfA5mxsua9x3vp067TvCiCxHDIKA,72833
|
329
330
|
sky/server/state.py,sha256=YbVOMJ1JipQQv17gLIGyiGN7MKfnP83qlUa5MB1z0Yk,747
|
330
331
|
sky/server/stream_utils.py,sha256=RS4RuMxQqTGqp3uxzZVtmFWzos4d49P7hMX_VklzEVU,9189
|
331
332
|
sky/server/uvicorn.py,sha256=3mdSUbc8zHRYAbZZLkfPB6U9VXD_t2jDM1BMjpTx1Mo,9014
|
333
|
+
sky/server/versions.py,sha256=3atZzUa7y1XeKNcrfVxKWAo_5ZyCOnbY7DKpIqed7Do,10011
|
332
334
|
sky/server/html/log.html,sha256=TSGZktua9Ysl_ysg3w60rjxAxhH61AJnsYDHdtqrjmI,6929
|
333
335
|
sky/server/html/token_page.html,sha256=eUndS5u1foL9vaWGPRTLMt7lCzD1g0wYJ2v_EeeFzlc,7046
|
334
336
|
sky/server/requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
335
337
|
sky/server/requests/event_loop.py,sha256=OhpPbuce65bbjpGRlcJa78AVnYSm08SzFKt70ypCUuQ,1211
|
336
338
|
sky/server/requests/executor.py,sha256=v_ae2H9GGMiwxbVT9h0J2fUOSjqIs3F9lKbMtrzb1-k,26476
|
337
|
-
sky/server/requests/payloads.py,sha256=
|
339
|
+
sky/server/requests/payloads.py,sha256=P4Qv8fWQD6Xz7hP-dMvsA63SpPbWjYespgO5-ch2wik,23334
|
338
340
|
sky/server/requests/preconditions.py,sha256=uUQjzFFHf7O5-WvBypMzqViGmd1CXksbqrrDPmY_s_Y,7178
|
339
341
|
sky/server/requests/process.py,sha256=I0ToOcF_cMJi5TfZMJOn9rDmJYewQOV07Pnetzqj2IU,10805
|
340
|
-
sky/server/requests/requests.py,sha256=
|
342
|
+
sky/server/requests/requests.py,sha256=AT4nJKCa2I13rVhZq929hMtZF5-So7w-gp9E_Ld60Xk,25193
|
341
343
|
sky/server/requests/queues/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
342
344
|
sky/server/requests/queues/local_queue.py,sha256=X6VkBiUmgd_kfqIK1hCtMWG1b8GiZbY70TBiBR6c6GY,416
|
343
345
|
sky/server/requests/queues/mp_queue.py,sha256=jDqP4Jd28U3ibSFyMR1DF9I2OWZrPZqFJrG5S6RFpyw,3403
|
344
346
|
sky/server/requests/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
345
347
|
sky/server/requests/serializers/decoders.py,sha256=qphN79pRAaaitCbcsZIrslphgZn1iYndl6JnmergEe4,6361
|
346
348
|
sky/server/requests/serializers/encoders.py,sha256=4bQV5yTg8RTPT_HkRyQpjaBY_uUvBJ4NH189W0-6Pi0,5578
|
347
|
-
sky/setup_files/MANIFEST.in,sha256=
|
349
|
+
sky/setup_files/MANIFEST.in,sha256=BzWGsYZz9fO40HN1Uxm1Ca4pn1FkKn3lcoY1B9-YRiA,644
|
348
350
|
sky/setup_files/dependencies.py,sha256=OY4-KzEp2MObl4vTUUFD_UVXXb4IYFl51_O4iZny8Jg,7127
|
349
351
|
sky/setup_files/setup.py,sha256=GTXvAi65S4_TSLhQ1GzkmaWf_yzciHiaxMbZumcTtKU,7522
|
350
352
|
sky/skylet/LICENSE,sha256=BnFrJSvUFpMUoH5mOpWnEvaC5R6Uux8W6WXgrte8iYg,12381
|
@@ -477,9 +479,9 @@ sky/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
477
479
|
sky/workspaces/core.py,sha256=MkQoVqWN67tf4VRq284U9vgAw4lwb_cpUfwHQT4V9Ow,16598
|
478
480
|
sky/workspaces/server.py,sha256=Box45DS54xXGHy7I3tGKGy-JP0a8G_z6IhfvGlEXtsA,3439
|
479
481
|
sky/workspaces/utils.py,sha256=IIAiFoS6sdb2t0X5YoX9AietpTanZUQNTK8cePun-sY,2143
|
480
|
-
skypilot_nightly-1.0.0.
|
481
|
-
skypilot_nightly-1.0.0.
|
482
|
-
skypilot_nightly-1.0.0.
|
483
|
-
skypilot_nightly-1.0.0.
|
484
|
-
skypilot_nightly-1.0.0.
|
485
|
-
skypilot_nightly-1.0.0.
|
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,,
|
/sky/dashboard/out/_next/static/{N5IdFnjR1RaPGBAVYeTIr → 6TieQqyqsJiaJC33q0FfI}/_buildManifest.js
RENAMED
File without changes
|
/sky/dashboard/out/_next/static/{N5IdFnjR1RaPGBAVYeTIr → 6TieQqyqsJiaJC33q0FfI}/_ssgManifest.js
RENAMED
File without changes
|
{skypilot_nightly-1.0.0.dev20250702.dist-info → skypilot_nightly-1.0.0.dev20250704.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|