From 60c83c264b71f2cda909e3fa31cd03e851a1f9f5 Mon Sep 17 00:00:00 2001
From: Dave Kuhlman <dkuhlman@davekuhlman.org>
Date: Mon, 11 Dec 2017 13:59:07 -0800
Subject: [PATCH] V. 2.29.3.  Incorporated pull request from Alim Gokkaya
 fixing resolving simple types.

---
 README.rst                               |  13 +++++
 generateDS.html                          |   6 +--
 generateDS.py                            |   2 +-
 generateDS.txt                           |   2 +-
 generateds_gui_notes.html                |   6 +--
 generateds_gui_notes.txt                 |   2 +-
 gui/generateds_gui.py                    |   2 +-
 librarytemplate_howto.html               |   6 +--
 librarytemplate_howto.txt                |   2 +-
 process_includes.py                      |   2 +-
 setup.py                                 |   2 +-
 tests/check_results.rb                   |   2 -
 tests/to_etree1_sup.py                   |   2 +-
 tests/validate_simpletypes1_out.xml      |   9 ++--
 tests/validate_simpletypes1_sub.py       |   4 +-
 tests/validate_simpletypes1_sup.py       |  20 ++++++--
 tests/validate_simpletypes1_warnings.txt |  60 +++++++++++------------
 tests/validate_simpletypes2_sub.py       |   4 +-
 tests/validate_simpletypes2_sup.py       |  20 ++++++--
 tutorial/generateds_tutorial.html        |   6 +--
 tutorial/generateds_tutorial.txt         |   2 +-
 tutorial/generateds_tutorial.zip         | Bin 48769 -> 48769 bytes
 22 files changed, 103 insertions(+), 71 deletions(-)

diff --git a/README.rst b/README.rst
index 80b1b68..f00ca0e 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 e5ce8f7..1dcd6c3 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 42da8e1..146f8a0 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 42c1493..9d1961b 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 1b1d634..0c269e4 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 d4a8e61..a45bea9 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 ff91ffd..acf8ee3 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 2ecc0d4..5897afc 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 f10f55e..0515349 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 08ee2c8..8568033 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 1eb1c68..da910b9 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 63ce8b7..34fc95b 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 caca107..911ec6d 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 b6d8392..8193ffe 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 de1aa85..998fedf 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 23e80e3..938d76e 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 ecb033a..0309c68 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 de1aa85..998fedf 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 23e80e3..938d76e 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 c75a80f..6bcda28 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 0fb9cbf..3124998 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
GIT binary patch
delta 10926
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
ae(v};fVOoQ{Zkxyrx5(#=MFXKr2Ah3Cy3wx

delta 10928
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

-- 
GitLab