lightning-sdk 2025.9.16__py3-none-any.whl → 2025.9.29__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 (78) hide show
  1. lightning_sdk/__init__.py +4 -3
  2. lightning_sdk/api/cloud_account_api.py +12 -1
  3. lightning_sdk/api/job_api.py +12 -11
  4. lightning_sdk/api/mmt_api.py +1 -1
  5. lightning_sdk/api/studio_api.py +1 -1
  6. lightning_sdk/api/teamspace_api.py +18 -0
  7. lightning_sdk/api/user_api.py +8 -2
  8. lightning_sdk/cli/entrypoint.py +3 -1
  9. lightning_sdk/cli/groups.py +8 -1
  10. lightning_sdk/cli/legacy/entrypoint.py +1 -1
  11. lightning_sdk/cli/studio/create.py +19 -5
  12. lightning_sdk/cli/studio/delete.py +9 -5
  13. lightning_sdk/cli/studio/list.py +5 -1
  14. lightning_sdk/cli/studio/ssh.py +9 -3
  15. lightning_sdk/cli/studio/start.py +26 -3
  16. lightning_sdk/cli/studio/stop.py +7 -3
  17. lightning_sdk/cli/studio/switch.py +21 -5
  18. lightning_sdk/cli/utils/owner_selection.py +110 -0
  19. lightning_sdk/cli/utils/studio_selection.py +22 -15
  20. lightning_sdk/cli/utils/teamspace_selection.py +63 -62
  21. lightning_sdk/cli/vm/__init__.py +20 -0
  22. lightning_sdk/cli/vm/create.py +33 -0
  23. lightning_sdk/cli/vm/delete.py +25 -0
  24. lightning_sdk/cli/vm/list.py +30 -0
  25. lightning_sdk/cli/vm/ssh.py +31 -0
  26. lightning_sdk/cli/vm/start.py +60 -0
  27. lightning_sdk/cli/vm/stop.py +25 -0
  28. lightning_sdk/cli/vm/switch.py +38 -0
  29. lightning_sdk/lightning_cloud/openapi/__init__.py +20 -1
  30. lightning_sdk/lightning_cloud/openapi/api/assistants_service_api.py +2 -95
  31. lightning_sdk/lightning_cloud/openapi/api/billing_service_api.py +24 -8
  32. lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py +420 -0
  33. lightning_sdk/lightning_cloud/openapi/api/jobs_service_api.py +121 -0
  34. lightning_sdk/lightning_cloud/openapi/api/storage_service_api.py +655 -0
  35. lightning_sdk/lightning_cloud/openapi/models/__init__.py +20 -1
  36. lightning_sdk/lightning_cloud/openapi/models/create_machine_request_represents_the_request_to_create_a_machine.py +435 -0
  37. lightning_sdk/lightning_cloud/openapi/models/job_id_reportroutingtelemetry_body.py +123 -0
  38. lightning_sdk/lightning_cloud/openapi/models/project_id_storagetransfers_body.py +149 -0
  39. lightning_sdk/lightning_cloud/openapi/models/user_id_affiliatelinks_body.py +107 -3
  40. lightning_sdk/lightning_cloud/openapi/models/v1_abort_storage_transfer_response.py +97 -0
  41. lightning_sdk/lightning_cloud/openapi/models/v1_assistant_session_daily_aggregated.py +27 -1
  42. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_provider.py +2 -0
  43. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_accelerator.py +27 -1
  44. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_spec.py +53 -1
  45. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_type.py +1 -0
  46. lightning_sdk/lightning_cloud/openapi/models/v1_create_machine_response.py +123 -0
  47. lightning_sdk/lightning_cloud/openapi/models/v1_create_project_request.py +27 -1
  48. lightning_sdk/lightning_cloud/openapi/models/v1_delete_machine_response.py +97 -0
  49. lightning_sdk/lightning_cloud/openapi/models/v1_external_cluster_spec.py +27 -1
  50. lightning_sdk/lightning_cloud/openapi/models/v1_get_machine_response.py +123 -0
  51. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_response.py +27 -1
  52. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_direct_v1.py +27 -1
  53. lightning_sdk/lightning_cloud/openapi/models/v1_lightning_elastic_cluster_v1.py +97 -0
  54. lightning_sdk/lightning_cloud/openapi/models/{v1_get_model_total_usage_metrics_response.py → v1_list_machines_response.py} +37 -37
  55. lightning_sdk/lightning_cloud/openapi/models/v1_list_storage_transfers_response.py +123 -0
  56. lightning_sdk/lightning_cloud/openapi/models/v1_machine.py +539 -0
  57. lightning_sdk/lightning_cloud/openapi/models/v1_machine_direct_v1.py +123 -0
  58. lightning_sdk/lightning_cloud/openapi/models/v1_pause_storage_transfer_response.py +97 -0
  59. lightning_sdk/lightning_cloud/openapi/models/v1_purchase_annual_upsell_request.py +123 -0
  60. lightning_sdk/lightning_cloud/openapi/models/v1_report_deployment_routing_telemetry_response.py +97 -0
  61. lightning_sdk/lightning_cloud/openapi/models/v1_resume_storage_transfer_response.py +97 -0
  62. lightning_sdk/lightning_cloud/openapi/models/v1_routing_telemetry.py +79 -1
  63. lightning_sdk/lightning_cloud/openapi/models/v1_rule_resource.py +1 -0
  64. lightning_sdk/lightning_cloud/openapi/models/v1_slack_notifier.py +149 -0
  65. lightning_sdk/lightning_cloud/openapi/models/v1_slack_notifier_type.py +105 -0
  66. lightning_sdk/lightning_cloud/openapi/models/v1_storage_transfer.py +435 -0
  67. lightning_sdk/lightning_cloud/openapi/models/v1_storage_transfer_status.py +108 -0
  68. lightning_sdk/lightning_cloud/openapi/models/v1_update_user_request.py +27 -1
  69. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +105 -79
  70. lightning_sdk/machine.py +16 -1
  71. lightning_sdk/studio.py +55 -11
  72. lightning_sdk/teamspace.py +65 -2
  73. {lightning_sdk-2025.9.16.dist-info → lightning_sdk-2025.9.29.dist-info}/METADATA +1 -1
  74. {lightning_sdk-2025.9.16.dist-info → lightning_sdk-2025.9.29.dist-info}/RECORD +78 -50
  75. {lightning_sdk-2025.9.16.dist-info → lightning_sdk-2025.9.29.dist-info}/LICENSE +0 -0
  76. {lightning_sdk-2025.9.16.dist-info → lightning_sdk-2025.9.29.dist-info}/WHEEL +0 -0
  77. {lightning_sdk-2025.9.16.dist-info → lightning_sdk-2025.9.29.dist-info}/entry_points.txt +0 -0
  78. {lightning_sdk-2025.9.16.dist-info → lightning_sdk-2025.9.29.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,123 @@
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 JobIdReportroutingtelemetryBody(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
+ 'routing_telemetry': 'list[V1RoutingTelemetry]'
45
+ }
46
+
47
+ attribute_map = {
48
+ 'routing_telemetry': 'routingTelemetry'
49
+ }
50
+
51
+ def __init__(self, routing_telemetry: 'list[V1RoutingTelemetry]' =None): # noqa: E501
52
+ """JobIdReportroutingtelemetryBody - a model defined in Swagger""" # noqa: E501
53
+ self._routing_telemetry = None
54
+ self.discriminator = None
55
+ if routing_telemetry is not None:
56
+ self.routing_telemetry = routing_telemetry
57
+
58
+ @property
59
+ def routing_telemetry(self) -> 'list[V1RoutingTelemetry]':
60
+ """Gets the routing_telemetry of this JobIdReportroutingtelemetryBody. # noqa: E501
61
+
62
+
63
+ :return: The routing_telemetry of this JobIdReportroutingtelemetryBody. # noqa: E501
64
+ :rtype: list[V1RoutingTelemetry]
65
+ """
66
+ return self._routing_telemetry
67
+
68
+ @routing_telemetry.setter
69
+ def routing_telemetry(self, routing_telemetry: 'list[V1RoutingTelemetry]'):
70
+ """Sets the routing_telemetry of this JobIdReportroutingtelemetryBody.
71
+
72
+
73
+ :param routing_telemetry: The routing_telemetry of this JobIdReportroutingtelemetryBody. # noqa: E501
74
+ :type: list[V1RoutingTelemetry]
75
+ """
76
+
77
+ self._routing_telemetry = routing_telemetry
78
+
79
+ def to_dict(self) -> dict:
80
+ """Returns the model properties as a dict"""
81
+ result = {}
82
+
83
+ for attr, _ in six.iteritems(self.swagger_types):
84
+ value = getattr(self, attr)
85
+ if isinstance(value, list):
86
+ result[attr] = list(map(
87
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
88
+ value
89
+ ))
90
+ elif hasattr(value, "to_dict"):
91
+ result[attr] = value.to_dict()
92
+ elif isinstance(value, dict):
93
+ result[attr] = dict(map(
94
+ lambda item: (item[0], item[1].to_dict())
95
+ if hasattr(item[1], "to_dict") else item,
96
+ value.items()
97
+ ))
98
+ else:
99
+ result[attr] = value
100
+ if issubclass(JobIdReportroutingtelemetryBody, dict):
101
+ for key, value in self.items():
102
+ result[key] = value
103
+
104
+ return result
105
+
106
+ def to_str(self) -> str:
107
+ """Returns the string representation of the model"""
108
+ return pprint.pformat(self.to_dict())
109
+
110
+ def __repr__(self) -> str:
111
+ """For `print` and `pprint`"""
112
+ return self.to_str()
113
+
114
+ def __eq__(self, other: 'JobIdReportroutingtelemetryBody') -> bool:
115
+ """Returns true if both objects are equal"""
116
+ if not isinstance(other, JobIdReportroutingtelemetryBody):
117
+ return False
118
+
119
+ return self.__dict__ == other.__dict__
120
+
121
+ def __ne__(self, other: 'JobIdReportroutingtelemetryBody') -> bool:
122
+ """Returns true if both objects are not equal"""
123
+ return not self == other
@@ -0,0 +1,149 @@
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 ProjectIdStoragetransfersBody(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
+ 'source_data_connection_id': 'str',
45
+ 'target_data_connection_id': 'str'
46
+ }
47
+
48
+ attribute_map = {
49
+ 'source_data_connection_id': 'sourceDataConnectionId',
50
+ 'target_data_connection_id': 'targetDataConnectionId'
51
+ }
52
+
53
+ def __init__(self, source_data_connection_id: 'str' =None, target_data_connection_id: 'str' =None): # noqa: E501
54
+ """ProjectIdStoragetransfersBody - a model defined in Swagger""" # noqa: E501
55
+ self._source_data_connection_id = None
56
+ self._target_data_connection_id = None
57
+ self.discriminator = None
58
+ if source_data_connection_id is not None:
59
+ self.source_data_connection_id = source_data_connection_id
60
+ if target_data_connection_id is not None:
61
+ self.target_data_connection_id = target_data_connection_id
62
+
63
+ @property
64
+ def source_data_connection_id(self) -> 'str':
65
+ """Gets the source_data_connection_id of this ProjectIdStoragetransfersBody. # noqa: E501
66
+
67
+
68
+ :return: The source_data_connection_id of this ProjectIdStoragetransfersBody. # noqa: E501
69
+ :rtype: str
70
+ """
71
+ return self._source_data_connection_id
72
+
73
+ @source_data_connection_id.setter
74
+ def source_data_connection_id(self, source_data_connection_id: 'str'):
75
+ """Sets the source_data_connection_id of this ProjectIdStoragetransfersBody.
76
+
77
+
78
+ :param source_data_connection_id: The source_data_connection_id of this ProjectIdStoragetransfersBody. # noqa: E501
79
+ :type: str
80
+ """
81
+
82
+ self._source_data_connection_id = source_data_connection_id
83
+
84
+ @property
85
+ def target_data_connection_id(self) -> 'str':
86
+ """Gets the target_data_connection_id of this ProjectIdStoragetransfersBody. # noqa: E501
87
+
88
+
89
+ :return: The target_data_connection_id of this ProjectIdStoragetransfersBody. # noqa: E501
90
+ :rtype: str
91
+ """
92
+ return self._target_data_connection_id
93
+
94
+ @target_data_connection_id.setter
95
+ def target_data_connection_id(self, target_data_connection_id: 'str'):
96
+ """Sets the target_data_connection_id of this ProjectIdStoragetransfersBody.
97
+
98
+
99
+ :param target_data_connection_id: The target_data_connection_id of this ProjectIdStoragetransfersBody. # noqa: E501
100
+ :type: str
101
+ """
102
+
103
+ self._target_data_connection_id = target_data_connection_id
104
+
105
+ def to_dict(self) -> dict:
106
+ """Returns the model properties as a dict"""
107
+ result = {}
108
+
109
+ for attr, _ in six.iteritems(self.swagger_types):
110
+ value = getattr(self, attr)
111
+ if isinstance(value, list):
112
+ result[attr] = list(map(
113
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
114
+ value
115
+ ))
116
+ elif hasattr(value, "to_dict"):
117
+ result[attr] = value.to_dict()
118
+ elif isinstance(value, dict):
119
+ result[attr] = dict(map(
120
+ lambda item: (item[0], item[1].to_dict())
121
+ if hasattr(item[1], "to_dict") else item,
122
+ value.items()
123
+ ))
124
+ else:
125
+ result[attr] = value
126
+ if issubclass(ProjectIdStoragetransfersBody, dict):
127
+ for key, value in self.items():
128
+ result[key] = value
129
+
130
+ return result
131
+
132
+ def to_str(self) -> str:
133
+ """Returns the string representation of the model"""
134
+ return pprint.pformat(self.to_dict())
135
+
136
+ def __repr__(self) -> str:
137
+ """For `print` and `pprint`"""
138
+ return self.to_str()
139
+
140
+ def __eq__(self, other: 'ProjectIdStoragetransfersBody') -> bool:
141
+ """Returns true if both objects are equal"""
142
+ if not isinstance(other, ProjectIdStoragetransfersBody):
143
+ return False
144
+
145
+ return self.__dict__ == other.__dict__
146
+
147
+ def __ne__(self, other: 'ProjectIdStoragetransfersBody') -> bool:
148
+ """Returns true if both objects are not equal"""
149
+ return not self == other
@@ -42,23 +42,43 @@ class UserIdAffiliatelinksBody(object):
42
42
  """
43
43
  swagger_types = {
44
44
  'code': 'str',
45
- 'name': 'str'
45
+ 'expires_at': 'datetime',
46
+ 'max_uses': 'int',
47
+ 'name': 'str',
48
+ 'skip_waitlist': 'bool',
49
+ 'type': 'str'
46
50
  }
47
51
 
48
52
  attribute_map = {
49
53
  'code': 'code',
50
- 'name': 'name'
54
+ 'expires_at': 'expiresAt',
55
+ 'max_uses': 'maxUses',
56
+ 'name': 'name',
57
+ 'skip_waitlist': 'skipWaitlist',
58
+ 'type': 'type'
51
59
  }
52
60
 
53
- def __init__(self, code: 'str' =None, name: 'str' =None): # noqa: E501
61
+ def __init__(self, code: 'str' =None, expires_at: 'datetime' =None, max_uses: 'int' =None, name: 'str' =None, skip_waitlist: 'bool' =None, type: 'str' =None): # noqa: E501
54
62
  """UserIdAffiliatelinksBody - a model defined in Swagger""" # noqa: E501
55
63
  self._code = None
64
+ self._expires_at = None
65
+ self._max_uses = None
56
66
  self._name = None
67
+ self._skip_waitlist = None
68
+ self._type = None
57
69
  self.discriminator = None
58
70
  if code is not None:
59
71
  self.code = code
72
+ if expires_at is not None:
73
+ self.expires_at = expires_at
74
+ if max_uses is not None:
75
+ self.max_uses = max_uses
60
76
  if name is not None:
61
77
  self.name = name
78
+ if skip_waitlist is not None:
79
+ self.skip_waitlist = skip_waitlist
80
+ if type is not None:
81
+ self.type = type
62
82
 
63
83
  @property
64
84
  def code(self) -> 'str':
@@ -81,6 +101,48 @@ class UserIdAffiliatelinksBody(object):
81
101
 
82
102
  self._code = code
83
103
 
104
+ @property
105
+ def expires_at(self) -> 'datetime':
106
+ """Gets the expires_at of this UserIdAffiliatelinksBody. # noqa: E501
107
+
108
+
109
+ :return: The expires_at of this UserIdAffiliatelinksBody. # noqa: E501
110
+ :rtype: datetime
111
+ """
112
+ return self._expires_at
113
+
114
+ @expires_at.setter
115
+ def expires_at(self, expires_at: 'datetime'):
116
+ """Sets the expires_at of this UserIdAffiliatelinksBody.
117
+
118
+
119
+ :param expires_at: The expires_at of this UserIdAffiliatelinksBody. # noqa: E501
120
+ :type: datetime
121
+ """
122
+
123
+ self._expires_at = expires_at
124
+
125
+ @property
126
+ def max_uses(self) -> 'int':
127
+ """Gets the max_uses of this UserIdAffiliatelinksBody. # noqa: E501
128
+
129
+
130
+ :return: The max_uses of this UserIdAffiliatelinksBody. # noqa: E501
131
+ :rtype: int
132
+ """
133
+ return self._max_uses
134
+
135
+ @max_uses.setter
136
+ def max_uses(self, max_uses: 'int'):
137
+ """Sets the max_uses of this UserIdAffiliatelinksBody.
138
+
139
+
140
+ :param max_uses: The max_uses of this UserIdAffiliatelinksBody. # noqa: E501
141
+ :type: int
142
+ """
143
+
144
+ self._max_uses = max_uses
145
+
84
146
  @property
85
147
  def name(self) -> 'str':
86
148
  """Gets the name of this UserIdAffiliatelinksBody. # noqa: E501
@@ -102,6 +164,48 @@ class UserIdAffiliatelinksBody(object):
102
164
 
103
165
  self._name = name
104
166
 
167
+ @property
168
+ def skip_waitlist(self) -> 'bool':
169
+ """Gets the skip_waitlist of this UserIdAffiliatelinksBody. # noqa: E501
170
+
171
+
172
+ :return: The skip_waitlist of this UserIdAffiliatelinksBody. # noqa: E501
173
+ :rtype: bool
174
+ """
175
+ return self._skip_waitlist
176
+
177
+ @skip_waitlist.setter
178
+ def skip_waitlist(self, skip_waitlist: 'bool'):
179
+ """Sets the skip_waitlist of this UserIdAffiliatelinksBody.
180
+
181
+
182
+ :param skip_waitlist: The skip_waitlist of this UserIdAffiliatelinksBody. # noqa: E501
183
+ :type: bool
184
+ """
185
+
186
+ self._skip_waitlist = skip_waitlist
187
+
188
+ @property
189
+ def type(self) -> 'str':
190
+ """Gets the type of this UserIdAffiliatelinksBody. # noqa: E501
191
+
192
+
193
+ :return: The type of this UserIdAffiliatelinksBody. # noqa: E501
194
+ :rtype: str
195
+ """
196
+ return self._type
197
+
198
+ @type.setter
199
+ def type(self, type: 'str'):
200
+ """Sets the type of this UserIdAffiliatelinksBody.
201
+
202
+
203
+ :param type: The type of this UserIdAffiliatelinksBody. # noqa: E501
204
+ :type: str
205
+ """
206
+
207
+ self._type = type
208
+
105
209
  def to_dict(self) -> dict:
106
210
  """Returns the model properties as a dict"""
107
211
  result = {}
@@ -0,0 +1,97 @@
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 V1AbortStorageTransferResponse(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
+ }
45
+
46
+ attribute_map = {
47
+ }
48
+
49
+ def __init__(self): # noqa: E501
50
+ """V1AbortStorageTransferResponse - a model defined in Swagger""" # noqa: E501
51
+ self.discriminator = None
52
+
53
+ def to_dict(self) -> dict:
54
+ """Returns the model properties as a dict"""
55
+ result = {}
56
+
57
+ for attr, _ in six.iteritems(self.swagger_types):
58
+ value = getattr(self, attr)
59
+ if isinstance(value, list):
60
+ result[attr] = list(map(
61
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
62
+ value
63
+ ))
64
+ elif hasattr(value, "to_dict"):
65
+ result[attr] = value.to_dict()
66
+ elif isinstance(value, dict):
67
+ result[attr] = dict(map(
68
+ lambda item: (item[0], item[1].to_dict())
69
+ if hasattr(item[1], "to_dict") else item,
70
+ value.items()
71
+ ))
72
+ else:
73
+ result[attr] = value
74
+ if issubclass(V1AbortStorageTransferResponse, dict):
75
+ for key, value in self.items():
76
+ result[key] = value
77
+
78
+ return result
79
+
80
+ def to_str(self) -> str:
81
+ """Returns the string representation of the model"""
82
+ return pprint.pformat(self.to_dict())
83
+
84
+ def __repr__(self) -> str:
85
+ """For `print` and `pprint`"""
86
+ return self.to_str()
87
+
88
+ def __eq__(self, other: 'V1AbortStorageTransferResponse') -> bool:
89
+ """Returns true if both objects are equal"""
90
+ if not isinstance(other, V1AbortStorageTransferResponse):
91
+ return False
92
+
93
+ return self.__dict__ == other.__dict__
94
+
95
+ def __ne__(self, other: 'V1AbortStorageTransferResponse') -> bool:
96
+ """Returns true if both objects are not equal"""
97
+ return not self == other
@@ -42,6 +42,7 @@ class V1AssistantSessionDailyAggregated(object):
42
42
  """
43
43
  swagger_types = {
44
44
  'day': 'datetime',
45
+ 'model_id': 'str',
45
46
  'name': 'str',
46
47
  'num_messages': 'int',
47
48
  'org_id': 'str',
@@ -55,6 +56,7 @@ class V1AssistantSessionDailyAggregated(object):
55
56
 
56
57
  attribute_map = {
57
58
  'day': 'day',
59
+ 'model_id': 'modelId',
58
60
  'name': 'name',
59
61
  'num_messages': 'numMessages',
60
62
  'org_id': 'orgId',
@@ -66,9 +68,10 @@ class V1AssistantSessionDailyAggregated(object):
66
68
  'user_id': 'userId'
67
69
  }
68
70
 
69
- def __init__(self, day: 'datetime' =None, name: 'str' =None, num_messages: 'int' =None, org_id: 'str' =None, parent_id: 'str' =None, project_id: 'str' =None, total_completion_tokens: 'int' =None, total_cost: 'float' =None, total_prompt_tokens: 'int' =None, user_id: 'str' =None): # noqa: E501
71
+ def __init__(self, day: 'datetime' =None, model_id: 'str' =None, name: 'str' =None, num_messages: 'int' =None, org_id: 'str' =None, parent_id: 'str' =None, project_id: 'str' =None, total_completion_tokens: 'int' =None, total_cost: 'float' =None, total_prompt_tokens: 'int' =None, user_id: 'str' =None): # noqa: E501
70
72
  """V1AssistantSessionDailyAggregated - a model defined in Swagger""" # noqa: E501
71
73
  self._day = None
74
+ self._model_id = None
72
75
  self._name = None
73
76
  self._num_messages = None
74
77
  self._org_id = None
@@ -81,6 +84,8 @@ class V1AssistantSessionDailyAggregated(object):
81
84
  self.discriminator = None
82
85
  if day is not None:
83
86
  self.day = day
87
+ if model_id is not None:
88
+ self.model_id = model_id
84
89
  if name is not None:
85
90
  self.name = name
86
91
  if num_messages is not None:
@@ -121,6 +126,27 @@ class V1AssistantSessionDailyAggregated(object):
121
126
 
122
127
  self._day = day
123
128
 
129
+ @property
130
+ def model_id(self) -> 'str':
131
+ """Gets the model_id of this V1AssistantSessionDailyAggregated. # noqa: E501
132
+
133
+
134
+ :return: The model_id of this V1AssistantSessionDailyAggregated. # noqa: E501
135
+ :rtype: str
136
+ """
137
+ return self._model_id
138
+
139
+ @model_id.setter
140
+ def model_id(self, model_id: 'str'):
141
+ """Sets the model_id of this V1AssistantSessionDailyAggregated.
142
+
143
+
144
+ :param model_id: The model_id of this V1AssistantSessionDailyAggregated. # noqa: E501
145
+ :type: str
146
+ """
147
+
148
+ self._model_id = model_id
149
+
124
150
  @property
125
151
  def name(self) -> 'str':
126
152
  """Gets the name of this V1AssistantSessionDailyAggregated. # noqa: E501
@@ -51,6 +51,8 @@ class V1CloudProvider(object):
51
51
  LIGHTNING_AGGREGATE = "LIGHTNING_AGGREGATE"
52
52
  KUBERNETES = "KUBERNETES"
53
53
  AI_POD = "AI_POD"
54
+ MACHINE = "MACHINE"
55
+ LIGHTNING_ELASTIC_CLUSTER_AGGREGATE = "LIGHTNING_ELASTIC_CLUSTER_AGGREGATE"
54
56
  """
55
57
  Attributes:
56
58
  swagger_types (dict): The key is attribute name
@@ -64,6 +64,7 @@ class V1ClusterAccelerator(object):
64
64
  'instance_id': 'str',
65
65
  'is_custom': 'bool',
66
66
  'is_tier_restricted': 'bool',
67
+ 'lightning_interruptible': 'bool',
67
68
  'local_disk_included': 'bool',
68
69
  'local_disk_size': 'str',
69
70
  'local_disk_supported': 'bool',
@@ -119,6 +120,7 @@ class V1ClusterAccelerator(object):
119
120
  'instance_id': 'instanceId',
120
121
  'is_custom': 'isCustom',
121
122
  'is_tier_restricted': 'isTierRestricted',
123
+ 'lightning_interruptible': 'lightningInterruptible',
122
124
  'local_disk_included': 'localDiskIncluded',
123
125
  'local_disk_size': 'localDiskSize',
124
126
  'local_disk_supported': 'localDiskSupported',
@@ -150,7 +152,7 @@ class V1ClusterAccelerator(object):
150
152
  'spot_quota_page_url': 'spotQuotaPageUrl'
151
153
  }
152
154
 
153
- def __init__(self, accelerator_type: 'str' =None, allowed_resources: 'list[str]' =None, available_in_seconds: 'str' =None, available_in_seconds_spot: 'str' =None, available_zones: 'list[str]' =None, byoc_only: 'bool' =None, capacity_block_only: 'bool' =None, capacity_block_price: 'float' =None, capacity_blocks_available: 'list[V1ClusterCapacityReservation]' =None, cluster_id: 'str' =None, cost: 'float' =None, detailed_quotas_info: 'list[V1AcceleratorQuotaInfo]' =None, device_card: 'str' =None, device_info: 'str' =None, display_name: 'str' =None, dws_cost: 'float' =None, dws_only: 'bool' =None, dws_supported: 'bool' =None, enabled: 'bool' =None, family: 'str' =None, instance_id: 'str' =None, is_custom: 'bool' =None, is_tier_restricted: 'bool' =None, local_disk_included: 'bool' =None, local_disk_size: 'str' =None, local_disk_supported: 'bool' =None, local_disks_count: 'str' =None, max_available_quota: 'str' =None, non_spot: 'bool' =None, out_of_capacity: 'bool' =None, persistent_disk_supported: 'bool' =None, provider: 'V1CloudProvider' =None, quota_checked_at: 'datetime' =None, quota_code: 'str' =None, quota_name: 'str' =None, quota_page_url: 'str' =None, quota_service_code: 'str' =None, quota_utilization: 'str' =None, quota_value: 'str' =None, reservable: 'bool' =None, reservation_available_zones: 'list[str]' =None, reservation_quota_code: 'str' =None, reservation_quota_name: 'str' =None, reservation_quota_page_url: 'str' =None, resources: 'V1Resources' =None, secondary_instance_id: 'str' =None, slug: 'str' =None, slug_multi_cloud: 'str' =None, spot_price: 'float' =None, spot_quota_code: 'str' =None, spot_quota_name: 'str' =None, spot_quota_page_url: 'str' =None): # noqa: E501
155
+ def __init__(self, accelerator_type: 'str' =None, allowed_resources: 'list[str]' =None, available_in_seconds: 'str' =None, available_in_seconds_spot: 'str' =None, available_zones: 'list[str]' =None, byoc_only: 'bool' =None, capacity_block_only: 'bool' =None, capacity_block_price: 'float' =None, capacity_blocks_available: 'list[V1ClusterCapacityReservation]' =None, cluster_id: 'str' =None, cost: 'float' =None, detailed_quotas_info: 'list[V1AcceleratorQuotaInfo]' =None, device_card: 'str' =None, device_info: 'str' =None, display_name: 'str' =None, dws_cost: 'float' =None, dws_only: 'bool' =None, dws_supported: 'bool' =None, enabled: 'bool' =None, family: 'str' =None, instance_id: 'str' =None, is_custom: 'bool' =None, is_tier_restricted: 'bool' =None, lightning_interruptible: 'bool' =None, local_disk_included: 'bool' =None, local_disk_size: 'str' =None, local_disk_supported: 'bool' =None, local_disks_count: 'str' =None, max_available_quota: 'str' =None, non_spot: 'bool' =None, out_of_capacity: 'bool' =None, persistent_disk_supported: 'bool' =None, provider: 'V1CloudProvider' =None, quota_checked_at: 'datetime' =None, quota_code: 'str' =None, quota_name: 'str' =None, quota_page_url: 'str' =None, quota_service_code: 'str' =None, quota_utilization: 'str' =None, quota_value: 'str' =None, reservable: 'bool' =None, reservation_available_zones: 'list[str]' =None, reservation_quota_code: 'str' =None, reservation_quota_name: 'str' =None, reservation_quota_page_url: 'str' =None, resources: 'V1Resources' =None, secondary_instance_id: 'str' =None, slug: 'str' =None, slug_multi_cloud: 'str' =None, spot_price: 'float' =None, spot_quota_code: 'str' =None, spot_quota_name: 'str' =None, spot_quota_page_url: 'str' =None): # noqa: E501
154
156
  """V1ClusterAccelerator - a model defined in Swagger""" # noqa: E501
155
157
  self._accelerator_type = None
156
158
  self._allowed_resources = None
@@ -175,6 +177,7 @@ class V1ClusterAccelerator(object):
175
177
  self._instance_id = None
176
178
  self._is_custom = None
177
179
  self._is_tier_restricted = None
180
+ self._lightning_interruptible = None
178
181
  self._local_disk_included = None
179
182
  self._local_disk_size = None
180
183
  self._local_disk_supported = None
@@ -251,6 +254,8 @@ class V1ClusterAccelerator(object):
251
254
  self.is_custom = is_custom
252
255
  if is_tier_restricted is not None:
253
256
  self.is_tier_restricted = is_tier_restricted
257
+ if lightning_interruptible is not None:
258
+ self.lightning_interruptible = lightning_interruptible
254
259
  if local_disk_included is not None:
255
260
  self.local_disk_included = local_disk_included
256
261
  if local_disk_size is not None:
@@ -793,6 +798,27 @@ class V1ClusterAccelerator(object):
793
798
 
794
799
  self._is_tier_restricted = is_tier_restricted
795
800
 
801
+ @property
802
+ def lightning_interruptible(self) -> 'bool':
803
+ """Gets the lightning_interruptible of this V1ClusterAccelerator. # noqa: E501
804
+
805
+
806
+ :return: The lightning_interruptible of this V1ClusterAccelerator. # noqa: E501
807
+ :rtype: bool
808
+ """
809
+ return self._lightning_interruptible
810
+
811
+ @lightning_interruptible.setter
812
+ def lightning_interruptible(self, lightning_interruptible: 'bool'):
813
+ """Sets the lightning_interruptible of this V1ClusterAccelerator.
814
+
815
+
816
+ :param lightning_interruptible: The lightning_interruptible of this V1ClusterAccelerator. # noqa: E501
817
+ :type: bool
818
+ """
819
+
820
+ self._lightning_interruptible = lightning_interruptible
821
+
796
822
  @property
797
823
  def local_disk_included(self) -> 'bool':
798
824
  """Gets the local_disk_included of this V1ClusterAccelerator. # noqa: E501