diff --git a/README b/README index 9eeca0dd6ab2ea0a20322f8b48b91f4a2b16de29..f32d746bd9ad5cd803bd66007b3c794c3d0bbdbd 100644 --- a/README +++ b/README @@ -141,6 +141,15 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Change history -------------- +Version 2.20b (03/28/2016) + +- Fixes to handling of simpleType with and without restrictions on + another defined simpleType. These were not being handled + correctly when the name of the simpleType contained a dash. + Thanks to Ryku for identifying this problem and for a very helpful + description of what was wrong and for providing schemas to + reproduce the problem. + Version 2.20a (02/25/2016) - Another patch for Python 2 and 3. We needed to protect against diff --git a/generateDS.html b/generateDS.html index 22537759fa1e83307072287594cbec1699a47bbb..bf07b0ef8080be09875568b8ce6a649a90e31bd1 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.12: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.13: 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.20a</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.20b</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">February 25, 2016</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">March 28, 2016</td> </tr> </tbody> </table> @@ -3171,7 +3171,7 @@ following among others:</p> <div class="footer"> <hr class="footer" /> <a class="reference external" href="generateDS.txt">View document source</a>. -Generated on: 2016-02-26 00:54 UTC. +Generated on: 2016-03-28 18:25 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 2d90b8f3589b1265e694359e9b6814db28338a51..3d81eb60b9775802b7d37017b93308cc22728bb2 100755 --- a/generateDS.py +++ b/generateDS.py @@ -202,7 +202,7 @@ logging.disable(logging.INFO) # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## -VERSION = '2.20a' +VERSION = '2.20b' ##VERSION## if sys.version_info.major == 2: @@ -1711,9 +1711,9 @@ class XschemaHandler(handler.ContentHandler): # Save the name of the simpleType, but ignore everything # else about it (for now). if 'name' in attrs: - stName = cleanupName(attrs['name']) + stName = attrs['name'] elif len(self.stack) > 0: - stName = cleanupName(self.stack[-1].getName()) + stName = self.stack[-1].getName() else: stName = None # If the parent is an element, mark it as a simpleType. @@ -3356,7 +3356,7 @@ def generateBuildAttributes(wrt, element, hasAttributes): if typeName and typeName in SimpleTypeDict: wrt(" self.validate_%s(self.%s) " "# validate type %s\n" % - (typeName, mappedName, typeName, )) + (cleanupName(typeName), mappedName, typeName, )) if element.getAnyAttribute(): hasAttributes += 1 wrt(' self.anyAttributes_ = {}\n') @@ -3779,11 +3779,11 @@ def generateBuildStandard_1( if child.getMaxOccurs() > 1: wrt(" # validate type %s\n" % (typeName, )) wrt(" self.validate_%s(self.%s[-1])\n" % ( - typeName, mappedName)) + cleanupName(typeName), mappedName, )) else: wrt(" # validate type %s\n" % (typeName, )) wrt(" self.validate_%s(self.%s)\n" % ( - typeName, mappedName, )) + cleanupName(typeName), mappedName, )) # end generateBuildStandard_1 @@ -4594,8 +4594,10 @@ def generateValidatorDefs(wrt, element): if (typeName and typeName in SimpleTypeDict and typeName not in generatedSimpleTypes): + cleanTypeName = cleanupName(typeName) generatedSimpleTypes.append(typeName) - wrt(' def validate_%s(self, value):\n' % (typeName, )) + wrt(' def validate_%s(self, value):\n' % ( + cleanupName(typeName), )) if typeName in SimpleTypeDict: stObj = SimpleTypeDict[typeName] wrt(' # Validate type %s, a restriction ' @@ -4609,15 +4611,15 @@ def generateValidatorDefs(wrt, element): if patterns: wrt(' if not self.gds_validate_simple_patterns(\n') wrt(' self.validate_%s_patterns_, ' - 'value):\n' % (typeName, )) + 'value):\n' % (cleanTypeName, )) s1 = (" warnings_.warn('Value \"%%s\" " "does not match xsd pattern restrictions: %%s' " "%% (value.encode('utf-8'), " - "self.validate_%s_patterns_, ))\n" % (typeName, ) + "self.validate_%s_patterns_, ))\n" % (cleanTypeName, ) ) wrt(s1) wrt(' validate_%s_patterns_ = %s\n' % ( - typeName, patterns, )) + cleanTypeName, patterns, )) attrDefs = element.getAttributeDefs() for key in element.getAttributeDefsList(): attrDef = attrDefs[key] @@ -4625,8 +4627,10 @@ def generateValidatorDefs(wrt, element): if (typeName and typeName in SimpleTypeDict and typeName not in generatedSimpleTypes): + cleanTypeName = cleanupName(typeName) generatedSimpleTypes.append(typeName) - wrt(' def validate_%s(self, value):\n' % (typeName, )) + wrt(' def validate_%s(self, value):\n' % ( + cleanupName(typeName), )) if typeName in SimpleTypeDict: stObj = SimpleTypeDict[typeName] wrt(' # Validate type %s, a restriction on %s.\n' % ( @@ -4639,15 +4643,15 @@ def generateValidatorDefs(wrt, element): if patterns: wrt(' if not self.gds_validate_simple_patterns(\n') wrt(' self.validate_%s_patterns_, ' - 'value):\n' % (typeName, )) + 'value):\n' % (cleanTypeName, )) s1 = (" warnings_.warn('Value \"%%s\" " "does not match xsd pattern restrictions: %%s' " "%% (value.encode('utf-8'), " - "self.validate_%s_patterns_, ))\n" % (typeName, ) + "self.validate_%s_patterns_, ))\n" % (cleanTypeName, ) ) wrt(s1) wrt(' validate_%s_patterns_ = %s\n' % ( - typeName, patterns, )) + cleanTypeName, patterns, )) # end generateValidatorDefs @@ -6491,6 +6495,7 @@ def generate(outfileName, subclassFilename, behaviorFilename, generateSubclasses( root, subclassFilename, behaviorFilename, prefix, options, args, superModule) +# end generate def makeFile(outFileName): @@ -6714,6 +6719,7 @@ def parseAndGenerate( outfile = open(modulePath, "a") outfile.write(exportLine) outfile.close() +# end parseAndGenerate # Function that gets called recursively in order to expand nested references diff --git a/generateDS.txt b/generateDS.txt index c83f3318524a2c786d2db264bde2f9aa006ae083..504406d53e136d95f18ac4e60eae180a5476441f 100644 --- a/generateDS.txt +++ b/generateDS.txt @@ -12,7 +12,7 @@ generateDS -- Generate Data Structures from XML Schema .. version -:revision: 2.20a +:revision: 2.20b .. version diff --git a/gui/generateds_gui.py b/gui/generateds_gui.py index 8005633514af658ca1b931a1eab56a3083009721..bd08890ae92192316cc09735d58e7ebbe0bf461f 100755 --- a/gui/generateds_gui.py +++ b/gui/generateds_gui.py @@ -31,7 +31,7 @@ from libgenerateDS.gui import generateds_gui_session # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## -VERSION = '2.20a' +VERSION = '2.20b' ##VERSION## diff --git a/librarytemplate_howto.html b/librarytemplate_howto.html index 7ba967b52f7a3106a4c3378bcc9c7cc53447faaf..2bbc82d5573de58fbf769237f7d679111a98d7f4 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.12: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.13: 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.20a</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.20b</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">February 25, 2016</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">March 28, 2016</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: 2016-02-26 00:54 UTC. +Generated on: 2016-03-28 18:25 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 4abf50f23aa2de2199d4923e82cddcbb7a74e281..d90b7677a70fb2d0ce3e833f48b8ac15c7543f69 100644 --- a/librarytemplate_howto.txt +++ b/librarytemplate_howto.txt @@ -8,7 +8,7 @@ How to package a generateDS.py generated library .. version -:revision: 2.20a +:revision: 2.20b .. version diff --git a/process_includes.py b/process_includes.py index c4f5e57ab31f0e939efa32bf26f68f70a3f5c13f..4dcab5a724247a9dc210fe1ff1122dd0757558de 100755 --- 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.20a' +VERSION = '2.20b' ##VERSION## CatalogDict = {} diff --git a/setup.py b/setup.py index 6f9c281f31c6a4dfb811eef578907fce078c366a..9a8f42faff03cc93bf4c2de909b9e1e17a579740 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.20a", + version="2.20b", ##VERSION## author="Dave Kuhlman", author_email="dkuhlman@davekuhlman.org", diff --git a/tutorial/generateds_tutorial.html b/tutorial/generateds_tutorial.html index dde286bc104fc9eeccce6e6d295f01581688ff8f..daffbe1e6bee98a624428edf2e8141288efc1a75 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.12: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.13: 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.20a</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.20b</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">February 25, 2016</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">March 28, 2016</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: 2016-02-26 00:54 UTC. +Generated on: 2016-03-28 18:25 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 c2e27d55a9d33565c91acb79eb04f1b3f4b4d93f..291674e4395fcd8a5d896d0999746ba5b94b05e8 100644 --- a/tutorial/generateds_tutorial.txt +++ b/tutorial/generateds_tutorial.txt @@ -11,7 +11,7 @@ generateDS -- Introduction and Tutorial .. version -:revision: 2.20a +:revision: 2.20b .. version diff --git a/tutorial/generateds_tutorial.zip b/tutorial/generateds_tutorial.zip index ea26f8a381ffe394295bbb216537f991ddfcfd55..46a5c5d8e8421887428115def7fe27484ec50054 100644 Binary files a/tutorial/generateds_tutorial.zip and b/tutorial/generateds_tutorial.zip differ