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.
Files changed (29) hide show
  1. lightning_sdk/__init__.py +1 -1
  2. lightning_sdk/api/deployment_api.py +0 -2
  3. lightning_sdk/api/job_api.py +4 -0
  4. lightning_sdk/api/teamspace_api.py +4 -2
  5. lightning_sdk/api/utils.py +6 -3
  6. lightning_sdk/cli/download.py +3 -5
  7. lightning_sdk/cli/run.py +16 -0
  8. lightning_sdk/cli/upload.py +3 -10
  9. lightning_sdk/job/base.py +22 -0
  10. lightning_sdk/job/job.py +10 -1
  11. lightning_sdk/job/v1.py +5 -0
  12. lightning_sdk/job/v2.py +12 -0
  13. lightning_sdk/lightning_cloud/openapi/api/data_connection_service_api.py +6 -1
  14. lightning_sdk/lightning_cloud/openapi/api/models_store_api.py +118 -1
  15. lightning_sdk/lightning_cloud/openapi/models/id_start_body.py +29 -3
  16. lightning_sdk/lightning_cloud/openapi/models/project_id_cloudspaces_body.py +27 -1
  17. lightning_sdk/lightning_cloud/openapi/models/v1_data_path.py +29 -3
  18. lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py +53 -53
  19. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job.py +27 -1
  20. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_state.py +0 -2
  21. lightning_sdk/models.py +132 -0
  22. lightning_sdk/teamspace.py +3 -2
  23. {lightning_sdk-0.1.38.dist-info → lightning_sdk-0.1.39.dist-info}/METADATA +1 -1
  24. {lightning_sdk-0.1.38.dist-info → lightning_sdk-0.1.39.dist-info}/RECORD +28 -28
  25. lightning_sdk/cli/models.py +0 -68
  26. {lightning_sdk-0.1.38.dist-info → lightning_sdk-0.1.39.dist-info}/LICENSE +0 -0
  27. {lightning_sdk-0.1.38.dist-info → lightning_sdk-0.1.39.dist-info}/WHEEL +0 -0
  28. {lightning_sdk-0.1.38.dist-info → lightning_sdk-0.1.39.dist-info}/entry_points.txt +0 -0
  29. {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, skip_data_connections_setup: 'bool' =None, skip_filesystem_setup: 'bool' =None, spot: 'bool' =None, volumes: 'list[V1Volume]' =None): # noqa: E501
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
  """
@@ -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
+ )
@@ -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
- teamspace_id=self.id,
257
+ teamspace_name=self.name,
258
+ teamspace_owner_name=self.owner.name,
258
259
  progress_bar=progress_bar,
259
260
  )
260
261
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lightning_sdk
3
- Version: 0.1.38
3
+ Version: 0.1.39
4
4
  Summary: SDK to develop using Lightning AI Studios
5
5
  Author-email: Lightning-AI <justus@lightning.ai>
6
6
  License: MIT License
@@ -1,44 +1,44 @@
1
1
  docs/source/conf.py,sha256=r8yX20eC-4mHhMTd0SbQb5TlSWHhO6wnJ0VJ_FBFpag,13249
2
- lightning_sdk/__init__.py,sha256=E_I8N6ba8nqKLuK5c-LJrL4x25I0kXkj2NYv91VtIC0,925
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=AiU88YfAZD44XfXraPUcEVA6qaq4EA0AiVYongGj-i4,10882
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=9HhOHz7ElmjgX88YkPUtETPgz_jMFkK1nTO18-jUniI,21505
19
- lightning_sdk/api/job_api.py,sha256=nWxpIepzuCYGo-u1DjSMfPB0lvyBYYxkMEiv0ozQEMw,8649
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=kMpQf8io-WhJ4Kd3pSOSe6nZTPqJ2hfUg4bimtmNmVk,10042
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=RdrxnoreB6SnxSKVWDY0pPb6dZ9m_Y5nq32AAQBx01I,21560
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=f_pXtLyPXH4r6PVzg7-39O7dd479PTU5iLB0PgTKM7k,6185
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/models.py,sha256=Op5v8XnjdpJksYhvRpW8UL8-XphidTrC0_DkOjZa5Wg,2580
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=OvNgHTeQ92q2zfiGH0LmZAwGZeAGv1spVNbg-gLnJTA,9372
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=cqErQX93yg4iJDdSCgTcRwtrWnhr3ZRqcTRwcIJG7Y8,5236
39
- lightning_sdk/job/job.py,sha256=dNUBbXlsTOgE1KNQ9RAGbDnWm68R6yFc8KlVko1MRfM,4455
40
- lightning_sdk/job/v1.py,sha256=Z_gYL0Smiz4B3vzRmXZMw7ojxkFDfc4L0-1SNoznqt8,5778
41
- lightning_sdk/job/v2.py,sha256=lxfBr9FwLvKAYJNh4fJPlnlDgzU-VmtDYVP71rQ7qCk,4548
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=bvoAUiLsdPvyYMEWWvcEDe9oarIfvLzxz_ZMoADDHOM,50181
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=jH0ZmE4P32pZqHi_w3ybL71MhvKxt18ToCjETm9TDJE,71974
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=oXFItTT6ZcBhqPmXEJZEq1wUMEjlxRNKJO3jvuzkaD4,3900
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=RlOK35alRUHH63pt_ijqMpDhUPsCkZSGSQ7TqY6n-TE,14431
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=uPDS3qp5puZSZfOxAIrZaV4wG8toUCOUdw7uX_Fjs6I,5150
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=N4fWyVPRH4ZZHSIIEwTr9a_phQlpnkq2I_qFi8CutA8,19260
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=Jf4wZkYcy6u2AWvs-Poo6KCOevvhVk1xUvwRyABXudo,11005
643
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_state.py,sha256=WLRj0swuWjbdOtpqncMIhNsF9bYOMUB5h_jFn1RBkeE,3383
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.38.dist-info/LICENSE,sha256=uFIuZwj5z-4TeF2UuacPZ1o17HkvKObT8fY50qN84sg,1064
826
- lightning_sdk-0.1.38.dist-info/METADATA,sha256=oxfqzVjo2Kz5H6jemi-WJqW7cfpTD0lRk1WY6eienEQ,3920
827
- lightning_sdk-0.1.38.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
828
- lightning_sdk-0.1.38.dist-info/entry_points.txt,sha256=msB9PJWIJ784dX-OP8by51d4IbKYH3Fj1vCuA9oXjHY,68
829
- lightning_sdk-0.1.38.dist-info/top_level.txt,sha256=ps8doKILFXmN7F1mHncShmnQoTxKBRPIcchC8TpoBw4,19
830
- lightning_sdk-0.1.38.dist-info/RECORD,,
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,,