qi-compute-api-client 0.4.0__py3-none-any.whl → 0.17.0__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.

Potentially problematic release.


This version of qi-compute-api-client might be problematic. Click here for more details.

Files changed (166) hide show
  1. compute_api_client/__init__.py +23 -20
  2. compute_api_client/api/__init__.py +5 -6
  3. compute_api_client/api/algorithms_api.py +1334 -554
  4. compute_api_client/api/backend_api.py +1501 -0
  5. compute_api_client/api/backend_types_api.py +684 -0
  6. compute_api_client/api/batch_jobs_api.py +1937 -0
  7. compute_api_client/api/commits_api.py +1069 -436
  8. compute_api_client/api/files_api.py +1076 -436
  9. compute_api_client/api/final_results_api.py +737 -339
  10. compute_api_client/api/jobs_api.py +1653 -0
  11. compute_api_client/api/languages_api.py +557 -218
  12. compute_api_client/api/members_api.py +1058 -436
  13. compute_api_client/api/metadata_api.py +737 -338
  14. compute_api_client/api/permissions_api.py +1056 -422
  15. compute_api_client/api/projects_api.py +1605 -677
  16. compute_api_client/api/reservations_api.py +1125 -428
  17. compute_api_client/api/results_api.py +739 -338
  18. compute_api_client/api/teams_api.py +568 -221
  19. compute_api_client/api/transactions_api.py +680 -219
  20. compute_api_client/api/users_api.py +1091 -436
  21. compute_api_client/api_client.py +347 -305
  22. compute_api_client/api_response.py +21 -0
  23. compute_api_client/configuration.py +55 -68
  24. compute_api_client/docs/Algorithm.md +20 -3
  25. compute_api_client/docs/AlgorithmIn.md +20 -3
  26. compute_api_client/docs/AlgorithmType.md +0 -1
  27. compute_api_client/docs/AlgorithmsApi.md +78 -77
  28. compute_api_client/docs/Backend.md +33 -0
  29. compute_api_client/docs/BackendApi.md +419 -0
  30. compute_api_client/docs/BackendPatch.md +29 -0
  31. compute_api_client/docs/{RunStatus.md → BackendStatus.md} +1 -2
  32. compute_api_client/docs/BackendType.md +36 -0
  33. compute_api_client/docs/{RuntimeTypesApi.md → BackendTypesApi.md} +58 -31
  34. compute_api_client/docs/BackendWithAuthentication.md +34 -0
  35. compute_api_client/docs/BatchJob.md +38 -0
  36. compute_api_client/docs/BatchJobIn.md +29 -0
  37. compute_api_client/docs/{RuntimeStatus.md → BatchJobStatus.md} +1 -2
  38. compute_api_client/docs/BatchJobsApi.md +524 -0
  39. compute_api_client/docs/Commit.md +18 -1
  40. compute_api_client/docs/CommitIn.md +17 -0
  41. compute_api_client/docs/CommitsApi.md +62 -71
  42. compute_api_client/docs/CompileStage.md +0 -1
  43. compute_api_client/docs/Domain.md +0 -1
  44. compute_api_client/docs/File.md +21 -4
  45. compute_api_client/docs/FileIn.md +21 -4
  46. compute_api_client/docs/FilesApi.md +65 -71
  47. compute_api_client/docs/FinalResult.md +20 -3
  48. compute_api_client/docs/FinalResultIn.md +19 -2
  49. compute_api_client/docs/FinalResultsApi.md +44 -71
  50. compute_api_client/docs/HTTPNotFoundError.md +17 -0
  51. compute_api_client/docs/HTTPValidationError.md +18 -1
  52. compute_api_client/docs/Job.md +36 -0
  53. compute_api_client/docs/JobIn.md +31 -0
  54. compute_api_client/docs/JobPatch.md +28 -0
  55. compute_api_client/docs/{BatchRunStatus.md → JobStatus.md} +1 -2
  56. compute_api_client/docs/{RunsApi.md → JobsApi.md} +137 -122
  57. compute_api_client/docs/Language.md +17 -0
  58. compute_api_client/docs/LanguagesApi.md +30 -12
  59. compute_api_client/docs/LocationInner.md +17 -0
  60. compute_api_client/docs/Member.md +19 -2
  61. compute_api_client/docs/MemberIn.md +19 -2
  62. compute_api_client/docs/MembersApi.md +59 -24
  63. compute_api_client/docs/Metadata.md +20 -3
  64. compute_api_client/docs/MetadataApi.md +49 -33
  65. compute_api_client/docs/MetadataIn.md +19 -2
  66. compute_api_client/docs/Permission.md +17 -0
  67. compute_api_client/docs/PermissionGroup.md +17 -0
  68. compute_api_client/docs/PermissionsApi.md +68 -28
  69. compute_api_client/docs/Project.md +20 -3
  70. compute_api_client/docs/ProjectIn.md +18 -1
  71. compute_api_client/docs/ProjectPatch.md +19 -2
  72. compute_api_client/docs/ProjectsApi.md +84 -36
  73. compute_api_client/docs/Reservation.md +21 -4
  74. compute_api_client/docs/ReservationIn.md +19 -2
  75. compute_api_client/docs/ReservationsApi.md +66 -24
  76. compute_api_client/docs/Result.md +23 -6
  77. compute_api_client/docs/ResultIn.md +19 -2
  78. compute_api_client/docs/ResultsApi.md +40 -74
  79. compute_api_client/docs/Role.md +0 -1
  80. compute_api_client/docs/ShareType.md +0 -1
  81. compute_api_client/docs/Team.md +18 -1
  82. compute_api_client/docs/TeamsApi.md +37 -14
  83. compute_api_client/docs/Transaction.md +21 -4
  84. compute_api_client/docs/TransactionsApi.md +50 -14
  85. compute_api_client/docs/User.md +21 -4
  86. compute_api_client/docs/UserIn.md +17 -0
  87. compute_api_client/docs/UsersApi.md +62 -24
  88. compute_api_client/docs/ValidationError.md +18 -1
  89. compute_api_client/exceptions.py +20 -17
  90. compute_api_client/models/__init__.py +17 -15
  91. compute_api_client/models/algorithm.py +79 -238
  92. compute_api_client/models/algorithm_in.py +77 -205
  93. compute_api_client/models/algorithm_type.py +22 -88
  94. compute_api_client/models/backend.py +100 -0
  95. compute_api_client/models/backend_patch.py +90 -0
  96. compute_api_client/models/backend_status.py +47 -0
  97. compute_api_client/models/backend_type.py +105 -0
  98. compute_api_client/models/backend_with_authentication.py +102 -0
  99. compute_api_client/models/batch_job.py +129 -0
  100. compute_api_client/models/batch_job_in.py +89 -0
  101. compute_api_client/models/batch_job_status.py +48 -0
  102. compute_api_client/models/commit.py +73 -231
  103. compute_api_client/models/commit_in.py +68 -170
  104. compute_api_client/models/compile_stage.py +24 -90
  105. compute_api_client/models/domain.py +23 -89
  106. compute_api_client/models/file.py +75 -289
  107. compute_api_client/models/file_in.py +73 -255
  108. compute_api_client/models/final_result.py +69 -199
  109. compute_api_client/models/final_result_in.py +64 -138
  110. compute_api_client/models/http_not_found_error.py +61 -106
  111. compute_api_client/models/http_validation_error.py +70 -106
  112. compute_api_client/models/job.py +120 -0
  113. compute_api_client/models/job_in.py +99 -0
  114. compute_api_client/models/job_patch.py +88 -0
  115. compute_api_client/models/job_status.py +48 -0
  116. compute_api_client/models/language.py +68 -173
  117. compute_api_client/models/location_inner.py +126 -85
  118. compute_api_client/models/member.py +71 -237
  119. compute_api_client/models/member_in.py +69 -204
  120. compute_api_client/models/metadata.py +69 -199
  121. compute_api_client/models/metadata_in.py +69 -138
  122. compute_api_client/models/permission.py +68 -173
  123. compute_api_client/models/permission_group.py +66 -143
  124. compute_api_client/models/project.py +75 -257
  125. compute_api_client/models/project_in.py +70 -196
  126. compute_api_client/models/project_patch.py +90 -193
  127. compute_api_client/models/reservation.py +80 -291
  128. compute_api_client/models/reservation_in.py +69 -201
  129. compute_api_client/models/result.py +102 -360
  130. compute_api_client/models/result_in.py +96 -293
  131. compute_api_client/models/role.py +22 -88
  132. compute_api_client/models/share_type.py +23 -89
  133. compute_api_client/models/team.py +70 -199
  134. compute_api_client/models/transaction.py +94 -300
  135. compute_api_client/models/user.py +76 -277
  136. compute_api_client/models/user_in.py +74 -244
  137. compute_api_client/models/validation_error.py +74 -161
  138. compute_api_client/rest.py +56 -115
  139. {qi_compute_api_client-0.4.0.dist-info → qi_compute_api_client-0.17.0.dist-info}/METADATA +47 -40
  140. qi_compute_api_client-0.17.0.dist-info/RECORD +142 -0
  141. compute_api_client/api/batch_runs_api.py +0 -862
  142. compute_api_client/api/runs_api.py +0 -723
  143. compute_api_client/api/runtime_api.py +0 -449
  144. compute_api_client/api/runtime_types_api.py +0 -303
  145. compute_api_client/docs/BatchRun.md +0 -21
  146. compute_api_client/docs/BatchRunIn.md +0 -12
  147. compute_api_client/docs/BatchRunsApi.md +0 -600
  148. compute_api_client/docs/Run.md +0 -18
  149. compute_api_client/docs/RunIn.md +0 -13
  150. compute_api_client/docs/Runtime.md +0 -16
  151. compute_api_client/docs/RuntimeApi.md +0 -229
  152. compute_api_client/docs/RuntimeType.md +0 -19
  153. compute_api_client/docs/RuntimeWithAuthentication.md +0 -17
  154. compute_api_client/models/batch_run.py +0 -423
  155. compute_api_client/models/batch_run_in.py +0 -171
  156. compute_api_client/models/batch_run_status.py +0 -114
  157. compute_api_client/models/run.py +0 -345
  158. compute_api_client/models/run_in.py +0 -202
  159. compute_api_client/models/run_status.py +0 -114
  160. compute_api_client/models/runtime.py +0 -290
  161. compute_api_client/models/runtime_status.py +0 -113
  162. compute_api_client/models/runtime_type.py +0 -357
  163. compute_api_client/models/runtime_with_authentication.py +0 -320
  164. qi_compute_api_client-0.4.0.dist-info/RECORD +0 -137
  165. {qi_compute_api_client-0.4.0.dist-info → qi_compute_api_client-0.17.0.dist-info}/LICENSE.md +0 -0
  166. {qi_compute_api_client-0.4.0.dist-info → qi_compute_api_client-0.17.0.dist-info}/WHEEL +0 -0
@@ -1,323 +1,117 @@
1
1
  # coding: utf-8
2
2
 
3
3
  """
4
- Compute Job Manager
4
+ Quantum Inspire 2
5
5
 
6
- No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
6
+ No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
7
7
 
8
8
  The version of the OpenAPI document: 0.1.0
9
- Generated by: https://openapi-generator.tech
10
- """
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
10
 
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
12
13
 
13
- try:
14
- from inspect import getfullargspec
15
- except ImportError:
16
- from inspect import getargspec as getfullargspec
14
+
15
+ from __future__ import annotations
17
16
  import pprint
18
17
  import re # noqa: F401
19
- import six
20
-
21
- from compute_api_client.configuration import Configuration
22
-
23
-
24
- class Transaction(object):
25
- """NOTE: This class is auto generated by OpenAPI Generator.
26
- Ref: https://openapi-generator.tech
27
-
28
- Do not edit the class manually.
29
- """
18
+ import json
19
+
20
+ from datetime import datetime
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from pydantic import BaseModel, StrictInt
23
+ from pydantic import Field
24
+ from typing_extensions import Annotated
25
+ from compute_api_client.models.domain import Domain
26
+ try:
27
+ from typing import Self
28
+ except ImportError:
29
+ from typing_extensions import Self
30
30
 
31
+ class Transaction(BaseModel):
31
32
  """
32
- Attributes:
33
- openapi_types (dict): The key is attribute name
34
- and the value is attribute type.
35
- attribute_map (dict): The key is attribute name
36
- and the value is json key in definition.
37
- """
38
- openapi_types = {
39
- 'id': 'int',
40
- 'domain': 'Domain',
41
- 'run': 'int',
42
- 'change': 'int',
43
- 'timestamp': 'datetime',
44
- 'team_id': 'int',
45
- 'user_id': 'int'
46
- }
47
-
48
- attribute_map = {
49
- 'id': 'id',
50
- 'domain': 'domain',
51
- 'run': 'run',
52
- 'change': 'change',
53
- 'timestamp': 'timestamp',
54
- 'team_id': 'team_id',
55
- 'user_id': 'user_id'
33
+ Transaction
34
+ """ # noqa: E501
35
+ id: StrictInt
36
+ domain: Optional[Domain]
37
+ job: Optional[StrictInt]
38
+ team_id: StrictInt
39
+ user_id: Optional[StrictInt]
40
+ change: Annotated[int, Field(strict=True, ge=-32768)]
41
+ timestamp: datetime
42
+ __properties: ClassVar[List[str]] = ["id", "domain", "job", "team_id", "user_id", "change", "timestamp"]
43
+
44
+ model_config = {
45
+ "populate_by_name": True,
46
+ "validate_assignment": True
56
47
  }
57
48
 
58
- def __init__(self, id=None, domain=None, run=None, change=None, timestamp=None, team_id=None, user_id=None, local_vars_configuration=None): # noqa: E501
59
- """Transaction - a model defined in OpenAPI""" # noqa: E501
60
- if local_vars_configuration is None:
61
- local_vars_configuration = Configuration.get_default_copy()
62
- self.local_vars_configuration = local_vars_configuration
63
-
64
- self._id = None
65
- self._domain = None
66
- self._run = None
67
- self._change = None
68
- self._timestamp = None
69
- self._team_id = None
70
- self._user_id = None
71
- self.discriminator = None
72
-
73
- self.id = id
74
- self.domain = domain
75
- self.run = run
76
- self.change = change
77
- self.timestamp = timestamp
78
- self.team_id = team_id
79
- self.user_id = user_id
80
-
81
- @property
82
- def id(self):
83
- """Gets the id of this Transaction. # noqa: E501
84
-
85
-
86
- :return: The id of this Transaction. # noqa: E501
87
- :rtype: int
88
- """
89
- return self._id
90
-
91
- @id.setter
92
- def id(self, id):
93
- """Sets the id of this Transaction.
94
-
95
-
96
- :param id: The id of this Transaction. # noqa: E501
97
- :type id: int
98
- """
99
- if self.local_vars_configuration.client_side_validation and id is None: # noqa: E501
100
- raise ValueError("Invalid value for `id`, must not be `None`") # noqa: E501
101
- if (self.local_vars_configuration.client_side_validation and
102
- id is not None and id > 2147483647): # noqa: E501
103
- raise ValueError("Invalid value for `id`, must be a value less than or equal to `2147483647`") # noqa: E501
104
- if (self.local_vars_configuration.client_side_validation and
105
- id is not None and id < 1): # noqa: E501
106
- raise ValueError("Invalid value for `id`, must be a value greater than or equal to `1`") # noqa: E501
107
-
108
- self._id = id
109
-
110
- @property
111
- def domain(self):
112
- """Gets the domain of this Transaction. # noqa: E501
113
-
114
- COMPUTE: compute<br/>NETWORKING: networking<br/>SIMULATE: simulate # noqa: E501
115
-
116
- :return: The domain of this Transaction. # noqa: E501
117
- :rtype: Domain
118
- """
119
- return self._domain
120
-
121
- @domain.setter
122
- def domain(self, domain):
123
- """Sets the domain of this Transaction.
124
-
125
- COMPUTE: compute<br/>NETWORKING: networking<br/>SIMULATE: simulate # noqa: E501
126
-
127
- :param domain: The domain of this Transaction. # noqa: E501
128
- :type domain: Domain
129
- """
130
- if (self.local_vars_configuration.client_side_validation and
131
- domain is not None and len(domain) > 10):
132
- raise ValueError("Invalid value for `domain`, length must be less than or equal to `10`") # noqa: E501
133
-
134
- self._domain = domain
135
-
136
- @property
137
- def run(self):
138
- """Gets the run of this Transaction. # noqa: E501
139
-
140
-
141
- :return: The run of this Transaction. # noqa: E501
142
- :rtype: int
143
- """
144
- return self._run
145
-
146
- @run.setter
147
- def run(self, run):
148
- """Sets the run of this Transaction.
149
49
 
50
+ def to_str(self) -> str:
51
+ """Returns the string representation of the model using alias"""
52
+ return pprint.pformat(self.model_dump(by_alias=True))
150
53
 
151
- :param run: The run of this Transaction. # noqa: E501
152
- :type run: int
153
- """
154
- if (self.local_vars_configuration.client_side_validation and
155
- run is not None and run > 2147483647): # noqa: E501
156
- raise ValueError("Invalid value for `run`, must be a value less than or equal to `2147483647`") # noqa: E501
157
- if (self.local_vars_configuration.client_side_validation and
158
- run is not None and run < -2147483648): # noqa: E501
159
- raise ValueError("Invalid value for `run`, must be a value greater than or equal to `-2147483648`") # noqa: E501
160
-
161
- self._run = run
162
-
163
- @property
164
- def change(self):
165
- """Gets the change of this Transaction. # noqa: E501
54
+ def to_json(self) -> str:
55
+ """Returns the JSON representation of the model using alias"""
56
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
57
+ return json.dumps(self.to_dict())
166
58
 
59
+ @classmethod
60
+ def from_json(cls, json_str: str) -> Self:
61
+ """Create an instance of Transaction from a JSON string"""
62
+ return cls.from_dict(json.loads(json_str))
167
63
 
168
- :return: The change of this Transaction. # noqa: E501
169
- :rtype: int
170
- """
171
- return self._change
172
-
173
- @change.setter
174
- def change(self, change):
175
- """Sets the change of this Transaction.
64
+ def to_dict(self) -> Dict[str, Any]:
65
+ """Return the dictionary representation of the model using alias.
176
66
 
67
+ This has the following differences from calling pydantic's
68
+ `self.model_dump(by_alias=True)`:
177
69
 
178
- :param change: The change of this Transaction. # noqa: E501
179
- :type change: int
70
+ * `None` is only added to the output dict for nullable fields that
71
+ were set at model initialization. Other fields with value `None`
72
+ are ignored.
180
73
  """
181
- if self.local_vars_configuration.client_side_validation and change is None: # noqa: E501
182
- raise ValueError("Invalid value for `change`, must not be `None`") # noqa: E501
183
- if (self.local_vars_configuration.client_side_validation and
184
- change is not None and change > 32767): # noqa: E501
185
- raise ValueError("Invalid value for `change`, must be a value less than or equal to `32767`") # noqa: E501
186
- if (self.local_vars_configuration.client_side_validation and
187
- change is not None and change < -32768): # noqa: E501
188
- raise ValueError("Invalid value for `change`, must be a value greater than or equal to `-32768`") # noqa: E501
189
-
190
- self._change = change
191
-
192
- @property
193
- def timestamp(self):
194
- """Gets the timestamp of this Transaction. # noqa: E501
195
-
196
-
197
- :return: The timestamp of this Transaction. # noqa: E501
198
- :rtype: datetime
199
- """
200
- return self._timestamp
201
-
202
- @timestamp.setter
203
- def timestamp(self, timestamp):
204
- """Sets the timestamp of this Transaction.
205
-
206
-
207
- :param timestamp: The timestamp of this Transaction. # noqa: E501
208
- :type timestamp: datetime
209
- """
210
- if self.local_vars_configuration.client_side_validation and timestamp is None: # noqa: E501
211
- raise ValueError("Invalid value for `timestamp`, must not be `None`") # noqa: E501
212
-
213
- self._timestamp = timestamp
214
-
215
- @property
216
- def team_id(self):
217
- """Gets the team_id of this Transaction. # noqa: E501
218
-
219
-
220
- :return: The team_id of this Transaction. # noqa: E501
221
- :rtype: int
222
- """
223
- return self._team_id
224
-
225
- @team_id.setter
226
- def team_id(self, team_id):
227
- """Sets the team_id of this Transaction.
228
-
229
-
230
- :param team_id: The team_id of this Transaction. # noqa: E501
231
- :type team_id: int
232
- """
233
- if self.local_vars_configuration.client_side_validation and team_id is None: # noqa: E501
234
- raise ValueError("Invalid value for `team_id`, must not be `None`") # noqa: E501
235
- if (self.local_vars_configuration.client_side_validation and
236
- team_id is not None and team_id > 2147483647): # noqa: E501
237
- raise ValueError("Invalid value for `team_id`, must be a value less than or equal to `2147483647`") # noqa: E501
238
- if (self.local_vars_configuration.client_side_validation and
239
- team_id is not None and team_id < 1): # noqa: E501
240
- raise ValueError("Invalid value for `team_id`, must be a value greater than or equal to `1`") # noqa: E501
241
-
242
- self._team_id = team_id
243
-
244
- @property
245
- def user_id(self):
246
- """Gets the user_id of this Transaction. # noqa: E501
247
-
248
-
249
- :return: The user_id of this Transaction. # noqa: E501
250
- :rtype: int
251
- """
252
- return self._user_id
253
-
254
- @user_id.setter
255
- def user_id(self, user_id):
256
- """Sets the user_id of this Transaction.
257
-
258
-
259
- :param user_id: The user_id of this Transaction. # noqa: E501
260
- :type user_id: int
261
- """
262
- if (self.local_vars_configuration.client_side_validation and
263
- user_id is not None and user_id > 2147483647): # noqa: E501
264
- raise ValueError("Invalid value for `user_id`, must be a value less than or equal to `2147483647`") # noqa: E501
265
- if (self.local_vars_configuration.client_side_validation and
266
- user_id is not None and user_id < 1): # noqa: E501
267
- raise ValueError("Invalid value for `user_id`, must be a value greater than or equal to `1`") # noqa: E501
268
-
269
- self._user_id = user_id
270
-
271
- def to_dict(self, serialize=False):
272
- """Returns the model properties as a dict"""
273
- result = {}
274
-
275
- def convert(x):
276
- if hasattr(x, "to_dict"):
277
- args = getfullargspec(x.to_dict).args
278
- if len(args) == 1:
279
- return x.to_dict()
280
- else:
281
- return x.to_dict(serialize)
282
- else:
283
- return x
284
-
285
- for attr, _ in six.iteritems(self.openapi_types):
286
- value = getattr(self, attr)
287
- attr = self.attribute_map.get(attr, attr) if serialize else attr
288
- if isinstance(value, list):
289
- result[attr] = list(map(
290
- lambda x: convert(x),
291
- value
292
- ))
293
- elif isinstance(value, dict):
294
- result[attr] = dict(map(
295
- lambda item: (item[0], convert(item[1])),
296
- value.items()
297
- ))
298
- else:
299
- result[attr] = convert(value)
300
-
301
- return result
302
-
303
- def to_str(self):
304
- """Returns the string representation of the model"""
305
- return pprint.pformat(self.to_dict())
306
-
307
- def __repr__(self):
308
- """For `print` and `pprint`"""
309
- return self.to_str()
310
-
311
- def __eq__(self, other):
312
- """Returns true if both objects are equal"""
313
- if not isinstance(other, Transaction):
314
- return False
315
-
316
- return self.to_dict() == other.to_dict()
74
+ _dict = self.model_dump(
75
+ by_alias=True,
76
+ exclude={
77
+ },
78
+ exclude_none=True,
79
+ )
80
+ # set to None if domain (nullable) is None
81
+ # and model_fields_set contains the field
82
+ if self.domain is None and "domain" in self.model_fields_set:
83
+ _dict['domain'] = None
84
+
85
+ # set to None if job (nullable) is None
86
+ # and model_fields_set contains the field
87
+ if self.job is None and "job" in self.model_fields_set:
88
+ _dict['job'] = None
89
+
90
+ # set to None if user_id (nullable) is None
91
+ # and model_fields_set contains the field
92
+ if self.user_id is None and "user_id" in self.model_fields_set:
93
+ _dict['user_id'] = None
94
+
95
+ return _dict
96
+
97
+ @classmethod
98
+ def from_dict(cls, obj: Dict) -> Self:
99
+ """Create an instance of Transaction from a dict"""
100
+ if obj is None:
101
+ return None
102
+
103
+ if not isinstance(obj, dict):
104
+ return cls.model_validate(obj)
105
+
106
+ _obj = cls.model_validate({
107
+ "id": obj.get("id"),
108
+ "domain": obj.get("domain"),
109
+ "job": obj.get("job"),
110
+ "team_id": obj.get("team_id"),
111
+ "user_id": obj.get("user_id"),
112
+ "change": obj.get("change"),
113
+ "timestamp": obj.get("timestamp")
114
+ })
115
+ return _obj
317
116
 
318
- def __ne__(self, other):
319
- """Returns true if both objects are not equal"""
320
- if not isinstance(other, Transaction):
321
- return True
322
117
 
323
- return self.to_dict() != other.to_dict()