ultracart-rest-sdk 4.0.200__py3-none-any.whl → 4.0.201__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.
ultracart/__init__.py CHANGED
@@ -11,7 +11,7 @@
11
11
  """
12
12
 
13
13
 
14
- __version__ = "4.0.200"
14
+ __version__ = "4.0.201"
15
15
 
16
16
  # import ApiClient
17
17
  from ultracart.api_client import ApiClient
@@ -103,8 +103,11 @@ from ultracart.model.email_sending_domain_response import EmailSendingDomainResp
103
103
  from ultracart.model.email_sending_domains_response import EmailSendingDomainsResponse
104
104
  from ultracart.model.email_settings import EmailSettings
105
105
  from ultracart.model.email_settings_response import EmailSettingsResponse
106
+ from ultracart.model.email_sms_orders_response import EmailSmsOrdersResponse
106
107
  from ultracart.model.email_stat_postcard_summary_request import EmailStatPostcardSummaryRequest
107
108
  from ultracart.model.email_stat_postcard_summary_response import EmailStatPostcardSummaryResponse
109
+ from ultracart.model.email_stat_sms_summary_request import EmailStatSmsSummaryRequest
110
+ from ultracart.model.email_stat_sms_summary_response import EmailStatSmsSummaryResponse
108
111
  from ultracart.model.email_stat_summary_request import EmailStatSummaryRequest
109
112
  from ultracart.model.email_stat_summary_response import EmailStatSummaryResponse
110
113
  from ultracart.model.email_step_stat_request import EmailStepStatRequest
@@ -2689,6 +2692,72 @@ class StorefrontApi(object):
2689
2692
  },
2690
2693
  api_client=api_client
2691
2694
  )
2695
+ self.get_email_commseq_sms_stats_endpoint = _Endpoint(
2696
+ settings={
2697
+ 'response_type': (EmailStatSmsSummaryResponse,),
2698
+ 'auth': [
2699
+ 'ultraCartBrowserApiKey',
2700
+ 'ultraCartOauth',
2701
+ 'ultraCartSimpleApiKey'
2702
+ ],
2703
+ 'endpoint_path': '/storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/smsStats',
2704
+ 'operation_id': 'get_email_commseq_sms_stats',
2705
+ 'http_method': 'POST',
2706
+ 'servers': None,
2707
+ },
2708
+ params_map={
2709
+ 'all': [
2710
+ 'storefront_oid',
2711
+ 'commseq_uuid',
2712
+ 'stats_request',
2713
+ ],
2714
+ 'required': [
2715
+ 'storefront_oid',
2716
+ 'commseq_uuid',
2717
+ 'stats_request',
2718
+ ],
2719
+ 'nullable': [
2720
+ ],
2721
+ 'enum': [
2722
+ ],
2723
+ 'validation': [
2724
+ ]
2725
+ },
2726
+ root_map={
2727
+ 'validations': {
2728
+ },
2729
+ 'allowed_values': {
2730
+ },
2731
+ 'openapi_types': {
2732
+ 'storefront_oid':
2733
+ (int,),
2734
+ 'commseq_uuid':
2735
+ (str,),
2736
+ 'stats_request':
2737
+ (EmailStatSmsSummaryRequest,),
2738
+ },
2739
+ 'attribute_map': {
2740
+ 'storefront_oid': 'storefront_oid',
2741
+ 'commseq_uuid': 'commseq_uuid',
2742
+ },
2743
+ 'location_map': {
2744
+ 'storefront_oid': 'path',
2745
+ 'commseq_uuid': 'path',
2746
+ 'stats_request': 'body',
2747
+ },
2748
+ 'collection_format_map': {
2749
+ }
2750
+ },
2751
+ headers_map={
2752
+ 'accept': [
2753
+ 'application/json'
2754
+ ],
2755
+ 'content_type': [
2756
+ 'application/json'
2757
+ ]
2758
+ },
2759
+ api_client=api_client
2760
+ )
2692
2761
  self.get_email_commseq_stat_overall_endpoint = _Endpoint(
2693
2762
  settings={
2694
2763
  'response_type': (EmailCommseqStatResponse,),
@@ -5105,6 +5174,76 @@ class StorefrontApi(object):
5105
5174
  },
5106
5175
  api_client=api_client
5107
5176
  )
5177
+ self.get_email_sms_orders_endpoint = _Endpoint(
5178
+ settings={
5179
+ 'response_type': (EmailSmsOrdersResponse,),
5180
+ 'auth': [
5181
+ 'ultraCartBrowserApiKey',
5182
+ 'ultraCartOauth',
5183
+ 'ultraCartSimpleApiKey'
5184
+ ],
5185
+ 'endpoint_path': '/storefront/{storefront_oid}/email/commseqs/{commseq_uuid}/steps/{commseq_step_uuid}/sms/orders',
5186
+ 'operation_id': 'get_email_sms_orders',
5187
+ 'http_method': 'GET',
5188
+ 'servers': None,
5189
+ },
5190
+ params_map={
5191
+ 'all': [
5192
+ 'storefront_oid',
5193
+ 'commseq_uuid',
5194
+ 'commseq_step_uuid',
5195
+ 'days',
5196
+ ],
5197
+ 'required': [
5198
+ 'storefront_oid',
5199
+ 'commseq_uuid',
5200
+ 'commseq_step_uuid',
5201
+ ],
5202
+ 'nullable': [
5203
+ ],
5204
+ 'enum': [
5205
+ ],
5206
+ 'validation': [
5207
+ ]
5208
+ },
5209
+ root_map={
5210
+ 'validations': {
5211
+ },
5212
+ 'allowed_values': {
5213
+ },
5214
+ 'openapi_types': {
5215
+ 'storefront_oid':
5216
+ (int,),
5217
+ 'commseq_uuid':
5218
+ (str,),
5219
+ 'commseq_step_uuid':
5220
+ (str,),
5221
+ 'days':
5222
+ (int,),
5223
+ },
5224
+ 'attribute_map': {
5225
+ 'storefront_oid': 'storefront_oid',
5226
+ 'commseq_uuid': 'commseq_uuid',
5227
+ 'commseq_step_uuid': 'commseq_step_uuid',
5228
+ 'days': 'days',
5229
+ },
5230
+ 'location_map': {
5231
+ 'storefront_oid': 'path',
5232
+ 'commseq_uuid': 'path',
5233
+ 'commseq_step_uuid': 'path',
5234
+ 'days': 'query',
5235
+ },
5236
+ 'collection_format_map': {
5237
+ }
5238
+ },
5239
+ headers_map={
5240
+ 'accept': [
5241
+ 'application/json'
5242
+ ],
5243
+ 'content_type': [],
5244
+ },
5245
+ api_client=api_client
5246
+ )
5108
5247
  self.get_email_template_endpoint = _Endpoint(
5109
5248
  settings={
5110
5249
  'response_type': (EmailTemplate,),
@@ -14141,6 +14280,96 @@ class StorefrontApi(object):
14141
14280
  commseq_postcard_uuid
14142
14281
  return self.get_email_commseq_postcard_tracking_endpoint.call_with_http_info(**kwargs)
14143
14282
 
14283
+ def get_email_commseq_sms_stats(
14284
+ self,
14285
+ storefront_oid,
14286
+ commseq_uuid,
14287
+ stats_request,
14288
+ **kwargs
14289
+ ):
14290
+ """Get email communication sequence sms stats # noqa: E501
14291
+
14292
+ This method makes a synchronous HTTP request by default. To make an
14293
+ asynchronous HTTP request, please pass async_req=True
14294
+
14295
+ >>> thread = api.get_email_commseq_sms_stats(storefront_oid, commseq_uuid, stats_request, async_req=True)
14296
+ >>> result = thread.get()
14297
+
14298
+ Args:
14299
+ storefront_oid (int):
14300
+ commseq_uuid (str):
14301
+ stats_request (EmailStatSmsSummaryRequest): StatsRequest
14302
+
14303
+ Keyword Args:
14304
+ _return_http_data_only (bool): response data without head status
14305
+ code and headers. Default is True.
14306
+ _preload_content (bool): if False, the urllib3.HTTPResponse object
14307
+ will be returned without reading/decoding response data.
14308
+ Default is True.
14309
+ _request_timeout (int/float/tuple): timeout setting for this request. If
14310
+ one number provided, it will be total request timeout. It can also
14311
+ be a pair (tuple) of (connection, read) timeouts.
14312
+ Default is None.
14313
+ _check_input_type (bool): specifies if type checking
14314
+ should be done one the data sent to the server.
14315
+ Default is True.
14316
+ _check_return_type (bool): specifies if type checking
14317
+ should be done one the data received from the server.
14318
+ Default is True.
14319
+ _spec_property_naming (bool): True if the variable names in the input data
14320
+ are serialized names, as specified in the OpenAPI document.
14321
+ False if the variable names in the input data
14322
+ are pythonic names, e.g. snake case (default)
14323
+ _content_type (str/None): force body content-type.
14324
+ Default is None and content-type will be predicted by allowed
14325
+ content-types and body.
14326
+ _host_index (int/None): specifies the index of the server
14327
+ that we want to use.
14328
+ Default is read from the configuration.
14329
+ _request_auths (list): set to override the auth_settings for an a single
14330
+ request; this effectively ignores the authentication
14331
+ in the spec for a single request.
14332
+ Default is None
14333
+ async_req (bool): execute request asynchronously
14334
+
14335
+ Returns:
14336
+ EmailStatSmsSummaryResponse
14337
+ If the method is called asynchronously, returns the request
14338
+ thread.
14339
+ """
14340
+ kwargs['async_req'] = kwargs.get(
14341
+ 'async_req', False
14342
+ )
14343
+ kwargs['_return_http_data_only'] = kwargs.get(
14344
+ '_return_http_data_only', True
14345
+ )
14346
+ kwargs['_preload_content'] = kwargs.get(
14347
+ '_preload_content', True
14348
+ )
14349
+ kwargs['_request_timeout'] = kwargs.get(
14350
+ '_request_timeout', None
14351
+ )
14352
+ kwargs['_check_input_type'] = kwargs.get(
14353
+ '_check_input_type', True
14354
+ )
14355
+ kwargs['_check_return_type'] = kwargs.get(
14356
+ '_check_return_type', True
14357
+ )
14358
+ kwargs['_spec_property_naming'] = kwargs.get(
14359
+ '_spec_property_naming', False
14360
+ )
14361
+ kwargs['_content_type'] = kwargs.get(
14362
+ '_content_type')
14363
+ kwargs['_host_index'] = kwargs.get('_host_index')
14364
+ kwargs['_request_auths'] = kwargs.get('_request_auths', None)
14365
+ kwargs['storefront_oid'] = \
14366
+ storefront_oid
14367
+ kwargs['commseq_uuid'] = \
14368
+ commseq_uuid
14369
+ kwargs['stats_request'] = \
14370
+ stats_request
14371
+ return self.get_email_commseq_sms_stats_endpoint.call_with_http_info(**kwargs)
14372
+
14144
14373
  def get_email_commseq_stat_overall(
14145
14374
  self,
14146
14375
  storefront_oid,
@@ -17636,6 +17865,97 @@ class StorefrontApi(object):
17636
17865
  storefront_oid
17637
17866
  return self.get_email_settings_endpoint.call_with_http_info(**kwargs)
17638
17867
 
17868
+ def get_email_sms_orders(
17869
+ self,
17870
+ storefront_oid,
17871
+ commseq_uuid,
17872
+ commseq_step_uuid,
17873
+ **kwargs
17874
+ ):
17875
+ """Get email sms orders # noqa: E501
17876
+
17877
+ This method makes a synchronous HTTP request by default. To make an
17878
+ asynchronous HTTP request, please pass async_req=True
17879
+
17880
+ >>> thread = api.get_email_sms_orders(storefront_oid, commseq_uuid, commseq_step_uuid, async_req=True)
17881
+ >>> result = thread.get()
17882
+
17883
+ Args:
17884
+ storefront_oid (int):
17885
+ commseq_uuid (str):
17886
+ commseq_step_uuid (str):
17887
+
17888
+ Keyword Args:
17889
+ days (int): [optional]
17890
+ _return_http_data_only (bool): response data without head status
17891
+ code and headers. Default is True.
17892
+ _preload_content (bool): if False, the urllib3.HTTPResponse object
17893
+ will be returned without reading/decoding response data.
17894
+ Default is True.
17895
+ _request_timeout (int/float/tuple): timeout setting for this request. If
17896
+ one number provided, it will be total request timeout. It can also
17897
+ be a pair (tuple) of (connection, read) timeouts.
17898
+ Default is None.
17899
+ _check_input_type (bool): specifies if type checking
17900
+ should be done one the data sent to the server.
17901
+ Default is True.
17902
+ _check_return_type (bool): specifies if type checking
17903
+ should be done one the data received from the server.
17904
+ Default is True.
17905
+ _spec_property_naming (bool): True if the variable names in the input data
17906
+ are serialized names, as specified in the OpenAPI document.
17907
+ False if the variable names in the input data
17908
+ are pythonic names, e.g. snake case (default)
17909
+ _content_type (str/None): force body content-type.
17910
+ Default is None and content-type will be predicted by allowed
17911
+ content-types and body.
17912
+ _host_index (int/None): specifies the index of the server
17913
+ that we want to use.
17914
+ Default is read from the configuration.
17915
+ _request_auths (list): set to override the auth_settings for an a single
17916
+ request; this effectively ignores the authentication
17917
+ in the spec for a single request.
17918
+ Default is None
17919
+ async_req (bool): execute request asynchronously
17920
+
17921
+ Returns:
17922
+ EmailSmsOrdersResponse
17923
+ If the method is called asynchronously, returns the request
17924
+ thread.
17925
+ """
17926
+ kwargs['async_req'] = kwargs.get(
17927
+ 'async_req', False
17928
+ )
17929
+ kwargs['_return_http_data_only'] = kwargs.get(
17930
+ '_return_http_data_only', True
17931
+ )
17932
+ kwargs['_preload_content'] = kwargs.get(
17933
+ '_preload_content', True
17934
+ )
17935
+ kwargs['_request_timeout'] = kwargs.get(
17936
+ '_request_timeout', None
17937
+ )
17938
+ kwargs['_check_input_type'] = kwargs.get(
17939
+ '_check_input_type', True
17940
+ )
17941
+ kwargs['_check_return_type'] = kwargs.get(
17942
+ '_check_return_type', True
17943
+ )
17944
+ kwargs['_spec_property_naming'] = kwargs.get(
17945
+ '_spec_property_naming', False
17946
+ )
17947
+ kwargs['_content_type'] = kwargs.get(
17948
+ '_content_type')
17949
+ kwargs['_host_index'] = kwargs.get('_host_index')
17950
+ kwargs['_request_auths'] = kwargs.get('_request_auths', None)
17951
+ kwargs['storefront_oid'] = \
17952
+ storefront_oid
17953
+ kwargs['commseq_uuid'] = \
17954
+ commseq_uuid
17955
+ kwargs['commseq_step_uuid'] = \
17956
+ commseq_step_uuid
17957
+ return self.get_email_sms_orders_endpoint.call_with_http_info(**kwargs)
17958
+
17639
17959
  def get_email_template(
17640
17960
  self,
17641
17961
  storefront_oid,
ultracart/api_client.py CHANGED
@@ -77,7 +77,7 @@ class ApiClient(object):
77
77
  self.default_headers[header_name] = header_value
78
78
  self.cookie = cookie
79
79
  # Set default User-Agent.
80
- self.user_agent = 'OpenAPI-Generator/4.0.200/python'
80
+ self.user_agent = 'OpenAPI-Generator/4.0.201/python'
81
81
 
82
82
  def __enter__(self):
83
83
  return self
@@ -422,7 +422,7 @@ conf = ultracart.Configuration(
422
422
  "OS: {env}\n"\
423
423
  "Python Version: {pyversion}\n"\
424
424
  "Version of the API: 2.0.0\n"\
425
- "SDK Package Version: 4.0.200".\
425
+ "SDK Package Version: 4.0.201".\
426
426
  format(env=sys.platform, pyversion=sys.version)
427
427
 
428
428
  def get_host_settings(self):
@@ -0,0 +1,282 @@
1
+ """
2
+ UltraCart Rest API V2
3
+
4
+ UltraCart REST API Version 2 # noqa: E501
5
+
6
+ The version of the OpenAPI document: 2.0.0
7
+ Contact: support@ultracart.com
8
+ Generated by: https://openapi-generator.tech
9
+ """
10
+
11
+
12
+ import re # noqa: F401
13
+ import sys # noqa: F401
14
+
15
+ from ultracart.model_utils import ( # noqa: F401
16
+ ApiTypeError,
17
+ ModelComposed,
18
+ ModelNormal,
19
+ ModelSimple,
20
+ cached_property,
21
+ change_keys_js_to_python,
22
+ convert_js_args_to_python_args,
23
+ date,
24
+ datetime,
25
+ file_type,
26
+ none_type,
27
+ validate_get_composed_info,
28
+ OpenApiModel
29
+ )
30
+ from ultracart.exceptions import ApiAttributeError
31
+
32
+
33
+ def lazy_import():
34
+ from ultracart.model.currency import Currency
35
+ globals()['Currency'] = Currency
36
+
37
+
38
+ class EmailSmsOrder(ModelNormal):
39
+ """NOTE: This class is auto generated by OpenAPI Generator.
40
+ Ref: https://openapi-generator.tech
41
+
42
+ Do not edit the class manually.
43
+
44
+ Attributes:
45
+ allowed_values (dict): The key is the tuple path to the attribute
46
+ and the for var_name this is (var_name,). The value is a dict
47
+ with a capitalized key describing the allowed value and an allowed
48
+ value. These dicts store the allowed enum values.
49
+ attribute_map (dict): The key is attribute name
50
+ and the value is json key in definition.
51
+ discriminator_value_class_map (dict): A dict to go from the discriminator
52
+ variable value to the discriminator class name.
53
+ validations (dict): The key is the tuple path to the attribute
54
+ and the for var_name this is (var_name,). The value is a dict
55
+ that stores validations for max_length, min_length, max_items,
56
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
57
+ inclusive_minimum, and regex.
58
+ additional_properties_type (tuple): A tuple of classes accepted
59
+ as additional properties values.
60
+ """
61
+
62
+ allowed_values = {
63
+ }
64
+
65
+ validations = {
66
+ }
67
+
68
+ @cached_property
69
+ def additional_properties_type():
70
+ """
71
+ This must be a method because a model may have properties that are
72
+ of type self, this must run after the class is loaded
73
+ """
74
+ lazy_import()
75
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
76
+
77
+ _nullable = False
78
+
79
+ @cached_property
80
+ def openapi_types():
81
+ """
82
+ This must be a method because a model may have properties that are
83
+ of type self, this must run after the class is loaded
84
+
85
+ Returns
86
+ openapi_types (dict): The key is attribute name
87
+ and the value is attribute type.
88
+ """
89
+ lazy_import()
90
+ return {
91
+ 'email': (str,), # noqa: E501
92
+ 'order_dts': (str,), # noqa: E501
93
+ 'order_id': (str,), # noqa: E501
94
+ 'total': (Currency,), # noqa: E501
95
+ }
96
+
97
+ @cached_property
98
+ def discriminator():
99
+ return None
100
+
101
+
102
+ attribute_map = {
103
+ 'email': 'email', # noqa: E501
104
+ 'order_dts': 'order_dts', # noqa: E501
105
+ 'order_id': 'order_id', # noqa: E501
106
+ 'total': 'total', # noqa: E501
107
+ }
108
+
109
+ read_only_vars = {
110
+ }
111
+
112
+ _composed_schemas = {}
113
+
114
+ @classmethod
115
+ @convert_js_args_to_python_args
116
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
117
+ """EmailSmsOrder - a model defined in OpenAPI
118
+
119
+ Keyword Args:
120
+ _check_type (bool): if True, values for parameters in openapi_types
121
+ will be type checked and a TypeError will be
122
+ raised if the wrong type is input.
123
+ Defaults to True
124
+ _path_to_item (tuple/list): This is a list of keys or values to
125
+ drill down to the model in received_data
126
+ when deserializing a response
127
+ _spec_property_naming (bool): True if the variable names in the input data
128
+ are serialized names, as specified in the OpenAPI document.
129
+ False if the variable names in the input data
130
+ are pythonic names, e.g. snake case (default)
131
+ _configuration (Configuration): the instance to use when
132
+ deserializing a file_type parameter.
133
+ If passed, type conversion is attempted
134
+ If omitted no type conversion is done.
135
+ _visited_composed_classes (tuple): This stores a tuple of
136
+ classes that we have traveled through so that
137
+ if we see that class again we will not use its
138
+ discriminator again.
139
+ When traveling through a discriminator, the
140
+ composed schema that is
141
+ is traveled through is added to this set.
142
+ For example if Animal has a discriminator
143
+ petType and we pass in "Dog", and the class Dog
144
+ allOf includes Animal, we move through Animal
145
+ once using the discriminator, and pick Dog.
146
+ Then in Dog, we will make an instance of the
147
+ Animal class but this time we won't travel
148
+ through its discriminator because we passed in
149
+ _visited_composed_classes = (Animal,)
150
+ email (str): email. [optional] # noqa: E501
151
+ order_dts (str): order_dts. [optional] # noqa: E501
152
+ order_id (str): order_id. [optional] # noqa: E501
153
+ total (Currency): [optional] # noqa: E501
154
+ """
155
+
156
+ _check_type = kwargs.pop('_check_type', True)
157
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
158
+ _path_to_item = kwargs.pop('_path_to_item', ())
159
+ _configuration = kwargs.pop('_configuration', None)
160
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
161
+
162
+ self = super(OpenApiModel, cls).__new__(cls)
163
+
164
+ if args:
165
+ for arg in args:
166
+ if isinstance(arg, dict):
167
+ kwargs.update(arg)
168
+ else:
169
+ raise ApiTypeError(
170
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
171
+ args,
172
+ self.__class__.__name__,
173
+ ),
174
+ path_to_item=_path_to_item,
175
+ valid_classes=(self.__class__,),
176
+ )
177
+
178
+ self._data_store = {}
179
+ self._check_type = _check_type
180
+ self._spec_property_naming = _spec_property_naming
181
+ self._path_to_item = _path_to_item
182
+ self._configuration = _configuration
183
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
184
+
185
+ for var_name, var_value in kwargs.items():
186
+ if var_name not in self.attribute_map and \
187
+ self._configuration is not None and \
188
+ self._configuration.discard_unknown_keys and \
189
+ self.additional_properties_type is None:
190
+ # discard variable.
191
+ continue
192
+ setattr(self, var_name, var_value)
193
+ return self
194
+
195
+ required_properties = set([
196
+ '_data_store',
197
+ '_check_type',
198
+ '_spec_property_naming',
199
+ '_path_to_item',
200
+ '_configuration',
201
+ '_visited_composed_classes',
202
+ ])
203
+
204
+ @convert_js_args_to_python_args
205
+ def __init__(self, *args, **kwargs): # noqa: E501
206
+ """EmailSmsOrder - a model defined in OpenAPI
207
+
208
+ Keyword Args:
209
+ _check_type (bool): if True, values for parameters in openapi_types
210
+ will be type checked and a TypeError will be
211
+ raised if the wrong type is input.
212
+ Defaults to True
213
+ _path_to_item (tuple/list): This is a list of keys or values to
214
+ drill down to the model in received_data
215
+ when deserializing a response
216
+ _spec_property_naming (bool): True if the variable names in the input data
217
+ are serialized names, as specified in the OpenAPI document.
218
+ False if the variable names in the input data
219
+ are pythonic names, e.g. snake case (default)
220
+ _configuration (Configuration): the instance to use when
221
+ deserializing a file_type parameter.
222
+ If passed, type conversion is attempted
223
+ If omitted no type conversion is done.
224
+ _visited_composed_classes (tuple): This stores a tuple of
225
+ classes that we have traveled through so that
226
+ if we see that class again we will not use its
227
+ discriminator again.
228
+ When traveling through a discriminator, the
229
+ composed schema that is
230
+ is traveled through is added to this set.
231
+ For example if Animal has a discriminator
232
+ petType and we pass in "Dog", and the class Dog
233
+ allOf includes Animal, we move through Animal
234
+ once using the discriminator, and pick Dog.
235
+ Then in Dog, we will make an instance of the
236
+ Animal class but this time we won't travel
237
+ through its discriminator because we passed in
238
+ _visited_composed_classes = (Animal,)
239
+ email (str): email. [optional] # noqa: E501
240
+ order_dts (str): order_dts. [optional] # noqa: E501
241
+ order_id (str): order_id. [optional] # noqa: E501
242
+ total (Currency): [optional] # noqa: E501
243
+ """
244
+
245
+ _check_type = kwargs.pop('_check_type', True)
246
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
247
+ _path_to_item = kwargs.pop('_path_to_item', ())
248
+ _configuration = kwargs.pop('_configuration', None)
249
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
250
+
251
+ if args:
252
+ for arg in args:
253
+ if isinstance(arg, dict):
254
+ kwargs.update(arg)
255
+ else:
256
+ raise ApiTypeError(
257
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
258
+ args,
259
+ self.__class__.__name__,
260
+ ),
261
+ path_to_item=_path_to_item,
262
+ valid_classes=(self.__class__,),
263
+ )
264
+
265
+ self._data_store = {}
266
+ self._check_type = _check_type
267
+ self._spec_property_naming = _spec_property_naming
268
+ self._path_to_item = _path_to_item
269
+ self._configuration = _configuration
270
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
271
+
272
+ for var_name, var_value in kwargs.items():
273
+ if var_name not in self.attribute_map and \
274
+ self._configuration is not None and \
275
+ self._configuration.discard_unknown_keys and \
276
+ self.additional_properties_type is None:
277
+ # discard variable.
278
+ continue
279
+ setattr(self, var_name, var_value)
280
+ if var_name in self.read_only_vars:
281
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
282
+ f"class with read only attributes.")