From 31f0ca481d0f5e0e1712ee9c7ea46450ab5a505c Mon Sep 17 00:00:00 2001 From: Dave Kuhlman <dkuhlman@davekuhlman.org> Date: Mon, 16 Jan 2017 16:01:58 -0800 Subject: [PATCH] Fixed conversion of unicode that causes an error on Python 2 --- README | 3 ++ generateDS.html | 4 +- generateDS.py | 15 ++++-- generateds_gui_notes.html | 4 +- librarytemplate_howto.html | 4 +- tests/OnePer/oneperType00_2One.py | 9 ++++ tests/OnePer/oneperType01_2One.py | 9 ++++ tests/OnePer/oneperType02_2One.py | 9 ++++ tests/OnePer/oneperType03_2One.py | 9 ++++ tests/abstract_type1_sup.py | 9 ++++ tests/annotations1_sup.py | 9 ++++ tests/anonymous_type1_sup.py | 9 ++++ tests/anysimpletype1_sup.py | 11 ++++- tests/anywildcard1_sup.py | 9 ++++ tests/attr_groups1_sup.py | 9 ++++ tests/catalogtest1_sup.py | 9 ++++ tests/cdata1_sup.py | 9 ++++ tests/cleanupname1_sup.py | 9 ++++ tests/defaults_cases1_sup.py | 9 ++++ tests/defaults_coverage1_sup.py | 9 ++++ tests/extensions1_sup.py | 27 ++++++---- tests/ipo1_sup.py | 9 ++++ tests/ipo2_sup.py | 9 ++++ tests/mapcleanname1_sup.py | 9 ++++ tests/nested_def1_sup.py | 9 ++++ tests/out1_sup.py | 11 ++++- tests/people_procincl1_sup.py | 11 ++++- tests/prefix_classname1_sup.py | 11 ++++- tests/recursive_simpletype1_sup.py | 9 ++++ tests/reference_simpletype1_sup.py | 9 ++++ tests/rem_dup_elems1_sup.py | 9 ++++ tests/simplecontent_restriction1_sup.py | 15 ++++-- tests/simpletype_memberspecs1_sup.py | 13 ++++- tests/simpletypes_other1_sup.py | 9 ++++ tests/to_etree1_sup.py | 9 ++++ tests/validate_simpletypes1_sup.py | 9 ++++ tests/validate_simpletypes1_warnings.txt | 60 +++++++++++------------ tests/validate_simpletypes2_sup.py | 9 ++++ tutorial/generateds_tutorial.html | 4 +- tutorial/generateds_tutorial.zip | Bin 48767 -> 48767 bytes 40 files changed, 358 insertions(+), 60 deletions(-) diff --git a/README b/README index 09731fd..3c2805e 100644 --- a/README +++ b/README @@ -155,6 +155,9 @@ Version 2.24b (01/02/2017) this. - Modified the Django support (in ./django/) so that it will run under Python 3. Thanks to Shane Rigby for reporting this problem. +- Fixed an error in encoding unicode valueOf_ for <xs:complexType + <xs:simpleContent> <xs:extension base="xs:string">. Thanks to + Andrii Iudin for catching this. Version 2.24a (11/16/2016) diff --git a/generateDS.html b/generateDS.html index b7128f5..257e460 100644 --- a/generateDS.html +++ b/generateDS.html @@ -229,7 +229,7 @@ They are used by updateversion.py. --> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">date:</th><td class="field-body">January 05, 2017</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">January 16, 2017</td> </tr> </tbody> </table> @@ -3184,7 +3184,7 @@ following among others:</p> <div class="footer"> <hr class="footer" /> <a class="reference external" href="generateDS.txt">View document source</a>. -Generated on: 2017-01-05 20:00 UTC. +Generated on: 2017-01-17 00:01 UTC. Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. </div> diff --git a/generateDS.py b/generateDS.py index 00d97cd..f836d1c 100755 --- a/generateDS.py +++ b/generateDS.py @@ -2867,10 +2867,8 @@ def generateExportFn(wrt, prefix, element, namespace, nameSpacesDef): if element.getSimpleContent(): wrt(" outfile.write('>')\n") if not element.isMixed(): - wrt(" outfile.write((quote_xml(self.valueOf_) " - "if type(self.valueOf_) is str else " - "self.gds_encode(str(self.valueOf_))))\n" - ) + wrt(" outfile.write(self.convert_unicode(" + "self.valueOf_))\n") else: wrt(" outfile.write('>%s' % (eol_, ))\n") wrt(" self.exportChildren(outfile, level + 1, " @@ -5334,6 +5332,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/generateds_gui_notes.html b/generateds_gui_notes.html index d95f960..5593b50 100644 --- a/generateds_gui_notes.html +++ b/generateds_gui_notes.html @@ -229,7 +229,7 @@ They are used by updateversion.py. --> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">date:</th><td class="field-body">January 05, 2017</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">January 16, 2017</td> </tr> </tbody> </table> @@ -401,7 +401,7 @@ $ mv generateds_gui.mo locale/ru/LC_MESSAGES/ <div class="footer"> <hr class="footer" /> <a class="reference external" href="generateds_gui_notes.txt">View document source</a>. -Generated on: 2017-01-05 20:00 UTC. +Generated on: 2017-01-17 00:01 UTC. Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. </div> diff --git a/librarytemplate_howto.html b/librarytemplate_howto.html index 9fcc10e..47bc84a 100644 --- a/librarytemplate_howto.html +++ b/librarytemplate_howto.html @@ -226,7 +226,7 @@ dkuhlman (at) davekuhlman (dot) org <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">date:</th><td class="field-body">January 05, 2017</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">January 16, 2017</td> </tr> </tbody> </table> @@ -380,7 +380,7 @@ this command for your needs. For example, you may need to use <div class="footer"> <hr class="footer" /> <a class="reference external" href="librarytemplate_howto.txt">View document source</a>. -Generated on: 2017-01-05 20:00 UTC. +Generated on: 2017-01-17 00:01 UTC. Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. </div> diff --git a/tests/OnePer/oneperType00_2One.py b/tests/OnePer/oneperType00_2One.py index 1f3eab9..55efc42 100644 --- a/tests/OnePer/oneperType00_2One.py +++ b/tests/OnePer/oneperType00_2One.py @@ -370,6 +370,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/OnePer/oneperType01_2One.py b/tests/OnePer/oneperType01_2One.py index 3c0ff82..efbcc68 100644 --- a/tests/OnePer/oneperType01_2One.py +++ b/tests/OnePer/oneperType01_2One.py @@ -370,6 +370,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/OnePer/oneperType02_2One.py b/tests/OnePer/oneperType02_2One.py index d3cad9d..04ac805 100644 --- a/tests/OnePer/oneperType02_2One.py +++ b/tests/OnePer/oneperType02_2One.py @@ -370,6 +370,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/OnePer/oneperType03_2One.py b/tests/OnePer/oneperType03_2One.py index a1d3637..2af4390 100644 --- a/tests/OnePer/oneperType03_2One.py +++ b/tests/OnePer/oneperType03_2One.py @@ -370,6 +370,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/abstract_type1_sup.py b/tests/abstract_type1_sup.py index 7919997..47ddb55 100644 --- a/tests/abstract_type1_sup.py +++ b/tests/abstract_type1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/annotations1_sup.py b/tests/annotations1_sup.py index 492423d..d9ef298 100644 --- a/tests/annotations1_sup.py +++ b/tests/annotations1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/anonymous_type1_sup.py b/tests/anonymous_type1_sup.py index 50667a5..15998f8 100644 --- a/tests/anonymous_type1_sup.py +++ b/tests/anonymous_type1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/anysimpletype1_sup.py b/tests/anysimpletype1_sup.py index fd90c17..8fc85d5 100644 --- a/tests/anysimpletype1_sup.py +++ b/tests/anysimpletype1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' @@ -779,7 +788,7 @@ class cimAnySimpleType(GeneratedsSuper): self.exportAttributes(outfile, level, already_processed, namespace_, name_='cimAnySimpleType') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='cimAnySimpleType', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: diff --git a/tests/anywildcard1_sup.py b/tests/anywildcard1_sup.py index 955f656..76cc49a 100644 --- a/tests/anywildcard1_sup.py +++ b/tests/anywildcard1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/attr_groups1_sup.py b/tests/attr_groups1_sup.py index 17fff17..085a6e1 100644 --- a/tests/attr_groups1_sup.py +++ b/tests/attr_groups1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/catalogtest1_sup.py b/tests/catalogtest1_sup.py index 3d948ca..a8dcc9a 100644 --- a/tests/catalogtest1_sup.py +++ b/tests/catalogtest1_sup.py @@ -370,6 +370,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/cdata1_sup.py b/tests/cdata1_sup.py index 408e230..3c95e19 100644 --- a/tests/cdata1_sup.py +++ b/tests/cdata1_sup.py @@ -370,6 +370,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/cleanupname1_sup.py b/tests/cleanupname1_sup.py index 9638243..0217e35 100644 --- a/tests/cleanupname1_sup.py +++ b/tests/cleanupname1_sup.py @@ -370,6 +370,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/defaults_cases1_sup.py b/tests/defaults_cases1_sup.py index 16925d8..29d55ed 100644 --- a/tests/defaults_cases1_sup.py +++ b/tests/defaults_cases1_sup.py @@ -368,6 +368,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/defaults_coverage1_sup.py b/tests/defaults_coverage1_sup.py index 641b237..291585f 100644 --- a/tests/defaults_coverage1_sup.py +++ b/tests/defaults_coverage1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/extensions1_sup.py b/tests/extensions1_sup.py index 75907f8..16f648c 100644 --- a/tests/extensions1_sup.py +++ b/tests/extensions1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' @@ -697,7 +706,7 @@ class SpecialDate(GeneratedsSuper): self.exportAttributes(outfile, level, already_processed, namespace_, name_='SpecialDate') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='SpecialDate', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: @@ -772,7 +781,7 @@ class ExtremeDate(GeneratedsSuper): self.exportAttributes(outfile, level, already_processed, namespace_, name_='ExtremeDate') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='ExtremeDate', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: @@ -847,7 +856,7 @@ class singleExtremeDate(GeneratedsSuper): self.exportAttributes(outfile, level, already_processed, namespace_, name_='singleExtremeDate') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='singleExtremeDate', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: @@ -1253,7 +1262,7 @@ class BaseType(GeneratedsSuper): self.exportAttributes(outfile, level, already_processed, namespace_, name_='BaseType') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='BaseType', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: @@ -1349,7 +1358,7 @@ class DerivedType(BaseType): self.exportAttributes(outfile, level, already_processed, namespace_, name_='DerivedType') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='DerivedType', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: @@ -1434,7 +1443,7 @@ class MyInteger(GeneratedsSuper): self.exportAttributes(outfile, level, already_processed, namespace_, name_='MyInteger') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='MyInteger', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: @@ -1509,7 +1518,7 @@ class MyBoolean(GeneratedsSuper): self.exportAttributes(outfile, level, already_processed, namespace_, name_='MyBoolean') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='MyBoolean', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: @@ -1584,7 +1593,7 @@ class MyFloat(GeneratedsSuper): self.exportAttributes(outfile, level, already_processed, namespace_, name_='MyFloat') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='MyFloat', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: @@ -1659,7 +1668,7 @@ class MyDouble(GeneratedsSuper): self.exportAttributes(outfile, level, already_processed, namespace_, name_='MyDouble') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='MyDouble', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: diff --git a/tests/ipo1_sup.py b/tests/ipo1_sup.py index f5e8822..5ff5561 100644 --- a/tests/ipo1_sup.py +++ b/tests/ipo1_sup.py @@ -368,6 +368,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/ipo2_sup.py b/tests/ipo2_sup.py index f5e8822..5ff5561 100644 --- a/tests/ipo2_sup.py +++ b/tests/ipo2_sup.py @@ -368,6 +368,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/mapcleanname1_sup.py b/tests/mapcleanname1_sup.py index a596dcf..8a71474 100644 --- a/tests/mapcleanname1_sup.py +++ b/tests/mapcleanname1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/nested_def1_sup.py b/tests/nested_def1_sup.py index 17b3c39..3a3dda9 100644 --- a/tests/nested_def1_sup.py +++ b/tests/nested_def1_sup.py @@ -368,6 +368,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/out1_sup.py b/tests/out1_sup.py index f542a38..f0074d3 100644 --- a/tests/out1_sup.py +++ b/tests/out1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' @@ -1984,7 +1993,7 @@ class param(GeneratedsSuper): self.exportAttributes(outfile, level, already_processed, namespace_, name_='param') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='param', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: diff --git a/tests/people_procincl1_sup.py b/tests/people_procincl1_sup.py index 159c8e8..58f687e 100644 --- a/tests/people_procincl1_sup.py +++ b/tests/people_procincl1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' @@ -1300,7 +1309,7 @@ class param(GeneratedsSuper): self.exportAttributes(outfile, level, already_processed, namespace_, name_='param') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='param', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: diff --git a/tests/prefix_classname1_sup.py b/tests/prefix_classname1_sup.py index 7e77a97..1f9b3c0 100644 --- a/tests/prefix_classname1_sup.py +++ b/tests/prefix_classname1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' @@ -1565,7 +1574,7 @@ class tomato_param(GeneratedsSuper): self.exportAttributes(outfile, level, already_processed, namespace_, name_='param') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='param', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: diff --git a/tests/recursive_simpletype1_sup.py b/tests/recursive_simpletype1_sup.py index 0b0a9e5..9f04ae7 100644 --- a/tests/recursive_simpletype1_sup.py +++ b/tests/recursive_simpletype1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/reference_simpletype1_sup.py b/tests/reference_simpletype1_sup.py index 7e784fe..136024a 100644 --- a/tests/reference_simpletype1_sup.py +++ b/tests/reference_simpletype1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/rem_dup_elems1_sup.py b/tests/rem_dup_elems1_sup.py index 2d38d44..e654b49 100644 --- a/tests/rem_dup_elems1_sup.py +++ b/tests/rem_dup_elems1_sup.py @@ -370,6 +370,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/simplecontent_restriction1_sup.py b/tests/simplecontent_restriction1_sup.py index afb69f9..b3e7b31 100644 --- a/tests/simplecontent_restriction1_sup.py +++ b/tests/simplecontent_restriction1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' @@ -724,7 +733,7 @@ class IdentifierType(GeneratedsSuper): self.exportAttributes(outfile, level, already_processed, namespace_, name_='IdentifierType') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='IdentifierType', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: @@ -847,7 +856,7 @@ class BillOfResourcesIDType(IdentifierType): self.exportAttributes(outfile, level, already_processed, namespace_, name_='BillOfResourcesIDType') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='BillOfResourcesIDType', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: @@ -916,7 +925,7 @@ class BillOfMaterialIDType(IdentifierType): self.exportAttributes(outfile, level, already_processed, namespace_, name_='BillOfMaterialIDType') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='', name_='BillOfMaterialIDType', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: diff --git a/tests/simpletype_memberspecs1_sup.py b/tests/simpletype_memberspecs1_sup.py index cc12dd5..3d97881 100644 --- a/tests/simpletype_memberspecs1_sup.py +++ b/tests/simpletype_memberspecs1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' @@ -697,7 +706,7 @@ class SpecialDate(GeneratedsSuper): self.exportAttributes(outfile, level, already_processed, namespace_, name_='SpecialDate') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='pl:', name_='SpecialDate', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: @@ -772,7 +781,7 @@ class ExtremeDate(GeneratedsSuper): self.exportAttributes(outfile, level, already_processed, namespace_, name_='ExtremeDate') if self.hasContent_(): outfile.write('>') - outfile.write((quote_xml(self.valueOf_) if type(self.valueOf_) is str else self.gds_encode(str(self.valueOf_)))) + outfile.write(self.convert_unicode(self.valueOf_)) self.exportChildren(outfile, level + 1, namespace_='pl:', name_='ExtremeDate', pretty_print=pretty_print) outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) else: diff --git a/tests/simpletypes_other1_sup.py b/tests/simpletypes_other1_sup.py index e1a21b7..6f146c3 100644 --- a/tests/simpletypes_other1_sup.py +++ b/tests/simpletypes_other1_sup.py @@ -369,6 +369,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/to_etree1_sup.py b/tests/to_etree1_sup.py index f6eb789..231d243 100644 --- a/tests/to_etree1_sup.py +++ b/tests/to_etree1_sup.py @@ -371,6 +371,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/validate_simpletypes1_sup.py b/tests/validate_simpletypes1_sup.py index d122552..f3ec19f 100644 --- a/tests/validate_simpletypes1_sup.py +++ b/tests/validate_simpletypes1_sup.py @@ -368,6 +368,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tests/validate_simpletypes1_warnings.txt b/tests/validate_simpletypes1_warnings.txt index 26b47be..0c0f475 100644 --- a/tests/validate_simpletypes1_warnings.txt +++ b/tests/validate_simpletypes1_warnings.txt @@ -1,60 +1,60 @@ -tests/validate_simpletypes2_sup.py:981: UserWarning: Value "2" does not match xsd minExclusive restriction on integer_range_1_st +tests/validate_simpletypes2_sup.py:990: UserWarning: Value "2" does not match xsd minExclusive restriction on integer_range_1_st warnings_.warn('Value "%(value)s" does not match xsd minExclusive restriction on integer_range_1_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:991: UserWarning: Value "mmaaa1234mnopzzz" does not match xsd pattern restrictions: [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']] +tests/validate_simpletypes2_sup.py:1000: UserWarning: Value "mmaaa1234mnopzzz" does not match xsd pattern restrictions: [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']] warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_pattern_st_patterns_, )) -tests/validate_simpletypes2_sup.py:1004: UserWarning: Value "floatxx" does not match xsd enumeration restriction on token_enum_st +tests/validate_simpletypes2_sup.py:1013: UserWarning: Value "floatxx" does not match xsd enumeration restriction on token_enum_st warnings_.warn('Value "%(value)s" does not match xsd enumeration restriction on token_enum_st' % {"value" : value.encode("utf-8")} ) -tests/validate_simpletypes2_sup.py:1011: UserWarning: Value "22" does not match xsd maxInclusive restriction on integer_range_incl_st +tests/validate_simpletypes2_sup.py:1020: UserWarning: Value "22" does not match xsd maxInclusive restriction on integer_range_incl_st warnings_.warn('Value "%(value)s" does not match xsd maxInclusive restriction on integer_range_incl_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1016: UserWarning: Value "-40" does not match xsd minExclusive restriction on integer_range_excl_st +tests/validate_simpletypes2_sup.py:1025: UserWarning: Value "-40" does not match xsd minExclusive restriction on integer_range_excl_st warnings_.warn('Value "%(value)s" does not match xsd minExclusive restriction on integer_range_excl_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1025: UserWarning: Value "mno pqr" does not match xsd minLength restriction on min_max_length_st +tests/validate_simpletypes2_sup.py:1034: UserWarning: Value "mno pqr" does not match xsd minLength restriction on min_max_length_st warnings_.warn('Value "%(value)s" does not match xsd minLength restriction on min_max_length_st' % {"value" : value.encode("utf-8")} ) -tests/validate_simpletypes2_sup.py:1030: UserWarning: Value "012345" does not match xsd length restriction on length_st +tests/validate_simpletypes2_sup.py:1039: UserWarning: Value "012345" does not match xsd length restriction on length_st warnings_.warn('Value "%(value)s" does not match xsd length restriction on length_st' % {"value" : value.encode("utf-8")} ) -tests/validate_simpletypes2_sup.py:1107: UserWarning: Value "0.2" does not match xsd minInclusive restriction on anonymous_float_valueType +tests/validate_simpletypes2_sup.py:1116: UserWarning: Value "0.2" does not match xsd minInclusive restriction on anonymous_float_valueType warnings_.warn('Value "%(value)s" does not match xsd minInclusive restriction on anonymous_float_valueType' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1101: UserWarning: Value "efgh" does not match xsd pattern restrictions: [['^abcd$|^ef\\|gh$']] +tests/validate_simpletypes2_sup.py:1110: UserWarning: Value "efgh" does not match xsd pattern restrictions: [['^abcd$|^ef\\|gh$']] warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_vbar_pattern_st_patterns_, )) -tests/validate_simpletypes2_sup.py:983: UserWarning: Value "9" does not match xsd maxExclusive restriction on integer_range_1_st +tests/validate_simpletypes2_sup.py:992: UserWarning: Value "9" does not match xsd maxExclusive restriction on integer_range_1_st warnings_.warn('Value "%(value)s" does not match xsd maxExclusive restriction on integer_range_1_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:991: UserWarning: Value "aaa1234mnopzzzbcd" does not match xsd pattern restrictions: [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']] +tests/validate_simpletypes2_sup.py:1000: UserWarning: Value "aaa1234mnopzzzbcd" does not match xsd pattern restrictions: [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']] warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_pattern_st_patterns_, )) -tests/validate_simpletypes2_sup.py:1009: UserWarning: Value "-50" does not match xsd minInclusive restriction on integer_range_incl_st +tests/validate_simpletypes2_sup.py:1018: UserWarning: Value "-50" does not match xsd minInclusive restriction on integer_range_incl_st warnings_.warn('Value "%(value)s" does not match xsd minInclusive restriction on integer_range_incl_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1023: UserWarning: Value "asdf asdf asdf asdf asdf asdf" does not match xsd maxLength restriction on min_max_length_st +tests/validate_simpletypes2_sup.py:1032: UserWarning: Value "asdf asdf asdf asdf asdf asdf" does not match xsd maxLength restriction on min_max_length_st warnings_.warn('Value "%(value)s" does not match xsd maxLength restriction on min_max_length_st' % {"value" : value.encode("utf-8")} ) -tests/validate_simpletypes2_sup.py:1030: UserWarning: Value "01234567890" does not match xsd length restriction on length_st +tests/validate_simpletypes2_sup.py:1039: UserWarning: Value "01234567890" does not match xsd length restriction on length_st warnings_.warn('Value "%(value)s" does not match xsd length restriction on length_st' % {"value" : value.encode("utf-8")} ) -tests/validate_simpletypes2_sup.py:1040: UserWarning: Value "2015-05-01" does not match xsd minInclusive restriction on date_minincl_st +tests/validate_simpletypes2_sup.py:1049: UserWarning: Value "2015-05-01" does not match xsd minInclusive restriction on date_minincl_st warnings_.warn('Value "%(value)s" does not match xsd minInclusive restriction on date_minincl_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1045: UserWarning: Value "2015-11-01" does not match xsd maxInclusive restriction on date_maxincl_st +tests/validate_simpletypes2_sup.py:1054: UserWarning: Value "2015-11-01" does not match xsd maxInclusive restriction on date_maxincl_st warnings_.warn('Value "%(value)s" does not match xsd maxInclusive restriction on date_maxincl_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1050: UserWarning: Value "2015-05-01" does not match xsd minExclusive restriction on date_minexcl_st +tests/validate_simpletypes2_sup.py:1059: UserWarning: Value "2015-05-01" does not match xsd minExclusive restriction on date_minexcl_st warnings_.warn('Value "%(value)s" does not match xsd minExclusive restriction on date_minexcl_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1055: UserWarning: Value "2015-11-01" does not match xsd maxExclusive restriction on date_maxexcl_st +tests/validate_simpletypes2_sup.py:1064: UserWarning: Value "2015-11-01" does not match xsd maxExclusive restriction on date_maxexcl_st warnings_.warn('Value "%(value)s" does not match xsd maxExclusive restriction on date_maxexcl_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1060: UserWarning: Value "13:30:00" does not match xsd minInclusive restriction on time_minincl_st +tests/validate_simpletypes2_sup.py:1069: UserWarning: Value "13:30:00" does not match xsd minInclusive restriction on time_minincl_st warnings_.warn('Value "%(value)s" does not match xsd minInclusive restriction on time_minincl_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1065: UserWarning: Value "17:00:00" does not match xsd maxInclusive restriction on time_maxincl_st +tests/validate_simpletypes2_sup.py:1074: UserWarning: Value "17:00:00" does not match xsd maxInclusive restriction on time_maxincl_st warnings_.warn('Value "%(value)s" does not match xsd maxInclusive restriction on time_maxincl_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1070: UserWarning: Value "13:30:00" does not match xsd minExclusive restriction on time_minexcl_st +tests/validate_simpletypes2_sup.py:1079: UserWarning: Value "13:30:00" does not match xsd minExclusive restriction on time_minexcl_st warnings_.warn('Value "%(value)s" does not match xsd minExclusive restriction on time_minexcl_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1075: UserWarning: Value "17:00:00" does not match xsd maxExclusive restriction on time_maxexcl_st +tests/validate_simpletypes2_sup.py:1084: UserWarning: Value "17:00:00" does not match xsd maxExclusive restriction on time_maxexcl_st warnings_.warn('Value "%(value)s" does not match xsd maxExclusive restriction on time_maxexcl_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1080: UserWarning: Value "2015-06-01 13:20:10" does not match xsd minInclusive restriction on datetime_minincl_st +tests/validate_simpletypes2_sup.py:1089: UserWarning: Value "2015-06-01 13:20:10" does not match xsd minInclusive restriction on datetime_minincl_st warnings_.warn('Value "%(value)s" does not match xsd minInclusive restriction on datetime_minincl_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1085: UserWarning: Value "2015-11-01 14:20:10" does not match xsd maxInclusive restriction on datetime_maxincl_st +tests/validate_simpletypes2_sup.py:1094: UserWarning: Value "2015-11-01 14:20:10" does not match xsd maxInclusive restriction on datetime_maxincl_st warnings_.warn('Value "%(value)s" does not match xsd maxInclusive restriction on datetime_maxincl_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1090: UserWarning: Value "2015-06-01 13:20:10" does not match xsd minExclusive restriction on datetime_minexcl_st +tests/validate_simpletypes2_sup.py:1099: UserWarning: Value "2015-06-01 13:20:10" does not match xsd minExclusive restriction on datetime_minexcl_st warnings_.warn('Value "%(value)s" does not match xsd minExclusive restriction on datetime_minexcl_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1095: UserWarning: Value "2015-11-01 14:20:10" does not match xsd maxExclusive restriction on datetime_maxexcl_st +tests/validate_simpletypes2_sup.py:1104: UserWarning: Value "2015-11-01 14:20:10" does not match xsd maxExclusive restriction on datetime_maxexcl_st warnings_.warn('Value "%(value)s" does not match xsd maxExclusive restriction on datetime_maxexcl_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:1109: UserWarning: Value "6.6" does not match xsd maxInclusive restriction on anonymous_float_valueType +tests/validate_simpletypes2_sup.py:1118: UserWarning: Value "6.6" does not match xsd maxInclusive restriction on anonymous_float_valueType warnings_.warn('Value "%(value)s" does not match xsd maxInclusive restriction on anonymous_float_valueType' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:988: UserWarning: Value "aaa12zzz" does not match xsd minLength restriction on pattern_st +tests/validate_simpletypes2_sup.py:997: UserWarning: Value "aaa12zzz" does not match xsd minLength restriction on pattern_st warnings_.warn('Value "%(value)s" does not match xsd minLength restriction on pattern_st' % {"value" : value} ) -tests/validate_simpletypes2_sup.py:991: UserWarning: Value "aaa12zzz" does not match xsd pattern restrictions: [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']] +tests/validate_simpletypes2_sup.py:1000: UserWarning: Value "aaa12zzz" does not match xsd pattern restrictions: [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']] warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_pattern_st_patterns_, )) -tests/validate_simpletypes2_sup.py:1521: UserWarning: Value "pqrst" does not match xsd minLength restriction on simpleTwoElementTwoType +tests/validate_simpletypes2_sup.py:1530: UserWarning: Value "pqrst" does not match xsd minLength restriction on simpleTwoElementTwoType warnings_.warn('Value "%(value)s" does not match xsd minLength restriction on simpleTwoElementTwoType' % {"value" : value.encode("utf-8")} ) diff --git a/tests/validate_simpletypes2_sup.py b/tests/validate_simpletypes2_sup.py index d122552..f3ec19f 100644 --- a/tests/validate_simpletypes2_sup.py +++ b/tests/validate_simpletypes2_sup.py @@ -368,6 +368,15 @@ except ImportError as exp: return instring.encode(ExternalEncoding) else: return instring + @staticmethod + def convert_unicode(instring): + if (type(instring) is str or + (sys.version_info.major == 2 + and type(instring) == unicode)): + result = quote_xml(instring) + else: + result = GeneratedsSuper.gds_encode(str(instring)) + return result def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' diff --git a/tutorial/generateds_tutorial.html b/tutorial/generateds_tutorial.html index 5b3babb..d4945ec 100644 --- a/tutorial/generateds_tutorial.html +++ b/tutorial/generateds_tutorial.html @@ -228,7 +228,7 @@ They are used by updateversion.py. --> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">date:</th><td class="field-body">January 05, 2017</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">January 16, 2017</td> </tr> </tbody> </table> @@ -1210,7 +1210,7 @@ named <tt class="docutils literal">garden_api.py</tt>, you can create an instanc <div class="footer"> <hr class="footer" /> <a class="reference external" href="generateds_tutorial.txt">View document source</a>. -Generated on: 2017-01-05 20:00 UTC. +Generated on: 2017-01-17 00:01 UTC. Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. </div> diff --git a/tutorial/generateds_tutorial.zip b/tutorial/generateds_tutorial.zip index d1c0bf8d114c2b41a331363e8a35f6c5b4c2d8fb..09649363daf7cb1b00b3b67705d890bd0aac6ec8 100644 GIT binary patch delta 10691 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 delta 10691 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 -- GitLab