diff --git a/CHANGELOG.rst b/CHANGELOG.rst index b89ce95..b8751c4 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,8 +2,10 @@ CHANGELOG ********* -`v1.3.0`_ (TBD) -=============== +`v1.3.0`_ (2019-10-07) +====================== +* Improved XSD type matching using paths +* Cached parent path for XPathContext (only Python 3) * Improve typed selection with TypedAttribute and TypedElement named tuples * Add iter_results to XPathContext * Fix descendant shortcut operator '//' @@ -157,4 +159,4 @@ CHANGELOG .. _v1.1.9: https://github.com/brunato/elementpath/compare/v1.1.8...v1.1.9 .. _v1.2.0: https://github.com/brunato/elementpath/compare/v1.1.9...v1.2.0 .. _v1.2.1: https://github.com/brunato/elementpath/compare/v1.2.0...v1.2.1 -.. _v1.2.2: https://github.com/brunato/elementpath/compare/v1.2.1...v1.2.2 +.. _v1.3.0: https://github.com/brunato/elementpath/compare/v1.2.1...v1.3.0 diff --git a/elementpath/xpath1_parser.py b/elementpath/xpath1_parser.py index 95a77aa..9b1658c 100644 --- a/elementpath/xpath1_parser.py +++ b/elementpath/xpath1_parser.py @@ -519,15 +519,17 @@ def select(self, context=None): @method(infix('or', bp=20)) def evaluate(self, context=None): if context is None: - return bool(self[0].evaluate() or self[1].evaluate()) - return bool(self[0].evaluate(context.copy()) or self[1].evaluate(context.copy())) + return self.boolean_value(self[0].evaluate()) or self.boolean_value(self[1].evaluate()) + return self.boolean_value(self[0].evaluate(context.copy())) or \ + self.boolean_value(self[1].evaluate(context.copy())) @method(infix('and', bp=25)) def evaluate(self, context=None): if context is None: - return bool(self[0].evaluate() and self[1].evaluate()) - return bool(self[0].evaluate(context.copy()) and self[1].evaluate(context.copy())) + return self.boolean_value(self[0].evaluate()) and self.boolean_value(self[1].evaluate()) + return self.boolean_value(self[0].evaluate(context.copy())) and \ + self.boolean_value(self[1].evaluate(context.copy())) @method(infix('=', bp=30))