anyscale 0.26.58__py3-none-any.whl → 0.26.59__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.
- anyscale/_private/anyscale_client/common.py +1 -1
- anyscale/client/README.md +15 -0
- anyscale/client/openapi_client/__init__.py +10 -0
- anyscale/client/openapi_client/api/default_api.py +602 -2
- anyscale/client/openapi_client/models/__init__.py +10 -0
- anyscale/client/openapi_client/models/baseimagesenum.py +76 -1
- anyscale/client/openapi_client/models/create_internal_production_job.py +31 -3
- anyscale/client/openapi_client/models/create_job_queue_requests.py +31 -3
- anyscale/client/openapi_client/models/email_verification_request.py +175 -0
- anyscale/client/openapi_client/models/email_verification_response.py +120 -0
- anyscale/client/openapi_client/models/emailverificationresponse_response.py +121 -0
- anyscale/client/openapi_client/models/job_queues_query.py +31 -3
- anyscale/client/openapi_client/models/operator_event.py +256 -0
- anyscale/client/openapi_client/models/operator_event_response.py +148 -0
- anyscale/client/openapi_client/models/operator_event_type.py +101 -0
- anyscale/client/openapi_client/models/supportedbaseimagesenum.py +76 -1
- anyscale/client/openapi_client/models/update_job_queue_request.py +31 -3
- anyscale/client/openapi_client/models/use_work_os_response.py +121 -0
- anyscale/client/openapi_client/models/useworkosresponse_response.py +121 -0
- anyscale/client/openapi_client/models/work_os_authorize_url_response.py +120 -0
- anyscale/client/openapi_client/models/workosauthorizeurlresponse_response.py +121 -0
- anyscale/commands/cloud_commands.py +15 -3
- anyscale/commands/command_examples.py +1 -1
- anyscale/controllers/cloud_controller.py +7 -3
- anyscale/sdk/anyscale_client/models/baseimagesenum.py +76 -1
- anyscale/sdk/anyscale_client/models/supportedbaseimagesenum.py +76 -1
- anyscale/shared_anyscale_utils/latest_ray_version.py +1 -1
- anyscale/version.py +1 -1
- {anyscale-0.26.58.dist-info → anyscale-0.26.59.dist-info}/METADATA +1 -1
- {anyscale-0.26.58.dist-info → anyscale-0.26.59.dist-info}/RECORD +35 -25
- {anyscale-0.26.58.dist-info → anyscale-0.26.59.dist-info}/WHEEL +0 -0
- {anyscale-0.26.58.dist-info → anyscale-0.26.59.dist-info}/entry_points.txt +0 -0
- {anyscale-0.26.58.dist-info → anyscale-0.26.59.dist-info}/licenses/LICENSE +0 -0
- {anyscale-0.26.58.dist-info → anyscale-0.26.59.dist-info}/licenses/NOTICE +0 -0
- {anyscale-0.26.58.dist-info → anyscale-0.26.59.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,256 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
Managed Ray API
|
5
|
+
|
6
|
+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 0.1.0
|
9
|
+
Generated by: https://openapi-generator.tech
|
10
|
+
"""
|
11
|
+
|
12
|
+
|
13
|
+
import pprint
|
14
|
+
import re # noqa: F401
|
15
|
+
|
16
|
+
import six
|
17
|
+
|
18
|
+
from openapi_client.configuration import Configuration
|
19
|
+
|
20
|
+
|
21
|
+
class OperatorEvent(object):
|
22
|
+
"""NOTE: This class is auto generated by OpenAPI Generator.
|
23
|
+
Ref: https://openapi-generator.tech
|
24
|
+
|
25
|
+
Do not edit the class manually.
|
26
|
+
"""
|
27
|
+
|
28
|
+
"""
|
29
|
+
Attributes:
|
30
|
+
openapi_types (dict): The key is attribute name
|
31
|
+
and the value is attribute type.
|
32
|
+
attribute_map (dict): The key is attribute name
|
33
|
+
and the value is json key in definition.
|
34
|
+
"""
|
35
|
+
openapi_types = {
|
36
|
+
'id': 'str',
|
37
|
+
'name': 'str',
|
38
|
+
'dataset_id': 'str',
|
39
|
+
'event_time': 'float',
|
40
|
+
'event_type': 'OperatorEventType',
|
41
|
+
'message': 'str'
|
42
|
+
}
|
43
|
+
|
44
|
+
attribute_map = {
|
45
|
+
'id': 'id',
|
46
|
+
'name': 'name',
|
47
|
+
'dataset_id': 'dataset_id',
|
48
|
+
'event_time': 'event_time',
|
49
|
+
'event_type': 'event_type',
|
50
|
+
'message': 'message'
|
51
|
+
}
|
52
|
+
|
53
|
+
def __init__(self, id=None, name=None, dataset_id=None, event_time=None, event_type=None, message=None, local_vars_configuration=None): # noqa: E501
|
54
|
+
"""OperatorEvent - a model defined in OpenAPI""" # noqa: E501
|
55
|
+
if local_vars_configuration is None:
|
56
|
+
local_vars_configuration = Configuration()
|
57
|
+
self.local_vars_configuration = local_vars_configuration
|
58
|
+
|
59
|
+
self._id = None
|
60
|
+
self._name = None
|
61
|
+
self._dataset_id = None
|
62
|
+
self._event_time = None
|
63
|
+
self._event_type = None
|
64
|
+
self._message = None
|
65
|
+
self.discriminator = None
|
66
|
+
|
67
|
+
self.id = id
|
68
|
+
self.name = name
|
69
|
+
self.dataset_id = dataset_id
|
70
|
+
self.event_time = event_time
|
71
|
+
self.event_type = event_type
|
72
|
+
self.message = message
|
73
|
+
|
74
|
+
@property
|
75
|
+
def id(self):
|
76
|
+
"""Gets the id of this OperatorEvent. # noqa: E501
|
77
|
+
|
78
|
+
|
79
|
+
:return: The id of this OperatorEvent. # noqa: E501
|
80
|
+
:rtype: str
|
81
|
+
"""
|
82
|
+
return self._id
|
83
|
+
|
84
|
+
@id.setter
|
85
|
+
def id(self, id):
|
86
|
+
"""Sets the id of this OperatorEvent.
|
87
|
+
|
88
|
+
|
89
|
+
:param id: The id of this OperatorEvent. # noqa: E501
|
90
|
+
:type: str
|
91
|
+
"""
|
92
|
+
if self.local_vars_configuration.client_side_validation and id is None: # noqa: E501
|
93
|
+
raise ValueError("Invalid value for `id`, must not be `None`") # noqa: E501
|
94
|
+
|
95
|
+
self._id = id
|
96
|
+
|
97
|
+
@property
|
98
|
+
def name(self):
|
99
|
+
"""Gets the name of this OperatorEvent. # noqa: E501
|
100
|
+
|
101
|
+
|
102
|
+
:return: The name of this OperatorEvent. # noqa: E501
|
103
|
+
:rtype: str
|
104
|
+
"""
|
105
|
+
return self._name
|
106
|
+
|
107
|
+
@name.setter
|
108
|
+
def name(self, name):
|
109
|
+
"""Sets the name of this OperatorEvent.
|
110
|
+
|
111
|
+
|
112
|
+
:param name: The name of this OperatorEvent. # noqa: E501
|
113
|
+
:type: str
|
114
|
+
"""
|
115
|
+
if self.local_vars_configuration.client_side_validation and name is None: # noqa: E501
|
116
|
+
raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501
|
117
|
+
|
118
|
+
self._name = name
|
119
|
+
|
120
|
+
@property
|
121
|
+
def dataset_id(self):
|
122
|
+
"""Gets the dataset_id of this OperatorEvent. # noqa: E501
|
123
|
+
|
124
|
+
|
125
|
+
:return: The dataset_id of this OperatorEvent. # noqa: E501
|
126
|
+
:rtype: str
|
127
|
+
"""
|
128
|
+
return self._dataset_id
|
129
|
+
|
130
|
+
@dataset_id.setter
|
131
|
+
def dataset_id(self, dataset_id):
|
132
|
+
"""Sets the dataset_id of this OperatorEvent.
|
133
|
+
|
134
|
+
|
135
|
+
:param dataset_id: The dataset_id of this OperatorEvent. # noqa: E501
|
136
|
+
:type: str
|
137
|
+
"""
|
138
|
+
if self.local_vars_configuration.client_side_validation and dataset_id is None: # noqa: E501
|
139
|
+
raise ValueError("Invalid value for `dataset_id`, must not be `None`") # noqa: E501
|
140
|
+
|
141
|
+
self._dataset_id = dataset_id
|
142
|
+
|
143
|
+
@property
|
144
|
+
def event_time(self):
|
145
|
+
"""Gets the event_time of this OperatorEvent. # noqa: E501
|
146
|
+
|
147
|
+
|
148
|
+
:return: The event_time of this OperatorEvent. # noqa: E501
|
149
|
+
:rtype: float
|
150
|
+
"""
|
151
|
+
return self._event_time
|
152
|
+
|
153
|
+
@event_time.setter
|
154
|
+
def event_time(self, event_time):
|
155
|
+
"""Sets the event_time of this OperatorEvent.
|
156
|
+
|
157
|
+
|
158
|
+
:param event_time: The event_time of this OperatorEvent. # noqa: E501
|
159
|
+
:type: float
|
160
|
+
"""
|
161
|
+
if self.local_vars_configuration.client_side_validation and event_time is None: # noqa: E501
|
162
|
+
raise ValueError("Invalid value for `event_time`, must not be `None`") # noqa: E501
|
163
|
+
|
164
|
+
self._event_time = event_time
|
165
|
+
|
166
|
+
@property
|
167
|
+
def event_type(self):
|
168
|
+
"""Gets the event_type of this OperatorEvent. # noqa: E501
|
169
|
+
|
170
|
+
|
171
|
+
:return: The event_type of this OperatorEvent. # noqa: E501
|
172
|
+
:rtype: OperatorEventType
|
173
|
+
"""
|
174
|
+
return self._event_type
|
175
|
+
|
176
|
+
@event_type.setter
|
177
|
+
def event_type(self, event_type):
|
178
|
+
"""Sets the event_type of this OperatorEvent.
|
179
|
+
|
180
|
+
|
181
|
+
:param event_type: The event_type of this OperatorEvent. # noqa: E501
|
182
|
+
:type: OperatorEventType
|
183
|
+
"""
|
184
|
+
if self.local_vars_configuration.client_side_validation and event_type is None: # noqa: E501
|
185
|
+
raise ValueError("Invalid value for `event_type`, must not be `None`") # noqa: E501
|
186
|
+
|
187
|
+
self._event_type = event_type
|
188
|
+
|
189
|
+
@property
|
190
|
+
def message(self):
|
191
|
+
"""Gets the message of this OperatorEvent. # noqa: E501
|
192
|
+
|
193
|
+
|
194
|
+
:return: The message of this OperatorEvent. # noqa: E501
|
195
|
+
:rtype: str
|
196
|
+
"""
|
197
|
+
return self._message
|
198
|
+
|
199
|
+
@message.setter
|
200
|
+
def message(self, message):
|
201
|
+
"""Sets the message of this OperatorEvent.
|
202
|
+
|
203
|
+
|
204
|
+
:param message: The message of this OperatorEvent. # noqa: E501
|
205
|
+
:type: str
|
206
|
+
"""
|
207
|
+
if self.local_vars_configuration.client_side_validation and message is None: # noqa: E501
|
208
|
+
raise ValueError("Invalid value for `message`, must not be `None`") # noqa: E501
|
209
|
+
|
210
|
+
self._message = message
|
211
|
+
|
212
|
+
def to_dict(self):
|
213
|
+
"""Returns the model properties as a dict"""
|
214
|
+
result = {}
|
215
|
+
|
216
|
+
for attr, _ in six.iteritems(self.openapi_types):
|
217
|
+
value = getattr(self, attr)
|
218
|
+
if isinstance(value, list):
|
219
|
+
result[attr] = list(map(
|
220
|
+
lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
|
221
|
+
value
|
222
|
+
))
|
223
|
+
elif hasattr(value, "to_dict"):
|
224
|
+
result[attr] = value.to_dict()
|
225
|
+
elif isinstance(value, dict):
|
226
|
+
result[attr] = dict(map(
|
227
|
+
lambda item: (item[0], item[1].to_dict())
|
228
|
+
if hasattr(item[1], "to_dict") else item,
|
229
|
+
value.items()
|
230
|
+
))
|
231
|
+
else:
|
232
|
+
result[attr] = value
|
233
|
+
|
234
|
+
return result
|
235
|
+
|
236
|
+
def to_str(self):
|
237
|
+
"""Returns the string representation of the model"""
|
238
|
+
return pprint.pformat(self.to_dict())
|
239
|
+
|
240
|
+
def __repr__(self):
|
241
|
+
"""For `print` and `pprint`"""
|
242
|
+
return self.to_str()
|
243
|
+
|
244
|
+
def __eq__(self, other):
|
245
|
+
"""Returns true if both objects are equal"""
|
246
|
+
if not isinstance(other, OperatorEvent):
|
247
|
+
return False
|
248
|
+
|
249
|
+
return self.to_dict() == other.to_dict()
|
250
|
+
|
251
|
+
def __ne__(self, other):
|
252
|
+
"""Returns true if both objects are not equal"""
|
253
|
+
if not isinstance(other, OperatorEvent):
|
254
|
+
return True
|
255
|
+
|
256
|
+
return self.to_dict() != other.to_dict()
|
@@ -0,0 +1,148 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
Managed Ray API
|
5
|
+
|
6
|
+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 0.1.0
|
9
|
+
Generated by: https://openapi-generator.tech
|
10
|
+
"""
|
11
|
+
|
12
|
+
|
13
|
+
import pprint
|
14
|
+
import re # noqa: F401
|
15
|
+
|
16
|
+
import six
|
17
|
+
|
18
|
+
from openapi_client.configuration import Configuration
|
19
|
+
|
20
|
+
|
21
|
+
class OperatorEventResponse(object):
|
22
|
+
"""NOTE: This class is auto generated by OpenAPI Generator.
|
23
|
+
Ref: https://openapi-generator.tech
|
24
|
+
|
25
|
+
Do not edit the class manually.
|
26
|
+
"""
|
27
|
+
|
28
|
+
"""
|
29
|
+
Attributes:
|
30
|
+
openapi_types (dict): The key is attribute name
|
31
|
+
and the value is attribute type.
|
32
|
+
attribute_map (dict): The key is attribute name
|
33
|
+
and the value is json key in definition.
|
34
|
+
"""
|
35
|
+
openapi_types = {
|
36
|
+
'events': 'list[OperatorEvent]',
|
37
|
+
'event_count': 'dict(str, int)'
|
38
|
+
}
|
39
|
+
|
40
|
+
attribute_map = {
|
41
|
+
'events': 'events',
|
42
|
+
'event_count': 'event_count'
|
43
|
+
}
|
44
|
+
|
45
|
+
def __init__(self, events=None, event_count=None, local_vars_configuration=None): # noqa: E501
|
46
|
+
"""OperatorEventResponse - a model defined in OpenAPI""" # noqa: E501
|
47
|
+
if local_vars_configuration is None:
|
48
|
+
local_vars_configuration = Configuration()
|
49
|
+
self.local_vars_configuration = local_vars_configuration
|
50
|
+
|
51
|
+
self._events = None
|
52
|
+
self._event_count = None
|
53
|
+
self.discriminator = None
|
54
|
+
|
55
|
+
self.events = events
|
56
|
+
self.event_count = event_count
|
57
|
+
|
58
|
+
@property
|
59
|
+
def events(self):
|
60
|
+
"""Gets the events of this OperatorEventResponse. # noqa: E501
|
61
|
+
|
62
|
+
|
63
|
+
:return: The events of this OperatorEventResponse. # noqa: E501
|
64
|
+
:rtype: list[OperatorEvent]
|
65
|
+
"""
|
66
|
+
return self._events
|
67
|
+
|
68
|
+
@events.setter
|
69
|
+
def events(self, events):
|
70
|
+
"""Sets the events of this OperatorEventResponse.
|
71
|
+
|
72
|
+
|
73
|
+
:param events: The events of this OperatorEventResponse. # noqa: E501
|
74
|
+
:type: list[OperatorEvent]
|
75
|
+
"""
|
76
|
+
if self.local_vars_configuration.client_side_validation and events is None: # noqa: E501
|
77
|
+
raise ValueError("Invalid value for `events`, must not be `None`") # noqa: E501
|
78
|
+
|
79
|
+
self._events = events
|
80
|
+
|
81
|
+
@property
|
82
|
+
def event_count(self):
|
83
|
+
"""Gets the event_count of this OperatorEventResponse. # noqa: E501
|
84
|
+
|
85
|
+
|
86
|
+
:return: The event_count of this OperatorEventResponse. # noqa: E501
|
87
|
+
:rtype: dict(str, int)
|
88
|
+
"""
|
89
|
+
return self._event_count
|
90
|
+
|
91
|
+
@event_count.setter
|
92
|
+
def event_count(self, event_count):
|
93
|
+
"""Sets the event_count of this OperatorEventResponse.
|
94
|
+
|
95
|
+
|
96
|
+
:param event_count: The event_count of this OperatorEventResponse. # noqa: E501
|
97
|
+
:type: dict(str, int)
|
98
|
+
"""
|
99
|
+
if self.local_vars_configuration.client_side_validation and event_count is None: # noqa: E501
|
100
|
+
raise ValueError("Invalid value for `event_count`, must not be `None`") # noqa: E501
|
101
|
+
|
102
|
+
self._event_count = event_count
|
103
|
+
|
104
|
+
def to_dict(self):
|
105
|
+
"""Returns the model properties as a dict"""
|
106
|
+
result = {}
|
107
|
+
|
108
|
+
for attr, _ in six.iteritems(self.openapi_types):
|
109
|
+
value = getattr(self, attr)
|
110
|
+
if isinstance(value, list):
|
111
|
+
result[attr] = list(map(
|
112
|
+
lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
|
113
|
+
value
|
114
|
+
))
|
115
|
+
elif hasattr(value, "to_dict"):
|
116
|
+
result[attr] = value.to_dict()
|
117
|
+
elif isinstance(value, dict):
|
118
|
+
result[attr] = dict(map(
|
119
|
+
lambda item: (item[0], item[1].to_dict())
|
120
|
+
if hasattr(item[1], "to_dict") else item,
|
121
|
+
value.items()
|
122
|
+
))
|
123
|
+
else:
|
124
|
+
result[attr] = value
|
125
|
+
|
126
|
+
return result
|
127
|
+
|
128
|
+
def to_str(self):
|
129
|
+
"""Returns the string representation of the model"""
|
130
|
+
return pprint.pformat(self.to_dict())
|
131
|
+
|
132
|
+
def __repr__(self):
|
133
|
+
"""For `print` and `pprint`"""
|
134
|
+
return self.to_str()
|
135
|
+
|
136
|
+
def __eq__(self, other):
|
137
|
+
"""Returns true if both objects are equal"""
|
138
|
+
if not isinstance(other, OperatorEventResponse):
|
139
|
+
return False
|
140
|
+
|
141
|
+
return self.to_dict() == other.to_dict()
|
142
|
+
|
143
|
+
def __ne__(self, other):
|
144
|
+
"""Returns true if both objects are not equal"""
|
145
|
+
if not isinstance(other, OperatorEventResponse):
|
146
|
+
return True
|
147
|
+
|
148
|
+
return self.to_dict() != other.to_dict()
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
Managed Ray API
|
5
|
+
|
6
|
+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 0.1.0
|
9
|
+
Generated by: https://openapi-generator.tech
|
10
|
+
"""
|
11
|
+
|
12
|
+
|
13
|
+
import pprint
|
14
|
+
import re # noqa: F401
|
15
|
+
|
16
|
+
import six
|
17
|
+
|
18
|
+
from openapi_client.configuration import Configuration
|
19
|
+
|
20
|
+
|
21
|
+
class OperatorEventType(object):
|
22
|
+
"""NOTE: This class is auto generated by OpenAPI Generator.
|
23
|
+
Ref: https://openapi-generator.tech
|
24
|
+
|
25
|
+
Do not edit the class manually.
|
26
|
+
"""
|
27
|
+
|
28
|
+
"""
|
29
|
+
allowed enum values
|
30
|
+
"""
|
31
|
+
UNSPECIFIED = "UNSPECIFIED"
|
32
|
+
ISSUE_DETECTION_HANGING = "ISSUE_DETECTION_HANGING"
|
33
|
+
ISSUE_DETECTION_HIGH_MEMORY = "ISSUE_DETECTION_HIGH_MEMORY"
|
34
|
+
|
35
|
+
allowable_values = [UNSPECIFIED, ISSUE_DETECTION_HANGING, ISSUE_DETECTION_HIGH_MEMORY] # noqa: E501
|
36
|
+
|
37
|
+
"""
|
38
|
+
Attributes:
|
39
|
+
openapi_types (dict): The key is attribute name
|
40
|
+
and the value is attribute type.
|
41
|
+
attribute_map (dict): The key is attribute name
|
42
|
+
and the value is json key in definition.
|
43
|
+
"""
|
44
|
+
openapi_types = {
|
45
|
+
}
|
46
|
+
|
47
|
+
attribute_map = {
|
48
|
+
}
|
49
|
+
|
50
|
+
def __init__(self, local_vars_configuration=None): # noqa: E501
|
51
|
+
"""OperatorEventType - a model defined in OpenAPI""" # noqa: E501
|
52
|
+
if local_vars_configuration is None:
|
53
|
+
local_vars_configuration = Configuration()
|
54
|
+
self.local_vars_configuration = local_vars_configuration
|
55
|
+
self.discriminator = None
|
56
|
+
|
57
|
+
def to_dict(self):
|
58
|
+
"""Returns the model properties as a dict"""
|
59
|
+
result = {}
|
60
|
+
|
61
|
+
for attr, _ in six.iteritems(self.openapi_types):
|
62
|
+
value = getattr(self, attr)
|
63
|
+
if isinstance(value, list):
|
64
|
+
result[attr] = list(map(
|
65
|
+
lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
|
66
|
+
value
|
67
|
+
))
|
68
|
+
elif hasattr(value, "to_dict"):
|
69
|
+
result[attr] = value.to_dict()
|
70
|
+
elif isinstance(value, dict):
|
71
|
+
result[attr] = dict(map(
|
72
|
+
lambda item: (item[0], item[1].to_dict())
|
73
|
+
if hasattr(item[1], "to_dict") else item,
|
74
|
+
value.items()
|
75
|
+
))
|
76
|
+
else:
|
77
|
+
result[attr] = value
|
78
|
+
|
79
|
+
return result
|
80
|
+
|
81
|
+
def to_str(self):
|
82
|
+
"""Returns the string representation of the model"""
|
83
|
+
return pprint.pformat(self.to_dict())
|
84
|
+
|
85
|
+
def __repr__(self):
|
86
|
+
"""For `print` and `pprint`"""
|
87
|
+
return self.to_str()
|
88
|
+
|
89
|
+
def __eq__(self, other):
|
90
|
+
"""Returns true if both objects are equal"""
|
91
|
+
if not isinstance(other, OperatorEventType):
|
92
|
+
return False
|
93
|
+
|
94
|
+
return self.to_dict() == other.to_dict()
|
95
|
+
|
96
|
+
def __ne__(self, other):
|
97
|
+
"""Returns true if both objects are not equal"""
|
98
|
+
if not isinstance(other, OperatorEventType):
|
99
|
+
return True
|
100
|
+
|
101
|
+
return self.to_dict() != other.to_dict()
|