skypilot-nightly 1.0.0.dev20250305__py3-none-any.whl → 1.0.0.dev20250307__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 = '296a22e868b9bdf1faccbe3effbfb858a5a05905'
8
+ _SKYPILOT_COMMIT_SHA = 'f6a65c2ea0ac00976d06e47c46e8df1297cb70a2'
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.dev20250305'
38
+ __version__ = '1.0.0.dev20250307'
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/cli.py CHANGED
@@ -1874,7 +1874,7 @@ def status(verbose: bool, refresh: bool, ip: bool, endpoints: bool,
1874
1874
  num_in_progress_jobs, msg = _handle_jobs_queue_request(
1875
1875
  managed_jobs_queue_request_id,
1876
1876
  show_all=False,
1877
- show_user=False,
1877
+ show_user=all_users,
1878
1878
  limit_num_jobs_to_show=not all,
1879
1879
  is_called_by_user=False)
1880
1880
  except KeyboardInterrupt:
sky/client/cli.py CHANGED
@@ -1874,7 +1874,7 @@ def status(verbose: bool, refresh: bool, ip: bool, endpoints: bool,
1874
1874
  num_in_progress_jobs, msg = _handle_jobs_queue_request(
1875
1875
  managed_jobs_queue_request_id,
1876
1876
  show_all=False,
1877
- show_user=False,
1877
+ show_user=all_users,
1878
1878
  limit_num_jobs_to_show=not all,
1879
1879
  is_called_by_user=False)
1880
1880
  except KeyboardInterrupt:
@@ -9,8 +9,8 @@ import collections
9
9
  import csv
10
10
  import json
11
11
  import math
12
+ import os
12
13
  import re
13
- import sys
14
14
  from typing import Any, Dict, List
15
15
 
16
16
  from sky.adaptors import vast
@@ -38,6 +38,10 @@ def dot_get(d: dict, key: str) -> Any:
38
38
 
39
39
  if __name__ == '__main__':
40
40
  seen = set()
41
+ # InstanceList is the buffered list to emit to
42
+ # the CSV
43
+ csvList = []
44
+
41
45
  # InstanceType and gpuInfo are basically just stubs
42
46
  # so that the dictwriter is happy without weird
43
47
  # code.
@@ -47,8 +51,6 @@ if __name__ == '__main__':
47
51
  ('cpu_ram', 'MemoryGiB'), ('gpu_name', 'GpuInfo'),
48
52
  ('search.totalHour', 'Price'), ('min_bid', 'SpotPrice'),
49
53
  ('geolocation', 'Region'))
50
- writer = csv.DictWriter(sys.stdout, fieldnames=[x[1] for x in mapped_keys])
51
- writer.writeheader()
52
54
 
53
55
  # Vast has a wide variety of machines, some of
54
56
  # which will have less diskspace and network
@@ -141,7 +143,15 @@ if __name__ == '__main__':
141
143
  printstub = f'{stub}#print'
142
144
  if printstub not in seen:
143
145
  instance['SpotPrice'] = f'{maxBid:.2f}'
144
- writer.writerow(instance)
146
+ csvList.append(instance)
145
147
  seen.add(printstub)
146
148
  else:
147
149
  seen.add(stub)
150
+
151
+ os.makedirs('vast', exist_ok=True)
152
+ with open('vast/vms.csv', 'w', newline='', encoding='utf-8') as csvfile:
153
+ writer = csv.DictWriter(csvfile, fieldnames=[x[1] for x in mapped_keys])
154
+ writer.writeheader()
155
+
156
+ for instance in csvList:
157
+ writer.writerow(instance)
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
  )
@@ -341,6 +341,8 @@ def queue(refresh: bool,
341
341
  'status': (sky.jobs.ManagedJobStatus) of the job,
342
342
  'cluster_resources': (str) resources of the cluster,
343
343
  'region': (str) region of the cluster,
344
+ 'user_name': (Optional[str]) job creator's user name,
345
+ 'user_hash': (str) job creator's user hash,
344
346
  }
345
347
  ]
346
348
  Raises:
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/jobs/utils.py CHANGED
@@ -735,6 +735,10 @@ def stream_logs_by_id(job_id: int, follow: bool = True) -> Tuple[str, int]:
735
735
  managed_job_status = managed_job_state.get_status(job_id)
736
736
  assert managed_job_status is not None, job_id
737
737
 
738
+ if not follow and not managed_job_status.is_terminal():
739
+ # The job is not in terminal state and we are not following,
740
+ # just return.
741
+ return '', exceptions.JobExitCode.SUCCEEDED
738
742
  logger.info(
739
743
  ux_utils.finishing_message(f'Managed job finished: {job_id} '
740
744
  f'(status: {managed_job_status.value}).'))
@@ -914,6 +918,10 @@ def load_managed_job_queue(payload: str) -> List[Dict[str, Any]]:
914
918
  jobs = message_utils.decode_payload(payload)
915
919
  for job in jobs:
916
920
  job['status'] = managed_job_state.ManagedJobStatus(job['status'])
921
+ if 'user_hash' in job and job['user_hash'] is not None:
922
+ # Skip jobs that do not have user_hash info.
923
+ # TODO(cooperc): Remove check before 0.12.0.
924
+ job['user_name'] = global_user_state.get_user(job['user_hash']).name
917
925
  return jobs
918
926
 
919
927
 
@@ -1043,16 +1051,21 @@ def format_job_table(
1043
1051
  def get_user_column_values(task: Dict[str, Any]) -> List[str]:
1044
1052
  user_values: List[str] = []
1045
1053
  if show_user:
1054
+ user_name = '-' # default value
1055
+
1056
+ task_user_name = task.get('user_name', None)
1057
+ task_user_hash = task.get('user_hash', None)
1058
+ if task_user_name is not None:
1059
+ user_name = task_user_name
1060
+ elif task_user_hash is not None:
1061
+ # Fallback to the user hash if we are somehow missing the name.
1062
+ user_name = task_user_hash
1046
1063
 
1047
- user_name = '-'
1048
- user_hash = task.get('user_hash', None)
1049
- if user_hash:
1050
- user = global_user_state.get_user(user_hash)
1051
- user_name = user.name if user.name else '-'
1052
1064
  user_values = [user_name]
1053
1065
 
1054
1066
  if show_all:
1055
- user_values.append(user_hash if user_hash is not None else '-')
1067
+ user_values.append(
1068
+ task_user_hash if task_user_hash is not None else '-')
1056
1069
 
1057
1070
  return user_values
1058
1071
 
sky/server/server.py CHANGED
@@ -45,6 +45,7 @@ from sky.utils import admin_policy_utils
45
45
  from sky.utils import common as common_lib
46
46
  from sky.utils import common_utils
47
47
  from sky.utils import dag_utils
48
+ from sky.utils import env_options
48
49
  from sky.utils import status_lib
49
50
 
50
51
  # pylint: disable=ungrouped-imports
@@ -65,6 +66,10 @@ def _add_timestamp_prefix_for_server_logs() -> None:
65
66
  # Add date prefix to the log message printed by loggers under
66
67
  # server.
67
68
  stream_handler = logging.StreamHandler(sys.stdout)
69
+ if env_options.Options.SHOW_DEBUG_INFO.get():
70
+ stream_handler.setLevel(logging.DEBUG)
71
+ else:
72
+ stream_handler.setLevel(logging.INFO)
68
73
  stream_handler.flush = sys.stdout.flush # type: ignore
69
74
  stream_handler.setFormatter(sky_logging.FORMATTER)
70
75
  server_logger.addHandler(stream_handler)
@@ -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/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.dev20250305
3
+ Version: 1.0.0.dev20250307
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -1,8 +1,8 @@
1
- sky/__init__.py,sha256=jx4qQ0KP5eTx7b33ZojeC61vkrA5H7sULXcKLW-vL00,6428
1
+ sky/__init__.py,sha256=cmT84Dydiggdvaa-qQIJa-J9yvRrYJn5nsetNtM2JCo,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
5
- sky/cli.py,sha256=ditGQ-K92yDT_f3a4xqjcqTU1ql33BE4uIy-ArX3BV0,221499
5
+ sky/cli.py,sha256=qBRqtKVV_GurbCFZBHkF2UIahy3A7bsOsmfCNm6mZ54,221503
6
6
  sky/cloud_stores.py,sha256=kEHXd2divyra-1c3EusHxKyM5yTQlTXc6cKVXofsefA,23978
7
7
  sky/core.py,sha256=MU9hcTdh8baMGrr2ZXmbxx12vNlhajrkeyg5QtV717c,47609
8
8
  sky/dag.py,sha256=Yl7Ry26Vql5cv4YMz8g9kOUgtoCihJnw7c8NgZYakMY,3242
@@ -37,13 +37,13 @@ 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
44
44
  sky/benchmark/benchmark_utils.py,sha256=o4RymqSceq5mLEZL0upQM6NVEzJJQzj9s9tTm49uUTc,26365
45
45
  sky/client/__init__.py,sha256=pz6xvVSd9X-gwqbsDL0E9QOojYqM0KAD0j-NCyCIF1k,38
46
- sky/client/cli.py,sha256=ditGQ-K92yDT_f3a4xqjcqTU1ql33BE4uIy-ArX3BV0,221499
46
+ sky/client/cli.py,sha256=qBRqtKVV_GurbCFZBHkF2UIahy3A7bsOsmfCNm6mZ54,221503
47
47
  sky/client/common.py,sha256=axDic7WOG1e78SdFm5XIwdhX7YNvf3g4k7INrsW3X4s,14611
48
48
  sky/client/sdk.py,sha256=IRx72BXqOn_WVvtOuTXfgR5zcSm_lyoXeYxa5c_2_qk,68723
49
49
  sky/clouds/__init__.py,sha256=OW6mJ-9hpJSBORCgt2LippLQEYZHNfnBW1mooRNNvxo,1416
@@ -92,7 +92,7 @@ sky/clouds/service_catalog/data_fetchers/fetch_cudo.py,sha256=52P48lvWN0s1ArjeLP
92
92
  sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py,sha256=hsqpQi_YUI-qil3zLCEGatrR7BkWzywr4otRdHrd-4k,7350
93
93
  sky/clouds/service_catalog/data_fetchers/fetch_gcp.py,sha256=JnugFifzHPQITlbDKoKexE8NqgagOEfQWTxon7P6vJ0,30935
94
94
  sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py,sha256=MUzogyLruLQmIt-To6TsfnGPgv_nnlp49XYbeshsd7I,5003
95
- sky/clouds/service_catalog/data_fetchers/fetch_vast.py,sha256=zR9icM3ty5C8tGw13pQbsBtQQMgG4kl1j_jSGqqrgOA,4741
95
+ sky/clouds/service_catalog/data_fetchers/fetch_vast.py,sha256=MRxk52FUeG-R2hPUbkH44HXRPou73dxXWYAHDEXg3xU,5016
96
96
  sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py,sha256=Opp2r3KSzXPtwk3lKNbO8IX9QzjoRSwy1kW3jPjtS1c,21453
97
97
  sky/clouds/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
98
  sky/clouds/utils/aws_utils.py,sha256=W5BRC-2F_VY4BymRA1kS6-MufsI3V8cfY_hv--4gJBU,1986
@@ -112,16 +112,16 @@ sky/jobs/controller.py,sha256=4G1CKI7M7D1BgJLbJMeqzg0iDDv7FR4ObB1BKZFFjhk,29585
112
112
  sky/jobs/recovery_strategy.py,sha256=RLrqq8B1likxTknPzt3_BqO26sFVpoatxzUuGfwc18A,26170
113
113
  sky/jobs/scheduler.py,sha256=8k2ieJ1TTvJ0TOalnklJtrMwFuatsh-ojoPMBgFRBlI,13119
114
114
  sky/jobs/state.py,sha256=tDULLH6DVs4oKUIKhh0UAn3RzyVGuIUtEq5kW7K1Ojw,44585
115
- sky/jobs/utils.py,sha256=O1cOXeWXzZNxQzEZ4xwadskQr1Azm1pCRe4Ju0dfvfg,55845
115
+ sky/jobs/utils.py,sha256=7CCrN5ByAG5FITXjcpA7n4ZS1xAnC6MKY-vfk-aF5Qg,56526
116
116
  sky/jobs/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
117
  sky/jobs/client/sdk.py,sha256=4STtriCWLUq1mm-tEsh_iXC7r-U7_PY0R9X6-DNpaXs,10122
118
118
  sky/jobs/dashboard/dashboard.py,sha256=JKg8cCH_Y0sf3MoDTx85BghVEXWpp8ItPLshp09-_Js,7618
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=s6A3KJsSQz1GlD6qfJ-XiEg6scc3sqMTqVd1Kr6ZTIU,25113
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
@@ -230,7 +230,7 @@ sky/serve/server/server.py,sha256=gQGVU9nHYdGbaLhGjIUNIYn4xwKjRASRJkiiTL5AI1Y,32
230
230
  sky/server/__init__.py,sha256=MPPBqFzXz6Jv5QSk6td_IcvnfXfNErDZVcizu4MLRow,27
231
231
  sky/server/common.py,sha256=pEa-q3P5aOm6RMlit0pVzlDoJnZU_6zViO7aK_7htn0,17843
232
232
  sky/server/constants.py,sha256=_ZNrxYh8vmgbf3DmkGDduxjvO2y43ZSPTkH5rCNsVjU,770
233
- sky/server/server.py,sha256=VOro33c4ZybLeZF57ANiZRWUjtyUvCDEeQMX7yd_HYE,43271
233
+ sky/server/server.py,sha256=ag2vXO3ESU2BYOMLRkgZhpYR_WrfDB0Zo6wMTnRuy5k,43458
234
234
  sky/server/stream_utils.py,sha256=-3IX1YCgxAFfcvQIV0TCvOn1wbRLWovAx3ckCrsExWU,5651
235
235
  sky/server/html/log.html,sha256=TSGZktua9Ysl_ysg3w60rjxAxhH61AJnsYDHdtqrjmI,6929
236
236
  sky/server/requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -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,7 +307,7 @@ 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
313
  sky/utils/common_utils.py,sha256=1KfqF_hgH9l1ieyV-_3fJd6ma41-tOstj-ihAQcEDIM,31162
@@ -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.dev20250305.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
348
- skypilot_nightly-1.0.0.dev20250305.dist-info/METADATA,sha256=lAGzKAGmMJRgwB6StfHToB5grjGmOXSeJVWQbdYGkhM,18173
349
- skypilot_nightly-1.0.0.dev20250305.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
350
- skypilot_nightly-1.0.0.dev20250305.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
351
- skypilot_nightly-1.0.0.dev20250305.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
352
- skypilot_nightly-1.0.0.dev20250305.dist-info/RECORD,,
347
+ skypilot_nightly-1.0.0.dev20250307.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
348
+ skypilot_nightly-1.0.0.dev20250307.dist-info/METADATA,sha256=O26UAtGUSZuxm_xOzh_sxkbTRyED8VYZtxZwG2nPWx4,18173
349
+ skypilot_nightly-1.0.0.dev20250307.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
350
+ skypilot_nightly-1.0.0.dev20250307.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
351
+ skypilot_nightly-1.0.0.dev20250307.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
352
+ skypilot_nightly-1.0.0.dev20250307.dist-info/RECORD,,