skypilot-nightly 1.0.0.dev20250306__py3-none-any.whl → 1.0.0.dev20250308__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
sky/__init__.py CHANGED
@@ -5,7 +5,7 @@ from typing import Optional
5
5
  import urllib.request
6
6
 
7
7
  # Replaced with the current commit when building the wheels.
8
- _SKYPILOT_COMMIT_SHA = 'db832e82e19faa3e428e946c74825a752ebb7402'
8
+ _SKYPILOT_COMMIT_SHA = 'f2c2092f3fc343d59348bf209b3ad0d4d76cea7b'
9
9
 
10
10
 
11
11
  def _get_git_commit():
@@ -35,7 +35,7 @@ def _get_git_commit():
35
35
 
36
36
 
37
37
  __commit__ = _get_git_commit()
38
- __version__ = '1.0.0.dev20250306'
38
+ __version__ = '1.0.0.dev20250308'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -17,7 +17,7 @@ import re
17
17
  import shutil
18
18
  import subprocess
19
19
  import tempfile
20
- from typing import Tuple
20
+ from typing import Optional, Tuple
21
21
 
22
22
  import filelock
23
23
  from packaging import version
@@ -149,16 +149,29 @@ def build_sky_wheel() -> Tuple[pathlib.Path, str]:
149
149
  - wheel_hash: The wheel content hash.
150
150
  """
151
151
 
152
- def _get_latest_modification_time(path: pathlib.Path) -> float:
152
+ def _get_latest_modification_time(path: pathlib.Path) -> Optional[float]:
153
+ max_time = -1.
153
154
  if not path.exists():
154
- return -1.
155
- try:
156
- return max(
157
- os.path.getmtime(os.path.join(root, f))
158
- for root, dirs, files in os.walk(path)
159
- for f in (*dirs, *files))
160
- except ValueError:
161
- return -1.
155
+ return max_time
156
+ for root, dirs, files in os.walk(path):
157
+ # Prune __pycache__ directories to prevent walking into them and
158
+ # exclude them from processing
159
+ if '__pycache__' in dirs:
160
+ dirs.remove('__pycache__')
161
+ # Filter out .pyc files
162
+ filtered_files = [f for f in files if not f.endswith('.pyc')]
163
+ # Process remaining directories and files
164
+ for entry in (*dirs, *filtered_files):
165
+ entry_path = os.path.join(root, entry)
166
+ try:
167
+ mtime = os.path.getmtime(entry_path)
168
+ if mtime > max_time:
169
+ max_time = mtime
170
+ except OSError:
171
+ # Handle cases where file might have been deleted after
172
+ # listing
173
+ return None
174
+ return max_time
162
175
 
163
176
  # This lock prevents that the wheel is updated while being copied.
164
177
  # Although the current caller already uses a lock, we still lock it here
@@ -170,10 +183,12 @@ def build_sky_wheel() -> Tuple[pathlib.Path, str]:
170
183
  last_modification_time = _get_latest_modification_time(SKY_PACKAGE_PATH)
171
184
  last_wheel_modification_time = _get_latest_modification_time(WHEEL_DIR)
172
185
 
173
- # Only build wheels if the wheel is outdated or wheel does not exist
174
- # for the requested version.
175
- if (last_wheel_modification_time < last_modification_time) or not any(
176
- WHEEL_DIR.glob(f'**/{_WHEEL_PATTERN}')):
186
+ # Only build wheels if the wheel is outdated, wheel does not exist
187
+ # for the requested version, or files were deleted during checking.
188
+ if ((last_modification_time is None or
189
+ last_wheel_modification_time is None) or
190
+ (last_wheel_modification_time < last_modification_time) or
191
+ not any(WHEEL_DIR.glob(f'**/{_WHEEL_PATTERN}'))):
177
192
  if not WHEEL_DIR.exists():
178
193
  WHEEL_DIR.mkdir(parents=True, exist_ok=True)
179
194
  latest_wheel = _build_sky_wheel()
sky/jobs/server/core.py CHANGED
@@ -157,6 +157,7 @@ def launch(
157
157
  'modified_catalogs':
158
158
  service_catalog_common.get_modified_catalog_file_mounts(),
159
159
  'dashboard_setup_cmd': managed_job_constants.DASHBOARD_SETUP_CMD,
160
+ 'dashboard_user_id': common.SERVER_ID,
160
161
  **controller_utils.shared_controller_vars_to_fill(
161
162
  controller_utils.Controllers.JOBS_CONTROLLER,
162
163
  remote_user_config_path=remote_user_config_path,
@@ -305,10 +306,9 @@ def _maybe_restart_controller(
305
306
  with rich_utils.safe_status(
306
307
  ux_utils.spinner_message('Starting dashboard...')):
307
308
  runner = handle.get_command_runners()[0]
308
- user_hash = common_utils.get_user_hash()
309
309
  runner.run(
310
310
  f'export '
311
- f'{skylet_constants.USER_ID_ENV_VAR}={user_hash!r}; '
311
+ f'{skylet_constants.USER_ID_ENV_VAR}={common.SERVER_ID!r}; '
312
312
  f'{managed_job_constants.DASHBOARD_SETUP_CMD}',
313
313
  stream_logs=True,
314
314
  )
sky/jobs/server/server.py CHANGED
@@ -159,6 +159,9 @@ async def dashboard(request: fastapi.Request,
159
159
  except Exception as e: # pylint: disable=broad-except
160
160
  # We catch all exceptions to gracefully handle unknown
161
161
  # errors and retry or raise an HTTPException to the client.
162
+ # Assume an exception indicates that the dashboard connection
163
+ # is stale - remove it so that a new one is created.
164
+ dashboard_utils.remove_dashboard_session(user_hash)
162
165
  msg = (
163
166
  f'Dashboard connection attempt {attempt + 1} failed with '
164
167
  f'{common_utils.format_exception(e, use_bracket=True)}')
sky/skylet/constants.py CHANGED
@@ -268,6 +268,12 @@ USER_ID_ENV_VAR = f'{SKYPILOT_ENV_VAR_PREFIX}USER_ID'
268
268
  # runs on a VM launched by SkyPilot will be recognized as the same user.
269
269
  USER_ENV_VAR = f'{SKYPILOT_ENV_VAR_PREFIX}USER'
270
270
 
271
+ # Internal: Env var indicating the system is running with a remote API server.
272
+ # It is used for internal purposes, including the jobs controller to mark
273
+ # clusters as launched with a remote API server.
274
+ USING_REMOTE_API_SERVER_ENV_VAR = (
275
+ f'{SKYPILOT_ENV_VAR_PREFIX}USING_REMOTE_API_SERVER')
276
+
271
277
  # In most clouds, cluster names can only contain lowercase letters, numbers
272
278
  # and hyphens. We use this regex to validate the cluster name.
273
279
  CLUSTER_NAME_VALID_REGEX = '[a-zA-Z]([-_.a-zA-Z0-9]*[a-zA-Z0-9])?'
@@ -39,9 +39,7 @@ setup: |
39
39
  After=network.target
40
40
 
41
41
  [Service]
42
- Environment="PATH={{ sky_python_env_path }}:\$PATH"
43
- Environment="SKYPILOT_USER_ID={{controller_envs.SKYPILOT_USER_ID}}"
44
- Environment="SKYPILOT_USER={{controller_envs.SKYPILOT_USER}}"
42
+ Environment="SKYPILOT_USER_ID={{ dashboard_user_id }}"
45
43
  Restart=always
46
44
  StandardOutput=append:/home/$USER/.sky/job-dashboard.log
47
45
  StandardError=append:/home/$USER/.sky/job-dashboard.log
@@ -51,6 +49,7 @@ setup: |
51
49
  WantedBy=default.target
52
50
  EOF
53
51
 
52
+ export SKYPILOT_USER_ID="{{ dashboard_user_id }}"
54
53
  {{ dashboard_setup_cmd }}
55
54
 
56
55
  run: |
@@ -531,8 +531,8 @@ class SSHCommandRunner(CommandRunner):
531
531
  if port_forward is not None:
532
532
  for local, remote in port_forward:
533
533
  logger.info(
534
- f'Forwarding port {local} to port {remote} on localhost.')
535
- ssh += ['-NL', f'{remote}:localhost:{local}']
534
+ f'Forwarding local port {local} to remote port {remote}.')
535
+ ssh += ['-NL', f'{local}:localhost:{remote}']
536
536
  if self._docker_ssh_proxy_command is not None:
537
537
  docker_ssh_proxy_command = self._docker_ssh_proxy_command(ssh)
538
538
  else:
sky/utils/common_utils.py CHANGED
@@ -291,6 +291,9 @@ def get_current_client_entrypoint(server_entrypoint: str) -> str:
291
291
 
292
292
  def get_using_remote_api_server() -> bool:
293
293
  """Returns whether the API server is remote."""
294
+ if os.getenv(constants.USING_REMOTE_API_SERVER_ENV_VAR) is not None:
295
+ return os.getenv(constants.USING_REMOTE_API_SERVER_ENV_VAR,
296
+ '').lower() in ('true', '1')
294
297
  if _using_remote_api_server is not None:
295
298
  return _using_remote_api_server
296
299
  # This gets the right status for the local client.
@@ -431,6 +431,11 @@ def shared_controller_vars_to_fill(
431
431
  env_options.Options.SKIP_CLOUD_IDENTITY_CHECK.env_key: '1',
432
432
  # Disable minimize logging to get more details on the controller.
433
433
  env_options.Options.MINIMIZE_LOGGING.env_key: '0',
434
+ # Make sure the clusters launched by the controller are marked as
435
+ # launched with a remote API server if the controller is launched
436
+ # with a remote API server.
437
+ constants.USING_REMOTE_API_SERVER_ENV_VAR: str(
438
+ common_utils.get_using_remote_api_server()),
434
439
  })
435
440
  if skypilot_config.loaded():
436
441
  # Only set the SKYPILOT_CONFIG env var if the user has a config file.
sky/utils/rich_utils.py CHANGED
@@ -230,15 +230,53 @@ def decode_rich_status(
230
230
  decoding_status = None
231
231
  try:
232
232
  last_line = ''
233
+ # Buffer to store incomplete UTF-8 bytes between chunks
234
+ undecoded_buffer = b''
235
+
233
236
  # Iterate over the response content in chunks. We do not use iter_lines
234
237
  # because it will strip the trailing newline characters, causing the
235
238
  # progress bar ending with `\r` becomes a pyramid.
236
- for encoded_msg in response.iter_content(chunk_size=None):
237
- if encoded_msg is None:
239
+ for chunk in response.iter_content(chunk_size=None):
240
+ if chunk is None:
238
241
  return
239
- encoded_msg = encoded_msg.decode('utf-8')
242
+
243
+ # Append the new chunk to any leftover bytes from previous iteration
244
+ current_bytes = undecoded_buffer + chunk
245
+ undecoded_buffer = b''
246
+
247
+ # Try to decode the combined bytes
248
+ try:
249
+ encoded_msg = current_bytes.decode('utf-8')
250
+ except UnicodeDecodeError as e:
251
+ # Check if this is potentially an incomplete sequence at the end
252
+ if e.start > 0:
253
+ # Decode the valid part
254
+ encoded_msg = current_bytes[:e.start].decode('utf-8')
255
+
256
+ # Check if the remaining bytes are likely a partial char
257
+ # or actually invalid UTF-8
258
+ remaining_bytes = current_bytes[e.start:]
259
+ if len(remaining_bytes) < 4: # Max UTF-8 char is 4 bytes
260
+ # Likely incomplete - save for next chunk
261
+ undecoded_buffer = remaining_bytes
262
+ else:
263
+ # Likely invalid - replace with replacement character
264
+ encoded_msg += remaining_bytes.decode('utf-8',
265
+ errors='replace')
266
+ undecoded_buffer = b''
267
+ else:
268
+ # Error at the very beginning of the buffer - invalid UTF-8
269
+ encoded_msg = current_bytes.decode('utf-8',
270
+ errors='replace')
271
+ undecoded_buffer = b''
272
+
240
273
  lines = encoded_msg.splitlines(keepends=True)
241
274
 
275
+ # Skip processing if lines is empty to avoid IndexError
276
+ if not lines:
277
+ continue
278
+
279
+ # Append any leftover text from previous chunk to first line
242
280
  lines[0] = last_line + lines[0]
243
281
  last_line = lines[-1]
244
282
  # If the last line is not ended with `\r` or `\n` (with ending
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250306
3
+ Version: 1.0.0.dev20250308
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -208,12 +208,12 @@ Dynamic: summary
208
208
 
209
209
  SkyPilot is a framework for running AI and batch workloads on any infra, offering unified execution, high cost savings, and high GPU availability.
210
210
 
211
- SkyPilot **abstracts away infra burdens**:
211
+ SkyPilot **abstracts away AI infra burden**:
212
212
  - Launch [clusters](https://docs.skypilot.co/en/latest/examples/interactive-development.html), [jobs](https://docs.skypilot.co/en/latest/examples/managed-jobs.html), and [serving](https://docs.skypilot.co/en/latest/serving/sky-serve.html) on any infra
213
213
  - Easy job management: queue, run, and auto-recover many jobs
214
214
 
215
- SkyPilot **supports multiple clusters, clouds, and hardware** ([the Sky](https://arxiv.org/abs/2205.07147)):
216
- - Bring your reserved GPUs, Kubernetes clusters, or 12+ clouds
215
+ SkyPilot **supports multiple clusters, clouds, and hardware**:
216
+ - Bring reserved GPUs, Kubernetes clusters, or 15+ clouds
217
217
  - [Flexible provisioning](https://docs.skypilot.co/en/latest/examples/auto-failover.html) of GPUs, TPUs, CPUs, with auto-retry
218
218
 
219
219
  SkyPilot **cuts your cloud costs & maximizes GPU availability**:
@@ -235,7 +235,9 @@ pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidst
235
235
  ```
236
236
 
237
237
 
238
- [Current supported infra](https://docs.skypilot.co/en/latest/getting-started/installation.html) (Kubernetes; AWS, GCP, Azure, OCI, Lambda Cloud, Fluidstack, RunPod, Cudo, Digital Ocean, Paperspace, Cloudflare, Samsung, IBM, Vast.ai, VMware vSphere, Nebius):
238
+ Current supported infra: Kubernetes, AWS, GCP, Azure, OCI, Lambda Cloud, Fluidstack,
239
+ RunPod, Cudo, Digital Ocean, Paperspace, Cloudflare, Samsung, IBM, Vast.ai,
240
+ VMware vSphere, Nebius.
239
241
  <p align="center">
240
242
  <img alt="SkyPilot" src="https://raw.githubusercontent.com/skypilot-org/skypilot/master/docs/source/images/cloud-logos-light.png" width=85%>
241
243
  </p>
@@ -1,4 +1,4 @@
1
- sky/__init__.py,sha256=ak0AJnxWgEbgwgeX8-qC2zFNyTtXtDJ6l2P4Pdtzg5o,6428
1
+ sky/__init__.py,sha256=rHe5jgJb57QsrlJN68ATy2cIAu13o-v6cufEHWX_wlk,6428
2
2
  sky/admin_policy.py,sha256=hPo02f_A32gCqhUueF0QYy1fMSSKqRwYEg_9FxScN_s,3248
3
3
  sky/authentication.py,sha256=hCEqi77nprQEg3ktfRL51xiiw16zwZOmFEDB_Z7fWVU,22384
4
4
  sky/check.py,sha256=NDKx_Zm7YRxPjMv82wz3ESLnGIPljaACyqVdVNM0PzY,11258
@@ -37,7 +37,7 @@ sky/backends/backend_utils.py,sha256=B_46tG9PyrppxLWdg4mWGuuIr3TEcWTz6qhYXjAY2bw
37
37
  sky/backends/cloud_vm_ray_backend.py,sha256=KIU4IkUTBGE__7MC3ayjYMwE14mSxeiHjrGnK7wAQXw,247773
38
38
  sky/backends/docker_utils.py,sha256=Hyw1YY20EyghhEbYx6O2FIMDcGkNzBzV9TM7LFynei8,8358
39
39
  sky/backends/local_docker_backend.py,sha256=nSYCjms3HOPjPNOrcCqsUKm1WV3AAovRFjEQ7hcEXW4,17021
40
- sky/backends/wheel_utils.py,sha256=5BUzBqfYz7p1ME6_0PXGmcsAkLVb8NrFt317p7a4X8s,8278
40
+ sky/backends/wheel_utils.py,sha256=meypuMaygSXXjGdXfq6dhWl-OrpAybg9KVRoup4D0wU,9098
41
41
  sky/backends/monkey_patches/monkey_patch_ray_up.py,sha256=76-y2fCaE3JINj8lEwHT1eirYzCbpD8O1ySsysuGu8o,3450
42
42
  sky/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
43
  sky/benchmark/benchmark_state.py,sha256=X8CXmuU9KgsDRhKedhFgjeRMUFWtQsjFs1qECvPG2yg,8723
@@ -119,9 +119,9 @@ sky/jobs/dashboard/dashboard.py,sha256=JKg8cCH_Y0sf3MoDTx85BghVEXWpp8ItPLshp09-_
119
119
  sky/jobs/dashboard/static/favicon.ico,sha256=uYlvgxSM7gjBmXpZ8wydvZUPAbJiiix-rc2Xe5mma9s,15086
120
120
  sky/jobs/dashboard/templates/index.html,sha256=NrlTDiEHJDt7sViwWgXUSxVCyVl_IEukE5jdvN8WhtQ,33132
121
121
  sky/jobs/server/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
122
- sky/jobs/server/core.py,sha256=bXE92KhXjFPZFZrqlnrZhz8SYWXKCiu9goXtrkFUlNc,25243
122
+ sky/jobs/server/core.py,sha256=tewaCC-yAB1YmTmwbKaVbrjeLHQNz0_zgrB042ii4o4,25252
123
123
  sky/jobs/server/dashboard_utils.py,sha256=2Mbx40W1pQqPEPHsSDbHeaF0j5cgyKy-_A9Owdwp_AQ,2315
124
- sky/jobs/server/server.py,sha256=vdVxl4ZkBRlfOdsUO5Ttxon_-NE9XoMVMSo8fJ-Y73Y,7803
124
+ sky/jobs/server/server.py,sha256=UIg2C0SkeGc_GXGudLWXoJePfPNO30n8qvqrcbgZCec,8018
125
125
  sky/provision/__init__.py,sha256=LzOo5LjkRXwSf29dUqN14YbjzQu3liXLQcmweTeZ4dE,6457
126
126
  sky/provision/common.py,sha256=E8AlSUFcn0FYQq1erNmoVfMAdsF9tP2yxfyk-9PLvQU,10286
127
127
  sky/provision/constants.py,sha256=oc_XDUkcoLQ_lwDy5yMeMSWviKS0j0s1c0pjlvpNeWY,800
@@ -250,7 +250,7 @@ sky/skylet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
250
250
  sky/skylet/attempt_skylet.py,sha256=GZ6ITjjA0m-da3IxXXfoHR6n4pjp3X3TOXUqVvSrV0k,2136
251
251
  sky/skylet/autostop_lib.py,sha256=W4CtMira6QnmYToFT5kYTGjNPRZNC-bZPfsF1k3tluE,4480
252
252
  sky/skylet/configs.py,sha256=UtnpmEL0F9hH6PSjhsps7xgjGZ6qzPOfW1p2yj9tSng,1887
253
- sky/skylet/constants.py,sha256=6I_JGIQXHGDNodNCQYLqflmJotDVnFUt4R48BASyUN0,18037
253
+ sky/skylet/constants.py,sha256=1Yzzb6bwECy3gP7BYaMnz2uve5x0bChOn-84pwJgSng,18333
254
254
  sky/skylet/events.py,sha256=pnV3ZiwWhXqTHpU5B5Y9Xwam_7FQDI6IrxgSx7X_NVA,12743
255
255
  sky/skylet/job_lib.py,sha256=j_VRDWcEGIStLLEC0cD9B3JxggPJOZaDAaNKe50uhy4,44319
256
256
  sky/skylet/log_lib.py,sha256=DzOrgY8C7RdEMLC9O9kEKV-iLMb9wVMPSnDha8eMx28,20900
@@ -281,7 +281,7 @@ sky/templates/do-ray.yml.j2,sha256=sRKpn0tC-uPYtSZ20OB4fMzE7RbPQUr8kOCIbuJ4b4Q,4
281
281
  sky/templates/fluidstack-ray.yml.j2,sha256=4M3ONqrTaViv7tzN19bSaWT-7c16183DoRVXeZGqgv0,3756
282
282
  sky/templates/gcp-ray.yml.j2,sha256=CriBoM3XF80x9Rx8X-4VVQUFEo5osW6LRbz5ESrEcOg,9850
283
283
  sky/templates/ibm-ray.yml.j2,sha256=uehn7ZZPNIxIXMytqyiEUpTljmwfynCCkdNJURVN31Y,6877
284
- sky/templates/jobs-controller.yaml.j2,sha256=_RyMLMvyjK-OOUDxoko5hXa0jWRm59j-qkKLsAz1opA,2511
284
+ sky/templates/jobs-controller.yaml.j2,sha256=LbeWGkarOcrRbbdvkZv_ZfyydEcJBohKItCoAfWK6X0,2432
285
285
  sky/templates/kubernetes-ingress.yml.j2,sha256=73iDklVDWBMbItg0IexCa6_ClXPJOxw7PWz3leku4nE,1340
286
286
  sky/templates/kubernetes-loadbalancer.yml.j2,sha256=IxrNYM366N01bbkJEbZ_UPYxUP8wyVEbRNFHRsBuLsw,626
287
287
  sky/templates/kubernetes-port-forward-proxy-command.sh,sha256=iw7mypHszg6Ggq9MbyiYMFOkSlXaQZulaxqC5IWYGCc,3381
@@ -307,13 +307,13 @@ sky/utils/accelerator_registry.py,sha256=GjOgqT0s0n5hT-wcpCcTRu74rnKb8LwQ6MJl6dK
307
307
  sky/utils/admin_policy_utils.py,sha256=y_do0VH6qh163EqSuRW1uGeKvTnJhiYNrHUs77uoOcA,6013
308
308
  sky/utils/annotations.py,sha256=-rfacB30Sl0xkFriejGvxma3oKctGfXXLZkQPHG33eo,1626
309
309
  sky/utils/cluster_utils.py,sha256=s6DFRXktv6_gF_DnwDEXJ7CniifHp8CAPeGciRCbXgI,14432
310
- sky/utils/command_runner.py,sha256=-7vxLvwZnTvYMQ_nScmuQWY6ZvQYv69yvvIp2uOaOqU,39063
310
+ sky/utils/command_runner.py,sha256=4ZXBjDUgU13CZz7pNrAG9ucNV27voRfWc9TdcP5WpHk,39063
311
311
  sky/utils/command_runner.pyi,sha256=mJOzCgcYZAfHwnY_6Wf1YwlTEJGb9ihzc2f0rE0Kw98,7751
312
312
  sky/utils/common.py,sha256=P4oVXFATUYgkruHX92cN12SJBtfb8DiOOYZtbN1kvP0,1927
313
- sky/utils/common_utils.py,sha256=1KfqF_hgH9l1ieyV-_3fJd6ma41-tOstj-ihAQcEDIM,31162
313
+ sky/utils/common_utils.py,sha256=vsikxAnRZYTbn0OWENuMSv1JWYUr2hRnPxqWSct6N7I,31357
314
314
  sky/utils/config_utils.py,sha256=VQ2E3DQ2XysD-kul-diSrxn_pXWsDMfKAev91OiJQ1Q,9041
315
315
  sky/utils/control_master_utils.py,sha256=iD4M0onjYOdZ2RuxjwMBl4KhafHXJzuHjvqlBUnu-VE,1450
316
- sky/utils/controller_utils.py,sha256=FETdTx1om3Qmxw5W9BNazhV0dWoNdMWYopIEQJRcKSA,48614
316
+ sky/utils/controller_utils.py,sha256=1aDH0O6gTRzGwp4lyoQgC0rLxcOE_UrMeMY2LSyJ2y4,48911
317
317
  sky/utils/dag_utils.py,sha256=sAus0aL1wtuuFZSDnpO4LY-6WK4u5iJY952oWQzHo3Y,7532
318
318
  sky/utils/db_utils.py,sha256=K2-OHPg0FeHCarevMdWe0IWzm6wWumViEeYeJuGoFUE,3747
319
319
  sky/utils/env_options.py,sha256=aaD6GoYK0LaZIqjOEZ-R7eccQuiRriW3EuLWtOI5En8,1578
@@ -322,7 +322,7 @@ sky/utils/log_utils.py,sha256=Y7Sxt6-Br_SB34dPIqZov-46U2S7zhyFzg4ghXtgVaI,16521
322
322
  sky/utils/message_utils.py,sha256=zi2Z7PEX6Xq_zvho-aEZe_J7UvpKOLdVDdGAcipRQPU,2662
323
323
  sky/utils/registry.py,sha256=sH_VBupeczMHJIQMXPFv9jNMqE_ZF1ytOUcDFGdHjxA,4132
324
324
  sky/utils/resources_utils.py,sha256=URp6OS9B9nc9tIB5ibZCgGK4XSABmI4kRG0wOM6qgvs,7774
325
- sky/utils/rich_utils.py,sha256=M2aYVnq59cbk5dmMFOrKQ8v-tqkKNAnsXhzaX5YKqqE,10162
325
+ sky/utils/rich_utils.py,sha256=3xdDzmn-TQXAE83EevAtOf9N4aak3Bl4ZeD33xIxjOo,11931
326
326
  sky/utils/schemas.py,sha256=KJCHrn1nMZ3XqzddWuu_nFQoRQw01cZh9qh19OrRtps,30145
327
327
  sky/utils/status_lib.py,sha256=zn_MSuRYQdNKF8pnFOGQ54X_s_R7dyqWS6Q3a9zENw8,1512
328
328
  sky/utils/subprocess_utils.py,sha256=lqhSHoy93GsVeQgQ48C6f77bixD6yfsGQP40rbXofts,12779
@@ -344,9 +344,9 @@ sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml,sha256=VLKT2KKimZu1GDg_4AIlIt488
344
344
  sky/utils/kubernetes/kubernetes_deploy_utils.py,sha256=otzHzpliHDCpzYT-nU9Q0ZExbiFpDPWvhxwkvchZj7k,10073
345
345
  sky/utils/kubernetes/rsync_helper.sh,sha256=h4YwrPFf9727CACnMJvF3EyK_0OeOYKKt4su_daKekw,1256
346
346
  sky/utils/kubernetes/ssh_jump_lifecycle_manager.py,sha256=Kq1MDygF2IxFmu9FXpCxqucXLmeUrvs6OtRij6XTQbo,6554
347
- skypilot_nightly-1.0.0.dev20250306.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
348
- skypilot_nightly-1.0.0.dev20250306.dist-info/METADATA,sha256=KMCEi2MMpS3c6PtW0hntDieMCbbRksyPtYoAFEcGSKI,18173
349
- skypilot_nightly-1.0.0.dev20250306.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
350
- skypilot_nightly-1.0.0.dev20250306.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
351
- skypilot_nightly-1.0.0.dev20250306.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
352
- skypilot_nightly-1.0.0.dev20250306.dist-info/RECORD,,
347
+ skypilot_nightly-1.0.0.dev20250308.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
348
+ skypilot_nightly-1.0.0.dev20250308.dist-info/METADATA,sha256=ziejbVFbgs2aPckykoHxpvcuy_dXyuWVrkBR47NG6Kw,18051
349
+ skypilot_nightly-1.0.0.dev20250308.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
350
+ skypilot_nightly-1.0.0.dev20250308.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
351
+ skypilot_nightly-1.0.0.dev20250308.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
352
+ skypilot_nightly-1.0.0.dev20250308.dist-info/RECORD,,