lightning-sdk 2025.8.26__py3-none-any.whl → 2025.9.2__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 (42) hide show
  1. lightning_sdk/__init__.py +1 -1
  2. lightning_sdk/api/teamspace_api.py +2 -0
  3. lightning_sdk/cli/studio/create.py +2 -1
  4. lightning_sdk/cli/studio/list.py +25 -10
  5. lightning_sdk/cli/studio/start.py +3 -2
  6. lightning_sdk/cli/studio/stop.py +2 -1
  7. lightning_sdk/cli/studio/switch.py +2 -1
  8. lightning_sdk/cli/utils/richt_print.py +24 -0
  9. lightning_sdk/lightning_cloud/openapi/__init__.py +11 -0
  10. lightning_sdk/lightning_cloud/openapi/api/assistants_service_api.py +283 -0
  11. lightning_sdk/lightning_cloud/openapi/api/auth_service_api.py +97 -0
  12. lightning_sdk/lightning_cloud/openapi/api/cloud_space_service_api.py +202 -0
  13. lightning_sdk/lightning_cloud/openapi/models/__init__.py +11 -0
  14. lightning_sdk/lightning_cloud/openapi/models/orgs_id_body.py +27 -1
  15. lightning_sdk/lightning_cloud/openapi/models/v1_aggregated_pod_metrics.py +799 -0
  16. lightning_sdk/lightning_cloud/openapi/models/v1_cancel_running_cloud_space_instance_transfer_response.py +97 -0
  17. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_transfer_metadata.py +27 -1
  18. lightning_sdk/lightning_cloud/openapi/models/v1_cloudflare_v1.py +3 -29
  19. lightning_sdk/lightning_cloud/openapi/models/v1_daily_model_metrics.py +149 -0
  20. lightning_sdk/lightning_cloud/openapi/models/v1_filestore_data_connection.py +27 -1
  21. lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_required_balance_status_response.py +149 -0
  22. lightning_sdk/lightning_cloud/openapi/models/v1_get_latest_model_metrics_response.py +123 -0
  23. lightning_sdk/lightning_cloud/openapi/models/v1_get_model_metrics_response.py +123 -0
  24. lightning_sdk/lightning_cloud/openapi/models/v1_get_model_total_usage_metrics_response.py +149 -0
  25. lightning_sdk/lightning_cloud/openapi/models/v1_guest_login_request.py +177 -0
  26. lightning_sdk/lightning_cloud/openapi/models/v1_guest_login_response.py +149 -0
  27. lightning_sdk/lightning_cloud/openapi/models/v1_guest_user.py +201 -0
  28. lightning_sdk/lightning_cloud/openapi/models/v1_lambda_labs_direct_v1.py +29 -3
  29. lightning_sdk/lightning_cloud/openapi/models/v1_list_aggregated_pod_metrics_response.py +6 -6
  30. lightning_sdk/lightning_cloud/openapi/models/v1_model_metrics.py +175 -0
  31. lightning_sdk/lightning_cloud/openapi/models/v1_nebius_direct_v1.py +29 -3
  32. lightning_sdk/lightning_cloud/openapi/models/v1_organization.py +27 -1
  33. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +53 -1
  34. lightning_sdk/lightning_cloud/openapi/models/v1_voltage_park_direct_v1.py +29 -3
  35. lightning_sdk/studio.py +1 -0
  36. lightning_sdk/utils/resolve.py +11 -0
  37. {lightning_sdk-2025.8.26.dist-info → lightning_sdk-2025.9.2.dist-info}/METADATA +1 -1
  38. {lightning_sdk-2025.8.26.dist-info → lightning_sdk-2025.9.2.dist-info}/RECORD +42 -31
  39. {lightning_sdk-2025.8.26.dist-info → lightning_sdk-2025.9.2.dist-info}/LICENSE +0 -0
  40. {lightning_sdk-2025.8.26.dist-info → lightning_sdk-2025.9.2.dist-info}/WHEEL +0 -0
  41. {lightning_sdk-2025.8.26.dist-info → lightning_sdk-2025.9.2.dist-info}/entry_points.txt +0 -0
  42. {lightning_sdk-2025.8.26.dist-info → lightning_sdk-2025.9.2.dist-info}/top_level.txt +0 -0
@@ -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 V1CancelRunningCloudSpaceInstanceTransferResponse(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
+ """V1CancelRunningCloudSpaceInstanceTransferResponse - 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(V1CancelRunningCloudSpaceInstanceTransferResponse, 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: 'V1CancelRunningCloudSpaceInstanceTransferResponse') -> bool:
89
+ """Returns true if both objects are equal"""
90
+ if not isinstance(other, V1CancelRunningCloudSpaceInstanceTransferResponse):
91
+ return False
92
+
93
+ return self.__dict__ == other.__dict__
94
+
95
+ def __ne__(self, other: 'V1CancelRunningCloudSpaceInstanceTransferResponse') -> bool:
96
+ """Returns true if both objects are not equal"""
97
+ return not self == other
@@ -44,6 +44,7 @@ class V1CloudSpaceTransferMetadata(object):
44
44
  'initial_transfer_started_at': 'datetime',
45
45
  'requested_code_config': 'V1UpdateCloudSpaceInstanceConfigRequest',
46
46
  'source_cluster_id': 'str',
47
+ 'source_deletion_started_at': 'datetime',
47
48
  'target_cloud_provider': 'str',
48
49
  'target_cluster_id': 'str',
49
50
  'top_up_transfer_started_at': 'datetime'
@@ -53,16 +54,18 @@ class V1CloudSpaceTransferMetadata(object):
53
54
  'initial_transfer_started_at': 'initialTransferStartedAt',
54
55
  'requested_code_config': 'requestedCodeConfig',
55
56
  'source_cluster_id': 'sourceClusterId',
57
+ 'source_deletion_started_at': 'sourceDeletionStartedAt',
56
58
  'target_cloud_provider': 'targetCloudProvider',
57
59
  'target_cluster_id': 'targetClusterId',
58
60
  'top_up_transfer_started_at': 'topUpTransferStartedAt'
59
61
  }
60
62
 
61
- def __init__(self, initial_transfer_started_at: 'datetime' =None, requested_code_config: 'V1UpdateCloudSpaceInstanceConfigRequest' =None, source_cluster_id: 'str' =None, target_cloud_provider: 'str' =None, target_cluster_id: 'str' =None, top_up_transfer_started_at: 'datetime' =None): # noqa: E501
63
+ def __init__(self, initial_transfer_started_at: 'datetime' =None, requested_code_config: 'V1UpdateCloudSpaceInstanceConfigRequest' =None, source_cluster_id: 'str' =None, source_deletion_started_at: 'datetime' =None, target_cloud_provider: 'str' =None, target_cluster_id: 'str' =None, top_up_transfer_started_at: 'datetime' =None): # noqa: E501
62
64
  """V1CloudSpaceTransferMetadata - a model defined in Swagger""" # noqa: E501
63
65
  self._initial_transfer_started_at = None
64
66
  self._requested_code_config = None
65
67
  self._source_cluster_id = None
68
+ self._source_deletion_started_at = None
66
69
  self._target_cloud_provider = None
67
70
  self._target_cluster_id = None
68
71
  self._top_up_transfer_started_at = None
@@ -73,6 +76,8 @@ class V1CloudSpaceTransferMetadata(object):
73
76
  self.requested_code_config = requested_code_config
74
77
  if source_cluster_id is not None:
75
78
  self.source_cluster_id = source_cluster_id
79
+ if source_deletion_started_at is not None:
80
+ self.source_deletion_started_at = source_deletion_started_at
76
81
  if target_cloud_provider is not None:
77
82
  self.target_cloud_provider = target_cloud_provider
78
83
  if target_cluster_id is not None:
@@ -143,6 +148,27 @@ class V1CloudSpaceTransferMetadata(object):
143
148
 
144
149
  self._source_cluster_id = source_cluster_id
145
150
 
151
+ @property
152
+ def source_deletion_started_at(self) -> 'datetime':
153
+ """Gets the source_deletion_started_at of this V1CloudSpaceTransferMetadata. # noqa: E501
154
+
155
+
156
+ :return: The source_deletion_started_at of this V1CloudSpaceTransferMetadata. # noqa: E501
157
+ :rtype: datetime
158
+ """
159
+ return self._source_deletion_started_at
160
+
161
+ @source_deletion_started_at.setter
162
+ def source_deletion_started_at(self, source_deletion_started_at: 'datetime'):
163
+ """Sets the source_deletion_started_at of this V1CloudSpaceTransferMetadata.
164
+
165
+
166
+ :param source_deletion_started_at: The source_deletion_started_at of this V1CloudSpaceTransferMetadata. # noqa: E501
167
+ :type: datetime
168
+ """
169
+
170
+ self._source_deletion_started_at = source_deletion_started_at
171
+
146
172
  @property
147
173
  def target_cloud_provider(self) -> 'str':
148
174
  """Gets the target_cloud_provider of this V1CloudSpaceTransferMetadata. # noqa: E501
@@ -45,8 +45,7 @@ class V1CloudflareV1(object):
45
45
  'api_token_secret_id': 'str',
46
46
  'api_token_value': 'str',
47
47
  'bucket_credentials_secret_id': 'str',
48
- 'bucket_name': 'str',
49
- 'is_data_connection_billing_enabled': 'bool'
48
+ 'bucket_name': 'str'
50
49
  }
51
50
 
52
51
  attribute_map = {
@@ -54,18 +53,16 @@ class V1CloudflareV1(object):
54
53
  'api_token_secret_id': 'apiTokenSecretId',
55
54
  'api_token_value': 'apiTokenValue',
56
55
  'bucket_credentials_secret_id': 'bucketCredentialsSecretId',
57
- 'bucket_name': 'bucketName',
58
- 'is_data_connection_billing_enabled': 'isDataConnectionBillingEnabled'
56
+ 'bucket_name': 'bucketName'
59
57
  }
60
58
 
61
- def __init__(self, account_id: 'str' =None, api_token_secret_id: 'str' =None, api_token_value: 'str' =None, bucket_credentials_secret_id: 'str' =None, bucket_name: 'str' =None, is_data_connection_billing_enabled: 'bool' =None): # noqa: E501
59
+ def __init__(self, account_id: 'str' =None, api_token_secret_id: 'str' =None, api_token_value: 'str' =None, bucket_credentials_secret_id: 'str' =None, bucket_name: 'str' =None): # noqa: E501
62
60
  """V1CloudflareV1 - a model defined in Swagger""" # noqa: E501
63
61
  self._account_id = None
64
62
  self._api_token_secret_id = None
65
63
  self._api_token_value = None
66
64
  self._bucket_credentials_secret_id = None
67
65
  self._bucket_name = None
68
- self._is_data_connection_billing_enabled = None
69
66
  self.discriminator = None
70
67
  if account_id is not None:
71
68
  self.account_id = account_id
@@ -77,8 +74,6 @@ class V1CloudflareV1(object):
77
74
  self.bucket_credentials_secret_id = bucket_credentials_secret_id
78
75
  if bucket_name is not None:
79
76
  self.bucket_name = bucket_name
80
- if is_data_connection_billing_enabled is not None:
81
- self.is_data_connection_billing_enabled = is_data_connection_billing_enabled
82
77
 
83
78
  @property
84
79
  def account_id(self) -> 'str':
@@ -185,27 +180,6 @@ class V1CloudflareV1(object):
185
180
 
186
181
  self._bucket_name = bucket_name
187
182
 
188
- @property
189
- def is_data_connection_billing_enabled(self) -> 'bool':
190
- """Gets the is_data_connection_billing_enabled of this V1CloudflareV1. # noqa: E501
191
-
192
-
193
- :return: The is_data_connection_billing_enabled of this V1CloudflareV1. # noqa: E501
194
- :rtype: bool
195
- """
196
- return self._is_data_connection_billing_enabled
197
-
198
- @is_data_connection_billing_enabled.setter
199
- def is_data_connection_billing_enabled(self, is_data_connection_billing_enabled: 'bool'):
200
- """Sets the is_data_connection_billing_enabled of this V1CloudflareV1.
201
-
202
-
203
- :param is_data_connection_billing_enabled: The is_data_connection_billing_enabled of this V1CloudflareV1. # noqa: E501
204
- :type: bool
205
- """
206
-
207
- self._is_data_connection_billing_enabled = is_data_connection_billing_enabled
208
-
209
183
  def to_dict(self) -> dict:
210
184
  """Returns the model properties as a dict"""
211
185
  result = {}
@@ -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 V1DailyModelMetrics(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
+ 'day': 'datetime',
45
+ 'metrics': 'V1ModelMetrics'
46
+ }
47
+
48
+ attribute_map = {
49
+ 'day': 'day',
50
+ 'metrics': 'metrics'
51
+ }
52
+
53
+ def __init__(self, day: 'datetime' =None, metrics: 'V1ModelMetrics' =None): # noqa: E501
54
+ """V1DailyModelMetrics - a model defined in Swagger""" # noqa: E501
55
+ self._day = None
56
+ self._metrics = None
57
+ self.discriminator = None
58
+ if day is not None:
59
+ self.day = day
60
+ if metrics is not None:
61
+ self.metrics = metrics
62
+
63
+ @property
64
+ def day(self) -> 'datetime':
65
+ """Gets the day of this V1DailyModelMetrics. # noqa: E501
66
+
67
+
68
+ :return: The day of this V1DailyModelMetrics. # noqa: E501
69
+ :rtype: datetime
70
+ """
71
+ return self._day
72
+
73
+ @day.setter
74
+ def day(self, day: 'datetime'):
75
+ """Sets the day of this V1DailyModelMetrics.
76
+
77
+
78
+ :param day: The day of this V1DailyModelMetrics. # noqa: E501
79
+ :type: datetime
80
+ """
81
+
82
+ self._day = day
83
+
84
+ @property
85
+ def metrics(self) -> 'V1ModelMetrics':
86
+ """Gets the metrics of this V1DailyModelMetrics. # noqa: E501
87
+
88
+
89
+ :return: The metrics of this V1DailyModelMetrics. # noqa: E501
90
+ :rtype: V1ModelMetrics
91
+ """
92
+ return self._metrics
93
+
94
+ @metrics.setter
95
+ def metrics(self, metrics: 'V1ModelMetrics'):
96
+ """Sets the metrics of this V1DailyModelMetrics.
97
+
98
+
99
+ :param metrics: The metrics of this V1DailyModelMetrics. # noqa: E501
100
+ :type: V1ModelMetrics
101
+ """
102
+
103
+ self._metrics = metrics
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(V1DailyModelMetrics, 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: 'V1DailyModelMetrics') -> bool:
141
+ """Returns true if both objects are equal"""
142
+ if not isinstance(other, V1DailyModelMetrics):
143
+ return False
144
+
145
+ return self.__dict__ == other.__dict__
146
+
147
+ def __ne__(self, other: 'V1DailyModelMetrics') -> bool:
148
+ """Returns true if both objects are not equal"""
149
+ return not self == other
@@ -41,6 +41,7 @@ class V1FilestoreDataConnection(object):
41
41
  and the value is json key in definition.
42
42
  """
43
43
  swagger_types = {
44
+ 'auto_increase_enabled': 'bool',
44
45
  'capacity_gb': 'str',
45
46
  'mount_ip': 'str',
46
47
  'region': 'str',
@@ -49,6 +50,7 @@ class V1FilestoreDataConnection(object):
49
50
  }
50
51
 
51
52
  attribute_map = {
53
+ 'auto_increase_enabled': 'autoIncreaseEnabled',
52
54
  'capacity_gb': 'capacityGb',
53
55
  'mount_ip': 'mountIp',
54
56
  'region': 'region',
@@ -56,14 +58,17 @@ class V1FilestoreDataConnection(object):
56
58
  'tier': 'tier'
57
59
  }
58
60
 
59
- def __init__(self, capacity_gb: 'str' =None, mount_ip: 'str' =None, region: 'str' =None, source: 'str' =None, tier: 'V1DataConnectionTier' =None): # noqa: E501
61
+ def __init__(self, auto_increase_enabled: 'bool' =None, capacity_gb: 'str' =None, mount_ip: 'str' =None, region: 'str' =None, source: 'str' =None, tier: 'V1DataConnectionTier' =None): # noqa: E501
60
62
  """V1FilestoreDataConnection - a model defined in Swagger""" # noqa: E501
63
+ self._auto_increase_enabled = None
61
64
  self._capacity_gb = None
62
65
  self._mount_ip = None
63
66
  self._region = None
64
67
  self._source = None
65
68
  self._tier = None
66
69
  self.discriminator = None
70
+ if auto_increase_enabled is not None:
71
+ self.auto_increase_enabled = auto_increase_enabled
67
72
  if capacity_gb is not None:
68
73
  self.capacity_gb = capacity_gb
69
74
  if mount_ip is not None:
@@ -75,6 +80,27 @@ class V1FilestoreDataConnection(object):
75
80
  if tier is not None:
76
81
  self.tier = tier
77
82
 
83
+ @property
84
+ def auto_increase_enabled(self) -> 'bool':
85
+ """Gets the auto_increase_enabled of this V1FilestoreDataConnection. # noqa: E501
86
+
87
+
88
+ :return: The auto_increase_enabled of this V1FilestoreDataConnection. # noqa: E501
89
+ :rtype: bool
90
+ """
91
+ return self._auto_increase_enabled
92
+
93
+ @auto_increase_enabled.setter
94
+ def auto_increase_enabled(self, auto_increase_enabled: 'bool'):
95
+ """Sets the auto_increase_enabled of this V1FilestoreDataConnection.
96
+
97
+
98
+ :param auto_increase_enabled: The auto_increase_enabled of this V1FilestoreDataConnection. # noqa: E501
99
+ :type: bool
100
+ """
101
+
102
+ self._auto_increase_enabled = auto_increase_enabled
103
+
78
104
  @property
79
105
  def capacity_gb(self) -> 'str':
80
106
  """Gets the capacity_gb of this V1FilestoreDataConnection. # noqa: E501
@@ -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 V1GetCloudSpaceRequiredBalanceStatusResponse(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
+ 'has_required_balance': 'bool',
45
+ 'reason': 'str'
46
+ }
47
+
48
+ attribute_map = {
49
+ 'has_required_balance': 'hasRequiredBalance',
50
+ 'reason': 'reason'
51
+ }
52
+
53
+ def __init__(self, has_required_balance: 'bool' =None, reason: 'str' =None): # noqa: E501
54
+ """V1GetCloudSpaceRequiredBalanceStatusResponse - a model defined in Swagger""" # noqa: E501
55
+ self._has_required_balance = None
56
+ self._reason = None
57
+ self.discriminator = None
58
+ if has_required_balance is not None:
59
+ self.has_required_balance = has_required_balance
60
+ if reason is not None:
61
+ self.reason = reason
62
+
63
+ @property
64
+ def has_required_balance(self) -> 'bool':
65
+ """Gets the has_required_balance of this V1GetCloudSpaceRequiredBalanceStatusResponse. # noqa: E501
66
+
67
+
68
+ :return: The has_required_balance of this V1GetCloudSpaceRequiredBalanceStatusResponse. # noqa: E501
69
+ :rtype: bool
70
+ """
71
+ return self._has_required_balance
72
+
73
+ @has_required_balance.setter
74
+ def has_required_balance(self, has_required_balance: 'bool'):
75
+ """Sets the has_required_balance of this V1GetCloudSpaceRequiredBalanceStatusResponse.
76
+
77
+
78
+ :param has_required_balance: The has_required_balance of this V1GetCloudSpaceRequiredBalanceStatusResponse. # noqa: E501
79
+ :type: bool
80
+ """
81
+
82
+ self._has_required_balance = has_required_balance
83
+
84
+ @property
85
+ def reason(self) -> 'str':
86
+ """Gets the reason of this V1GetCloudSpaceRequiredBalanceStatusResponse. # noqa: E501
87
+
88
+
89
+ :return: The reason of this V1GetCloudSpaceRequiredBalanceStatusResponse. # noqa: E501
90
+ :rtype: str
91
+ """
92
+ return self._reason
93
+
94
+ @reason.setter
95
+ def reason(self, reason: 'str'):
96
+ """Sets the reason of this V1GetCloudSpaceRequiredBalanceStatusResponse.
97
+
98
+
99
+ :param reason: The reason of this V1GetCloudSpaceRequiredBalanceStatusResponse. # noqa: E501
100
+ :type: str
101
+ """
102
+
103
+ self._reason = reason
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(V1GetCloudSpaceRequiredBalanceStatusResponse, 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: 'V1GetCloudSpaceRequiredBalanceStatusResponse') -> bool:
141
+ """Returns true if both objects are equal"""
142
+ if not isinstance(other, V1GetCloudSpaceRequiredBalanceStatusResponse):
143
+ return False
144
+
145
+ return self.__dict__ == other.__dict__
146
+
147
+ def __ne__(self, other: 'V1GetCloudSpaceRequiredBalanceStatusResponse') -> bool:
148
+ """Returns true if both objects are not equal"""
149
+ return not self == other