diff --git a/README.rst b/README.rst index 80b1b68681d50f7501615f37372edc00cc00010b..f00ca0e7b484b89f44f66653ae5517d8d066187a 100644 --- a/README.rst +++ b/README.rst @@ -141,6 +141,19 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Change history -------------- +Version 2.29.3 (12/11/2017) + +- Resolved an issue with a type casting problem that occurs when a + numeric default value is provided as default for an xsd:attribute. + Normally attributes were being type casted at the constructor to a + Python type if the types are one of the builtins. However + attributes derived from a builtin type via xsd:simpleType + definitions couldn't be casted to a base type and were being + treated as strings. Refactored out the simple type resolution + from the XsdElement class to a function so that we can reuse the + same code for both elements and attributes. Thanks to + Alim Gokkaya for fixing this and for providing a pull request. + Version 2.29.2 (12/07/2017) - Fix for use of StringIO in generated subclass modules. Thanks to diff --git a/generateDS.html b/generateDS.html index e5ce8f7c772d127b0d8c41006240384f91bdb614..1dcd6c3c2f4625f65a7389f80378b50a3fce96fd 100644 --- a/generateDS.html +++ b/generateDS.html @@ -220,7 +220,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">revision:</th><td class="field-body">2.28.2</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.3</td> </tr> </tbody> </table> @@ -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">October 27, 2017</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">December 11, 2017</td> </tr> </tbody> </table> @@ -3380,7 +3380,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-10-27 19:55 UTC. +Generated on: 2017-12-11 21:49 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 42da8e1b04e8c42571f456bf9afcfb6a17f92ce6..146f8a07b0e0f68074ba746743da0af03eb1954f 100755 --- a/generateDS.py +++ b/generateDS.py @@ -229,7 +229,7 @@ logging.disable(logging.INFO) # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## -VERSION = '2.29.2' +VERSION = '2.29.3' ##VERSION## BaseStrTypes = six.string_types diff --git a/generateDS.txt b/generateDS.txt index 42c14936e959f65ae3c4b3821f0152a5e262b679..9d1961ba03af3beea5c0f9c8e434b5f24feb31a1 100644 --- a/generateDS.txt +++ b/generateDS.txt @@ -12,7 +12,7 @@ generateDS -- Generate Data Structures from XML Schema .. version -:revision: 2.29.2 +:revision: 2.29.3 .. version diff --git a/generateds_gui_notes.html b/generateds_gui_notes.html index 1b1d634ad99f1aa93f2b4034090bdb7d3091cd82..0c269e45ed3436349f7b4fdb8bcb0669fe86e37c 100644 --- a/generateds_gui_notes.html +++ b/generateds_gui_notes.html @@ -220,7 +220,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">revision:</th><td class="field-body">2.28.2</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.3</td> </tr> </tbody> </table> @@ -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">October 27, 2017</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">December 11, 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-10-27 19:55 UTC. +Generated on: 2017-12-11 21:49 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_gui_notes.txt b/generateds_gui_notes.txt index d4a8e613b86fb68e3085c8810233d74ff0d5ef2f..a45bea962aacc6c12e734273558e801ec948d88a 100644 --- a/generateds_gui_notes.txt +++ b/generateds_gui_notes.txt @@ -12,7 +12,7 @@ GenerateDS GUI Notes .. version -:revision: 2.29.2 +:revision: 2.29.3 .. version diff --git a/gui/generateds_gui.py b/gui/generateds_gui.py index ff91ffd95e51d7e6623f95869783c5573860fbac..acf8ee3212ca695557768524115729e410159ad2 100644 --- a/gui/generateds_gui.py +++ b/gui/generateds_gui.py @@ -41,7 +41,7 @@ from libgenerateDS.gui import generateds_gui_session # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## -VERSION = '2.29.2' +VERSION = '2.29.3' ##VERSION## diff --git a/librarytemplate_howto.html b/librarytemplate_howto.html index 2ecc0d4357cc56f55cb623afe724162ac5802962..5897afcea7510fb78d152564159714f14c99a0c4 100644 --- a/librarytemplate_howto.html +++ b/librarytemplate_howto.html @@ -217,7 +217,7 @@ dkuhlman (at) davekuhlman (dot) org <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.28.2</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.3</td> </tr> </tbody> </table> @@ -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">October 27, 2017</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">December 11, 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-10-27 19:55 UTC. +Generated on: 2017-12-11 21:49 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.txt b/librarytemplate_howto.txt index f10f55e332cec74a69cb9ebf780ea70b134e3e57..051534981e3c389e5fd016849d7a507ff997fc28 100644 --- a/librarytemplate_howto.txt +++ b/librarytemplate_howto.txt @@ -8,7 +8,7 @@ How to package a generateDS.py generated library .. version -:revision: 2.29.2 +:revision: 2.29.3 .. version diff --git a/process_includes.py b/process_includes.py index 08ee2c88fb77d13fca04cb7f650113e2e16d76fa..8568033984079038722c1ed347a3a51040ae4d90 100644 --- a/process_includes.py +++ b/process_includes.py @@ -40,7 +40,7 @@ except ImportError: # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## -VERSION = '2.29.2' +VERSION = '2.29.3' ##VERSION## CatalogDict = {} diff --git a/setup.py b/setup.py index 1eb1c68004784fb0fe9facce2864dff93c492940..da910b9b68a6d921aa9e0c71b2a5d712e86bcc58 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup(name="generateDS", # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## - version="2.29.2", + version="2.29.3", ##VERSION## author="Dave Kuhlman", author_email="dkuhlman@davekuhlman.org", diff --git a/tests/check_results.rb b/tests/check_results.rb index 63ce8b780a24f95d6587495801671fa783e0ff2e..34fc95b69f9019835a6421772eeeb767ba4d3a13 100755 --- a/tests/check_results.rb +++ b/tests/check_results.rb @@ -71,8 +71,6 @@ $commands = [ "diff -u catalogtest1_sup.py catalogtest2_sup.py", "diff -u disable_xml_super1_sub.py disable_xml_super2_sub.py", "diff -u disable_xml_super1_sup.py disable_xml_super2_sup.py", - "diff -u defaults_cases_export1_sub.py defaults_cases_export2_sub.py", - "diff -u defaults_cases_export1_sup.py defaults_cases_export2_sup.py", "diff -u mixedcontent1_sub.py mixedcontent2_sub.py", "diff -u mixedcontent1_sup.py mixedcontent2_sup.py", ] diff --git a/tests/to_etree1_sup.py b/tests/to_etree1_sup.py index caca1079e2eaeb34dea1708ad0a4b1f5e5cb18e3..911ec6dfcb17e7df3bb800255472329d11b80ecf 100644 --- a/tests/to_etree1_sup.py +++ b/tests/to_etree1_sup.py @@ -1625,7 +1625,7 @@ class paramType(GeneratedsSuper): self.id = _cast(None, id) self.name = _cast(None, name) self.sid = _cast(None, sid) - self.flow = _cast(None, flow) + self.flow = _cast(int, flow) self.semantic = _cast(None, semantic) self.type_ = _cast(None, type_) self.valueOf_ = valueOf_ diff --git a/tests/validate_simpletypes1_out.xml b/tests/validate_simpletypes1_out.xml index b6d8392cb6a727d437b173972d45ae841e0ca466..8193ffe8fdf49f8476e7866ce8978c47120a642a 100644 --- a/tests/validate_simpletypes1_out.xml +++ b/tests/validate_simpletypes1_out.xml @@ -1,6 +1,6 @@ <?xml version="1.0" ?> <container> - <sample1> + <sample1 integer_range_1_value_with_default="6"> <integer_range_1_value>5</integer_range_1_value> <pattern_value>bbbmn456opxxx</pattern_value> <token_enum_value>float</token_enum_value> @@ -25,7 +25,7 @@ <primative_integer>765</primative_integer> <primative_float>54.320999999999998</primative_float> </sample1> - <sample2_bad> + <sample2_bad integer_range_1_value_with_default="6"> <integer_range_1_value>2</integer_range_1_value> <pattern_value>mmaaa1234mnopzzz</pattern_value> <token_enum_value>floatxx</token_enum_value> @@ -36,7 +36,7 @@ <vbar_pattern_value>efgh</vbar_pattern_value> <anonymous_float_value>0.2</anonymous_float_value> </sample2_bad> - <sample3_bad> + <sample3_bad integer_range_1_value_with_default="6"> <integer_range_1_value>9</integer_range_1_value> <pattern_value>aaa1234mnopzzzbcd</pattern_value> <integer_range_incl_value>-50</integer_range_incl_value> @@ -56,7 +56,8 @@ <datetime_maxexcl_value>2015-11-01T14:20:10</datetime_maxexcl_value> <anonymous_float_value>6.6</anonymous_float_value> </sample3_bad> - <sample4_bad> + <sample4_bad integer_range_1_value_with_default="6"> + <integer_range_1_value>5</integer_range_1_value> <pattern_value>aaa12zzz</pattern_value> </sample4_bad> <sample2> diff --git a/tests/validate_simpletypes1_sub.py b/tests/validate_simpletypes1_sub.py index de1aa851508320d1a87309de46ec689c2bf86bd4..998fedf3e5bf000c2e299ee849a5057eef09b88a 100644 --- a/tests/validate_simpletypes1_sub.py +++ b/tests/validate_simpletypes1_sub.py @@ -55,8 +55,8 @@ supermod.containerType.subclass = containerTypeSub class simpleOneTypeSub(supermod.simpleOneType): - def __init__(self, integer_range_1_value=None, pattern_value=None, token_enum_value=None, integer_range_incl_value=None, integer_range_excl_value=None, min_max_length_value=None, length_value=None, totalDigits_value=None, date_minincl_value=None, date_maxincl_value=None, date_minexcl_value=None, date_maxexcl_value=None, time_minincl_value=None, time_maxincl_value=None, time_minexcl_value=None, time_maxexcl_value=None, datetime_minincl_value=None, datetime_maxincl_value=None, datetime_minexcl_value=None, datetime_maxexcl_value=None, vbar_pattern_value=None, anonymous_float_value=None, primative_integer=None, primative_float=None): - super(simpleOneTypeSub, self).__init__(integer_range_1_value, pattern_value, token_enum_value, integer_range_incl_value, integer_range_excl_value, min_max_length_value, length_value, totalDigits_value, date_minincl_value, date_maxincl_value, date_minexcl_value, date_maxexcl_value, time_minincl_value, time_maxincl_value, time_minexcl_value, time_maxexcl_value, datetime_minincl_value, datetime_maxincl_value, datetime_minexcl_value, datetime_maxexcl_value, vbar_pattern_value, anonymous_float_value, primative_integer, primative_float, ) + def __init__(self, integer_range_1_value_with_default='6', integer_range_1_value=5, pattern_value=None, token_enum_value=None, integer_range_incl_value=None, integer_range_excl_value=None, min_max_length_value=None, length_value=None, totalDigits_value=None, date_minincl_value=None, date_maxincl_value=None, date_minexcl_value=None, date_maxexcl_value=None, time_minincl_value=None, time_maxincl_value=None, time_minexcl_value=None, time_maxexcl_value=None, datetime_minincl_value=None, datetime_maxincl_value=None, datetime_minexcl_value=None, datetime_maxexcl_value=None, vbar_pattern_value=None, anonymous_float_value=None, primative_integer=None, primative_float=None): + super(simpleOneTypeSub, self).__init__(integer_range_1_value_with_default, integer_range_1_value, pattern_value, token_enum_value, integer_range_incl_value, integer_range_excl_value, min_max_length_value, length_value, totalDigits_value, date_minincl_value, date_maxincl_value, date_minexcl_value, date_maxexcl_value, time_minincl_value, time_maxincl_value, time_minexcl_value, time_maxexcl_value, datetime_minincl_value, datetime_maxincl_value, datetime_minexcl_value, datetime_maxexcl_value, vbar_pattern_value, anonymous_float_value, primative_integer, primative_float, ) supermod.simpleOneType.subclass = simpleOneTypeSub # end class simpleOneTypeSub diff --git a/tests/validate_simpletypes1_sup.py b/tests/validate_simpletypes1_sup.py index 23e80e3176a6f35e70f694b168ac4a7c9fc666bf..938d76edba685b2c7de8f91c0252353795f5342c 100644 --- a/tests/validate_simpletypes1_sup.py +++ b/tests/validate_simpletypes1_sup.py @@ -866,7 +866,8 @@ class containerType(GeneratedsSuper): class simpleOneType(GeneratedsSuper): member_data_items_ = [ - MemberSpec_('integer_range_1_value', ['integer_range_1_st', 'integer_range_2_st', 'xs:integer'], 0, 0, {u'type': u'xs:integer', u'name': u'integer_range_1_value'}, None), + MemberSpec_('integer_range_1_value_with_default', 'integer_range_1_st', 0, 1, {'use': 'optional'}), + MemberSpec_('integer_range_1_value', ['integer_range_1_st', 'integer_range_2_st', 'xs:integer'], 0, 0, {u'default': u'5', u'type': u'xs:integer', u'name': u'integer_range_1_value'}, None), MemberSpec_('pattern_value', ['pattern_st', 'pattern_1_st', 'min_length_st', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'pattern_value'}, None), MemberSpec_('token_enum_value', ['token_enum_st', 'xs:NMTOKEN'], 0, 0, {u'type': u'xs:NMTOKEN', u'name': u'token_enum_value'}, None), MemberSpec_('integer_range_incl_value', ['integer_range_incl_st', 'xs:integer'], 0, 0, {u'type': u'xs:integer', u'name': u'integer_range_incl_value'}, None), @@ -893,8 +894,9 @@ class simpleOneType(GeneratedsSuper): ] subclass = None superclass = None - def __init__(self, integer_range_1_value=None, pattern_value=None, token_enum_value=None, integer_range_incl_value=None, integer_range_excl_value=None, min_max_length_value=None, length_value=None, totalDigits_value=None, date_minincl_value=None, date_maxincl_value=None, date_minexcl_value=None, date_maxexcl_value=None, time_minincl_value=None, time_maxincl_value=None, time_minexcl_value=None, time_maxexcl_value=None, datetime_minincl_value=None, datetime_maxincl_value=None, datetime_minexcl_value=None, datetime_maxexcl_value=None, vbar_pattern_value=None, anonymous_float_value=None, primative_integer=None, primative_float=None): + def __init__(self, integer_range_1_value_with_default='6', integer_range_1_value=5, pattern_value=None, token_enum_value=None, integer_range_incl_value=None, integer_range_excl_value=None, min_max_length_value=None, length_value=None, totalDigits_value=None, date_minincl_value=None, date_maxincl_value=None, date_minexcl_value=None, date_maxexcl_value=None, time_minincl_value=None, time_maxincl_value=None, time_minexcl_value=None, time_maxexcl_value=None, datetime_minincl_value=None, datetime_maxincl_value=None, datetime_minexcl_value=None, datetime_maxexcl_value=None, vbar_pattern_value=None, anonymous_float_value=None, primative_integer=None, primative_float=None): self.original_tagname_ = None + self.integer_range_1_value_with_default = _cast(int, integer_range_1_value_with_default) self.integer_range_1_value = integer_range_1_value self.validate_integer_range_1_st(self.integer_range_1_value) self.pattern_value = pattern_value @@ -1036,6 +1038,8 @@ class simpleOneType(GeneratedsSuper): def set_primative_integer(self, primative_integer): self.primative_integer = primative_integer def get_primative_float(self): return self.primative_float def set_primative_float(self, primative_float): self.primative_float = primative_float + def get_integer_range_1_value_with_default(self): return self.integer_range_1_value_with_default + def set_integer_range_1_value_with_default(self, integer_range_1_value_with_default): self.integer_range_1_value_with_default = integer_range_1_value_with_default def validate_integer_range_1_st(self, value): # Validate type integer_range_1_st, a restriction on integer_range_2_st. if value is not None and Validate_simpletypes_: @@ -1171,7 +1175,7 @@ class simpleOneType(GeneratedsSuper): warnings_.warn('Value "%(value)s" does not match xsd maxInclusive restriction on anonymous_float_valueType' % {"value" : value} ) def hasContent_(self): if ( - self.integer_range_1_value is not None or + self.integer_range_1_value != 5 or self.pattern_value is not None or self.token_enum_value is not None or self.integer_range_incl_value is not None or @@ -1221,7 +1225,9 @@ class simpleOneType(GeneratedsSuper): else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='simpleOneType'): - pass + if self.integer_range_1_value_with_default != "6" and 'integer_range_1_value_with_default' not in already_processed: + already_processed.add('integer_range_1_value_with_default') + outfile.write(' integer_range_1_value_with_default=%s' % (quote_attrib(self.integer_range_1_value_with_default), )) def exportChildren(self, outfile, level, namespace_='', name_='simpleOneType', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' @@ -1307,7 +1313,11 @@ class simpleOneType(GeneratedsSuper): self.buildChildren(child, node, nodeName_) return self def buildAttributes(self, node, attrs, already_processed): - pass + value = find_attr_value_('integer_range_1_value_with_default', node) + if value is not None and 'integer_range_1_value_with_default' not in already_processed: + already_processed.add('integer_range_1_value_with_default') + self.integer_range_1_value_with_default = value + self.validate_integer_range_1_st(self.integer_range_1_value_with_default) # validate type integer_range_1_st def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'integer_range_1_value': sval_ = child_.text diff --git a/tests/validate_simpletypes1_warnings.txt b/tests/validate_simpletypes1_warnings.txt index ecb033a9ec3389989b07c9f46944de1f1f5bc1ff..0309c68763e45e5a00c0dc1c5161a5dae5051534 100644 --- a/tests/validate_simpletypes1_warnings.txt +++ b/tests/validate_simpletypes1_warnings.txt @@ -1,60 +1,60 @@ -tests/validate_simpletypes2_sup.py:1043: UserWarning: Value "2" does not match xsd minExclusive restriction on integer_range_1_st +tests/validate_simpletypes2_sup.py:1047: 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:1053: UserWarning: Value "mmaaa1234mnopzzz" does not match xsd pattern restrictions: [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']] +tests/validate_simpletypes2_sup.py:1057: 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:1066: UserWarning: Value "floatxx" does not match xsd enumeration restriction on token_enum_st +tests/validate_simpletypes2_sup.py:1070: 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:1073: UserWarning: Value "22" does not match xsd maxInclusive restriction on integer_range_incl_st +tests/validate_simpletypes2_sup.py:1077: 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:1078: UserWarning: Value "-40" does not match xsd minExclusive restriction on integer_range_excl_st +tests/validate_simpletypes2_sup.py:1082: 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:1087: UserWarning: Value "mno pqr" does not match xsd minLength restriction on min_max_length_st +tests/validate_simpletypes2_sup.py:1091: 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:1092: UserWarning: Value "012345" does not match xsd length restriction on length_st +tests/validate_simpletypes2_sup.py:1096: 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:1169: UserWarning: Value "0.2" does not match xsd minInclusive restriction on anonymous_float_valueType +tests/validate_simpletypes2_sup.py:1173: 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:1163: UserWarning: Value "efgh" does not match xsd pattern restrictions: [['^abcd$|^ef\\|gh$']] +tests/validate_simpletypes2_sup.py:1167: 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:1045: UserWarning: Value "9" does not match xsd maxExclusive restriction on integer_range_1_st +tests/validate_simpletypes2_sup.py:1049: 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:1053: UserWarning: Value "aaa1234mnopzzzbcd" does not match xsd pattern restrictions: [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']] +tests/validate_simpletypes2_sup.py:1057: 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:1071: UserWarning: Value "-50" does not match xsd minInclusive restriction on integer_range_incl_st +tests/validate_simpletypes2_sup.py:1075: 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:1085: UserWarning: Value "asdf asdf asdf asdf asdf asdf" does not match xsd maxLength restriction on min_max_length_st +tests/validate_simpletypes2_sup.py:1089: 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:1092: UserWarning: Value "01234567890" does not match xsd length restriction on length_st +tests/validate_simpletypes2_sup.py:1096: 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:1102: UserWarning: Value "2015-05-01" does not match xsd minInclusive restriction on date_minincl_st +tests/validate_simpletypes2_sup.py:1106: 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:1107: UserWarning: Value "2015-11-01" does not match xsd maxInclusive restriction on date_maxincl_st +tests/validate_simpletypes2_sup.py:1111: 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:1112: UserWarning: Value "2015-05-01" does not match xsd minExclusive restriction on date_minexcl_st +tests/validate_simpletypes2_sup.py:1116: 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:1117: UserWarning: Value "2015-11-01" does not match xsd maxExclusive restriction on date_maxexcl_st +tests/validate_simpletypes2_sup.py:1121: 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:1122: UserWarning: Value "13:30:00" does not match xsd minInclusive restriction on time_minincl_st +tests/validate_simpletypes2_sup.py:1126: 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:1127: UserWarning: Value "17:00:00" does not match xsd maxInclusive restriction on time_maxincl_st +tests/validate_simpletypes2_sup.py:1131: 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:1132: UserWarning: Value "13:30:00" does not match xsd minExclusive restriction on time_minexcl_st +tests/validate_simpletypes2_sup.py:1136: 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:1137: UserWarning: Value "17:00:00" does not match xsd maxExclusive restriction on time_maxexcl_st +tests/validate_simpletypes2_sup.py:1141: 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:1142: UserWarning: Value "2015-06-01 13:20:10" does not match xsd minInclusive restriction on datetime_minincl_st +tests/validate_simpletypes2_sup.py:1146: 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:1147: UserWarning: Value "2015-11-01 14:20:10" does not match xsd maxInclusive restriction on datetime_maxincl_st +tests/validate_simpletypes2_sup.py:1151: 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:1152: UserWarning: Value "2015-06-01 13:20:10" does not match xsd minExclusive restriction on datetime_minexcl_st +tests/validate_simpletypes2_sup.py:1156: 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:1157: UserWarning: Value "2015-11-01 14:20:10" does not match xsd maxExclusive restriction on datetime_maxexcl_st +tests/validate_simpletypes2_sup.py:1161: 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:1171: UserWarning: Value "6.6" does not match xsd maxInclusive restriction on anonymous_float_valueType +tests/validate_simpletypes2_sup.py:1175: 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:1050: UserWarning: Value "aaa12zzz" does not match xsd minLength restriction on pattern_st +tests/validate_simpletypes2_sup.py:1054: 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:1053: UserWarning: Value "aaa12zzz" does not match xsd pattern restrictions: [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']] +tests/validate_simpletypes2_sup.py:1057: 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:1589: UserWarning: Value "pqrst" does not match xsd minLength restriction on simpleTwoElementTwoType +tests/validate_simpletypes2_sup.py:1599: 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_sub.py b/tests/validate_simpletypes2_sub.py index de1aa851508320d1a87309de46ec689c2bf86bd4..998fedf3e5bf000c2e299ee849a5057eef09b88a 100644 --- a/tests/validate_simpletypes2_sub.py +++ b/tests/validate_simpletypes2_sub.py @@ -55,8 +55,8 @@ supermod.containerType.subclass = containerTypeSub class simpleOneTypeSub(supermod.simpleOneType): - def __init__(self, integer_range_1_value=None, pattern_value=None, token_enum_value=None, integer_range_incl_value=None, integer_range_excl_value=None, min_max_length_value=None, length_value=None, totalDigits_value=None, date_minincl_value=None, date_maxincl_value=None, date_minexcl_value=None, date_maxexcl_value=None, time_minincl_value=None, time_maxincl_value=None, time_minexcl_value=None, time_maxexcl_value=None, datetime_minincl_value=None, datetime_maxincl_value=None, datetime_minexcl_value=None, datetime_maxexcl_value=None, vbar_pattern_value=None, anonymous_float_value=None, primative_integer=None, primative_float=None): - super(simpleOneTypeSub, self).__init__(integer_range_1_value, pattern_value, token_enum_value, integer_range_incl_value, integer_range_excl_value, min_max_length_value, length_value, totalDigits_value, date_minincl_value, date_maxincl_value, date_minexcl_value, date_maxexcl_value, time_minincl_value, time_maxincl_value, time_minexcl_value, time_maxexcl_value, datetime_minincl_value, datetime_maxincl_value, datetime_minexcl_value, datetime_maxexcl_value, vbar_pattern_value, anonymous_float_value, primative_integer, primative_float, ) + def __init__(self, integer_range_1_value_with_default='6', integer_range_1_value=5, pattern_value=None, token_enum_value=None, integer_range_incl_value=None, integer_range_excl_value=None, min_max_length_value=None, length_value=None, totalDigits_value=None, date_minincl_value=None, date_maxincl_value=None, date_minexcl_value=None, date_maxexcl_value=None, time_minincl_value=None, time_maxincl_value=None, time_minexcl_value=None, time_maxexcl_value=None, datetime_minincl_value=None, datetime_maxincl_value=None, datetime_minexcl_value=None, datetime_maxexcl_value=None, vbar_pattern_value=None, anonymous_float_value=None, primative_integer=None, primative_float=None): + super(simpleOneTypeSub, self).__init__(integer_range_1_value_with_default, integer_range_1_value, pattern_value, token_enum_value, integer_range_incl_value, integer_range_excl_value, min_max_length_value, length_value, totalDigits_value, date_minincl_value, date_maxincl_value, date_minexcl_value, date_maxexcl_value, time_minincl_value, time_maxincl_value, time_minexcl_value, time_maxexcl_value, datetime_minincl_value, datetime_maxincl_value, datetime_minexcl_value, datetime_maxexcl_value, vbar_pattern_value, anonymous_float_value, primative_integer, primative_float, ) supermod.simpleOneType.subclass = simpleOneTypeSub # end class simpleOneTypeSub diff --git a/tests/validate_simpletypes2_sup.py b/tests/validate_simpletypes2_sup.py index 23e80e3176a6f35e70f694b168ac4a7c9fc666bf..938d76edba685b2c7de8f91c0252353795f5342c 100644 --- a/tests/validate_simpletypes2_sup.py +++ b/tests/validate_simpletypes2_sup.py @@ -866,7 +866,8 @@ class containerType(GeneratedsSuper): class simpleOneType(GeneratedsSuper): member_data_items_ = [ - MemberSpec_('integer_range_1_value', ['integer_range_1_st', 'integer_range_2_st', 'xs:integer'], 0, 0, {u'type': u'xs:integer', u'name': u'integer_range_1_value'}, None), + MemberSpec_('integer_range_1_value_with_default', 'integer_range_1_st', 0, 1, {'use': 'optional'}), + MemberSpec_('integer_range_1_value', ['integer_range_1_st', 'integer_range_2_st', 'xs:integer'], 0, 0, {u'default': u'5', u'type': u'xs:integer', u'name': u'integer_range_1_value'}, None), MemberSpec_('pattern_value', ['pattern_st', 'pattern_1_st', 'min_length_st', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'pattern_value'}, None), MemberSpec_('token_enum_value', ['token_enum_st', 'xs:NMTOKEN'], 0, 0, {u'type': u'xs:NMTOKEN', u'name': u'token_enum_value'}, None), MemberSpec_('integer_range_incl_value', ['integer_range_incl_st', 'xs:integer'], 0, 0, {u'type': u'xs:integer', u'name': u'integer_range_incl_value'}, None), @@ -893,8 +894,9 @@ class simpleOneType(GeneratedsSuper): ] subclass = None superclass = None - def __init__(self, integer_range_1_value=None, pattern_value=None, token_enum_value=None, integer_range_incl_value=None, integer_range_excl_value=None, min_max_length_value=None, length_value=None, totalDigits_value=None, date_minincl_value=None, date_maxincl_value=None, date_minexcl_value=None, date_maxexcl_value=None, time_minincl_value=None, time_maxincl_value=None, time_minexcl_value=None, time_maxexcl_value=None, datetime_minincl_value=None, datetime_maxincl_value=None, datetime_minexcl_value=None, datetime_maxexcl_value=None, vbar_pattern_value=None, anonymous_float_value=None, primative_integer=None, primative_float=None): + def __init__(self, integer_range_1_value_with_default='6', integer_range_1_value=5, pattern_value=None, token_enum_value=None, integer_range_incl_value=None, integer_range_excl_value=None, min_max_length_value=None, length_value=None, totalDigits_value=None, date_minincl_value=None, date_maxincl_value=None, date_minexcl_value=None, date_maxexcl_value=None, time_minincl_value=None, time_maxincl_value=None, time_minexcl_value=None, time_maxexcl_value=None, datetime_minincl_value=None, datetime_maxincl_value=None, datetime_minexcl_value=None, datetime_maxexcl_value=None, vbar_pattern_value=None, anonymous_float_value=None, primative_integer=None, primative_float=None): self.original_tagname_ = None + self.integer_range_1_value_with_default = _cast(int, integer_range_1_value_with_default) self.integer_range_1_value = integer_range_1_value self.validate_integer_range_1_st(self.integer_range_1_value) self.pattern_value = pattern_value @@ -1036,6 +1038,8 @@ class simpleOneType(GeneratedsSuper): def set_primative_integer(self, primative_integer): self.primative_integer = primative_integer def get_primative_float(self): return self.primative_float def set_primative_float(self, primative_float): self.primative_float = primative_float + def get_integer_range_1_value_with_default(self): return self.integer_range_1_value_with_default + def set_integer_range_1_value_with_default(self, integer_range_1_value_with_default): self.integer_range_1_value_with_default = integer_range_1_value_with_default def validate_integer_range_1_st(self, value): # Validate type integer_range_1_st, a restriction on integer_range_2_st. if value is not None and Validate_simpletypes_: @@ -1171,7 +1175,7 @@ class simpleOneType(GeneratedsSuper): warnings_.warn('Value "%(value)s" does not match xsd maxInclusive restriction on anonymous_float_valueType' % {"value" : value} ) def hasContent_(self): if ( - self.integer_range_1_value is not None or + self.integer_range_1_value != 5 or self.pattern_value is not None or self.token_enum_value is not None or self.integer_range_incl_value is not None or @@ -1221,7 +1225,9 @@ class simpleOneType(GeneratedsSuper): else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='simpleOneType'): - pass + if self.integer_range_1_value_with_default != "6" and 'integer_range_1_value_with_default' not in already_processed: + already_processed.add('integer_range_1_value_with_default') + outfile.write(' integer_range_1_value_with_default=%s' % (quote_attrib(self.integer_range_1_value_with_default), )) def exportChildren(self, outfile, level, namespace_='', name_='simpleOneType', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' @@ -1307,7 +1313,11 @@ class simpleOneType(GeneratedsSuper): self.buildChildren(child, node, nodeName_) return self def buildAttributes(self, node, attrs, already_processed): - pass + value = find_attr_value_('integer_range_1_value_with_default', node) + if value is not None and 'integer_range_1_value_with_default' not in already_processed: + already_processed.add('integer_range_1_value_with_default') + self.integer_range_1_value_with_default = value + self.validate_integer_range_1_st(self.integer_range_1_value_with_default) # validate type integer_range_1_st def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'integer_range_1_value': sval_ = child_.text diff --git a/tutorial/generateds_tutorial.html b/tutorial/generateds_tutorial.html index c75a80f67d20447dff476a103fcdecf331d35902..6bcda28d5e51a08df8621768c209ffd77d89b42a 100644 --- a/tutorial/generateds_tutorial.html +++ b/tutorial/generateds_tutorial.html @@ -219,7 +219,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">revision:</th><td class="field-body">2.28.2</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.3</td> </tr> </tbody> </table> @@ -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">October 27, 2017</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">December 11, 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-10-27 19:55 UTC. +Generated on: 2017-12-11 21:49 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.txt b/tutorial/generateds_tutorial.txt index 0fb9cbf259f77157aa2bbdfe51ee2ffdb6e6c5c2..31249981150c05f3dbc83b122814509ee3d7a79d 100644 --- a/tutorial/generateds_tutorial.txt +++ b/tutorial/generateds_tutorial.txt @@ -11,7 +11,7 @@ generateDS -- Introduction and Tutorial .. version -:revision: 2.29.2 +:revision: 2.29.3 .. version diff --git a/tutorial/generateds_tutorial.zip b/tutorial/generateds_tutorial.zip index 09298b890a24b88b384642a10cc2b5baa95ed2d9..4c6f535896bcc912fc6e2b4a715ba0ec1c59a05b 100644 Binary files a/tutorial/generateds_tutorial.zip and b/tutorial/generateds_tutorial.zip differ