skypilot-nightly 1.0.0.dev20250224__py3-none-any.whl → 1.0.0.dev20250226__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 = '73e95ab79bf75923963a93733e54c100d0567e02'
8
+ _SKYPILOT_COMMIT_SHA = '107180a5a0ec2ffd9bc6f619fc707c49103f3942'
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.dev20250224'
38
+ __version__ = '1.0.0.dev20250226'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
sky/adaptors/nebius.py CHANGED
@@ -5,8 +5,10 @@ from sky.adaptors import common
5
5
 
6
6
  NEBIUS_TENANT_ID_FILENAME = 'NEBIUS_TENANT_ID.txt'
7
7
  NEBIUS_IAM_TOKEN_FILENAME = 'NEBIUS_IAM_TOKEN.txt'
8
+ NEBIUS_PROJECT_ID_FILENAME = 'NEBIUS_PROJECT_ID.txt'
8
9
  NEBIUS_TENANT_ID_PATH = '~/.nebius/' + NEBIUS_TENANT_ID_FILENAME
9
10
  NEBIUS_IAM_TOKEN_PATH = '~/.nebius/' + NEBIUS_IAM_TOKEN_FILENAME
11
+ NEBIUS_PROJECT_ID_PATH = '~/.nebius/' + NEBIUS_PROJECT_ID_FILENAME
10
12
 
11
13
  MAX_RETRIES_TO_DISK_CREATE = 120
12
14
  MAX_RETRIES_TO_INSTANCE_STOP = 120
@@ -20,6 +22,7 @@ POLL_INTERVAL = 5
20
22
 
21
23
  _iam_token = None
22
24
  _tenant_id = None
25
+ _project_id = None
23
26
 
24
27
  nebius = common.LazyImport(
25
28
  'nebius',
@@ -69,6 +72,18 @@ def get_iam_token():
69
72
  return _iam_token
70
73
 
71
74
 
75
+ def get_project_id():
76
+ global _project_id
77
+ if _project_id is None:
78
+ try:
79
+ with open(os.path.expanduser(NEBIUS_PROJECT_ID_PATH),
80
+ encoding='utf-8') as file:
81
+ _project_id = file.read().strip()
82
+ except FileNotFoundError:
83
+ return None
84
+ return _project_id
85
+
86
+
72
87
  def get_tenant_id():
73
88
  global _tenant_id
74
89
  if _tenant_id is None:
sky/clouds/nebius.py CHANGED
@@ -15,7 +15,8 @@ if typing.TYPE_CHECKING:
15
15
  _CREDENTIAL_FILES = [
16
16
  # credential files for Nebius
17
17
  nebius.NEBIUS_TENANT_ID_FILENAME,
18
- nebius.NEBIUS_IAM_TOKEN_FILENAME
18
+ nebius.NEBIUS_IAM_TOKEN_FILENAME,
19
+ nebius.NEBIUS_PROJECT_ID_FILENAME,
19
20
  ]
20
21
 
21
22
 
@@ -255,6 +256,8 @@ class Nebius(clouds.Cloud):
255
256
  token_msg = (' Credentials can be set up by running: \n'\
256
257
  f' $ nebius iam get-access-token > {nebius.NEBIUS_IAM_TOKEN_PATH} \n') # pylint: disable=line-too-long
257
258
  tenant_msg = (' Copy your tenat ID from the web console and save it to file \n' # pylint: disable=line-too-long
259
+ f' $ echo $NEBIUS_TENANT_ID_PATH > {nebius.NEBIUS_TENANT_ID_PATH} \n' # pylint: disable=line-too-long
260
+ ' Or if you have 1 tenant you can run:\n' # pylint: disable=line-too-long
258
261
  f' $ nebius --format json iam whoami|jq -r \'.user_profile.tenants[0].tenant_id\' > {nebius.NEBIUS_TENANT_ID_PATH} \n') # pylint: disable=line-too-long
259
262
  if token is None:
260
263
  return False, f'{token_msg}'
sky/global_user_state.py CHANGED
@@ -60,7 +60,7 @@ def create_table(cursor, conn):
60
60
  last_use TEXT,
61
61
  status TEXT,
62
62
  autostop INTEGER DEFAULT -1,
63
- metadata TEXT DEFAULT "{}",
63
+ metadata TEXT DEFAULT '{}',
64
64
  to_down INTEGER DEFAULT 0,
65
65
  owner TEXT DEFAULT null,
66
66
  cluster_hash TEXT DEFAULT null,
@@ -118,7 +118,7 @@ def create_table(cursor, conn):
118
118
  'INTEGER DEFAULT -1')
119
119
 
120
120
  db_utils.add_column_to_table(cursor, conn, 'clusters', 'metadata',
121
- 'TEXT DEFAULT "{}"')
121
+ 'TEXT DEFAULT \'{}\'')
122
122
 
123
123
  db_utils.add_column_to_table(cursor, conn, 'clusters', 'to_down',
124
124
  'INTEGER DEFAULT 0')
@@ -271,7 +271,7 @@ def add_or_update_cluster(cluster_name: str,
271
271
  # Keep the old metadata value if it exists, otherwise set it to
272
272
  # default {}.
273
273
  'COALESCE('
274
- '(SELECT metadata FROM clusters WHERE name=?), "{}"),'
274
+ '(SELECT metadata FROM clusters WHERE name=?), \'{}\'),'
275
275
  # Keep the old owner value if it exists, otherwise set it to
276
276
  # default null.
277
277
  'COALESCE('
sky/jobs/state.py CHANGED
@@ -212,6 +212,7 @@ class ManagedJobStatus(enum.Enum):
212
212
  is dedicated to a managed job, i.e. there should always be enough resource
213
213
  to run the job and the job will be immediately transitioned to RUNNING.
214
214
 
215
+ You can see a state diagram for ManagedJobStatus in sky/jobs/README.md.
215
216
  """
216
217
  # PENDING: Waiting for the jobs controller to have a slot to run the
217
218
  # controller process.
@@ -332,6 +333,8 @@ class ManagedJobScheduleState(enum.Enum):
332
333
  to transition directly from WAITING or even INACTIVE to DONE if the job is
333
334
  cancelled.
334
335
 
336
+ You can see a state diagram in sky/jobs/README.md.
337
+
335
338
  There is no well-defined mapping from the managed job status to schedule
336
339
  state or vice versa. (In fact, schedule state is defined on the job and
337
340
  status on the task.)
@@ -44,13 +44,21 @@ def get_project_by_region(region: str) -> str:
44
44
  # Project id looks like project-e00xxxxxxxxxxxxxx where
45
45
  # e00 - id of region 'eu-north1'
46
46
  # e01 - id of region 'eu-west1'
47
+ region_ids = {'eu-north1': 'e00', 'eu-west1': 'e01'}
47
48
  # TODO(SalikovAlex): fix when info about region will be in projects list
48
49
  # Currently, Nebius cloud supports 2 regions. We manually enumerate
49
50
  # them here. Reference: https://docs.nebius.com/overview/regions
51
+
52
+ # Check is there project if in config
53
+ preferable_project_id = nebius.get_project_id()
54
+ if preferable_project_id is not None:
55
+ if preferable_project_id[8:11] == region_ids[region]:
56
+ return preferable_project_id
57
+ logger.warning(
58
+ f'Can\'t use customized NEBIUS_PROJECT_ID ({preferable_project_id})'
59
+ f' for region {region}. Please check if the project ID is correct.')
50
60
  for project in projects.items:
51
- if region == 'eu-north1' and project.metadata.id[8:11] == 'e00':
52
- return project.metadata.id
53
- if region == 'eu-west1' and project.metadata.id[8:11] == 'e01':
61
+ if project.metadata.id[8:11] == region_ids[region]:
54
62
  return project.metadata.id
55
63
  raise Exception(f'No project found for region "{region}".')
56
64
 
sky/utils/common_utils.py CHANGED
@@ -774,13 +774,10 @@ def is_port_available(port: int, reuse_addr: bool = True) -> bool:
774
774
  return False
775
775
 
776
776
 
777
- # TODO(aylei): should be aware of cgroups
778
777
  def get_cpu_count() -> int:
779
- """Get the number of CPUs.
780
-
781
- If the API server is deployed as a pod in k8s cluster, we assume the
782
- number of CPUs is provided by the downward API.
783
- """
778
+ """Get the number of CPUs, with cgroup awareness."""
779
+ # This env-var is kept since it is still useful for limiting the resource
780
+ # of SkyPilot in non-containerized environments.
784
781
  cpu_count = os.getenv('SKYPILOT_POD_CPU_CORE_LIMIT')
785
782
  if cpu_count is not None:
786
783
  try:
@@ -790,16 +787,11 @@ def get_cpu_count() -> int:
790
787
  raise ValueError(
791
788
  f'Failed to parse the number of CPUs from {cpu_count}'
792
789
  ) from e
793
- return psutil.cpu_count()
790
+ return _cpu_count()
794
791
 
795
792
 
796
- # TODO(aylei): should be aware of cgroups
797
793
  def get_mem_size_gb() -> float:
798
- """Get the memory size in GB.
799
-
800
- If the API server is deployed as a pod in k8s cluster, we assume the
801
- memory size is provided by the downward API.
802
- """
794
+ """Get the memory size in GB, with cgroup awareness."""
803
795
  mem_size = os.getenv('SKYPILOT_POD_MEMORY_GB_LIMIT')
804
796
  if mem_size is not None:
805
797
  try:
@@ -808,4 +800,92 @@ def get_mem_size_gb() -> float:
808
800
  with ux_utils.print_exception_no_traceback():
809
801
  raise ValueError(
810
802
  f'Failed to parse the memory size from {mem_size}') from e
811
- return psutil.virtual_memory().total / (1024**3)
803
+ return _mem_size_gb()
804
+
805
+
806
+ def _cpu_count() -> int:
807
+ # host cpu cores (logical)
808
+ cpu = psutil.cpu_count()
809
+ # cpu affinity on Linux
810
+ if hasattr(os, 'sched_getaffinity'):
811
+ # just for safe, length of CPU set should always <= logical cpu cores
812
+ cpu = min(cpu, len(os.sched_getaffinity(0)))
813
+ cgroup_cpu = _get_cgroup_cpu_limit()
814
+ if cgroup_cpu is not None:
815
+ cpu = min(cpu, int(cgroup_cpu))
816
+ return cpu
817
+
818
+
819
+ def _mem_size_gb() -> float:
820
+ # host memory limit
821
+ mem = psutil.virtual_memory().total
822
+ cgroup_mem = _get_cgroup_memory_limit()
823
+ if cgroup_mem is not None:
824
+ mem = min(mem, cgroup_mem)
825
+ return mem / (1024**3)
826
+
827
+
828
+ # Refer to:
829
+ # - https://docs.kernel.org/admin-guide/cgroup-v1/index.html
830
+ # - https://docs.kernel.org/admin-guide/cgroup-v2.html
831
+ # for the standards of handler files in cgroupv1 and v2.
832
+ # Since all those paths are well-known standards that are unlikely to change,
833
+ # we use string literals instead of defining extra constants.
834
+ def _get_cgroup_cpu_limit() -> Optional[float]:
835
+ """Return cpu limit from cgroups in cores.
836
+
837
+ Returns:
838
+ The cpu limit in cores as a float (can be fractional), or None if there
839
+ is no limit in cgroups.
840
+ """
841
+ try:
842
+ if _is_cgroup_v2():
843
+ with open('/sys/fs/cgroup/cpu.max', 'r', encoding='utf-8') as f:
844
+ quota_str, period_str = f.read().strip().split()
845
+ if quota_str == 'max':
846
+ return None
847
+ quota = float(quota_str)
848
+ period = float(period_str)
849
+ return quota / period if quota > 0 else None
850
+ else:
851
+ # cgroup v1
852
+ with open('/sys/fs/cgroup/cpu/cpu.cfs_quota_us',
853
+ 'r',
854
+ encoding='utf-8') as f:
855
+ quota = float(f.read().strip())
856
+ with open('/sys/fs/cgroup/cpu/cpu.cfs_period_us',
857
+ 'r',
858
+ encoding='utf-8') as f:
859
+ period = float(f.read().strip())
860
+ # Return unlimited if cpu quota is not set.
861
+ # Note that we do not use cpu.shares since it is a relative weight
862
+ # instead of a hard limit. It is okay to get CPU throttling under
863
+ # high contention. And unlimited enables the server to use as much
864
+ # CPU as available if there is no contention.
865
+ return quota / period if (quota > 0 and period > 0) else None
866
+ except (OSError, ValueError):
867
+ return None
868
+
869
+
870
+ def _get_cgroup_memory_limit() -> Optional[int]:
871
+ """Return memory limit from cgroups in bytes.
872
+
873
+ Returns:
874
+ The memory limit in bytes, or None if there is no limit in cgroups.
875
+ """
876
+ try:
877
+ path = ('/sys/fs/cgroup/memory.max' if _is_cgroup_v2() else
878
+ '/sys/fs/cgroup/memory/memory.limit_in_bytes')
879
+ with open(path, 'r', encoding='utf-8') as f:
880
+ value = f.read().strip()
881
+ if value == 'max' or not value:
882
+ return None
883
+ limit = int(value)
884
+ return limit if limit > 0 else None
885
+ except (OSError, ValueError):
886
+ return None
887
+
888
+
889
+ def _is_cgroup_v2() -> bool:
890
+ """Return True if the environment is running cgroup v2."""
891
+ return os.path.isfile('/sys/fs/cgroup/cgroup.controllers')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250224
3
+ Version: 1.0.0.dev20250226
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -192,6 +192,7 @@ Dynamic: summary
192
192
 
193
193
  ----
194
194
  :fire: *News* :fire:
195
+ - [Feb 2025] Prepare and serve **Retrieval Augmented Generation (RAG) with DeepSeek-R1**: [**blog post**](https://blog.skypilot.co/deepseek-rag), [**example**](./llm/rag/)
195
196
  - [Feb 2025] Run and serve **DeepSeek-R1 671B** using SkyPilot and SGLang with high throughput: [**example**](./llm/deepseek-r1/)
196
197
  - [Feb 2025] Prepare and serve large-scale image search with **vector databases**: [**blog post**](https://blog.skypilot.co/large-scale-vector-database/), [**example**](./examples/vector_database/)
197
198
  - [Jan 2025] Launch and serve distilled models from **[DeepSeek-R1](https://github.com/deepseek-ai/DeepSeek-R1)** and **[Janus](https://github.com/deepseek-ai/DeepSeek-Janus)** on Kubernetes or any cloud: [**R1 example**](./llm/deepseek-r1-distilled/) and [**Janus example**](./llm/deepseek-janus/)
@@ -1,4 +1,4 @@
1
- sky/__init__.py,sha256=8zed0-GYhvWXZwZFaUANPausBHOuBBm3jZpWo9MJsmE,6428
1
+ sky/__init__.py,sha256=yBzHHts3hZ_4Ijs5pLgwKb4bQ250dNPA-xL6EE_jbIU,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
@@ -8,7 +8,7 @@ sky/core.py,sha256=X83hdpPTiWyEJLamrguCd03PUjkRiGgqTFfEBEQkzWc,45471
8
8
  sky/dag.py,sha256=Yl7Ry26Vql5cv4YMz8g9kOUgtoCihJnw7c8NgZYakMY,3242
9
9
  sky/exceptions.py,sha256=cGepNlBkjjgvi3fazc3DbdYLKhhF_sHCuGX0-hu_QMQ,13685
10
10
  sky/execution.py,sha256=0M4RTEzWn-B9oz221XdZOIGH12XOACmNq0j-WGUT_No,28023
11
- sky/global_user_state.py,sha256=PlAhEkBQ9MNAaZs96R8BouhWk9iVghm6CNKSxjsyAAY,33242
11
+ sky/global_user_state.py,sha256=sUDdSsJeiJkbgmZNwy8YGFK0XeNh-RBr1VDUvbmjf0g,33246
12
12
  sky/models.py,sha256=4xSW05BdDPEjW8Ubvj3VlVOVnzv0TbrolsFvR5R5v1U,638
13
13
  sky/optimizer.py,sha256=C82l9N3umdrJ2AaM-pSg0aK5rpOAX3lEAfFU7r6hqPo,60183
14
14
  sky/resources.py,sha256=f2Qo_Wt0kFruKmYm6cgYbICH_wn0Zkb8uIv6LA82SRs,72153
@@ -26,7 +26,7 @@ sky/adaptors/docker.py,sha256=_kzpZ0fkWHqqQAVVl0llTsCE31KYz3Sjn8psTBQHVkA,468
26
26
  sky/adaptors/gcp.py,sha256=OQ9RaqjR0r0iaWYpjvEtIx5vnEhyB4LhUCwbtdxsmVk,3115
27
27
  sky/adaptors/ibm.py,sha256=H87vD6izq_wQI8oQC7cx9iVtRgPi_QkAcrfa1Z3PNqU,4906
28
28
  sky/adaptors/kubernetes.py,sha256=fvNeqqyW4WbUDT-isU_fWLN-zqywayyRkVsj7sJ4Vc8,6645
29
- sky/adaptors/nebius.py,sha256=bZR7ybfqIyUbNFiMfwC7qpOmSWDM9uExxWhm-MT_PqU,2259
29
+ sky/adaptors/nebius.py,sha256=JOvwniQT-Pkp9-af6IdL_FUkjIbsEAUXVNUkwdaEeb0,2732
30
30
  sky/adaptors/oci.py,sha256=LfMSFUmkkNT6Yoz9FZHNl6UFSg4X1lJO4-x4ZbDdXTs,2831
31
31
  sky/adaptors/runpod.py,sha256=4Nt_BfZhJAKQNA3wO8cxvvNI8x4NsDGHu_4EhRDlGYQ,225
32
32
  sky/adaptors/vast.py,sha256=tpvmHi7IkQNzbbHVkeo04kUSajoEpSzXr2XgeO_I1LU,695
@@ -57,7 +57,7 @@ sky/clouds/gcp.py,sha256=0QpsI0Dso1xs3LhGlUq-Sq6WK-u11wN-57-vfcyhI5I,55154
57
57
  sky/clouds/ibm.py,sha256=R4JR96YfXstZ2B_IgFNVEX2SBAq3q0lSWz4y7FoFoeE,21474
58
58
  sky/clouds/kubernetes.py,sha256=7ki_zJZKnkhOPrHgVFq6azy5UhNKeeBOCSTjKCgj3vk,31709
59
59
  sky/clouds/lambda_cloud.py,sha256=ejqA_Wj5-325Y_QjQ__FY4HMO8sv_2tSRsufmaldcmI,12699
60
- sky/clouds/nebius.py,sha256=Z439DIaLCOqpCDBq8QhgiFyn5vIaZ7Rj7O6yZ1rjQ5g,12289
60
+ sky/clouds/nebius.py,sha256=4180IruRMib7L9o60lrxrUDJtYhpX4lWFfAznbZoY6Q,12560
61
61
  sky/clouds/oci.py,sha256=irINbQsQ6YxRxGTMaCNsms3mZkIun2oJMMA1fMCRJyA,27072
62
62
  sky/clouds/paperspace.py,sha256=O7bH8YaHBLFuyj6rDz2bPDz_6OYWmNB9OLqnZH70yfY,10922
63
63
  sky/clouds/runpod.py,sha256=hzYB4td6qaged83xMAVKZ96bH40oZnrHXL7a_CKxXIw,11926
@@ -111,7 +111,7 @@ sky/jobs/constants.py,sha256=HrQbQA41Khor89ZoH112kjHRgehge-k4o0R9T9UbbaM,3088
111
111
  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=IUW0a_69Pkvs4jqsWCXkeMDIZn-TTuPNyZvPLGRUYUM,12306
114
- sky/jobs/state.py,sha256=y9X1JGWpCokWBIwHZGB55fx39ZsilB1NZTbN_U8mPjA,43528
114
+ sky/jobs/state.py,sha256=dIONpSuo5oolbCH1j7IWPlK97s5-NSl3whxH5Gn5DYI,43660
115
115
  sky/jobs/utils.py,sha256=SEeoXDWM-n2kg-eLd39kLWXbK7cavMst9s3xFVqaJg4,52580
116
116
  sky/jobs/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
117
  sky/jobs/client/sdk.py,sha256=mblI0hRH1It-I1hfs2_TdQTh_mtixcYJEZCWyKbqaaE,9707
@@ -175,7 +175,7 @@ sky/provision/lambda_cloud/lambda_utils.py,sha256=H2Qx4xdJyyEu2IXaj5AyppuPJW385n
175
175
  sky/provision/nebius/__init__.py,sha256=30I3181mu0W5g9fNvaWMPoBJZoGZ9RibuTpBH9P2pDg,558
176
176
  sky/provision/nebius/config.py,sha256=LK9kTDp2w6zZrn3vNdcSGgsgS-dL_j63Nh4_u3pqNiA,321
177
177
  sky/provision/nebius/instance.py,sha256=kfpZqwh56XV7h6XsX5dGJYilsVdRhC1EUgk0flaCo_E,11889
178
- sky/provision/nebius/utils.py,sha256=BxA7Hh6P7dKcXSw4tx2dyYd1txm-c7Psym3rRCAGLic,12785
178
+ sky/provision/nebius/utils.py,sha256=o1Jr_pzH-2uk34obt9pSGXf2i2tljOo-uhXcryfFUxs,13145
179
179
  sky/provision/oci/__init__.py,sha256=5E6EUtTK3mqGVREw5TuVl5DxteBYTZigIii7c8gHExU,612
180
180
  sky/provision/oci/config.py,sha256=diSDTyHLokcuXGB2XgZCHFvsXa8bah1PP2XuMouW_UU,1650
181
181
  sky/provision/oci/instance.py,sha256=rVGee5y0qkoeLIP5vPDmLq1N8G1n8mru62VHb0Bv5iY,16784
@@ -310,7 +310,7 @@ sky/utils/cluster_utils.py,sha256=s6DFRXktv6_gF_DnwDEXJ7CniifHp8CAPeGciRCbXgI,14
310
310
  sky/utils/command_runner.py,sha256=-7vxLvwZnTvYMQ_nScmuQWY6ZvQYv69yvvIp2uOaOqU,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=SChX042UH_Beoq0SJiyw0kRpCA0faycPRaqXEF2GNZ4,28091
313
+ sky/utils/common_utils.py,sha256=1KfqF_hgH9l1ieyV-_3fJd6ma41-tOstj-ihAQcEDIM,31162
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
316
  sky/utils/controller_utils.py,sha256=Wth_esy2NX9nco-MK01bgQMIChAYky0Uq4T35jQkXxY,48472
@@ -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=iAjfyPclOs8qlALACcfxLpRAO9CZ-h16leFqXZ6tNaY,10096
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.dev20250224.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
348
- skypilot_nightly-1.0.0.dev20250224.dist-info/METADATA,sha256=ooOoPMweqRG9pczdIUORjFZdEqb0bjxfyGkkHxBSgMg,19055
349
- skypilot_nightly-1.0.0.dev20250224.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
350
- skypilot_nightly-1.0.0.dev20250224.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
351
- skypilot_nightly-1.0.0.dev20250224.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
352
- skypilot_nightly-1.0.0.dev20250224.dist-info/RECORD,,
347
+ skypilot_nightly-1.0.0.dev20250226.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
348
+ skypilot_nightly-1.0.0.dev20250226.dist-info/METADATA,sha256=zi9_kttCT3c1fDXvbH5gpMqHwoT_jYd_oli7tbLYw2k,19227
349
+ skypilot_nightly-1.0.0.dev20250226.dist-info/WHEEL,sha256=nn6H5-ilmfVryoAQl3ZQ2l8SH5imPWFpm1A5FgEuFV4,91
350
+ skypilot_nightly-1.0.0.dev20250226.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
351
+ skypilot_nightly-1.0.0.dev20250226.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
352
+ skypilot_nightly-1.0.0.dev20250226.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (75.8.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5