Skip to content

Commit 374b35b

Browse files
committed
Use a list instead of a tuple for accepted types
1 parent acd553a commit 374b35b

File tree

6 files changed

+35
-35
lines changed

6 files changed

+35
-35
lines changed

src/zeep/xsd/elements/any.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,17 +196,17 @@ def _validate_item(self, value, render_path):
196196
# Check if we received a proper value object. If we receive the wrong
197197
# type then return a nice error message
198198
if self.restrict:
199-
expected_types = (etree._Element, dict) + self.restrict.accepted_types
199+
expected_types = [etree._Element, dict] + self.restrict.accepted_types
200200
else:
201-
expected_types = (etree._Element, dict, AnyObject)
201+
expected_types = [etree._Element, dict, AnyObject]
202202

203203
if value in (None, NotSet):
204204
if not self.is_optional:
205205
raise exceptions.ValidationError(
206206
"Missing element %s" % (self.name), path=render_path
207207
)
208208

209-
elif not isinstance(value, expected_types):
209+
elif not isinstance(value, tuple(expected_types)):
210210
type_names = ["%s.%s" % (t.__module__, t.__name__) for t in expected_types]
211211
err_message = "Any element received object of type %r, expected %s" % (
212212
type(value).__name__,

src/zeep/xsd/types/any.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,13 @@ def parse_xmlelement(
8888
)
8989

9090
if xmlelement.text:
91-
return xmlelement.text
91+
return self.pythonvalue(xmlelement.text)
9292
return children
9393

9494
# If the xsd_type is xsd:anyType then we will recurs so ignore
9595
# that.
9696
if isinstance(xsd_type, self.__class__):
97-
return xmlelement.text or None
97+
return self.pythonvalue(xmlelement.text) or None
9898

9999
return xsd_type.parse_xmlelement(xmlelement, schema, context=context)
100100

@@ -125,12 +125,12 @@ def xmlvalue(self, value):
125125
builtins.Time,
126126
]
127127
for xsd_type in available_types:
128-
if isinstance(value, xsd_type.accepted_types): # type: ignore
128+
if isinstance(value, tuple(xsd_type.accepted_types)):
129129
return xsd_type().xmlvalue(value)
130130
return str(value)
131131

132-
def pythonvalue(self, value, schema=None):
133-
return value
132+
def pythonvalue(self, value, schema=None) -> typing.Optional[str]:
133+
return value if value is not None else None
134134

135135
def signature(self, schema=None, standalone=True):
136136
return "xsd:anyType"

src/zeep/xsd/types/base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ def accept(self, value):
2727
raise NotImplementedError
2828

2929
@property
30-
def accepted_types(self):
31-
return tuple()
30+
def accepted_types(self) -> typing.List[typing.Type]:
31+
return []
3232

3333
def validate(self, value, required=False):
3434
return

src/zeep/xsd/types/builtins.py

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def _wrapper(self, value):
3838
# Primitive types
3939
class String(BuiltinType):
4040
_default_qname = xsd_ns("string")
41-
accepted_types = (str,)
41+
accepted_types = [str]
4242

4343
@check_no_collection
4444
def xmlvalue(self, value):
@@ -52,7 +52,7 @@ def pythonvalue(self, value):
5252

5353
class Boolean(BuiltinType):
5454
_default_qname = xsd_ns("boolean")
55-
accepted_types = (bool,)
55+
accepted_types = [bool]
5656

5757
@check_no_collection
5858
def xmlvalue(self, value):
@@ -68,7 +68,7 @@ def pythonvalue(self, value):
6868

6969
class Decimal(BuiltinType):
7070
_default_qname = xsd_ns("decimal")
71-
accepted_types = (_Decimal, float, str)
71+
accepted_types = [_Decimal, float, str]
7272

7373
@check_no_collection
7474
def xmlvalue(self, value):
@@ -80,7 +80,7 @@ def pythonvalue(self, value):
8080

8181
class Float(BuiltinType):
8282
_default_qname = xsd_ns("float")
83-
accepted_types = (float, _Decimal, str)
83+
accepted_types = [float, _Decimal, str]
8484

8585
def xmlvalue(self, value):
8686
return str(value).upper()
@@ -91,7 +91,7 @@ def pythonvalue(self, value):
9191

9292
class Double(BuiltinType):
9393
_default_qname = xsd_ns("double")
94-
accepted_types = (_Decimal, float, str)
94+
accepted_types = [_Decimal, float, str]
9595

9696
@check_no_collection
9797
def xmlvalue(self, value):
@@ -103,7 +103,7 @@ def pythonvalue(self, value):
103103

104104
class Duration(BuiltinType):
105105
_default_qname = xsd_ns("duration")
106-
accepted_types = (isodate.duration.Duration, str)
106+
accepted_types = [isodate.duration.Duration, str]
107107

108108
@check_no_collection
109109
def xmlvalue(self, value):
@@ -120,7 +120,7 @@ def pythonvalue(self, value):
120120

121121
class DateTime(BuiltinType):
122122
_default_qname = xsd_ns("dateTime")
123-
accepted_types = (datetime.datetime, str)
123+
accepted_types = [datetime.datetime, str]
124124

125125
@check_no_collection
126126
def xmlvalue(self, value):
@@ -155,7 +155,7 @@ def pythonvalue(self, value):
155155

156156
class Time(BuiltinType):
157157
_default_qname = xsd_ns("time")
158-
accepted_types = (datetime.time, str)
158+
accepted_types = [datetime.time, str]
159159

160160
@check_no_collection
161161
def xmlvalue(self, value):
@@ -172,7 +172,7 @@ def pythonvalue(self, value):
172172

173173
class Date(BuiltinType):
174174
_default_qname = xsd_ns("date")
175-
accepted_types = (datetime.date, str)
175+
accepted_types = [datetime.date, str]
176176

177177
@check_no_collection
178178
def xmlvalue(self, value):
@@ -192,7 +192,7 @@ class gYearMonth(BuiltinType):
192192
193193
"""
194194

195-
accepted_types = (datetime.date, str)
195+
accepted_types = [datetime.date, str]
196196
_default_qname = xsd_ns("gYearMonth")
197197
_pattern = re.compile(
198198
r"^(?P<year>-?\d{4,})-(?P<month>\d\d)(?P<timezone>Z|[-+]\d\d:?\d\d)?$"
@@ -222,7 +222,7 @@ class gYear(BuiltinType):
222222
223223
"""
224224

225-
accepted_types = (datetime.date, str)
225+
accepted_types = [datetime.date, str]
226226
_default_qname = xsd_ns("gYear")
227227
_pattern = re.compile(r"^(?P<year>-?\d{4,})(?P<timezone>Z|[-+]\d\d:?\d\d)?$")
228228

@@ -247,7 +247,7 @@ class gMonthDay(BuiltinType):
247247
248248
"""
249249

250-
accepted_types = (datetime.date, str)
250+
accepted_types = [datetime.date, str]
251251
_default_qname = xsd_ns("gMonthDay")
252252
_pattern = re.compile(
253253
r"^--(?P<month>\d\d)-(?P<day>\d\d)(?P<timezone>Z|[-+]\d\d:?\d\d)?$"
@@ -279,7 +279,7 @@ class gDay(BuiltinType):
279279
280280
"""
281281

282-
accepted_types = (datetime.date, str)
282+
accepted_types = [datetime.date, str]
283283
_default_qname = xsd_ns("gDay")
284284
_pattern = re.compile(r"^---(?P<day>\d\d)(?P<timezone>Z|[-+]\d\d:?\d\d)?$")
285285

@@ -303,7 +303,7 @@ class gMonth(BuiltinType):
303303
304304
"""
305305

306-
accepted_types = (datetime.date, str)
306+
accepted_types = [datetime.date, str]
307307
_default_qname = xsd_ns("gMonth")
308308
_pattern = re.compile(r"^--(?P<month>\d\d)(?P<timezone>Z|[-+]\d\d:?\d\d)?$")
309309

@@ -321,7 +321,7 @@ def pythonvalue(self, value):
321321

322322

323323
class HexBinary(BuiltinType):
324-
accepted_types = (str,)
324+
accepted_types = [str]
325325
_default_qname = xsd_ns("hexBinary")
326326

327327
@check_no_collection
@@ -333,7 +333,7 @@ def pythonvalue(self, value):
333333

334334

335335
class Base64Binary(BuiltinType):
336-
accepted_types = (str,)
336+
accepted_types = [str]
337337
_default_qname = xsd_ns("base64Binary")
338338

339339
@check_no_collection
@@ -345,7 +345,7 @@ def pythonvalue(self, value):
345345

346346

347347
class AnyURI(BuiltinType):
348-
accepted_types = (str,)
348+
accepted_types = [str]
349349
_default_qname = xsd_ns("anyURI")
350350

351351
@check_no_collection
@@ -357,7 +357,7 @@ def pythonvalue(self, value):
357357

358358

359359
class QName(BuiltinType):
360-
accepted_types = (str,)
360+
accepted_types = [str]
361361
_default_qname = xsd_ns("QName")
362362

363363
@check_no_collection
@@ -369,7 +369,7 @@ def pythonvalue(self, value):
369369

370370

371371
class Notation(BuiltinType):
372-
accepted_types = (str,)
372+
accepted_types = [str]
373373
_default_qname = xsd_ns("NOTATION")
374374

375375

@@ -427,7 +427,7 @@ class Entities(Entity):
427427

428428
class Integer(Decimal):
429429
_default_qname = xsd_ns("integer")
430-
accepted_types = (int, float, str) # type: ignore
430+
accepted_types = [int, float, str]
431431

432432
def xmlvalue(self, value):
433433
return str(value)

src/zeep/xsd/types/collection.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def parse_xmlelement(
8585
return self.item_class().parse_xmlelement(
8686
xmlelement, schema, allow_none, context
8787
)
88-
return xmlelement.text
88+
return str(xmlelement.text) or None
8989

9090
def pythonvalue(self, value):
9191
if self.item_class:

src/zeep/xsd/types/complex.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def __init__(
5454
self._attributes = attributes or []
5555
self._restriction = restriction
5656
self._extension = extension
57-
self._extension_types = tuple()
57+
self._extension_types: typing.List[typing.Type] = []
5858
super().__init__(qname=qname, is_global=is_global)
5959

6060
def __call__(self, *args, **kwargs):
@@ -63,8 +63,8 @@ def __call__(self, *args, **kwargs):
6363
return self._value_class(*args, **kwargs)
6464

6565
@property
66-
def accepted_types(self) -> typing.Tuple[typing.Type]:
67-
return (self._value_class,) + self._extension_types
66+
def accepted_types(self) -> typing.List[typing.Type]:
67+
return [self._value_class] + self._extension_types
6868

6969
@threaded_cached_property
7070
def _array_class(self) -> typing.Type[ArrayValue]:
@@ -269,7 +269,7 @@ def render(
269269

270270
if (
271271
len(self.elements_nested) == 1
272-
and isinstance(value, self.accepted_types)
272+
and isinstance(value, tuple(self.accepted_types))
273273
and not isinstance(value, (list, dict, CompoundValue))
274274
):
275275
element = self.elements_nested[0][1]

0 commit comments

Comments
 (0)