From 1035151915b04b32b7983a62105e78ffc1a1bdf4 Mon Sep 17 00:00:00 2001
From: Dave Kuhlman <dkuhlman@davekuhlman.org>
Date: Tue, 22 Aug 2017 13:00:53 -0700
Subject: [PATCH] Django changes (float fix and class sufix suppression)

---
 README.rst                               |  14 ++++++
 django/gends_generate_django.py          |  10 +++-
 django/gends_run_gen_django.py           |  22 +++++++--
 django/generatedssuper.py                |  27 ++++++----
 generateDS.html                          |   8 +--
 generateDS.py                            |   6 ++-
 generateDS.txt                           |   2 +-
 generateds_gui_notes.html                |   8 +--
 generateds_gui_notes.txt                 |   2 +-
 gui/generateds_gui.py                    |   2 +-
 librarytemplate_howto.html               |   8 +--
 librarytemplate_howto.txt                |   2 +-
 process_includes.py                      |   2 +-
 setup.py                                 |   2 +-
 tests/OnePer/oneperType00_2One.py        |   1 +
 tests/OnePer/oneperType01_2One.py        |   1 +
 tests/OnePer/oneperType02_2One.py        |   1 +
 tests/OnePer/oneperType03_2One.py        |   1 +
 tests/abstract_type1_sub.py              |   1 +
 tests/abstract_type1_sup.py              |   1 +
 tests/annotations1_sub.py                |   1 +
 tests/annotations1_sup.py                |   1 +
 tests/anonymous_type1_sub.py             |   1 +
 tests/anonymous_type1_sup.py             |   1 +
 tests/anysimpletype1_sub.py              |   1 +
 tests/anysimpletype1_sup.py              |   1 +
 tests/anywildcard1_sub.py                |   1 +
 tests/anywildcard1_sup.py                |   1 +
 tests/attr_groups1_sub.py                |   1 +
 tests/attr_groups1_sup.py                |   1 +
 tests/catalogtest1_sub.py                |   1 +
 tests/catalogtest1_sup.py                |   1 +
 tests/cdata1_sub.py                      |   1 +
 tests/cdata1_sup.py                      |   1 +
 tests/check_results.rb                   |   2 +
 tests/cleanupname1_sub.py                |   1 +
 tests/cleanupname1_sup.py                |   1 +
 tests/copy_all                           |   2 +
 tests/defaults_cases1_sub.py             |   1 +
 tests/defaults_cases1_sup.py             |   1 +
 tests/defaults_coverage1_sub.py          |   1 +
 tests/defaults_coverage1_sup.py          |   1 +
 tests/disable_xml_super1_sub.py          |   1 +
 tests/disable_xml_super1_sup.py          |   1 +
 tests/extensions1_sub.py                 |   1 +
 tests/extensions1_sup.py                 |   1 +
 tests/ipo1_sub.py                        |   1 +
 tests/ipo1_sup.py                        |   1 +
 tests/ipo2_sub.py                        |   1 +
 tests/ipo2_sup.py                        |   1 +
 tests/mapcleanname1_sub.py               |   1 +
 tests/mapcleanname1_sup.py               |   1 +
 tests/nested_def1_sub.py                 |   1 +
 tests/nested_def1_sup.py                 |   1 +
 tests/out1_sub.py                        |   1 +
 tests/out1_sup.py                        |   1 +
 tests/people_procincl1_sub.py            |   1 +
 tests/people_procincl1_sup.py            |   1 +
 tests/prefix_classname1_sub.py           |   1 +
 tests/prefix_classname1_sup.py           |   1 +
 tests/recursive_simpletype1_sub.py       |   1 +
 tests/recursive_simpletype1_sup.py       |   1 +
 tests/reference_simpletype1_sub.py       |   1 +
 tests/reference_simpletype1_sup.py       |   1 +
 tests/rem_dup_elems1_sub.py              |   1 +
 tests/rem_dup_elems1_sup.py              |   1 +
 tests/simplecontent_restriction1_sub.py  |   1 +
 tests/simplecontent_restriction1_sup.py  |   1 +
 tests/simpletype_memberspecs1_sub.py     |   1 +
 tests/simpletype_memberspecs1_sup.py     |   1 +
 tests/simpletypes_other1_sub.py          |   1 +
 tests/simpletypes_other1_sup.py          |   1 +
 tests/to_etree1_sub.py                   |   1 +
 tests/to_etree1_sup.py                   |   1 +
 tests/validate_simpletypes1_sub.py       |   1 +
 tests/validate_simpletypes1_sup.py       |   1 +
 tests/validate_simpletypes1_warnings.txt |  60 +++++++++++------------
 tests/validate_simpletypes2_sub.py       |   1 +
 tests/validate_simpletypes2_sup.py       |   1 +
 tutorial/generateds_tutorial.html        |   8 +--
 tutorial/generateds_tutorial.txt         |   2 +-
 tutorial/generateds_tutorial.zip         | Bin 48768 -> 48774 bytes
 82 files changed, 182 insertions(+), 69 deletions(-)
 mode change 100644 => 100755 django/gends_run_gen_django.py

diff --git a/README.rst b/README.rst
index 8c9435b..3cd952b 100644
--- a/README.rst
+++ b/README.rst
@@ -141,6 +141,20 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 Change history
 --------------
 
+Version 2.28b (08/22/2017)
+
+- Fix for Django models and forms generation -- "float" data type
+  was being mapped and was not treated as a simple data type.
+  Thanks to Sriram Sundar for catching and reporting this.
+- Sriram also requested that in the Django models and forms
+  generation, we be able to omit the "_model" and "_form" suffix on
+  generated class names.  There is now a "--no-class-suffixes"
+  command line option accepted by both gends_run_gen_django.py
+  and gends_generate_django.py to do that.  Thanks to Sriram for
+  this suggestion.
+- Added Python version to the information in the comments at the top
+  of generated modules.
+
 Version 2.28a (06/23/2017)
 
 Significant work by Alim Gokkaya.  Thank you, Alim.
diff --git a/django/gends_generate_django.py b/django/gends_generate_django.py
index e40ae06..28e7913 100755
--- a/django/gends_generate_django.py
+++ b/django/gends_generate_django.py
@@ -8,6 +8,8 @@ Usage:
 Options:
     -f, --force
             Overwrite models.py and forms.py without asking.
+    --no-class-suffixes
+            Do not add suffix "_model" and _form" to generated class names.
     -h, --help
             Show this help message.
 """
@@ -110,7 +112,8 @@ def generate_model(options, module_name):
     for class_name in supermod.__all__:
         if hasattr(supermod, class_name):
             cls = getattr(supermod, class_name)
-            cls.generate_model_(wrtmodels, wrtforms, unique_name_map)
+            cls.generate_model_(
+                wrtmodels, wrtforms, unique_name_map, options.class_suffixes)
         else:
             sys.stderr.write('class %s not defined\n' % (class_name, ))
     wrtadmin('from django.contrib import admin\n')
@@ -172,16 +175,19 @@ def main():
         opts, args = getopt.getopt(
             args, 'hfs:', [
                 'help', 'force',
-                'suffix=', ])
+                'no-class-suffixes', ])
     except:
         usage()
     options = ProgramOptions()
     options.force = False
+    options.class_suffixes = True
     for opt, val in opts:
         if opt in ('-h', '--help'):
             usage()
         elif opt in ('-f', '--force'):
             options.force = True
+        elif opt == '--no-class-suffixes':
+            options.class_suffixes = False
     if len(args) != 1:
         usage()
     module_name = args[0]
diff --git a/django/gends_run_gen_django.py b/django/gends_run_gen_django.py
old mode 100644
new mode 100755
index 51ed73f..14e9109
--- a/django/gends_run_gen_django.py
+++ b/django/gends_run_gen_django.py
@@ -18,6 +18,9 @@ Options:
     -v, --verbose   Display additional information while running.
     -s, --script    Write out (display) the command lines used.  Can
                     be captured and used in a shell script, for example.
+    --no-class-suffixes
+                    Do not add suffix "_model" and _form" to
+                    generated class names.
 Examples:
     python gends_run_gen_django.py my_schema.xsd
     python gends_run_gen_django.py -f -p ../generateDS.py my_other_schema.xsd
@@ -93,10 +96,16 @@ def generate(options, schema_file_name):
     )
     if not run_cmd(options, args):
         return
-    args = (
-        './gends_generate_django.py', '-f',
-        bindings_file_stem,
-    )
+    if options['class_suffixes']:
+        args = (
+            './gends_generate_django.py', '-f',
+            bindings_file_stem,
+        )
+    else:
+        args = (
+            './gends_generate_django.py', '-f', '--no-class-suffixes',
+            bindings_file_stem,
+        )
     if not run_cmd(options, args):
         return
 
@@ -153,6 +162,7 @@ def main():
         opts, args = getopt.getopt(args, 'hvfp:s', [
             'help', 'verbose', 'script',
             'force', 'path-to-generateDS-script=',
+            'no-class-suffixes',
         ])
     except:
         usage()
@@ -161,6 +171,7 @@ def main():
     options['verbose'] = False
     options['script'] = False
     options['path'] = './generateDS.py'
+    options['class_suffixes'] = True
     for opt, val in opts:
         if opt in ('-h', '--help'):
             usage()
@@ -172,6 +183,8 @@ def main():
             options['script'] = True
         elif opt in ('-p', '--path-to-generateDS-script'):
             options['path'] = val
+        elif opt == '--no-class-suffixes':
+            options['class_suffixes'] = False
     if not os.path.exists(options['path']):
         sys.exit(
             '\n*** error: Cannot find generateDS.py.  '
@@ -184,4 +197,5 @@ def main():
 
 if __name__ == '__main__':
     #import pdb; pdb.set_trace()
+    #import ipdb; ipdb.set_trace()
     main()
diff --git a/django/generatedssuper.py b/django/generatedssuper.py
index 87e859a..daec5d6 100644
--- a/django/generatedssuper.py
+++ b/django/generatedssuper.py
@@ -154,10 +154,19 @@ class GeneratedsSuper(object):
         return prefix, name
 
     @classmethod
-    def generate_model_(cls, wrtmodels, wrtforms, unique_name_map):
+    def generate_model_(
+            cls, wrtmodels, wrtforms, unique_name_map, class_suffixes):
+        if class_suffixes:
+            model_suffix = '_model'
+            form_suffix = '_form'
+        else:
+            model_suffix = ''
+            form_suffix = ''
         class_name = unique_name_map.get(cls.__name__)
-        wrtmodels('\nclass %s_model(models.Model):\n' % (class_name, ))
-        wrtforms('\nclass %s_form(forms.Form):\n' % (class_name, ))
+        wrtmodels('\nclass %s%s(models.Model):\n' % (
+            class_name, model_suffix, ))
+        wrtforms('\nclass %s%s(forms.Form):\n' % (
+            class_name, form_suffix, ))
         if cls.superclass is not None:
             wrtmodels('    %s = models.ForeignKey("%s_model")\n' % (
                 cls.superclass.__name__, cls.superclass.__name__, ))
@@ -175,7 +184,7 @@ class GeneratedsSuper(object):
                 name += 'x'
             elif name.endswith('_') and not name == AnyTypeIdentifier:
                 name += 'x'
-            data_type = mapName(cleanupName(data_type))
+            clean_data_type = mapName(cleanupName(data_type))
             if data_type == AnyTypeIdentifier:
                 data_type = 'string'
             if data_type in Simple_type_table:
@@ -224,15 +233,15 @@ class GeneratedsSuper(object):
                     sys.stderr.write('Unhandled simple type: %s %s\n' % (
                         name, data_type, ))
             else:
-                mapped_type = unique_name_map.get(data_type)
+                mapped_type = unique_name_map.get(clean_data_type)
                 if mapped_type is not None:
-                    data_type = mapped_type
+                    clean_data_type = mapped_type
                 wrtmodels(
                     '    %s = models.ForeignKey(\n        "%s_model",\n' % (
-                        name, data_type, ))
+                        name, clean_data_type, ))
                 wrtmodels(
                     '        related_name="{}_{}_{}",\n'.format(
-                        class_name, name, data_type, ))
+                        class_name, name, clean_data_type, ))
                 if is_optional:
                     wrtmodels(
                         '        blank=True, null=True,\n')
@@ -240,7 +249,7 @@ class GeneratedsSuper(object):
                 wrtforms(
                     '    %s = forms.MultipleChoiceField(%s_model.objects'
                     '.all())\n' % (
-                        name, data_type, ))
+                        name, clean_data_type, ))
         wrtmodels('\n')
         wrtmodels('    def __unicode__(self):\n')
         wrtmodels('        return "id: %s" % (self.id, )\n')
diff --git a/generateDS.html b/generateDS.html
index bc11789..827ef04 100644
--- a/generateDS.html
+++ b/generateDS.html
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.14rc2.dev: http://docutils.sourceforge.net/" />
 <title>generateDS -- Generate Data Structures from XML Schema</title>
 <meta name="author" content="Dave Kuhlman" />
 <style type="text/css">
@@ -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.28a</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.28b</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">June 23, 2017</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">August 22, 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-06-23 23:12 UTC.
+Generated on: 2017-08-22 19:57 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 9b591ec..05ab66a 100755
--- a/generateDS.py
+++ b/generateDS.py
@@ -227,7 +227,7 @@ logging.disable(logging.INFO)
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.28a'
+VERSION = '2.28b'
 ##VERSION##
 
 if sys.version_info.major == 2:
@@ -5031,6 +5031,7 @@ TEMPLATE_HEADER = """\
 
 #
 # Generated {tstamp} by generateDS.py{version}.
+# Python {pyversion}
 #
 # Command line options:
 {options1}
@@ -5821,6 +5822,7 @@ except ImportError as exp:
     s1 = TEMPLATE_HEADER.format(
         tstamp=tstamp,
         version=version,
+        pyversion=sys.version.replace('\n', ' '),
         options1=options1,
         args1=args1,
         command_line=command_line,
@@ -6252,6 +6254,7 @@ TEMPLATE_SUBCLASS_HEADER = """\
 
 #
 # Generated %s by generateDS.py%s.
+# Python %s
 #
 # Command line options:
 %s
@@ -6507,6 +6510,7 @@ def generateSubclasses(root, subclassFilename, behaviorFilename,
         options1, args1, command_line = format_options_args(options, args)
         current_working_directory = os.path.split(os.getcwd())[1]
         wrt(TEMPLATE_SUBCLASS_HEADER % (tstamp, version,
+            sys.version.replace('\n', ' '),
             options1, args1,
             command_line, current_working_directory,
             superModule, ExternalEncoding, ))
diff --git a/generateDS.txt b/generateDS.txt
index c4cb9b8..58303ba 100644
--- a/generateDS.txt
+++ b/generateDS.txt
@@ -12,7 +12,7 @@ generateDS -- Generate Data Structures from XML Schema
 
 .. version
 
-:revision: 2.28a
+:revision: 2.28b
 
 .. version
 
diff --git a/generateds_gui_notes.html b/generateds_gui_notes.html
index e0e7cd2..37cf9c7 100644
--- a/generateds_gui_notes.html
+++ b/generateds_gui_notes.html
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.14rc2.dev: http://docutils.sourceforge.net/" />
 <title>GenerateDS GUI Notes</title>
 <meta name="author" content="Dave Kuhlman" />
 <style type="text/css">
@@ -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.28a</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.28b</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">June 23, 2017</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">August 22, 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-06-23 23:12 UTC.
+Generated on: 2017-08-22 19:57 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 4830511..2783eda 100644
--- a/generateds_gui_notes.txt
+++ b/generateds_gui_notes.txt
@@ -12,7 +12,7 @@ GenerateDS GUI Notes
 
 .. version
 
-:revision: 2.28a
+:revision: 2.28b
 
 .. version
 
diff --git a/gui/generateds_gui.py b/gui/generateds_gui.py
index fc1e734..2f127e3 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.28a'
+VERSION = '2.28b'
 ##VERSION##
 
 
diff --git a/librarytemplate_howto.html b/librarytemplate_howto.html
index cb45e02..a1de32b 100644
--- a/librarytemplate_howto.html
+++ b/librarytemplate_howto.html
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.14rc2.dev: http://docutils.sourceforge.net/" />
 <title>How to package a generateDS.py generated library</title>
 <meta name="author" content="Dave Kuhlman" />
 <style type="text/css">
@@ -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.28a</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.28b</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">June 23, 2017</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">August 22, 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-06-23 23:12 UTC.
+Generated on: 2017-08-22 19:57 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 6e2f826..6eee107 100644
--- a/librarytemplate_howto.txt
+++ b/librarytemplate_howto.txt
@@ -8,7 +8,7 @@ How to package a generateDS.py generated library
 
 .. version
 
-:revision: 2.28a
+:revision: 2.28b
 
 .. version
 
diff --git a/process_includes.py b/process_includes.py
index 1fe384b..e374252 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.28a'
+VERSION = '2.28b'
 ##VERSION##
 
 CatalogDict = {}
diff --git a/setup.py b/setup.py
index 145feeb..f9f366a 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.28a",
+    version="2.28b",
 ##VERSION##
     author="Dave Kuhlman",
     author_email="dkuhlman@davekuhlman.org",
diff --git a/tests/OnePer/oneperType00_2One.py b/tests/OnePer/oneperType00_2One.py
index 6a9383a..7c88aa9 100644
--- a/tests/OnePer/oneperType00_2One.py
+++ b/tests/OnePer/oneperType00_2One.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/OnePer/oneperType01_2One.py b/tests/OnePer/oneperType01_2One.py
index 9cb957b..561cf1e 100644
--- a/tests/OnePer/oneperType01_2One.py
+++ b/tests/OnePer/oneperType01_2One.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/OnePer/oneperType02_2One.py b/tests/OnePer/oneperType02_2One.py
index 2cc43fd..095fbb7 100644
--- a/tests/OnePer/oneperType02_2One.py
+++ b/tests/OnePer/oneperType02_2One.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/OnePer/oneperType03_2One.py b/tests/OnePer/oneperType03_2One.py
index cf8139e..738a6dd 100644
--- a/tests/OnePer/oneperType03_2One.py
+++ b/tests/OnePer/oneperType03_2One.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/abstract_type1_sub.py b/tests/abstract_type1_sub.py
index b7e815b..7895f4e 100644
--- a/tests/abstract_type1_sub.py
+++ b/tests/abstract_type1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/abstract_type1_sup.py b/tests/abstract_type1_sup.py
index 72181e6..76b59cc 100644
--- a/tests/abstract_type1_sup.py
+++ b/tests/abstract_type1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/annotations1_sub.py b/tests/annotations1_sub.py
index ee65ce6..eab0241 100644
--- a/tests/annotations1_sub.py
+++ b/tests/annotations1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/annotations1_sup.py b/tests/annotations1_sup.py
index 784711b..6ee0fb0 100644
--- a/tests/annotations1_sup.py
+++ b/tests/annotations1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/anonymous_type1_sub.py b/tests/anonymous_type1_sub.py
index e6d3696..4969be8 100644
--- a/tests/anonymous_type1_sub.py
+++ b/tests/anonymous_type1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/anonymous_type1_sup.py b/tests/anonymous_type1_sup.py
index 757d76b..c5097e2 100644
--- a/tests/anonymous_type1_sup.py
+++ b/tests/anonymous_type1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/anysimpletype1_sub.py b/tests/anysimpletype1_sub.py
index a8d0cc3..6689ed9 100644
--- a/tests/anysimpletype1_sub.py
+++ b/tests/anysimpletype1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/anysimpletype1_sup.py b/tests/anysimpletype1_sup.py
index a42b892..9dc2df8 100644
--- a/tests/anysimpletype1_sup.py
+++ b/tests/anysimpletype1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/anywildcard1_sub.py b/tests/anywildcard1_sub.py
index 7e40b28..c58ae95 100644
--- a/tests/anywildcard1_sub.py
+++ b/tests/anywildcard1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/anywildcard1_sup.py b/tests/anywildcard1_sup.py
index 863dd05..51bc9cf 100644
--- a/tests/anywildcard1_sup.py
+++ b/tests/anywildcard1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/attr_groups1_sub.py b/tests/attr_groups1_sub.py
index 446338a..21a53f5 100644
--- a/tests/attr_groups1_sub.py
+++ b/tests/attr_groups1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/attr_groups1_sup.py b/tests/attr_groups1_sup.py
index 1e8f030..489d825 100644
--- a/tests/attr_groups1_sup.py
+++ b/tests/attr_groups1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/catalogtest1_sub.py b/tests/catalogtest1_sub.py
index ba9ea61..6be03be 100644
--- a/tests/catalogtest1_sub.py
+++ b/tests/catalogtest1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/catalogtest1_sup.py b/tests/catalogtest1_sup.py
index b63985e..1d2f9cf 100644
--- a/tests/catalogtest1_sup.py
+++ b/tests/catalogtest1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/cdata1_sub.py b/tests/cdata1_sub.py
index 137519f..d9bde8c 100644
--- a/tests/cdata1_sub.py
+++ b/tests/cdata1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/cdata1_sup.py b/tests/cdata1_sup.py
index 6058986..ed4c2ba 100644
--- a/tests/cdata1_sup.py
+++ b/tests/cdata1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/check_results.rb b/tests/check_results.rb
index f9ad8d8..015c7b3 100755
--- a/tests/check_results.rb
+++ b/tests/check_results.rb
@@ -69,6 +69,8 @@ $commands = [
   "diff -u nested_def1_sup.py nested_def2_sup.py",
   "diff -u catalogtest1_sub.py catalogtest2_sub.py",
   "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",
 ]
 
 def check
diff --git a/tests/cleanupname1_sub.py b/tests/cleanupname1_sub.py
index c00f3e0..6a1acf0 100644
--- a/tests/cleanupname1_sub.py
+++ b/tests/cleanupname1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/cleanupname1_sup.py b/tests/cleanupname1_sup.py
index dcdd1aa..83950e7 100644
--- a/tests/cleanupname1_sup.py
+++ b/tests/cleanupname1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/copy_all b/tests/copy_all
index b89ea43..70abfa9 100755
--- a/tests/copy_all
+++ b/tests/copy_all
@@ -57,3 +57,5 @@ cp catalogtest2_sup.py catalogtest1_sup.py
 cp catalogtest2_sub.py catalogtest1_sub.py
 cp rem_dup_elems2_sup.py rem_dup_elems1_sup.py
 cp rem_dup_elems2_sub.py rem_dup_elems1_sub.py
+cp disable_xml_super2_sup.py disable_xml_super1_sup.py
+cp disable_xml_super2_sub.py disable_xml_super1_sub.py
diff --git a/tests/defaults_cases1_sub.py b/tests/defaults_cases1_sub.py
index 3e60267..ee44fea 100644
--- a/tests/defaults_cases1_sub.py
+++ b/tests/defaults_cases1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/defaults_cases1_sup.py b/tests/defaults_cases1_sup.py
index 119f2dc..558b863 100644
--- a/tests/defaults_cases1_sup.py
+++ b/tests/defaults_cases1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/defaults_coverage1_sub.py b/tests/defaults_coverage1_sub.py
index 3452d18..776bf45 100644
--- a/tests/defaults_coverage1_sub.py
+++ b/tests/defaults_coverage1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/defaults_coverage1_sup.py b/tests/defaults_coverage1_sup.py
index 7bd6d4f..51e7227 100644
--- a/tests/defaults_coverage1_sup.py
+++ b/tests/defaults_coverage1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/disable_xml_super1_sub.py b/tests/disable_xml_super1_sub.py
index 4f116e8..e7184a2 100644
--- a/tests/disable_xml_super1_sub.py
+++ b/tests/disable_xml_super1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/disable_xml_super1_sup.py b/tests/disable_xml_super1_sup.py
index 9ad8be9..db04580 100644
--- a/tests/disable_xml_super1_sup.py
+++ b/tests/disable_xml_super1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/extensions1_sub.py b/tests/extensions1_sub.py
index 27b9cc6..3a3919f 100644
--- a/tests/extensions1_sub.py
+++ b/tests/extensions1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/extensions1_sup.py b/tests/extensions1_sup.py
index dd9b80a..a3351f9 100644
--- a/tests/extensions1_sup.py
+++ b/tests/extensions1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/ipo1_sub.py b/tests/ipo1_sub.py
index 01e5965..4fd7fcb 100644
--- a/tests/ipo1_sub.py
+++ b/tests/ipo1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/ipo1_sup.py b/tests/ipo1_sup.py
index 9828532..af04ab3 100644
--- a/tests/ipo1_sup.py
+++ b/tests/ipo1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/ipo2_sub.py b/tests/ipo2_sub.py
index 01e5965..4fd7fcb 100644
--- a/tests/ipo2_sub.py
+++ b/tests/ipo2_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/ipo2_sup.py b/tests/ipo2_sup.py
index 9828532..af04ab3 100644
--- a/tests/ipo2_sup.py
+++ b/tests/ipo2_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/mapcleanname1_sub.py b/tests/mapcleanname1_sub.py
index fc4dbd2..d1ff8c1 100644
--- a/tests/mapcleanname1_sub.py
+++ b/tests/mapcleanname1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/mapcleanname1_sup.py b/tests/mapcleanname1_sup.py
index b93a409..257c9b9 100644
--- a/tests/mapcleanname1_sup.py
+++ b/tests/mapcleanname1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/nested_def1_sub.py b/tests/nested_def1_sub.py
index 14bfb18..e13ea31 100644
--- a/tests/nested_def1_sub.py
+++ b/tests/nested_def1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/nested_def1_sup.py b/tests/nested_def1_sup.py
index 0032b18..1d54e5a 100644
--- a/tests/nested_def1_sup.py
+++ b/tests/nested_def1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/out1_sub.py b/tests/out1_sub.py
index abd3ce1..fa69988 100644
--- a/tests/out1_sub.py
+++ b/tests/out1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/out1_sup.py b/tests/out1_sup.py
index 26c0190..ed5fc32 100644
--- a/tests/out1_sup.py
+++ b/tests/out1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/people_procincl1_sub.py b/tests/people_procincl1_sub.py
index 8d3b5e7..bdb5d63 100644
--- a/tests/people_procincl1_sub.py
+++ b/tests/people_procincl1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/people_procincl1_sup.py b/tests/people_procincl1_sup.py
index 9689e83..da0eeba 100644
--- a/tests/people_procincl1_sup.py
+++ b/tests/people_procincl1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/prefix_classname1_sub.py b/tests/prefix_classname1_sub.py
index df7507a..18c80fc 100644
--- a/tests/prefix_classname1_sub.py
+++ b/tests/prefix_classname1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/prefix_classname1_sup.py b/tests/prefix_classname1_sup.py
index e4db412..92afac2 100644
--- a/tests/prefix_classname1_sup.py
+++ b/tests/prefix_classname1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/recursive_simpletype1_sub.py b/tests/recursive_simpletype1_sub.py
index 336b026..8518e2d 100644
--- a/tests/recursive_simpletype1_sub.py
+++ b/tests/recursive_simpletype1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/recursive_simpletype1_sup.py b/tests/recursive_simpletype1_sup.py
index 45de91d..7a2e836 100644
--- a/tests/recursive_simpletype1_sup.py
+++ b/tests/recursive_simpletype1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/reference_simpletype1_sub.py b/tests/reference_simpletype1_sub.py
index 9297c7a..84a31d3 100644
--- a/tests/reference_simpletype1_sub.py
+++ b/tests/reference_simpletype1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/reference_simpletype1_sup.py b/tests/reference_simpletype1_sup.py
index cc8178a..941fa28 100644
--- a/tests/reference_simpletype1_sup.py
+++ b/tests/reference_simpletype1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/rem_dup_elems1_sub.py b/tests/rem_dup_elems1_sub.py
index c9f7ba4..4f13ab1 100644
--- a/tests/rem_dup_elems1_sub.py
+++ b/tests/rem_dup_elems1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/rem_dup_elems1_sup.py b/tests/rem_dup_elems1_sup.py
index c21b87f..cee7640 100644
--- a/tests/rem_dup_elems1_sup.py
+++ b/tests/rem_dup_elems1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/simplecontent_restriction1_sub.py b/tests/simplecontent_restriction1_sub.py
index 8ed52f9..580c6d2 100644
--- a/tests/simplecontent_restriction1_sub.py
+++ b/tests/simplecontent_restriction1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/simplecontent_restriction1_sup.py b/tests/simplecontent_restriction1_sup.py
index ae5f74a..7056a19 100644
--- a/tests/simplecontent_restriction1_sup.py
+++ b/tests/simplecontent_restriction1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/simpletype_memberspecs1_sub.py b/tests/simpletype_memberspecs1_sub.py
index 908d5c4..a260c88 100644
--- a/tests/simpletype_memberspecs1_sub.py
+++ b/tests/simpletype_memberspecs1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/simpletype_memberspecs1_sup.py b/tests/simpletype_memberspecs1_sup.py
index ec34c2a..307d905 100644
--- a/tests/simpletype_memberspecs1_sup.py
+++ b/tests/simpletype_memberspecs1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/simpletypes_other1_sub.py b/tests/simpletypes_other1_sub.py
index 4792c10..6afe089 100644
--- a/tests/simpletypes_other1_sub.py
+++ b/tests/simpletypes_other1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/simpletypes_other1_sup.py b/tests/simpletypes_other1_sup.py
index 1c58d5c..1dcf61f 100644
--- a/tests/simpletypes_other1_sup.py
+++ b/tests/simpletypes_other1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/to_etree1_sub.py b/tests/to_etree1_sub.py
index de64934..300d89c 100644
--- a/tests/to_etree1_sub.py
+++ b/tests/to_etree1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/to_etree1_sup.py b/tests/to_etree1_sup.py
index 09ba4c3..17befe2 100644
--- a/tests/to_etree1_sup.py
+++ b/tests/to_etree1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/validate_simpletypes1_sub.py b/tests/validate_simpletypes1_sub.py
index e0f4a98..3edf739 100644
--- a/tests/validate_simpletypes1_sub.py
+++ b/tests/validate_simpletypes1_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/validate_simpletypes1_sup.py b/tests/validate_simpletypes1_sup.py
index 03af44f..d159830 100644
--- a/tests/validate_simpletypes1_sup.py
+++ b/tests/validate_simpletypes1_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/validate_simpletypes1_warnings.txt b/tests/validate_simpletypes1_warnings.txt
index c166f0e..ecb033a 100644
--- a/tests/validate_simpletypes1_warnings.txt
+++ b/tests/validate_simpletypes1_warnings.txt
@@ -1,60 +1,60 @@
-tests/validate_simpletypes2_sup.py:1042: UserWarning: Value "2" does not match xsd minExclusive restriction on integer_range_1_st
+tests/validate_simpletypes2_sup.py:1043: 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:1052: UserWarning: Value "mmaaa1234mnopzzz" does not match xsd pattern restrictions: [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']]
+tests/validate_simpletypes2_sup.py:1053: 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:1065: UserWarning: Value "floatxx" does not match xsd enumeration restriction on token_enum_st
+tests/validate_simpletypes2_sup.py:1066: 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:1072: UserWarning: Value "22" does not match xsd maxInclusive restriction on integer_range_incl_st
+tests/validate_simpletypes2_sup.py:1073: 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:1077: UserWarning: Value "-40" does not match xsd minExclusive restriction on integer_range_excl_st
+tests/validate_simpletypes2_sup.py:1078: 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:1086: UserWarning: Value "mno pqr" does not match xsd minLength restriction on min_max_length_st
+tests/validate_simpletypes2_sup.py:1087: 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:1091: UserWarning: Value "012345" does not match xsd length restriction on length_st
+tests/validate_simpletypes2_sup.py:1092: 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:1168: UserWarning: Value "0.2" does not match xsd minInclusive restriction on anonymous_float_valueType
+tests/validate_simpletypes2_sup.py:1169: 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:1162: UserWarning: Value "efgh" does not match xsd pattern restrictions: [['^abcd$|^ef\\|gh$']]
+tests/validate_simpletypes2_sup.py:1163: 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:1044: UserWarning: Value "9" does not match xsd maxExclusive restriction on integer_range_1_st
+tests/validate_simpletypes2_sup.py:1045: 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:1052: UserWarning: Value "aaa1234mnopzzzbcd" does not match xsd pattern restrictions: [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']]
+tests/validate_simpletypes2_sup.py:1053: 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:1070: UserWarning: Value "-50" does not match xsd minInclusive restriction on integer_range_incl_st
+tests/validate_simpletypes2_sup.py:1071: 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:1084: UserWarning: Value "asdf asdf asdf asdf asdf asdf" does not match xsd maxLength restriction on min_max_length_st
+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
   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:1091: UserWarning: Value "01234567890" does not match xsd length restriction on length_st
+tests/validate_simpletypes2_sup.py:1092: 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:1101: UserWarning: Value "2015-05-01" does not match xsd minInclusive restriction on date_minincl_st
+tests/validate_simpletypes2_sup.py:1102: 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:1106: UserWarning: Value "2015-11-01" does not match xsd maxInclusive restriction on date_maxincl_st
+tests/validate_simpletypes2_sup.py:1107: 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:1111: UserWarning: Value "2015-05-01" does not match xsd minExclusive restriction on date_minexcl_st
+tests/validate_simpletypes2_sup.py:1112: 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:1116: UserWarning: Value "2015-11-01" does not match xsd maxExclusive restriction on date_maxexcl_st
+tests/validate_simpletypes2_sup.py:1117: 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:1121: UserWarning: Value "13:30:00" does not match xsd minInclusive restriction on time_minincl_st
+tests/validate_simpletypes2_sup.py:1122: 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:1126: UserWarning: Value "17:00:00" does not match xsd maxInclusive restriction on time_maxincl_st
+tests/validate_simpletypes2_sup.py:1127: 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:1131: UserWarning: Value "13:30:00" does not match xsd minExclusive restriction on time_minexcl_st
+tests/validate_simpletypes2_sup.py:1132: 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:1136: UserWarning: Value "17:00:00" does not match xsd maxExclusive restriction on time_maxexcl_st
+tests/validate_simpletypes2_sup.py:1137: 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:1141: UserWarning: Value "2015-06-01 13:20:10" does not match xsd minInclusive restriction on datetime_minincl_st
+tests/validate_simpletypes2_sup.py:1142: 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:1146: UserWarning: Value "2015-11-01 14:20:10" does not match xsd maxInclusive restriction on datetime_maxincl_st
+tests/validate_simpletypes2_sup.py:1147: 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:1151: UserWarning: Value "2015-06-01 13:20:10" does not match xsd minExclusive restriction on datetime_minexcl_st
+tests/validate_simpletypes2_sup.py:1152: 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:1156: UserWarning: Value "2015-11-01 14:20:10" does not match xsd maxExclusive restriction on datetime_maxexcl_st
+tests/validate_simpletypes2_sup.py:1157: 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:1170: UserWarning: Value "6.6" does not match xsd maxInclusive restriction on anonymous_float_valueType
+tests/validate_simpletypes2_sup.py:1171: 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:1049: UserWarning: Value "aaa12zzz" does not match xsd minLength restriction on pattern_st
+tests/validate_simpletypes2_sup.py:1050: 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:1052: UserWarning: Value "aaa12zzz" does not match xsd pattern restrictions: [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']]
+tests/validate_simpletypes2_sup.py:1053: 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:1588: UserWarning: Value "pqrst" does not match xsd minLength restriction on simpleTwoElementTwoType
+tests/validate_simpletypes2_sup.py:1589: 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 e0f4a98..3edf739 100644
--- a/tests/validate_simpletypes2_sub.py
+++ b/tests/validate_simpletypes2_sub.py
@@ -2,6 +2,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/validate_simpletypes2_sup.py b/tests/validate_simpletypes2_sup.py
index 03af44f..d159830 100644
--- a/tests/validate_simpletypes2_sup.py
+++ b/tests/validate_simpletypes2_sup.py
@@ -3,6 +3,7 @@
 
 #
 # Generated  by generateDS.py.
+# Python 2.7.13 (default, May  2 2017, 14:07:15)  [GCC 6.3.0 20170406]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tutorial/generateds_tutorial.html b/tutorial/generateds_tutorial.html
index 648e52e..fa7972f 100644
--- a/tutorial/generateds_tutorial.html
+++ b/tutorial/generateds_tutorial.html
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.14rc2.dev: http://docutils.sourceforge.net/" />
 <title>generateDS -- Introduction and Tutorial</title>
 <meta name="author" content="Dave Kuhlman" />
 <style type="text/css">
@@ -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.28a</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.28b</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">June 23, 2017</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">August 22, 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-06-23 23:12 UTC.
+Generated on: 2017-08-22 19:57 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 69e9efd..1799a52 100644
--- a/tutorial/generateds_tutorial.txt
+++ b/tutorial/generateds_tutorial.txt
@@ -11,7 +11,7 @@ generateDS -- Introduction and Tutorial
 
 .. version
 
-:revision: 2.28a
+:revision: 2.28b
 
 .. version
 
diff --git a/tutorial/generateds_tutorial.zip b/tutorial/generateds_tutorial.zip
index f103919d46c6d0eb3cb7128d9d41e5a87326d436..2f74d7acf124128c19fcfa4076aafdc1252d6cb1 100644
GIT binary patch
delta 12868
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

delta 12850
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
Q0aBAazC#9Mxc~qF0HY;ZyZ`_I

-- 
GitLab