Fix typed selection for token '(name)'

- Check the type but yield the element
This commit is contained in:
Davide Brunato 2019-09-10 21:58:34 +02:00
parent 04258f5c43
commit 52d3220f8d
3 changed files with 9 additions and 4 deletions

View File

@ -6,6 +6,7 @@ CHANGELOG
===============
* Fix descendant shortcut operator '//'
* Fix text() function
* Fix typed select of '(name)' token
`v1.2.1`_ (2019-08-30)
======================

View File

@ -304,11 +304,13 @@ def select(self, context=None):
yield self.xsd_type.decode(item[1])
elif is_element_node(item, name):
if self.xsd_type.is_simple():
yield self.xsd_type.decode(item)
self.xsd_type.validate(item.text)
else:
yield item
self.xsd_type.validate(item)
yield item
except (TypeError, ValueError):
self.wrong_sequence_type("Type %r does not match sequence type of %r" % (self.xsd_type, item))
msg = "Type {!r} does not match sequence type of {!r}"
self.wrong_sequence_type(msg.format(self.xsd_type, item))
###

View File

@ -22,7 +22,9 @@ whitelist_externals = make
commands = python tests/test_elementpath.py
[testenv:py38]
deps = xmlschema~=1.0.13
deps =
lxml==4.3.5
xmlschema~=1.0.13
commands = python -m unittest
[testenv:docs]