lightning-sdk 2025.12.9__py3-none-any.whl → 2025.12.16__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.
- lightning_sdk/__version__.py +1 -1
- lightning_sdk/api/job_api.py +16 -0
- lightning_sdk/api/teamspace_api.py +42 -5
- lightning_sdk/job/base.py +3 -0
- lightning_sdk/job/job.py +4 -0
- lightning_sdk/job/v1.py +2 -0
- lightning_sdk/job/v2.py +32 -0
- lightning_sdk/machine.py +1 -0
- lightning_sdk/pipeline/steps.py +3 -0
- lightning_sdk/teamspace.py +44 -4
- {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.16.dist-info}/METADATA +1 -1
- {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.16.dist-info}/RECORD +16 -16
- {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.16.dist-info}/LICENSE +0 -0
- {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.16.dist-info}/WHEEL +0 -0
- {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.16.dist-info}/entry_points.txt +0 -0
- {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.16.dist-info}/top_level.txt +0 -0
lightning_sdk/__version__.py
CHANGED
lightning_sdk/api/job_api.py
CHANGED
|
@@ -30,6 +30,7 @@ from lightning_sdk.lightning_cloud.openapi import (
|
|
|
30
30
|
V1LightningworkState,
|
|
31
31
|
V1ListLightningworkResponse,
|
|
32
32
|
V1UserRequestedComputeConfig,
|
|
33
|
+
V1Volume,
|
|
33
34
|
)
|
|
34
35
|
from lightning_sdk.lightning_cloud.rest_client import LightningClient
|
|
35
36
|
from lightning_sdk.machine import Machine
|
|
@@ -253,7 +254,16 @@ class JobApiV2:
|
|
|
253
254
|
artifacts_remote: Optional[str], # deprecated in favor of path_mappings
|
|
254
255
|
max_runtime: Optional[int] = None,
|
|
255
256
|
reuse_snapshot: bool = True,
|
|
257
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
256
258
|
) -> V1Job:
|
|
259
|
+
if scratch_disks is not None:
|
|
260
|
+
sanitized_scratch_disks = {}
|
|
261
|
+
for k, v in scratch_disks.items():
|
|
262
|
+
sanitized_k = k if k.startswith("/teamspace/scratch/") else f"/teamspace/scratch/{k}"
|
|
263
|
+
sanitized_scratch_disks[sanitized_k] = v
|
|
264
|
+
else:
|
|
265
|
+
sanitized_scratch_disks = None
|
|
266
|
+
|
|
257
267
|
body = self._create_job_body(
|
|
258
268
|
name=name,
|
|
259
269
|
command=command,
|
|
@@ -271,6 +281,7 @@ class JobApiV2:
|
|
|
271
281
|
artifacts_remote=artifacts_remote,
|
|
272
282
|
max_runtime=max_runtime,
|
|
273
283
|
reuse_snapshot=reuse_snapshot,
|
|
284
|
+
scratch_disks=sanitized_scratch_disks,
|
|
274
285
|
)
|
|
275
286
|
|
|
276
287
|
job: V1Job = self._client.jobs_service_create_job(project_id=teamspace_id, body=body)
|
|
@@ -295,6 +306,7 @@ class JobApiV2:
|
|
|
295
306
|
reuse_snapshot: bool,
|
|
296
307
|
max_runtime: Optional[int] = None,
|
|
297
308
|
machine_image_version: Optional[str] = None,
|
|
309
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
298
310
|
) -> JobsServiceCreateJobBody:
|
|
299
311
|
env_vars = []
|
|
300
312
|
if env is not None:
|
|
@@ -316,6 +328,9 @@ class JobApiV2:
|
|
|
316
328
|
if max_runtime:
|
|
317
329
|
optional_spec_kwargs["requested_run_duration_seconds"] = str(max_runtime)
|
|
318
330
|
|
|
331
|
+
# don't do default dicts, as they'll be mutable. Create a fresh one here
|
|
332
|
+
scratch_disks = scratch_disks or {}
|
|
333
|
+
|
|
319
334
|
spec = V1JobSpec(
|
|
320
335
|
cloudspace_id=studio_id or "",
|
|
321
336
|
cluster_id=cloud_account or "",
|
|
@@ -330,6 +345,7 @@ class JobApiV2:
|
|
|
330
345
|
image_secret_ref=image_credentials or "",
|
|
331
346
|
path_mappings=path_mappings_list,
|
|
332
347
|
machine_image_version=machine_image_version,
|
|
348
|
+
volumes=[V1Volume(path=k, size_gb=v, ephemeral=True) for k, v in scratch_disks.items()],
|
|
333
349
|
**optional_spec_kwargs,
|
|
334
350
|
)
|
|
335
351
|
return JobsServiceCreateJobBody(name=name, spec=spec)
|
|
@@ -47,6 +47,7 @@ from lightning_sdk.lightning_cloud.openapi import (
|
|
|
47
47
|
V1UpstreamOpenAI,
|
|
48
48
|
)
|
|
49
49
|
from lightning_sdk.lightning_cloud.rest_client import LightningClient
|
|
50
|
+
from lightning_sdk.machine import Machine
|
|
50
51
|
|
|
51
52
|
__all__ = ["TeamspaceApi"]
|
|
52
53
|
|
|
@@ -323,11 +324,47 @@ class TeamspaceApi:
|
|
|
323
324
|
jobs = self._client.jobs_service_list_multi_machine_jobs(project_id=teamspace_id).multi_machine_jobs
|
|
324
325
|
return apps, jobs
|
|
325
326
|
|
|
326
|
-
def list_machines(
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
327
|
+
def list_machines(
|
|
328
|
+
self,
|
|
329
|
+
teamspace_id: str,
|
|
330
|
+
cloud_accounts: List[str],
|
|
331
|
+
machine: Optional[Machine] = None,
|
|
332
|
+
org_id: Optional[str] = None,
|
|
333
|
+
) -> List[V1ClusterAccelerator]:
|
|
334
|
+
from lightning_sdk.api.cloud_account_api import CloudAccountApi
|
|
335
|
+
|
|
336
|
+
cloud_account_api = CloudAccountApi()
|
|
337
|
+
matched_accelerators = []
|
|
338
|
+
for ca in cloud_accounts:
|
|
339
|
+
try:
|
|
340
|
+
accelerators = cloud_account_api.list_cloud_account_accelerators(
|
|
341
|
+
teamspace_id=teamspace_id,
|
|
342
|
+
cloud_account_id=ca,
|
|
343
|
+
org_id=org_id,
|
|
344
|
+
)
|
|
345
|
+
if not accelerators.accelerator:
|
|
346
|
+
continue
|
|
347
|
+
|
|
348
|
+
if accelerators.accelerator:
|
|
349
|
+
for cluster_machine in accelerators.accelerator:
|
|
350
|
+
if not machine:
|
|
351
|
+
matched_accelerators.append(cluster_machine)
|
|
352
|
+
continue
|
|
353
|
+
if (
|
|
354
|
+
cluster_machine.resources.gpu == machine.accelerator_count
|
|
355
|
+
or cluster_machine.resources.cpu == machine.accelerator_count
|
|
356
|
+
) and any(
|
|
357
|
+
machine.family.lower() in s
|
|
358
|
+
for s in (
|
|
359
|
+
cluster_machine.slug,
|
|
360
|
+
cluster_machine.slug_multi_cloud,
|
|
361
|
+
cluster_machine.instance_id,
|
|
362
|
+
)
|
|
363
|
+
):
|
|
364
|
+
matched_accelerators.append(cluster_machine)
|
|
365
|
+
except Exception:
|
|
366
|
+
pass
|
|
367
|
+
return matched_accelerators
|
|
331
368
|
|
|
332
369
|
def get_model(self, teamspace_id: str, model_id: Optional[str] = None, model_name: Optional[str] = None) -> V1Model:
|
|
333
370
|
if model_id:
|
lightning_sdk/job/base.py
CHANGED
|
@@ -92,6 +92,7 @@ class _BaseJob(ABC, metaclass=TrackCallsABCMeta):
|
|
|
92
92
|
max_runtime: Optional[int] = None,
|
|
93
93
|
cluster: Optional[str] = None, # deprecated in favor of cloud_account
|
|
94
94
|
reuse_snapshot: bool = True,
|
|
95
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
95
96
|
) -> "_BaseJob":
|
|
96
97
|
"""Run async workloads using a docker image or a compute environment from your studio.
|
|
97
98
|
|
|
@@ -236,6 +237,7 @@ class _BaseJob(ABC, metaclass=TrackCallsABCMeta):
|
|
|
236
237
|
path_mappings=path_mappings,
|
|
237
238
|
max_runtime=max_runtime,
|
|
238
239
|
reuse_snapshot=reuse_snapshot,
|
|
240
|
+
scratch_disks=scratch_disks,
|
|
239
241
|
)
|
|
240
242
|
|
|
241
243
|
@abstractmethod
|
|
@@ -257,6 +259,7 @@ class _BaseJob(ABC, metaclass=TrackCallsABCMeta):
|
|
|
257
259
|
path_mappings: Optional[Dict[str, str]] = None,
|
|
258
260
|
max_runtime: Optional[int] = None,
|
|
259
261
|
reuse_snapshot: bool = True,
|
|
262
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
260
263
|
) -> "_BaseJob":
|
|
261
264
|
"""Submit a new job to the Lightning AI platform.
|
|
262
265
|
|
lightning_sdk/job/job.py
CHANGED
|
@@ -104,6 +104,7 @@ class Job(_BaseJob):
|
|
|
104
104
|
artifacts_remote: Optional[str] = None, # deprecated in terms of path_mappings
|
|
105
105
|
cluster: Optional[str] = None, # deprecated in favor of cloud_account
|
|
106
106
|
reuse_snapshot: bool = True,
|
|
107
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
107
108
|
) -> "Job":
|
|
108
109
|
"""Run async workloads using a docker image or a compute environment from your studio.
|
|
109
110
|
|
|
@@ -172,6 +173,7 @@ class Job(_BaseJob):
|
|
|
172
173
|
max_runtime=max_runtime,
|
|
173
174
|
cluster=cluster,
|
|
174
175
|
reuse_snapshot=reuse_snapshot,
|
|
176
|
+
scratch_disks=scratch_disks,
|
|
175
177
|
)
|
|
176
178
|
# required for typing with "Job"
|
|
177
179
|
assert isinstance(ret_val, cls)
|
|
@@ -197,6 +199,7 @@ class Job(_BaseJob):
|
|
|
197
199
|
artifacts_remote: Optional[str] = None, # deprecated in terms of path_mappings
|
|
198
200
|
max_runtime: Optional[int] = None,
|
|
199
201
|
reuse_snapshot: bool = True,
|
|
202
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
200
203
|
) -> "Job":
|
|
201
204
|
"""Submit a new job to the Lightning AI platform.
|
|
202
205
|
|
|
@@ -255,6 +258,7 @@ class Job(_BaseJob):
|
|
|
255
258
|
artifacts_remote=artifacts_remote,
|
|
256
259
|
max_runtime=max_runtime,
|
|
257
260
|
reuse_snapshot=reuse_snapshot,
|
|
261
|
+
scratch_disks=scratch_disks,
|
|
258
262
|
)
|
|
259
263
|
return self
|
|
260
264
|
|
lightning_sdk/job/v1.py
CHANGED
|
@@ -55,6 +55,7 @@ class _JobV1(_BaseJob):
|
|
|
55
55
|
interruptible: bool = False,
|
|
56
56
|
cluster: Optional[str] = None, # deprecated in favor of cloud_account
|
|
57
57
|
reuse_snapshot: bool = True,
|
|
58
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
58
59
|
) -> "_BaseJob":
|
|
59
60
|
"""Start a new async workload from your studio.
|
|
60
61
|
|
|
@@ -111,6 +112,7 @@ class _JobV1(_BaseJob):
|
|
|
111
112
|
path_mappings: Optional[Dict[str, str]] = None,
|
|
112
113
|
max_runtime: Optional[int] = None,
|
|
113
114
|
reuse_snapshot: bool = True,
|
|
115
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
114
116
|
) -> "_JobV1":
|
|
115
117
|
"""Submit a job to run on a machine.
|
|
116
118
|
|
lightning_sdk/job/v2.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from pathlib import PurePath
|
|
1
2
|
from typing import TYPE_CHECKING, Dict, Optional, Union
|
|
2
3
|
|
|
3
4
|
from lightning_sdk.api.job_api import JobApiV2
|
|
@@ -54,6 +55,7 @@ class _JobV2(_BaseJob):
|
|
|
54
55
|
artifacts_local: Optional[str] = None, # deprecated in favor of path_mappings
|
|
55
56
|
artifacts_remote: Optional[str] = None, # deprecated in favor of path_mappings
|
|
56
57
|
reuse_snapshot: bool = True,
|
|
58
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
57
59
|
) -> "_JobV2":
|
|
58
60
|
"""Submit a new job to the Lightning AI platform.
|
|
59
61
|
|
|
@@ -90,6 +92,11 @@ class _JobV2(_BaseJob):
|
|
|
90
92
|
Defaults to 3h
|
|
91
93
|
reuse_snapshot: Whether the job should reuse a Studio snapshot when multiple jobs for the same Studio are
|
|
92
94
|
submitted. Turning this off may result in longer job startup times. Defaults to True.
|
|
95
|
+
scratch_disks: Dictionary of scratch disks to add to the job. The keys are the path that the disk
|
|
96
|
+
will be mounted to, relative to the /teamspace/scratch directory. The values are the size of
|
|
97
|
+
the volume in GiB. For example, { "data": 100 } will add a 100GiB volume available under
|
|
98
|
+
/teamspace/scratch/data.
|
|
99
|
+
|
|
93
100
|
"""
|
|
94
101
|
# Command is required if Studio is provided to know what to run
|
|
95
102
|
# Image is mutually exclusive with Studio
|
|
@@ -115,6 +122,30 @@ class _JobV2(_BaseJob):
|
|
|
115
122
|
default_cloud_account=self._teamspace.default_cloud_account,
|
|
116
123
|
)
|
|
117
124
|
|
|
125
|
+
if scratch_disks is not None and len(scratch_disks) > 0:
|
|
126
|
+
if studio is None:
|
|
127
|
+
raise ValueError("scratch_disks are only supported within a studio job")
|
|
128
|
+
|
|
129
|
+
if len(scratch_disks) > 5:
|
|
130
|
+
raise ValueError("scratch_disk may only contain up to 5 elements")
|
|
131
|
+
|
|
132
|
+
for path, size in scratch_disks.items():
|
|
133
|
+
if size > 50000:
|
|
134
|
+
raise ValueError("scratch_disk size cannot exceed 50TiB")
|
|
135
|
+
|
|
136
|
+
path = PurePath(path)
|
|
137
|
+
|
|
138
|
+
if path.is_absolute():
|
|
139
|
+
# For compatibility with Python 3.8, which doesn't provide
|
|
140
|
+
# pathlib.PurePath.is_relative_to.
|
|
141
|
+
try:
|
|
142
|
+
path.relative_to("/teamspace/scratch")
|
|
143
|
+
except ValueError:
|
|
144
|
+
raise ValueError("scratch_disk paths must be relative to /teamspace/scratch") from None
|
|
145
|
+
|
|
146
|
+
if ".." in path.parts:
|
|
147
|
+
raise ValueError("scratch_disk path cannot contain '..'")
|
|
148
|
+
|
|
118
149
|
submitted = self._job_api.submit_job(
|
|
119
150
|
name=self.name,
|
|
120
151
|
command=command,
|
|
@@ -133,6 +164,7 @@ class _JobV2(_BaseJob):
|
|
|
133
164
|
path_mappings=path_mappings,
|
|
134
165
|
max_runtime=max_runtime,
|
|
135
166
|
reuse_snapshot=reuse_snapshot,
|
|
167
|
+
scratch_disks=scratch_disks,
|
|
136
168
|
)
|
|
137
169
|
self._job = submitted
|
|
138
170
|
self._name = submitted.name
|
lightning_sdk/machine.py
CHANGED
|
@@ -92,6 +92,7 @@ class Machine:
|
|
|
92
92
|
accelerator_count: Optional[int] = None
|
|
93
93
|
cost: Optional[float] = None
|
|
94
94
|
interruptible_cost: Optional[float] = None
|
|
95
|
+
provider: Optional[str] = None
|
|
95
96
|
wait_time: Optional[float] = None
|
|
96
97
|
interruptible_wait_time: Optional[float] = None
|
|
97
98
|
_include_in_cli: bool = True
|
lightning_sdk/pipeline/steps.py
CHANGED
|
@@ -176,6 +176,7 @@ class JobStep:
|
|
|
176
176
|
max_runtime: Optional[int] = None,
|
|
177
177
|
wait_for: Union[str, List[str], None] = DEFAULT,
|
|
178
178
|
reuse_snapshot: bool = True,
|
|
179
|
+
scratch_disks: Optional[Dict[str, int]] = None,
|
|
179
180
|
) -> None:
|
|
180
181
|
self.name = name
|
|
181
182
|
self.machine = machine or Machine.CPU
|
|
@@ -203,6 +204,7 @@ class JobStep:
|
|
|
203
204
|
self.max_runtime = max_runtime
|
|
204
205
|
self.wait_for = wait_for
|
|
205
206
|
self.reuse_snapshot = reuse_snapshot
|
|
207
|
+
self.scratch_disks = scratch_disks
|
|
206
208
|
|
|
207
209
|
def to_proto(
|
|
208
210
|
self, teamspace: "Teamspace", cloud_account: str, shared_filesystem: Union[bool, V1SharedFilesystem]
|
|
@@ -242,6 +244,7 @@ class JobStep:
|
|
|
242
244
|
max_runtime=self.max_runtime,
|
|
243
245
|
machine_image_version=machine_image_version,
|
|
244
246
|
reuse_snapshot=self.reuse_snapshot,
|
|
247
|
+
scratch_disks=self.scratch_disks,
|
|
245
248
|
)
|
|
246
249
|
|
|
247
250
|
return V1PipelineStep(
|
lightning_sdk/teamspace.py
CHANGED
|
@@ -11,7 +11,12 @@ import lightning_sdk
|
|
|
11
11
|
from lightning_sdk.agents import Agent
|
|
12
12
|
from lightning_sdk.api import CloudAccountApi, TeamspaceApi
|
|
13
13
|
from lightning_sdk.api.utils import AccessibleResource, raise_access_error_if_not_allowed
|
|
14
|
-
from lightning_sdk.lightning_cloud.openapi import
|
|
14
|
+
from lightning_sdk.lightning_cloud.openapi import (
|
|
15
|
+
V1ClusterType,
|
|
16
|
+
V1Model,
|
|
17
|
+
V1ModelVersionArchive,
|
|
18
|
+
V1ProjectClusterBinding,
|
|
19
|
+
)
|
|
15
20
|
from lightning_sdk.machine import CloudProvider, Machine
|
|
16
21
|
from lightning_sdk.models import UploadedModelInfo
|
|
17
22
|
from lightning_sdk.organization import Organization
|
|
@@ -275,14 +280,48 @@ class Teamspace(metaclass=TrackCallsMeta):
|
|
|
275
280
|
|
|
276
281
|
self._teamspace_api.set_secret(self.id, key, value)
|
|
277
282
|
|
|
278
|
-
def list_machines(self, cloud_account: Optional[str] = None) -> List[Machine]:
|
|
283
|
+
def list_machines(self, cloud_account: Optional[str] = None, machine: Optional[str] = None) -> List[Machine]:
|
|
284
|
+
"""List available machines across cloud accounts.
|
|
285
|
+
|
|
286
|
+
Args:
|
|
287
|
+
cloud_account: The cloud account from which to list available machines. If None, uses LIGHTNING_CLUSTER_ID
|
|
288
|
+
environment variable. If that's also None, queries all global cloud accounts.
|
|
289
|
+
machine: Specific machine name to filter by. If provided, only returns that
|
|
290
|
+
machine type. Must be a valid Machine enum value.
|
|
291
|
+
|
|
292
|
+
Returns:
|
|
293
|
+
List of available machines, excluding out-of-capacity machines.
|
|
294
|
+
"""
|
|
279
295
|
if cloud_account is None:
|
|
280
|
-
cloud_account = os.getenv("LIGHTNING_CLUSTER_ID")
|
|
296
|
+
cloud_account = os.getenv("LIGHTNING_CLUSTER_ID", None)
|
|
281
297
|
|
|
298
|
+
# if cloud_account is not given as a paramter and as a env var, use global cloud_accounts
|
|
282
299
|
if cloud_account is None:
|
|
300
|
+
global_cloud_accounts = self._cloud_account_api.list_global_cloud_accounts(teamspace_id=self.id)
|
|
301
|
+
cloud_accounts = [cm.id for cm in global_cloud_accounts]
|
|
302
|
+
else:
|
|
303
|
+
cloud_accounts = [cloud_account]
|
|
304
|
+
|
|
305
|
+
if cloud_accounts is None:
|
|
283
306
|
raise RuntimeError("Could not resolve cloud account")
|
|
284
307
|
|
|
285
|
-
|
|
308
|
+
if machine:
|
|
309
|
+
_machine_values = tuple(
|
|
310
|
+
[
|
|
311
|
+
machine.name
|
|
312
|
+
for machine in Machine.__dict__.values()
|
|
313
|
+
if isinstance(machine, Machine) and machine._include_in_cli
|
|
314
|
+
]
|
|
315
|
+
)
|
|
316
|
+
if machine not in _machine_values:
|
|
317
|
+
raise ValueError(f"Machine '{machine}' is not valid. Valid machines are: {_machine_values}")
|
|
318
|
+
machine = getattr(Machine, machine.upper(), Machine(machine, machine))
|
|
319
|
+
|
|
320
|
+
cloud_machines = self._teamspace_api.list_machines(
|
|
321
|
+
self.id, cloud_accounts=cloud_accounts, machine=machine, org_id=self._org.id
|
|
322
|
+
)
|
|
323
|
+
# filter out of capacity machines
|
|
324
|
+
cloud_machines = [cm for cm in cloud_machines if not cm.out_of_capacity]
|
|
286
325
|
return [
|
|
287
326
|
Machine(
|
|
288
327
|
name=cluster_machine.instance_id,
|
|
@@ -292,6 +331,7 @@ class Teamspace(metaclass=TrackCallsMeta):
|
|
|
292
331
|
accelerator_count=cluster_machine.resources.gpu or cluster_machine.resources.cpu,
|
|
293
332
|
cost=cluster_machine.cost,
|
|
294
333
|
interruptible_cost=cluster_machine.spot_price,
|
|
334
|
+
provider=cluster_machine.provider,
|
|
295
335
|
wait_time=float(cluster_machine.available_in_seconds) if cluster_machine.available_in_seconds else None,
|
|
296
336
|
interruptible_wait_time=float(cluster_machine.available_in_seconds_spot)
|
|
297
337
|
if cluster_machine.available_in_seconds_spot
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
docs/source/conf.py,sha256=r8yX20eC-4mHhMTd0SbQb5TlSWHhO6wnJ0VJ_FBFpag,13249
|
|
2
2
|
lightning_sdk/__init__.py,sha256=ym1mOWljHxiO4oijOrmtcjf-eIcwYJVFXkDvLduL4FA,1368
|
|
3
|
-
lightning_sdk/__version__.py,sha256=
|
|
3
|
+
lightning_sdk/__version__.py,sha256=4_NK-wCK_3J5DXKKvGrkDtWy9RIKhABKmvHCNwtH7IE,73
|
|
4
4
|
lightning_sdk/agents.py,sha256=Uqsdu4PgswhpeXZzDSbp3hu30MMOhSlCnp8D56MaS_c,1658
|
|
5
5
|
lightning_sdk/ai_hub.py,sha256=QzCfmX0h2CLn7r0DQyjWg6RnNw26Ey6akiP2Wffl9Ls,7006
|
|
6
6
|
lightning_sdk/base_studio.py,sha256=yMvZ1dDq_avW3iu98CLEo9W9UL54mx4C6FC43IKLWAE,4691
|
|
@@ -9,7 +9,7 @@ lightning_sdk/exceptions.py,sha256=ZPOF4wdOWPkEwQR2B9xxkcP4FzAiG3joZ1eDYjwg5qg,1
|
|
|
9
9
|
lightning_sdk/helpers.py,sha256=WvsetkrXC8n4iQUFKpwQOKo7oaaOxgfWJm6KcMeVaTE,3508
|
|
10
10
|
lightning_sdk/k8s_cluster.py,sha256=K0WB4goDsQJIpfOTDSl7gQ-CrGi77x3kpczN8jwXuYI,2672
|
|
11
11
|
lightning_sdk/lit_container.py,sha256=9gAGoilwn6x0PF-FxcRm9wyJG64mqOs7HH76g8ksxsk,5715
|
|
12
|
-
lightning_sdk/machine.py,sha256=
|
|
12
|
+
lightning_sdk/machine.py,sha256=TzD9c6th5vTcNVs-U4onlymioY1q5QwSKffTNDfYyfw,9953
|
|
13
13
|
lightning_sdk/models.py,sha256=3nw-EVlq4cPGRtq-LwP4M55keTw4MSu-VNeUGAG5EAc,8189
|
|
14
14
|
lightning_sdk/organization.py,sha256=jizjG4oW_oxkP2Qz4vL5cle4Cg12xB_vf4eT-bnvLP0,1352
|
|
15
15
|
lightning_sdk/owner.py,sha256=k0Hh0BQNxc6Jajzqt6jUgApM0IxHDNPIe_X1ocCI2Rk,1448
|
|
@@ -18,7 +18,7 @@ lightning_sdk/sandbox.py,sha256=_NvnWotEXW2rBiVFZZ4krKXxVjuAqfNh04qELSM0-Pg,5786
|
|
|
18
18
|
lightning_sdk/serve.py,sha256=XbllHwmOAOHjQJ0AQukwYe3OtspEwhmf5-_HXhL-mpc,11908
|
|
19
19
|
lightning_sdk/status.py,sha256=lLGAuSvXBoXQFEEsEYwdCi0RcSNatUn5OPjJVjDtoM0,386
|
|
20
20
|
lightning_sdk/studio.py,sha256=Yx8vw_-SPmr0UzWQ7Kq_IXDFtuk-j0UhM95-Fyaexjc,37609
|
|
21
|
-
lightning_sdk/teamspace.py,sha256
|
|
21
|
+
lightning_sdk/teamspace.py,sha256=-a2LwqoSZTJxmdnVtDGrYjl1bmoKaYOmPU6Fg0N-ItQ,29233
|
|
22
22
|
lightning_sdk/user.py,sha256=TSYh38rxoi7qKOfrK2JYh_Nknya2Kbz2ngDIY85fFOY,1778
|
|
23
23
|
lightning_sdk/api/__init__.py,sha256=8boDRZ0LMl7G_IbpqHS2q3efeX_Y897_gsJ3iBF58M4,538
|
|
24
24
|
lightning_sdk/api/agents_api.py,sha256=Sv390h3_Rctud1-ONjpauOIXqOTvgPr6DQSO1QsCtco,4143
|
|
@@ -26,7 +26,7 @@ lightning_sdk/api/ai_hub_api.py,sha256=94pYQUL4-0bTN8I6pePC2dvpOlwMd5Q8V3v37EFWh
|
|
|
26
26
|
lightning_sdk/api/base_studio_api.py,sha256=f2brNoWiyKpGjCkWzD5eYchF-QpVVr2zNTGRzs907EI,3856
|
|
27
27
|
lightning_sdk/api/cloud_account_api.py,sha256=WctyTsl_9kdaEN9iwNN3yQ3jtLIj0LFi67lPXx2-kAo,9105
|
|
28
28
|
lightning_sdk/api/deployment_api.py,sha256=WT5ay2XoT30qNZrM5Mf0TWKgTs4FukuQqvKfrGlhMGc,25675
|
|
29
|
-
lightning_sdk/api/job_api.py,sha256=
|
|
29
|
+
lightning_sdk/api/job_api.py,sha256=g-BsbDebujDJTS9NsoDJNmIoXhtjpegs5aGn8lLFNjA,17493
|
|
30
30
|
lightning_sdk/api/k8s_api.py,sha256=lZYbbqCQ_2AxN9ExJoY7qlK8unEtMK1LP1FvLNAzwt4,3995
|
|
31
31
|
lightning_sdk/api/license_api.py,sha256=ahuwn9QQqut0HCSqqgZkr45TXOZSK_Rs9HG39LLMcto,1380
|
|
32
32
|
lightning_sdk/api/lit_container_api.py,sha256=jCJVwd-3MNjejL9FyvH89pzt-SeG3G8qCJD16iTMJAQ,11454
|
|
@@ -35,7 +35,7 @@ lightning_sdk/api/mmt_api.py,sha256=rn-zYJR31QUCd1EgG2ApHWe3JzTIkg01fDvG8pvSI1k,
|
|
|
35
35
|
lightning_sdk/api/org_api.py,sha256=Ze3z_ATVrukobujV5YdC42DKj45Vuwl7X52q_Vr-o3U,803
|
|
36
36
|
lightning_sdk/api/pipeline_api.py,sha256=YXVVNYVRA3xcmjEHCt2AMwSjspxEeDt5d-kZy2YDvZg,4669
|
|
37
37
|
lightning_sdk/api/studio_api.py,sha256=pIcmA7fr5ZTAbxsu5VKu-8MXu3x8VP0nDi7yXVJqGh4,42612
|
|
38
|
-
lightning_sdk/api/teamspace_api.py,sha256=
|
|
38
|
+
lightning_sdk/api/teamspace_api.py,sha256=iFSPtdEBuaxbDjncgD7ulXdn8EkzPRNyuxOIZYqFqos,22030
|
|
39
39
|
lightning_sdk/api/user_api.py,sha256=DJTD2wXPGv6z_oFDv8rIrVZVPBX_pWYv2mD9lN3CvAE,4740
|
|
40
40
|
lightning_sdk/api/utils.py,sha256=e0rfYBx5ex8hp_iIJW7LPQSz6jXmqFAc3D4_YMq_ayk,29747
|
|
41
41
|
lightning_sdk/cli/__init__.py,sha256=lksw08t_ZIuHOH47LCIqSVHeZ8cUXI2aJWHYhyujYHM,32
|
|
@@ -116,10 +116,10 @@ lightning_sdk/cli/vm/switch.py,sha256=7jcKbTnqRv6JjOcDDVRDy8OP9xCxJ3ctLqBJViNAxb
|
|
|
116
116
|
lightning_sdk/deployment/__init__.py,sha256=TRkd1xGCuYcsPzZwvq-vm_Qwlu3-htp8je-PYMcqjFc,579
|
|
117
117
|
lightning_sdk/deployment/deployment.py,sha256=iI2B9dIAQjknqzIcWNP2MsHr-l0K2E9SW1EJp-H24rs,23526
|
|
118
118
|
lightning_sdk/job/__init__.py,sha256=1MxjQ6rHkyUHCypSW9RuXuVMVH11WiqhIXcU2LCFMwE,64
|
|
119
|
-
lightning_sdk/job/base.py,sha256=
|
|
120
|
-
lightning_sdk/job/job.py,sha256=
|
|
121
|
-
lightning_sdk/job/v1.py,sha256=
|
|
122
|
-
lightning_sdk/job/v2.py,sha256=
|
|
119
|
+
lightning_sdk/job/base.py,sha256=ioGl5NuMnpNhflYF3vQiyjMqshHD9ie77HKgdyFvbyo,21897
|
|
120
|
+
lightning_sdk/job/job.py,sha256=6wfgBxVwQDsjOK2lDlB7QFvbe_EBhPktmw0bhFTNOig,16019
|
|
121
|
+
lightning_sdk/job/v1.py,sha256=35Urn58oyWadV7sV6o14Vt8hDnFH-eL2JZ4NpdlQfYU,10089
|
|
122
|
+
lightning_sdk/job/v2.py,sha256=Y7cJzoa90c9Jt4HIZ2t1cTtMIZPhbuQ8_bVa_xrF20Y,13246
|
|
123
123
|
lightning_sdk/job/work.py,sha256=aRknNDja-96qQaYw0fNboEGtOZCmvztYEzUPxLNAt8g,2456
|
|
124
124
|
lightning_sdk/lightning_cloud/__init__.py,sha256=o91SMAlwr4Ke5ESe8fHjqXcj31_h7rT-MlFoXA-n2EI,173
|
|
125
125
|
lightning_sdk/lightning_cloud/__version__.py,sha256=lOfmWHtjmiuSG28TbKQqd2B3nwmSGOlKVFwhaj_cRJk,23
|
|
@@ -1289,7 +1289,7 @@ lightning_sdk/pipeline/__init__.py,sha256=Sja_0NJ8vgh-2ThSVP3WDI9a9qghrWd21LkaQp
|
|
|
1289
1289
|
lightning_sdk/pipeline/pipeline.py,sha256=l9yZit7HVj8JyVFRWFGjeU4n6oG6J2f7MNEev650ONw,6346
|
|
1290
1290
|
lightning_sdk/pipeline/printer.py,sha256=fsewFE_nnI-x5KscviYvQbKgNcgMyn-uT0UWlArGn-8,4828
|
|
1291
1291
|
lightning_sdk/pipeline/schedule.py,sha256=J6lfjeuUMqGhX6xo6-qIliyi7KmB4e8BimTKJh7cJXY,20059
|
|
1292
|
-
lightning_sdk/pipeline/steps.py,sha256=
|
|
1292
|
+
lightning_sdk/pipeline/steps.py,sha256=fzgxJwRsFpwCqUCV-42A0NYBJwWi2Tz2sJuohPuzXh4,14569
|
|
1293
1293
|
lightning_sdk/pipeline/utils.py,sha256=3L7UgY78w2VAVSQmelQNnz_X9zJdFo1NJBtez221ge0,3923
|
|
1294
1294
|
lightning_sdk/services/__init__.py,sha256=wi1yv0SCnfJub5tOq8y9SblK3-CEseHJuvH-HmtAy7U,229
|
|
1295
1295
|
lightning_sdk/services/file_endpoint.py,sha256=F_ivy1cPvyvdE5C4aJY7PBSVGn6Dj88QqObbwSvKfYQ,7673
|
|
@@ -1304,9 +1304,9 @@ lightning_sdk/utils/logging.py,sha256=WPyOx7KAn8OpRKqoDDlB7MkORtLDryJsj1WVXLYNqy
|
|
|
1304
1304
|
lightning_sdk/utils/names.py,sha256=1EuXbIh7wldkDp1FG10oz9vIOyWrpGWeFFVy-DQBgzA,18162
|
|
1305
1305
|
lightning_sdk/utils/progress.py,sha256=bLWw39fzq29PMWoFXaPIVfoS3Ug245950oWOFJ2ZaiU,12596
|
|
1306
1306
|
lightning_sdk/utils/resolve.py,sha256=ukC-Zn35gNZV-fQ-ZyUgZkRPFb8nwsFh_aN7YcJ0sl8,10613
|
|
1307
|
-
lightning_sdk-2025.12.
|
|
1308
|
-
lightning_sdk-2025.12.
|
|
1309
|
-
lightning_sdk-2025.12.
|
|
1310
|
-
lightning_sdk-2025.12.
|
|
1311
|
-
lightning_sdk-2025.12.
|
|
1312
|
-
lightning_sdk-2025.12.
|
|
1307
|
+
lightning_sdk-2025.12.16.dist-info/LICENSE,sha256=uFIuZwj5z-4TeF2UuacPZ1o17HkvKObT8fY50qN84sg,1064
|
|
1308
|
+
lightning_sdk-2025.12.16.dist-info/METADATA,sha256=Der9YTQLC8A5J9Cn26jN3kcXh2aENVHMAA5t7Ahdwzg,4160
|
|
1309
|
+
lightning_sdk-2025.12.16.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
|
1310
|
+
lightning_sdk-2025.12.16.dist-info/entry_points.txt,sha256=OoZa4Fc8NMs6GSN0cdA1J8e6couzAcL82CbM1yo4f_M,122
|
|
1311
|
+
lightning_sdk-2025.12.16.dist-info/top_level.txt,sha256=ps8doKILFXmN7F1mHncShmnQoTxKBRPIcchC8TpoBw4,19
|
|
1312
|
+
lightning_sdk-2025.12.16.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|