lightning-sdk 2025.12.9__py3-none-any.whl → 2025.12.17__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/__version__.py +1 -1
  2. lightning_sdk/api/job_api.py +16 -0
  3. lightning_sdk/api/org_api.py +7 -0
  4. lightning_sdk/api/studio_api.py +28 -3
  5. lightning_sdk/api/teamspace_api.py +42 -5
  6. lightning_sdk/api/user_api.py +5 -0
  7. lightning_sdk/cli/legacy/download.py +2 -1
  8. lightning_sdk/cli/legacy/studios_menu.py +8 -1
  9. lightning_sdk/job/base.py +26 -4
  10. lightning_sdk/job/job.py +16 -5
  11. lightning_sdk/job/v1.py +7 -2
  12. lightning_sdk/job/v2.py +41 -1
  13. lightning_sdk/lightning_cloud/openapi/__init__.py +26 -1
  14. lightning_sdk/lightning_cloud/openapi/api/__init__.py +1 -0
  15. lightning_sdk/lightning_cloud/openapi/api/cloud_space_service_api.py +5 -1
  16. lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py +517 -0
  17. lightning_sdk/lightning_cloud/openapi/api/data_connection_service_api.py +5 -1
  18. lightning_sdk/lightning_cloud/openapi/api/file_system_service_api.py +11 -11
  19. lightning_sdk/lightning_cloud/openapi/api/kubernetes_virtual_machine_service_api.py +557 -0
  20. lightning_sdk/lightning_cloud/openapi/api/storage_service_api.py +5 -1
  21. lightning_sdk/lightning_cloud/openapi/models/__init__.py +25 -1
  22. lightning_sdk/lightning_cloud/openapi/models/cloud_space_environment_template_service_update_cloud_space_environment_template_body.py +27 -1
  23. lightning_sdk/lightning_cloud/openapi/models/cluster_service_add_container_registry_body.py +123 -0
  24. lightning_sdk/lightning_cloud/openapi/models/cluster_service_create_machine_body.py +27 -1
  25. lightning_sdk/lightning_cloud/openapi/models/cluster_service_refresh_container_registry_credentials_body.py +97 -0
  26. lightning_sdk/lightning_cloud/openapi/models/cluster_service_validate_container_registry_body.py +97 -0
  27. lightning_sdk/lightning_cloud/openapi/models/kubernetes_virtual_machine_service_create_kubernetes_virtual_machine_body.py +513 -0
  28. lightning_sdk/lightning_cloud/openapi/models/kubernetes_virtual_machine_service_update_kubernetes_virtual_machine_body.py +97 -0
  29. lightning_sdk/lightning_cloud/openapi/models/v1_add_container_registry_response.py +123 -0
  30. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_template_config.py +27 -1
  31. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_specialized_view.py +1 -0
  32. lightning_sdk/lightning_cloud/openapi/models/v1_container_registry.py +253 -0
  33. lightning_sdk/lightning_cloud/openapi/models/v1_container_registry_info.py +281 -0
  34. lightning_sdk/lightning_cloud/openapi/models/v1_container_registry_integration.py +123 -0
  35. lightning_sdk/lightning_cloud/openapi/models/v1_container_registry_status.py +105 -0
  36. lightning_sdk/lightning_cloud/openapi/models/v1_create_cloud_space_environment_template_request.py +27 -1
  37. lightning_sdk/lightning_cloud/openapi/models/v1_delete_container_registry_response.py +97 -0
  38. lightning_sdk/lightning_cloud/openapi/models/v1_delete_kubernetes_virtual_machine_response.py +97 -0
  39. lightning_sdk/lightning_cloud/openapi/models/v1_ecr_registry_config.py +175 -0
  40. lightning_sdk/lightning_cloud/openapi/models/v1_ecr_registry_config_input.py +123 -0
  41. lightning_sdk/lightning_cloud/openapi/models/v1_ecr_registry_details.py +201 -0
  42. lightning_sdk/lightning_cloud/openapi/models/v1_get_artifacts_page_response.py +29 -3
  43. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_response.py +27 -1
  44. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_direct_v1.py +53 -1
  45. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_virtual_machine.py +383 -0
  46. lightning_sdk/lightning_cloud/openapi/models/v1_kubevirt_config.py +305 -0
  47. lightning_sdk/lightning_cloud/openapi/models/v1_kubevirt_provider_configuration.py +227 -0
  48. lightning_sdk/lightning_cloud/openapi/models/v1_kubevirt_vm_configuration.py +149 -0
  49. lightning_sdk/lightning_cloud/openapi/models/v1_kubevirt_vm_resources.py +201 -0
  50. lightning_sdk/lightning_cloud/openapi/models/v1_list_container_registries_response.py +123 -0
  51. lightning_sdk/lightning_cloud/openapi/models/v1_list_kubernetes_virtual_machines_response.py +123 -0
  52. lightning_sdk/lightning_cloud/openapi/models/v1_machine.py +27 -1
  53. lightning_sdk/lightning_cloud/openapi/models/v1_node_metrics.py +27 -1
  54. lightning_sdk/lightning_cloud/openapi/models/v1_refresh_container_registry_credentials_response.py +123 -0
  55. lightning_sdk/lightning_cloud/openapi/models/v1_search_user.py +27 -1
  56. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +79 -1
  57. lightning_sdk/lightning_cloud/openapi/models/v1_validate_container_registry_response.py +149 -0
  58. lightning_sdk/lightning_cloud/openapi/rest.py +2 -2
  59. lightning_sdk/machine.py +1 -0
  60. lightning_sdk/mmt/base.py +26 -7
  61. lightning_sdk/mmt/mmt.py +11 -6
  62. lightning_sdk/mmt/v1.py +5 -2
  63. lightning_sdk/mmt/v2.py +5 -2
  64. lightning_sdk/organization.py +10 -1
  65. lightning_sdk/owner.py +4 -0
  66. lightning_sdk/pipeline/steps.py +3 -0
  67. lightning_sdk/plugin.py +2 -2
  68. lightning_sdk/studio.py +33 -2
  69. lightning_sdk/teamspace.py +44 -4
  70. lightning_sdk/user.py +22 -2
  71. lightning_sdk/utils/resolve.py +9 -7
  72. {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.17.dist-info}/METADATA +1 -1
  73. {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.17.dist-info}/RECORD +78 -53
  74. /lightning_sdk/lightning_cloud/openapi/models/{v1_list_filesystem_mm_ts_response.py → v1_list_filesystem_mmts_response.py} +0 -0
  75. {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.17.dist-info}/LICENSE +0 -0
  76. {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.17.dist-info}/WHEEL +0 -0
  77. {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.17.dist-info}/entry_points.txt +0 -0
  78. {lightning_sdk-2025.12.9.dist-info → lightning_sdk-2025.12.17.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 V1AddContainerRegistryResponse(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
+ 'registry': 'V1ContainerRegistryInfo'
45
+ }
46
+
47
+ attribute_map = {
48
+ 'registry': 'registry'
49
+ }
50
+
51
+ def __init__(self, registry: 'V1ContainerRegistryInfo' =None): # noqa: E501
52
+ """V1AddContainerRegistryResponse - a model defined in Swagger""" # noqa: E501
53
+ self._registry = None
54
+ self.discriminator = None
55
+ if registry is not None:
56
+ self.registry = registry
57
+
58
+ @property
59
+ def registry(self) -> 'V1ContainerRegistryInfo':
60
+ """Gets the registry of this V1AddContainerRegistryResponse. # noqa: E501
61
+
62
+
63
+ :return: The registry of this V1AddContainerRegistryResponse. # noqa: E501
64
+ :rtype: V1ContainerRegistryInfo
65
+ """
66
+ return self._registry
67
+
68
+ @registry.setter
69
+ def registry(self, registry: 'V1ContainerRegistryInfo'):
70
+ """Sets the registry of this V1AddContainerRegistryResponse.
71
+
72
+
73
+ :param registry: The registry of this V1AddContainerRegistryResponse. # noqa: E501
74
+ :type: V1ContainerRegistryInfo
75
+ """
76
+
77
+ self._registry = registry
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(V1AddContainerRegistryResponse, 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: 'V1AddContainerRegistryResponse') -> bool:
115
+ """Returns true if both objects are equal"""
116
+ if not isinstance(other, V1AddContainerRegistryResponse):
117
+ return False
118
+
119
+ return self.__dict__ == other.__dict__
120
+
121
+ def __ne__(self, other: 'V1AddContainerRegistryResponse') -> bool:
122
+ """Returns true if both objects are not equal"""
123
+ return not self == other
@@ -48,6 +48,7 @@ class V1CloudSpaceEnvironmentTemplateConfig(object):
48
48
  'initial_setup_script_text': 'str',
49
49
  'machine_image_version': 'str',
50
50
  'plugins': 'list[str]',
51
+ 'ports': 'list[int]',
51
52
  'setup_script_text': 'str',
52
53
  'specialized_view': 'V1CloudSpaceSpecializedView'
53
54
  }
@@ -60,11 +61,12 @@ class V1CloudSpaceEnvironmentTemplateConfig(object):
60
61
  'initial_setup_script_text': 'initialSetupScriptText',
61
62
  'machine_image_version': 'machineImageVersion',
62
63
  'plugins': 'plugins',
64
+ 'ports': 'ports',
63
65
  'setup_script_text': 'setupScriptText',
64
66
  'specialized_view': 'specializedView'
65
67
  }
66
68
 
67
- def __init__(self, allowed_machines: 'list[str]' =None, default_machine: 'str' =None, environment_type: 'V1CloudSpaceEnvironmentType' =None, files_template_id: 'str' =None, initial_setup_script_text: 'str' =None, machine_image_version: 'str' =None, plugins: 'list[str]' =None, setup_script_text: 'str' =None, specialized_view: 'V1CloudSpaceSpecializedView' =None): # noqa: E501
69
+ def __init__(self, allowed_machines: 'list[str]' =None, default_machine: 'str' =None, environment_type: 'V1CloudSpaceEnvironmentType' =None, files_template_id: 'str' =None, initial_setup_script_text: 'str' =None, machine_image_version: 'str' =None, plugins: 'list[str]' =None, ports: 'list[int]' =None, setup_script_text: 'str' =None, specialized_view: 'V1CloudSpaceSpecializedView' =None): # noqa: E501
68
70
  """V1CloudSpaceEnvironmentTemplateConfig - a model defined in Swagger""" # noqa: E501
69
71
  self._allowed_machines = None
70
72
  self._default_machine = None
@@ -73,6 +75,7 @@ class V1CloudSpaceEnvironmentTemplateConfig(object):
73
75
  self._initial_setup_script_text = None
74
76
  self._machine_image_version = None
75
77
  self._plugins = None
78
+ self._ports = None
76
79
  self._setup_script_text = None
77
80
  self._specialized_view = None
78
81
  self.discriminator = None
@@ -90,6 +93,8 @@ class V1CloudSpaceEnvironmentTemplateConfig(object):
90
93
  self.machine_image_version = machine_image_version
91
94
  if plugins is not None:
92
95
  self.plugins = plugins
96
+ if ports is not None:
97
+ self.ports = ports
93
98
  if setup_script_text is not None:
94
99
  self.setup_script_text = setup_script_text
95
100
  if specialized_view is not None:
@@ -242,6 +247,27 @@ class V1CloudSpaceEnvironmentTemplateConfig(object):
242
247
 
243
248
  self._plugins = plugins
244
249
 
250
+ @property
251
+ def ports(self) -> 'list[int]':
252
+ """Gets the ports of this V1CloudSpaceEnvironmentTemplateConfig. # noqa: E501
253
+
254
+
255
+ :return: The ports of this V1CloudSpaceEnvironmentTemplateConfig. # noqa: E501
256
+ :rtype: list[int]
257
+ """
258
+ return self._ports
259
+
260
+ @ports.setter
261
+ def ports(self, ports: 'list[int]'):
262
+ """Sets the ports of this V1CloudSpaceEnvironmentTemplateConfig.
263
+
264
+
265
+ :param ports: The ports of this V1CloudSpaceEnvironmentTemplateConfig. # noqa: E501
266
+ :type: list[int]
267
+ """
268
+
269
+ self._ports = ports
270
+
245
271
  @property
246
272
  def setup_script_text(self) -> 'str':
247
273
  """Gets the setup_script_text of this V1CloudSpaceEnvironmentTemplateConfig. # noqa: E501
@@ -41,6 +41,7 @@ class V1CloudSpaceSpecializedView(object):
41
41
  DEFAULT = "CLOUD_SPACE_SPECIALIZED_VIEW_DEFAULT"
42
42
  STREAMLIT = "CLOUD_SPACE_SPECIALIZED_VIEW_STREAMLIT"
43
43
  NOTEBOOK = "CLOUD_SPACE_SPECIALIZED_VIEW_NOTEBOOK"
44
+ COMFYUI = "CLOUD_SPACE_SPECIALIZED_VIEW_COMFYUI"
44
45
  """
45
46
  Attributes:
46
47
  swagger_types (dict): The key is attribute name
@@ -0,0 +1,253 @@
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 V1ContainerRegistry(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
+ 'ecr': 'V1ECRRegistryConfig',
45
+ 'id': 'str',
46
+ 'last_refresh': 'datetime',
47
+ 'status': 'V1ContainerRegistryStatus',
48
+ 'status_message': 'str',
49
+ 'validated_at': 'datetime'
50
+ }
51
+
52
+ attribute_map = {
53
+ 'ecr': 'ecr',
54
+ 'id': 'id',
55
+ 'last_refresh': 'lastRefresh',
56
+ 'status': 'status',
57
+ 'status_message': 'statusMessage',
58
+ 'validated_at': 'validatedAt'
59
+ }
60
+
61
+ def __init__(self, ecr: 'V1ECRRegistryConfig' =None, id: 'str' =None, last_refresh: 'datetime' =None, status: 'V1ContainerRegistryStatus' =None, status_message: 'str' =None, validated_at: 'datetime' =None): # noqa: E501
62
+ """V1ContainerRegistry - a model defined in Swagger""" # noqa: E501
63
+ self._ecr = None
64
+ self._id = None
65
+ self._last_refresh = None
66
+ self._status = None
67
+ self._status_message = None
68
+ self._validated_at = None
69
+ self.discriminator = None
70
+ if ecr is not None:
71
+ self.ecr = ecr
72
+ if id is not None:
73
+ self.id = id
74
+ if last_refresh is not None:
75
+ self.last_refresh = last_refresh
76
+ if status is not None:
77
+ self.status = status
78
+ if status_message is not None:
79
+ self.status_message = status_message
80
+ if validated_at is not None:
81
+ self.validated_at = validated_at
82
+
83
+ @property
84
+ def ecr(self) -> 'V1ECRRegistryConfig':
85
+ """Gets the ecr of this V1ContainerRegistry. # noqa: E501
86
+
87
+
88
+ :return: The ecr of this V1ContainerRegistry. # noqa: E501
89
+ :rtype: V1ECRRegistryConfig
90
+ """
91
+ return self._ecr
92
+
93
+ @ecr.setter
94
+ def ecr(self, ecr: 'V1ECRRegistryConfig'):
95
+ """Sets the ecr of this V1ContainerRegistry.
96
+
97
+
98
+ :param ecr: The ecr of this V1ContainerRegistry. # noqa: E501
99
+ :type: V1ECRRegistryConfig
100
+ """
101
+
102
+ self._ecr = ecr
103
+
104
+ @property
105
+ def id(self) -> 'str':
106
+ """Gets the id of this V1ContainerRegistry. # noqa: E501
107
+
108
+
109
+ :return: The id of this V1ContainerRegistry. # noqa: E501
110
+ :rtype: str
111
+ """
112
+ return self._id
113
+
114
+ @id.setter
115
+ def id(self, id: 'str'):
116
+ """Sets the id of this V1ContainerRegistry.
117
+
118
+
119
+ :param id: The id of this V1ContainerRegistry. # noqa: E501
120
+ :type: str
121
+ """
122
+
123
+ self._id = id
124
+
125
+ @property
126
+ def last_refresh(self) -> 'datetime':
127
+ """Gets the last_refresh of this V1ContainerRegistry. # noqa: E501
128
+
129
+
130
+ :return: The last_refresh of this V1ContainerRegistry. # noqa: E501
131
+ :rtype: datetime
132
+ """
133
+ return self._last_refresh
134
+
135
+ @last_refresh.setter
136
+ def last_refresh(self, last_refresh: 'datetime'):
137
+ """Sets the last_refresh of this V1ContainerRegistry.
138
+
139
+
140
+ :param last_refresh: The last_refresh of this V1ContainerRegistry. # noqa: E501
141
+ :type: datetime
142
+ """
143
+
144
+ self._last_refresh = last_refresh
145
+
146
+ @property
147
+ def status(self) -> 'V1ContainerRegistryStatus':
148
+ """Gets the status of this V1ContainerRegistry. # noqa: E501
149
+
150
+
151
+ :return: The status of this V1ContainerRegistry. # noqa: E501
152
+ :rtype: V1ContainerRegistryStatus
153
+ """
154
+ return self._status
155
+
156
+ @status.setter
157
+ def status(self, status: 'V1ContainerRegistryStatus'):
158
+ """Sets the status of this V1ContainerRegistry.
159
+
160
+
161
+ :param status: The status of this V1ContainerRegistry. # noqa: E501
162
+ :type: V1ContainerRegistryStatus
163
+ """
164
+
165
+ self._status = status
166
+
167
+ @property
168
+ def status_message(self) -> 'str':
169
+ """Gets the status_message of this V1ContainerRegistry. # noqa: E501
170
+
171
+
172
+ :return: The status_message of this V1ContainerRegistry. # noqa: E501
173
+ :rtype: str
174
+ """
175
+ return self._status_message
176
+
177
+ @status_message.setter
178
+ def status_message(self, status_message: 'str'):
179
+ """Sets the status_message of this V1ContainerRegistry.
180
+
181
+
182
+ :param status_message: The status_message of this V1ContainerRegistry. # noqa: E501
183
+ :type: str
184
+ """
185
+
186
+ self._status_message = status_message
187
+
188
+ @property
189
+ def validated_at(self) -> 'datetime':
190
+ """Gets the validated_at of this V1ContainerRegistry. # noqa: E501
191
+
192
+
193
+ :return: The validated_at of this V1ContainerRegistry. # noqa: E501
194
+ :rtype: datetime
195
+ """
196
+ return self._validated_at
197
+
198
+ @validated_at.setter
199
+ def validated_at(self, validated_at: 'datetime'):
200
+ """Sets the validated_at of this V1ContainerRegistry.
201
+
202
+
203
+ :param validated_at: The validated_at of this V1ContainerRegistry. # noqa: E501
204
+ :type: datetime
205
+ """
206
+
207
+ self._validated_at = validated_at
208
+
209
+ def to_dict(self) -> dict:
210
+ """Returns the model properties as a dict"""
211
+ result = {}
212
+
213
+ for attr, _ in six.iteritems(self.swagger_types):
214
+ value = getattr(self, attr)
215
+ if isinstance(value, list):
216
+ result[attr] = list(map(
217
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
218
+ value
219
+ ))
220
+ elif hasattr(value, "to_dict"):
221
+ result[attr] = value.to_dict()
222
+ elif isinstance(value, dict):
223
+ result[attr] = dict(map(
224
+ lambda item: (item[0], item[1].to_dict())
225
+ if hasattr(item[1], "to_dict") else item,
226
+ value.items()
227
+ ))
228
+ else:
229
+ result[attr] = value
230
+ if issubclass(V1ContainerRegistry, dict):
231
+ for key, value in self.items():
232
+ result[key] = value
233
+
234
+ return result
235
+
236
+ def to_str(self) -> str:
237
+ """Returns the string representation of the model"""
238
+ return pprint.pformat(self.to_dict())
239
+
240
+ def __repr__(self) -> str:
241
+ """For `print` and `pprint`"""
242
+ return self.to_str()
243
+
244
+ def __eq__(self, other: 'V1ContainerRegistry') -> bool:
245
+ """Returns true if both objects are equal"""
246
+ if not isinstance(other, V1ContainerRegistry):
247
+ return False
248
+
249
+ return self.__dict__ == other.__dict__
250
+
251
+ def __ne__(self, other: 'V1ContainerRegistry') -> bool:
252
+ """Returns true if both objects are not equal"""
253
+ return not self == other