lightning-sdk 0.1.38__py3-none-any.whl → 0.1.39__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/__init__.py +1 -1
- lightning_sdk/api/deployment_api.py +0 -2
- lightning_sdk/api/job_api.py +4 -0
- lightning_sdk/api/teamspace_api.py +4 -2
- lightning_sdk/api/utils.py +6 -3
- lightning_sdk/cli/download.py +3 -5
- lightning_sdk/cli/run.py +16 -0
- lightning_sdk/cli/upload.py +3 -10
- lightning_sdk/job/base.py +22 -0
- lightning_sdk/job/job.py +10 -1
- lightning_sdk/job/v1.py +5 -0
- lightning_sdk/job/v2.py +12 -0
- lightning_sdk/lightning_cloud/openapi/api/data_connection_service_api.py +6 -1
- lightning_sdk/lightning_cloud/openapi/api/models_store_api.py +118 -1
- lightning_sdk/lightning_cloud/openapi/models/id_start_body.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/project_id_cloudspaces_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_data_path.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py +53 -53
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_state.py +0 -2
- lightning_sdk/models.py +132 -0
- lightning_sdk/teamspace.py +3 -2
- {lightning_sdk-0.1.38.dist-info → lightning_sdk-0.1.39.dist-info}/METADATA +1 -1
- {lightning_sdk-0.1.38.dist-info → lightning_sdk-0.1.39.dist-info}/RECORD +28 -28
- lightning_sdk/cli/models.py +0 -68
- {lightning_sdk-0.1.38.dist-info → lightning_sdk-0.1.39.dist-info}/LICENSE +0 -0
- {lightning_sdk-0.1.38.dist-info → lightning_sdk-0.1.39.dist-info}/WHEEL +0 -0
- {lightning_sdk-0.1.38.dist-info → lightning_sdk-0.1.39.dist-info}/entry_points.txt +0 -0
- {lightning_sdk-0.1.38.dist-info → lightning_sdk-0.1.39.dist-info}/top_level.txt +0 -0
|
@@ -43,20 +43,23 @@ class V1DataPath(object):
|
|
|
43
43
|
swagger_types = {
|
|
44
44
|
'single_file': 'bool',
|
|
45
45
|
'stored_path': 'str',
|
|
46
|
-
'target_path': 'str'
|
|
46
|
+
'target_path': 'str',
|
|
47
|
+
'updated_at': 'datetime'
|
|
47
48
|
}
|
|
48
49
|
|
|
49
50
|
attribute_map = {
|
|
50
51
|
'single_file': 'singleFile',
|
|
51
52
|
'stored_path': 'storedPath',
|
|
52
|
-
'target_path': 'targetPath'
|
|
53
|
+
'target_path': 'targetPath',
|
|
54
|
+
'updated_at': 'updatedAt'
|
|
53
55
|
}
|
|
54
56
|
|
|
55
|
-
def __init__(self, single_file: 'bool' =None, stored_path: 'str' =None, target_path: 'str' =None): # noqa: E501
|
|
57
|
+
def __init__(self, single_file: 'bool' =None, stored_path: 'str' =None, target_path: 'str' =None, updated_at: 'datetime' =None): # noqa: E501
|
|
56
58
|
"""V1DataPath - a model defined in Swagger""" # noqa: E501
|
|
57
59
|
self._single_file = None
|
|
58
60
|
self._stored_path = None
|
|
59
61
|
self._target_path = None
|
|
62
|
+
self._updated_at = None
|
|
60
63
|
self.discriminator = None
|
|
61
64
|
if single_file is not None:
|
|
62
65
|
self.single_file = single_file
|
|
@@ -64,6 +67,8 @@ class V1DataPath(object):
|
|
|
64
67
|
self.stored_path = stored_path
|
|
65
68
|
if target_path is not None:
|
|
66
69
|
self.target_path = target_path
|
|
70
|
+
if updated_at is not None:
|
|
71
|
+
self.updated_at = updated_at
|
|
67
72
|
|
|
68
73
|
@property
|
|
69
74
|
def single_file(self) -> 'bool':
|
|
@@ -128,6 +133,27 @@ class V1DataPath(object):
|
|
|
128
133
|
|
|
129
134
|
self._target_path = target_path
|
|
130
135
|
|
|
136
|
+
@property
|
|
137
|
+
def updated_at(self) -> 'datetime':
|
|
138
|
+
"""Gets the updated_at of this V1DataPath. # noqa: E501
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
:return: The updated_at of this V1DataPath. # noqa: E501
|
|
142
|
+
:rtype: datetime
|
|
143
|
+
"""
|
|
144
|
+
return self._updated_at
|
|
145
|
+
|
|
146
|
+
@updated_at.setter
|
|
147
|
+
def updated_at(self, updated_at: 'datetime'):
|
|
148
|
+
"""Sets the updated_at of this V1DataPath.
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
:param updated_at: The updated_at of this V1DataPath. # noqa: E501
|
|
152
|
+
:type: datetime
|
|
153
|
+
"""
|
|
154
|
+
|
|
155
|
+
self._updated_at = updated_at
|
|
156
|
+
|
|
131
157
|
def to_dict(self) -> dict:
|
|
132
158
|
"""Returns the model properties as a dict"""
|
|
133
159
|
result = {}
|
|
@@ -41,6 +41,8 @@ class V1JobSpec(object):
|
|
|
41
41
|
and the value is json key in definition.
|
|
42
42
|
"""
|
|
43
43
|
swagger_types = {
|
|
44
|
+
'artifacts_destination': 'str',
|
|
45
|
+
'artifacts_source': 'str',
|
|
44
46
|
'cloudspace_id': 'str',
|
|
45
47
|
'cluster_id': 'str',
|
|
46
48
|
'command': 'str',
|
|
@@ -58,13 +60,13 @@ class V1JobSpec(object):
|
|
|
58
60
|
'resources': 'V1Resources',
|
|
59
61
|
'restart_policy': 'str',
|
|
60
62
|
'run_id': 'str',
|
|
61
|
-
'skip_data_connections_setup': 'bool',
|
|
62
|
-
'skip_filesystem_setup': 'bool',
|
|
63
63
|
'spot': 'bool',
|
|
64
64
|
'volumes': 'list[V1Volume]'
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
attribute_map = {
|
|
68
|
+
'artifacts_destination': 'artifactsDestination',
|
|
69
|
+
'artifacts_source': 'artifactsSource',
|
|
68
70
|
'cloudspace_id': 'cloudspaceId',
|
|
69
71
|
'cluster_id': 'clusterId',
|
|
70
72
|
'command': 'command',
|
|
@@ -82,14 +84,14 @@ class V1JobSpec(object):
|
|
|
82
84
|
'resources': 'resources',
|
|
83
85
|
'restart_policy': 'restartPolicy',
|
|
84
86
|
'run_id': 'runId',
|
|
85
|
-
'skip_data_connections_setup': 'skipDataConnectionsSetup',
|
|
86
|
-
'skip_filesystem_setup': 'skipFilesystemSetup',
|
|
87
87
|
'spot': 'spot',
|
|
88
88
|
'volumes': 'volumes'
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
def __init__(self, cloudspace_id: 'str' =None, cluster_id: 'str' =None, command: 'str' =None, data_paths: 'list[V1DataPath]' =None, entrypoint: 'str' =None, env: 'list[V1EnvVar]' =None, image: 'str' =None, image_cluster_credentials: 'bool' =None, image_secret_ref: 'str' =None, include_credentials: 'bool' =None, instance_name: 'str' =None, instance_type: 'str' =None, modified_volume: 'bool' =None, readiness_probe: 'V1JobHealthCheckConfig' =None, resources: 'V1Resources' =None, restart_policy: 'str' =None, run_id: 'str' =None,
|
|
91
|
+
def __init__(self, artifacts_destination: 'str' =None, artifacts_source: 'str' =None, cloudspace_id: 'str' =None, cluster_id: 'str' =None, command: 'str' =None, data_paths: 'list[V1DataPath]' =None, entrypoint: 'str' =None, env: 'list[V1EnvVar]' =None, image: 'str' =None, image_cluster_credentials: 'bool' =None, image_secret_ref: 'str' =None, include_credentials: 'bool' =None, instance_name: 'str' =None, instance_type: 'str' =None, modified_volume: 'bool' =None, readiness_probe: 'V1JobHealthCheckConfig' =None, resources: 'V1Resources' =None, restart_policy: 'str' =None, run_id: 'str' =None, spot: 'bool' =None, volumes: 'list[V1Volume]' =None): # noqa: E501
|
|
92
92
|
"""V1JobSpec - a model defined in Swagger""" # noqa: E501
|
|
93
|
+
self._artifacts_destination = None
|
|
94
|
+
self._artifacts_source = None
|
|
93
95
|
self._cloudspace_id = None
|
|
94
96
|
self._cluster_id = None
|
|
95
97
|
self._command = None
|
|
@@ -107,11 +109,13 @@ class V1JobSpec(object):
|
|
|
107
109
|
self._resources = None
|
|
108
110
|
self._restart_policy = None
|
|
109
111
|
self._run_id = None
|
|
110
|
-
self._skip_data_connections_setup = None
|
|
111
|
-
self._skip_filesystem_setup = None
|
|
112
112
|
self._spot = None
|
|
113
113
|
self._volumes = None
|
|
114
114
|
self.discriminator = None
|
|
115
|
+
if artifacts_destination is not None:
|
|
116
|
+
self.artifacts_destination = artifacts_destination
|
|
117
|
+
if artifacts_source is not None:
|
|
118
|
+
self.artifacts_source = artifacts_source
|
|
115
119
|
if cloudspace_id is not None:
|
|
116
120
|
self.cloudspace_id = cloudspace_id
|
|
117
121
|
if cluster_id is not None:
|
|
@@ -146,15 +150,53 @@ class V1JobSpec(object):
|
|
|
146
150
|
self.restart_policy = restart_policy
|
|
147
151
|
if run_id is not None:
|
|
148
152
|
self.run_id = run_id
|
|
149
|
-
if skip_data_connections_setup is not None:
|
|
150
|
-
self.skip_data_connections_setup = skip_data_connections_setup
|
|
151
|
-
if skip_filesystem_setup is not None:
|
|
152
|
-
self.skip_filesystem_setup = skip_filesystem_setup
|
|
153
153
|
if spot is not None:
|
|
154
154
|
self.spot = spot
|
|
155
155
|
if volumes is not None:
|
|
156
156
|
self.volumes = volumes
|
|
157
157
|
|
|
158
|
+
@property
|
|
159
|
+
def artifacts_destination(self) -> 'str':
|
|
160
|
+
"""Gets the artifacts_destination of this V1JobSpec. # noqa: E501
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
:return: The artifacts_destination of this V1JobSpec. # noqa: E501
|
|
164
|
+
:rtype: str
|
|
165
|
+
"""
|
|
166
|
+
return self._artifacts_destination
|
|
167
|
+
|
|
168
|
+
@artifacts_destination.setter
|
|
169
|
+
def artifacts_destination(self, artifacts_destination: 'str'):
|
|
170
|
+
"""Sets the artifacts_destination of this V1JobSpec.
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
:param artifacts_destination: The artifacts_destination of this V1JobSpec. # noqa: E501
|
|
174
|
+
:type: str
|
|
175
|
+
"""
|
|
176
|
+
|
|
177
|
+
self._artifacts_destination = artifacts_destination
|
|
178
|
+
|
|
179
|
+
@property
|
|
180
|
+
def artifacts_source(self) -> 'str':
|
|
181
|
+
"""Gets the artifacts_source of this V1JobSpec. # noqa: E501
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
:return: The artifacts_source of this V1JobSpec. # noqa: E501
|
|
185
|
+
:rtype: str
|
|
186
|
+
"""
|
|
187
|
+
return self._artifacts_source
|
|
188
|
+
|
|
189
|
+
@artifacts_source.setter
|
|
190
|
+
def artifacts_source(self, artifacts_source: 'str'):
|
|
191
|
+
"""Sets the artifacts_source of this V1JobSpec.
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
:param artifacts_source: The artifacts_source of this V1JobSpec. # noqa: E501
|
|
195
|
+
:type: str
|
|
196
|
+
"""
|
|
197
|
+
|
|
198
|
+
self._artifacts_source = artifacts_source
|
|
199
|
+
|
|
158
200
|
@property
|
|
159
201
|
def cloudspace_id(self) -> 'str':
|
|
160
202
|
"""Gets the cloudspace_id of this V1JobSpec. # noqa: E501
|
|
@@ -512,48 +554,6 @@ class V1JobSpec(object):
|
|
|
512
554
|
|
|
513
555
|
self._run_id = run_id
|
|
514
556
|
|
|
515
|
-
@property
|
|
516
|
-
def skip_data_connections_setup(self) -> 'bool':
|
|
517
|
-
"""Gets the skip_data_connections_setup of this V1JobSpec. # noqa: E501
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
:return: The skip_data_connections_setup of this V1JobSpec. # noqa: E501
|
|
521
|
-
:rtype: bool
|
|
522
|
-
"""
|
|
523
|
-
return self._skip_data_connections_setup
|
|
524
|
-
|
|
525
|
-
@skip_data_connections_setup.setter
|
|
526
|
-
def skip_data_connections_setup(self, skip_data_connections_setup: 'bool'):
|
|
527
|
-
"""Sets the skip_data_connections_setup of this V1JobSpec.
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
:param skip_data_connections_setup: The skip_data_connections_setup of this V1JobSpec. # noqa: E501
|
|
531
|
-
:type: bool
|
|
532
|
-
"""
|
|
533
|
-
|
|
534
|
-
self._skip_data_connections_setup = skip_data_connections_setup
|
|
535
|
-
|
|
536
|
-
@property
|
|
537
|
-
def skip_filesystem_setup(self) -> 'bool':
|
|
538
|
-
"""Gets the skip_filesystem_setup of this V1JobSpec. # noqa: E501
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
:return: The skip_filesystem_setup of this V1JobSpec. # noqa: E501
|
|
542
|
-
:rtype: bool
|
|
543
|
-
"""
|
|
544
|
-
return self._skip_filesystem_setup
|
|
545
|
-
|
|
546
|
-
@skip_filesystem_setup.setter
|
|
547
|
-
def skip_filesystem_setup(self, skip_filesystem_setup: 'bool'):
|
|
548
|
-
"""Sets the skip_filesystem_setup of this V1JobSpec.
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
:param skip_filesystem_setup: The skip_filesystem_setup of this V1JobSpec. # noqa: E501
|
|
552
|
-
:type: bool
|
|
553
|
-
"""
|
|
554
|
-
|
|
555
|
-
self._skip_filesystem_setup = skip_filesystem_setup
|
|
556
|
-
|
|
557
557
|
@property
|
|
558
558
|
def spot(self) -> 'bool':
|
|
559
559
|
"""Gets the spot of this V1JobSpec. # noqa: E501
|
|
@@ -46,6 +46,7 @@ class V1MultiMachineJob(object):
|
|
|
46
46
|
'desired_state': 'V1MultiMachineJobState',
|
|
47
47
|
'id': 'str',
|
|
48
48
|
'machines': 'int',
|
|
49
|
+
'message': 'str',
|
|
49
50
|
'name': 'str',
|
|
50
51
|
'project_id': 'str',
|
|
51
52
|
'spec': 'V1JobSpec',
|
|
@@ -60,6 +61,7 @@ class V1MultiMachineJob(object):
|
|
|
60
61
|
'desired_state': 'desiredState',
|
|
61
62
|
'id': 'id',
|
|
62
63
|
'machines': 'machines',
|
|
64
|
+
'message': 'message',
|
|
63
65
|
'name': 'name',
|
|
64
66
|
'project_id': 'projectId',
|
|
65
67
|
'spec': 'spec',
|
|
@@ -68,13 +70,14 @@ class V1MultiMachineJob(object):
|
|
|
68
70
|
'user_id': 'userId'
|
|
69
71
|
}
|
|
70
72
|
|
|
71
|
-
def __init__(self, cloudspace_id: 'str' =None, created_at: 'datetime' =None, desired_state: 'V1MultiMachineJobState' =None, id: 'str' =None, machines: 'int' =None, name: 'str' =None, project_id: 'str' =None, spec: 'V1JobSpec' =None, status: 'V1MultiMachineJobStatus' =None, updated_at: 'datetime' =None, user_id: 'str' =None): # noqa: E501
|
|
73
|
+
def __init__(self, cloudspace_id: 'str' =None, created_at: 'datetime' =None, desired_state: 'V1MultiMachineJobState' =None, id: 'str' =None, machines: 'int' =None, message: 'str' =None, name: 'str' =None, project_id: 'str' =None, spec: 'V1JobSpec' =None, status: 'V1MultiMachineJobStatus' =None, updated_at: 'datetime' =None, user_id: 'str' =None): # noqa: E501
|
|
72
74
|
"""V1MultiMachineJob - a model defined in Swagger""" # noqa: E501
|
|
73
75
|
self._cloudspace_id = None
|
|
74
76
|
self._created_at = None
|
|
75
77
|
self._desired_state = None
|
|
76
78
|
self._id = None
|
|
77
79
|
self._machines = None
|
|
80
|
+
self._message = None
|
|
78
81
|
self._name = None
|
|
79
82
|
self._project_id = None
|
|
80
83
|
self._spec = None
|
|
@@ -92,6 +95,8 @@ class V1MultiMachineJob(object):
|
|
|
92
95
|
self.id = id
|
|
93
96
|
if machines is not None:
|
|
94
97
|
self.machines = machines
|
|
98
|
+
if message is not None:
|
|
99
|
+
self.message = message
|
|
95
100
|
if name is not None:
|
|
96
101
|
self.name = name
|
|
97
102
|
if project_id is not None:
|
|
@@ -210,6 +215,27 @@ class V1MultiMachineJob(object):
|
|
|
210
215
|
|
|
211
216
|
self._machines = machines
|
|
212
217
|
|
|
218
|
+
@property
|
|
219
|
+
def message(self) -> 'str':
|
|
220
|
+
"""Gets the message of this V1MultiMachineJob. # noqa: E501
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
:return: The message of this V1MultiMachineJob. # noqa: E501
|
|
224
|
+
:rtype: str
|
|
225
|
+
"""
|
|
226
|
+
return self._message
|
|
227
|
+
|
|
228
|
+
@message.setter
|
|
229
|
+
def message(self, message: 'str'):
|
|
230
|
+
"""Sets the message of this V1MultiMachineJob.
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
:param message: The message of this V1MultiMachineJob. # noqa: E501
|
|
234
|
+
:type: str
|
|
235
|
+
"""
|
|
236
|
+
|
|
237
|
+
self._message = message
|
|
238
|
+
|
|
213
239
|
@property
|
|
214
240
|
def name(self) -> 'str':
|
|
215
241
|
"""Gets the name of this V1MultiMachineJob. # noqa: E501
|
|
@@ -39,9 +39,7 @@ class V1MultiMachineJobState(object):
|
|
|
39
39
|
"""
|
|
40
40
|
UNSPECIFIED = "MultiMachineJob_STATE_UNSPECIFIED"
|
|
41
41
|
RUNNING = "MultiMachineJob_STATE_RUNNING"
|
|
42
|
-
STOP = "MultiMachineJob_STATE_STOP"
|
|
43
42
|
STOPPED = "MultiMachineJob_STATE_STOPPED"
|
|
44
|
-
DELETE = "MultiMachineJob_STATE_DELETE"
|
|
45
43
|
DELETED = "MultiMachineJob_STATE_DELETED"
|
|
46
44
|
FAILED = "MultiMachineJob_STATE_FAILED"
|
|
47
45
|
"""
|
lightning_sdk/models.py
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
4
|
+
|
|
5
|
+
from lightning_sdk.api import OrgApi, TeamspaceApi, UserApi
|
|
6
|
+
from lightning_sdk.lightning_cloud.openapi.models import V1Membership, V1OwnerType
|
|
7
|
+
from lightning_sdk.lightning_cloud.openapi.rest import ApiException
|
|
8
|
+
from lightning_sdk.teamspace import Teamspace
|
|
9
|
+
from lightning_sdk.user import User
|
|
10
|
+
from lightning_sdk.utils.resolve import _get_authed_user
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def _get_teamspace_and_path(
|
|
14
|
+
ts: V1Membership, org_api: OrgApi, user_api: UserApi, authed_user: User
|
|
15
|
+
) -> Tuple[str, Dict[str, Any]]:
|
|
16
|
+
if ts.owner_type == V1OwnerType.ORGANIZATION:
|
|
17
|
+
org = org_api._get_org_by_id(ts.owner_id)
|
|
18
|
+
return f"{org.name}/{ts.name}", {"name": ts.name, "org": org.name}
|
|
19
|
+
|
|
20
|
+
if ts.owner_type == V1OwnerType.USER and ts.owner_id != authed_user.id:
|
|
21
|
+
user = user_api._get_user_by_id(ts.owner_id) # todo: check also the name
|
|
22
|
+
return f"{user.username}/{ts.name}", {"name": ts.name, "user": User(name=user.username)}
|
|
23
|
+
|
|
24
|
+
if ts.owner_type == V1OwnerType.USER:
|
|
25
|
+
return f"{authed_user.name}/{ts.name}", {"name": ts.name, "user": authed_user}
|
|
26
|
+
|
|
27
|
+
raise RuntimeError(f"Unknown organization type {ts.owner_type}")
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _list_teamspaces() -> List[str]:
|
|
31
|
+
org_api = OrgApi()
|
|
32
|
+
user_api = UserApi()
|
|
33
|
+
authed_user = _get_authed_user()
|
|
34
|
+
|
|
35
|
+
return [
|
|
36
|
+
_get_teamspace_and_path(ts, org_api, user_api, authed_user)[0]
|
|
37
|
+
for ts in user_api._get_all_teamspace_memberships("")
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _get_teamspace(name: str, organization: str) -> Teamspace:
|
|
42
|
+
"""Get a Teamspace object from the SDK."""
|
|
43
|
+
org_api = OrgApi()
|
|
44
|
+
user_api = UserApi()
|
|
45
|
+
authed_user = _get_authed_user()
|
|
46
|
+
|
|
47
|
+
requested_teamspace = f"{organization}/{name}".lower()
|
|
48
|
+
|
|
49
|
+
for ts in user_api._get_all_teamspace_memberships(""):
|
|
50
|
+
if ts.name != name:
|
|
51
|
+
continue
|
|
52
|
+
|
|
53
|
+
teamspace_path, teamspace = _get_teamspace_and_path(ts, org_api, user_api, authed_user)
|
|
54
|
+
if requested_teamspace == teamspace_path:
|
|
55
|
+
return Teamspace(**teamspace)
|
|
56
|
+
|
|
57
|
+
options = f"{os.linesep}\t".join(_list_teamspaces())
|
|
58
|
+
raise RuntimeError(f"Teamspace `{requested_teamspace}` not found. Available teamspaces: {os.linesep}\t{options}")
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _parse_model_name_and_version(name: str) -> Tuple[str, str, str, str]:
|
|
62
|
+
"""Parse the name argument into its components."""
|
|
63
|
+
try:
|
|
64
|
+
org_name, teamspace_name, model_name = name.split("/")
|
|
65
|
+
parts = model_name.split(":")
|
|
66
|
+
if len(parts) == 1:
|
|
67
|
+
return org_name, teamspace_name, parts[0], "latest"
|
|
68
|
+
if len(parts) == 2:
|
|
69
|
+
return org_name, teamspace_name, parts[0], parts[1]
|
|
70
|
+
# The rest of the validation for name and version happens in the backend
|
|
71
|
+
raise ValueError(
|
|
72
|
+
"Model version is expected to be in the format `entity/modelname:version` separated by a"
|
|
73
|
+
f" single colon, but got: {name}"
|
|
74
|
+
)
|
|
75
|
+
except ValueError as err:
|
|
76
|
+
raise ValueError(
|
|
77
|
+
f"Model name must be in the format 'organization/teamspace/model' but you provided '{name}'."
|
|
78
|
+
) from err
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def download_model(
|
|
82
|
+
name: str,
|
|
83
|
+
download_dir: Union[Path, str] = ".",
|
|
84
|
+
progress_bar: bool = True,
|
|
85
|
+
) -> List[str]:
|
|
86
|
+
"""Download a Model.
|
|
87
|
+
|
|
88
|
+
Args:
|
|
89
|
+
name: The name of the Model you want to download.
|
|
90
|
+
This should have the format <ORGANIZATION-NAME>/<TEAMSPACE-NAME>/<MODEL-NAME>.
|
|
91
|
+
download_dir: The directory where the Model should be downloaded.
|
|
92
|
+
progress_bar: Whether to show a progress bar when downloading.
|
|
93
|
+
"""
|
|
94
|
+
teamspace_owner_name, teamspace_name, model_name, version = _parse_model_name_and_version(name)
|
|
95
|
+
|
|
96
|
+
download_dir = Path(download_dir)
|
|
97
|
+
|
|
98
|
+
api = TeamspaceApi()
|
|
99
|
+
|
|
100
|
+
try:
|
|
101
|
+
return api.download_model_files(
|
|
102
|
+
name=model_name,
|
|
103
|
+
version=version,
|
|
104
|
+
download_dir=download_dir,
|
|
105
|
+
teamspace_name=teamspace_name,
|
|
106
|
+
teamspace_owner_name=teamspace_owner_name,
|
|
107
|
+
progress_bar=progress_bar,
|
|
108
|
+
)
|
|
109
|
+
except ApiException as e:
|
|
110
|
+
# if we get an error, check if the teamspace actually exists (and print the list)
|
|
111
|
+
# TODO: ideally this would match a specific error about teamspace not being found
|
|
112
|
+
_ = _get_teamspace(name=teamspace_name, organization=teamspace_owner_name)
|
|
113
|
+
raise e
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def upload_model(name: str, path: Union[Path, str] = ".", cloud_account: Optional[str] = None) -> None:
|
|
117
|
+
"""Upload a Model.
|
|
118
|
+
|
|
119
|
+
Args:
|
|
120
|
+
name: The name of the Model you want to upload.
|
|
121
|
+
This should have the format <ORGANIZATION-NAME>/<TEAMSPACE-NAME>/<MODEL-NAME>.
|
|
122
|
+
path: The path to the file or directory you want to upload. Defaults to the current directory.
|
|
123
|
+
cloud_account: The name of the cloud account to store the Model in.
|
|
124
|
+
"""
|
|
125
|
+
org_name, teamspace_name, model_name, _ = _parse_model_name_and_version(name)
|
|
126
|
+
teamspace = _get_teamspace(name=teamspace_name, organization=org_name)
|
|
127
|
+
teamspace.upload_model(
|
|
128
|
+
path=path,
|
|
129
|
+
name=model_name,
|
|
130
|
+
progress_bar=True,
|
|
131
|
+
cluster_id=cloud_account,
|
|
132
|
+
)
|
lightning_sdk/teamspace.py
CHANGED
|
@@ -153,7 +153,7 @@ class Teamspace:
|
|
|
153
153
|
|
|
154
154
|
def upload_model(
|
|
155
155
|
self,
|
|
156
|
-
path: str,
|
|
156
|
+
path: Union[str, Path],
|
|
157
157
|
name: str,
|
|
158
158
|
progress_bar: bool = True,
|
|
159
159
|
cluster_id: Optional[str] = None,
|
|
@@ -254,7 +254,8 @@ class Teamspace:
|
|
|
254
254
|
name=name,
|
|
255
255
|
version=version,
|
|
256
256
|
download_dir=download_dir,
|
|
257
|
-
|
|
257
|
+
teamspace_name=self.name,
|
|
258
|
+
teamspace_owner_name=self.owner.name,
|
|
258
259
|
progress_bar=progress_bar,
|
|
259
260
|
)
|
|
260
261
|
|
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
docs/source/conf.py,sha256=r8yX20eC-4mHhMTd0SbQb5TlSWHhO6wnJ0VJ_FBFpag,13249
|
|
2
|
-
lightning_sdk/__init__.py,sha256=
|
|
2
|
+
lightning_sdk/__init__.py,sha256=PFDI_PWtaWboTMLPxqcwjLODg56mr8HJupB9Rd4GdQI,925
|
|
3
3
|
lightning_sdk/agents.py,sha256=ly6Ma1j0ZgGPFyvPvMN28JWiB9dATIstFa5XM8pMi6I,1577
|
|
4
4
|
lightning_sdk/ai_hub.py,sha256=V651b07qzxZmU6vKOs_GLkYZ_g1FY0iz-GlacPBCgPk,6526
|
|
5
5
|
lightning_sdk/constants.py,sha256=ztl1PTUBULnqTf3DyKUSJaV_O20hNtUYT6XvAYIrmIk,749
|
|
6
6
|
lightning_sdk/helpers.py,sha256=RnQwUquc_YPotjh6YXOoJvZs8krX_QFhd7kGv4U_spQ,1844
|
|
7
7
|
lightning_sdk/machine.py,sha256=VdFXStR6ilYBEYuxgGWzcAw2TtW-nEQVsh6hz-2aaEw,750
|
|
8
|
+
lightning_sdk/models.py,sha256=2BFfzfqcvBVUBHSn0q3MA9e8IsYhxkQRqvq5FXDma8Q,5091
|
|
8
9
|
lightning_sdk/organization.py,sha256=WCfzdgjtvY1_A07DnxOpp74V2JR2gQwtXbIEcFDnoVU,1232
|
|
9
10
|
lightning_sdk/owner.py,sha256=t5svD2it4C9pbSpVuG9WJL46CYi37JXNziwnXxhiU5U,1361
|
|
10
11
|
lightning_sdk/plugin.py,sha256=2OgP8YtcLo2K1T0pypLGj3dkIaytTw6N11CHHQmRupY,13591
|
|
11
12
|
lightning_sdk/status.py,sha256=kLDhN4-zdsGuZM577JMl1BbUIoF61bUOadW89ZAATFA,219
|
|
12
13
|
lightning_sdk/studio.py,sha256=wvZrk07ZuG6Bf6c4XK8gMBumyiz_90JUScczdiWq1rU,16763
|
|
13
|
-
lightning_sdk/teamspace.py,sha256=
|
|
14
|
+
lightning_sdk/teamspace.py,sha256=OjBdC9cR5oJ2OQmlTBVjLSHcsQIt_ltFo4B0xGKwwPU,10949
|
|
14
15
|
lightning_sdk/user.py,sha256=vdn8pZqkAZO0-LoRsBdg0TckRKtd_H3QF4gpiZcl4iY,1130
|
|
15
16
|
lightning_sdk/api/__init__.py,sha256=Qn2VVRvir_gO7w4yxGLkZY-R3T7kdiTPKgQ57BhIA9k,413
|
|
16
17
|
lightning_sdk/api/agents_api.py,sha256=G47TbFo9kYqnBMqdw2RW-lfS1VAUBSXDmzs6fpIEMUs,4059
|
|
17
18
|
lightning_sdk/api/ai_hub_api.py,sha256=_7BFcKYS7uYgCi5Q0Yzfz0mcm5LxezeZvgcDVRvsO9M,5571
|
|
18
|
-
lightning_sdk/api/deployment_api.py,sha256=
|
|
19
|
-
lightning_sdk/api/job_api.py,sha256=
|
|
19
|
+
lightning_sdk/api/deployment_api.py,sha256=LJGbpDPM2ZgP71Ja8rCTwsj2m9gruT91jLQ62a1emRc,21427
|
|
20
|
+
lightning_sdk/api/job_api.py,sha256=jDbnsnIjClE2zQpi-VpzzaRihrkd5jFcks6GcLqIfWA,8840
|
|
20
21
|
lightning_sdk/api/org_api.py,sha256=Ze3z_ATVrukobujV5YdC42DKj45Vuwl7X52q_Vr-o3U,803
|
|
21
22
|
lightning_sdk/api/studio_api.py,sha256=ypgTAUJhwfdsEOJHfog4JsgZiLp9ZQA0KggSjLiI0ZA,26143
|
|
22
|
-
lightning_sdk/api/teamspace_api.py,sha256=
|
|
23
|
+
lightning_sdk/api/teamspace_api.py,sha256=TgRhLdsCTLX21EWfGKcn5Y3LtaPVNzZ_eY8bUWL7YYk,10138
|
|
23
24
|
lightning_sdk/api/user_api.py,sha256=sL7RIjjtmZmvCZWx7BBZslhj1BeNh4Idn-RVcdmf7M0,2598
|
|
24
|
-
lightning_sdk/api/utils.py,sha256=
|
|
25
|
+
lightning_sdk/api/utils.py,sha256=3NLuTRME76xKqcYC1hQGUfWzDnb8YsnIYdg4kxKQC_Q,21659
|
|
25
26
|
lightning_sdk/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
27
|
lightning_sdk/cli/ai_hub.py,sha256=XcvTgAhm0eX8a5daQyF94pJooNwnygN5WzDTo35iSN0,1613
|
|
27
|
-
lightning_sdk/cli/download.py,sha256=
|
|
28
|
+
lightning_sdk/cli/download.py,sha256=nyQN3q1vZ0fg4_cfit8cKaokQ9VUd46l_TNcAQWkLwU,5996
|
|
28
29
|
lightning_sdk/cli/entrypoint.py,sha256=yCcRvmvZ9Lrkkq5AOWSVXMDtwU7ov2T6O9QYiVQLBwA,1385
|
|
29
30
|
lightning_sdk/cli/exceptions.py,sha256=QUF3OMAMZwBikvlusimSHSBjb6ywvHpfAumJBEaodSw,169
|
|
30
31
|
lightning_sdk/cli/legacy.py,sha256=ocTVNwlsLRS5aMjbMkwFPjT3uEYvS8C40CJ0PeRRv8g,4707
|
|
31
|
-
lightning_sdk/cli/
|
|
32
|
-
lightning_sdk/cli/run.py,sha256=gPCGz2FkHCPvmw8sQvPqHH2J3WeX2dtoWZUtDHC-pco,3801
|
|
32
|
+
lightning_sdk/cli/run.py,sha256=rAgCdSZaU30pRIL3oNp3nHkl0_8-x8_qQd-WyW_gizw,5026
|
|
33
33
|
lightning_sdk/cli/studios_menu.py,sha256=0kQGqGel8gAbpdJtjOM1a6NEat_TnIqRNprNn8QiK58,3236
|
|
34
|
-
lightning_sdk/cli/upload.py,sha256=
|
|
34
|
+
lightning_sdk/cli/upload.py,sha256=H9OyipYTYAQ9Mzy2e8jtoaa-B34-uXHbTQTzY2Vmhv4,9078
|
|
35
35
|
lightning_sdk/deployment/__init__.py,sha256=BLu7_cVLp97TYxe6qe-J1zKUSZXAVcvCjgcA7plV2k4,497
|
|
36
36
|
lightning_sdk/deployment/deployment.py,sha256=47-aga7g8emJWrEkqr4FzfhMaNnsWhTSoinOl7FAMI0,15035
|
|
37
37
|
lightning_sdk/job/__init__.py,sha256=1MxjQ6rHkyUHCypSW9RuXuVMVH11WiqhIXcU2LCFMwE,64
|
|
38
|
-
lightning_sdk/job/base.py,sha256=
|
|
39
|
-
lightning_sdk/job/job.py,sha256=
|
|
40
|
-
lightning_sdk/job/v1.py,sha256=
|
|
41
|
-
lightning_sdk/job/v2.py,sha256=
|
|
38
|
+
lightning_sdk/job/base.py,sha256=5Cv1OgQzL98Kl1RhZYLCV331zNnsRq7elYSaJR818ic,6438
|
|
39
|
+
lightning_sdk/job/job.py,sha256=cUg8UZiYrzy96FhZYEdYCkZtgG3bim6IOvQtD2E2gG4,4854
|
|
40
|
+
lightning_sdk/job/v1.py,sha256=tPU4fv00WMOR-l8_cTo7bqAPFRqXlTndfBGO1LZscfQ,6045
|
|
41
|
+
lightning_sdk/job/v2.py,sha256=KH6QogvXHV7xnc_hsMF-NmnXX_467lAuWgs4U_LHxJ4,5123
|
|
42
42
|
lightning_sdk/job/work.py,sha256=JNuFp6TaNvO-V-YoO4tDu8e8AFAkHZj3vzt_tqlD6KE,969
|
|
43
43
|
lightning_sdk/lightning_cloud/__init__.py,sha256=o91SMAlwr4Ke5ESe8fHjqXcj31_h7rT-MlFoXA-n2EI,173
|
|
44
44
|
lightning_sdk/lightning_cloud/__version__.py,sha256=lOfmWHtjmiuSG28TbKQqd2B3nwmSGOlKVFwhaj_cRJk,23
|
|
@@ -59,7 +59,7 @@ lightning_sdk/lightning_cloud/openapi/api/auth_service_api.py,sha256=NtdfsFZtQAl
|
|
|
59
59
|
lightning_sdk/lightning_cloud/openapi/api/billing_service_api.py,sha256=SDJ80TezTWKhE3LR67OI6dhHDHABc4BfG7FjcFX7Ba4,68129
|
|
60
60
|
lightning_sdk/lightning_cloud/openapi/api/cloud_space_service_api.py,sha256=DqHIqMzzOUWueLidgWq7JQs63_2iWXsN8c60XRtzyCw,370286
|
|
61
61
|
lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py,sha256=11ketCae2QoKwniLAtDEqv_GDNgAJbyxV8rUYEQytnY,145754
|
|
62
|
-
lightning_sdk/lightning_cloud/openapi/api/data_connection_service_api.py,sha256=
|
|
62
|
+
lightning_sdk/lightning_cloud/openapi/api/data_connection_service_api.py,sha256=OcnRdDs5PgAbmCLM0bdnUzJpTWb_OadztNua7AfVngQ,50422
|
|
63
63
|
lightning_sdk/lightning_cloud/openapi/api/dataset_service_api.py,sha256=wCrcXOMuVs5rA4PHyrVJqpInO-Vy1hulddjCJUenPJc,23508
|
|
64
64
|
lightning_sdk/lightning_cloud/openapi/api/deployment_templates_service_api.py,sha256=VK4ZuwoE0pvWEfSWr2KZNoutRtjovJFH3-6NqFmQjNg,31887
|
|
65
65
|
lightning_sdk/lightning_cloud/openapi/api/endpoint_service_api.py,sha256=IgERziSMhxLxK5ATpsNpNs5Ybpu577mCH7f6yBCr7uw,113191
|
|
@@ -71,7 +71,7 @@ lightning_sdk/lightning_cloud/openapi/api/lightningapp_v2_service_api.py,sha256=
|
|
|
71
71
|
lightning_sdk/lightning_cloud/openapi/api/lightningwork_service_api.py,sha256=dXKzbr4I7TDW-PFsqgiaaw4RtYrzB1X6NZB_hxgMnts,43747
|
|
72
72
|
lightning_sdk/lightning_cloud/openapi/api/lit_logger_service_api.py,sha256=Fo2TsyFV2if4dGuesvQPJFZXw96Wr2hh_bTX8ocRwIE,67154
|
|
73
73
|
lightning_sdk/lightning_cloud/openapi/api/lit_page_service_api.py,sha256=xf48UmWpzjs3woKVfFeyyqCLN13NA_qDepIwMw2SRUg,20457
|
|
74
|
-
lightning_sdk/lightning_cloud/openapi/api/models_store_api.py,sha256=
|
|
74
|
+
lightning_sdk/lightning_cloud/openapi/api/models_store_api.py,sha256=REwcm9ilIetduPkThf0D6ZjQZMPtPy3KWV5mOBqfQdk,77357
|
|
75
75
|
lightning_sdk/lightning_cloud/openapi/api/organizations_service_api.py,sha256=8xYTFSC4yDs32CTcEoWR1ycXX8chLQWRCsKAXJlOCls,88781
|
|
76
76
|
lightning_sdk/lightning_cloud/openapi/api/profiler_service_api.py,sha256=hM2vTawBBuOYZrxN1SjZ6mU5ldvB_jUXRcLb0as0F4M,28286
|
|
77
77
|
lightning_sdk/lightning_cloud/openapi/api/projects_service_api.py,sha256=a0x8UcufASV-CZzmIu-37iJiwhTlzalB07uctELD48Q,85065
|
|
@@ -148,7 +148,7 @@ lightning_sdk/lightning_cloud/openapi/models/id_publications_body.py,sha256=ya6b
|
|
|
148
148
|
lightning_sdk/lightning_cloud/openapi/models/id_publications_body1.py,sha256=H-p5V2Ee0ae6meOGmv-Gm7hKeVFf4f5IREyFEumEMjc,3670
|
|
149
149
|
lightning_sdk/lightning_cloud/openapi/models/id_release_body.py,sha256=j7p1BUSf74WKdWfkQv8ABwYx8egJVKf8wxxvC1R2KxY,3690
|
|
150
150
|
lightning_sdk/lightning_cloud/openapi/models/id_reportlogsactivity_body.py,sha256=l4w-s7Q3VX-FKfSkUbDNA0eTmLPeXk_-k3PrzRAhviA,3830
|
|
151
|
-
lightning_sdk/lightning_cloud/openapi/models/id_start_body.py,sha256=
|
|
151
|
+
lightning_sdk/lightning_cloud/openapi/models/id_start_body.py,sha256=qySSqwn-O3pUA5kGoGGcr5YADSWUhY9P_EoXtgbltGw,4602
|
|
152
152
|
lightning_sdk/lightning_cloud/openapi/models/id_storage_body.py,sha256=am89naxDX9PxhWQk9hLkuFlVb0WZp9UXmi0hSj5OP9I,4920
|
|
153
153
|
lightning_sdk/lightning_cloud/openapi/models/id_uploads_body.py,sha256=4fKv6N6q5me42n6x9CXnVPlYjQ9uUj9N-kOSe71cXQw,3651
|
|
154
154
|
lightning_sdk/lightning_cloud/openapi/models/id_uploads_body1.py,sha256=NqIds1ra2paAdJpjdMG4D4_z7RNx-omRpXdBTx6_ukc,5232
|
|
@@ -175,7 +175,7 @@ lightning_sdk/lightning_cloud/openapi/models/profiler_enabled_body.py,sha256=4Yn
|
|
|
175
175
|
lightning_sdk/lightning_cloud/openapi/models/project_id_agentmanagedendpoints_body.py,sha256=pK1HjgWsXhU7OOKwYdt-SwklzF39N3Ap7Lyrk75T43k,4673
|
|
176
176
|
lightning_sdk/lightning_cloud/openapi/models/project_id_agentmanagedmodels_body.py,sha256=jsMJS8werSAo1LLKdVjYs97wgL2FPIEvQSbbuyDB6mc,4553
|
|
177
177
|
lightning_sdk/lightning_cloud/openapi/models/project_id_agents_body.py,sha256=oE3OGIhX0FfiKqE96YJmHnrRRAXgqrFsIAw840ib64Q,16193
|
|
178
|
-
lightning_sdk/lightning_cloud/openapi/models/project_id_cloudspaces_body.py,sha256=
|
|
178
|
+
lightning_sdk/lightning_cloud/openapi/models/project_id_cloudspaces_body.py,sha256=q36orD3j5-RjVaMtFp3q_DFD1ZbrHBnT2VLyciDsIeM,15176
|
|
179
179
|
lightning_sdk/lightning_cloud/openapi/models/project_id_clusters_body.py,sha256=ewyBgf8oHlhgXKmn4YdjuyG84iONOeNXiWtbRQJfj4U,4348
|
|
180
180
|
lightning_sdk/lightning_cloud/openapi/models/project_id_datasets_body.py,sha256=NkuH_enmOZ0MnYJ_hH2iVP1-Y1a9XinHR_c-5DaJxqU,15094
|
|
181
181
|
lightning_sdk/lightning_cloud/openapi/models/project_id_endpoints_body.py,sha256=bnCgn3Jz3KE7blDn7chONuxJuc7Wg1eYM1QG0hxGR9U,7507
|
|
@@ -336,7 +336,7 @@ lightning_sdk/lightning_cloud/openapi/models/v1_data_connection.py,sha256=s3IUV6
|
|
|
336
336
|
lightning_sdk/lightning_cloud/openapi/models/v1_data_connection_artifact.py,sha256=g91LNJXfc3oDV3JJEZ-Fyy-g19crePaZFnbYtj4NfkM,6824
|
|
337
337
|
lightning_sdk/lightning_cloud/openapi/models/v1_data_connection_mount.py,sha256=NxMM-0hO9QjCw_0bOAsLa4DFZMM_ZFqc2XpeSOMu5P0,6814
|
|
338
338
|
lightning_sdk/lightning_cloud/openapi/models/v1_data_connection_state.py,sha256=eSUVNEhmB-RKoFz2Aehur-IjPIBDd8Z2JPFY4-SSyog,3295
|
|
339
|
-
lightning_sdk/lightning_cloud/openapi/models/v1_data_path.py,sha256=
|
|
339
|
+
lightning_sdk/lightning_cloud/openapi/models/v1_data_path.py,sha256=CJq2RJsuVd2wRwe52nYFmR5iZHrh1vQ8yMWWDLsIwv0,5892
|
|
340
340
|
lightning_sdk/lightning_cloud/openapi/models/v1_dataset.py,sha256=wvuxddnly3oTU32gDj-RhvU1YqAFSHsvdCGZhl3vdB4,16987
|
|
341
341
|
lightning_sdk/lightning_cloud/openapi/models/v1_dataset_type.py,sha256=ZMFPL9mcFlkzT_1ukZu4ndUoARLqsgsG6teZFPISKOc,3065
|
|
342
342
|
lightning_sdk/lightning_cloud/openapi/models/v1_delete_affiliate_link_response.py,sha256=b9k7sRsVDMN9bvwxe5kAn9l9QCnV91wokgXEW4V0_b0,3064
|
|
@@ -504,7 +504,7 @@ lightning_sdk/lightning_cloud/openapi/models/v1_job_health_check_config.py,sha25
|
|
|
504
504
|
lightning_sdk/lightning_cloud/openapi/models/v1_job_log_entry.py,sha256=Bhjx6rx3cJy6tarZ1zLXycZwmpZInMROecDo5ODsakg,4971
|
|
505
505
|
lightning_sdk/lightning_cloud/openapi/models/v1_job_logs_page.py,sha256=uPeDC0SKPuojeSAgV-6Ei43A_nXkgxvQG1qSxd8w8To,6309
|
|
506
506
|
lightning_sdk/lightning_cloud/openapi/models/v1_job_logs_response.py,sha256=9Ae7cFQTJHhI1XBsnHqNGQLFXEMeAJEw7T53jY4BMZg,4467
|
|
507
|
-
lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py,sha256=
|
|
507
|
+
lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py,sha256=4DgXLTe8YkAxE6fhJRAKbeS7kz_pC6MyFo2VWM8Y21U,19031
|
|
508
508
|
lightning_sdk/lightning_cloud/openapi/models/v1_job_timing.py,sha256=qnnGfuKbAU_IEWYZFPaBGTX2DFAvBvgoXllQk7yhMFk,5462
|
|
509
509
|
lightning_sdk/lightning_cloud/openapi/models/v1_joinable_organization.py,sha256=IkuGZ89NWOMpe8JsxXJvkRKdcDUvV4F3akA_USvl5rs,9586
|
|
510
510
|
lightning_sdk/lightning_cloud/openapi/models/v1_keep_alive_cloud_space_instance_response.py,sha256=NRrP0aqQbpd8ejQUApJ2L1vUoSx1UhNOlSh4JeQ2_es,3112
|
|
@@ -639,8 +639,8 @@ lightning_sdk/lightning_cloud/openapi/models/v1_metrics_tracker.py,sha256=b6ihJR
|
|
|
639
639
|
lightning_sdk/lightning_cloud/openapi/models/v1_model.py,sha256=Vcg7XYYpTyC_Ri2tXBwHk4DSlh14v3D7tJckT-wUs0M,12630
|
|
640
640
|
lightning_sdk/lightning_cloud/openapi/models/v1_model_version_archive.py,sha256=dZ_SM_IKbyRxjRSAmfdBWkLEMIWAGLQxYxBmwIjEUcM,12857
|
|
641
641
|
lightning_sdk/lightning_cloud/openapi/models/v1_mount_target.py,sha256=7hWm0_z3weM2V6j900nUpCMceF3q-hXH1tVI1rama2U,5823
|
|
642
|
-
lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job.py,sha256=
|
|
643
|
-
lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_state.py,sha256=
|
|
642
|
+
lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job.py,sha256=fYEWpNPNzAR60XRzn_oaczDG9U-yIFgR1g_u9gW2_Gg,11686
|
|
643
|
+
lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_state.py,sha256=3P-RVvjEsR0gdwEfS7UoL9_j4da4yKzHouK4do7gwU0,3299
|
|
644
644
|
lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_status.py,sha256=x_q3EoAcUK77tENFP0HbjoegkP8u1g2TQe0P62Ed-xY,8835
|
|
645
645
|
lightning_sdk/lightning_cloud/openapi/models/v1_named_get_logger_metrics.py,sha256=VygKKjSPGIbWT9RxbmJfOSlNR-Fq12yKj8wT_SHd2ZQ,3966
|
|
646
646
|
lightning_sdk/lightning_cloud/openapi/models/v1_network_config.py,sha256=bHDZVIsqgiSi7eBf72RunvrLR-d-4b9S7oDMAZFBvCM,5476
|
|
@@ -822,9 +822,9 @@ lightning_sdk/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
|
|
|
822
822
|
lightning_sdk/utils/dynamic.py,sha256=glUTO1JC9APtQ6Gr9SO02a3zr56-sPAXM5C3NrTpgyQ,1959
|
|
823
823
|
lightning_sdk/utils/enum.py,sha256=h2JRzqoBcSlUdanFHmkj_j5DleBHAu1esQYUsdNI-hU,4106
|
|
824
824
|
lightning_sdk/utils/resolve.py,sha256=gU3MSko9Y7rE4jcnVwstNBaW83OFnSgvM-N44Ibrc_A,5148
|
|
825
|
-
lightning_sdk-0.1.
|
|
826
|
-
lightning_sdk-0.1.
|
|
827
|
-
lightning_sdk-0.1.
|
|
828
|
-
lightning_sdk-0.1.
|
|
829
|
-
lightning_sdk-0.1.
|
|
830
|
-
lightning_sdk-0.1.
|
|
825
|
+
lightning_sdk-0.1.39.dist-info/LICENSE,sha256=uFIuZwj5z-4TeF2UuacPZ1o17HkvKObT8fY50qN84sg,1064
|
|
826
|
+
lightning_sdk-0.1.39.dist-info/METADATA,sha256=roqOUzNAM6XxDxtxhbzynlLVbbZAv6WKXgnY45BUOhs,3920
|
|
827
|
+
lightning_sdk-0.1.39.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
828
|
+
lightning_sdk-0.1.39.dist-info/entry_points.txt,sha256=msB9PJWIJ784dX-OP8by51d4IbKYH3Fj1vCuA9oXjHY,68
|
|
829
|
+
lightning_sdk-0.1.39.dist-info/top_level.txt,sha256=ps8doKILFXmN7F1mHncShmnQoTxKBRPIcchC8TpoBw4,19
|
|
830
|
+
lightning_sdk-0.1.39.dist-info/RECORD,,
|