From ba000f0e0d475d2dae94bfa6cf044ea7da0f52a5 Mon Sep 17 00:00:00 2001 From: Jacek Pliszka Date: Wed, 5 Oct 2016 20:43:55 +0200 Subject: [PATCH] Fix incorrect exception handling - seek on closed file When exception appeared in etree.XMLSchema after etree.parse(f) is finished - f is already closed and f.seek(0) generates another exception that hides the original one (Python 2.x) --- spyne/interface/xml_schema/_base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spyne/interface/xml_schema/_base.py b/spyne/interface/xml_schema/_base.py index 07b20cefc..740abff64 100644 --- a/spyne/interface/xml_schema/_base.py +++ b/spyne/interface/xml_schema/_base.py @@ -220,8 +220,7 @@ def build_validation_schema(self): with open(os.path.join(tmp_dir_name, "%s.xsd" % pref_tns), 'r') as f: try: - self.validation_schema = etree.XMLSchema(etree.parse(f)) - + parsed_etree = etree.parse(f) except Exception: f.seek(0) logger.error("This could be a Spyne error. Unless you're " @@ -229,6 +228,7 @@ def build_validation_schema(self): "Spyne, please open a new issue with a " "minimal test case that reproduces it.") raise + self.validation_schema = etree.XMLSchema(parsed_etree) shutil.rmtree(tmp_dir_name) logger.debug("Schema built. Removed %r" % tmp_dir_name)