lightning-sdk 2025.10.27__py3-none-any.whl → 2025.10.31__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 (39) hide show
  1. lightning_sdk/__init__.py +1 -1
  2. lightning_sdk/api/deployment_api.py +16 -0
  3. lightning_sdk/api/teamspace_api.py +1 -1
  4. lightning_sdk/cli/legacy/deploy/_auth.py +1 -2
  5. lightning_sdk/cli/utils/teamspace_selection.py +4 -5
  6. lightning_sdk/deployment/deployment.py +2 -1
  7. lightning_sdk/lightning_cloud/openapi/__init__.py +8 -0
  8. lightning_sdk/lightning_cloud/openapi/api/__init__.py +1 -0
  9. lightning_sdk/lightning_cloud/openapi/api/assistants_service_api.py +234 -0
  10. lightning_sdk/lightning_cloud/openapi/api/markets_service_api.py +145 -0
  11. lightning_sdk/lightning_cloud/openapi/models/__init__.py +7 -0
  12. lightning_sdk/lightning_cloud/openapi/models/message_id_actions_body.py +201 -0
  13. lightning_sdk/lightning_cloud/openapi/models/project_id_storagetransfers_body.py +27 -1
  14. lightning_sdk/lightning_cloud/openapi/models/projects_id_body.py +27 -1
  15. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_template_config.py +27 -1
  16. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_specialized_view.py +1 -0
  17. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_accelerator.py +27 -1
  18. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_capacity_reservation.py +27 -1
  19. lightning_sdk/lightning_cloud/openapi/models/v1_create_project_request.py +27 -1
  20. lightning_sdk/lightning_cloud/openapi/models/v1_get_market_pricing_response.py +201 -0
  21. lightning_sdk/lightning_cloud/openapi/models/v1_incident_type.py +1 -0
  22. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_aws_config.py +279 -0
  23. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_direct_settings_v1.py +253 -0
  24. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_direct_v1.py +53 -1
  25. lightning_sdk/lightning_cloud/openapi/models/v1_list_conversation_message_actions_response.py +123 -0
  26. lightning_sdk/lightning_cloud/openapi/models/v1_market_price.py +149 -0
  27. lightning_sdk/lightning_cloud/openapi/models/v1_membership.py +27 -1
  28. lightning_sdk/lightning_cloud/openapi/models/v1_message_action.py +279 -0
  29. lightning_sdk/lightning_cloud/openapi/models/v1_project_membership.py +27 -1
  30. lightning_sdk/lightning_cloud/openapi/models/v1_project_settings.py +27 -1
  31. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +79 -183
  32. lightning_sdk/studio.py +3 -2
  33. lightning_sdk/utils/logging.py +72 -0
  34. {lightning_sdk-2025.10.27.dist-info → lightning_sdk-2025.10.31.dist-info}/METADATA +1 -1
  35. {lightning_sdk-2025.10.27.dist-info → lightning_sdk-2025.10.31.dist-info}/RECORD +39 -30
  36. {lightning_sdk-2025.10.27.dist-info → lightning_sdk-2025.10.31.dist-info}/LICENSE +0 -0
  37. {lightning_sdk-2025.10.27.dist-info → lightning_sdk-2025.10.31.dist-info}/WHEEL +0 -0
  38. {lightning_sdk-2025.10.27.dist-info → lightning_sdk-2025.10.31.dist-info}/entry_points.txt +0 -0
  39. {lightning_sdk-2025.10.27.dist-info → lightning_sdk-2025.10.31.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,201 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ external/v1/auth_service.proto
5
+
6
+ No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501
7
+
8
+ OpenAPI spec version: version not set
9
+
10
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
11
+
12
+ NOTE
13
+ ----
14
+ standard swagger-codegen-cli for this python client has been modified
15
+ by custom templates. The purpose of these templates is to include
16
+ typing information in the API and Model code. Please refer to the
17
+ main grid repository for more info
18
+ """
19
+
20
+ import pprint
21
+ import re # noqa: F401
22
+
23
+ from typing import TYPE_CHECKING
24
+
25
+ import six
26
+
27
+ if TYPE_CHECKING:
28
+ from datetime import datetime
29
+ from lightning_sdk.lightning_cloud.openapi.models import *
30
+
31
+ class V1GetMarketPricingResponse(object):
32
+ """NOTE: This class is auto generated by the swagger code generator program.
33
+
34
+ Do not edit the class manually.
35
+ """
36
+ """
37
+ Attributes:
38
+ swagger_types (dict): The key is attribute name
39
+ and the value is attribute type.
40
+ attribute_map (dict): The key is attribute name
41
+ and the value is json key in definition.
42
+ """
43
+ swagger_types = {
44
+ 'asset': 'str',
45
+ 'end_date': 'datetime',
46
+ 'prices': 'list[V1MarketPrice]',
47
+ 'start_date': 'datetime'
48
+ }
49
+
50
+ attribute_map = {
51
+ 'asset': 'asset',
52
+ 'end_date': 'endDate',
53
+ 'prices': 'prices',
54
+ 'start_date': 'startDate'
55
+ }
56
+
57
+ def __init__(self, asset: 'str' =None, end_date: 'datetime' =None, prices: 'list[V1MarketPrice]' =None, start_date: 'datetime' =None): # noqa: E501
58
+ """V1GetMarketPricingResponse - a model defined in Swagger""" # noqa: E501
59
+ self._asset = None
60
+ self._end_date = None
61
+ self._prices = None
62
+ self._start_date = None
63
+ self.discriminator = None
64
+ if asset is not None:
65
+ self.asset = asset
66
+ if end_date is not None:
67
+ self.end_date = end_date
68
+ if prices is not None:
69
+ self.prices = prices
70
+ if start_date is not None:
71
+ self.start_date = start_date
72
+
73
+ @property
74
+ def asset(self) -> 'str':
75
+ """Gets the asset of this V1GetMarketPricingResponse. # noqa: E501
76
+
77
+
78
+ :return: The asset of this V1GetMarketPricingResponse. # noqa: E501
79
+ :rtype: str
80
+ """
81
+ return self._asset
82
+
83
+ @asset.setter
84
+ def asset(self, asset: 'str'):
85
+ """Sets the asset of this V1GetMarketPricingResponse.
86
+
87
+
88
+ :param asset: The asset of this V1GetMarketPricingResponse. # noqa: E501
89
+ :type: str
90
+ """
91
+
92
+ self._asset = asset
93
+
94
+ @property
95
+ def end_date(self) -> 'datetime':
96
+ """Gets the end_date of this V1GetMarketPricingResponse. # noqa: E501
97
+
98
+
99
+ :return: The end_date of this V1GetMarketPricingResponse. # noqa: E501
100
+ :rtype: datetime
101
+ """
102
+ return self._end_date
103
+
104
+ @end_date.setter
105
+ def end_date(self, end_date: 'datetime'):
106
+ """Sets the end_date of this V1GetMarketPricingResponse.
107
+
108
+
109
+ :param end_date: The end_date of this V1GetMarketPricingResponse. # noqa: E501
110
+ :type: datetime
111
+ """
112
+
113
+ self._end_date = end_date
114
+
115
+ @property
116
+ def prices(self) -> 'list[V1MarketPrice]':
117
+ """Gets the prices of this V1GetMarketPricingResponse. # noqa: E501
118
+
119
+
120
+ :return: The prices of this V1GetMarketPricingResponse. # noqa: E501
121
+ :rtype: list[V1MarketPrice]
122
+ """
123
+ return self._prices
124
+
125
+ @prices.setter
126
+ def prices(self, prices: 'list[V1MarketPrice]'):
127
+ """Sets the prices of this V1GetMarketPricingResponse.
128
+
129
+
130
+ :param prices: The prices of this V1GetMarketPricingResponse. # noqa: E501
131
+ :type: list[V1MarketPrice]
132
+ """
133
+
134
+ self._prices = prices
135
+
136
+ @property
137
+ def start_date(self) -> 'datetime':
138
+ """Gets the start_date of this V1GetMarketPricingResponse. # noqa: E501
139
+
140
+
141
+ :return: The start_date of this V1GetMarketPricingResponse. # noqa: E501
142
+ :rtype: datetime
143
+ """
144
+ return self._start_date
145
+
146
+ @start_date.setter
147
+ def start_date(self, start_date: 'datetime'):
148
+ """Sets the start_date of this V1GetMarketPricingResponse.
149
+
150
+
151
+ :param start_date: The start_date of this V1GetMarketPricingResponse. # noqa: E501
152
+ :type: datetime
153
+ """
154
+
155
+ self._start_date = start_date
156
+
157
+ def to_dict(self) -> dict:
158
+ """Returns the model properties as a dict"""
159
+ result = {}
160
+
161
+ for attr, _ in six.iteritems(self.swagger_types):
162
+ value = getattr(self, attr)
163
+ if isinstance(value, list):
164
+ result[attr] = list(map(
165
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
166
+ value
167
+ ))
168
+ elif hasattr(value, "to_dict"):
169
+ result[attr] = value.to_dict()
170
+ elif isinstance(value, dict):
171
+ result[attr] = dict(map(
172
+ lambda item: (item[0], item[1].to_dict())
173
+ if hasattr(item[1], "to_dict") else item,
174
+ value.items()
175
+ ))
176
+ else:
177
+ result[attr] = value
178
+ if issubclass(V1GetMarketPricingResponse, dict):
179
+ for key, value in self.items():
180
+ result[key] = value
181
+
182
+ return result
183
+
184
+ def to_str(self) -> str:
185
+ """Returns the string representation of the model"""
186
+ return pprint.pformat(self.to_dict())
187
+
188
+ def __repr__(self) -> str:
189
+ """For `print` and `pprint`"""
190
+ return self.to_str()
191
+
192
+ def __eq__(self, other: 'V1GetMarketPricingResponse') -> bool:
193
+ """Returns true if both objects are equal"""
194
+ if not isinstance(other, V1GetMarketPricingResponse):
195
+ return False
196
+
197
+ return self.__dict__ == other.__dict__
198
+
199
+ def __ne__(self, other: 'V1GetMarketPricingResponse') -> bool:
200
+ """Returns true if both objects are not equal"""
201
+ return not self == other
@@ -43,6 +43,7 @@ class V1IncidentType(object):
43
43
  K8S_XID_GPU_ERROR = "INCIDENT_TYPE_K8S_XID_GPU_ERROR"
44
44
  K8S_UNSCHEDULABLE_NODE = "INCIDENT_TYPE_K8S_UNSCHEDULABLE_NODE"
45
45
  USER_REPORTED = "INCIDENT_TYPE_USER_REPORTED"
46
+ K8S_HIGH_NFS_STORAGE = "INCIDENT_TYPE_K8S_HIGH_NFS_STORAGE"
46
47
  """
47
48
  Attributes:
48
49
  swagger_types (dict): The key is attribute name
@@ -0,0 +1,279 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ external/v1/auth_service.proto
5
+
6
+ No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501
7
+
8
+ OpenAPI spec version: version not set
9
+
10
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
11
+
12
+ NOTE
13
+ ----
14
+ standard swagger-codegen-cli for this python client has been modified
15
+ by custom templates. The purpose of these templates is to include
16
+ typing information in the API and Model code. Please refer to the
17
+ main grid repository for more info
18
+ """
19
+
20
+ import pprint
21
+ import re # noqa: F401
22
+
23
+ from typing import TYPE_CHECKING
24
+
25
+ import six
26
+
27
+ if TYPE_CHECKING:
28
+ from datetime import datetime
29
+ from lightning_sdk.lightning_cloud.openapi.models import *
30
+
31
+ class V1KubernetesAWSConfig(object):
32
+ """NOTE: This class is auto generated by the swagger code generator program.
33
+
34
+ Do not edit the class manually.
35
+ """
36
+ """
37
+ Attributes:
38
+ swagger_types (dict): The key is attribute name
39
+ and the value is attribute type.
40
+ attribute_map (dict): The key is attribute name
41
+ and the value is json key in definition.
42
+ """
43
+ swagger_types = {
44
+ 'ami': 'str',
45
+ 'cloud_init': 'str',
46
+ 'cluster_id': 'str',
47
+ 'name': 'str',
48
+ 'region': 'str',
49
+ 'role': 'str',
50
+ 'security_groups': 'list[str]'
51
+ }
52
+
53
+ attribute_map = {
54
+ 'ami': 'ami',
55
+ 'cloud_init': 'cloudInit',
56
+ 'cluster_id': 'clusterId',
57
+ 'name': 'name',
58
+ 'region': 'region',
59
+ 'role': 'role',
60
+ 'security_groups': 'securityGroups'
61
+ }
62
+
63
+ def __init__(self, ami: 'str' =None, cloud_init: 'str' =None, cluster_id: 'str' =None, name: 'str' =None, region: 'str' =None, role: 'str' =None, security_groups: 'list[str]' =None): # noqa: E501
64
+ """V1KubernetesAWSConfig - a model defined in Swagger""" # noqa: E501
65
+ self._ami = None
66
+ self._cloud_init = None
67
+ self._cluster_id = None
68
+ self._name = None
69
+ self._region = None
70
+ self._role = None
71
+ self._security_groups = None
72
+ self.discriminator = None
73
+ if ami is not None:
74
+ self.ami = ami
75
+ if cloud_init is not None:
76
+ self.cloud_init = cloud_init
77
+ if cluster_id is not None:
78
+ self.cluster_id = cluster_id
79
+ if name is not None:
80
+ self.name = name
81
+ if region is not None:
82
+ self.region = region
83
+ if role is not None:
84
+ self.role = role
85
+ if security_groups is not None:
86
+ self.security_groups = security_groups
87
+
88
+ @property
89
+ def ami(self) -> 'str':
90
+ """Gets the ami of this V1KubernetesAWSConfig. # noqa: E501
91
+
92
+
93
+ :return: The ami of this V1KubernetesAWSConfig. # noqa: E501
94
+ :rtype: str
95
+ """
96
+ return self._ami
97
+
98
+ @ami.setter
99
+ def ami(self, ami: 'str'):
100
+ """Sets the ami of this V1KubernetesAWSConfig.
101
+
102
+
103
+ :param ami: The ami of this V1KubernetesAWSConfig. # noqa: E501
104
+ :type: str
105
+ """
106
+
107
+ self._ami = ami
108
+
109
+ @property
110
+ def cloud_init(self) -> 'str':
111
+ """Gets the cloud_init of this V1KubernetesAWSConfig. # noqa: E501
112
+
113
+
114
+ :return: The cloud_init of this V1KubernetesAWSConfig. # noqa: E501
115
+ :rtype: str
116
+ """
117
+ return self._cloud_init
118
+
119
+ @cloud_init.setter
120
+ def cloud_init(self, cloud_init: 'str'):
121
+ """Sets the cloud_init of this V1KubernetesAWSConfig.
122
+
123
+
124
+ :param cloud_init: The cloud_init of this V1KubernetesAWSConfig. # noqa: E501
125
+ :type: str
126
+ """
127
+
128
+ self._cloud_init = cloud_init
129
+
130
+ @property
131
+ def cluster_id(self) -> 'str':
132
+ """Gets the cluster_id of this V1KubernetesAWSConfig. # noqa: E501
133
+
134
+
135
+ :return: The cluster_id of this V1KubernetesAWSConfig. # noqa: E501
136
+ :rtype: str
137
+ """
138
+ return self._cluster_id
139
+
140
+ @cluster_id.setter
141
+ def cluster_id(self, cluster_id: 'str'):
142
+ """Sets the cluster_id of this V1KubernetesAWSConfig.
143
+
144
+
145
+ :param cluster_id: The cluster_id of this V1KubernetesAWSConfig. # noqa: E501
146
+ :type: str
147
+ """
148
+
149
+ self._cluster_id = cluster_id
150
+
151
+ @property
152
+ def name(self) -> 'str':
153
+ """Gets the name of this V1KubernetesAWSConfig. # noqa: E501
154
+
155
+
156
+ :return: The name of this V1KubernetesAWSConfig. # noqa: E501
157
+ :rtype: str
158
+ """
159
+ return self._name
160
+
161
+ @name.setter
162
+ def name(self, name: 'str'):
163
+ """Sets the name of this V1KubernetesAWSConfig.
164
+
165
+
166
+ :param name: The name of this V1KubernetesAWSConfig. # noqa: E501
167
+ :type: str
168
+ """
169
+
170
+ self._name = name
171
+
172
+ @property
173
+ def region(self) -> 'str':
174
+ """Gets the region of this V1KubernetesAWSConfig. # noqa: E501
175
+
176
+
177
+ :return: The region of this V1KubernetesAWSConfig. # noqa: E501
178
+ :rtype: str
179
+ """
180
+ return self._region
181
+
182
+ @region.setter
183
+ def region(self, region: 'str'):
184
+ """Sets the region of this V1KubernetesAWSConfig.
185
+
186
+
187
+ :param region: The region of this V1KubernetesAWSConfig. # noqa: E501
188
+ :type: str
189
+ """
190
+
191
+ self._region = region
192
+
193
+ @property
194
+ def role(self) -> 'str':
195
+ """Gets the role of this V1KubernetesAWSConfig. # noqa: E501
196
+
197
+
198
+ :return: The role of this V1KubernetesAWSConfig. # noqa: E501
199
+ :rtype: str
200
+ """
201
+ return self._role
202
+
203
+ @role.setter
204
+ def role(self, role: 'str'):
205
+ """Sets the role of this V1KubernetesAWSConfig.
206
+
207
+
208
+ :param role: The role of this V1KubernetesAWSConfig. # noqa: E501
209
+ :type: str
210
+ """
211
+
212
+ self._role = role
213
+
214
+ @property
215
+ def security_groups(self) -> 'list[str]':
216
+ """Gets the security_groups of this V1KubernetesAWSConfig. # noqa: E501
217
+
218
+
219
+ :return: The security_groups of this V1KubernetesAWSConfig. # noqa: E501
220
+ :rtype: list[str]
221
+ """
222
+ return self._security_groups
223
+
224
+ @security_groups.setter
225
+ def security_groups(self, security_groups: 'list[str]'):
226
+ """Sets the security_groups of this V1KubernetesAWSConfig.
227
+
228
+
229
+ :param security_groups: The security_groups of this V1KubernetesAWSConfig. # noqa: E501
230
+ :type: list[str]
231
+ """
232
+
233
+ self._security_groups = security_groups
234
+
235
+ def to_dict(self) -> dict:
236
+ """Returns the model properties as a dict"""
237
+ result = {}
238
+
239
+ for attr, _ in six.iteritems(self.swagger_types):
240
+ value = getattr(self, attr)
241
+ if isinstance(value, list):
242
+ result[attr] = list(map(
243
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
244
+ value
245
+ ))
246
+ elif hasattr(value, "to_dict"):
247
+ result[attr] = value.to_dict()
248
+ elif isinstance(value, dict):
249
+ result[attr] = dict(map(
250
+ lambda item: (item[0], item[1].to_dict())
251
+ if hasattr(item[1], "to_dict") else item,
252
+ value.items()
253
+ ))
254
+ else:
255
+ result[attr] = value
256
+ if issubclass(V1KubernetesAWSConfig, dict):
257
+ for key, value in self.items():
258
+ result[key] = value
259
+
260
+ return result
261
+
262
+ def to_str(self) -> str:
263
+ """Returns the string representation of the model"""
264
+ return pprint.pformat(self.to_dict())
265
+
266
+ def __repr__(self) -> str:
267
+ """For `print` and `pprint`"""
268
+ return self.to_str()
269
+
270
+ def __eq__(self, other: 'V1KubernetesAWSConfig') -> bool:
271
+ """Returns true if both objects are equal"""
272
+ if not isinstance(other, V1KubernetesAWSConfig):
273
+ return False
274
+
275
+ return self.__dict__ == other.__dict__
276
+
277
+ def __ne__(self, other: 'V1KubernetesAWSConfig') -> bool:
278
+ """Returns true if both objects are not equal"""
279
+ return not self == other