skypilot-nightly 1.0.0.dev20250918__py3-none-any.whl → 1.0.0.dev20250919__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 (48) hide show
  1. sky/__init__.py +2 -2
  2. sky/core.py +67 -45
  3. sky/dashboard/out/404.html +1 -1
  4. sky/dashboard/out/_next/static/{k1mo5xWZrV9djgjd0moOT → VvaUqYDvHOcHZRnvMBmax}/_buildManifest.js +1 -1
  5. sky/dashboard/out/_next/static/chunks/1121-4ff1ec0dbc5792ab.js +1 -0
  6. sky/dashboard/out/_next/static/chunks/3015-88c7c8d69b0b6dba.js +1 -0
  7. sky/dashboard/out/_next/static/chunks/8969-a39efbadcd9fde80.js +1 -0
  8. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-1e9248ddbddcd122.js +16 -0
  9. sky/dashboard/out/_next/static/chunks/pages/clusters/{[cluster]-0b4b35dc1dfe046c.js → [cluster]-9525660179df3605.js} +1 -1
  10. sky/dashboard/out/_next/static/chunks/{webpack-487697b47d8c5e50.js → webpack-b2a3938c22b6647b.js} +1 -1
  11. sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
  12. sky/dashboard/out/clusters/[cluster].html +1 -1
  13. sky/dashboard/out/clusters.html +1 -1
  14. sky/dashboard/out/config.html +1 -1
  15. sky/dashboard/out/index.html +1 -1
  16. sky/dashboard/out/infra/[context].html +1 -1
  17. sky/dashboard/out/infra.html +1 -1
  18. sky/dashboard/out/jobs/[job].html +1 -1
  19. sky/dashboard/out/jobs/pools/[pool].html +1 -1
  20. sky/dashboard/out/jobs.html +1 -1
  21. sky/dashboard/out/users.html +1 -1
  22. sky/dashboard/out/volumes.html +1 -1
  23. sky/dashboard/out/workspace/new.html +1 -1
  24. sky/dashboard/out/workspaces/[name].html +1 -1
  25. sky/dashboard/out/workspaces.html +1 -1
  26. sky/global_user_state.py +83 -54
  27. sky/metrics/utils.py +174 -8
  28. sky/schemas/generated/jobsv1_pb2.py +40 -40
  29. sky/server/metrics.py +52 -158
  30. sky/server/requests/executor.py +9 -8
  31. sky/server/requests/payloads.py +6 -0
  32. sky/server/requests/requests.py +1 -1
  33. sky/server/requests/serializers/encoders.py +3 -2
  34. sky/server/server.py +5 -41
  35. sky/skylet/constants.py +6 -3
  36. sky/skylet/job_lib.py +14 -15
  37. sky/utils/locks.py +41 -10
  38. {skypilot_nightly-1.0.0.dev20250918.dist-info → skypilot_nightly-1.0.0.dev20250919.dist-info}/METADATA +32 -32
  39. {skypilot_nightly-1.0.0.dev20250918.dist-info → skypilot_nightly-1.0.0.dev20250919.dist-info}/RECORD +44 -44
  40. sky/dashboard/out/_next/static/chunks/1121-408ed10b2f9fce17.js +0 -1
  41. sky/dashboard/out/_next/static/chunks/3015-ba5be550eb80fd8c.js +0 -1
  42. sky/dashboard/out/_next/static/chunks/8969-a3e3f0683e19d340.js +0 -1
  43. sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-1cbba24bd1bd35f8.js +0 -16
  44. /sky/dashboard/out/_next/static/{k1mo5xWZrV9djgjd0moOT → VvaUqYDvHOcHZRnvMBmax}/_ssgManifest.js +0 -0
  45. {skypilot_nightly-1.0.0.dev20250918.dist-info → skypilot_nightly-1.0.0.dev20250919.dist-info}/WHEEL +0 -0
  46. {skypilot_nightly-1.0.0.dev20250918.dist-info → skypilot_nightly-1.0.0.dev20250919.dist-info}/entry_points.txt +0 -0
  47. {skypilot_nightly-1.0.0.dev20250918.dist-info → skypilot_nightly-1.0.0.dev20250919.dist-info}/licenses/LICENSE +0 -0
  48. {skypilot_nightly-1.0.0.dev20250918.dist-info → skypilot_nightly-1.0.0.dev20250919.dist-info}/top_level.txt +0 -0
@@ -25,10 +25,10 @@ from sky import exceptions
25
25
  from sky import global_user_state
26
26
  from sky import sky_logging
27
27
  from sky import skypilot_config
28
+ from sky.metrics import utils as metrics_lib
28
29
  from sky.server import common as server_common
29
30
  from sky.server import constants as server_constants
30
31
  from sky.server import daemons
31
- from sky.server import metrics as metrics_lib
32
32
  from sky.server.requests import payloads
33
33
  from sky.server.requests.serializers import decoders
34
34
  from sky.server.requests.serializers import encoders
@@ -185,8 +185,9 @@ def encode_cost_report(
185
185
  for cluster_report in cost_report:
186
186
  if cluster_report['status'] is not None:
187
187
  cluster_report['status'] = cluster_report['status'].value
188
- cluster_report['resources'] = pickle_and_encode(
189
- cluster_report['resources'])
188
+ if 'resources' in cluster_report:
189
+ cluster_report['resources'] = pickle_and_encode(
190
+ cluster_report['resources'])
190
191
  return cost_report
191
192
 
192
193
 
sky/server/server.py CHANGED
@@ -437,7 +437,7 @@ async def loop_lag_monitor(loop: asyncio.AbstractEventLoop,
437
437
  if lag_threshold is not None and lag > lag_threshold:
438
438
  logger.warning(f'Event loop lag {lag} seconds exceeds threshold '
439
439
  f'{lag_threshold} seconds.')
440
- metrics.SKY_APISERVER_EVENT_LOOP_LAG_SECONDS.labels(
440
+ metrics_utils.SKY_APISERVER_EVENT_LOOP_LAG_SECONDS.labels(
441
441
  pid=pid).observe(lag)
442
442
  target = now + interval
443
443
  loop.call_at(target, tick)
@@ -470,7 +470,7 @@ async def lifespan(app: fastapi.FastAPI): # pylint: disable=redefined-outer-nam
470
470
  # can safely ignore the error if the task is already scheduled.
471
471
  logger.debug(f'Request {event.id} already exists.')
472
472
  asyncio.create_task(cleanup_upload_ids())
473
- if metrics.METRICS_ENABLED:
473
+ if metrics_utils.METRICS_ENABLED:
474
474
  # Start monitoring the event loop lag in each server worker
475
475
  # event loop (process).
476
476
  asyncio.create_task(loop_lag_monitor(asyncio.get_event_loop()))
@@ -1743,7 +1743,7 @@ async def kubernetes_pod_ssh_proxy(websocket: fastapi.WebSocket,
1743
1743
  return
1744
1744
 
1745
1745
  logger.info(f'Starting port-forward to local port: {local_port}')
1746
- conn_gauge = metrics.SKY_APISERVER_WEBSOCKET_CONNECTIONS.labels(
1746
+ conn_gauge = metrics_utils.SKY_APISERVER_WEBSOCKET_CONNECTIONS.labels(
1747
1747
  pid=os.getpid())
1748
1748
  ssh_failed = False
1749
1749
  websocket_closed = False
@@ -1807,14 +1807,14 @@ async def kubernetes_pod_ssh_proxy(websocket: fastapi.WebSocket,
1807
1807
  'ssh websocket connection was closed. Remaining '
1808
1808
  f'output: {str(stdout)}')
1809
1809
  reason = 'KubectlPortForwardExit'
1810
- metrics.SKY_APISERVER_WEBSOCKET_CLOSED_TOTAL.labels(
1810
+ metrics_utils.SKY_APISERVER_WEBSOCKET_CLOSED_TOTAL.labels(
1811
1811
  pid=os.getpid(), reason='KubectlPortForwardExit').inc()
1812
1812
  else:
1813
1813
  if ssh_failed:
1814
1814
  reason = 'SSHToPodDisconnected'
1815
1815
  else:
1816
1816
  reason = 'ClientClosed'
1817
- metrics.SKY_APISERVER_WEBSOCKET_CLOSED_TOTAL.labels(
1817
+ metrics_utils.SKY_APISERVER_WEBSOCKET_CLOSED_TOTAL.labels(
1818
1818
  pid=os.getpid(), reason=reason).inc()
1819
1819
 
1820
1820
 
@@ -1831,42 +1831,6 @@ async def all_contexts(request: fastapi.Request) -> None:
1831
1831
  )
1832
1832
 
1833
1833
 
1834
- @app.get('/gpu-metrics')
1835
- async def gpu_metrics() -> fastapi.Response:
1836
- """Gets the GPU metrics from multiple external k8s clusters"""
1837
- contexts = core.get_all_contexts()
1838
- all_metrics: List[str] = []
1839
- successful_contexts = 0
1840
-
1841
- tasks = [
1842
- asyncio.create_task(metrics_utils.get_metrics_for_context(context))
1843
- for context in contexts
1844
- if context != 'in-cluster'
1845
- ]
1846
-
1847
- results = await asyncio.gather(*tasks, return_exceptions=True)
1848
-
1849
- for i, result in enumerate(results):
1850
- if isinstance(result, Exception):
1851
- logger.error(
1852
- f'Failed to get metrics for context {contexts[i]}: {result}')
1853
- elif isinstance(result, BaseException):
1854
- # Avoid changing behavior for non-Exception BaseExceptions
1855
- # like KeyboardInterrupt/SystemExit: re-raise them.
1856
- raise result
1857
- else:
1858
- metrics_text = result
1859
- all_metrics.append(metrics_text)
1860
- successful_contexts += 1
1861
-
1862
- combined_metrics = '\n\n'.join(all_metrics)
1863
-
1864
- # Return as plain text for Prometheus compatibility
1865
- return fastapi.Response(
1866
- content=combined_metrics,
1867
- media_type='text/plain; version=0.0.4; charset=utf-8')
1868
-
1869
-
1870
1834
  # === Internal APIs ===
1871
1835
  @app.get('/api/completion/cluster_name')
1872
1836
  async def complete_cluster_name(incomplete: str,) -> List[str]:
sky/skylet/constants.py CHANGED
@@ -29,6 +29,7 @@ SKY_REMOTE_RAY_PORT_FILE = '~/.sky/ray_port.json'
29
29
  SKY_REMOTE_RAY_TEMPDIR = '/tmp/ray_skypilot'
30
30
  SKY_REMOTE_RAY_VERSION = '2.9.3'
31
31
 
32
+ SKY_UNSET_PYTHONPATH = 'env -u PYTHONPATH'
32
33
  # We store the absolute path of the python executable (/opt/conda/bin/python3)
33
34
  # in this file, so that any future internal commands that need to use python
34
35
  # can use this path. This is useful for the case where the user has a custom
@@ -40,7 +41,7 @@ SKY_GET_PYTHON_PATH_CMD = (f'[ -s {SKY_PYTHON_PATH_FILE} ] && '
40
41
  f'cat {SKY_PYTHON_PATH_FILE} 2> /dev/null || '
41
42
  'which python3')
42
43
  # Python executable, e.g., /opt/conda/bin/python3
43
- SKY_PYTHON_CMD = f'$({SKY_GET_PYTHON_PATH_CMD})'
44
+ SKY_PYTHON_CMD = f'{SKY_UNSET_PYTHONPATH} $({SKY_GET_PYTHON_PATH_CMD})'
44
45
  # Prefer SKY_UV_PIP_CMD, which is faster.
45
46
  # TODO(cooperc): remove remaining usage (GCP TPU setup).
46
47
  SKY_PIP_CMD = f'{SKY_PYTHON_CMD} -m pip'
@@ -56,14 +57,16 @@ SKY_REMOTE_PYTHON_ENV: str = f'~/{SKY_REMOTE_PYTHON_ENV_NAME}'
56
57
  ACTIVATE_SKY_REMOTE_PYTHON_ENV = f'source {SKY_REMOTE_PYTHON_ENV}/bin/activate'
57
58
  # uv is used for venv and pip, much faster than python implementations.
58
59
  SKY_UV_INSTALL_DIR = '"$HOME/.local/bin"'
59
- SKY_UV_CMD = f'UV_SYSTEM_PYTHON=false {SKY_UV_INSTALL_DIR}/uv'
60
+ SKY_UV_CMD = ('UV_SYSTEM_PYTHON=false '
61
+ f'{SKY_UNSET_PYTHONPATH} {SKY_UV_INSTALL_DIR}/uv')
60
62
  # This won't reinstall uv if it's already installed, so it's safe to re-run.
61
63
  SKY_UV_INSTALL_CMD = (f'{SKY_UV_CMD} -V >/dev/null 2>&1 || '
62
64
  'curl -LsSf https://astral.sh/uv/install.sh '
63
65
  f'| UV_INSTALL_DIR={SKY_UV_INSTALL_DIR} sh')
64
66
  SKY_UV_PIP_CMD: str = (f'VIRTUAL_ENV={SKY_REMOTE_PYTHON_ENV} {SKY_UV_CMD} pip')
65
67
  SKY_UV_RUN_CMD: str = (
66
- f'VIRTUAL_ENV={SKY_REMOTE_PYTHON_ENV} {SKY_UV_CMD} run --active')
68
+ f'VIRTUAL_ENV={SKY_REMOTE_PYTHON_ENV} {SKY_UV_CMD} run --active '
69
+ '--no-project --no-config')
67
70
  # Deleting the SKY_REMOTE_PYTHON_ENV_NAME from the PATH and unsetting relevant
68
71
  # VIRTUAL_ENV envvars to deactivate the environment. `deactivate` command does
69
72
  # not work when conda is used.
sky/skylet/job_lib.py CHANGED
@@ -559,21 +559,20 @@ def get_jobs_info(user_hash: Optional[str] = None,
559
559
  jobs_info = []
560
560
  for job in jobs:
561
561
  jobs_info.append(
562
- jobsv1_pb2.JobInfo(
563
- job_id=job['job_id'],
564
- job_name=job['job_name'],
565
- username=job['username'],
566
- submitted_at=job['submitted_at'],
567
- status=job['status'].to_protobuf(),
568
- run_timestamp=job['run_timestamp'],
569
- start_at=job['start_at']
570
- if job['start_at'] is not None else -1.0,
571
- end_at=job['end_at'] if job['end_at'] is not None else 0.0,
572
- resources=job['resources'] or '',
573
- pid=job['pid'],
574
- log_path=os.path.join(constants.SKY_LOGS_DIRECTORY,
575
- job['run_timestamp']),
576
- metadata=json.dumps(job['metadata'])))
562
+ jobsv1_pb2.JobInfo(job_id=job['job_id'],
563
+ job_name=job['job_name'],
564
+ username=job['username'],
565
+ submitted_at=job['submitted_at'],
566
+ status=job['status'].to_protobuf(),
567
+ run_timestamp=job['run_timestamp'],
568
+ start_at=job['start_at'],
569
+ end_at=job['end_at'],
570
+ resources=job['resources'],
571
+ pid=job['pid'],
572
+ log_path=os.path.join(
573
+ constants.SKY_LOGS_DIRECTORY,
574
+ job['run_timestamp']),
575
+ metadata=json.dumps(job['metadata'])))
577
576
  return jobs_info
578
577
 
579
578
 
sky/utils/locks.py CHANGED
@@ -11,6 +11,7 @@ import time
11
11
  from typing import Any, Optional
12
12
 
13
13
  import filelock
14
+ import psycopg2
14
15
  import sqlalchemy
15
16
 
16
17
  from sky import global_user_state
@@ -197,6 +198,7 @@ class PostgresLock(DistributedLock):
197
198
  if engine.dialect.name != db_utils.SQLAlchemyDialect.POSTGRESQL.value:
198
199
  raise ValueError('PostgresLock requires PostgreSQL database. '
199
200
  f'Current dialect: {engine.dialect.name}')
201
+ # Borrow a dedicated connection from the pool.
200
202
  return engine.raw_connection()
201
203
 
202
204
  def acquire(self, blocking: bool = True) -> AcquireReturnProxy:
@@ -233,9 +235,7 @@ class PostgresLock(DistributedLock):
233
235
  time.sleep(self.poll_interval)
234
236
 
235
237
  except Exception:
236
- if self._connection:
237
- self._connection.close()
238
- self._connection = None
238
+ self._close_connection()
239
239
  raise
240
240
 
241
241
  def release(self) -> None:
@@ -248,27 +248,58 @@ class PostgresLock(DistributedLock):
248
248
  cursor.execute('SELECT pg_advisory_unlock(%s)', (self._lock_key,))
249
249
  self._connection.commit()
250
250
  self._acquired = False
251
+ except psycopg2.OperationalError as e:
252
+ # Lost connection to the database, likely the lock is force unlocked
253
+ # by other routines.
254
+ logger.debug(f'Failed to release postgres lock {self.lock_id}: {e}')
251
255
  finally:
252
- if self._connection:
253
- self._connection.close()
254
- self._connection = None
256
+ self._close_connection()
255
257
 
256
258
  def force_unlock(self) -> None:
257
259
  """Force unlock the postgres advisory lock."""
258
260
  try:
259
- if not self._connection:
261
+ # The lock is held by current routine, gracefully unlock it
262
+ if self._acquired:
263
+ self.release()
264
+ return
265
+
266
+ # The lock is held by another routine, force unlock it.
267
+ if self._connection is None:
260
268
  self._connection = self._get_connection()
261
269
  cursor = self._connection.cursor()
262
270
  cursor.execute('SELECT pg_advisory_unlock(%s)', (self._lock_key,))
263
- self._connection.commit()
271
+ result = cursor.fetchone()[0]
272
+ if result:
273
+ # The lock is held by current routine and unlock suceed
274
+ self._connection.commit()
275
+ self._acquired = False
276
+ return
277
+ cursor.execute(
278
+ ('SELECT pid FROM pg_locks WHERE locktype = \'advisory\' '
279
+ 'AND ((classid::bigint << 32) | objid::bigint) = %s'),
280
+ (self._lock_key,))
281
+ row = cursor.fetchone()
282
+ if row:
283
+ # The lock is still held by another routine, false unlock it
284
+ # by killing the PG connection of that routine.
285
+ cursor.execute('SELECT pg_terminate_backend(%s)', (row[0],))
286
+ self._connection.commit()
287
+ return
264
288
  except Exception as e:
265
289
  raise RuntimeError(
266
290
  f'Failed to force unlock postgres lock {self.lock_id}: {e}'
267
291
  ) from e
268
292
  finally:
269
- if self._connection:
293
+ self._close_connection()
294
+
295
+ def _close_connection(self) -> None:
296
+ """Close the postgres connection."""
297
+ if self._connection:
298
+ try:
270
299
  self._connection.close()
271
- self._connection = None
300
+ except Exception as e: # pylint: disable=broad-except
301
+ logger.debug(f'Failed to close postgres connection: {e}')
302
+ self._connection = None
272
303
 
273
304
  def is_locked(self) -> bool:
274
305
  """Check if the postgres advisory lock is acquired."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250918
3
+ Version: 1.0.0.dev20250919
4
4
  Summary: SkyPilot: Run AI on Any Infra — Unified, Faster, Cheaper.
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -152,49 +152,49 @@ Requires-Dist: grpcio>=1.63.0; extra == "server"
152
152
  Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "server"
153
153
  Requires-Dist: aiosqlite; extra == "server"
154
154
  Provides-Extra: all
155
- Requires-Dist: casbin; extra == "all"
155
+ Requires-Dist: docker; extra == "all"
156
+ Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
157
+ Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
158
+ Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
156
159
  Requires-Dist: kubernetes!=32.0.0,>=20.0.0; extra == "all"
157
160
  Requires-Dist: nebius>=0.2.47; extra == "all"
158
- Requires-Dist: ecsapi>=0.2.0; extra == "all"
159
- Requires-Dist: aiosqlite; extra == "all"
160
- Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
161
- Requires-Dist: awscli>=1.27.10; extra == "all"
162
- Requires-Dist: docker; extra == "all"
163
- Requires-Dist: google-cloud-storage; extra == "all"
164
- Requires-Dist: azure-common; extra == "all"
165
- Requires-Dist: ray[default]>=2.6.1; extra == "all"
166
- Requires-Dist: ibm-cloud-sdk-core; extra == "all"
167
- Requires-Dist: python-dateutil; extra == "all"
161
+ Requires-Dist: azure-core>=1.24.0; extra == "all"
162
+ Requires-Dist: ibm-cos-sdk; extra == "all"
168
163
  Requires-Dist: azure-storage-blob>=12.23.1; extra == "all"
169
- Requires-Dist: anyio; extra == "all"
170
- Requires-Dist: azure-identity>=1.19.0; extra == "all"
171
- Requires-Dist: sqlalchemy_adapter; extra == "all"
172
164
  Requires-Dist: boto3>=1.26.1; extra == "all"
173
- Requires-Dist: pydo>=0.3.0; extra == "all"
174
- Requires-Dist: aiohttp; extra == "all"
175
165
  Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
176
- Requires-Dist: colorama<0.4.5; extra == "all"
177
166
  Requires-Dist: azure-core>=1.31.0; extra == "all"
178
- Requires-Dist: msrestazure; extra == "all"
179
- Requires-Dist: cudo-compute>=0.1.10; extra == "all"
167
+ Requires-Dist: passlib; extra == "all"
168
+ Requires-Dist: protobuf<7.0.0,>=5.26.1; extra == "all"
180
169
  Requires-Dist: oci; extra == "all"
181
- Requires-Dist: azure-core>=1.24.0; extra == "all"
182
- Requires-Dist: vastai-sdk>=0.1.12; extra == "all"
183
- Requires-Dist: ibm-vpc; extra == "all"
184
- Requires-Dist: botocore>=1.29.10; extra == "all"
185
- Requires-Dist: google-api-python-client>=2.69.0; extra == "all"
186
170
  Requires-Dist: ibm-platform-services>=0.48.0; extra == "all"
171
+ Requires-Dist: google-cloud-storage; extra == "all"
172
+ Requires-Dist: sqlalchemy_adapter; extra == "all"
173
+ Requires-Dist: runpod>=1.6.1; extra == "all"
174
+ Requires-Dist: azure-common; extra == "all"
175
+ Requires-Dist: ibm-cloud-sdk-core; extra == "all"
176
+ Requires-Dist: awscli>=1.27.10; extra == "all"
177
+ Requires-Dist: ray[default]>=2.6.1; extra == "all"
187
178
  Requires-Dist: msgraph-sdk; extra == "all"
188
- Requires-Dist: ibm-cos-sdk; extra == "all"
189
- Requires-Dist: azure-mgmt-network>=27.0.0; extra == "all"
190
- Requires-Dist: pyopenssl<24.3.0,>=23.2.0; extra == "all"
179
+ Requires-Dist: ecsapi>=0.2.0; extra == "all"
191
180
  Requires-Dist: azure-mgmt-compute>=33.0.0; extra == "all"
192
- Requires-Dist: grpcio>=1.63.0; extra == "all"
181
+ Requires-Dist: botocore>=1.29.10; extra == "all"
182
+ Requires-Dist: ibm-vpc; extra == "all"
183
+ Requires-Dist: azure-mgmt-network>=27.0.0; extra == "all"
184
+ Requires-Dist: cudo-compute>=0.1.10; extra == "all"
185
+ Requires-Dist: colorama<0.4.5; extra == "all"
186
+ Requires-Dist: azure-cli>=2.65.0; extra == "all"
187
+ Requires-Dist: python-dateutil; extra == "all"
188
+ Requires-Dist: aiohttp; extra == "all"
189
+ Requires-Dist: aiosqlite; extra == "all"
190
+ Requires-Dist: anyio; extra == "all"
193
191
  Requires-Dist: pyjwt; extra == "all"
194
192
  Requires-Dist: websockets; extra == "all"
195
- Requires-Dist: passlib; extra == "all"
196
- Requires-Dist: runpod>=1.6.1; extra == "all"
197
- Requires-Dist: azure-cli>=2.65.0; extra == "all"
193
+ Requires-Dist: azure-identity>=1.19.0; extra == "all"
194
+ Requires-Dist: grpcio>=1.63.0; extra == "all"
195
+ Requires-Dist: msrestazure; extra == "all"
196
+ Requires-Dist: casbin; extra == "all"
197
+ Requires-Dist: pydo>=0.3.0; extra == "all"
198
198
  Dynamic: author
199
199
  Dynamic: classifier
200
200
  Dynamic: description
@@ -1,14 +1,14 @@
1
- sky/__init__.py,sha256=8ZWTPlAPs4QmMll0VkMARnkZy1e5NtkbaCy-PS-KrzY,6713
1
+ sky/__init__.py,sha256=hfSFhSEtc3jWukybx_t0ZIp2z-SF3JFTtTVKdxXm__g,6713
2
2
  sky/admin_policy.py,sha256=XdcJnYqmude-LGGop-8U-FeiJcqtfYsYtIy4rmoCJnM,9799
3
3
  sky/authentication.py,sha256=xWdnHD4b172-FPTcVFmRhYvt_JNVLYvgFkaFS5qvs-k,28210
4
4
  sky/check.py,sha256=Z7D6txaOAEL7fyEQ8q-Zxk1aWaHpEcl412Rj2mThbQ0,31025
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=usdYZJbvLUmrqxYevHC_D9VxKkDsCm-VduYyh3_XQi4,59402
7
+ sky/core.py,sha256=3qw6-UgdLi7I4eyvPubJ9aWr-MPVJr7TIJWujlSGhO8,60163
8
8
  sky/dag.py,sha256=0ZpAEDXuIFo1SP7YJpF9vXiFxpRwqP8od-UXMg95td8,3929
9
9
  sky/exceptions.py,sha256=IprWNwo6z5cHE-vTuQ5bMcjCfE2kgwZ3PRuawLPucXY,20466
10
10
  sky/execution.py,sha256=UyxO73HWUXW5gJwBiSMcQ6_dwSJm8vEh0xz7SXqhW9w,34992
11
- sky/global_user_state.py,sha256=5WJOEnvTy5DwkSBfiS5hYm-DT1NdwRepof9wesaxTEc,92754
11
+ sky/global_user_state.py,sha256=11_ho8gFV1SrwyVl3kq6JDQ0zRjg4mJ4zekIDDnJ6VQ,94004
12
12
  sky/models.py,sha256=ZKisLai7vqUr6_BPev6Oziu5N23WLzTh9nRtHSlRchw,3999
13
13
  sky/optimizer.py,sha256=iR57bL_8BeG6bh1sH3J6n6i65EBFjmyftezYM4nnDZA,64150
14
14
  sky/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -118,23 +118,25 @@ sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4
118
118
  sky/clouds/utils/gcp_utils.py,sha256=09MF4Vx0EW7S-GXGpyxpl2aQlHrqeu9ioV0nyionAyk,9890
119
119
  sky/clouds/utils/oci_utils.py,sha256=TFqAqRLggg4Z0bhxrrq8nouSSomZy-ub1frHXEkud2M,7302
120
120
  sky/clouds/utils/scp_utils.py,sha256=VGuccVO5uFGr8-yolWSoYrgr11z6cIeDBGcqkBzAyOs,18409
121
- sky/dashboard/out/404.html,sha256=_8plpMgwHVgcZ3tJCmMltf-wKgkDvPtY25CieUMcCFs,1423
122
- sky/dashboard/out/clusters.html,sha256=PQYTGaGqpALtxByasSbBE8IRaWpXivQ9176euM6fZQM,1418
123
- sky/dashboard/out/config.html,sha256=osGf8aiDiJfLm0gqxFpWy7ItArV8NpQwB_k5CEjHrzI,1414
121
+ sky/dashboard/out/404.html,sha256=9rjJLfta-90vi69dfPEJxy6yv9zIUdZMi9eiu2xElng,1423
122
+ sky/dashboard/out/clusters.html,sha256=aLf8LqlQZToT6ofHZEIv-9YOY3C05VoOoT_tWA7Xibo,1418
123
+ sky/dashboard/out/config.html,sha256=1Tl0Ld_A24LFG9mbDAc_-6rnvD_ya00rAHBtKnK1I8A,1414
124
124
  sky/dashboard/out/favicon.ico,sha256=XilUZZglAl_1zRsg85QsbQgmQAzGPQjcUIJ-A3AzYn8,93590
125
- sky/dashboard/out/index.html,sha256=Lbd4CDrn60n0Y69vs5yNEVxM8Yu0JkR4p2tsScQI2KA,1407
126
- sky/dashboard/out/infra.html,sha256=Zq8yFTmNJx37FRW2KcIAYGo5zgIkwRr_dZMj-mLhxTY,1412
127
- sky/dashboard/out/jobs.html,sha256=4DLXbUUAWneNExZQ1doLvT8fjoggVmLUWlE0qwyl4qI,1410
125
+ sky/dashboard/out/index.html,sha256=zeSB_JVz1a9CcfyYOnxeUqvbcC9yA8hNasrpsq-Su-M,1407
126
+ sky/dashboard/out/infra.html,sha256=6cgz733OfxJb9RGujgrl13aCjN6FlZFgjMW7vc6jEG0,1412
127
+ sky/dashboard/out/jobs.html,sha256=5e1O6_xAfc-H6L_cETw6RCM8wjG7mWyKUaSMPdbNNpE,1410
128
128
  sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
129
- sky/dashboard/out/users.html,sha256=zBZIswypEz_cCT0B54WI1V6soHQZPd2W-dJmhr_3qCY,1412
130
- sky/dashboard/out/volumes.html,sha256=VdEKCq6hDOEAAJrpQyOsbzr-A7_Isfh8PDLq5PFZvsY,1416
131
- sky/dashboard/out/workspaces.html,sha256=eE5pljYZn2yXSJm3hDFgBxBBX1aP4IlsrCHFBMqmmKE,1422
132
- sky/dashboard/out/_next/static/chunks/1121-408ed10b2f9fce17.js,sha256=WRuwuuT4OiOBZc-c8VIS-vO9wtyRdKvGN51obQLfxwA,8596
129
+ sky/dashboard/out/users.html,sha256=YiVDRAE81pzuJ6NmVYIqVHYWopKkunn2d9dCBqvrRz0,1412
130
+ sky/dashboard/out/volumes.html,sha256=N_hKAT1SUPCZQSNybs2etU-06o6QxkepQTNEqgfIztA,1416
131
+ sky/dashboard/out/workspaces.html,sha256=7HNm-o2bB44r9yl3P9Y7S7VX2zoEyM4EqmTiTtkZotk,1422
132
+ sky/dashboard/out/_next/static/VvaUqYDvHOcHZRnvMBmax/_buildManifest.js,sha256=nhkFf4m1QrifP1px49lr0PSmeYWVtOW7tYuUAwVnnAo,2428
133
+ sky/dashboard/out/_next/static/VvaUqYDvHOcHZRnvMBmax/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
134
+ sky/dashboard/out/_next/static/chunks/1121-4ff1ec0dbc5792ab.js,sha256=1fadKcg_cxgxKqSPoMpMwePAvp31R1NdAUuMC3ZxKD4,8726
133
135
  sky/dashboard/out/_next/static/chunks/1141-159df2d4c441a9d1.js,sha256=kdYh_Ek9hdib5emC7Iezojh3qASBnOIUHH5zX_ScR0U,17355
134
136
  sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js,sha256=VJ6y-Z6Eg2T93hQIRfWAbjAkQ7nQhglmIaVbEpKSILY,38451
135
137
  sky/dashboard/out/_next/static/chunks/1836-37fede578e2da5f8.js,sha256=2ibdKVUjO2N62T4dtfY0xsRFwG-IJh41sK450Dv0_48,10554
136
138
  sky/dashboard/out/_next/static/chunks/2350.fab69e61bac57b23.js,sha256=TQCHO4AUL9MZo1e_8GOiL8y6vjQpj5tdXZ8oCKwM1LA,271
137
- sky/dashboard/out/_next/static/chunks/3015-ba5be550eb80fd8c.js,sha256=uWX2IuMJj1_tsYx6QmouxJNaOMFQ-Zut0m68HYemc3k,39029
139
+ sky/dashboard/out/_next/static/chunks/3015-88c7c8d69b0b6dba.js,sha256=vLsGnavwf14nRl-XTDt9f1vaktbXDWH6YiJfUEzvLYk,39337
138
140
  sky/dashboard/out/_next/static/chunks/3294.03e02ae73455f48e.js,sha256=33v3Ywgcb0D2efUW5vg3z58jIGPoMjJYd5z2Mm5D144,43101
139
141
  sky/dashboard/out/_next/static/chunks/3785.0fa442e16dd3f00e.js,sha256=4jP00x0jORTUAIGFUlQu_Ut-T07_OmfH46D5Nut_crQ,4438
140
142
  sky/dashboard/out/_next/static/chunks/3850-ff4a9a69d978632b.js,sha256=XphBY9psNzmvGD28zgDunQEb-TX0_eOVaElmcuOjD1g,7455
@@ -156,7 +158,7 @@ sky/dashboard/out/_next/static/chunks/7325.b4bc99ce0892dcd5.js,sha256=5x42A-PEZA
156
158
  sky/dashboard/out/_next/static/chunks/7411-b15471acd2cba716.js,sha256=Dnmr9e-yZQbnkjwzqIZU3aK-3u1Tqr8STF-ODYWLkaw,13304
157
159
  sky/dashboard/out/_next/static/chunks/754-d0da8ab45f9509e9.js,sha256=R6UUmK1P1PfVx9zOU0jlBsVSk5ZchuPwWObAeVkkhU0,785694
158
160
  sky/dashboard/out/_next/static/chunks/7669.1f5d9a402bf5cc42.js,sha256=FbppLXkHKPxzVKrJg15FwCoqLU18yn5jBgYgDkjqDGM,52179
159
- sky/dashboard/out/_next/static/chunks/8969-a3e3f0683e19d340.js,sha256=8L1wEQrSUPZYdCF7pw3Z6ipxZ8CrZUZG2iMPq3K43LU,13467
161
+ sky/dashboard/out/_next/static/chunks/8969-a39efbadcd9fde80.js,sha256=4HT_stPoASUeaJ7Ftg-ZuZ__5AP0IfCThDq8r6t0BDY,13298
160
162
  sky/dashboard/out/_next/static/chunks/9025.c12318fb6a1a9093.js,sha256=1Txv8nMuBYtB0UoWdwmFbkA2iB85jgKB1EJJrE1ETDo,10605
161
163
  sky/dashboard/out/_next/static/chunks/9037-472ee1222cb1e158.js,sha256=dM8Nxccil5uKAum598vcOVEfbnuoC41dSKyuxT3S3cs,18957
162
164
  sky/dashboard/out/_next/static/chunks/fd9d1056-86323a29a8f7e46a.js,sha256=2lquiZSfbI-gX4j4TW4JSMLL_D5ShqwydgWpFyXrTy8,172834
@@ -164,7 +166,7 @@ sky/dashboard/out/_next/static/chunks/framework-cf60a09ccd051a10.js,sha256=_Qbam
164
166
  sky/dashboard/out/_next/static/chunks/main-app-587214043926b3cc.js,sha256=t7glRfataAjNw691Wni-ZU4a3BsygRzPKoI8NOm-lsY,116244
165
167
  sky/dashboard/out/_next/static/chunks/main-f15ccb73239a3bf1.js,sha256=jxOPLDVX3rkMc_jvGx2a-N2v6mvfOa8O6V0o-sLT0tI,110208
166
168
  sky/dashboard/out/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
167
- sky/dashboard/out/_next/static/chunks/webpack-487697b47d8c5e50.js,sha256=FOMrLqQJmpNybO4mGNKWzTVSEjDb7BX732xdemMb6Go,4742
169
+ sky/dashboard/out/_next/static/chunks/webpack-b2a3938c22b6647b.js,sha256=lad41ZPnWDm8MAZ6Baa84QU3iOIFu6ulB4299DQI_d4,4742
168
170
  sky/dashboard/out/_next/static/chunks/pages/_app-ce361c6959bc2001.js,sha256=mllo4Yasw61zRtEO49uE_MrAutg9josSJShD0DNSjf0,95518
169
171
  sky/dashboard/out/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js,sha256=vjERjtMAbVk-19LyPf1Jc-H6TMcrSznSz6brzNqbqf8,253
170
172
  sky/dashboard/out/_next/static/chunks/pages/clusters-469814d711d63b1b.js,sha256=p8CQtv5n745WbV7QdyCapmglI2s_2UBB-f_KZE4RAZg,879
@@ -175,24 +177,22 @@ sky/dashboard/out/_next/static/chunks/pages/jobs-1f70d9faa564804f.js,sha256=Jru6
175
177
  sky/dashboard/out/_next/static/chunks/pages/users-018bf31cda52e11b.js,sha256=mZuU1XexJy9ix9hAMnH0l2btGQHJPxohZg4K7NY8faA,838
176
178
  sky/dashboard/out/_next/static/chunks/pages/volumes-739726d6b823f532.js,sha256=URJ4PMHh15XCXB6os2a7ymR3mG3MfTNrKyizYEhW2OE,836
177
179
  sky/dashboard/out/_next/static/chunks/pages/workspaces-7528cc0ef8c522c5.js,sha256=y_qEXM9YPRja20D8IVLj8mgIEHQPQr2Le733bVrsXJw,863
178
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-0b4b35dc1dfe046c.js,sha256=w4xXHVeRMtj-YgS247UzTnAQFY2Sn_f3lChW1YoyZZ4,19554
179
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-1cbba24bd1bd35f8.js,sha256=20rZ66tPurBar9qA5ijkEN71Ym3Ym4e1GFA5nF5imAc,25799
180
+ sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-9525660179df3605.js,sha256=ij1iAF5yZv1ujW5rVTit7sx8bLN8kgypdR-us_4YLv8,19558
181
+ sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-1e9248ddbddcd122.js,sha256=ijuYtXDa5gL2aZcPObamRHV030uPT5pPwKrL9oOTsXQ,25929
180
182
  sky/dashboard/out/_next/static/chunks/pages/infra/[context]-6563820e094f68ca.js,sha256=P3fWbG3DX-Q1SusyuaCuJILvs9suIxNsdo1SRAenZpc,847
181
183
  sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-dd64309c3fe67ed2.js,sha256=pDCMgJauG-gMgWzCSTF3CBcc_WduZw75NhuyRBbm8bg,29203
182
184
  sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-07349868f7905d37.js,sha256=Q0LIzBnqZxcH4wL87way-kjcfK74u2K75ytBzz4W0PY,25590
183
185
  sky/dashboard/out/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js,sha256=83s5N5CZwIaRcmYMfqn2we60n2VRmgFw6Tbx18b8-e0,762
184
186
  sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-af76bb06dbb3954f.js,sha256=cGCpDszMI6ckUHVelwAh9ZVk1erfz_UXSLz9GCqGUAE,1495
185
187
  sky/dashboard/out/_next/static/css/4614e06482d7309e.css,sha256=nk6GriyGVd1aGXrLd7BcMibnN4v0z-Q_mXGxrHFWqrE,56126
186
- sky/dashboard/out/_next/static/k1mo5xWZrV9djgjd0moOT/_buildManifest.js,sha256=2bE-aEgYHfWq6qTLcEGy1fLjLgmhR4No_Q_ZOY7CFcU,2428
187
- sky/dashboard/out/_next/static/k1mo5xWZrV9djgjd0moOT/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
188
- sky/dashboard/out/clusters/[cluster].html,sha256=6aviIQgz1sP_tTPpUlCFr9iEvpqA6W0XBOI5SQ7xNSs,2936
189
- sky/dashboard/out/clusters/[cluster]/[job].html,sha256=oBPGjHNGkspQy5bbKNs1bW7r_rfqKmPfas9zCURDwc4,2073
190
- sky/dashboard/out/infra/[context].html,sha256=tXhpv_SZo15i_4EoTweUVhVG7zC56cFkWuRWtIJ5WEc,1436
191
- sky/dashboard/out/jobs/[job].html,sha256=YeKXR6Q8V1arQarvlGPYEggfRKuaSa5kmiZkhFcpIBA,2304
192
- sky/dashboard/out/jobs/pools/[pool].html,sha256=bB0Hjgnae_aI7-PDiQJAT-ZHvHovCwf2GtP5PrhIgzU,2142
188
+ sky/dashboard/out/clusters/[cluster].html,sha256=vMWkqwtoNc12xcvH1Nx7ysMHUj58JQwRTxDFDzvazyk,2936
189
+ sky/dashboard/out/clusters/[cluster]/[job].html,sha256=Oq-R0pV-3TNIAUZ2K72yH69PwpSEOooRqKbx3utEVwQ,2073
190
+ sky/dashboard/out/infra/[context].html,sha256=Xm-H0s_cjyfChCxSN7W1blW_7fvES5n-n5Dck6V2wMY,1436
191
+ sky/dashboard/out/jobs/[job].html,sha256=oIE4Hka05dC9fw8J7rsQ6jJiry7lqzHRhghsSDyjFA0,2304
192
+ sky/dashboard/out/jobs/pools/[pool].html,sha256=PgESiYITjomyMFG0rWj1R581IRAsbRJJBtmtKCgO9Lk,2142
193
193
  sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
194
- sky/dashboard/out/workspace/new.html,sha256=xovBc2uiL3LcaWBkDGKiotNJB4mRkW3M3jVptLZPpT0,1428
195
- sky/dashboard/out/workspaces/[name].html,sha256=VoBhyaGh-P_rAOp3JbkjkKtUC1ag_rMXgVpUHqkP4Qg,2759
194
+ sky/dashboard/out/workspace/new.html,sha256=IjNk4cc53KLRm5WV94HaSsCyRy-a7tc-LChWGxmWJQQ,1428
195
+ sky/dashboard/out/workspaces/[name].html,sha256=a-OJSufbfpCKyfqqhtkrMufJ5YQ8ohgL6K5nmyaHbFE,2759
196
196
  sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
197
197
  sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
198
198
  sky/data/data_utils.py,sha256=AjEA_JRjo9NBMlv-Lq5iV4lBED_YZ1VqBR9pG6fGVWE,35179
@@ -218,7 +218,7 @@ sky/logs/agent.py,sha256=8xbfGZq5EnOCaJarIHnrd_TEf5Km0dcr5mcJbdgxxhc,3512
218
218
  sky/logs/aws.py,sha256=zMwFXltxhhrigPLWGLD4bIWs2XnsLvabgGI12MoS1nE,9938
219
219
  sky/logs/gcp.py,sha256=eKVEcHO3FJRg_YTcE9omE8uAIF6AdBWWpkEPqWFAqXg,3857
220
220
  sky/metrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
221
- sky/metrics/utils.py,sha256=Cww3yNG4HyW4DEdLOFUayFgMZ16t2JFSvvhuTTV7Vio,7654
221
+ sky/metrics/utils.py,sha256=CKO4utSdYE--ND4PrM2WJUIoA33HT0jDe7-lqVeSrZA,12860
222
222
  sky/provision/__init__.py,sha256=nPs7xjsP-phhvkmEjvx7KEE3FeoYrjalZSr_88yDYyk,8938
223
223
  sky/provision/common.py,sha256=LdjM9SL9NDtsARom12tVv_WoUNL3PTlU5RoLfeWGGgM,10807
224
224
  sky/provision/constants.py,sha256=oc_XDUkcoLQ_lwDy5yMeMSWviKS0j0s1c0pjlvpNeWY,800
@@ -348,7 +348,7 @@ sky/schemas/generated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
348
348
  sky/schemas/generated/autostopv1_pb2.py,sha256=3w4k0woHFxK0qXvYGljLtqpp3IB-oGV15ouKWCUI3l4,2464
349
349
  sky/schemas/generated/autostopv1_pb2.pyi,sha256=1slXiAfgnh-Ds-yHJglvhGddatmlOPfh3AAOCheipCk,1772
350
350
  sky/schemas/generated/autostopv1_pb2_grpc.py,sha256=sUoHZNUNjxpsiYzJhSchC7p-uvigYuh8DwhhyhgfPcE,5921
351
- sky/schemas/generated/jobsv1_pb2.py,sha256=oJ6hMmWy6RXRVh0yaxsMABX0SLUl-JKzpJ43MPT8B5o,9992
351
+ sky/schemas/generated/jobsv1_pb2.py,sha256=GZ4gVESMl2qxihQJLUZNTlTS6AjC1n4031z1-DwLVG0,10092
352
352
  sky/schemas/generated/jobsv1_pb2.pyi,sha256=qNQlJ2NAR1V6HrtLO8bZWc5PhEcUrbVZri4VuoZm2es,10675
353
353
  sky/schemas/generated/jobsv1_pb2_grpc.py,sha256=1QPd4wx09Hxjot3VpO3TPEbzouMA_cLG4cc-gZFYSSA,22959
354
354
  sky/schemas/generated/servev1_pb2.py,sha256=1mNJoOB8N-c26WJCRvtk5Q4bkLYGjSKhVAo5ywufZbs,5263
@@ -380,9 +380,9 @@ sky/server/common.py,sha256=V3n_-8im0vpnYHr4AJRye_yiYxsu8xedYcs2xMPUPWw,40191
380
380
  sky/server/config.py,sha256=Ivim-8YmFzNJpOub0QrEMfhK88hI3jap2vuEpPg4vNM,11049
381
381
  sky/server/constants.py,sha256=1kIHuD-8T6KMNFpLgt4Urx9qVUvgdzmmlLfc4kmdQCM,2456
382
382
  sky/server/daemons.py,sha256=THVc5GgF4jCqhhanNVH4iBOUPU5TKlCi7VSWeQyqVTU,9131
383
- sky/server/metrics.py,sha256=uzEQYruTC_Q6lrSP3AZaic9EBMTZ3H5W5h348FXFaXc,8641
383
+ sky/server/metrics.py,sha256=Aa7ZIPGpK3IZXicliX32_EIjY6ejcR_kr8C1p1yvuC8,5696
384
384
  sky/server/rest.py,sha256=6Qcn6fjypP3j9UHdKRgvt2-PU1LKz2VU2aVQEA1D6EI,14354
385
- sky/server/server.py,sha256=hnDKrHPf9IB-Z3Pkrze88n0gcr_BLXS2YBFyWSqwiMQ,83760
385
+ sky/server/server.py,sha256=tO7v41L0MhQmqrT05KD0ODIbZ2W9BuZ3V6a3SQD3fGs,82562
386
386
  sky/server/state.py,sha256=YbVOMJ1JipQQv17gLIGyiGN7MKfnP83qlUa5MB1z0Yk,747
387
387
  sky/server/stream_utils.py,sha256=RrxRjZR0623A_ITjSMgUmDlXcSkT8NnNjb4f24OLiAE,9613
388
388
  sky/server/uvicorn.py,sha256=lJROnpJqoZr59zGwYa_pUniV7rEwmZn0PV4t-YYY-yo,11832
@@ -394,17 +394,17 @@ sky/server/html/log.html,sha256=TSGZktua9Ysl_ysg3w60rjxAxhH61AJnsYDHdtqrjmI,6929
394
394
  sky/server/html/token_page.html,sha256=eUndS5u1foL9vaWGPRTLMt7lCzD1g0wYJ2v_EeeFzlc,7046
395
395
  sky/server/requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
396
396
  sky/server/requests/event_loop.py,sha256=OhpPbuce65bbjpGRlcJa78AVnYSm08SzFKt70ypCUuQ,1211
397
- sky/server/requests/executor.py,sha256=ki_eMuNoWc890JAm9bWI-MEqbeYKikQycIEw-kf2Y-M,31228
398
- sky/server/requests/payloads.py,sha256=ftoUNiBDRPBOQw8nSRXW6zQv8uI9SICdznarh701Brs,27032
397
+ sky/server/requests/executor.py,sha256=amcxgJKg6_LrKhpkf9FIRaMYHhyYlFTd_BVg7aD8gKY,31288
398
+ sky/server/requests/payloads.py,sha256=4c188kudguRYnifUdrG7sYPZTkBH9aelFcaXdN3UyiY,27292
399
399
  sky/server/requests/preconditions.py,sha256=KxTAoYqpJU96Ot36NHtRq3PC3f_BXk_cHI0b2eA8U6A,7323
400
400
  sky/server/requests/process.py,sha256=UpJp5rZizNMFRCNRtudFSjbcJhFarFbtAGDWI9x_ZyE,13197
401
- sky/server/requests/requests.py,sha256=T6-cYE5h3qGiPadt7jQV8t0UTQXAEGK1Ejx5XThEYIE,30147
401
+ sky/server/requests/requests.py,sha256=wqiAiH4miFz3C2ZC5tDK-YQgAVMnpbE0wBiKx0nI39c,30146
402
402
  sky/server/requests/queues/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
403
403
  sky/server/requests/queues/local_queue.py,sha256=X6VkBiUmgd_kfqIK1hCtMWG1b8GiZbY70TBiBR6c6GY,416
404
404
  sky/server/requests/queues/mp_queue.py,sha256=jDqP4Jd28U3ibSFyMR1DF9I2OWZrPZqFJrG5S6RFpyw,3403
405
405
  sky/server/requests/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
406
406
  sky/server/requests/serializers/decoders.py,sha256=3SSfn1S1H0zEwncMRw3D8pfyqz_sWkWweBqnX-8Lr3I,7652
407
- sky/server/requests/serializers/encoders.py,sha256=ZZgwI-mFf9p3UTTOaotRRuPqIPhq5jrL7j2aMwb1_Oo,7850
407
+ sky/server/requests/serializers/encoders.py,sha256=nAiFssF3UD6dt0LdiGVpvpod90HmnyXZVZ2fO-UE8iA,7900
408
408
  sky/setup_files/MANIFEST.in,sha256=4gbgHHwSdP6BbMJv5XOt-2K6wUVWF_T9CGsdESvh918,776
409
409
  sky/setup_files/alembic.ini,sha256=854_UKvCaFmZ8vI16tSHbGgP9IMFQ42Td6c9Zmn2Oxs,5079
410
410
  sky/setup_files/dependencies.py,sha256=-ItE3MpA_0SoKYcvD8D-DLLcNnNjoQBC4tY4V136Ay8,8286
@@ -414,9 +414,9 @@ sky/skylet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
414
414
  sky/skylet/attempt_skylet.py,sha256=BbnCgMDGc1wxZx6Olp7ezhsXC0E1aYhmfug-9NrJ00g,2137
415
415
  sky/skylet/autostop_lib.py,sha256=2eab980ckQ5dA2DFAJlI5bAJ6EI7YI-JSlzFoTA9XwU,9698
416
416
  sky/skylet/configs.py,sha256=nNBnpuzoU696FbC3Nv0qKVSDuTw4GAbr7eCcg0_Sldo,2135
417
- sky/skylet/constants.py,sha256=4oK1EZm-cImRMs4BmR1bt4-VtbjVgozYh-6LwJ5oUqI,24523
417
+ sky/skylet/constants.py,sha256=9ji_rgzsj2gyUsx2R6RDZSQ3y1mM7mMBvZiTjuU2cog,24663
418
418
  sky/skylet/events.py,sha256=2BX2fr-vLpu2kAP3D4W6DmLPVa0jmZAotZ7g_cTIwqg,13558
419
- sky/skylet/job_lib.py,sha256=LQ0p61CE5vrMLHZlhbEtpOl-Dta0YHHbFJHTbWZf4VU,54152
419
+ sky/skylet/job_lib.py,sha256=-qzv1nCGrrN5zB8ZueBFlLDOlmQtP7DRuCu62GrJQus,54232
420
420
  sky/skylet/log_lib.py,sha256=EC-Vmnz86Uz5SLpiz9p14J3owBaF-GbFkyixQ3KfPqg,23775
421
421
  sky/skylet/log_lib.pyi,sha256=OI4izel66u3Rr3H6OFXRIJfmM8HJD30VPpdlfwqM3IU,4762
422
422
  sky/skylet/services.py,sha256=CKtdnWDbb4eOKVGIZ7MvSJqR13YaJoP2kvBHsN64GDA,16530
@@ -507,7 +507,7 @@ sky/utils/git_clone.sh,sha256=hXOz7i1MCYl2IwMdKnFYhinhh8Jaf5a1Qwd65cePQYc,17790
507
507
  sky/utils/infra_utils.py,sha256=WkkB4Hj6CX-3eV029fPYqydNVyFZ8ZwRAVA_GCLJ9QU,6981
508
508
  sky/utils/kubernetes_enums.py,sha256=t0OIohiphgyo78RG4MUg0gOjRea5l6ZMRXlS34J-NaA,1412
509
509
  sky/utils/lock_events.py,sha256=qX4-Nlzm4S9bTD4e2eg2Vgn4AOlTjy7rhzLS_0B1IdA,2827
510
- sky/utils/locks.py,sha256=L51SbGY48b1gQQp8qk3HBentcENozYx1u68KuNL-_Jo,10729
510
+ sky/utils/locks.py,sha256=qGxjEJXOyobhiHkeEn1LEFM2mBDhkWUhleLvWMoYb2A,12144
511
511
  sky/utils/log_utils.py,sha256=RB5n58CAWmVepd_RAf-mjL2EViBFbtkPtSB5jJT6pLY,29684
512
512
  sky/utils/message_utils.py,sha256=zi2Z7PEX6Xq_zvho-aEZe_J7UvpKOLdVDdGAcipRQPU,2662
513
513
  sky/utils/perf_utils.py,sha256=HxmTmVQc5DSfqJwISPxdVLWmUxNZHbibJg1kKVI-1Cg,700
@@ -562,9 +562,9 @@ sky/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
562
562
  sky/workspaces/core.py,sha256=kRrdh-8MhX1953pML1B_DoStnDuNrsmHcZlnWoAxVo0,27218
563
563
  sky/workspaces/server.py,sha256=Box45DS54xXGHy7I3tGKGy-JP0a8G_z6IhfvGlEXtsA,3439
564
564
  sky/workspaces/utils.py,sha256=IIAiFoS6sdb2t0X5YoX9AietpTanZUQNTK8cePun-sY,2143
565
- skypilot_nightly-1.0.0.dev20250918.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
566
- skypilot_nightly-1.0.0.dev20250918.dist-info/METADATA,sha256=Twf4-WGGzholwjRsDQ93Uu02qO8a96Y3NOADQMm9ric,20085
567
- skypilot_nightly-1.0.0.dev20250918.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
568
- skypilot_nightly-1.0.0.dev20250918.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
569
- skypilot_nightly-1.0.0.dev20250918.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
570
- skypilot_nightly-1.0.0.dev20250918.dist-info/RECORD,,
565
+ skypilot_nightly-1.0.0.dev20250919.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
566
+ skypilot_nightly-1.0.0.dev20250919.dist-info/METADATA,sha256=4we6fq-E56Mu-nGaMAhldjIkzlgJoLnTjc-POxGHkvU,20085
567
+ skypilot_nightly-1.0.0.dev20250919.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
568
+ skypilot_nightly-1.0.0.dev20250919.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
569
+ skypilot_nightly-1.0.0.dev20250919.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
570
+ skypilot_nightly-1.0.0.dev20250919.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1121],{50326:function(e,t,a){a.d(t,{$N:function(){return _},Be:function(){return g},Vq:function(){return c},cN:function(){return m},cZ:function(){return d},fK:function(){return f}});var r=a(85893),s=a(67294),o=a(6327),n=a(32350),l=a(43767);let c=o.fC;o.xz;let u=o.h_;o.x8;let i=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(o.aV,{ref:t,className:(0,n.cn)("fixed inset-0 z-50 bg-black/50 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...s})});i.displayName=o.aV.displayName;let d=s.forwardRef((e,t)=>{let{className:a,children:s,...c}=e;return(0,r.jsxs)(u,{children:[(0,r.jsx)(i,{}),(0,r.jsxs)(o.VY,{ref:t,className:(0,n.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-gray-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),...c,children:[s,(0,r.jsxs)(o.x8,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-gray-100 data-[state=open]:text-gray-500",children:[(0,r.jsx)(l.Z,{className:"h-4 w-4"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});d.displayName=o.VY.displayName;let f=e=>{let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,n.cn)("flex flex-col space-y-1.5 text-center sm:text-left",t),...a})};f.displayName="DialogHeader";let m=e=>{let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,n.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...a})};m.displayName="DialogFooter";let _=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(o.Dx,{ref:t,className:(0,n.cn)("text-lg font-semibold leading-none tracking-tight",a),...s})});_.displayName=o.Dx.displayName;let g=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(o.dk,{ref:t,className:(0,n.cn)("text-sm text-gray-500",a),...s})});g.displayName=o.dk.displayName},23266:function(e,t,a){a.d(t,{GH:function(){return f},QL:function(){return _},Sl:function(){return d},getClusters:function(){return u},uR:function(){return i}});var r=a(67294),s=a(15821),o=a(47145),n=a(93225),l=a(6378);let c={UP:"RUNNING",STOPPED:"STOPPED",INIT:"LAUNCHING",null:"TERMINATED"};async function u(){let{clusterNames:e=null}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{return(await o.x.fetch("/status",{cluster_names:e,all_users:!0,include_credentials:!1})).map(e=>{let t="",a=t=e.zone?e.zone:e.region;return t&&t.length>25&&(t=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15;if(!e||e.length<=t)return e;if(t<=3)return"...";let a=Math.floor((t-3)/2),r=a+(t-3)%2;return 0===a?e.substring(0,r)+"...":e.substring(0,r)+"..."+e.substring(e.length-a)}(t,25)),{status:c[e.status],cluster:e.name,user:e.user_name,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:e.cloud,region:e.region,infra:t?e.cloud+" ("+t+")":e.cloud,full_infra:a?"".concat(e.cloud," (").concat(a,")"):e.cloud,cpus:e.cpus,mem:e.memory,gpus:e.accelerators,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:new Date(1e3*e.launched_at),num_nodes:e.nodes,workspace:e.workspace,autostop:e.autostop,last_event:e.last_event,to_down:e.to_down,jobs:[],command:e.last_creation_command||e.last_use,task_yaml:e.last_creation_yaml||"{}",events:[{time:new Date(1e3*e.launched_at),event:"Cluster created."}]}})}catch(e){return console.error("Error fetching clusters:",e),[]}}async function i(){try{let e=await o.x.fetch("/cost_report",{days:30});console.log("Raw cluster history data:",e);let t=e.map(e=>{let t="Unknown";e.cloud?t=e.cloud:e.resources&&e.resources.cloud&&(t=e.resources.cloud);let a=e.user_name||"-";return{status:e.status?c[e.status]:"TERMINATED",cluster:e.name,user:a,user_hash:e.user_hash,cluster_hash:e.cluster_hash,cloud:t,region:"",infra:t,full_infra:t,resources_str:e.resources_str,resources_str_full:e.resources_str_full,time:e.launched_at?new Date(1e3*e.launched_at):null,num_nodes:e.num_nodes||1,duration:e.duration,total_cost:e.total_cost,workspace:e.workspace||"default",autostop:-1,last_event:e.last_event,to_down:!1,usage_intervals:e.usage_intervals,command:e.last_creation_command||"",task_yaml:e.last_creation_yaml||"{}",events:[{time:e.launched_at?new Date(1e3*e.launched_at):new Date,event:"Cluster created."}]}});return console.log("Processed cluster history data:",t),t}catch(e){return console.error("Error fetching cluster history:",e),[]}}async function d(e){let{clusterName:t,jobId:a,onNewLog:r,workspace:n}=e;try{await o.x.stream("/logs",{follow:!1,cluster_name:t,job_id:a,tail:1e4,override_skypilot_config:{active_workspace:n||"default"}},r)}catch(e){console.error("Error in streamClusterJobLogs:",e),(0,s.C)("Error in streamClusterJobLogs: ".concat(e.message),"error")}}async function f(e){let{clusterName:t,jobIds:a=null,workspace:r}=e;try{let e=await o.x.fetch("/download_logs",{cluster_name:t,job_ids:a?a.map(String):null,override_skypilot_config:{active_workspace:r||"default"}}),l=Object.values(e||{});if(!l.length){(0,s.C)("No logs found to download.","warning");return}let c=window.location.origin,u="".concat(c).concat(n.f4,"/download"),i=await fetch("".concat(u,"?relative=items"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({folder_paths:l})});if(!i.ok){let e=await i.text();throw Error("Download failed: ".concat(i.status," ").concat(e))}let d=await i.blob(),f=window.URL.createObjectURL(d),m=document.createElement("a"),_=new Date().toISOString().replace(/[:.]/g,"-"),g=a&&1===a.length?"job-".concat(a[0]):"jobs";m.href=f,m.download="".concat(t,"-").concat(g,"-logs-").concat(_,".zip"),document.body.appendChild(m),m.click(),m.remove(),window.URL.revokeObjectURL(f)}catch(e){console.error("Error downloading logs:",e),(0,s.C)("Error downloading logs: ".concat(e.message),"error")}}async function m(e){let{clusterName:t,workspace:a}=e;try{return(await o.x.fetch("/queue",{cluster_name:t,all_users:!0,override_skypilot_config:{active_workspace:a}})).map(e=>{var r;let s=e.end_at?e.end_at:Date.now()/1e3,o=0,n=0;return e.submitted_at&&(o=s-e.submitted_at),e.start_at&&(n=s-e.start_at),{id:e.job_id,status:e.status,job:e.job_name,user:e.username,user_hash:e.user_hash,gpus:e.accelerators||{},submitted_at:e.submitted_at?new Date(1e3*e.submitted_at):null,resources:e.resources,cluster:t,total_duration:o,job_duration:n,infra:"",logs:"",workspace:a||"default",git_commit:(null===(r=e.metadata)||void 0===r?void 0:r.git_commit)||"-"}})}catch(e){return console.error("Error fetching cluster jobs:",e),[]}}function _(e){let{cluster:t,job:a=null}=e,[s,o]=(0,r.useState)(null),[n,c]=(0,r.useState)(null),[i,d]=(0,r.useState)(!0),[f,_]=(0,r.useState)(!0),g=(0,r.useCallback)(async()=>{if(t)try{d(!0);let e=await l.default.get(u,[{clusterNames:[t]}]);return o(e[0]),e[0]}catch(e){console.error("Error fetching cluster data:",e)}finally{d(!1)}return null},[t]),h=(0,r.useCallback)(async e=>{if(t)try{_(!0);let a=await l.default.get(m,[{clusterName:t,workspace:e||"default"}]);c(a)}catch(e){console.error("Error fetching cluster job data:",e)}finally{_(!1)}},[t]),p=(0,r.useCallback)(async()=>{l.default.invalidate(u,[{clusterNames:[t]}]);let e=await g();e&&(l.default.invalidate(m,[{clusterName:t,workspace:e.workspace||"default"}]),await h(e.workspace))},[g,h,t]),w=(0,r.useCallback)(async()=>{s&&(l.default.invalidate(m,[{clusterName:t,workspace:s.workspace||"default"}]),await h(s.workspace))},[h,s,t]);return(0,r.useEffect)(()=>{(async()=>{let e=await g();e&&h(e.workspace)})()},[t,a,g,h]),{clusterData:s,clusterJobData:n,loading:i,clusterDetailsLoading:i,clusterJobsLoading:f,refreshData:p,refreshClusterJobsOnly:w}}},53081:function(e,t,a){a.d(t,{R:function(){return s}}),a(23266),a(68969);var r=a(47145);async function s(){try{let e=await r.x.get("/users");if(!e.ok)throw Error("HTTP error! status: ".concat(e.status));return(await e.json()).map(e=>({userId:e.id,username:e.name,role:e.role,created_at:e.created_at}))||[]}catch(e){return console.error("Failed to fetch users:",e),[]}}}}]);