skypilot-nightly 1.0.0.dev20250801__py3-none-any.whl → 1.0.0.dev20250802__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.

Potentially problematic release.


This version of skypilot-nightly might be problematic. Click here for more details.

Files changed (50) hide show
  1. sky/__init__.py +2 -2
  2. sky/backends/backend_utils.py +6 -1
  3. sky/backends/cloud_vm_ray_backend.py +2 -1
  4. sky/catalog/data_fetchers/fetch_nebius.py +31 -7
  5. sky/client/cli/command.py +36 -14
  6. sky/client/cli/flags.py +15 -0
  7. sky/client/sdk.py +80 -10
  8. sky/client/sdk.pyi +4 -0
  9. sky/core.py +10 -2
  10. sky/dashboard/out/404.html +1 -1
  11. sky/dashboard/out/_next/static/{f2fEsZwJxryJVOYRNtNKE → 2JNCZ4daQBotwWRNGi6aE}/_buildManifest.js +1 -1
  12. sky/dashboard/out/_next/static/chunks/1871-7e17c195296e2ea9.js +6 -0
  13. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-9e7df5fc761c95a7.js +1 -0
  14. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-6c5af4c86e6ab3d3.js +11 -0
  15. sky/dashboard/out/_next/static/chunks/{webpack-42cd1b19a6b01078.js → webpack-13145516b19858fb.js} +1 -1
  16. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  17. sky/dashboard/out/clusters/[cluster].html +1 -1
  18. sky/dashboard/out/clusters.html +1 -1
  19. sky/dashboard/out/config.html +1 -1
  20. sky/dashboard/out/index.html +1 -1
  21. sky/dashboard/out/infra/[context].html +1 -1
  22. sky/dashboard/out/infra.html +1 -1
  23. sky/dashboard/out/jobs/[job].html +1 -1
  24. sky/dashboard/out/jobs.html +1 -1
  25. sky/dashboard/out/users.html +1 -1
  26. sky/dashboard/out/volumes.html +1 -1
  27. sky/dashboard/out/workspace/new.html +1 -1
  28. sky/dashboard/out/workspaces/[name].html +1 -1
  29. sky/dashboard/out/workspaces.html +1 -1
  30. sky/execution.py +5 -3
  31. sky/jobs/client/sdk.py +5 -1
  32. sky/resources.py +17 -4
  33. sky/server/constants.py +1 -1
  34. sky/server/requests/payloads.py +3 -0
  35. sky/setup_files/dependencies.py +1 -1
  36. sky/skylet/autostop_lib.py +96 -8
  37. sky/skylet/constants.py +2 -2
  38. sky/skylet/events.py +27 -13
  39. sky/templates/kubernetes-loadbalancer.yml.j2 +2 -0
  40. sky/utils/schemas.py +6 -0
  41. {skypilot_nightly-1.0.0.dev20250801.dist-info → skypilot_nightly-1.0.0.dev20250802.dist-info}/METADATA +4 -3
  42. {skypilot_nightly-1.0.0.dev20250801.dist-info → skypilot_nightly-1.0.0.dev20250802.dist-info}/RECORD +47 -47
  43. sky/dashboard/out/_next/static/chunks/1871-1df8b686a51f3e3a.js +0 -6
  44. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-665fa5d96dd41d67.js +0 -1
  45. sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-b25c109d6e41bcf4.js +0 -11
  46. /sky/dashboard/out/_next/static/{f2fEsZwJxryJVOYRNtNKE → 2JNCZ4daQBotwWRNGi6aE}/_ssgManifest.js +0 -0
  47. {skypilot_nightly-1.0.0.dev20250801.dist-info → skypilot_nightly-1.0.0.dev20250802.dist-info}/WHEEL +0 -0
  48. {skypilot_nightly-1.0.0.dev20250801.dist-info → skypilot_nightly-1.0.0.dev20250802.dist-info}/entry_points.txt +0 -0
  49. {skypilot_nightly-1.0.0.dev20250801.dist-info → skypilot_nightly-1.0.0.dev20250802.dist-info}/licenses/LICENSE +0 -0
  50. {skypilot_nightly-1.0.0.dev20250801.dist-info → skypilot_nightly-1.0.0.dev20250802.dist-info}/top_level.txt +0 -0
sky/resources.py CHANGED
@@ -20,6 +20,7 @@ from sky.provision import docker_utils
20
20
  from sky.provision.gcp import constants as gcp_constants
21
21
  from sky.provision.kubernetes import utils as kubernetes_utils
22
22
  from sky.provision.nebius import constants as nebius_constants
23
+ from sky.skylet import autostop_lib
23
24
  from sky.skylet import constants
24
25
  from sky.utils import accelerator_registry
25
26
  from sky.utils import annotations
@@ -69,14 +70,18 @@ class AutostopConfig:
69
70
  # flags.
70
71
  idle_minutes: int = 0
71
72
  down: bool = False
73
+ wait_for: Optional[autostop_lib.AutostopWaitFor] = None
72
74
 
73
75
  def to_yaml_config(self) -> Union[Literal[False], Dict[str, Any]]:
74
76
  if not self.enabled:
75
77
  return False
76
- return {
78
+ config: Dict[str, Any] = {
77
79
  'idle_minutes': self.idle_minutes,
78
80
  'down': self.down,
79
81
  }
82
+ if self.wait_for is not None:
83
+ config['wait_for'] = self.wait_for.value
84
+ return config
80
85
 
81
86
  @classmethod
82
87
  def from_yaml_config(
@@ -104,6 +109,9 @@ class AutostopConfig:
104
109
  autostop_config.idle_minutes = config['idle_minutes']
105
110
  if 'down' in config:
106
111
  autostop_config.down = config['down']
112
+ if 'wait_for' in config:
113
+ autostop_config.wait_for = (
114
+ autostop_lib.AutostopWaitFor.from_str(config['wait_for']))
107
115
  return autostop_config
108
116
 
109
117
  return None
@@ -958,15 +966,18 @@ class Resources:
958
966
  valid_volumes.append(volume)
959
967
  self._volumes = valid_volumes
960
968
 
961
- def override_autostop_config(self,
962
- down: bool = False,
963
- idle_minutes: Optional[int] = None) -> None:
969
+ def override_autostop_config(
970
+ self,
971
+ down: bool = False,
972
+ idle_minutes: Optional[int] = None,
973
+ wait_for: Optional[autostop_lib.AutostopWaitFor] = None) -> None:
964
974
  """Override autostop config to the resource.
965
975
 
966
976
  Args:
967
977
  down: If true, override the autostop config to use autodown.
968
978
  idle_minutes: If not None, override the idle minutes to autostop or
969
979
  autodown.
980
+ wait_for: If not None, override the wait mode.
970
981
  """
971
982
  if not down and idle_minutes is None:
972
983
  return
@@ -976,6 +987,8 @@ class Resources:
976
987
  self._autostop_config.down = down
977
988
  if idle_minutes is not None:
978
989
  self._autostop_config.idle_minutes = idle_minutes
990
+ if wait_for is not None:
991
+ self._autostop_config.wait_for = wait_for
979
992
 
980
993
  def is_launchable(self) -> bool:
981
994
  """Returns whether the resource is launchable."""
sky/server/constants.py CHANGED
@@ -10,7 +10,7 @@ from sky.skylet import constants
10
10
  # based on version info is needed.
11
11
  # For more details and code guidelines, refer to:
12
12
  # https://docs.skypilot.co/en/latest/developers/CONTRIBUTING.html#backward-compatibility-guidelines
13
- API_VERSION = 12
13
+ API_VERSION = 13
14
14
 
15
15
  # The minimum peer API version that the code should still work with.
16
16
  # Notes (dev):
@@ -33,6 +33,7 @@ from sky import sky_logging
33
33
  from sky import skypilot_config
34
34
  from sky.adaptors import common as adaptors_common
35
35
  from sky.server import common
36
+ from sky.skylet import autostop_lib
36
37
  from sky.skylet import constants
37
38
  from sky.usage import constants as usage_constants
38
39
  from sky.usage import usage_lib
@@ -312,6 +313,7 @@ class StartBody(RequestBody):
312
313
  """The request body for the start endpoint."""
313
314
  cluster_name: str
314
315
  idle_minutes_to_autostop: Optional[int] = None
316
+ wait_for: Optional[autostop_lib.AutostopWaitFor] = None
315
317
  retry_until_up: bool = False
316
318
  down: bool = False
317
319
  force: bool = False
@@ -321,6 +323,7 @@ class AutostopBody(RequestBody):
321
323
  """The request body for the autostop endpoint."""
322
324
  cluster_name: str
323
325
  idle_minutes: int
326
+ wait_for: Optional[autostop_lib.AutostopWaitFor] = None
324
327
  down: bool = False
325
328
 
326
329
 
@@ -177,7 +177,7 @@ extras_require: Dict[str, List[str]] = {
177
177
  # 'vsphere-automation-sdk @ git+https://github.com/vmware/vsphere-automation-sdk-python.git@v8.0.1.0' pylint: disable=line-too-long
178
178
  ],
179
179
  'nebius': [
180
- 'nebius>=0.2.37',
180
+ 'nebius>=0.2.47',
181
181
  ] + aws_dependencies,
182
182
  'hyperbolic': [], # No dependencies needed for hyperbolic
183
183
  'server': server_dependencies,
@@ -1,6 +1,8 @@
1
1
  """Autostop utilities."""
2
+ import enum
2
3
  import pickle
3
4
  import shlex
5
+ import subprocess
4
6
  import time
5
7
  import typing
6
8
  from typing import List, Optional
@@ -10,6 +12,7 @@ from sky.adaptors import common as adaptors_common
10
12
  from sky.skylet import configs
11
13
  from sky.skylet import constants
12
14
  from sky.utils import message_utils
15
+ from sky.utils import ux_utils
13
16
 
14
17
  if typing.TYPE_CHECKING:
15
18
  import psutil
@@ -30,6 +33,55 @@ _AUTOSTOP_LAST_ACTIVE_TIME = 'autostop_last_active_time'
30
33
  _AUTOSTOP_INDICATOR = 'autostop_indicator'
31
34
 
32
35
 
36
+ class AutostopWaitFor(enum.Enum):
37
+ """Enum for the Autostop behaviour.
38
+
39
+ JOBS: Wait for jobs to finish.
40
+ JOBS_AND_SSH: Wait for jobs to finish and all SSH sessions to be closed.
41
+ NONE: Unconditionally stop the cluster after the idle time.
42
+ """
43
+ JOBS_AND_SSH = 'jobs_and_ssh'
44
+ JOBS = 'jobs'
45
+ NONE = 'none'
46
+
47
+ @classmethod
48
+ def supported_modes(cls) -> List[str]:
49
+ return [mode.value for mode in cls]
50
+
51
+ @classmethod
52
+ def cli_help_message(cls, pair: str) -> str:
53
+ return f"""\
54
+ Determines the condition for resetting the idleness timer.
55
+ This option works in conjunction with ``--{pair}``. Options:
56
+
57
+ \b
58
+ 1. ``jobs_and_ssh`` (default): Wait for all jobs to complete AND all SSH
59
+ sessions to disconnect.
60
+ 2. ``jobs``: Wait for all jobs to complete.
61
+ 3. ``none``: Stop immediately after idle time expires, regardless of running
62
+ jobs or SSH connections."""
63
+
64
+ @classmethod
65
+ def from_str(cls, mode: str) -> 'AutostopWaitFor':
66
+ """Returns the enum value for the given string."""
67
+ if mode.lower() == cls.JOBS.value:
68
+ return cls.JOBS
69
+ elif mode.lower() == cls.JOBS_AND_SSH.value:
70
+ return cls.JOBS_AND_SSH
71
+ elif mode.lower() == cls.NONE.value:
72
+ return cls.NONE
73
+ else:
74
+ with ux_utils.print_exception_no_traceback():
75
+ raise ValueError(f'Unsupported autostop wait mode: '
76
+ f'{mode}. The mode must be either '
77
+ f'\'{cls.JOBS_AND_SSH.value}\', '
78
+ f'\'{cls.JOBS.value}\', or '
79
+ f'\'{cls.NONE.value}\'. ')
80
+
81
+
82
+ DEFAULT_AUTOSTOP_WAIT_FOR: AutostopWaitFor = AutostopWaitFor.JOBS_AND_SSH
83
+
84
+
33
85
  class AutostopConfig:
34
86
  """Autostop configuration."""
35
87
 
@@ -37,12 +89,14 @@ class AutostopConfig:
37
89
  autostop_idle_minutes: int,
38
90
  boot_time: float,
39
91
  backend: Optional[str],
92
+ wait_for: AutostopWaitFor,
40
93
  down: bool = False):
41
94
  assert autostop_idle_minutes < 0 or backend is not None, (
42
95
  autostop_idle_minutes, backend)
43
96
  self.autostop_idle_minutes = autostop_idle_minutes
44
97
  self.boot_time = boot_time
45
98
  self.backend = backend
99
+ self.wait_for = wait_for
46
100
  self.down = down
47
101
 
48
102
  def __setstate__(self, state: dict):
@@ -53,15 +107,18 @@ class AutostopConfig:
53
107
  def get_autostop_config() -> AutostopConfig:
54
108
  config_str = configs.get_config(_AUTOSTOP_CONFIG_KEY)
55
109
  if config_str is None:
56
- return AutostopConfig(-1, -1, None)
110
+ return AutostopConfig(-1, -1, None, DEFAULT_AUTOSTOP_WAIT_FOR)
57
111
  return pickle.loads(config_str)
58
112
 
59
113
 
60
- def set_autostop(idle_minutes: int, backend: Optional[str], down: bool) -> None:
114
+ def set_autostop(idle_minutes: int, backend: Optional[str],
115
+ wait_for: AutostopWaitFor, down: bool) -> None:
61
116
  boot_time = psutil.boot_time()
62
- autostop_config = AutostopConfig(idle_minutes, boot_time, backend, down)
117
+ autostop_config = AutostopConfig(idle_minutes, boot_time, backend, wait_for,
118
+ down)
63
119
  configs.set_config(_AUTOSTOP_CONFIG_KEY, pickle.dumps(autostop_config))
64
- logger.debug(f'set_autostop(): idle_minutes {idle_minutes}, down {down}.')
120
+ logger.debug(f'set_autostop(): idle_minutes {idle_minutes}, down {down}, '
121
+ f'wait_for {wait_for.value}.')
65
122
  # Reset timer whenever an autostop setting is submitted, i.e. the idle
66
123
  # time will be counted from now.
67
124
  set_last_active_time_to_now()
@@ -107,6 +164,28 @@ def set_last_active_time_to_now() -> None:
107
164
  configs.set_config(_AUTOSTOP_LAST_ACTIVE_TIME, str(time.time()))
108
165
 
109
166
 
167
+ def has_active_ssh_sessions() -> bool:
168
+ """Returns True if there are any active SSH sessions on the node."""
169
+ try:
170
+ # /dev/pts is a virtual filesystem that contains the pseudo-terminal
171
+ # devices. ptmx is the pseudo-terminal multiplexer, which is the
172
+ # "master" device that creates new pseudo-terminal devices, so we
173
+ # exclude it from the count.
174
+ proc = subprocess.run('ls /dev/pts | grep -v ptmx | wc -l',
175
+ capture_output=True,
176
+ text=True,
177
+ check=False,
178
+ shell=True)
179
+ if proc.returncode != 0:
180
+ logger.warning(f'SSH session check command failed with return code '
181
+ f'{proc.returncode}.')
182
+ return False
183
+ return int(proc.stdout.strip()) > 0
184
+ except Exception as e: # pylint: disable=broad-except
185
+ logger.warning(f'Error checking active SSH sessions: {e}.')
186
+ return False
187
+
188
+
110
189
  class AutostopCodeGen:
111
190
  """Code generator for autostop utility functions.
112
191
 
@@ -114,13 +193,22 @@ class AutostopCodeGen:
114
193
 
115
194
  >> codegen = AutostopCodeGen.set_autostop(...)
116
195
  """
117
- _PREFIX = ['from sky.skylet import autostop_lib']
196
+ _PREFIX = ['from sky.skylet import autostop_lib, constants']
118
197
 
119
198
  @classmethod
120
- def set_autostop(cls, idle_minutes: int, backend: str, down: bool) -> str:
199
+ def set_autostop(cls,
200
+ idle_minutes: int,
201
+ backend: str,
202
+ wait_for: Optional[AutostopWaitFor],
203
+ down: bool = False) -> str:
204
+ if wait_for is None:
205
+ wait_for = DEFAULT_AUTOSTOP_WAIT_FOR
121
206
  code = [
122
- f'autostop_lib.set_autostop({idle_minutes}, {backend!r},'
123
- f' {down})',
207
+ f'\nif getattr(constants, "SKYLET_LIB_VERSION", 1) < 4: '
208
+ f'\n autostop_lib.set_autostop({idle_minutes}, {backend!r}, {down})'
209
+ f'\nelse: '
210
+ f'\n autostop_lib.set_autostop({idle_minutes}, {backend!r}, '
211
+ f'autostop_lib.{wait_for}, {down})',
124
212
  ]
125
213
  return cls._build(code)
126
214
 
sky/skylet/constants.py CHANGED
@@ -90,11 +90,11 @@ TASK_ID_LIST_ENV_VAR = f'{SKYPILOT_ENV_VAR_PREFIX}TASK_IDS'
90
90
  # cluster yaml is updated.
91
91
  #
92
92
  # TODO(zongheng,zhanghao): make the upgrading of skylet automatic?
93
- SKYLET_VERSION = '15'
93
+ SKYLET_VERSION = '16'
94
94
  # The version of the lib files that skylet/jobs use. Whenever there is an API
95
95
  # change for the job_lib or log_lib, we need to bump this version, so that the
96
96
  # user can be notified to update their SkyPilot version on the remote cluster.
97
- SKYLET_LIB_VERSION = 3
97
+ SKYLET_LIB_VERSION = 4
98
98
  SKYLET_VERSION_FILE = '~/.sky/skylet_version'
99
99
 
100
100
  # Docker default options
sky/skylet/events.py CHANGED
@@ -137,23 +137,37 @@ class AutostopEvent(SkyletEvent):
137
137
  logger.debug('autostop_config not set. Skipped.')
138
138
  return
139
139
 
140
- if (job_lib.is_cluster_idle() and
141
- not managed_job_state.get_num_alive_jobs()):
142
- idle_minutes = (time.time() -
143
- autostop_lib.get_last_active_time()) // 60
140
+ ignore_idle_check = (
141
+ autostop_config.wait_for == autostop_lib.AutostopWaitFor.NONE)
142
+ is_idle = True
143
+ if not ignore_idle_check:
144
+ if not job_lib.is_cluster_idle(
145
+ ) or managed_job_state.get_num_alive_jobs() or (
146
+ autostop_config.wait_for
147
+ == autostop_lib.AutostopWaitFor.JOBS_AND_SSH and
148
+ autostop_lib.has_active_ssh_sessions()):
149
+ is_idle = False
150
+
151
+ if ignore_idle_check or is_idle:
152
+ minutes_since_last_active = (
153
+ time.time() - autostop_lib.get_last_active_time()) // 60
144
154
  logger.debug(
145
- f'Idle minutes: {idle_minutes}, '
146
- f'AutoStop config: {autostop_config.autostop_idle_minutes}')
155
+ f'Minutes since last active: {minutes_since_last_active}, '
156
+ f'AutoStop idle minutes: '
157
+ f'{autostop_config.autostop_idle_minutes}, '
158
+ f'Wait for: {autostop_config.wait_for.value}')
147
159
  else:
148
160
  autostop_lib.set_last_active_time_to_now()
149
- idle_minutes = -1
150
- logger.debug(
151
- 'Not idle. Reset idle minutes.'
152
- f'AutoStop config: {autostop_config.autostop_idle_minutes}')
153
- if idle_minutes >= autostop_config.autostop_idle_minutes:
161
+ minutes_since_last_active = -1
162
+ logger.debug('Not idle. Reset idle minutes. '
163
+ f'AutoStop idle minutes: '
164
+ f'{autostop_config.autostop_idle_minutes}, '
165
+ f'Wait for: {autostop_config.wait_for.value}')
166
+ if minutes_since_last_active >= autostop_config.autostop_idle_minutes:
154
167
  logger.info(
155
- f'{idle_minutes} idle minutes reached; threshold: '
156
- f'{autostop_config.autostop_idle_minutes} minutes. Stopping.')
168
+ f'{minutes_since_last_active} minute(s) since last active; '
169
+ f'threshold: {autostop_config.autostop_idle_minutes} minutes. '
170
+ f'Stopping.')
157
171
  self._stop_cluster(autostop_config)
158
172
 
159
173
  def _stop_cluster(self, autostop_config):
@@ -12,6 +12,8 @@ service_spec:
12
12
  {%- for key, value in annotations.items() %}
13
13
  {{ key }}: {{ value|tojson }}
14
14
  {%- endfor %}
15
+ {# Note: It's ok to add cloud-specific annotations here since they will be ignored by other clouds #}
16
+ service.beta.kubernetes.io/coreweave-load-balancer-type: public
15
17
  spec:
16
18
  type: LoadBalancer
17
19
  selector:
sky/utils/schemas.py CHANGED
@@ -6,6 +6,7 @@ https://json-schema.org/
6
6
  import enum
7
7
  from typing import Any, Dict, List, Tuple
8
8
 
9
+ from sky.skylet import autostop_lib
9
10
  from sky.skylet import constants
10
11
  from sky.utils import kubernetes_enums
11
12
 
@@ -65,6 +66,11 @@ _AUTOSTOP_SCHEMA = {
65
66
  'down': {
66
67
  'type': 'boolean',
67
68
  },
69
+ 'wait_for': {
70
+ 'type': 'string',
71
+ 'case_insensitive_enum':
72
+ autostop_lib.AutostopWaitFor.supported_modes(),
73
+ }
68
74
  },
69
75
  },
70
76
  ],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250801
3
+ Version: 1.0.0.dev20250802
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -121,7 +121,7 @@ Requires-Dist: vastai-sdk>=0.1.12; extra == "vast"
121
121
  Provides-Extra: vsphere
122
122
  Requires-Dist: pyvmomi==8.0.1.0.2; extra == "vsphere"
123
123
  Provides-Extra: nebius
124
- Requires-Dist: nebius>=0.2.37; extra == "nebius"
124
+ Requires-Dist: nebius>=0.2.47; extra == "nebius"
125
125
  Requires-Dist: awscli>=1.27.10; extra == "nebius"
126
126
  Requires-Dist: botocore>=1.29.10; extra == "nebius"
127
127
  Requires-Dist: boto3>=1.26.1; extra == "nebius"
@@ -177,7 +177,7 @@ Requires-Dist: azure-core>=1.24.0; extra == "all"
177
177
  Requires-Dist: azure-common; extra == "all"
178
178
  Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
179
179
  Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
180
- Requires-Dist: nebius>=0.2.37; extra == "all"
180
+ Requires-Dist: nebius>=0.2.47; extra == "all"
181
181
  Requires-Dist: awscli>=1.27.10; extra == "all"
182
182
  Requires-Dist: botocore>=1.29.10; extra == "all"
183
183
  Requires-Dist: boto3>=1.26.1; extra == "all"
@@ -235,6 +235,7 @@ Dynamic: summary
235
235
  ----
236
236
 
237
237
  :fire: *News* :fire:
238
+ - [Jul 2025] Run distributed **RL training for LLMs** with Verl (PPO, GRPO) on any cloud: [**example**](./llm/verl/)
238
239
  - [Jul 2025] 🎉 SkyPilot v0.10.0 released! [**blog post**](https://blog.skypilot.co/announcing-skypilot-0.10.0/), [**release notes**](https://github.com/skypilot-org/skypilot/releases/tag/v0.10.0)
239
240
  - [Jul 2025] Finetune **Llama4** on any distributed cluster/cloud: [**example**](./llm/llama-4-finetuning/)
240
241
  - [Jul 2025] Two-part blog series, `The Evolution of AI Job Orchestration`: (1) [Running AI jobs on GPU Neoclouds](https://blog.skypilot.co/ai-job-orchestration-pt1-gpu-neoclouds/), (2) [The AI-Native Control Plane & Orchestration that Finally Works for ML](https://blog.skypilot.co/ai-job-orchestration-pt2-ai-control-plane/)
@@ -1,18 +1,18 @@
1
- sky/__init__.py,sha256=F0tvtPN6QILWTtxIxztTsz0w2Sq2YXfeFwr80Rp0_eg,6535
1
+ sky/__init__.py,sha256=MTk8y6rm_AWcu0vxjkHBwQryXoJqGhnlAkazVz_P3o0,6535
2
2
  sky/admin_policy.py,sha256=BeSowGnWfDj58ALiNf3cc2N4gMQWzjO6aXnX7vaqYhk,9782
3
3
  sky/authentication.py,sha256=V7zGSV7bqcAKC_EGOOS0KhJ01ZFLnme0WnjLFO7zavs,25603
4
4
  sky/check.py,sha256=R0pFsTq2v-wr3NFePlX9DmDhsbvWEoFJAXsys3pUmT4,30338
5
5
  sky/cli.py,sha256=VXIZryeTtJPYpPTBKymVPmuOCyh8knfWrq-qnkr6R-4,178
6
6
  sky/cloud_stores.py,sha256=Ln5GBpel-sEs7rVx7bBrMkfLwA_bctI05Rox2uoz7Lo,26388
7
- sky/core.py,sha256=k_3QkqJecFpwLSatM52lD-IitVdjUIXn33EPJWcQfWE,56628
7
+ sky/core.py,sha256=FArTDVCRJ1HA20hbwdHzYO8l0jE-8sCYU9_oOgcLDKg,57023
8
8
  sky/dag.py,sha256=5MFXlP43y9U54zxfYGhVyBiWEInoFFlt_zJ7ASJntXw,3889
9
9
  sky/exceptions.py,sha256=U9s7ty5eyTdpOeteVxh7qOKmkYhyRVQmHXQXyREnMyk,19482
10
- sky/execution.py,sha256=sZf0306FCKAo1FS7Vg2yCADSr5XHsODYwESHhwdVTjo,33439
10
+ sky/execution.py,sha256=nW3lZhiPqqXSFg8YR0nYrHyu0rNi7jI_Tei_KBPMmHQ,33568
11
11
  sky/global_user_state.py,sha256=jq0FgOEbC_dbjgqRI8Fb8Oc4wx5_XT9bZs1VqxX4Fek,68153
12
12
  sky/models.py,sha256=Eor-cT4D71QTimogcnJ5ey1G1PXK-OXN-snEtE8Uu_g,3152
13
13
  sky/optimizer.py,sha256=rcH6CVix1PJWWSwe1XWItfsmG8igwbKtRE5QVWRlpR4,63804
14
14
  sky/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- sky/resources.py,sha256=y8_t61VOR5JHymkbohNDPMZEs4WUHy9ISC8_6IBey9w,106249
15
+ sky/resources.py,sha256=66L-77Tn3sb2-7Y1-mxydH2tsYJQ1zrxdOxGBkT7YIc,106823
16
16
  sky/sky_logging.py,sha256=aFcwYKKlZG28q-bEsVzvmBEZ1WqHMMp1SwRGONLopDI,8512
17
17
  sky/skypilot_config.py,sha256=KesPrzq4m07mqPrVIphLnT2qyS4mrxh3-FKbpjOXDu8,36817
18
18
  sky/task.py,sha256=d7387AOvuaCHadUVN6bXKGxkgMDtBaIYiw7bPv6InXk,73739
@@ -35,8 +35,8 @@ sky/adaptors/vast.py,sha256=tpvmHi7IkQNzbbHVkeo04kUSajoEpSzXr2XgeO_I1LU,695
35
35
  sky/adaptors/vsphere.py,sha256=zJP9SeObEoLrpgHW2VHvZE48EhgVf8GfAEIwBeaDMfM,2129
36
36
  sky/backends/__init__.py,sha256=tpa9gAygQopsiBUUuy3wVmr4E05FoPTFHIWqEo4i-u0,627
37
37
  sky/backends/backend.py,sha256=6ltCouZhaXJqv2Zh9nP_YCdHf10_oIRNzAA-XDiMmI8,7969
38
- sky/backends/backend_utils.py,sha256=y4cRspDK-LzUdXFV_3yvXl2SN-_8HoHaegycyHq10T0,150485
39
- sky/backends/cloud_vm_ray_backend.py,sha256=W5vm-haPzisOkHF96lC_m0iIcvojVhmBJhcUNTomReE,264119
38
+ sky/backends/backend_utils.py,sha256=O3a3Fs7rONCooBLUlrZCk_2llCzuGKwIAN-w1Pm1O9A,150674
39
+ sky/backends/cloud_vm_ray_backend.py,sha256=xM0hs7hX5ItkPWcGBpI5LoHK8RswqdkxyjnmzvlTtHY,264200
40
40
  sky/backends/docker_utils.py,sha256=_EhM6NStZDAwcegppQqExaB5iuSn1qL4xFFUqXAz2Uk,8392
41
41
  sky/backends/local_docker_backend.py,sha256=r84uhXCk7NK9hGW840KPKnrADd7mCerMwncxOzckHg4,17126
42
42
  sky/backends/wheel_utils.py,sha256=IUruJijm5854UGDdSayHbHzjjWRM46bATK1nSnK44xY,11071
@@ -72,19 +72,19 @@ sky/catalog/data_fetchers/fetch_gcp.py,sha256=iFOpPq52c2ENg-oV9OXqFqPMG4Dpv5VGtR
72
72
  sky/catalog/data_fetchers/fetch_hyperbolic.py,sha256=VLBJXWvrKJH5QbMUiREPEMfO3x37_XsqMAmOo7bCQtc,4537
73
73
  sky/catalog/data_fetchers/fetch_ibm.py,sha256=WPzR1y5ZaTdv-R3HLIdSUnOfWh4N9cqzKoKiKJQkjFk,7414
74
74
  sky/catalog/data_fetchers/fetch_lambda_cloud.py,sha256=MUzogyLruLQmIt-To6TsfnGPgv_nnlp49XYbeshsd7I,5003
75
- sky/catalog/data_fetchers/fetch_nebius.py,sha256=qmk7wkz8-L8XxYXZyDpneAuvOPY2Pzw7H3GwrdM1MXo,10772
75
+ sky/catalog/data_fetchers/fetch_nebius.py,sha256=bEHYMvcat0HgAecNWXVkHmCpuwGD1TDNvgeINCdb8gc,12016
76
76
  sky/catalog/data_fetchers/fetch_vast.py,sha256=xoVDSsQVgMLzyibCFN7yDgyH1Y96gk5G53to1ZAGRyg,5017
77
77
  sky/catalog/data_fetchers/fetch_vsphere.py,sha256=Yf7tKzwJsQ_4f64IT1EAP108C1D3Rg35RUIwp7UX8KI,21438
78
78
  sky/client/__init__.py,sha256=pz6xvVSd9X-gwqbsDL0E9QOojYqM0KAD0j-NCyCIF1k,38
79
79
  sky/client/common.py,sha256=RYXlfL9FTk97RxVrOX0p4gfgol1E5dqM-_vaEUhqsy4,15622
80
80
  sky/client/oauth.py,sha256=sNJ_DMsSTcxluj5FeNQ2IafZJLImRFmCAZ79bXeABn4,2871
81
- sky/client/sdk.py,sha256=1KIBayflVwL0sVoCj8IP5W75cwT-YEEdpJnglYLaQ98,92749
82
- sky/client/sdk.pyi,sha256=Dyu9wBaCZmB3O_pg7q0pHe6i1aVrNFX73eGSdLAm_W8,8082
81
+ sky/client/sdk.py,sha256=cJmFicvgDK1N_CciqpeV6WaBlSKQipz0znWy6K5u7fs,96346
82
+ sky/client/sdk.pyi,sha256=2Zpt-IL5kW8Uv630sbXB2EsxF_PSDfDJO2xh950Bnhg,8336
83
83
  sky/client/service_account_auth.py,sha256=5jXk0G6ufuW-SHCO7BEHQeTO0_2a8KfFmA63auXFRj4,1529
84
84
  sky/client/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
- sky/client/cli/command.py,sha256=uhKBK8VVjLQxlKtvEkAvANdSIflRZxCl7HfH0m2_7zQ,238465
85
+ sky/client/cli/command.py,sha256=J8fjU9VV3E6Et9EG6EQPU_Gq6qUYXYBWtPa_D3neyS8,239316
86
86
  sky/client/cli/deprecation_utils.py,sha256=H_d5UyF2CekEoThduAzt5cihBO8hwKYMu0-Wqfbjv5E,3370
87
- sky/client/cli/flags.py,sha256=6IdS_G2lB1C6r8kJMzLVREY_qV50VHiSfWlmppVrWuc,11623
87
+ sky/client/cli/flags.py,sha256=yGb4edFHXRQGDfrlFK-pfHvMg8kpIIMsbmGkTEvmIFk,12087
88
88
  sky/client/cli/git.py,sha256=dqSaJI1Ndv6RfKJa6HT6ednXr0j_pVlwSdh3XiQzB60,22018
89
89
  sky/clouds/__init__.py,sha256=tC9_Vi6GvVceWUi6uZvm7vXzBa0uH3CjRQ-QCYqdJMw,1624
90
90
  sky/clouds/aws.py,sha256=Kto8IFJrJGy3i1YJOyMju-QmCubaONIcsioZsBA86R8,55815
@@ -112,23 +112,25 @@ sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4
112
112
  sky/clouds/utils/gcp_utils.py,sha256=09MF4Vx0EW7S-GXGpyxpl2aQlHrqeu9ioV0nyionAyk,9890
113
113
  sky/clouds/utils/oci_utils.py,sha256=TFqAqRLggg4Z0bhxrrq8nouSSomZy-ub1frHXEkud2M,7302
114
114
  sky/clouds/utils/scp_utils.py,sha256=VGuccVO5uFGr8-yolWSoYrgr11z6cIeDBGcqkBzAyOs,18409
115
- sky/dashboard/out/404.html,sha256=nGHcdaIkr2Afmov79AkFX5JsPH53vwSTIF6EHB-U0Qk,1423
116
- sky/dashboard/out/clusters.html,sha256=cStnNdU9iqDWom7gKJJZU4Ua4cDz_EDoT-_hJX6Wvdc,1418
117
- sky/dashboard/out/config.html,sha256=826Eai4YvbO5Xcj-SbAnlGHZkrHTc4Y9AVSZZCRxpv4,1414
115
+ sky/dashboard/out/404.html,sha256=Jit36JY0k9aW6wq4gHugJKlSoeD_nWlvMQ0LbqTxpXQ,1423
116
+ sky/dashboard/out/clusters.html,sha256=yExnnfD4i72eVX-sI4XPDK1T8o6yuadAe4PMmbNmRQw,1418
117
+ sky/dashboard/out/config.html,sha256=MjJaDrMEOIoCNlaevvfhdBNsJ0K_yrv9UQXHztnOK6c,1414
118
118
  sky/dashboard/out/favicon.ico,sha256=XilUZZglAl_1zRsg85QsbQgmQAzGPQjcUIJ-A3AzYn8,93590
119
- sky/dashboard/out/index.html,sha256=NI8htN6qUe4O8R8nAMS1zZcTasiUaNKi4K2aieruxF8,1407
120
- sky/dashboard/out/infra.html,sha256=ypmbaPmbqRL8VpdjyMk8aZ_ypQGX0KgibWupeYHaDXI,1412
121
- sky/dashboard/out/jobs.html,sha256=_KBh5YlE69pUzyqdfDC7yRkN_ds5hByX5VZuucFyeEE,1410
119
+ sky/dashboard/out/index.html,sha256=zw8Gh9Oc-xxiL-zr1j0wi-vjjCt_ug2K9AEOrf4skk0,1407
120
+ sky/dashboard/out/infra.html,sha256=pJ8uSSm_WXFt-ficDsD4BcvALYNnAffMHdNLKjp5AqE,1412
121
+ sky/dashboard/out/jobs.html,sha256=RnNCiqCAhMTbTz1mZwe0Qrf6KoYWuvmdZtRYfBPKAdk,1410
122
122
  sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
123
- sky/dashboard/out/users.html,sha256=qwDJzOvbSIjlFpzlEdPCJBmA0O-hRn3cBkEj05aICKk,1412
124
- sky/dashboard/out/volumes.html,sha256=cAkSnrwnE_13ousS9vMXybWVvkqFk_CpUuECVaXUdvU,1416
125
- sky/dashboard/out/workspaces.html,sha256=7NvCPwqIdfDyN3N-T6h20JhcYbH2febNYyF5kFfs5Xw,1422
123
+ sky/dashboard/out/users.html,sha256=x4Q5JwY2YV_A_ukNUhSdynaMGrnXgarxQFKy7oEsuRo,1412
124
+ sky/dashboard/out/volumes.html,sha256=XCJ4lmUq-yOIPgl_TF0cJZiB89mG5VDn5wsHSgum42o,1416
125
+ sky/dashboard/out/workspaces.html,sha256=THFw52t91_udwWGXcmgolaW6KLgOAHhEAAx2za8tPWM,1422
126
+ sky/dashboard/out/_next/static/2JNCZ4daQBotwWRNGi6aE/_buildManifest.js,sha256=mF9uU2yTNR-fbXd82X7jk_2Tx0yUXgegm0oI-yWpq8E,2283
127
+ sky/dashboard/out/_next/static/2JNCZ4daQBotwWRNGi6aE/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
126
128
  sky/dashboard/out/_next/static/chunks/1043-928582d4860fef92.js,sha256=BG7QXJfWCVid6a34fciR3aLMlAfaMwz__pMPGx5W4yI,18356
127
129
  sky/dashboard/out/_next/static/chunks/1141-3f10a5a9f697c630.js,sha256=UYaip6NbdI5m6d7e2swueEq41Limnaf83CFxBG5V3qQ,17855
128
130
  sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js,sha256=VJ6y-Z6Eg2T93hQIRfWAbjAkQ7nQhglmIaVbEpKSILY,38451
129
131
  sky/dashboard/out/_next/static/chunks/1559-6c00e20454194859.js,sha256=m7cJHbBlJJX1kIbMpu-i3q3V5FO2iZwAn8rsPb0Bliw,9717
130
132
  sky/dashboard/out/_next/static/chunks/1664-22b00e32c9ff96a4.js,sha256=NHkBM2lbUgk6jJj_zpZjLfTWBnMr4xPt2Sus1Yfq5js,6579
131
- sky/dashboard/out/_next/static/chunks/1871-1df8b686a51f3e3a.js,sha256=dChDPZIi9Wj6Ng6VCwuA0A9CwwNpreVlUv2MgrItf-M,19443
133
+ sky/dashboard/out/_next/static/chunks/1871-7e17c195296e2ea9.js,sha256=ND_JcibDswilxjr_Ey_UBmwCbKPLpbJnPtVX2RoH1KE,19766
132
134
  sky/dashboard/out/_next/static/chunks/2003.f90b06bb1f914295.js,sha256=5CouVy9gPpjpOosucd1Ryme6X6vJBDwK08OYlEKuNyQ,889
133
135
  sky/dashboard/out/_next/static/chunks/2350.fab69e61bac57b23.js,sha256=TQCHO4AUL9MZo1e_8GOiL8y6vjQpj5tdXZ8oCKwM1LA,271
134
136
  sky/dashboard/out/_next/static/chunks/2369.fc20f0c2c8ed9fe7.js,sha256=qkKMDvgq-AVeC811VipJzXHAB__R4G2eHj-I-7_N2Ek,8177
@@ -159,7 +161,7 @@ sky/dashboard/out/_next/static/chunks/framework-cf60a09ccd051a10.js,sha256=_Qbam
159
161
  sky/dashboard/out/_next/static/chunks/main-app-587214043926b3cc.js,sha256=t7glRfataAjNw691Wni-ZU4a3BsygRzPKoI8NOm-lsY,116244
160
162
  sky/dashboard/out/_next/static/chunks/main-f15ccb73239a3bf1.js,sha256=jxOPLDVX3rkMc_jvGx2a-N2v6mvfOa8O6V0o-sLT0tI,110208
161
163
  sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
162
- sky/dashboard/out/_next/static/chunks/webpack-42cd1b19a6b01078.js,sha256=3JIODwoPUZtSIv-AkN2MAIdAyXBF3B73OMXIDT00SFo,4817
164
+ sky/dashboard/out/_next/static/chunks/webpack-13145516b19858fb.js,sha256=bcdFrbDZf_ZnqnyYn4gwsr5dkS-JIaNvlb2qRrvrNqg,4817
163
165
  sky/dashboard/out/_next/static/chunks/pages/_app-a67ae198457b9886.js,sha256=VuhMqjrmagBFq3GFOQEolXA0EcCcTuJJ07YnYZSzIWE,95540
164
166
  sky/dashboard/out/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js,sha256=vjERjtMAbVk-19LyPf1Jc-H6TMcrSznSz6brzNqbqf8,253
165
167
  sky/dashboard/out/_next/static/chunks/pages/clusters-956ad430075efee8.js,sha256=L7DO9OEherPXWbBVn5F4WRxWVsr4QkleQ72Cd2N9zS0,869
@@ -170,22 +172,20 @@ sky/dashboard/out/_next/static/chunks/pages/jobs-6393a9edc7322b54.js,sha256=lHkf
170
172
  sky/dashboard/out/_next/static/chunks/pages/users-34d6bb10c3b3ee3d.js,sha256=ENssYZncnT49etHyLTj_GfhAG9vS82_twtHcLcawemQ,837
171
173
  sky/dashboard/out/_next/static/chunks/pages/volumes-225c8dae0634eb7f.js,sha256=Xrf8uq3RK1PodWTtkeruwp2VphPP0pkUUBzxubc3SI8,826
172
174
  sky/dashboard/out/_next/static/chunks/pages/workspaces-e4cb7e97d37e93ad.js,sha256=C4xAlubwWetsVXjdsd--WPQB0VGvLVmawQIO-aXPRUs,882
173
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-665fa5d96dd41d67.js,sha256=W_JFq5BARvwF0jrcic_9FpVjpqoYpO-BQfsBwy264Wc,16758
175
+ sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-9e7df5fc761c95a7.js,sha256=TCsF_LlcMee7LNDfLjtg66PQ3Hn5HLiEKzEFtgsa3j4,17734
174
176
  sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-fa63e8b1d203f298.js,sha256=BxMhWaTYIpxg6pUxHCgjmQYg_bWlt8IcF25Ib_TRqh0,22612
175
177
  sky/dashboard/out/_next/static/chunks/pages/infra/[context]-9cfd875eecb6eaf5.js,sha256=NfPpxnay5ixeeA7P9nIGufH6k4LeU0fUMVCf2DQ1b_w,847
176
- sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-b25c109d6e41bcf4.js,sha256=HErPyXdZB4QhPThmDfv1P-V7NyslPW7Qro77hWwK4A0,26094
178
+ sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-6c5af4c86e6ab3d3.js,sha256=gC2Oe77_OfsQdngohDwY7d186Rf4FbP5dTy_7sR9LAE,27070
177
179
  sky/dashboard/out/_next/static/chunks/pages/workspace/new-92f741084a89e27b.js,sha256=_R_LeVz9kCnCeOSjnJLSVmaKh2JVd1LpTVNZifss3d8,772
178
180
  sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-4d41c9023287f59a.js,sha256=BK6zNuC-5pUqmVKDlAgKs10P46xDefN_G3y-iLJ8TLw,1504
179
181
  sky/dashboard/out/_next/static/css/b3227360726f12eb.css,sha256=H55rkeVIrdGOUAIPmLZ6C78aEgXb7fEPa9mT9BOuLBI,55358
180
- sky/dashboard/out/_next/static/f2fEsZwJxryJVOYRNtNKE/_buildManifest.js,sha256=zY6CK5HuvlvHmmUpNplXXoAXlp-v9lwDL5uYSLg89qo,2283
181
- sky/dashboard/out/_next/static/f2fEsZwJxryJVOYRNtNKE/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
182
- sky/dashboard/out/clusters/[cluster].html,sha256=s0jXTCzpfJYGtcWDtYsLQmQwpj5SymD5Mcmatr_SXHs,2936
183
- sky/dashboard/out/clusters/[cluster]/[job].html,sha256=eoSv3Z_TFgnLd7lSOn1b3UgCh9f6lmHdyzmIWMSakwo,2161
184
- sky/dashboard/out/infra/[context].html,sha256=3t_gWZNUprUNPaQ7Rhss6tZukE9frSuQHyz16pND6YU,1436
185
- sky/dashboard/out/jobs/[job].html,sha256=7xecnu85bcLXMzwEQExseEI9Ie4V0Okfl78DkpXzIvk,2393
182
+ sky/dashboard/out/clusters/[cluster].html,sha256=ayj4vuxXhfQITTWeuWk55E69lAcPV93gXbpSu3nwqYU,2936
183
+ sky/dashboard/out/clusters/[cluster]/[job].html,sha256=woTXdmBWebXDkmES1KqE04pud6n79eKqFHFVP2PLEOw,2161
184
+ sky/dashboard/out/infra/[context].html,sha256=isqL0LTOI4vNuwdSr_C3c8gRz00mMrzqqqt63c_QLzc,1436
185
+ sky/dashboard/out/jobs/[job].html,sha256=MPGqRSOzPn2z9WpGhqUdLMv7Hs8OzCGkDSXnsA1b5gM,2393
186
186
  sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
187
- sky/dashboard/out/workspace/new.html,sha256=iR1XHJ9AZM1LCjuj6-j3iPAAtErLqoPNJ9W0jeRcGMI,1428
188
- sky/dashboard/out/workspaces/[name].html,sha256=MiMZhTKPWKGF3bbfRQtSDDEzq2XTBDHqxoYzsC10ZCA,2846
187
+ sky/dashboard/out/workspace/new.html,sha256=Dig8G0sA-fAxesIdXWe9N00IygIEMctRkz0QXs86HYI,1428
188
+ sky/dashboard/out/workspaces/[name].html,sha256=yeL38Tr7KiANMXVLsRJ-FMwWaeoZErUYeHu5f6Z4088,2846
189
189
  sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
190
190
  sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
191
191
  sky/data/data_utils.py,sha256=AjEA_JRjo9NBMlv-Lq5iV4lBED_YZ1VqBR9pG6fGVWE,35179
@@ -200,7 +200,7 @@ sky/jobs/scheduler.py,sha256=42gdjUt3X3AKyG1837kLuPhialCiV3Jn4BcjvaJ_apQ,16935
200
200
  sky/jobs/state.py,sha256=7toLaEGNfAFxS1ihHglzZHeWVuC-83XMU878drGQ5iM,67183
201
201
  sky/jobs/utils.py,sha256=FD-0JNgCcheTOKLplg48K8X6puK2ALlexHuM3WLI08o,77238
202
202
  sky/jobs/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
203
- sky/jobs/client/sdk.py,sha256=C-RFmUjdpJlWqF2oNBVAUvshWGSeJdspJQocoUmwIYE,14277
203
+ sky/jobs/client/sdk.py,sha256=71MaAUDrZERuOSnXg1XXa2MqdJVFwDuRpMBtnge4d-Y,14427
204
204
  sky/jobs/server/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
205
205
  sky/jobs/server/core.py,sha256=GWGHexOixZ0h5PXr5Dz31LxzeVedTBOQuT2u-8Rx-Yc,36528
206
206
  sky/jobs/server/server.py,sha256=eZqKrP5Z-LG4lIvk54c1GIZi5ehG3RWaqWbxykljRzM,5415
@@ -338,7 +338,7 @@ sky/serve/server/server.py,sha256=A9K37a0nQgZeN3eKWv62Oh2C5TSAReTZ9pHmztqlI-c,43
338
338
  sky/server/__init__.py,sha256=MPPBqFzXz6Jv5QSk6td_IcvnfXfNErDZVcizu4MLRow,27
339
339
  sky/server/common.py,sha256=XRLjlT0zSivdLRukjAQyWrwCVC6Qo-GY3XUjJJRViYQ,35384
340
340
  sky/server/config.py,sha256=XWf5Kw4am6vMO5wcyWevbQAFH-dmKb7AMEgDzD083-M,8538
341
- sky/server/constants.py,sha256=phK3FjVyOQQYgokIYkyuXzQtqBRCLSu-KWPYBnkFHsc,2321
341
+ sky/server/constants.py,sha256=mei7JRqzF7m2uqOG6gkGEiBe8FxDeLeVEPsPpa_PIuY,2321
342
342
  sky/server/daemons.py,sha256=Wd5c3WgsnCkFq3com5Fs_Tuh4Fh_P8PrNglloLMjh_8,6916
343
343
  sky/server/metrics.py,sha256=6H6n6dq_C5HMaU97mJlRUB9bqOEA_k205PO15wE3AWk,3648
344
344
  sky/server/rest.py,sha256=-oDsI8-NmIcb7aqy_8USB4lQbPWdQibST59GJVtFUi8,7983
@@ -352,7 +352,7 @@ sky/server/html/token_page.html,sha256=eUndS5u1foL9vaWGPRTLMt7lCzD1g0wYJ2v_EeeFz
352
352
  sky/server/requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
353
353
  sky/server/requests/event_loop.py,sha256=OhpPbuce65bbjpGRlcJa78AVnYSm08SzFKt70ypCUuQ,1211
354
354
  sky/server/requests/executor.py,sha256=_BaE4QDTowLyaSyWCFVX_GqfrHknNRWuBexpDPMEdes,27100
355
- sky/server/requests/payloads.py,sha256=f-apQJvWlbknl3QqpbCo1AklVKkqPiV6u8sx5p_iSRA,25160
355
+ sky/server/requests/payloads.py,sha256=y_7Df0tCFqrgh1Xl__EUm7yxV1wNrx7VdXlUqtXFnR8,25316
356
356
  sky/server/requests/preconditions.py,sha256=uUQjzFFHf7O5-WvBypMzqViGmd1CXksbqrrDPmY_s_Y,7178
357
357
  sky/server/requests/process.py,sha256=UpJp5rZizNMFRCNRtudFSjbcJhFarFbtAGDWI9x_ZyE,13197
358
358
  sky/server/requests/requests.py,sha256=-A399p-xVwGCA63qUvur7gI1qtDJPwo_bRbagjr3L1o,24219
@@ -364,15 +364,15 @@ sky/server/requests/serializers/decoders.py,sha256=3jC05aNaJxthHWWWfTW69dMPa6TKR
364
364
  sky/server/requests/serializers/encoders.py,sha256=bmKtwHwF5g0SmjOBhi88OvOmI3EAozf1drD0I8bCk7o,5915
365
365
  sky/setup_files/MANIFEST.in,sha256=fKWkj_JoaZ1FxrEaoEaD6Oz35LLYcsJYUorTBw01Y3A,738
366
366
  sky/setup_files/alembic.ini,sha256=9yEQ1Pe8t-Pzp6PhQdJ4ut_BlHO63FNSYt7sRRFB_Wg,4965
367
- sky/setup_files/dependencies.py,sha256=9GL_M7EoLUjQwEU2WNXA6_4uazut6CAsr7UsLG7i11o,7205
367
+ sky/setup_files/dependencies.py,sha256=eIsQRZEUN6ShhvjEzL6SZ6wXvarDqKxmAS6KkM0AGBE,7205
368
368
  sky/setup_files/setup.py,sha256=GTXvAi65S4_TSLhQ1GzkmaWf_yzciHiaxMbZumcTtKU,7522
369
369
  sky/skylet/LICENSE,sha256=BnFrJSvUFpMUoH5mOpWnEvaC5R6Uux8W6WXgrte8iYg,12381
370
370
  sky/skylet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
371
371
  sky/skylet/attempt_skylet.py,sha256=GZ6ITjjA0m-da3IxXXfoHR6n4pjp3X3TOXUqVvSrV0k,2136
372
- sky/skylet/autostop_lib.py,sha256=kGUnHm-jpF4zl3UJfB-4pnoldWpnVeR96WwYGSw7em0,4630
372
+ sky/skylet/autostop_lib.py,sha256=9KqnxiqPqIl-fUL6Tk-JrgSFkhzC0KemkxF7zR89dvc,8099
373
373
  sky/skylet/configs.py,sha256=nNBnpuzoU696FbC3Nv0qKVSDuTw4GAbr7eCcg0_Sldo,2135
374
- sky/skylet/constants.py,sha256=NszY93-WPXneYKpZFe04KG5M3RuNXF1ObMtVMASDtho,23649
375
- sky/skylet/events.py,sha256=UwO_9tktq99RON3TuB4FmUZi1Fes7XvJssCcdhUebq0,13007
374
+ sky/skylet/constants.py,sha256=lbnx7bgYpf1_I5s2ZwsAOv2Y-YFwQB-AdXSwekglrM8,23649
375
+ sky/skylet/events.py,sha256=Xd3kd13zanDbJU9JH7jhuAomiNvcrTv2_9kK7AizSn0,13705
376
376
  sky/skylet/job_lib.py,sha256=cUud2sVcnHcZbqzHYGpiBy7EKSIphX8SqWg5Rsh-Su4,49533
377
377
  sky/skylet/log_lib.py,sha256=-kfeSNb7gR7Z-G7ADHh9Na4_QO-T0o2WzYYhcrrHSIE,23349
378
378
  sky/skylet/log_lib.pyi,sha256=6LXFSpyW4lMHAELKllvK73B3538JjSo9lPw30DEuO0o,4542
@@ -405,7 +405,7 @@ sky/templates/hyperbolic-ray.yml.j2,sha256=ThGcxd9m6RbgnZcT6imdikimwRhO5baYrP2h3
405
405
  sky/templates/ibm-ray.yml.j2,sha256=n_EsoqQx1DUPDh7ZgCxvlEEZnROJ4rBXrFcHYVRIN2c,6907
406
406
  sky/templates/jobs-controller.yaml.j2,sha256=EiWQamnaV2YlhkKwTBx9aov-q2F9UHaejhwQWlF7c6A,2318
407
407
  sky/templates/kubernetes-ingress.yml.j2,sha256=73iDklVDWBMbItg0IexCa6_ClXPJOxw7PWz3leku4nE,1340
408
- sky/templates/kubernetes-loadbalancer.yml.j2,sha256=IxrNYM366N01bbkJEbZ_UPYxUP8wyVEbRNFHRsBuLsw,626
408
+ sky/templates/kubernetes-loadbalancer.yml.j2,sha256=Dc44sC_-EwDG69eZoD4pkLKQjzxH_qrlhd-rZ2gePJc,804
409
409
  sky/templates/kubernetes-port-forward-proxy-command.sh,sha256=iw7mypHszg6Ggq9MbyiYMFOkSlXaQZulaxqC5IWYGCc,3381
410
410
  sky/templates/kubernetes-ray.yml.j2,sha256=gjZlmBdOHfjSqj5N02KaluB6mscxeoRQaI_munpUghE,57563
411
411
  sky/templates/kubernetes-ssh-jump.yml.j2,sha256=k5W5sOIMppU7dDkJMwPlqsUcb92y7L5_TVG3hkgMy8M,2747
@@ -459,7 +459,7 @@ sky/utils/resource_checker.py,sha256=N18XhoVIqjY1VzmKvxQxRchRgC2WIgcEQyHDkLvg4Y8
459
459
  sky/utils/resources_utils.py,sha256=zcJXHYQt6WtQHKuWEif1QP1NtSO7XQYJBaEs625yV1Y,15958
460
460
  sky/utils/rich_console_utils.py,sha256=wPvAlshaFHuMZSjiDnaK3OSBppZLBjAn-lj7AvxNBQk,553
461
461
  sky/utils/rich_utils.py,sha256=iR6Gf8ZewE9sut4uhkmZwtEelzm3FvckM9K41meQnWM,14650
462
- sky/utils/schemas.py,sha256=t9P9-Up7LrxvSeRKY-RWgXZ0ryk7NAdLienJ_HKQCjE,55900
462
+ sky/utils/schemas.py,sha256=gHMe5s06bgHXQ07OXVqZp_8Qjq1nwbRfQVpWbvYUNU4,56139
463
463
  sky/utils/status_lib.py,sha256=QGkd6COD1GX1h30Mk9RMUdyeUOMJs5971GkxTcFgdsU,1705
464
464
  sky/utils/subprocess_utils.py,sha256=tOpFY_1ml7JkVGAN1o473lcKPklGR95qBCW61eu8kEo,15773
465
465
  sky/utils/tempstore.py,sha256=3S5fJ3UjnE12ve38c3MpTXpoRWfDSGndZpqNe7P_8aU,2148
@@ -503,9 +503,9 @@ sky/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
503
503
  sky/workspaces/core.py,sha256=MkQoVqWN67tf4VRq284U9vgAw4lwb_cpUfwHQT4V9Ow,16598
504
504
  sky/workspaces/server.py,sha256=Box45DS54xXGHy7I3tGKGy-JP0a8G_z6IhfvGlEXtsA,3439
505
505
  sky/workspaces/utils.py,sha256=IIAiFoS6sdb2t0X5YoX9AietpTanZUQNTK8cePun-sY,2143
506
- skypilot_nightly-1.0.0.dev20250801.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
507
- skypilot_nightly-1.0.0.dev20250801.dist-info/METADATA,sha256=IgisD5xNyhY8McBlID1LbiJeO_qyGrIvQFbZRBPEX3I,19691
508
- skypilot_nightly-1.0.0.dev20250801.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
509
- skypilot_nightly-1.0.0.dev20250801.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
510
- skypilot_nightly-1.0.0.dev20250801.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
511
- skypilot_nightly-1.0.0.dev20250801.dist-info/RECORD,,
506
+ skypilot_nightly-1.0.0.dev20250802.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
507
+ skypilot_nightly-1.0.0.dev20250802.dist-info/METADATA,sha256=XcGRVIBk2HpvjPe2sPkO8_5re1kkke3lfISqGYlEZ6g,19808
508
+ skypilot_nightly-1.0.0.dev20250802.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
509
+ skypilot_nightly-1.0.0.dev20250802.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
510
+ skypilot_nightly-1.0.0.dev20250802.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
511
+ skypilot_nightly-1.0.0.dev20250802.dist-info/RECORD,,