From 5989327f65d7fcc8a25538668e9b12671ecea601 Mon Sep 17 00:00:00 2001 From: dkuhlman <none@none> Date: Thu, 31 Jan 2013 10:40:21 -0800 Subject: [PATCH] Switched from list to set to check already_processed attributes --- Demos/People/people.xml | 1 + Demos/People/people.xsd | 1 + PKG-INFO | 2 +- README | 11 +- generateDS.egg-info/PKG-INFO | 2 +- generateDS.html | 4 +- generateDS.py | 39 ++-- generateDS.txt | 2 +- gui/generateds_gui.py | 2 +- libgenerateDS/gui/generateds_gui.py | 2 +- librarytemplate_howto.html | 4 +- librarytemplate_howto.txt | 2 +- process_includes.py | 2 +- setup.py | 2 +- tests/abstract_type1_sup.py | 36 +-- tests/abstract_type2_sup.py | 36 +-- tests/annotations1_sup.py | 24 +- tests/annotations2_sup.py | 24 +- tests/anysimpletype1_sup.py | 28 ++- tests/anywildcard1_sup.py | 48 ++-- tests/anywildcard2_sup.py | 48 ++-- tests/attr_groups1_sup.py | 56 ++--- tests/attr_groups2_sup.py | 56 ++--- tests/extensions1_sup.py | 166 ++++++++------ tests/ipo1_sup.py | 84 ++++--- tests/ipo2_sup.py | 84 ++++--- tests/out1_sup.py | 242 +++++++++++--------- tests/out2_sup.py | 242 +++++++++++--------- tests/people_procincl1_sup.py | 284 +++++++++++++----------- tests/people_procincl2_sup.py | 284 +++++++++++++----------- tests/recursive_simpletype1_sup.py | 8 +- tests/recursive_simpletype2_sup.py | 8 +- tests/simplecontent_restriction1_sup.py | 70 +++--- tests/simpletype_memberspecs1_sup.py | 28 ++- tests/simpletypes_other1_sup.py | 16 +- tests/simpletypes_other2_sup.py | 16 +- tests/test.py | 2 +- tutorial/generateds_tutorial.html | 4 +- tutorial/generateds_tutorial.txt | 2 +- tutorial/generateds_tutorial.zip | Bin 48724 -> 48722 bytes 40 files changed, 1114 insertions(+), 858 deletions(-) diff --git a/Demos/People/people.xml b/Demos/People/people.xml index 8d2460c..e41aa7f 100644 --- a/Demos/People/people.xml +++ b/Demos/People/people.xml @@ -77,6 +77,7 @@ <elnonposint>0</elnonposint> <eldate>2005-04-26</eldate> <eldatetime>2005-04-26T10:11:12</eldatetime> + <eldatetime1>2006-05-27T10:11:12.40</eldatetime1> <eltoken>aa bb cc dd ee</eltoken> <elshort>123</elshort> diff --git a/Demos/People/people.xsd b/Demos/People/people.xsd index 965b650..b474b5d 100644 --- a/Demos/People/people.xsd +++ b/Demos/People/people.xsd @@ -94,6 +94,7 @@ <xs:element name="elnonnegint" type="xs:nonNegativeInteger"/> <xs:element name="eldate" type="xs:date"/> <xs:element name="eldatetime" type="xs:dateTime"/> + <xs:element name="eldatetime1" type="xs:dateTime"/> <xs:element name="eltoken" type="xs:token"/> <xs:element name="elshort" type="xs:short"/> <xs:element name="ellong" type="xs:long"/> diff --git a/PKG-INFO b/PKG-INFO index db4abf9..b84a8cb 100644 --- a/PKG-INFO +++ b/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: generateDS -Version: 2.8b +Version: 2.8c Summary: Generate Python data structures and XML parser from Xschema Home-page: http://www.rexx.com/~dkuhlman/generateDS.html Author: Dave Kuhlman diff --git a/README b/README index 80ffe7f..8b2cc14 100644 --- a/README +++ b/README @@ -16,10 +16,10 @@ document. The class definitions contain: - Get and set methods for member variables. -- A 'build' method used during parsing to populate and instance. +- A 'build' method used during parsing to populate an instance. -- An 'export' method that will re-create the XML element in an XML - document. +- An 'export' method that will re-create (write out) the XML element + in an XML document. - An 'exportLiteral' method that will write out a text (literal) Python data structure that represents the content of the XML @@ -141,6 +141,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Change history -------------- +Version 2.8c (provisional) (01/30/2013) +- Changed generated check for attributes that are already_processed + to use a set object rather than a list. Since sets are hashed, I + believe that lookup is faster. + Version 2.8b (01/30/2013) - Fixed missing underscore in reference to member names in generateExportLiteralFn_2. Thanks to Sergii Chernysh for diff --git a/generateDS.egg-info/PKG-INFO b/generateDS.egg-info/PKG-INFO index db4abf9..b84a8cb 100644 --- a/generateDS.egg-info/PKG-INFO +++ b/generateDS.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: generateDS -Version: 2.8b +Version: 2.8c Summary: Generate Python data structures and XML parser from Xschema Home-page: http://www.rexx.com/~dkuhlman/generateDS.html Author: Dave Kuhlman diff --git a/generateDS.html b/generateDS.html index a249016..2c56439 100644 --- a/generateDS.html +++ b/generateDS.html @@ -216,7 +216,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.8b</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.8c</td> </tr> </tbody> </table> @@ -225,7 +225,7 @@ They are used by updateversion.py. --> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">date:</th><td class="field-body">January 28, 2013</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">January 31, 2013</td> </tr> </tbody> </table> diff --git a/generateDS.py b/generateDS.py index bb1d880..5d7e56e 100755 --- a/generateDS.py +++ b/generateDS.py @@ -155,7 +155,7 @@ logging.disable(logging.INFO) # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## -VERSION = '2.8b' +VERSION = '2.8c' ##VERSION## GenerateProperties = 0 @@ -2071,7 +2071,7 @@ def generateExportAttributes(wrt, element, hasAttributes): wrt(" if self.%s is not None and '%s' not in " "already_processed:\n" % ( cleanName, cleanName, )) - wrt(" already_processed.append('%s')\n" % ( + wrt(" already_processed.add('%s')\n" % ( cleanName, )) indent = " " else: @@ -2126,7 +2126,7 @@ def generateExportAttributes(wrt, element, hasAttributes): if element.getExtended(): wrt(" if self.extensiontype_ is not None and 'xsi:type' " "not in already_processed:\n") - wrt(" already_processed.append('xsi:type')\n") + wrt(" already_processed.add('xsi:type')\n") wrt(" outfile.write(" "' xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"')\n") wrt(''' outfile.write(''' @@ -2237,7 +2237,7 @@ def generateExportFn(wrt, prefix, element, namespace): wrt(' showIndent(outfile, level, pretty_print)\n') wrt(" outfile.write('<%s%s%s' % (namespace_, name_, " "namespacedef_ and ' ' + namespacedef_ or '', ))\n") - wrt(" already_processed = []\n") + wrt(" already_processed = set()\n") wrt(" self.exportAttributes(outfile, level, " "already_processed, namespace_, name_='%s')\n" % (name, )) @@ -2286,14 +2286,14 @@ def generateExportFn(wrt, prefix, element, namespace): name1 = name[len(xsinamespace2):] name2 = '%s:%s' % (xsinamespaceprefix, name1, ) if name2 not in already_processed: - already_processed.append(name2) + already_processed.add(name2) outfile.write(' %s=%s' % (name2, quote_attrib(value), )) else: mo = re_.match(Namespace_extract_pat_, name) if mo is not None: namespace, name = mo.group(1, 2) if name not in already_processed: - already_processed.append(name) + already_processed.add(name) if namespace == 'http://www.w3.org/XML/1998/namespace': outfile.write(' %s=%s' % ( name, quote_attrib(value), )) @@ -2305,7 +2305,7 @@ def generateExportFn(wrt, prefix, element, namespace): unique_counter, name, quote_attrib(value), )) else: if name not in already_processed: - already_processed.append(name) + already_processed.add(name) outfile.write(' %s=%s' % ( name, quote_attrib(value), ))\n""") parentName, parent = getParentName(element) @@ -2481,7 +2481,9 @@ def generateExportLiteralFn(wrt, prefix, element): wrt(" def exportLiteral(self, outfile, level, name_='%s'):\n" % ( element.getName(), )) wrt(" level += 1\n") - wrt(" self.exportLiteralAttributes(outfile, level, [], name_)\n") + wrt(" already_processed = set()\n") + wrt(" self.exportLiteralAttributes(outfile, level, " + "already_processed, name_)\n") wrt(" if self.hasContent_():\n") wrt(" self.exportLiteralChildren(outfile, level, name_)\n") childCount = countChildren(element, 0) @@ -2507,7 +2509,7 @@ def generateExportLiteralFn(wrt, prefix, element): wrt(" if self.%s is not None and '%s' not in " "already_processed:\n" % ( mappedName, mappedName, )) - wrt(" already_processed.append('%s')\n" % ( + wrt(" already_processed.add('%s')\n" % ( mappedName, )) if (attrType in StringType or attrType in IDTypes or @@ -2639,7 +2641,7 @@ def generateBuildAttributes(wrt, element, hasAttributes): wrt(" if value is not None and '%s' not in " "already_processed:\n" % (name, )) - wrt(" already_processed.append('%s')\n" % (name, )) + wrt(" already_processed.add('%s')\n" % (name, )) wrt(' try:\n') wrt(" self.%s = self.gds_parse_datetime(" "value, node, '%s')\n" % @@ -2654,7 +2656,7 @@ def generateBuildAttributes(wrt, element, hasAttributes): wrt(" if value is not None and '%s' not in " "already_processed:\n" % (name, )) - wrt(" already_processed.append('%s')\n" % (name, )) + wrt(" already_processed.add('%s')\n" % (name, )) wrt(' try:\n') wrt(" self.%s = self.gds_parse_date(" "value, node, '%s')\n" % @@ -2673,7 +2675,7 @@ def generateBuildAttributes(wrt, element, hasAttributes): wrt(" if value is not None and '%s' not in " "already_processed:\n" % (name, )) - wrt(" already_processed.append('%s')\n" % (name, )) + wrt(" already_processed.add('%s')\n" % (name, )) wrt(' try:\n') wrt(" self.%s = int(value)\n" % (mappedName, )) wrt(' except ValueError, exp:\n') @@ -2701,7 +2703,7 @@ def generateBuildAttributes(wrt, element, hasAttributes): wrt(" if value is not None and '%s' not in " "already_processed:\n" % (name, )) - wrt(" already_processed.append('%s')\n" % (name, )) + wrt(" already_processed.add('%s')\n" % (name, )) wrt(" if value in ('true', '1'):\n") wrt(" self.%s = True\n" % mappedName) wrt(" elif value in ('false', '0'):\n") @@ -2715,7 +2717,7 @@ def generateBuildAttributes(wrt, element, hasAttributes): wrt(" if value is not None and '%s' not in " "already_processed:\n" % (name, )) - wrt(" already_processed.append('%s')\n" % (name, )) + wrt(" already_processed.add('%s')\n" % (name, )) wrt(' try:\n') wrt(" self.%s = float(value)\n" % (mappedName, )) @@ -2729,7 +2731,7 @@ def generateBuildAttributes(wrt, element, hasAttributes): wrt(" if value is not None and '%s' not in " "already_processed:\n" % (name, )) - wrt(" already_processed.append('%s')\n" % (name, )) + wrt(" already_processed.add('%s')\n" % (name, )) wrt(" self.%s = value\n" % (mappedName, )) wrt(" self.%s = ' '.join(self.%s.split())\n" % (mappedName, mappedName, )) @@ -2740,7 +2742,7 @@ def generateBuildAttributes(wrt, element, hasAttributes): wrt(" if value is not None and '%s' not in " "already_processed:\n" % (name, )) - wrt(" already_processed.append('%s')\n" % (name, )) + wrt(" already_processed.add('%s')\n" % (name, )) wrt(" self.%s = value\n" % (mappedName, )) typeName = attrDef.getType() if typeName and typeName in SimpleTypeDict: @@ -2758,7 +2760,7 @@ def generateBuildAttributes(wrt, element, hasAttributes): wrt(" value = find_attr_value_('xsi:type', node)\n") wrt(" if value is not None and 'xsi:type' not in " "already_processed:\n") - wrt(" already_processed.append('xsi:type')\n") + wrt(" already_processed.add('xsi:type')\n") wrt(" self.extensiontype_ = value\n") return hasAttributes # end generateBuildAttributes @@ -3218,7 +3220,8 @@ def generateBuildStandard(wrt, prefix, element, keyword, delayed, hasChildren): def generateBuildFn(wrt, prefix, element, delayed): base = element.getBase() wrt(' def build(self, node):\n') - wrt(' self.buildAttributes(node, node.attrib, [])\n') + wrt(' already_processed = set()\n') + wrt(' self.buildAttributes(node, node.attrib, already_processed)\n') if element.isMixed() or element.getSimpleContent(): wrt(" self.valueOf_ = get_all_text_(node)\n") if element.isMixed(): diff --git a/generateDS.txt b/generateDS.txt index 208dbca..f52a60f 100644 --- a/generateDS.txt +++ b/generateDS.txt @@ -11,7 +11,7 @@ generateDS -- Generate Data Structures from XML Schema .. version -:revision: 2.8b +:revision: 2.8c .. version diff --git a/gui/generateds_gui.py b/gui/generateds_gui.py index 4b67c7f..c05f07b 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.8b' +VERSION = '2.8c' ##VERSION## diff --git a/libgenerateDS/gui/generateds_gui.py b/libgenerateDS/gui/generateds_gui.py index 4b67c7f..c05f07b 100755 --- a/libgenerateDS/gui/generateds_gui.py +++ b/libgenerateDS/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.8b' +VERSION = '2.8c' ##VERSION## diff --git a/librarytemplate_howto.html b/librarytemplate_howto.html index f9b29ab..c29e081 100644 --- a/librarytemplate_howto.html +++ b/librarytemplate_howto.html @@ -214,7 +214,7 @@ tt.docutils { <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.8b</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.8c</td> </tr> </tbody> </table> @@ -223,7 +223,7 @@ tt.docutils { <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">date:</th><td class="field-body">January 28, 2013</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">January 31, 2013</td> </tr> </tbody> </table> diff --git a/librarytemplate_howto.txt b/librarytemplate_howto.txt index 2fbd5d9..abc5fb0 100644 --- a/librarytemplate_howto.txt +++ b/librarytemplate_howto.txt @@ -8,7 +8,7 @@ How to package a generateDS.py generated library .. version -:revision: 2.8b +:revision: 2.8c .. version diff --git a/process_includes.py b/process_includes.py index a4d60c0..ad2c052 100755 --- a/process_includes.py +++ b/process_includes.py @@ -30,7 +30,7 @@ from lxml import etree # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## -VERSION = '2.8b' +VERSION = '2.8c' ##VERSION## Namespaces = {'xs': 'http://www.w3.org/2001/XMLSchema'} diff --git a/setup.py b/setup.py index 0e261bc..f6e72db 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.8b", + version="2.8c", ##VERSION## author="Dave Kuhlman", author_email="dkuhlman@rexx.com", diff --git a/tests/abstract_type1_sup.py b/tests/abstract_type1_sup.py index cfb7b84..1c8efeb 100644 --- a/tests/abstract_type1_sup.py +++ b/tests/abstract_type1_sup.py @@ -506,7 +506,7 @@ class carrierType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='carrierType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -533,7 +533,8 @@ class carrierType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='carrierType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -552,7 +553,8 @@ class carrierType(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -602,7 +604,7 @@ class Vehicle(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='Vehicle') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -612,7 +614,7 @@ class Vehicle(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='target:', name_='Vehicle'): if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) pass @@ -627,7 +629,8 @@ class Vehicle(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='Vehicle'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -635,14 +638,15 @@ class Vehicle(GeneratedsSuper): def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -670,7 +674,7 @@ class Car(Vehicle): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='Car') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -692,7 +696,8 @@ class Car(Vehicle): return False def exportLiteral(self, outfile, level, name_='Car'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -701,7 +706,8 @@ class Car(Vehicle): super(Car, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -734,7 +740,7 @@ class Plane(Vehicle): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='Plane') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -756,7 +762,8 @@ class Plane(Vehicle): return False def exportLiteral(self, outfile, level, name_='Plane'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -765,7 +772,8 @@ class Plane(Vehicle): super(Plane, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) diff --git a/tests/abstract_type2_sup.py b/tests/abstract_type2_sup.py index cfb7b84..1c8efeb 100644 --- a/tests/abstract_type2_sup.py +++ b/tests/abstract_type2_sup.py @@ -506,7 +506,7 @@ class carrierType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='carrierType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -533,7 +533,8 @@ class carrierType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='carrierType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -552,7 +553,8 @@ class carrierType(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -602,7 +604,7 @@ class Vehicle(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='Vehicle') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -612,7 +614,7 @@ class Vehicle(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='target:', name_='Vehicle'): if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) pass @@ -627,7 +629,8 @@ class Vehicle(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='Vehicle'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -635,14 +638,15 @@ class Vehicle(GeneratedsSuper): def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -670,7 +674,7 @@ class Car(Vehicle): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='Car') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -692,7 +696,8 @@ class Car(Vehicle): return False def exportLiteral(self, outfile, level, name_='Car'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -701,7 +706,8 @@ class Car(Vehicle): super(Car, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -734,7 +740,7 @@ class Plane(Vehicle): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='Plane') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -756,7 +762,8 @@ class Plane(Vehicle): return False def exportLiteral(self, outfile, level, name_='Plane'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -765,7 +772,8 @@ class Plane(Vehicle): super(Plane, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) diff --git a/tests/annotations1_sup.py b/tests/annotations1_sup.py index 38b837a..0fdff05 100644 --- a/tests/annotations1_sup.py +++ b/tests/annotations1_sup.py @@ -508,7 +508,7 @@ class document1Type(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='document1Type') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -539,7 +539,8 @@ class document1Type(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='document1Type'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -555,7 +556,8 @@ class document1Type(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -607,7 +609,7 @@ class document2Type(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='document2Type') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -642,7 +644,8 @@ class document2Type(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='document2Type'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -661,7 +664,8 @@ class document2Type(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -715,7 +719,7 @@ class document3Type(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='document3Type') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -747,7 +751,8 @@ class document3Type(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='document3Type'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -760,7 +765,8 @@ class document3Type(GeneratedsSuper): showIndent(outfile, level) outfile.write('rating=%d,\n' % self.rating) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) diff --git a/tests/annotations2_sup.py b/tests/annotations2_sup.py index 38b837a..0fdff05 100644 --- a/tests/annotations2_sup.py +++ b/tests/annotations2_sup.py @@ -508,7 +508,7 @@ class document1Type(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='document1Type') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -539,7 +539,8 @@ class document1Type(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='document1Type'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -555,7 +556,8 @@ class document1Type(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -607,7 +609,7 @@ class document2Type(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='document2Type') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -642,7 +644,8 @@ class document2Type(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='document2Type'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -661,7 +664,8 @@ class document2Type(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -715,7 +719,7 @@ class document3Type(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='document3Type') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -747,7 +751,8 @@ class document3Type(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='document3Type'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -760,7 +765,8 @@ class document3Type(GeneratedsSuper): showIndent(outfile, level) outfile.write('rating=%d,\n' % self.rating) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) diff --git a/tests/anysimpletype1_sup.py b/tests/anysimpletype1_sup.py index c9dc328..3e56d08 100644 --- a/tests/anysimpletype1_sup.py +++ b/tests/anysimpletype1_sup.py @@ -505,7 +505,7 @@ class test1element(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='test1element') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -516,7 +516,7 @@ class test1element(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='test1element'): if self.test1attribute is not None and 'test1attribute' not in already_processed: - already_processed.append('test1attribute') + already_processed.add('test1attribute') outfile.write(' test1attribute=%s' % (quote_attrib(self.test1attribute), )) def exportChildren(self, outfile, level, namespace_='', name_='test1element', fromsubclass_=False, pretty_print=True): if pretty_print: @@ -534,12 +534,13 @@ class test1element(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='test1element'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.test1attribute is not None and 'test1attribute' not in already_processed: - already_processed.append('test1attribute') + already_processed.add('test1attribute') showIndent(outfile, level) outfile.write('test1attribute = %s,\n' % (self.test1attribute,)) def exportLiteralChildren(self, outfile, level, name_): @@ -550,14 +551,15 @@ class test1element(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('test1attribute', node) if value is not None and 'test1attribute' not in already_processed: - already_processed.append('test1attribute') + already_processed.add('test1attribute') self.test1attribute = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'test1member': @@ -593,7 +595,7 @@ class cimAnySimpleType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='cimAnySimpleType') if self.hasContent_(): outfile.write('>') @@ -612,14 +614,14 @@ class cimAnySimpleType(GeneratedsSuper): name1 = name[len(xsinamespace2):] name2 = '%s:%s' % (xsinamespaceprefix, name1, ) if name2 not in already_processed: - already_processed.append(name2) + already_processed.add(name2) outfile.write(' %s=%s' % (name2, quote_attrib(value), )) else: mo = re_.match(Namespace_extract_pat_, name) if mo is not None: namespace, name = mo.group(1, 2) if name not in already_processed: - already_processed.append(name) + already_processed.add(name) if namespace == 'http://www.w3.org/XML/1998/namespace': outfile.write(' %s=%s' % ( name, quote_attrib(value), )) @@ -631,7 +633,7 @@ class cimAnySimpleType(GeneratedsSuper): unique_counter, name, quote_attrib(value), )) else: if name not in already_processed: - already_processed.append(name) + already_processed.add(name) outfile.write(' %s=%s' % ( name, quote_attrib(value), )) pass @@ -646,7 +648,8 @@ class cimAnySimpleType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='cimAnySimpleType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) @@ -658,7 +661,8 @@ class cimAnySimpleType(GeneratedsSuper): def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] diff --git a/tests/anywildcard1_sup.py b/tests/anywildcard1_sup.py index e955d99..29aa7ee 100644 --- a/tests/anywildcard1_sup.py +++ b/tests/anywildcard1_sup.py @@ -509,7 +509,7 @@ class PlantType_single(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_single') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -543,7 +543,8 @@ class PlantType_single(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='PlantType_single'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -565,7 +566,8 @@ class PlantType_single(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -623,7 +625,7 @@ class PlantType_multiple(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_multiple') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -657,7 +659,8 @@ class PlantType_multiple(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='PlantType_multiple'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -681,7 +684,8 @@ class PlantType_multiple(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -731,7 +735,7 @@ class DescriptionType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='DescriptionType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -763,7 +767,8 @@ class DescriptionType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='DescriptionType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -776,7 +781,8 @@ class DescriptionType(GeneratedsSuper): showIndent(outfile, level) outfile.write('size=%s,\n' % quote_python(self.size).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -822,7 +828,7 @@ class CatalogType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='CatalogType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -854,7 +860,8 @@ class CatalogType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='CatalogType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -867,7 +874,8 @@ class CatalogType(GeneratedsSuper): showIndent(outfile, level) outfile.write('catagory=%d,\n' % self.catagory) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -912,7 +920,7 @@ class PlantType_single_nochild(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_single_nochild') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -939,7 +947,8 @@ class PlantType_single_nochild(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='PlantType_single_nochild'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -952,7 +961,8 @@ class PlantType_single_nochild(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -993,7 +1003,7 @@ class PlantType_multiple_nochild(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_multiple_nochild') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1020,7 +1030,8 @@ class PlantType_multiple_nochild(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='PlantType_multiple_nochild'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -1035,7 +1046,8 @@ class PlantType_multiple_nochild(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) diff --git a/tests/anywildcard2_sup.py b/tests/anywildcard2_sup.py index e955d99..29aa7ee 100644 --- a/tests/anywildcard2_sup.py +++ b/tests/anywildcard2_sup.py @@ -509,7 +509,7 @@ class PlantType_single(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_single') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -543,7 +543,8 @@ class PlantType_single(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='PlantType_single'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -565,7 +566,8 @@ class PlantType_single(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -623,7 +625,7 @@ class PlantType_multiple(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_multiple') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -657,7 +659,8 @@ class PlantType_multiple(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='PlantType_multiple'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -681,7 +684,8 @@ class PlantType_multiple(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -731,7 +735,7 @@ class DescriptionType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='DescriptionType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -763,7 +767,8 @@ class DescriptionType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='DescriptionType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -776,7 +781,8 @@ class DescriptionType(GeneratedsSuper): showIndent(outfile, level) outfile.write('size=%s,\n' % quote_python(self.size).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -822,7 +828,7 @@ class CatalogType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='CatalogType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -854,7 +860,8 @@ class CatalogType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='CatalogType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -867,7 +874,8 @@ class CatalogType(GeneratedsSuper): showIndent(outfile, level) outfile.write('catagory=%d,\n' % self.catagory) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -912,7 +920,7 @@ class PlantType_single_nochild(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_single_nochild') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -939,7 +947,8 @@ class PlantType_single_nochild(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='PlantType_single_nochild'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -952,7 +961,8 @@ class PlantType_single_nochild(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -993,7 +1003,7 @@ class PlantType_multiple_nochild(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_multiple_nochild') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1020,7 +1030,8 @@ class PlantType_multiple_nochild(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='PlantType_multiple_nochild'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -1035,7 +1046,8 @@ class PlantType_multiple_nochild(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) diff --git a/tests/attr_groups1_sup.py b/tests/attr_groups1_sup.py index 0772d5a..b74edf6 100644 --- a/tests/attr_groups1_sup.py +++ b/tests/attr_groups1_sup.py @@ -533,7 +533,7 @@ class GetUserReq(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='GetUserReq') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -544,28 +544,28 @@ class GetUserReq(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='GetUserReq'): if self.value04 is not None and 'value04' not in already_processed: - already_processed.append('value04') + already_processed.add('value04') outfile.write(' value04="%s"' % self.gds_format_integer(self.value04, input_name='value04')) if self.value05 is not None and 'value05' not in already_processed: - already_processed.append('value05') + already_processed.add('value05') outfile.write(' value05=%s' % (self.gds_format_string(quote_attrib(self.value05).encode(ExternalEncoding), input_name='value05'), )) if self.value06 is not None and 'value06' not in already_processed: - already_processed.append('value06') + already_processed.add('value06') outfile.write(' value06="%s"' % self.gds_format_integer(self.value06, input_name='value06')) if self.value07 is not None and 'value07' not in already_processed: - already_processed.append('value07') + already_processed.add('value07') outfile.write(' value07="%s"' % self.gds_format_integer(self.value07, input_name='value07')) if self.value01 is not None and 'value01' not in already_processed: - already_processed.append('value01') + already_processed.add('value01') outfile.write(' value01=%s' % (self.gds_format_string(quote_attrib(self.value01).encode(ExternalEncoding), input_name='value01'), )) if self.value02 is not None and 'value02' not in already_processed: - already_processed.append('value02') + already_processed.add('value02') outfile.write(' value02="%s"' % self.gds_format_integer(self.value02, input_name='value02')) if self.value03 is not None and 'value03' not in already_processed: - already_processed.append('value03') + already_processed.add('value03') outfile.write(' value03=%s' % (self.gds_format_string(quote_attrib(self.value03).encode(ExternalEncoding), input_name='value03'), )) if self.sequence is not None and 'sequence' not in already_processed: - already_processed.append('sequence') + already_processed.add('sequence') outfile.write(' sequence="%s"' % self.gds_format_integer(self.sequence, input_name='sequence')) def exportChildren(self, outfile, level, namespace_='', name_='GetUserReq', fromsubclass_=False, pretty_print=True): if pretty_print: @@ -584,40 +584,41 @@ class GetUserReq(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='GetUserReq'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.value04 is not None and 'value04' not in already_processed: - already_processed.append('value04') + already_processed.add('value04') showIndent(outfile, level) outfile.write('value04 = %d,\n' % (self.value04,)) if self.value05 is not None and 'value05' not in already_processed: - already_processed.append('value05') + already_processed.add('value05') showIndent(outfile, level) outfile.write('value05 = "%s",\n' % (self.value05,)) if self.value06 is not None and 'value06' not in already_processed: - already_processed.append('value06') + already_processed.add('value06') showIndent(outfile, level) outfile.write('value06 = %d,\n' % (self.value06,)) if self.value07 is not None and 'value07' not in already_processed: - already_processed.append('value07') + already_processed.add('value07') showIndent(outfile, level) outfile.write('value07 = %d,\n' % (self.value07,)) if self.value01 is not None and 'value01' not in already_processed: - already_processed.append('value01') + already_processed.add('value01') showIndent(outfile, level) outfile.write('value01 = "%s",\n' % (self.value01,)) if self.value02 is not None and 'value02' not in already_processed: - already_processed.append('value02') + already_processed.add('value02') showIndent(outfile, level) outfile.write('value02 = %d,\n' % (self.value02,)) if self.value03 is not None and 'value03' not in already_processed: - already_processed.append('value03') + already_processed.add('value03') showIndent(outfile, level) outfile.write('value03 = "%s",\n' % (self.value03,)) if self.sequence is not None and 'sequence' not in already_processed: - already_processed.append('sequence') + already_processed.add('sequence') showIndent(outfile, level) outfile.write('sequence = %d,\n' % (self.sequence,)) def exportLiteralChildren(self, outfile, level, name_): @@ -625,54 +626,55 @@ class GetUserReq(GeneratedsSuper): showIndent(outfile, level) outfile.write('returnedTags=%s,\n' % quote_python(self.returnedTags).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('value04', node) if value is not None and 'value04' not in already_processed: - already_processed.append('value04') + already_processed.add('value04') try: self.value04 = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('value05', node) if value is not None and 'value05' not in already_processed: - already_processed.append('value05') + already_processed.add('value05') self.value05 = value value = find_attr_value_('value06', node) if value is not None and 'value06' not in already_processed: - already_processed.append('value06') + already_processed.add('value06') try: self.value06 = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('value07', node) if value is not None and 'value07' not in already_processed: - already_processed.append('value07') + already_processed.add('value07') try: self.value07 = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('value01', node) if value is not None and 'value01' not in already_processed: - already_processed.append('value01') + already_processed.add('value01') self.value01 = value value = find_attr_value_('value02', node) if value is not None and 'value02' not in already_processed: - already_processed.append('value02') + already_processed.add('value02') try: self.value02 = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('value03', node) if value is not None and 'value03' not in already_processed: - already_processed.append('value03') + already_processed.add('value03') self.value03 = value value = find_attr_value_('sequence', node) if value is not None and 'sequence' not in already_processed: - already_processed.append('sequence') + already_processed.add('sequence') try: self.sequence = int(value) except ValueError, exp: diff --git a/tests/attr_groups2_sup.py b/tests/attr_groups2_sup.py index 0772d5a..b74edf6 100644 --- a/tests/attr_groups2_sup.py +++ b/tests/attr_groups2_sup.py @@ -533,7 +533,7 @@ class GetUserReq(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='GetUserReq') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -544,28 +544,28 @@ class GetUserReq(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='GetUserReq'): if self.value04 is not None and 'value04' not in already_processed: - already_processed.append('value04') + already_processed.add('value04') outfile.write(' value04="%s"' % self.gds_format_integer(self.value04, input_name='value04')) if self.value05 is not None and 'value05' not in already_processed: - already_processed.append('value05') + already_processed.add('value05') outfile.write(' value05=%s' % (self.gds_format_string(quote_attrib(self.value05).encode(ExternalEncoding), input_name='value05'), )) if self.value06 is not None and 'value06' not in already_processed: - already_processed.append('value06') + already_processed.add('value06') outfile.write(' value06="%s"' % self.gds_format_integer(self.value06, input_name='value06')) if self.value07 is not None and 'value07' not in already_processed: - already_processed.append('value07') + already_processed.add('value07') outfile.write(' value07="%s"' % self.gds_format_integer(self.value07, input_name='value07')) if self.value01 is not None and 'value01' not in already_processed: - already_processed.append('value01') + already_processed.add('value01') outfile.write(' value01=%s' % (self.gds_format_string(quote_attrib(self.value01).encode(ExternalEncoding), input_name='value01'), )) if self.value02 is not None and 'value02' not in already_processed: - already_processed.append('value02') + already_processed.add('value02') outfile.write(' value02="%s"' % self.gds_format_integer(self.value02, input_name='value02')) if self.value03 is not None and 'value03' not in already_processed: - already_processed.append('value03') + already_processed.add('value03') outfile.write(' value03=%s' % (self.gds_format_string(quote_attrib(self.value03).encode(ExternalEncoding), input_name='value03'), )) if self.sequence is not None and 'sequence' not in already_processed: - already_processed.append('sequence') + already_processed.add('sequence') outfile.write(' sequence="%s"' % self.gds_format_integer(self.sequence, input_name='sequence')) def exportChildren(self, outfile, level, namespace_='', name_='GetUserReq', fromsubclass_=False, pretty_print=True): if pretty_print: @@ -584,40 +584,41 @@ class GetUserReq(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='GetUserReq'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.value04 is not None and 'value04' not in already_processed: - already_processed.append('value04') + already_processed.add('value04') showIndent(outfile, level) outfile.write('value04 = %d,\n' % (self.value04,)) if self.value05 is not None and 'value05' not in already_processed: - already_processed.append('value05') + already_processed.add('value05') showIndent(outfile, level) outfile.write('value05 = "%s",\n' % (self.value05,)) if self.value06 is not None and 'value06' not in already_processed: - already_processed.append('value06') + already_processed.add('value06') showIndent(outfile, level) outfile.write('value06 = %d,\n' % (self.value06,)) if self.value07 is not None and 'value07' not in already_processed: - already_processed.append('value07') + already_processed.add('value07') showIndent(outfile, level) outfile.write('value07 = %d,\n' % (self.value07,)) if self.value01 is not None and 'value01' not in already_processed: - already_processed.append('value01') + already_processed.add('value01') showIndent(outfile, level) outfile.write('value01 = "%s",\n' % (self.value01,)) if self.value02 is not None and 'value02' not in already_processed: - already_processed.append('value02') + already_processed.add('value02') showIndent(outfile, level) outfile.write('value02 = %d,\n' % (self.value02,)) if self.value03 is not None and 'value03' not in already_processed: - already_processed.append('value03') + already_processed.add('value03') showIndent(outfile, level) outfile.write('value03 = "%s",\n' % (self.value03,)) if self.sequence is not None and 'sequence' not in already_processed: - already_processed.append('sequence') + already_processed.add('sequence') showIndent(outfile, level) outfile.write('sequence = %d,\n' % (self.sequence,)) def exportLiteralChildren(self, outfile, level, name_): @@ -625,54 +626,55 @@ class GetUserReq(GeneratedsSuper): showIndent(outfile, level) outfile.write('returnedTags=%s,\n' % quote_python(self.returnedTags).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('value04', node) if value is not None and 'value04' not in already_processed: - already_processed.append('value04') + already_processed.add('value04') try: self.value04 = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('value05', node) if value is not None and 'value05' not in already_processed: - already_processed.append('value05') + already_processed.add('value05') self.value05 = value value = find_attr_value_('value06', node) if value is not None and 'value06' not in already_processed: - already_processed.append('value06') + already_processed.add('value06') try: self.value06 = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('value07', node) if value is not None and 'value07' not in already_processed: - already_processed.append('value07') + already_processed.add('value07') try: self.value07 = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('value01', node) if value is not None and 'value01' not in already_processed: - already_processed.append('value01') + already_processed.add('value01') self.value01 = value value = find_attr_value_('value02', node) if value is not None and 'value02' not in already_processed: - already_processed.append('value02') + already_processed.add('value02') try: self.value02 = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('value03', node) if value is not None and 'value03' not in already_processed: - already_processed.append('value03') + already_processed.add('value03') self.value03 = value value = find_attr_value_('sequence', node) if value is not None and 'sequence' not in already_processed: - already_processed.append('sequence') + already_processed.add('sequence') try: self.sequence = int(value) except ValueError, exp: diff --git a/tests/extensions1_sup.py b/tests/extensions1_sup.py index c02b45a..307870e 100644 --- a/tests/extensions1_sup.py +++ b/tests/extensions1_sup.py @@ -505,7 +505,7 @@ class SpecialDate(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='SpecialDate') if self.hasContent_(): outfile.write('>') @@ -516,7 +516,7 @@ class SpecialDate(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='SpecialDate'): if self.SpecialProperty is not None and 'SpecialProperty' not in already_processed: - already_processed.append('SpecialProperty') + already_processed.add('SpecialProperty') outfile.write(' SpecialProperty=%s' % (self.gds_format_string(quote_attrib(self.SpecialProperty).encode(ExternalEncoding), input_name='SpecialProperty'), )) def exportChildren(self, outfile, level, namespace_='', name_='SpecialDate', fromsubclass_=False, pretty_print=True): pass @@ -529,20 +529,22 @@ class SpecialDate(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='SpecialDate'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.SpecialProperty is not None and 'SpecialProperty' not in already_processed: - already_processed.append('SpecialProperty') + already_processed.add('SpecialProperty') showIndent(outfile, level) outfile.write('SpecialProperty = "%s",\n' % (self.SpecialProperty,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -550,7 +552,7 @@ class SpecialDate(GeneratedsSuper): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('SpecialProperty', node) if value is not None and 'SpecialProperty' not in already_processed: - already_processed.append('SpecialProperty') + already_processed.add('SpecialProperty') self.SpecialProperty = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -584,7 +586,7 @@ class ExtremeDate(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='ExtremeDate') if self.hasContent_(): outfile.write('>') @@ -595,7 +597,7 @@ class ExtremeDate(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='ExtremeDate'): if self.ExtremeProperty is not None and 'ExtremeProperty' not in already_processed: - already_processed.append('ExtremeProperty') + already_processed.add('ExtremeProperty') outfile.write(' ExtremeProperty=%s' % (self.gds_format_string(quote_attrib(self.ExtremeProperty).encode(ExternalEncoding), input_name='ExtremeProperty'), )) def exportChildren(self, outfile, level, namespace_='', name_='ExtremeDate', fromsubclass_=False, pretty_print=True): pass @@ -608,20 +610,22 @@ class ExtremeDate(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='ExtremeDate'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.ExtremeProperty is not None and 'ExtremeProperty' not in already_processed: - already_processed.append('ExtremeProperty') + already_processed.add('ExtremeProperty') showIndent(outfile, level) outfile.write('ExtremeProperty = "%s",\n' % (self.ExtremeProperty,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -629,7 +633,7 @@ class ExtremeDate(GeneratedsSuper): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('ExtremeProperty', node) if value is not None and 'ExtremeProperty' not in already_processed: - already_processed.append('ExtremeProperty') + already_processed.add('ExtremeProperty') self.ExtremeProperty = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -663,7 +667,7 @@ class singleExtremeDate(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='singleExtremeDate') if self.hasContent_(): outfile.write('>') @@ -674,7 +678,7 @@ class singleExtremeDate(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='singleExtremeDate'): if self.ExtremeProperty is not None and 'ExtremeProperty' not in already_processed: - already_processed.append('ExtremeProperty') + already_processed.add('ExtremeProperty') outfile.write(' ExtremeProperty=%s' % (self.gds_format_string(quote_attrib(self.ExtremeProperty).encode(ExternalEncoding), input_name='ExtremeProperty'), )) def exportChildren(self, outfile, level, namespace_='', name_='singleExtremeDate', fromsubclass_=False, pretty_print=True): pass @@ -687,20 +691,22 @@ class singleExtremeDate(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='singleExtremeDate'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.ExtremeProperty is not None and 'ExtremeProperty' not in already_processed: - already_processed.append('ExtremeProperty') + already_processed.add('ExtremeProperty') showIndent(outfile, level) outfile.write('ExtremeProperty = "%s",\n' % (self.ExtremeProperty,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -708,7 +714,7 @@ class singleExtremeDate(GeneratedsSuper): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('ExtremeProperty', node) if value is not None and 'ExtremeProperty' not in already_processed: - already_processed.append('ExtremeProperty') + already_processed.add('ExtremeProperty') self.ExtremeProperty = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -747,7 +753,7 @@ class containerType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='containerType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -777,7 +783,8 @@ class containerType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='containerType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -802,7 +809,8 @@ class containerType(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -846,7 +854,7 @@ class simpleFactoidType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='simpleFactoidType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -874,7 +882,8 @@ class simpleFactoidType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='simpleFactoidType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -884,7 +893,8 @@ class simpleFactoidType(GeneratedsSuper): showIndent(outfile, level) outfile.write('relation=%s,\n' % quote_python(self.relation).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -938,7 +948,7 @@ class mixedFactoidType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='mixedFactoidType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -963,7 +973,8 @@ class mixedFactoidType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='mixedFactoidType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) @@ -979,7 +990,8 @@ class mixedFactoidType(GeneratedsSuper): outfile.write('],\n') pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) if node.text is not None: obj_ = self.mixedclass_(MixedContainer.CategoryText, @@ -1037,7 +1049,7 @@ class BaseType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='BaseType') if self.hasContent_(): outfile.write('>') @@ -1048,13 +1060,13 @@ class BaseType(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='BaseType'): if self.BaseProperty1 is not None and 'BaseProperty1' not in already_processed: - already_processed.append('BaseProperty1') + already_processed.add('BaseProperty1') outfile.write(' BaseProperty1=%s' % (self.gds_format_string(quote_attrib(self.BaseProperty1).encode(ExternalEncoding), input_name='BaseProperty1'), )) if self.BaseProperty2 is not None and 'BaseProperty2' not in already_processed: - already_processed.append('BaseProperty2') + already_processed.add('BaseProperty2') outfile.write(' BaseProperty2=%s' % (self.gds_format_string(quote_attrib(self.BaseProperty2).encode(ExternalEncoding), input_name='BaseProperty2'), )) if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) def exportChildren(self, outfile, level, namespace_='', name_='BaseType', fromsubclass_=False, pretty_print=True): @@ -1068,24 +1080,26 @@ class BaseType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='BaseType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.BaseProperty1 is not None and 'BaseProperty1' not in already_processed: - already_processed.append('BaseProperty1') + already_processed.add('BaseProperty1') showIndent(outfile, level) outfile.write('BaseProperty1 = "%s",\n' % (self.BaseProperty1,)) if self.BaseProperty2 is not None and 'BaseProperty2' not in already_processed: - already_processed.append('BaseProperty2') + already_processed.add('BaseProperty2') showIndent(outfile, level) outfile.write('BaseProperty2 = "%s",\n' % (self.BaseProperty2,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -1093,15 +1107,15 @@ class BaseType(GeneratedsSuper): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('BaseProperty1', node) if value is not None and 'BaseProperty1' not in already_processed: - already_processed.append('BaseProperty1') + already_processed.add('BaseProperty1') self.BaseProperty1 = value value = find_attr_value_('BaseProperty2', node) if value is not None and 'BaseProperty2' not in already_processed: - already_processed.append('BaseProperty2') + already_processed.add('BaseProperty2') self.BaseProperty2 = value value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -1140,7 +1154,7 @@ class DerivedType(BaseType): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='DerivedType') if self.hasContent_(): outfile.write('>') @@ -1152,10 +1166,10 @@ class DerivedType(BaseType): def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='DerivedType'): super(DerivedType, self).exportAttributes(outfile, level, already_processed, namespace_, name_='DerivedType') if self.DerivedProperty1 is not None and 'DerivedProperty1' not in already_processed: - already_processed.append('DerivedProperty1') + already_processed.add('DerivedProperty1') outfile.write(' DerivedProperty1=%s' % (self.gds_format_string(quote_attrib(self.DerivedProperty1).encode(ExternalEncoding), input_name='DerivedProperty1'), )) if self.DerivedProperty2 is not None and 'DerivedProperty2' not in already_processed: - already_processed.append('DerivedProperty2') + already_processed.add('DerivedProperty2') outfile.write(' DerivedProperty2=%s' % (self.gds_format_string(quote_attrib(self.DerivedProperty2).encode(ExternalEncoding), input_name='DerivedProperty2'), )) def exportChildren(self, outfile, level, namespace_='', name_='DerivedType', fromsubclass_=False, pretty_print=True): super(DerivedType, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) @@ -1170,18 +1184,19 @@ class DerivedType(BaseType): return False def exportLiteral(self, outfile, level, name_='DerivedType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.DerivedProperty1 is not None and 'DerivedProperty1' not in already_processed: - already_processed.append('DerivedProperty1') + already_processed.add('DerivedProperty1') showIndent(outfile, level) outfile.write('DerivedProperty1 = "%s",\n' % (self.DerivedProperty1,)) if self.DerivedProperty2 is not None and 'DerivedProperty2' not in already_processed: - already_processed.append('DerivedProperty2') + already_processed.add('DerivedProperty2') showIndent(outfile, level) outfile.write('DerivedProperty2 = "%s",\n' % (self.DerivedProperty2,)) super(DerivedType, self).exportLiteralAttributes(outfile, level, already_processed, name_) @@ -1189,7 +1204,8 @@ class DerivedType(BaseType): super(DerivedType, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -1197,11 +1213,11 @@ class DerivedType(BaseType): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('DerivedProperty1', node) if value is not None and 'DerivedProperty1' not in already_processed: - already_processed.append('DerivedProperty1') + already_processed.add('DerivedProperty1') self.DerivedProperty1 = value value = find_attr_value_('DerivedProperty2', node) if value is not None and 'DerivedProperty2' not in already_processed: - already_processed.append('DerivedProperty2') + already_processed.add('DerivedProperty2') self.DerivedProperty2 = value super(DerivedType, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): @@ -1236,7 +1252,7 @@ class MyInteger(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='MyInteger') if self.hasContent_(): outfile.write('>') @@ -1247,7 +1263,7 @@ class MyInteger(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='MyInteger'): if self.MyAttr is not None and 'MyAttr' not in already_processed: - already_processed.append('MyAttr') + already_processed.add('MyAttr') outfile.write(' MyAttr=%s' % (self.gds_format_string(quote_attrib(self.MyAttr).encode(ExternalEncoding), input_name='MyAttr'), )) def exportChildren(self, outfile, level, namespace_='', name_='MyInteger', fromsubclass_=False, pretty_print=True): pass @@ -1260,20 +1276,22 @@ class MyInteger(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='MyInteger'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.MyAttr is not None and 'MyAttr' not in already_processed: - already_processed.append('MyAttr') + already_processed.add('MyAttr') showIndent(outfile, level) outfile.write('MyAttr = "%s",\n' % (self.MyAttr,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -1281,7 +1299,7 @@ class MyInteger(GeneratedsSuper): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('MyAttr', node) if value is not None and 'MyAttr' not in already_processed: - already_processed.append('MyAttr') + already_processed.add('MyAttr') self.MyAttr = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -1315,7 +1333,7 @@ class MyBoolean(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='MyBoolean') if self.hasContent_(): outfile.write('>') @@ -1326,7 +1344,7 @@ class MyBoolean(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='MyBoolean'): if self.MyAttr is not None and 'MyAttr' not in already_processed: - already_processed.append('MyAttr') + already_processed.add('MyAttr') outfile.write(' MyAttr=%s' % (self.gds_format_string(quote_attrib(self.MyAttr).encode(ExternalEncoding), input_name='MyAttr'), )) def exportChildren(self, outfile, level, namespace_='', name_='MyBoolean', fromsubclass_=False, pretty_print=True): pass @@ -1339,20 +1357,22 @@ class MyBoolean(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='MyBoolean'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.MyAttr is not None and 'MyAttr' not in already_processed: - already_processed.append('MyAttr') + already_processed.add('MyAttr') showIndent(outfile, level) outfile.write('MyAttr = "%s",\n' % (self.MyAttr,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -1360,7 +1380,7 @@ class MyBoolean(GeneratedsSuper): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('MyAttr', node) if value is not None and 'MyAttr' not in already_processed: - already_processed.append('MyAttr') + already_processed.add('MyAttr') self.MyAttr = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -1394,7 +1414,7 @@ class MyFloat(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='MyFloat') if self.hasContent_(): outfile.write('>') @@ -1405,7 +1425,7 @@ class MyFloat(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='MyFloat'): if self.MyAttr is not None and 'MyAttr' not in already_processed: - already_processed.append('MyAttr') + already_processed.add('MyAttr') outfile.write(' MyAttr=%s' % (self.gds_format_string(quote_attrib(self.MyAttr).encode(ExternalEncoding), input_name='MyAttr'), )) def exportChildren(self, outfile, level, namespace_='', name_='MyFloat', fromsubclass_=False, pretty_print=True): pass @@ -1418,20 +1438,22 @@ class MyFloat(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='MyFloat'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.MyAttr is not None and 'MyAttr' not in already_processed: - already_processed.append('MyAttr') + already_processed.add('MyAttr') showIndent(outfile, level) outfile.write('MyAttr = "%s",\n' % (self.MyAttr,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -1439,7 +1461,7 @@ class MyFloat(GeneratedsSuper): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('MyAttr', node) if value is not None and 'MyAttr' not in already_processed: - already_processed.append('MyAttr') + already_processed.add('MyAttr') self.MyAttr = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -1473,7 +1495,7 @@ class MyDouble(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='MyDouble') if self.hasContent_(): outfile.write('>') @@ -1484,7 +1506,7 @@ class MyDouble(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='MyDouble'): if self.MyAttr is not None and 'MyAttr' not in already_processed: - already_processed.append('MyAttr') + already_processed.add('MyAttr') outfile.write(' MyAttr=%s' % (self.gds_format_string(quote_attrib(self.MyAttr).encode(ExternalEncoding), input_name='MyAttr'), )) def exportChildren(self, outfile, level, namespace_='', name_='MyDouble', fromsubclass_=False, pretty_print=True): pass @@ -1497,20 +1519,22 @@ class MyDouble(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='MyDouble'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.MyAttr is not None and 'MyAttr' not in already_processed: - already_processed.append('MyAttr') + already_processed.add('MyAttr') showIndent(outfile, level) outfile.write('MyAttr = "%s",\n' % (self.MyAttr,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -1518,7 +1542,7 @@ class MyDouble(GeneratedsSuper): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('MyAttr', node) if value is not None and 'MyAttr' not in already_processed: - already_processed.append('MyAttr') + already_processed.add('MyAttr') self.MyAttr = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass diff --git a/tests/ipo1_sup.py b/tests/ipo1_sup.py index 0c95c57..e08cf2c 100644 --- a/tests/ipo1_sup.py +++ b/tests/ipo1_sup.py @@ -517,7 +517,7 @@ class PurchaseOrderType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='PurchaseOrderType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -528,7 +528,7 @@ class PurchaseOrderType(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='PurchaseOrderType'): if self.orderDate is not None and 'orderDate' not in already_processed: - already_processed.append('orderDate') + already_processed.add('orderDate') outfile.write(' orderDate="%s"' % self.gds_format_date(self.orderDate, input_name='orderDate')) def exportChildren(self, outfile, level, namespace_='ipo:', name_='PurchaseOrderType', fromsubclass_=False, pretty_print=True): if pretty_print: @@ -556,12 +556,13 @@ class PurchaseOrderType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='PurchaseOrderType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.orderDate is not None and 'orderDate' not in already_processed: - already_processed.append('orderDate') + already_processed.add('orderDate') showIndent(outfile, level) outfile.write('orderDate = "%s",\n' % (self.orderDate,)) def exportLiteralChildren(self, outfile, level, name_): @@ -587,14 +588,15 @@ class PurchaseOrderType(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('orderDate', node) if value is not None and 'orderDate' not in already_processed: - already_processed.append('orderDate') + already_processed.add('orderDate') try: self.orderDate = self.gds_parse_date(value, node, 'orderDate') except ValueError, exp: @@ -649,7 +651,7 @@ class Items(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='Items') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -676,7 +678,8 @@ class Items(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='Items'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -695,7 +698,8 @@ class Items(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -743,7 +747,7 @@ class Address(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='Address') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -754,7 +758,7 @@ class Address(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='Address'): if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) pass @@ -783,7 +787,8 @@ class Address(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='Address'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -799,14 +804,15 @@ class Address(GeneratedsSuper): showIndent(outfile, level) outfile.write('city=%s,\n' % quote_python(self.city).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'name': @@ -855,7 +861,7 @@ class USAddress(Address): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='USAddress') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -889,7 +895,8 @@ class USAddress(Address): return False def exportLiteral(self, outfile, level, name_='USAddress'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -903,7 +910,8 @@ class USAddress(Address): showIndent(outfile, level) outfile.write('zip=%d,\n' % self.zip) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -968,7 +976,7 @@ class UKAddress(Address): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='UKAddress') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -980,10 +988,10 @@ class UKAddress(Address): def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='UKAddress'): super(UKAddress, self).exportAttributes(outfile, level, already_processed, namespace_, name_='UKAddress') if self.category_attr is not None and 'category_attr' not in already_processed: - already_processed.append('category_attr') + already_processed.add('category_attr') outfile.write(' category=%s' % (quote_attrib(self.category_attr), )) if self.exportCode is not None and 'exportCode' not in already_processed: - already_processed.append('exportCode') + already_processed.add('exportCode') outfile.write(' exportCode="%s"' % self.gds_format_integer(self.exportCode, input_name='exportCode')) def exportChildren(self, outfile, level, namespace_='ipo:', name_='UKAddress', fromsubclass_=False, pretty_print=True): super(UKAddress, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) @@ -1008,16 +1016,17 @@ class UKAddress(Address): return False def exportLiteral(self, outfile, level, name_='UKAddress'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.category_attr is not None and 'category_attr' not in already_processed: - already_processed.append('category_attr') + already_processed.add('category_attr') showIndent(outfile, level) outfile.write('category_attr = %s,\n' % (self.category_attr,)) if self.exportCode is not None and 'exportCode' not in already_processed: - already_processed.append('exportCode') + already_processed.add('exportCode') showIndent(outfile, level) outfile.write('exportCode = %d,\n' % (self.exportCode,)) super(UKAddress, self).exportLiteralAttributes(outfile, level, already_processed, name_) @@ -1030,18 +1039,19 @@ class UKAddress(Address): showIndent(outfile, level) outfile.write('category=%s,\n' % quote_python(self.category).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('category', node) if value is not None and 'category_attr' not in already_processed: - already_processed.append('category_attr') + already_processed.add('category_attr') self.category_attr = value value = find_attr_value_('exportCode', node) if value is not None and 'exportCode' not in already_processed: - already_processed.append('exportCode') + already_processed.add('exportCode') try: self.exportCode = int(value) except ValueError, exp: @@ -1106,7 +1116,7 @@ class itemType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='itemType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1117,7 +1127,7 @@ class itemType(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='itemType'): if self.partNum is not None and 'partNum' not in already_processed: - already_processed.append('partNum') + already_processed.add('partNum') outfile.write(' partNum=%s' % (quote_attrib(self.partNum), )) def exportChildren(self, outfile, level, namespace_='ipo:', name_='itemType', fromsubclass_=False, pretty_print=True): if pretty_print: @@ -1152,12 +1162,13 @@ class itemType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='itemType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.partNum is not None and 'partNum' not in already_processed: - already_processed.append('partNum') + already_processed.add('partNum') showIndent(outfile, level) outfile.write('partNum = %s,\n' % (self.partNum,)) def exportLiteralChildren(self, outfile, level, name_): @@ -1177,14 +1188,15 @@ class itemType(GeneratedsSuper): showIndent(outfile, level) outfile.write('shipDate=datetime_.strptime("%s", "%%Y-%%m-%%d"),\n' % self.gds_format_date(self.shipDate, input_name='shipDate')) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('partNum', node) if value is not None and 'partNum' not in already_processed: - already_processed.append('partNum') + already_processed.add('partNum') self.partNum = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'productName': @@ -1240,7 +1252,7 @@ class quantity(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='quantity') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1261,7 +1273,8 @@ class quantity(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='quantity'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -1269,7 +1282,8 @@ class quantity(GeneratedsSuper): def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) diff --git a/tests/ipo2_sup.py b/tests/ipo2_sup.py index 0c95c57..e08cf2c 100644 --- a/tests/ipo2_sup.py +++ b/tests/ipo2_sup.py @@ -517,7 +517,7 @@ class PurchaseOrderType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='PurchaseOrderType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -528,7 +528,7 @@ class PurchaseOrderType(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='PurchaseOrderType'): if self.orderDate is not None and 'orderDate' not in already_processed: - already_processed.append('orderDate') + already_processed.add('orderDate') outfile.write(' orderDate="%s"' % self.gds_format_date(self.orderDate, input_name='orderDate')) def exportChildren(self, outfile, level, namespace_='ipo:', name_='PurchaseOrderType', fromsubclass_=False, pretty_print=True): if pretty_print: @@ -556,12 +556,13 @@ class PurchaseOrderType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='PurchaseOrderType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.orderDate is not None and 'orderDate' not in already_processed: - already_processed.append('orderDate') + already_processed.add('orderDate') showIndent(outfile, level) outfile.write('orderDate = "%s",\n' % (self.orderDate,)) def exportLiteralChildren(self, outfile, level, name_): @@ -587,14 +588,15 @@ class PurchaseOrderType(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('orderDate', node) if value is not None and 'orderDate' not in already_processed: - already_processed.append('orderDate') + already_processed.add('orderDate') try: self.orderDate = self.gds_parse_date(value, node, 'orderDate') except ValueError, exp: @@ -649,7 +651,7 @@ class Items(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='Items') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -676,7 +678,8 @@ class Items(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='Items'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -695,7 +698,8 @@ class Items(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -743,7 +747,7 @@ class Address(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='Address') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -754,7 +758,7 @@ class Address(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='Address'): if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) pass @@ -783,7 +787,8 @@ class Address(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='Address'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -799,14 +804,15 @@ class Address(GeneratedsSuper): showIndent(outfile, level) outfile.write('city=%s,\n' % quote_python(self.city).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'name': @@ -855,7 +861,7 @@ class USAddress(Address): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='USAddress') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -889,7 +895,8 @@ class USAddress(Address): return False def exportLiteral(self, outfile, level, name_='USAddress'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -903,7 +910,8 @@ class USAddress(Address): showIndent(outfile, level) outfile.write('zip=%d,\n' % self.zip) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -968,7 +976,7 @@ class UKAddress(Address): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='UKAddress') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -980,10 +988,10 @@ class UKAddress(Address): def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='UKAddress'): super(UKAddress, self).exportAttributes(outfile, level, already_processed, namespace_, name_='UKAddress') if self.category_attr is not None and 'category_attr' not in already_processed: - already_processed.append('category_attr') + already_processed.add('category_attr') outfile.write(' category=%s' % (quote_attrib(self.category_attr), )) if self.exportCode is not None and 'exportCode' not in already_processed: - already_processed.append('exportCode') + already_processed.add('exportCode') outfile.write(' exportCode="%s"' % self.gds_format_integer(self.exportCode, input_name='exportCode')) def exportChildren(self, outfile, level, namespace_='ipo:', name_='UKAddress', fromsubclass_=False, pretty_print=True): super(UKAddress, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) @@ -1008,16 +1016,17 @@ class UKAddress(Address): return False def exportLiteral(self, outfile, level, name_='UKAddress'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.category_attr is not None and 'category_attr' not in already_processed: - already_processed.append('category_attr') + already_processed.add('category_attr') showIndent(outfile, level) outfile.write('category_attr = %s,\n' % (self.category_attr,)) if self.exportCode is not None and 'exportCode' not in already_processed: - already_processed.append('exportCode') + already_processed.add('exportCode') showIndent(outfile, level) outfile.write('exportCode = %d,\n' % (self.exportCode,)) super(UKAddress, self).exportLiteralAttributes(outfile, level, already_processed, name_) @@ -1030,18 +1039,19 @@ class UKAddress(Address): showIndent(outfile, level) outfile.write('category=%s,\n' % quote_python(self.category).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('category', node) if value is not None and 'category_attr' not in already_processed: - already_processed.append('category_attr') + already_processed.add('category_attr') self.category_attr = value value = find_attr_value_('exportCode', node) if value is not None and 'exportCode' not in already_processed: - already_processed.append('exportCode') + already_processed.add('exportCode') try: self.exportCode = int(value) except ValueError, exp: @@ -1106,7 +1116,7 @@ class itemType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='itemType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1117,7 +1127,7 @@ class itemType(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='itemType'): if self.partNum is not None and 'partNum' not in already_processed: - already_processed.append('partNum') + already_processed.add('partNum') outfile.write(' partNum=%s' % (quote_attrib(self.partNum), )) def exportChildren(self, outfile, level, namespace_='ipo:', name_='itemType', fromsubclass_=False, pretty_print=True): if pretty_print: @@ -1152,12 +1162,13 @@ class itemType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='itemType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.partNum is not None and 'partNum' not in already_processed: - already_processed.append('partNum') + already_processed.add('partNum') showIndent(outfile, level) outfile.write('partNum = %s,\n' % (self.partNum,)) def exportLiteralChildren(self, outfile, level, name_): @@ -1177,14 +1188,15 @@ class itemType(GeneratedsSuper): showIndent(outfile, level) outfile.write('shipDate=datetime_.strptime("%s", "%%Y-%%m-%%d"),\n' % self.gds_format_date(self.shipDate, input_name='shipDate')) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('partNum', node) if value is not None and 'partNum' not in already_processed: - already_processed.append('partNum') + already_processed.add('partNum') self.partNum = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'productName': @@ -1240,7 +1252,7 @@ class quantity(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='quantity') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1261,7 +1273,8 @@ class quantity(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='quantity'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -1269,7 +1282,8 @@ class quantity(GeneratedsSuper): def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) diff --git a/tests/out1_sup.py b/tests/out1_sup.py index e27c95b..c9105a9 100644 --- a/tests/out1_sup.py +++ b/tests/out1_sup.py @@ -542,7 +542,7 @@ class people(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='people') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -581,7 +581,8 @@ class people(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='people'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -648,7 +649,8 @@ class people(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -772,7 +774,7 @@ class comments(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='comments') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -797,7 +799,8 @@ class comments(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='comments'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) @@ -813,7 +816,8 @@ class comments(GeneratedsSuper): outfile.write('],\n') pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) if node.text is not None: obj_ = self.mixedclass_(MixedContainer.CategoryText, @@ -964,7 +968,7 @@ class person(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='person') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -975,22 +979,22 @@ class person(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='person'): if self.vegetable is not None and 'vegetable' not in already_processed: - already_processed.append('vegetable') + already_processed.add('vegetable') outfile.write(' vegetable=%s' % (self.gds_format_string(quote_attrib(self.vegetable).encode(ExternalEncoding), input_name='vegetable'), )) if self.fruit is not None and 'fruit' not in already_processed: - already_processed.append('fruit') + already_processed.add('fruit') outfile.write(' fruit=%s' % (self.gds_format_string(quote_attrib(self.fruit).encode(ExternalEncoding), input_name='fruit'), )) if self.ratio is not None and 'ratio' not in already_processed: - already_processed.append('ratio') + already_processed.add('ratio') outfile.write(' ratio="%s"' % self.gds_format_float(self.ratio, input_name='ratio')) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') outfile.write(' id="%s"' % self.gds_format_integer(self.id, input_name='id')) if self.value is not None and 'value' not in already_processed: - already_processed.append('value') + already_processed.add('value') outfile.write(' value=%s' % (self.gds_format_string(quote_attrib(self.value).encode(ExternalEncoding), input_name='value'), )) if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) def exportChildren(self, outfile, level, namespace_='', name_='person', fromsubclass_=False, pretty_print=True): @@ -1028,28 +1032,29 @@ class person(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='person'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.vegetable is not None and 'vegetable' not in already_processed: - already_processed.append('vegetable') + already_processed.add('vegetable') showIndent(outfile, level) outfile.write('vegetable = "%s",\n' % (self.vegetable,)) if self.fruit is not None and 'fruit' not in already_processed: - already_processed.append('fruit') + already_processed.add('fruit') showIndent(outfile, level) outfile.write('fruit = "%s",\n' % (self.fruit,)) if self.ratio is not None and 'ratio' not in already_processed: - already_processed.append('ratio') + already_processed.add('ratio') showIndent(outfile, level) outfile.write('ratio = %f,\n' % (self.ratio,)) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') showIndent(outfile, level) outfile.write('id = %d,\n' % (self.id,)) if self.value is not None and 'value' not in already_processed: - already_processed.append('value') + already_processed.add('value') showIndent(outfile, level) outfile.write('value = "%s",\n' % (self.value,)) def exportLiteralChildren(self, outfile, level, name_): @@ -1096,40 +1101,41 @@ class person(GeneratedsSuper): showIndent(outfile, level) outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('vegetable', node) if value is not None and 'vegetable' not in already_processed: - already_processed.append('vegetable') + already_processed.add('vegetable') self.vegetable = value value = find_attr_value_('fruit', node) if value is not None and 'fruit' not in already_processed: - already_processed.append('fruit') + already_processed.add('fruit') self.fruit = value value = find_attr_value_('ratio', node) if value is not None and 'ratio' not in already_processed: - already_processed.append('ratio') + already_processed.add('ratio') try: self.ratio = float(value) except ValueError, exp: raise ValueError('Bad float/double attribute (ratio): %s' % exp) value = find_attr_value_('id', node) if value is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') try: self.id = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('value', node) if value is not None and 'value' not in already_processed: - already_processed.append('value') + already_processed.add('value') self.value = value value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'name': @@ -1307,7 +1313,7 @@ class programmer(person): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='programmer') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1319,25 +1325,25 @@ class programmer(person): def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='programmer'): super(programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='programmer') if self.language is not None and 'language' not in already_processed: - already_processed.append('language') + already_processed.add('language') outfile.write(' language=%s' % (self.gds_format_string(quote_attrib(self.language).encode(ExternalEncoding), input_name='language'), )) if self.area is not None and 'area' not in already_processed: - already_processed.append('area') + already_processed.add('area') outfile.write(' area=%s' % (self.gds_format_string(quote_attrib(self.area).encode(ExternalEncoding), input_name='area'), )) if self.attrnegint is not None and 'attrnegint' not in already_processed: - already_processed.append('attrnegint') + already_processed.add('attrnegint') outfile.write(' attrnegint="%s"' % self.gds_format_integer(self.attrnegint, input_name='attrnegint')) if self.attrposint is not None and 'attrposint' not in already_processed: - already_processed.append('attrposint') + already_processed.add('attrposint') outfile.write(' attrposint="%s"' % self.gds_format_integer(self.attrposint, input_name='attrposint')) if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed: - already_processed.append('attrnonnegint') + already_processed.add('attrnonnegint') outfile.write(' attrnonnegint="%s"' % self.gds_format_integer(self.attrnonnegint, input_name='attrnonnegint')) if self.attrnonposint is not None and 'attrnonposint' not in already_processed: - already_processed.append('attrnonposint') + already_processed.add('attrnonposint') outfile.write(' attrnonposint="%s"' % self.gds_format_integer(self.attrnonposint, input_name='attrnonposint')) if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) def exportChildren(self, outfile, level, namespace_='', name_='programmer', fromsubclass_=False, pretty_print=True): @@ -1402,32 +1408,33 @@ class programmer(person): return False def exportLiteral(self, outfile, level, name_='programmer'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.language is not None and 'language' not in already_processed: - already_processed.append('language') + already_processed.add('language') showIndent(outfile, level) outfile.write('language = "%s",\n' % (self.language,)) if self.area is not None and 'area' not in already_processed: - already_processed.append('area') + already_processed.add('area') showIndent(outfile, level) outfile.write('area = "%s",\n' % (self.area,)) if self.attrnegint is not None and 'attrnegint' not in already_processed: - already_processed.append('attrnegint') + already_processed.add('attrnegint') showIndent(outfile, level) outfile.write('attrnegint = %d,\n' % (self.attrnegint,)) if self.attrposint is not None and 'attrposint' not in already_processed: - already_processed.append('attrposint') + already_processed.add('attrposint') showIndent(outfile, level) outfile.write('attrposint = %d,\n' % (self.attrposint,)) if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed: - already_processed.append('attrnonnegint') + already_processed.add('attrnonnegint') showIndent(outfile, level) outfile.write('attrnonnegint = %d,\n' % (self.attrnonnegint,)) if self.attrnonposint is not None and 'attrnonposint' not in already_processed: - already_processed.append('attrnonposint') + already_processed.add('attrnonposint') showIndent(outfile, level) outfile.write('attrnonposint = %d,\n' % (self.attrnonposint,)) super(programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) @@ -1473,22 +1480,23 @@ class programmer(person): showIndent(outfile, level) outfile.write('elarraytypes=%s,\n' % quote_python(self.elarraytypes).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('language', node) if value is not None and 'language' not in already_processed: - already_processed.append('language') + already_processed.add('language') self.language = value value = find_attr_value_('area', node) if value is not None and 'area' not in already_processed: - already_processed.append('area') + already_processed.add('area') self.area = value value = find_attr_value_('attrnegint', node) if value is not None and 'attrnegint' not in already_processed: - already_processed.append('attrnegint') + already_processed.add('attrnegint') try: self.attrnegint = int(value) except ValueError, exp: @@ -1497,7 +1505,7 @@ class programmer(person): raise_parse_error(node, 'Invalid NegativeInteger') value = find_attr_value_('attrposint', node) if value is not None and 'attrposint' not in already_processed: - already_processed.append('attrposint') + already_processed.add('attrposint') try: self.attrposint = int(value) except ValueError, exp: @@ -1506,7 +1514,7 @@ class programmer(person): raise_parse_error(node, 'Invalid PositiveInteger') value = find_attr_value_('attrnonnegint', node) if value is not None and 'attrnonnegint' not in already_processed: - already_processed.append('attrnonnegint') + already_processed.add('attrnonnegint') try: self.attrnonnegint = int(value) except ValueError, exp: @@ -1515,7 +1523,7 @@ class programmer(person): raise_parse_error(node, 'Invalid NonNegativeInteger') value = find_attr_value_('attrnonposint', node) if value is not None and 'attrnonposint' not in already_processed: - already_processed.append('attrnonposint') + already_processed.add('attrnonposint') try: self.attrnonposint = int(value) except ValueError, exp: @@ -1524,7 +1532,7 @@ class programmer(person): raise_parse_error(node, 'Invalid NonPositiveInteger') value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value super(programmer, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): @@ -1709,7 +1717,7 @@ class param(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='param') if self.hasContent_(): outfile.write('>') @@ -1720,22 +1728,22 @@ class param(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='param'): if self.semantic is not None and 'semantic' not in already_processed: - already_processed.append('semantic') + already_processed.add('semantic') outfile.write(' semantic=%s' % (self.gds_format_string(quote_attrib(self.semantic).encode(ExternalEncoding), input_name='semantic'), )) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') outfile.write(' name=%s' % (quote_attrib(self.name), )) if self.flow is not None and 'flow' not in already_processed: - already_processed.append('flow') + already_processed.add('flow') outfile.write(' flow=%s' % (quote_attrib(self.flow), )) if self.sid is not None and 'sid' not in already_processed: - already_processed.append('sid') + already_processed.add('sid') outfile.write(' sid=%s' % (quote_attrib(self.sid), )) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') outfile.write(' type=%s' % (self.gds_format_string(quote_attrib(self.type_).encode(ExternalEncoding), input_name='type'), )) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') outfile.write(' id=%s' % (self.gds_format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) def exportChildren(self, outfile, level, namespace_='', name_='param', fromsubclass_=False, pretty_print=True): pass @@ -1748,40 +1756,42 @@ class param(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='param'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.semantic is not None and 'semantic' not in already_processed: - already_processed.append('semantic') + already_processed.add('semantic') showIndent(outfile, level) outfile.write('semantic = "%s",\n' % (self.semantic,)) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) if self.flow is not None and 'flow' not in already_processed: - already_processed.append('flow') + already_processed.add('flow') showIndent(outfile, level) outfile.write('flow = %s,\n' % (self.flow,)) if self.sid is not None and 'sid' not in already_processed: - already_processed.append('sid') + already_processed.add('sid') showIndent(outfile, level) outfile.write('sid = "%s",\n' % (self.sid,)) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') showIndent(outfile, level) outfile.write('type_ = "%s",\n' % (self.type_,)) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') showIndent(outfile, level) outfile.write('id = "%s",\n' % (self.id,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -1789,28 +1799,28 @@ class param(GeneratedsSuper): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('semantic', node) if value is not None and 'semantic' not in already_processed: - already_processed.append('semantic') + already_processed.add('semantic') self.semantic = value self.semantic = ' '.join(self.semantic.split()) value = find_attr_value_('name', node) if value is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') self.name = value value = find_attr_value_('flow', node) if value is not None and 'flow' not in already_processed: - already_processed.append('flow') + already_processed.add('flow') self.flow = value value = find_attr_value_('sid', node) if value is not None and 'sid' not in already_processed: - already_processed.append('sid') + already_processed.add('sid') self.sid = value value = find_attr_value_('type', node) if value is not None and 'type' not in already_processed: - already_processed.append('type') + already_processed.add('type') self.type_ = value value = find_attr_value_('id', node) if value is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') self.id = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -1891,7 +1901,7 @@ class python_programmer(programmer): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1903,7 +1913,7 @@ class python_programmer(programmer): def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='python-programmer'): super(python_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer') if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), )) def exportChildren(self, outfile, level, namespace_='', name_='python-programmer', fromsubclass_=False, pretty_print=True): super(python_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) @@ -1924,12 +1934,13 @@ class python_programmer(programmer): return False def exportLiteral(self, outfile, level, name_='python-programmer'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') showIndent(outfile, level) outfile.write('nick_name = "%s",\n' % (self.nick_name,)) super(python_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) @@ -1939,14 +1950,15 @@ class python_programmer(programmer): showIndent(outfile, level) outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('nick-name', node) if value is not None and 'nick-name' not in already_processed: - already_processed.append('nick-name') + already_processed.add('nick-name') self.nick_name = value super(python_programmer, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): @@ -2036,7 +2048,7 @@ class java_programmer(programmer): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2048,10 +2060,10 @@ class java_programmer(programmer): def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='java-programmer'): super(java_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer') if self.status is not None and 'status' not in already_processed: - already_processed.append('status') + already_processed.add('status') outfile.write(' status=%s' % (self.gds_format_string(quote_attrib(self.status).encode(ExternalEncoding), input_name='status'), )) if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), )) def exportChildren(self, outfile, level, namespace_='', name_='java-programmer', fromsubclass_=False, pretty_print=True): super(java_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) @@ -2072,16 +2084,17 @@ class java_programmer(programmer): return False def exportLiteral(self, outfile, level, name_='java-programmer'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.status is not None and 'status' not in already_processed: - already_processed.append('status') + already_processed.add('status') showIndent(outfile, level) outfile.write('status = "%s",\n' % (self.status,)) if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') showIndent(outfile, level) outfile.write('nick_name = "%s",\n' % (self.nick_name,)) super(java_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) @@ -2091,18 +2104,19 @@ class java_programmer(programmer): showIndent(outfile, level) outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('status', node) if value is not None and 'status' not in already_processed: - already_processed.append('status') + already_processed.add('status') self.status = value value = find_attr_value_('nick-name', node) if value is not None and 'nick-name' not in already_processed: - already_processed.append('nick-name') + already_processed.add('nick-name') self.nick_name = value super(java_programmer, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): @@ -2195,7 +2209,7 @@ class agent(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='agent') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2234,7 +2248,8 @@ class agent(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='agent'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2256,7 +2271,8 @@ class agent(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -2367,7 +2383,7 @@ class special_agent(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='special-agent') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2406,7 +2422,8 @@ class special_agent(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='special-agent'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2428,7 +2445,8 @@ class special_agent(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -2566,7 +2584,7 @@ class booster(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='booster') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2617,7 +2635,8 @@ class booster(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='booster'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2666,7 +2685,8 @@ class booster(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -2798,7 +2818,7 @@ class info(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='info') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2808,13 +2828,13 @@ class info(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='info'): if self.rating is not None and 'rating' not in already_processed: - already_processed.append('rating') + already_processed.add('rating') outfile.write(' rating="%s"' % self.gds_format_float(self.rating, input_name='rating')) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') outfile.write(' type="%s"' % self.gds_format_integer(self.type_, input_name='type')) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) def exportChildren(self, outfile, level, namespace_='', name_='info', fromsubclass_=False, pretty_print=True): pass @@ -2827,47 +2847,49 @@ class info(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='info'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.rating is not None and 'rating' not in already_processed: - already_processed.append('rating') + already_processed.add('rating') showIndent(outfile, level) outfile.write('rating = %f,\n' % (self.rating,)) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') showIndent(outfile, level) outfile.write('type_ = %d,\n' % (self.type_,)) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('rating', node) if value is not None and 'rating' not in already_processed: - already_processed.append('rating') + already_processed.add('rating') try: self.rating = float(value) except ValueError, exp: raise ValueError('Bad float/double attribute (rating): %s' % exp) value = find_attr_value_('type', node) if value is not None and 'type' not in already_processed: - already_processed.append('type') + already_processed.add('type') try: self.type_ = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('name', node) if value is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') self.name = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -2947,7 +2969,7 @@ class client_handlerType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='client-handlerType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2979,7 +3001,8 @@ class client_handlerType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='client-handlerType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2992,7 +3015,8 @@ class client_handlerType(GeneratedsSuper): showIndent(outfile, level) outfile.write('refid=%d,\n' % self.refid) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) diff --git a/tests/out2_sup.py b/tests/out2_sup.py index e27c95b..c9105a9 100644 --- a/tests/out2_sup.py +++ b/tests/out2_sup.py @@ -542,7 +542,7 @@ class people(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='people') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -581,7 +581,8 @@ class people(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='people'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -648,7 +649,8 @@ class people(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -772,7 +774,7 @@ class comments(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='comments') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -797,7 +799,8 @@ class comments(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='comments'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) @@ -813,7 +816,8 @@ class comments(GeneratedsSuper): outfile.write('],\n') pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) if node.text is not None: obj_ = self.mixedclass_(MixedContainer.CategoryText, @@ -964,7 +968,7 @@ class person(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='person') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -975,22 +979,22 @@ class person(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='person'): if self.vegetable is not None and 'vegetable' not in already_processed: - already_processed.append('vegetable') + already_processed.add('vegetable') outfile.write(' vegetable=%s' % (self.gds_format_string(quote_attrib(self.vegetable).encode(ExternalEncoding), input_name='vegetable'), )) if self.fruit is not None and 'fruit' not in already_processed: - already_processed.append('fruit') + already_processed.add('fruit') outfile.write(' fruit=%s' % (self.gds_format_string(quote_attrib(self.fruit).encode(ExternalEncoding), input_name='fruit'), )) if self.ratio is not None and 'ratio' not in already_processed: - already_processed.append('ratio') + already_processed.add('ratio') outfile.write(' ratio="%s"' % self.gds_format_float(self.ratio, input_name='ratio')) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') outfile.write(' id="%s"' % self.gds_format_integer(self.id, input_name='id')) if self.value is not None and 'value' not in already_processed: - already_processed.append('value') + already_processed.add('value') outfile.write(' value=%s' % (self.gds_format_string(quote_attrib(self.value).encode(ExternalEncoding), input_name='value'), )) if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) def exportChildren(self, outfile, level, namespace_='', name_='person', fromsubclass_=False, pretty_print=True): @@ -1028,28 +1032,29 @@ class person(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='person'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.vegetable is not None and 'vegetable' not in already_processed: - already_processed.append('vegetable') + already_processed.add('vegetable') showIndent(outfile, level) outfile.write('vegetable = "%s",\n' % (self.vegetable,)) if self.fruit is not None and 'fruit' not in already_processed: - already_processed.append('fruit') + already_processed.add('fruit') showIndent(outfile, level) outfile.write('fruit = "%s",\n' % (self.fruit,)) if self.ratio is not None and 'ratio' not in already_processed: - already_processed.append('ratio') + already_processed.add('ratio') showIndent(outfile, level) outfile.write('ratio = %f,\n' % (self.ratio,)) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') showIndent(outfile, level) outfile.write('id = %d,\n' % (self.id,)) if self.value is not None and 'value' not in already_processed: - already_processed.append('value') + already_processed.add('value') showIndent(outfile, level) outfile.write('value = "%s",\n' % (self.value,)) def exportLiteralChildren(self, outfile, level, name_): @@ -1096,40 +1101,41 @@ class person(GeneratedsSuper): showIndent(outfile, level) outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('vegetable', node) if value is not None and 'vegetable' not in already_processed: - already_processed.append('vegetable') + already_processed.add('vegetable') self.vegetable = value value = find_attr_value_('fruit', node) if value is not None and 'fruit' not in already_processed: - already_processed.append('fruit') + already_processed.add('fruit') self.fruit = value value = find_attr_value_('ratio', node) if value is not None and 'ratio' not in already_processed: - already_processed.append('ratio') + already_processed.add('ratio') try: self.ratio = float(value) except ValueError, exp: raise ValueError('Bad float/double attribute (ratio): %s' % exp) value = find_attr_value_('id', node) if value is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') try: self.id = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('value', node) if value is not None and 'value' not in already_processed: - already_processed.append('value') + already_processed.add('value') self.value = value value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'name': @@ -1307,7 +1313,7 @@ class programmer(person): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='programmer') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1319,25 +1325,25 @@ class programmer(person): def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='programmer'): super(programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='programmer') if self.language is not None and 'language' not in already_processed: - already_processed.append('language') + already_processed.add('language') outfile.write(' language=%s' % (self.gds_format_string(quote_attrib(self.language).encode(ExternalEncoding), input_name='language'), )) if self.area is not None and 'area' not in already_processed: - already_processed.append('area') + already_processed.add('area') outfile.write(' area=%s' % (self.gds_format_string(quote_attrib(self.area).encode(ExternalEncoding), input_name='area'), )) if self.attrnegint is not None and 'attrnegint' not in already_processed: - already_processed.append('attrnegint') + already_processed.add('attrnegint') outfile.write(' attrnegint="%s"' % self.gds_format_integer(self.attrnegint, input_name='attrnegint')) if self.attrposint is not None and 'attrposint' not in already_processed: - already_processed.append('attrposint') + already_processed.add('attrposint') outfile.write(' attrposint="%s"' % self.gds_format_integer(self.attrposint, input_name='attrposint')) if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed: - already_processed.append('attrnonnegint') + already_processed.add('attrnonnegint') outfile.write(' attrnonnegint="%s"' % self.gds_format_integer(self.attrnonnegint, input_name='attrnonnegint')) if self.attrnonposint is not None and 'attrnonposint' not in already_processed: - already_processed.append('attrnonposint') + already_processed.add('attrnonposint') outfile.write(' attrnonposint="%s"' % self.gds_format_integer(self.attrnonposint, input_name='attrnonposint')) if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) def exportChildren(self, outfile, level, namespace_='', name_='programmer', fromsubclass_=False, pretty_print=True): @@ -1402,32 +1408,33 @@ class programmer(person): return False def exportLiteral(self, outfile, level, name_='programmer'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.language is not None and 'language' not in already_processed: - already_processed.append('language') + already_processed.add('language') showIndent(outfile, level) outfile.write('language = "%s",\n' % (self.language,)) if self.area is not None and 'area' not in already_processed: - already_processed.append('area') + already_processed.add('area') showIndent(outfile, level) outfile.write('area = "%s",\n' % (self.area,)) if self.attrnegint is not None and 'attrnegint' not in already_processed: - already_processed.append('attrnegint') + already_processed.add('attrnegint') showIndent(outfile, level) outfile.write('attrnegint = %d,\n' % (self.attrnegint,)) if self.attrposint is not None and 'attrposint' not in already_processed: - already_processed.append('attrposint') + already_processed.add('attrposint') showIndent(outfile, level) outfile.write('attrposint = %d,\n' % (self.attrposint,)) if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed: - already_processed.append('attrnonnegint') + already_processed.add('attrnonnegint') showIndent(outfile, level) outfile.write('attrnonnegint = %d,\n' % (self.attrnonnegint,)) if self.attrnonposint is not None and 'attrnonposint' not in already_processed: - already_processed.append('attrnonposint') + already_processed.add('attrnonposint') showIndent(outfile, level) outfile.write('attrnonposint = %d,\n' % (self.attrnonposint,)) super(programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) @@ -1473,22 +1480,23 @@ class programmer(person): showIndent(outfile, level) outfile.write('elarraytypes=%s,\n' % quote_python(self.elarraytypes).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('language', node) if value is not None and 'language' not in already_processed: - already_processed.append('language') + already_processed.add('language') self.language = value value = find_attr_value_('area', node) if value is not None and 'area' not in already_processed: - already_processed.append('area') + already_processed.add('area') self.area = value value = find_attr_value_('attrnegint', node) if value is not None and 'attrnegint' not in already_processed: - already_processed.append('attrnegint') + already_processed.add('attrnegint') try: self.attrnegint = int(value) except ValueError, exp: @@ -1497,7 +1505,7 @@ class programmer(person): raise_parse_error(node, 'Invalid NegativeInteger') value = find_attr_value_('attrposint', node) if value is not None and 'attrposint' not in already_processed: - already_processed.append('attrposint') + already_processed.add('attrposint') try: self.attrposint = int(value) except ValueError, exp: @@ -1506,7 +1514,7 @@ class programmer(person): raise_parse_error(node, 'Invalid PositiveInteger') value = find_attr_value_('attrnonnegint', node) if value is not None and 'attrnonnegint' not in already_processed: - already_processed.append('attrnonnegint') + already_processed.add('attrnonnegint') try: self.attrnonnegint = int(value) except ValueError, exp: @@ -1515,7 +1523,7 @@ class programmer(person): raise_parse_error(node, 'Invalid NonNegativeInteger') value = find_attr_value_('attrnonposint', node) if value is not None and 'attrnonposint' not in already_processed: - already_processed.append('attrnonposint') + already_processed.add('attrnonposint') try: self.attrnonposint = int(value) except ValueError, exp: @@ -1524,7 +1532,7 @@ class programmer(person): raise_parse_error(node, 'Invalid NonPositiveInteger') value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value super(programmer, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): @@ -1709,7 +1717,7 @@ class param(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='param') if self.hasContent_(): outfile.write('>') @@ -1720,22 +1728,22 @@ class param(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='param'): if self.semantic is not None and 'semantic' not in already_processed: - already_processed.append('semantic') + already_processed.add('semantic') outfile.write(' semantic=%s' % (self.gds_format_string(quote_attrib(self.semantic).encode(ExternalEncoding), input_name='semantic'), )) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') outfile.write(' name=%s' % (quote_attrib(self.name), )) if self.flow is not None and 'flow' not in already_processed: - already_processed.append('flow') + already_processed.add('flow') outfile.write(' flow=%s' % (quote_attrib(self.flow), )) if self.sid is not None and 'sid' not in already_processed: - already_processed.append('sid') + already_processed.add('sid') outfile.write(' sid=%s' % (quote_attrib(self.sid), )) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') outfile.write(' type=%s' % (self.gds_format_string(quote_attrib(self.type_).encode(ExternalEncoding), input_name='type'), )) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') outfile.write(' id=%s' % (self.gds_format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) def exportChildren(self, outfile, level, namespace_='', name_='param', fromsubclass_=False, pretty_print=True): pass @@ -1748,40 +1756,42 @@ class param(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='param'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.semantic is not None and 'semantic' not in already_processed: - already_processed.append('semantic') + already_processed.add('semantic') showIndent(outfile, level) outfile.write('semantic = "%s",\n' % (self.semantic,)) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) if self.flow is not None and 'flow' not in already_processed: - already_processed.append('flow') + already_processed.add('flow') showIndent(outfile, level) outfile.write('flow = %s,\n' % (self.flow,)) if self.sid is not None and 'sid' not in already_processed: - already_processed.append('sid') + already_processed.add('sid') showIndent(outfile, level) outfile.write('sid = "%s",\n' % (self.sid,)) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') showIndent(outfile, level) outfile.write('type_ = "%s",\n' % (self.type_,)) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') showIndent(outfile, level) outfile.write('id = "%s",\n' % (self.id,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -1789,28 +1799,28 @@ class param(GeneratedsSuper): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('semantic', node) if value is not None and 'semantic' not in already_processed: - already_processed.append('semantic') + already_processed.add('semantic') self.semantic = value self.semantic = ' '.join(self.semantic.split()) value = find_attr_value_('name', node) if value is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') self.name = value value = find_attr_value_('flow', node) if value is not None and 'flow' not in already_processed: - already_processed.append('flow') + already_processed.add('flow') self.flow = value value = find_attr_value_('sid', node) if value is not None and 'sid' not in already_processed: - already_processed.append('sid') + already_processed.add('sid') self.sid = value value = find_attr_value_('type', node) if value is not None and 'type' not in already_processed: - already_processed.append('type') + already_processed.add('type') self.type_ = value value = find_attr_value_('id', node) if value is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') self.id = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -1891,7 +1901,7 @@ class python_programmer(programmer): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1903,7 +1913,7 @@ class python_programmer(programmer): def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='python-programmer'): super(python_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer') if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), )) def exportChildren(self, outfile, level, namespace_='', name_='python-programmer', fromsubclass_=False, pretty_print=True): super(python_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) @@ -1924,12 +1934,13 @@ class python_programmer(programmer): return False def exportLiteral(self, outfile, level, name_='python-programmer'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') showIndent(outfile, level) outfile.write('nick_name = "%s",\n' % (self.nick_name,)) super(python_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) @@ -1939,14 +1950,15 @@ class python_programmer(programmer): showIndent(outfile, level) outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('nick-name', node) if value is not None and 'nick-name' not in already_processed: - already_processed.append('nick-name') + already_processed.add('nick-name') self.nick_name = value super(python_programmer, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): @@ -2036,7 +2048,7 @@ class java_programmer(programmer): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2048,10 +2060,10 @@ class java_programmer(programmer): def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='java-programmer'): super(java_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer') if self.status is not None and 'status' not in already_processed: - already_processed.append('status') + already_processed.add('status') outfile.write(' status=%s' % (self.gds_format_string(quote_attrib(self.status).encode(ExternalEncoding), input_name='status'), )) if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), )) def exportChildren(self, outfile, level, namespace_='', name_='java-programmer', fromsubclass_=False, pretty_print=True): super(java_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) @@ -2072,16 +2084,17 @@ class java_programmer(programmer): return False def exportLiteral(self, outfile, level, name_='java-programmer'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.status is not None and 'status' not in already_processed: - already_processed.append('status') + already_processed.add('status') showIndent(outfile, level) outfile.write('status = "%s",\n' % (self.status,)) if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') showIndent(outfile, level) outfile.write('nick_name = "%s",\n' % (self.nick_name,)) super(java_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) @@ -2091,18 +2104,19 @@ class java_programmer(programmer): showIndent(outfile, level) outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('status', node) if value is not None and 'status' not in already_processed: - already_processed.append('status') + already_processed.add('status') self.status = value value = find_attr_value_('nick-name', node) if value is not None and 'nick-name' not in already_processed: - already_processed.append('nick-name') + already_processed.add('nick-name') self.nick_name = value super(java_programmer, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): @@ -2195,7 +2209,7 @@ class agent(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='agent') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2234,7 +2248,8 @@ class agent(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='agent'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2256,7 +2271,8 @@ class agent(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -2367,7 +2383,7 @@ class special_agent(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='special-agent') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2406,7 +2422,8 @@ class special_agent(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='special-agent'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2428,7 +2445,8 @@ class special_agent(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -2566,7 +2584,7 @@ class booster(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='booster') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2617,7 +2635,8 @@ class booster(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='booster'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2666,7 +2685,8 @@ class booster(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -2798,7 +2818,7 @@ class info(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='info') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2808,13 +2828,13 @@ class info(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='info'): if self.rating is not None and 'rating' not in already_processed: - already_processed.append('rating') + already_processed.add('rating') outfile.write(' rating="%s"' % self.gds_format_float(self.rating, input_name='rating')) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') outfile.write(' type="%s"' % self.gds_format_integer(self.type_, input_name='type')) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) def exportChildren(self, outfile, level, namespace_='', name_='info', fromsubclass_=False, pretty_print=True): pass @@ -2827,47 +2847,49 @@ class info(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='info'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.rating is not None and 'rating' not in already_processed: - already_processed.append('rating') + already_processed.add('rating') showIndent(outfile, level) outfile.write('rating = %f,\n' % (self.rating,)) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') showIndent(outfile, level) outfile.write('type_ = %d,\n' % (self.type_,)) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('rating', node) if value is not None and 'rating' not in already_processed: - already_processed.append('rating') + already_processed.add('rating') try: self.rating = float(value) except ValueError, exp: raise ValueError('Bad float/double attribute (rating): %s' % exp) value = find_attr_value_('type', node) if value is not None and 'type' not in already_processed: - already_processed.append('type') + already_processed.add('type') try: self.type_ = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('name', node) if value is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') self.name = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -2947,7 +2969,7 @@ class client_handlerType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='client-handlerType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2979,7 +3001,8 @@ class client_handlerType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='client-handlerType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2992,7 +3015,8 @@ class client_handlerType(GeneratedsSuper): showIndent(outfile, level) outfile.write('refid=%d,\n' % self.refid) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) diff --git a/tests/people_procincl1_sup.py b/tests/people_procincl1_sup.py index c569a68..996b7af 100644 --- a/tests/people_procincl1_sup.py +++ b/tests/people_procincl1_sup.py @@ -552,7 +552,7 @@ class people(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='people') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -594,7 +594,8 @@ class people(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='people'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -673,7 +674,8 @@ class people(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -759,7 +761,7 @@ class comments(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='comments') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -785,7 +787,8 @@ class comments(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='comments'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) @@ -807,7 +810,8 @@ class comments(GeneratedsSuper): outfile.write('],\n') pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) if node.text is not None: obj_ = self.mixedclass_(MixedContainer.CategoryText, @@ -920,7 +924,7 @@ class person(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='person') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -931,22 +935,22 @@ class person(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='person'): if self.vegetable is not None and 'vegetable' not in already_processed: - already_processed.append('vegetable') + already_processed.add('vegetable') outfile.write(' vegetable=%s' % (self.gds_format_string(quote_attrib(self.vegetable).encode(ExternalEncoding), input_name='vegetable'), )) if self.fruit is not None and 'fruit' not in already_processed: - already_processed.append('fruit') + already_processed.add('fruit') outfile.write(' fruit=%s' % (self.gds_format_string(quote_attrib(self.fruit).encode(ExternalEncoding), input_name='fruit'), )) if self.ratio is not None and 'ratio' not in already_processed: - already_processed.append('ratio') + already_processed.add('ratio') outfile.write(' ratio="%s"' % self.gds_format_float(self.ratio, input_name='ratio')) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') outfile.write(' id="%s"' % self.gds_format_integer(self.id, input_name='id')) if self.value is not None and 'value' not in already_processed: - already_processed.append('value') + already_processed.add('value') outfile.write(' value=%s' % (self.gds_format_string(quote_attrib(self.value).encode(ExternalEncoding), input_name='value'), )) if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) def exportChildren(self, outfile, level, namespace_='', name_='person', fromsubclass_=False, pretty_print=True): @@ -984,28 +988,29 @@ class person(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='person'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.vegetable is not None and 'vegetable' not in already_processed: - already_processed.append('vegetable') + already_processed.add('vegetable') showIndent(outfile, level) outfile.write('vegetable = "%s",\n' % (self.vegetable,)) if self.fruit is not None and 'fruit' not in already_processed: - already_processed.append('fruit') + already_processed.add('fruit') showIndent(outfile, level) outfile.write('fruit = "%s",\n' % (self.fruit,)) if self.ratio is not None and 'ratio' not in already_processed: - already_processed.append('ratio') + already_processed.add('ratio') showIndent(outfile, level) outfile.write('ratio = %f,\n' % (self.ratio,)) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') showIndent(outfile, level) outfile.write('id = %d,\n' % (self.id,)) if self.value is not None and 'value' not in already_processed: - already_processed.append('value') + already_processed.add('value') showIndent(outfile, level) outfile.write('value = "%s",\n' % (self.value,)) def exportLiteralChildren(self, outfile, level, name_): @@ -1052,40 +1057,41 @@ class person(GeneratedsSuper): showIndent(outfile, level) outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('vegetable', node) if value is not None and 'vegetable' not in already_processed: - already_processed.append('vegetable') + already_processed.add('vegetable') self.vegetable = value value = find_attr_value_('fruit', node) if value is not None and 'fruit' not in already_processed: - already_processed.append('fruit') + already_processed.add('fruit') self.fruit = value value = find_attr_value_('ratio', node) if value is not None and 'ratio' not in already_processed: - already_processed.append('ratio') + already_processed.add('ratio') try: self.ratio = float(value) except ValueError, exp: raise ValueError('Bad float/double attribute (ratio): %s' % exp) value = find_attr_value_('id', node) if value is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') try: self.id = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('value', node) if value is not None and 'value' not in already_processed: - already_processed.append('value') + already_processed.add('value') self.value = value value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'name': @@ -1140,7 +1146,7 @@ class specialperson(person): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='specialperson') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1162,7 +1168,8 @@ class specialperson(person): return False def exportLiteral(self, outfile, level, name_='specialperson'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -1170,7 +1177,8 @@ class specialperson(person): def exportLiteralChildren(self, outfile, level, name_): super(specialperson, self).exportLiteralChildren(outfile, level, name_) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -1231,7 +1239,7 @@ class param(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='param') if self.hasContent_(): outfile.write('>') @@ -1242,22 +1250,22 @@ class param(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='param'): if self.semantic is not None and 'semantic' not in already_processed: - already_processed.append('semantic') + already_processed.add('semantic') outfile.write(' semantic=%s' % (self.gds_format_string(quote_attrib(self.semantic).encode(ExternalEncoding), input_name='semantic'), )) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') outfile.write(' name=%s' % (quote_attrib(self.name), )) if self.flow is not None and 'flow' not in already_processed: - already_processed.append('flow') + already_processed.add('flow') outfile.write(' flow=%s' % (quote_attrib(self.flow), )) if self.sid is not None and 'sid' not in already_processed: - already_processed.append('sid') + already_processed.add('sid') outfile.write(' sid=%s' % (quote_attrib(self.sid), )) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') outfile.write(' type=%s' % (self.gds_format_string(quote_attrib(self.type_).encode(ExternalEncoding), input_name='type'), )) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') outfile.write(' id=%s' % (self.gds_format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) def exportChildren(self, outfile, level, namespace_='', name_='param', fromsubclass_=False, pretty_print=True): pass @@ -1270,40 +1278,42 @@ class param(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='param'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.semantic is not None and 'semantic' not in already_processed: - already_processed.append('semantic') + already_processed.add('semantic') showIndent(outfile, level) outfile.write('semantic = "%s",\n' % (self.semantic,)) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) if self.flow is not None and 'flow' not in already_processed: - already_processed.append('flow') + already_processed.add('flow') showIndent(outfile, level) outfile.write('flow = %s,\n' % (self.flow,)) if self.sid is not None and 'sid' not in already_processed: - already_processed.append('sid') + already_processed.add('sid') showIndent(outfile, level) outfile.write('sid = "%s",\n' % (self.sid,)) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') showIndent(outfile, level) outfile.write('type_ = "%s",\n' % (self.type_,)) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') showIndent(outfile, level) outfile.write('id = "%s",\n' % (self.id,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -1311,28 +1321,28 @@ class param(GeneratedsSuper): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('semantic', node) if value is not None and 'semantic' not in already_processed: - already_processed.append('semantic') + already_processed.add('semantic') self.semantic = value self.semantic = ' '.join(self.semantic.split()) value = find_attr_value_('name', node) if value is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') self.name = value value = find_attr_value_('flow', node) if value is not None and 'flow' not in already_processed: - already_processed.append('flow') + already_processed.add('flow') self.flow = value value = find_attr_value_('sid', node) if value is not None and 'sid' not in already_processed: - already_processed.append('sid') + already_processed.add('sid') self.sid = value value = find_attr_value_('type', node) if value is not None and 'type' not in already_processed: - already_processed.append('type') + already_processed.add('type') self.type_ = value value = find_attr_value_('id', node) if value is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') self.id = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -1383,7 +1393,7 @@ class agent(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='agent') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1425,7 +1435,8 @@ class agent(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='agent'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -1459,7 +1470,8 @@ class agent(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -1544,7 +1556,7 @@ class special_agent(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='special-agent') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1583,7 +1595,8 @@ class special_agent(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='special-agent'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -1605,7 +1618,8 @@ class special_agent(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -1701,7 +1715,7 @@ class booster(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='booster') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1712,7 +1726,7 @@ class booster(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='booster'): if self.member_id is not None and 'member_id' not in already_processed: - already_processed.append('member_id') + already_processed.add('member_id') outfile.write(' member-id=%s' % (self.gds_format_string(quote_attrib(self.member_id).encode(ExternalEncoding), input_name='member-id'), )) def exportChildren(self, outfile, level, namespace_='', name_='booster', fromsubclass_=False, pretty_print=True): if pretty_print: @@ -1754,12 +1768,13 @@ class booster(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='booster'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.member_id is not None and 'member_id' not in already_processed: - already_processed.append('member_id') + already_processed.add('member_id') showIndent(outfile, level) outfile.write('member_id = "%s",\n' % (self.member_id,)) def exportLiteralChildren(self, outfile, level, name_): @@ -1806,14 +1821,15 @@ class booster(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('member-id', node) if value is not None and 'member-id' not in already_processed: - already_processed.append('member-id') + already_processed.add('member-id') self.member_id = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'firstname': @@ -1895,7 +1911,7 @@ class info(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='info') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1905,13 +1921,13 @@ class info(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='info'): if self.rating is not None and 'rating' not in already_processed: - already_processed.append('rating') + already_processed.add('rating') outfile.write(' rating="%s"' % self.gds_format_float(self.rating, input_name='rating')) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') outfile.write(' type="%s"' % self.gds_format_integer(self.type_, input_name='type')) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) def exportChildren(self, outfile, level, namespace_='', name_='info', fromsubclass_=False, pretty_print=True): pass @@ -1924,47 +1940,49 @@ class info(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='info'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.rating is not None and 'rating' not in already_processed: - already_processed.append('rating') + already_processed.add('rating') showIndent(outfile, level) outfile.write('rating = %f,\n' % (self.rating,)) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') showIndent(outfile, level) outfile.write('type_ = %d,\n' % (self.type_,)) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('rating', node) if value is not None and 'rating' not in already_processed: - already_processed.append('rating') + already_processed.add('rating') try: self.rating = float(value) except ValueError, exp: raise ValueError('Bad float/double attribute (rating): %s' % exp) value = find_attr_value_('type', node) if value is not None and 'type' not in already_processed: - already_processed.append('type') + already_processed.add('type') try: self.type_ = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('name', node) if value is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') self.name = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -1997,7 +2015,7 @@ class vehicle(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='vehicle') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2008,7 +2026,7 @@ class vehicle(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='vehicle'): if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) pass @@ -2029,7 +2047,8 @@ class vehicle(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='vehicle'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2039,14 +2058,15 @@ class vehicle(GeneratedsSuper): showIndent(outfile, level) outfile.write('wheelcount=%d,\n' % self.wheelcount) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'wheelcount': @@ -2084,7 +2104,7 @@ class automobile(vehicle): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='automobile') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2114,7 +2134,8 @@ class automobile(vehicle): return False def exportLiteral(self, outfile, level, name_='automobile'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2125,7 +2146,8 @@ class automobile(vehicle): showIndent(outfile, level) outfile.write('drivername=%s,\n' % quote_python(self.drivername).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -2164,7 +2186,7 @@ class airplane(vehicle): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='airplane') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2194,7 +2216,8 @@ class airplane(vehicle): return False def exportLiteral(self, outfile, level, name_='airplane'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2205,7 +2228,8 @@ class airplane(vehicle): showIndent(outfile, level) outfile.write('pilotname=%s,\n' % quote_python(self.pilotname).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -2316,7 +2340,7 @@ class programmer(person): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='programmer') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2328,25 +2352,25 @@ class programmer(person): def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='programmer'): super(programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='programmer') if self.language is not None and 'language' not in already_processed: - already_processed.append('language') + already_processed.add('language') outfile.write(' language=%s' % (self.gds_format_string(quote_attrib(self.language).encode(ExternalEncoding), input_name='language'), )) if self.area is not None and 'area' not in already_processed: - already_processed.append('area') + already_processed.add('area') outfile.write(' area=%s' % (self.gds_format_string(quote_attrib(self.area).encode(ExternalEncoding), input_name='area'), )) if self.attrnegint is not None and 'attrnegint' not in already_processed: - already_processed.append('attrnegint') + already_processed.add('attrnegint') outfile.write(' attrnegint="%s"' % self.gds_format_integer(self.attrnegint, input_name='attrnegint')) if self.attrposint is not None and 'attrposint' not in already_processed: - already_processed.append('attrposint') + already_processed.add('attrposint') outfile.write(' attrposint="%s"' % self.gds_format_integer(self.attrposint, input_name='attrposint')) if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed: - already_processed.append('attrnonnegint') + already_processed.add('attrnonnegint') outfile.write(' attrnonnegint="%s"' % self.gds_format_integer(self.attrnonnegint, input_name='attrnonnegint')) if self.attrnonposint is not None and 'attrnonposint' not in already_processed: - already_processed.append('attrnonposint') + already_processed.add('attrnonposint') outfile.write(' attrnonposint="%s"' % self.gds_format_integer(self.attrnonposint, input_name='attrnonposint')) if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) def exportChildren(self, outfile, level, namespace_='', name_='programmer', fromsubclass_=False, pretty_print=True): @@ -2407,32 +2431,33 @@ class programmer(person): return False def exportLiteral(self, outfile, level, name_='programmer'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.language is not None and 'language' not in already_processed: - already_processed.append('language') + already_processed.add('language') showIndent(outfile, level) outfile.write('language = "%s",\n' % (self.language,)) if self.area is not None and 'area' not in already_processed: - already_processed.append('area') + already_processed.add('area') showIndent(outfile, level) outfile.write('area = "%s",\n' % (self.area,)) if self.attrnegint is not None and 'attrnegint' not in already_processed: - already_processed.append('attrnegint') + already_processed.add('attrnegint') showIndent(outfile, level) outfile.write('attrnegint = %d,\n' % (self.attrnegint,)) if self.attrposint is not None and 'attrposint' not in already_processed: - already_processed.append('attrposint') + already_processed.add('attrposint') showIndent(outfile, level) outfile.write('attrposint = %d,\n' % (self.attrposint,)) if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed: - already_processed.append('attrnonnegint') + already_processed.add('attrnonnegint') showIndent(outfile, level) outfile.write('attrnonnegint = %d,\n' % (self.attrnonnegint,)) if self.attrnonposint is not None and 'attrnonposint' not in already_processed: - already_processed.append('attrnonposint') + already_processed.add('attrnonposint') showIndent(outfile, level) outfile.write('attrnonposint = %d,\n' % (self.attrnonposint,)) super(programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) @@ -2475,22 +2500,23 @@ class programmer(person): showIndent(outfile, level) outfile.write('elarraytypes=%s,\n' % quote_python(self.elarraytypes).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('language', node) if value is not None and 'language' not in already_processed: - already_processed.append('language') + already_processed.add('language') self.language = value value = find_attr_value_('area', node) if value is not None and 'area' not in already_processed: - already_processed.append('area') + already_processed.add('area') self.area = value value = find_attr_value_('attrnegint', node) if value is not None and 'attrnegint' not in already_processed: - already_processed.append('attrnegint') + already_processed.add('attrnegint') try: self.attrnegint = int(value) except ValueError, exp: @@ -2499,7 +2525,7 @@ class programmer(person): raise_parse_error(node, 'Invalid NegativeInteger') value = find_attr_value_('attrposint', node) if value is not None and 'attrposint' not in already_processed: - already_processed.append('attrposint') + already_processed.add('attrposint') try: self.attrposint = int(value) except ValueError, exp: @@ -2508,7 +2534,7 @@ class programmer(person): raise_parse_error(node, 'Invalid PositiveInteger') value = find_attr_value_('attrnonnegint', node) if value is not None and 'attrnonnegint' not in already_processed: - already_processed.append('attrnonnegint') + already_processed.add('attrnonnegint') try: self.attrnonnegint = int(value) except ValueError, exp: @@ -2517,7 +2543,7 @@ class programmer(person): raise_parse_error(node, 'Invalid NonNegativeInteger') value = find_attr_value_('attrnonposint', node) if value is not None and 'attrnonposint' not in already_processed: - already_processed.append('attrnonposint') + already_processed.add('attrnonposint') try: self.attrnonposint = int(value) except ValueError, exp: @@ -2526,7 +2552,7 @@ class programmer(person): raise_parse_error(node, 'Invalid NonPositiveInteger') value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value super(programmer, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): @@ -2639,7 +2665,7 @@ class client_handlerType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='client-handlerType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2671,7 +2697,8 @@ class client_handlerType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='client-handlerType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2684,7 +2711,8 @@ class client_handlerType(GeneratedsSuper): showIndent(outfile, level) outfile.write('refid=%d,\n' % self.refid) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -2741,7 +2769,7 @@ class java_programmer(programmer): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2753,10 +2781,10 @@ class java_programmer(programmer): def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='java-programmer'): super(java_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer') if self.status is not None and 'status' not in already_processed: - already_processed.append('status') + already_processed.add('status') outfile.write(' status=%s' % (self.gds_format_string(quote_attrib(self.status).encode(ExternalEncoding), input_name='status'), )) if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), )) def exportChildren(self, outfile, level, namespace_='', name_='java-programmer', fromsubclass_=False, pretty_print=True): super(java_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) @@ -2777,16 +2805,17 @@ class java_programmer(programmer): return False def exportLiteral(self, outfile, level, name_='java-programmer'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.status is not None and 'status' not in already_processed: - already_processed.append('status') + already_processed.add('status') showIndent(outfile, level) outfile.write('status = "%s",\n' % (self.status,)) if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') showIndent(outfile, level) outfile.write('nick_name = "%s",\n' % (self.nick_name,)) super(java_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) @@ -2796,18 +2825,19 @@ class java_programmer(programmer): showIndent(outfile, level) outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('status', node) if value is not None and 'status' not in already_processed: - already_processed.append('status') + already_processed.add('status') self.status = value value = find_attr_value_('nick-name', node) if value is not None and 'nick-name' not in already_processed: - already_processed.append('nick-name') + already_processed.add('nick-name') self.nick_name = value super(java_programmer, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): @@ -2849,7 +2879,7 @@ class python_programmer(programmer): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2861,7 +2891,7 @@ class python_programmer(programmer): def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='python-programmer'): super(python_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer') if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), )) def exportChildren(self, outfile, level, namespace_='', name_='python-programmer', fromsubclass_=False, pretty_print=True): super(python_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) @@ -2882,12 +2912,13 @@ class python_programmer(programmer): return False def exportLiteral(self, outfile, level, name_='python-programmer'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') showIndent(outfile, level) outfile.write('nick_name = "%s",\n' % (self.nick_name,)) super(python_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) @@ -2897,14 +2928,15 @@ class python_programmer(programmer): showIndent(outfile, level) outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('nick-name', node) if value is not None and 'nick-name' not in already_processed: - already_processed.append('nick-name') + already_processed.add('nick-name') self.nick_name = value super(python_programmer, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): diff --git a/tests/people_procincl2_sup.py b/tests/people_procincl2_sup.py index c569a68..996b7af 100644 --- a/tests/people_procincl2_sup.py +++ b/tests/people_procincl2_sup.py @@ -552,7 +552,7 @@ class people(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='people') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -594,7 +594,8 @@ class people(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='people'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -673,7 +674,8 @@ class people(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -759,7 +761,7 @@ class comments(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='comments') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -785,7 +787,8 @@ class comments(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='comments'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) @@ -807,7 +810,8 @@ class comments(GeneratedsSuper): outfile.write('],\n') pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) if node.text is not None: obj_ = self.mixedclass_(MixedContainer.CategoryText, @@ -920,7 +924,7 @@ class person(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='person') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -931,22 +935,22 @@ class person(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='person'): if self.vegetable is not None and 'vegetable' not in already_processed: - already_processed.append('vegetable') + already_processed.add('vegetable') outfile.write(' vegetable=%s' % (self.gds_format_string(quote_attrib(self.vegetable).encode(ExternalEncoding), input_name='vegetable'), )) if self.fruit is not None and 'fruit' not in already_processed: - already_processed.append('fruit') + already_processed.add('fruit') outfile.write(' fruit=%s' % (self.gds_format_string(quote_attrib(self.fruit).encode(ExternalEncoding), input_name='fruit'), )) if self.ratio is not None and 'ratio' not in already_processed: - already_processed.append('ratio') + already_processed.add('ratio') outfile.write(' ratio="%s"' % self.gds_format_float(self.ratio, input_name='ratio')) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') outfile.write(' id="%s"' % self.gds_format_integer(self.id, input_name='id')) if self.value is not None and 'value' not in already_processed: - already_processed.append('value') + already_processed.add('value') outfile.write(' value=%s' % (self.gds_format_string(quote_attrib(self.value).encode(ExternalEncoding), input_name='value'), )) if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) def exportChildren(self, outfile, level, namespace_='', name_='person', fromsubclass_=False, pretty_print=True): @@ -984,28 +988,29 @@ class person(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='person'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.vegetable is not None and 'vegetable' not in already_processed: - already_processed.append('vegetable') + already_processed.add('vegetable') showIndent(outfile, level) outfile.write('vegetable = "%s",\n' % (self.vegetable,)) if self.fruit is not None and 'fruit' not in already_processed: - already_processed.append('fruit') + already_processed.add('fruit') showIndent(outfile, level) outfile.write('fruit = "%s",\n' % (self.fruit,)) if self.ratio is not None and 'ratio' not in already_processed: - already_processed.append('ratio') + already_processed.add('ratio') showIndent(outfile, level) outfile.write('ratio = %f,\n' % (self.ratio,)) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') showIndent(outfile, level) outfile.write('id = %d,\n' % (self.id,)) if self.value is not None and 'value' not in already_processed: - already_processed.append('value') + already_processed.add('value') showIndent(outfile, level) outfile.write('value = "%s",\n' % (self.value,)) def exportLiteralChildren(self, outfile, level, name_): @@ -1052,40 +1057,41 @@ class person(GeneratedsSuper): showIndent(outfile, level) outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('vegetable', node) if value is not None and 'vegetable' not in already_processed: - already_processed.append('vegetable') + already_processed.add('vegetable') self.vegetable = value value = find_attr_value_('fruit', node) if value is not None and 'fruit' not in already_processed: - already_processed.append('fruit') + already_processed.add('fruit') self.fruit = value value = find_attr_value_('ratio', node) if value is not None and 'ratio' not in already_processed: - already_processed.append('ratio') + already_processed.add('ratio') try: self.ratio = float(value) except ValueError, exp: raise ValueError('Bad float/double attribute (ratio): %s' % exp) value = find_attr_value_('id', node) if value is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') try: self.id = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('value', node) if value is not None and 'value' not in already_processed: - already_processed.append('value') + already_processed.add('value') self.value = value value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'name': @@ -1140,7 +1146,7 @@ class specialperson(person): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='specialperson') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1162,7 +1168,8 @@ class specialperson(person): return False def exportLiteral(self, outfile, level, name_='specialperson'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -1170,7 +1177,8 @@ class specialperson(person): def exportLiteralChildren(self, outfile, level, name_): super(specialperson, self).exportLiteralChildren(outfile, level, name_) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -1231,7 +1239,7 @@ class param(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='param') if self.hasContent_(): outfile.write('>') @@ -1242,22 +1250,22 @@ class param(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='param'): if self.semantic is not None and 'semantic' not in already_processed: - already_processed.append('semantic') + already_processed.add('semantic') outfile.write(' semantic=%s' % (self.gds_format_string(quote_attrib(self.semantic).encode(ExternalEncoding), input_name='semantic'), )) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') outfile.write(' name=%s' % (quote_attrib(self.name), )) if self.flow is not None and 'flow' not in already_processed: - already_processed.append('flow') + already_processed.add('flow') outfile.write(' flow=%s' % (quote_attrib(self.flow), )) if self.sid is not None and 'sid' not in already_processed: - already_processed.append('sid') + already_processed.add('sid') outfile.write(' sid=%s' % (quote_attrib(self.sid), )) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') outfile.write(' type=%s' % (self.gds_format_string(quote_attrib(self.type_).encode(ExternalEncoding), input_name='type'), )) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') outfile.write(' id=%s' % (self.gds_format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) def exportChildren(self, outfile, level, namespace_='', name_='param', fromsubclass_=False, pretty_print=True): pass @@ -1270,40 +1278,42 @@ class param(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='param'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.semantic is not None and 'semantic' not in already_processed: - already_processed.append('semantic') + already_processed.add('semantic') showIndent(outfile, level) outfile.write('semantic = "%s",\n' % (self.semantic,)) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) if self.flow is not None and 'flow' not in already_processed: - already_processed.append('flow') + already_processed.add('flow') showIndent(outfile, level) outfile.write('flow = %s,\n' % (self.flow,)) if self.sid is not None and 'sid' not in already_processed: - already_processed.append('sid') + already_processed.add('sid') showIndent(outfile, level) outfile.write('sid = "%s",\n' % (self.sid,)) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') showIndent(outfile, level) outfile.write('type_ = "%s",\n' % (self.type_,)) if self.id is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') showIndent(outfile, level) outfile.write('id = "%s",\n' % (self.id,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -1311,28 +1321,28 @@ class param(GeneratedsSuper): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('semantic', node) if value is not None and 'semantic' not in already_processed: - already_processed.append('semantic') + already_processed.add('semantic') self.semantic = value self.semantic = ' '.join(self.semantic.split()) value = find_attr_value_('name', node) if value is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') self.name = value value = find_attr_value_('flow', node) if value is not None and 'flow' not in already_processed: - already_processed.append('flow') + already_processed.add('flow') self.flow = value value = find_attr_value_('sid', node) if value is not None and 'sid' not in already_processed: - already_processed.append('sid') + already_processed.add('sid') self.sid = value value = find_attr_value_('type', node) if value is not None and 'type' not in already_processed: - already_processed.append('type') + already_processed.add('type') self.type_ = value value = find_attr_value_('id', node) if value is not None and 'id' not in already_processed: - already_processed.append('id') + already_processed.add('id') self.id = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -1383,7 +1393,7 @@ class agent(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='agent') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1425,7 +1435,8 @@ class agent(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='agent'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -1459,7 +1470,8 @@ class agent(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -1544,7 +1556,7 @@ class special_agent(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='special-agent') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1583,7 +1595,8 @@ class special_agent(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='special-agent'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -1605,7 +1618,8 @@ class special_agent(GeneratedsSuper): showIndent(outfile, level) outfile.write('),\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -1701,7 +1715,7 @@ class booster(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='booster') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1712,7 +1726,7 @@ class booster(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='booster'): if self.member_id is not None and 'member_id' not in already_processed: - already_processed.append('member_id') + already_processed.add('member_id') outfile.write(' member-id=%s' % (self.gds_format_string(quote_attrib(self.member_id).encode(ExternalEncoding), input_name='member-id'), )) def exportChildren(self, outfile, level, namespace_='', name_='booster', fromsubclass_=False, pretty_print=True): if pretty_print: @@ -1754,12 +1768,13 @@ class booster(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='booster'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.member_id is not None and 'member_id' not in already_processed: - already_processed.append('member_id') + already_processed.add('member_id') showIndent(outfile, level) outfile.write('member_id = "%s",\n' % (self.member_id,)) def exportLiteralChildren(self, outfile, level, name_): @@ -1806,14 +1821,15 @@ class booster(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('member-id', node) if value is not None and 'member-id' not in already_processed: - already_processed.append('member-id') + already_processed.add('member-id') self.member_id = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'firstname': @@ -1895,7 +1911,7 @@ class info(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='info') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -1905,13 +1921,13 @@ class info(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='info'): if self.rating is not None and 'rating' not in already_processed: - already_processed.append('rating') + already_processed.add('rating') outfile.write(' rating="%s"' % self.gds_format_float(self.rating, input_name='rating')) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') outfile.write(' type="%s"' % self.gds_format_integer(self.type_, input_name='type')) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) def exportChildren(self, outfile, level, namespace_='', name_='info', fromsubclass_=False, pretty_print=True): pass @@ -1924,47 +1940,49 @@ class info(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='info'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.rating is not None and 'rating' not in already_processed: - already_processed.append('rating') + already_processed.add('rating') showIndent(outfile, level) outfile.write('rating = %f,\n' % (self.rating,)) if self.type_ is not None and 'type_' not in already_processed: - already_processed.append('type_') + already_processed.add('type_') showIndent(outfile, level) outfile.write('type_ = %d,\n' % (self.type_,)) if self.name is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') showIndent(outfile, level) outfile.write('name = "%s",\n' % (self.name,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('rating', node) if value is not None and 'rating' not in already_processed: - already_processed.append('rating') + already_processed.add('rating') try: self.rating = float(value) except ValueError, exp: raise ValueError('Bad float/double attribute (rating): %s' % exp) value = find_attr_value_('type', node) if value is not None and 'type' not in already_processed: - already_processed.append('type') + already_processed.add('type') try: self.type_ = int(value) except ValueError, exp: raise_parse_error(node, 'Bad integer attribute: %s' % exp) value = find_attr_value_('name', node) if value is not None and 'name' not in already_processed: - already_processed.append('name') + already_processed.add('name') self.name = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -1997,7 +2015,7 @@ class vehicle(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='vehicle') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2008,7 +2026,7 @@ class vehicle(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='vehicle'): if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) pass @@ -2029,7 +2047,8 @@ class vehicle(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='vehicle'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2039,14 +2058,15 @@ class vehicle(GeneratedsSuper): showIndent(outfile, level) outfile.write('wheelcount=%d,\n' % self.wheelcount) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'wheelcount': @@ -2084,7 +2104,7 @@ class automobile(vehicle): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='automobile') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2114,7 +2134,8 @@ class automobile(vehicle): return False def exportLiteral(self, outfile, level, name_='automobile'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2125,7 +2146,8 @@ class automobile(vehicle): showIndent(outfile, level) outfile.write('drivername=%s,\n' % quote_python(self.drivername).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -2164,7 +2186,7 @@ class airplane(vehicle): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='airplane') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2194,7 +2216,8 @@ class airplane(vehicle): return False def exportLiteral(self, outfile, level, name_='airplane'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2205,7 +2228,8 @@ class airplane(vehicle): showIndent(outfile, level) outfile.write('pilotname=%s,\n' % quote_python(self.pilotname).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -2316,7 +2340,7 @@ class programmer(person): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='programmer') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2328,25 +2352,25 @@ class programmer(person): def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='programmer'): super(programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='programmer') if self.language is not None and 'language' not in already_processed: - already_processed.append('language') + already_processed.add('language') outfile.write(' language=%s' % (self.gds_format_string(quote_attrib(self.language).encode(ExternalEncoding), input_name='language'), )) if self.area is not None and 'area' not in already_processed: - already_processed.append('area') + already_processed.add('area') outfile.write(' area=%s' % (self.gds_format_string(quote_attrib(self.area).encode(ExternalEncoding), input_name='area'), )) if self.attrnegint is not None and 'attrnegint' not in already_processed: - already_processed.append('attrnegint') + already_processed.add('attrnegint') outfile.write(' attrnegint="%s"' % self.gds_format_integer(self.attrnegint, input_name='attrnegint')) if self.attrposint is not None and 'attrposint' not in already_processed: - already_processed.append('attrposint') + already_processed.add('attrposint') outfile.write(' attrposint="%s"' % self.gds_format_integer(self.attrposint, input_name='attrposint')) if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed: - already_processed.append('attrnonnegint') + already_processed.add('attrnonnegint') outfile.write(' attrnonnegint="%s"' % self.gds_format_integer(self.attrnonnegint, input_name='attrnonnegint')) if self.attrnonposint is not None and 'attrnonposint' not in already_processed: - already_processed.append('attrnonposint') + already_processed.add('attrnonposint') outfile.write(' attrnonposint="%s"' % self.gds_format_integer(self.attrnonposint, input_name='attrnonposint')) if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) def exportChildren(self, outfile, level, namespace_='', name_='programmer', fromsubclass_=False, pretty_print=True): @@ -2407,32 +2431,33 @@ class programmer(person): return False def exportLiteral(self, outfile, level, name_='programmer'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.language is not None and 'language' not in already_processed: - already_processed.append('language') + already_processed.add('language') showIndent(outfile, level) outfile.write('language = "%s",\n' % (self.language,)) if self.area is not None and 'area' not in already_processed: - already_processed.append('area') + already_processed.add('area') showIndent(outfile, level) outfile.write('area = "%s",\n' % (self.area,)) if self.attrnegint is not None and 'attrnegint' not in already_processed: - already_processed.append('attrnegint') + already_processed.add('attrnegint') showIndent(outfile, level) outfile.write('attrnegint = %d,\n' % (self.attrnegint,)) if self.attrposint is not None and 'attrposint' not in already_processed: - already_processed.append('attrposint') + already_processed.add('attrposint') showIndent(outfile, level) outfile.write('attrposint = %d,\n' % (self.attrposint,)) if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed: - already_processed.append('attrnonnegint') + already_processed.add('attrnonnegint') showIndent(outfile, level) outfile.write('attrnonnegint = %d,\n' % (self.attrnonnegint,)) if self.attrnonposint is not None and 'attrnonposint' not in already_processed: - already_processed.append('attrnonposint') + already_processed.add('attrnonposint') showIndent(outfile, level) outfile.write('attrnonposint = %d,\n' % (self.attrnonposint,)) super(programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) @@ -2475,22 +2500,23 @@ class programmer(person): showIndent(outfile, level) outfile.write('elarraytypes=%s,\n' % quote_python(self.elarraytypes).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('language', node) if value is not None and 'language' not in already_processed: - already_processed.append('language') + already_processed.add('language') self.language = value value = find_attr_value_('area', node) if value is not None and 'area' not in already_processed: - already_processed.append('area') + already_processed.add('area') self.area = value value = find_attr_value_('attrnegint', node) if value is not None and 'attrnegint' not in already_processed: - already_processed.append('attrnegint') + already_processed.add('attrnegint') try: self.attrnegint = int(value) except ValueError, exp: @@ -2499,7 +2525,7 @@ class programmer(person): raise_parse_error(node, 'Invalid NegativeInteger') value = find_attr_value_('attrposint', node) if value is not None and 'attrposint' not in already_processed: - already_processed.append('attrposint') + already_processed.add('attrposint') try: self.attrposint = int(value) except ValueError, exp: @@ -2508,7 +2534,7 @@ class programmer(person): raise_parse_error(node, 'Invalid PositiveInteger') value = find_attr_value_('attrnonnegint', node) if value is not None and 'attrnonnegint' not in already_processed: - already_processed.append('attrnonnegint') + already_processed.add('attrnonnegint') try: self.attrnonnegint = int(value) except ValueError, exp: @@ -2517,7 +2543,7 @@ class programmer(person): raise_parse_error(node, 'Invalid NonNegativeInteger') value = find_attr_value_('attrnonposint', node) if value is not None and 'attrnonposint' not in already_processed: - already_processed.append('attrnonposint') + already_processed.add('attrnonposint') try: self.attrnonposint = int(value) except ValueError, exp: @@ -2526,7 +2552,7 @@ class programmer(person): raise_parse_error(node, 'Invalid NonPositiveInteger') value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value super(programmer, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): @@ -2639,7 +2665,7 @@ class client_handlerType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='client-handlerType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2671,7 +2697,8 @@ class client_handlerType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='client-handlerType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -2684,7 +2711,8 @@ class client_handlerType(GeneratedsSuper): showIndent(outfile, level) outfile.write('refid=%d,\n' % self.refid) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -2741,7 +2769,7 @@ class java_programmer(programmer): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2753,10 +2781,10 @@ class java_programmer(programmer): def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='java-programmer'): super(java_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer') if self.status is not None and 'status' not in already_processed: - already_processed.append('status') + already_processed.add('status') outfile.write(' status=%s' % (self.gds_format_string(quote_attrib(self.status).encode(ExternalEncoding), input_name='status'), )) if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), )) def exportChildren(self, outfile, level, namespace_='', name_='java-programmer', fromsubclass_=False, pretty_print=True): super(java_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) @@ -2777,16 +2805,17 @@ class java_programmer(programmer): return False def exportLiteral(self, outfile, level, name_='java-programmer'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.status is not None and 'status' not in already_processed: - already_processed.append('status') + already_processed.add('status') showIndent(outfile, level) outfile.write('status = "%s",\n' % (self.status,)) if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') showIndent(outfile, level) outfile.write('nick_name = "%s",\n' % (self.nick_name,)) super(java_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) @@ -2796,18 +2825,19 @@ class java_programmer(programmer): showIndent(outfile, level) outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('status', node) if value is not None and 'status' not in already_processed: - already_processed.append('status') + already_processed.add('status') self.status = value value = find_attr_value_('nick-name', node) if value is not None and 'nick-name' not in already_processed: - already_processed.append('nick-name') + already_processed.add('nick-name') self.nick_name = value super(java_programmer, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): @@ -2849,7 +2879,7 @@ class python_programmer(programmer): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -2861,7 +2891,7 @@ class python_programmer(programmer): def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='python-programmer'): super(python_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer') if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), )) def exportChildren(self, outfile, level, namespace_='', name_='python-programmer', fromsubclass_=False, pretty_print=True): super(python_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) @@ -2882,12 +2912,13 @@ class python_programmer(programmer): return False def exportLiteral(self, outfile, level, name_='python-programmer'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.nick_name is not None and 'nick_name' not in already_processed: - already_processed.append('nick_name') + already_processed.add('nick_name') showIndent(outfile, level) outfile.write('nick_name = "%s",\n' % (self.nick_name,)) super(python_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) @@ -2897,14 +2928,15 @@ class python_programmer(programmer): showIndent(outfile, level) outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('nick-name', node) if value is not None and 'nick-name' not in already_processed: - already_processed.append('nick-name') + already_processed.add('nick-name') self.nick_name = value super(python_programmer, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): diff --git a/tests/recursive_simpletype1_sup.py b/tests/recursive_simpletype1_sup.py index 262e185..35d7d54 100644 --- a/tests/recursive_simpletype1_sup.py +++ b/tests/recursive_simpletype1_sup.py @@ -509,7 +509,7 @@ class PersonType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='PersonType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -545,7 +545,8 @@ class PersonType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='PersonType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -561,7 +562,8 @@ class PersonType(GeneratedsSuper): showIndent(outfile, level) outfile.write('lname=%s,\n' % quote_python(self.lname).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) diff --git a/tests/recursive_simpletype2_sup.py b/tests/recursive_simpletype2_sup.py index 262e185..35d7d54 100644 --- a/tests/recursive_simpletype2_sup.py +++ b/tests/recursive_simpletype2_sup.py @@ -509,7 +509,7 @@ class PersonType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='PersonType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -545,7 +545,8 @@ class PersonType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='PersonType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -561,7 +562,8 @@ class PersonType(GeneratedsSuper): showIndent(outfile, level) outfile.write('lname=%s,\n' % quote_python(self.lname).encode(ExternalEncoding)) def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) diff --git a/tests/simplecontent_restriction1_sup.py b/tests/simplecontent_restriction1_sup.py index 08211cf..0e815f5 100644 --- a/tests/simplecontent_restriction1_sup.py +++ b/tests/simplecontent_restriction1_sup.py @@ -532,7 +532,7 @@ class IdentifierType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='IdentifierType') if self.hasContent_(): outfile.write('>') @@ -543,28 +543,28 @@ class IdentifierType(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='IdentifierType'): if self.schemeDataURI is not None and 'schemeDataURI' not in already_processed: - already_processed.append('schemeDataURI') + already_processed.add('schemeDataURI') outfile.write(' schemeDataURI=%s' % (self.gds_format_string(quote_attrib(self.schemeDataURI).encode(ExternalEncoding), input_name='schemeDataURI'), )) if self.schemeID is not None and 'schemeID' not in already_processed: - already_processed.append('schemeID') + already_processed.add('schemeID') outfile.write(' schemeID=%s' % (self.gds_format_string(quote_attrib(self.schemeID).encode(ExternalEncoding), input_name='schemeID'), )) if self.schemeAgencyName is not None and 'schemeAgencyName' not in already_processed: - already_processed.append('schemeAgencyName') + already_processed.add('schemeAgencyName') outfile.write(' schemeAgencyName=%s' % (self.gds_format_string(quote_attrib(self.schemeAgencyName).encode(ExternalEncoding), input_name='schemeAgencyName'), )) if self.schemeAgencyID is not None and 'schemeAgencyID' not in already_processed: - already_processed.append('schemeAgencyID') + already_processed.add('schemeAgencyID') outfile.write(' schemeAgencyID=%s' % (self.gds_format_string(quote_attrib(self.schemeAgencyID).encode(ExternalEncoding), input_name='schemeAgencyID'), )) if self.schemeName is not None and 'schemeName' not in already_processed: - already_processed.append('schemeName') + already_processed.add('schemeName') outfile.write(' schemeName=%s' % (self.gds_format_string(quote_attrib(self.schemeName).encode(ExternalEncoding), input_name='schemeName'), )) if self.schemeVersionID is not None and 'schemeVersionID' not in already_processed: - already_processed.append('schemeVersionID') + already_processed.add('schemeVersionID') outfile.write(' schemeVersionID=%s' % (self.gds_format_string(quote_attrib(self.schemeVersionID).encode(ExternalEncoding), input_name='schemeVersionID'), )) if self.schemeURI is not None and 'schemeURI' not in already_processed: - already_processed.append('schemeURI') + already_processed.add('schemeURI') outfile.write(' schemeURI=%s' % (self.gds_format_string(quote_attrib(self.schemeURI).encode(ExternalEncoding), input_name='schemeURI'), )) if self.extensiontype_ is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') outfile.write(' xsi:type="%s"' % self.extensiontype_) def exportChildren(self, outfile, level, namespace_='', name_='IdentifierType', fromsubclass_=False, pretty_print=True): @@ -578,44 +578,46 @@ class IdentifierType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='IdentifierType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.schemeDataURI is not None and 'schemeDataURI' not in already_processed: - already_processed.append('schemeDataURI') + already_processed.add('schemeDataURI') showIndent(outfile, level) outfile.write('schemeDataURI = "%s",\n' % (self.schemeDataURI,)) if self.schemeID is not None and 'schemeID' not in already_processed: - already_processed.append('schemeID') + already_processed.add('schemeID') showIndent(outfile, level) outfile.write('schemeID = "%s",\n' % (self.schemeID,)) if self.schemeAgencyName is not None and 'schemeAgencyName' not in already_processed: - already_processed.append('schemeAgencyName') + already_processed.add('schemeAgencyName') showIndent(outfile, level) outfile.write('schemeAgencyName = "%s",\n' % (self.schemeAgencyName,)) if self.schemeAgencyID is not None and 'schemeAgencyID' not in already_processed: - already_processed.append('schemeAgencyID') + already_processed.add('schemeAgencyID') showIndent(outfile, level) outfile.write('schemeAgencyID = "%s",\n' % (self.schemeAgencyID,)) if self.schemeName is not None and 'schemeName' not in already_processed: - already_processed.append('schemeName') + already_processed.add('schemeName') showIndent(outfile, level) outfile.write('schemeName = "%s",\n' % (self.schemeName,)) if self.schemeVersionID is not None and 'schemeVersionID' not in already_processed: - already_processed.append('schemeVersionID') + already_processed.add('schemeVersionID') showIndent(outfile, level) outfile.write('schemeVersionID = "%s",\n' % (self.schemeVersionID,)) if self.schemeURI is not None and 'schemeURI' not in already_processed: - already_processed.append('schemeURI') + already_processed.add('schemeURI') showIndent(outfile, level) outfile.write('schemeURI = "%s",\n' % (self.schemeURI,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -623,35 +625,35 @@ class IdentifierType(GeneratedsSuper): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('schemeDataURI', node) if value is not None and 'schemeDataURI' not in already_processed: - already_processed.append('schemeDataURI') + already_processed.add('schemeDataURI') self.schemeDataURI = value value = find_attr_value_('schemeID', node) if value is not None and 'schemeID' not in already_processed: - already_processed.append('schemeID') + already_processed.add('schemeID') self.schemeID = value value = find_attr_value_('schemeAgencyName', node) if value is not None and 'schemeAgencyName' not in already_processed: - already_processed.append('schemeAgencyName') + already_processed.add('schemeAgencyName') self.schemeAgencyName = value value = find_attr_value_('schemeAgencyID', node) if value is not None and 'schemeAgencyID' not in already_processed: - already_processed.append('schemeAgencyID') + already_processed.add('schemeAgencyID') self.schemeAgencyID = value value = find_attr_value_('schemeName', node) if value is not None and 'schemeName' not in already_processed: - already_processed.append('schemeName') + already_processed.add('schemeName') self.schemeName = value value = find_attr_value_('schemeVersionID', node) if value is not None and 'schemeVersionID' not in already_processed: - already_processed.append('schemeVersionID') + already_processed.add('schemeVersionID') self.schemeVersionID = value value = find_attr_value_('schemeURI', node) if value is not None and 'schemeURI' not in already_processed: - already_processed.append('schemeURI') + already_processed.add('schemeURI') self.schemeURI = value value = find_attr_value_('xsi:type', node) if value is not None and 'xsi:type' not in already_processed: - already_processed.append('xsi:type') + already_processed.add('xsi:type') self.extensiontype_ = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -682,7 +684,7 @@ class BillOfResourcesIDType(IdentifierType): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='BillOfResourcesIDType') if self.hasContent_(): outfile.write('>') @@ -706,7 +708,8 @@ class BillOfResourcesIDType(IdentifierType): return False def exportLiteral(self, outfile, level, name_='BillOfResourcesIDType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) @@ -717,7 +720,8 @@ class BillOfResourcesIDType(IdentifierType): super(BillOfResourcesIDType, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -753,7 +757,7 @@ class BillOfMaterialIDType(IdentifierType): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='BillOfMaterialIDType') if self.hasContent_(): outfile.write('>') @@ -777,7 +781,8 @@ class BillOfMaterialIDType(IdentifierType): return False def exportLiteral(self, outfile, level, name_='BillOfMaterialIDType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) @@ -788,7 +793,8 @@ class BillOfMaterialIDType(IdentifierType): super(BillOfMaterialIDType, self).exportLiteralChildren(outfile, level, name_) pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] diff --git a/tests/simpletype_memberspecs1_sup.py b/tests/simpletype_memberspecs1_sup.py index d3be8d0..9905425 100644 --- a/tests/simpletype_memberspecs1_sup.py +++ b/tests/simpletype_memberspecs1_sup.py @@ -505,7 +505,7 @@ class SpecialDate(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='SpecialDate') if self.hasContent_(): outfile.write('>') @@ -516,7 +516,7 @@ class SpecialDate(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='pl:', name_='SpecialDate'): if self.SpecialProperty is not None and 'SpecialProperty' not in already_processed: - already_processed.append('SpecialProperty') + already_processed.add('SpecialProperty') outfile.write(' SpecialProperty=%s' % (self.gds_format_string(quote_attrib(self.SpecialProperty).encode(ExternalEncoding), input_name='SpecialProperty'), )) def exportChildren(self, outfile, level, namespace_='pl:', name_='SpecialDate', fromsubclass_=False, pretty_print=True): pass @@ -529,20 +529,22 @@ class SpecialDate(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='SpecialDate'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.SpecialProperty is not None and 'SpecialProperty' not in already_processed: - already_processed.append('SpecialProperty') + already_processed.add('SpecialProperty') showIndent(outfile, level) outfile.write('SpecialProperty = "%s",\n' % (self.SpecialProperty,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -550,7 +552,7 @@ class SpecialDate(GeneratedsSuper): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('SpecialProperty', node) if value is not None and 'SpecialProperty' not in already_processed: - already_processed.append('SpecialProperty') + already_processed.add('SpecialProperty') self.SpecialProperty = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass @@ -584,7 +586,7 @@ class ExtremeDate(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='ExtremeDate') if self.hasContent_(): outfile.write('>') @@ -595,7 +597,7 @@ class ExtremeDate(GeneratedsSuper): outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespace_='pl:', name_='ExtremeDate'): if self.ExtremeProperty is not None and 'ExtremeProperty' not in already_processed: - already_processed.append('ExtremeProperty') + already_processed.add('ExtremeProperty') outfile.write(' ExtremeProperty=%s' % (self.gds_format_string(quote_attrib(self.ExtremeProperty).encode(ExternalEncoding), input_name='ExtremeProperty'), )) def exportChildren(self, outfile, level, namespace_='pl:', name_='ExtremeDate', fromsubclass_=False, pretty_print=True): pass @@ -608,20 +610,22 @@ class ExtremeDate(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='ExtremeDate'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) showIndent(outfile, level) outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) def exportLiteralAttributes(self, outfile, level, already_processed, name_): if self.ExtremeProperty is not None and 'ExtremeProperty' not in already_processed: - already_processed.append('ExtremeProperty') + already_processed.add('ExtremeProperty') showIndent(outfile, level) outfile.write('ExtremeProperty = "%s",\n' % (self.ExtremeProperty,)) def exportLiteralChildren(self, outfile, level, name_): pass def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) self.valueOf_ = get_all_text_(node) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] @@ -629,7 +633,7 @@ class ExtremeDate(GeneratedsSuper): def buildAttributes(self, node, attrs, already_processed): value = find_attr_value_('ExtremeProperty', node) if value is not None and 'ExtremeProperty' not in already_processed: - already_processed.append('ExtremeProperty') + already_processed.add('ExtremeProperty') self.ExtremeProperty = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass diff --git a/tests/simpletypes_other1_sup.py b/tests/simpletypes_other1_sup.py index 390cf0d..064dae4 100644 --- a/tests/simpletypes_other1_sup.py +++ b/tests/simpletypes_other1_sup.py @@ -506,7 +506,7 @@ class simpleTypeTestsType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='simpleTypeTestsType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -534,7 +534,8 @@ class simpleTypeTestsType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='simpleTypeTestsType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -550,7 +551,8 @@ class simpleTypeTestsType(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -707,7 +709,7 @@ class simpleTypeTest(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='simpleTypeTest') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -815,7 +817,8 @@ class simpleTypeTest(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='simpleTypeTest'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -933,7 +936,8 @@ class simpleTypeTest(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) diff --git a/tests/simpletypes_other2_sup.py b/tests/simpletypes_other2_sup.py index 390cf0d..064dae4 100644 --- a/tests/simpletypes_other2_sup.py +++ b/tests/simpletypes_other2_sup.py @@ -506,7 +506,7 @@ class simpleTypeTestsType(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='simpleTypeTestsType') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -534,7 +534,8 @@ class simpleTypeTestsType(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='simpleTypeTestsType'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -550,7 +551,8 @@ class simpleTypeTestsType(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) @@ -707,7 +709,7 @@ class simpleTypeTest(GeneratedsSuper): eol_ = '' showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) - already_processed = [] + already_processed = set() self.exportAttributes(outfile, level, already_processed, namespace_, name_='simpleTypeTest') if self.hasContent_(): outfile.write('>%s' % (eol_, )) @@ -815,7 +817,8 @@ class simpleTypeTest(GeneratedsSuper): return False def exportLiteral(self, outfile, level, name_='simpleTypeTest'): level += 1 - self.exportLiteralAttributes(outfile, level, [], name_) + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) if self.hasContent_(): self.exportLiteralChildren(outfile, level, name_) def exportLiteralAttributes(self, outfile, level, already_processed, name_): @@ -933,7 +936,8 @@ class simpleTypeTest(GeneratedsSuper): showIndent(outfile, level) outfile.write('],\n') def build(self, node): - self.buildAttributes(node, node.attrib, []) + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) for child in node: nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) diff --git a/tests/test.py b/tests/test.py index 8e53b08..05bcf66 100755 --- a/tests/test.py +++ b/tests/test.py @@ -228,7 +228,7 @@ class GenTest(unittest.TestCase): infile.close() self.failUnlessEqual(content1, content2) - def test_010_extensions(self): + def test_010_simplecontent_restriction(self): cmdTempl = ('python generateDS.py --no-dates --no-versions ' '--silence --member-specs=list -f ' '-o tests/%s2_sup.py -s tests/%s2_sub.py ' diff --git a/tutorial/generateds_tutorial.html b/tutorial/generateds_tutorial.html index ee6f56a..0974072 100644 --- a/tutorial/generateds_tutorial.html +++ b/tutorial/generateds_tutorial.html @@ -216,7 +216,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.8b</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.8c</td> </tr> </tbody> </table> @@ -225,7 +225,7 @@ They are used by updateversion.py. --> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">date:</th><td class="field-body">January 28, 2013</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">January 31, 2013</td> </tr> </tbody> </table> diff --git a/tutorial/generateds_tutorial.txt b/tutorial/generateds_tutorial.txt index e9dd79d..1f50f31 100644 --- a/tutorial/generateds_tutorial.txt +++ b/tutorial/generateds_tutorial.txt @@ -11,7 +11,7 @@ generateDS -- Introduction and Tutorial .. version -:revision: 2.8b +:revision: 2.8c .. version diff --git a/tutorial/generateds_tutorial.zip b/tutorial/generateds_tutorial.zip index d8f36eb7e53e33950d93a2113e77edb1b8fae6ea..724d78077fb3ad5b7e3ff90edf6a1b6dd48e5125 100644 GIT binary patch delta 12759 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 delta 12785 zcmV<NF%Hhs`~uYc0v%9G0|XQR000O8217AIaJUA0SONe5{saI37XTcSzqu6;ba-@C zR0#kBtR?tR5ex^BLEeA+*=0_x;W>Yv%hkAra$dvY3oP^vEPhoStEeBmIkd5cuhSN; z)HU4Q-rm2{MKDVfK$A+DxXfcHdgM{$9s@P;l$$USGzR6(9s_WSBIY*s#f`$__6Z)0 zLKm=}3ram7Q}PN0`NPVNVPVyoxV-#`Jhy#_UMeR2j#Dls9hiT)QR2lY5UDU_l}ll2 zV7GfU8SA{;!KpQ>h3PcF_klg)vUn1>D#Ipr2V6De3kaTN*IT>+Wo2M4*cfMW>2M8= zr!F)4`S<`qwb;oQuA)r+LSzo^vFA_jDAPrY#VXv`1U8|J*%z^k!a3o!oPccvX#>4! zsFyylS2$9R`IdjAo&#qQvse^x&W<seht{RZo6!OgkYO1f8e@?s&IVx_*zY0ji!fQT z5YwJj;VDs{lclvo$)Ct+Q5?ea@t|a>0v$379j4j6!DBhdYaGYG*S#mj@3w?x21PTT z@vOD+Ed^B3rLG<=SZnNKTf==-E%PcN6UP5yj8iu0{H!2edI-NKzey3#v8w(7P)h>@ z6aWAK2msxDJVLePQv4v3y8<W(5ex@WUnKZYlj{N?22rvdTbAjQ5d$%Qy}nNqai@w> zo9xwSHaQy!l|?4j+0Cm_T`j}sBk_73T>ZnlAKza8^6?w7s$j#%pa1E@`?q2gPN#pl zcsrfGyM8DB`rY;S9|S-U*M-bVT>(UyOsC)cFcPCxRppn{>3Y4MtS=^}xS3x6+w>k` z&2Y1Q8CKrTNnFJvIGGNA1T3@i)c}~;ix)3=_XrnVCK3@>*+?|65QdU5{7F?M1;Pl` zueH8=HF|5ZN@Z1ey~))`MEvg6s8aXU6k)y;(MlGjs$N-AOdXU=rs~z`MrEpyl_|W< z?@UxzIw{53WH!4L7UkG}Iw?(EL~04Rt4XG+DZ{LEm8iJ|r{4X4B*IX<&#J=2b%f*) zGK<A^4JT=tTupg-2NhXYt1ce$PKkf5S4k=}KBTNRi4qmu)m||wOQ23L{j-2q;?L6{ zSeSSt{yPw231BY8i?ct8uRhd~j-~h(coVCy#^T>q5z9=D#kYX&9sK15WAO%&8;kE$ za;GXC!6zlKGb~kqp_eZK=0ZldH-)LQ_)>haq<{EvWD-+cibVpC@qH?b8=YN>bCu%T zT*fGk_Wj?2K>o+7P|N=$H0|Cmo?JY8@%6LrA)$RpLY2z`sKWavm5D-J2Ve*a5+jUN zWPtcU>`RfEOwroaO!&v`SlHsRj25%AvqSMHfx+2LL+@~Zt@O<b$i6U1OiOgiPaR1Z zvMFL!&>L8icNa{as#Khb8UDt_iOy8GvT$ek6nEu94&MjRRR!*`t1j;}=%b2#V&`>{ zC+eU(A_NHn43g*pC{%pVZh5&fV4C)`C>M@M9$h*VBQ}o3>KuM9;O7baJcXZU9SJ%+ zyO7To2jJy@bOZSOIhCWsVk`4uWpc|?CykA)l=?RXNIX0HQ@cA{n5r^qv&GS*`Fxh& zi_#=IZYA|^!RmYq>XXMpl~NMOi!G2B`$6uP#MP56cr%7Ks5h&pTg%V(Eq~Tu{(R5s zpiTsE&m;%wP!LzU^&6h;fYBJBm{o5`jkkz7vtp8eC~zdaZ->ckY-%f8;E~e4t$~k& zIGGGR@?f}Q-Aa4owT`RRrLcToCPo74iCR{>q#fQl`^CQ-xsZvzfyD)0pY39n*Olj| zKC>?NJ<_&CSg*h;;v=w62qAGeraF!jW}RFtim{Lp*!WF4787-!CsJp=)!B1G-&_1T zhSes2y8X2_6<SmH2*NZq7I~ps30ulkCmTS+WCnIe>Sa$4Cf2LQx&&-CmkhMa&$ImA z_cNY)KficBdwwyD@E1yTT;Un}LA2n&{Pm@P2*q@GPh4)KN8e3k40u!cHx~51!ceAp z8v%so4RH2G75rKig(=1aVx_Z+Kh$Y%ib}eFw;7O)UsXEi7i(E$I_r8^Adm1bpQ>2b zsW5c~QK0C{z1Tur<ldW*;xs-C5gU3Kba36d9ns&p9d0!6Y}oFImwj1jWxu(Oqx(*D zEGu?m#N64rofx)rv*XK-E45KXdzWKwSXC1jjrVM%FUlm%u=;9BVKao!Q=3I#j0}H& z08<eqvV^n*!KFa4k<f9I6sWiiwHLyNV3oqkhVYb>%-nvu+vxD{e>KCDK`wwGEe1MU znvqx*lnvY&9gjp&Ckh^-Gr<GlcD?l><_?@33_P@{gw0SWHMk=)2N;_iAy&ows#*;K zoxh=k<PwsV6|RiuenJAD#&h^pJOm_vjtf<m9+WGzcXqAhr-+GkpDlG!Rv;Wp1*S7n z0{n+6Ae|fu4C7yoQmK>5T*kMI$d_L{d-AeS_xF>?q@(%Z$5&J7p8&u29pL4t4#4z( z9o*4;?_)k`3RlEGEs3U;6}l;L9rJOJkaq^+gbHkZtd|>6trSRo0;U#q$ENgupe!j$ zW;qG2S85}`pNP5y%~@<joyQ<-cHt!7OhD=^WVf3>=nEQa&Qhx+4ijBg2MZl<85B8w zgqPeaZJp&KUu-<s^Fm?P0$~(M4G7J^Df9Em^97MO*h}NTZ%QD8_fp|sWLC>!BhH_X z#rfIn;sJ{M-4P%%`G&&Ay;OLA>sE=A=oIL1_C)x`Y9g*zx)jdJQ-~g*MMjk?&9Yjf zTIou}s*DP~P^Ez75k@|&X`p)I`}f!4gN{^Is!Pw99ArmK4%?`1L^ZF3!IaZfSD}5= zF)RnHM@uv5aQje_%0&sWX|$iB9fBb>WF~aqp*d$LDnq0M!xWgMxT>muEfGr~+%C{< zwmuRp7GO}#F&2+j!aXR(#|=21On~f50jR=(HFybe0?A3B?q!-|6ha38!<L%ki}Dmi z*QAK&U%&q#%4nrh+1y|vkcWU?A84V#R+o53ynsp+8C$rj1LPnCPBus&aB+LgM7)PY zFe#09i5$z0MF}fq6+rHP6!!rlIgxCpRQ;<0JUAbsREm}Zc%%RvfCWuO^#!*Mc?f!m zvR)7&kUV8oFMtZbE0c2tHrWJCEHfb?1`dIgNP-TbF`OQkj(Z*~xITr?0X)hJ6M>JW zB{rad6PEq!Odha2tD-LxY#qEPtbq<TLPs2nxzEsM<W0DR&uu_|N#O!o0A2^a7gpAd zF~XcBtV|?IjdFuv5<MSMUtmW^eZTO<osrS;Y&4&JnJvovrT^QH^iVIaKx2<M$nuEl zMJp9zR_M+<2S2xc-nY#L%avF?;@G-$CpJPtX9KxHl3ogUA?bz82405uX%cn=WgTCP z<`>)e{aiZK8pwoyBuW}VChNhF`*QS%i<Blss--F7ONACzfHK^eI!w_oglovn@M5=_ zSv%yPjOI_ak^c#x2@8$NHddWV0nh|N69^42gU}v<Fwwk_`HBh;V734^mBkLPr=$7P zZM;x@n@ytG^oZkaZBphr_!4r4VVSE)FF~mmY9;S9_8}O5muI8-vu#}75Cky<K{yD6 z*tQ}brGcojC=`fpRF{=W!`4bU6u$-(Cqr84?H0V-vvHqEVPvk6fhmew;gi&1_Z+bs z(BUB+`4VeGFW-E8&o9`aAz+`<k6}1!#{xtd@dbM>qm@JN1)?{g!f%AzBHR}5;Ax%U z@8h%-1q8%@z0_4LSv^r-Ymbw&v(fzP0gdFHqTNaMqjp^UeL_a$M|ZNx73BM|g4ip@ zo}zVpz@`R2F#lf<iQ2aeV=VeWL<{6IpjuWc4`+?^kthO>P#0Soo)eBkSpEdt#SBXm z4g$%agYX#3iwK>EU{HpwiSNp07mV0|E)Zhph!}={C4*Mwkv@(Pya?9?grA`dAuy}L zxX=*ThbviRSbK2jJz?|)bb-*jK=cTXkOJXM8IG`U9*f+Qu&6WQBq29oL1s@GvmsxF zm_0$v00=P?f$XprzS2HQfzi!k6||)pc!%dZJSZ*v3^E_BbP~g}kV1X1U~65i!c^Xy zD5{Hp68xwFK`wxT5TeW)%)lu;AJT!h7M!r)1cDO)?neSAEI16?GckJvQ-|^8=rhb9 z#BsK!rQ&nMbwDkKab-}#f+CCa7~vy{Lu+N07~I*+CoDr8n1JjMNZOPSEuJqB&jJ0w z$OJ*ztiXc$suT?<mpD9zo?z}NF){@^3_x6e7f4-MCslYSle#74`5B@(peS!WD8gp` zx)2tMU?}@_1rn9R(wI{DDTALxP|eu8wl~Jm#ykh-7*s^g=T|(0fR$D|cq6d>TBO{G z#PT;icbSo;eUnVt1nT{g;@dm{4nkzRHpMLvsWA1;3jRV;>5~01$H8&~sTUAZS7N1q zl6+Ywm@Fp7+zQFbbV-@I4g4Vs7BYgEBA1y~Wfvr5=f9Xbz`WGK)NIaT4cO}i_bR9_ zd&&3kipaLK5K<!yXzZX)+gEP^hiO}vZ3M7S1i(TxSja(w3b`<Kb##qm1@diCZ@YlZ zzvD_t+coE@cO1=8?JrUHm$NV-V$&XfX4lBHPSK1CL0IR|S(MZ<n4|$dO)NA|dEk~u z((9mVkZ{$Y;Mi&q6@v(7@R(wd@QXn~zZi71aO^1^2`n82k1ZXEwsaI6TRIX0rK8~R z(vjFvItm6$N4XU^KO3@)C;MUXE-(A_olaTj%~n-Vkd#33;<(xPQY*ME-vSSR9cLik zfSuD^>$K6{vd*~vNz6fVENnvtNrAx^Kn=QOj}Aa)E^lA!Bmtots10&Sv;?IqmuxNx z)xZie$u_USCl=;fmVKt#ClN(8CDpuhlh+B!8N{)LQmycy{{|XY5=;=4_&V8X;P}Ce z_Ad3k6$YRbk(!wR^sp5k1moa;QnMDj@%S8Xbi$&vUuPH)Da$Fl?_uEZv2?qFMw?xt zJ!naUMIbl;fe-wa@tE{1+&9uIV%wT}Be&h=-h)!yMk`j+#L1^mDAJ!kosMnDs?r5; z_D+I>TO=wVftQK?4J^k1Z)gwJ|I3H0Q}yY7^P9Cx*#mqj{nd@CF=~N-L(P^oV4W>% zm|`q6OIPm}Xo37-cRy3EN(d(0W8n2@-o){*_^3Kt;8=i)`7Ojkuwzc>jvE{H7}AXQ zW9HLkydNr9Q*Y^m6bD&SMGG99&B+houP=p-->?OPggugQA=Y6+lf)t15@Y|8{&Wcj za5FlD>=rESkT75pCi?b&fzx5*UyqS6w|H{u+tIzd7Byr}e1g@VA#?34A@{bd31PEm z0}75IM20SiqkwPNja;MQ1bP2})AwjaeH))0Y|J{?5mmXu&@pN!NF<qUL<a5!>@Yan zurbr8Z1c#uo5g=Y>LI`jpfAC}yQ8u4E!<Ja1&o|H06A-h?a2^-eITY==Cm6NxB#Qm z00SSD0S0*FY2Wb&jWr^3-}nL!V`=pSb;gfg7&w?96p(R1;$Cez(QOy$M^g9@9lBWt zv>tuWz=m8EcFU=4POA(JVCnj(7(WG=2DmPDdj{DnHfZF(*D|@ameuOxSopy)w;*@5 z@mvsucklNI{jfBD;Fb*`ltRv|F}LebuCx(Jjr|>gB~R+pnluG=v{$CJh*S-v^h@*- zYZ~Yc0IOIpDHm!As1UrE%%zp88!Tb%!HXd~jcc1VcL{rZfDV^NG82@5q1fEG!~q;g z5iPZC)LyR4THsIBQqT`*iJJB~(u+22MU8n|ci2^580sB=9#&>JvbET&HjvY4Y6~Pc zHs5Da;29+a@eYqHWt0*C@%ECwo3JzOV_hhWgf<O}e=b#TSc<63g@}ji1OF&G92Q}S z`<m)NK7aoe*gDt>BE*b2R$Mgaj4kS5sJM@l%W5?V!0u$G;z9~YN}WJ@VL*F$nhUpQ z3WXjAd*Et+sl27>6d6$~0i!)uMg_Q_)o3X5ohrzHNmnHtNPZoGz$3(Cs!QMwl*P8c z*@&#OIe4CDf}BOU)3MD!T@wKuf|K(%AK#ynA)*37o0@a#1ppYaM=%Urw=!_OPcql^ zLFqmK9PtBwH@PokkF9iH&0&&j;9^A@>pBr-yg2ZG6ShvSpNdin4aT*$@^@^Ewe-WO zZi{)DNRnb87senh9%$?#TMA@(+a?aj&}#X+$OR~^WPwHOLJj!J(y)SH!Hy=N*~|jx zgA~jz+WE&4D<qGxhhpTf#5ZhqKZ6i?MA%wewrlfb#zuqid)2}irs9t{;cmpjfX{C0 zqCgUVoicL=GsDlL3`ZkNEJuwcTLpf`WSw^0Be3frbAAjmHleA|_(?7-Lm;K8n2g1{ zYHe&3<YDL<=d7qMR|!hRBPT4Rko*IJ6dzEwawG>Vkk_wYV>C;bNzDM}D+mK|yqD9B zKR^YzRtJ7VWx-9?Z$ChoCX<WE`7{H_Xp|d&+Mp1WDp~UE+#iK~Y-~3mu!7e(GgpkK zFtjlvzh}N?zGsF8O&!SlQr}P|j7NUR&z3kz3LsN<>LvPMtSs6v7AV<7aQ?Fc3K#>S z17N{D?+q*A&>#{p<e%G7$j1ac7SC5$usoYh>|0NS9qnC3vp>kS*kH$*>d2agD<M*U z!TvBX5<Wt$3XZmGIfo6yRyj>P?92gOplx{87!E@G%WBg~A~nBW3xOXZ5!R|{ulL9x zG1Rib0X78k>NS1ygAIV+4C`)0pRmp#%99)&VNwMdBasY62X<o&%5A9qnui7IlT%xP z>lLSy1o3m9Qi0}yato!p7Th6vPwRVshg&*sbH5!CmxWyD-c0641XZ%sW7yi17zXO{ zKQ}8|x<b%_+C!xuSK1yZXa~I#ZKsm`b7@gOpj6_Bp0?F*BK!8i)CmD26=2!>gm<5E zjRrR~wTZ1OSx`X(swt8fTXVjTR9=zGM(q=thK{(#aiVWBQ&3fvzU)ZfCOjQ~vxGAe zDh?<?;1pz`+VDg&86X+E(bxd(v}=U;$=IsGjlN?}2&}Ql(qI(>J&CcMW3(S;*}s^V z-?~84CYucz4;Ir_@O)(G+j?*?<TXK?*RXI9GN^w$Cyf||+Db#v6|xg<ylpqCTtVlc z#Qk?o-yW9X|53xawiNIKmM@ThP8{sqZ2@c|Ny-o*$WV58z<HJc@`jElA%oiC3kqAE z=f-*1<}8^7gI3}J!6D;6L+fw-ExGNc&&Gi-_i^zHS6PEElZLaMtusA}!6i;e+u;=| z{HdMV={U#ZgZ@3van|!?ex6ID`hx?|F>>vFz+72C?mD)yRE7m#rf4UBYi!b<wkQ~! zaJ8U~soLnY9xC_5#>=Hvk0fFzBIuIw0qs3{<oqy={hSl&R!e`e!#Zw33PCei=<-&l z><a9?NLyjEC4WLwa1>())Ut)Gx}sczT@8EFvc(0<e9gBLdArVn{+!Pn2<FEC*Eaqd zokkVI65iINO^}*m$L-yJ_aKjrvGMymoBTMLd7xy7xS=IeGIrLr`Qp(3p8=mZ>C*}2 zGOp$Z<h{a|@%&qVG}x=!b3KP*LQP+fqxLO*$e}=|)!h{KnUf$a-ef?3CL^E%K1UUe zdjOrjWg)|Q<}Rq{ojJAbR3V#2vnxl@nZ74$dLMXp;CjxBO&foIS}y>UiJ3^{P9iOO zB>JUMOKjlN3oHa=3IZ-t8dzg<1k7D|o`LIqq+2`Vl5w!D@i;7?vAPaUsh|RYv#+3> z<t@;-YJ(F>XmNn2|E&TS_JDl)S7!U~u1&1Bc{?|vnJ<`FZ1=XDbkML8xa<9W?X+!* zwj~HVq|<dDCvBL2K`AyfJG4wcZE1_Pa36l$?#luh-=RBig^xW>dsmz`q4wN1HaPTX z3qr%U?^Kvu++zCbchEbjEm@JU(800hnWCPUF_(#r*gvIpAZ^HB@B8G8npf0mQqIcc z9-|9mDmMdcXD8f5FcQy=PdGu?8l3!jn_`usApzfPa(~c&GQy451>QuKRX*3UuvUgo zM-;7I+pRW1#Rq{K@3LFKai}6p4P+lDaMLhRcPcq;hQM^zNil=gDtMNFy`!7yd!Grl zT!OE(85CZR<3%q$VAi-ss5{N}_^c5_bel(1yTj0u8lX)SiSHVmT%y$YD2Wt5x`kPR z1myJPN^w(vyH2o=4A$yv`qC)ZA@ILp7?_&t8%QB~%n#PwIG0s3UyU6tQ&ESjX}>gS zk`+OY2*}=*ukgF*{}bz|YGux)0e<_&vzcw$W~V&t_j>3;Waz9uxv9=hm-!YPM+v#P z;}{Orx9$eaHpqkP^j@iS-t4@Z!n^+17mi_~qGPCk1KMkIPZiifY3{1rQCVA;<RtK_ zICqI<G%o+~;6M`$1w3}_%~x?&1@}+8gLlqFd-c_T=(1==I=S2K&X)e^Crxnfof6O~ znJo<5s?BM0Wbfv9xL2^3L*tNm{RGUA8>OZK;(N-lz)aSOEXF%_4^WFrvTay_V=_Jy z+23J*0om5!ywOl=hj{Z|b^7!@(E`7RM#|)&<l9pR5#tRT3$)^G{~wB0p5K(WM@O#C ztdb5OPu>4+fepB_4bB=#TQ?(HuHgx%GT9}LR)9}SJJTXSr=U|CC~-2ZD22lRcZE0* zoE#d_mJp-jj_v<6lRl;2DC5)qX&m7`dOJpcyr<)Ur#ATBuBgtI*^!NEMU=CEN;qas z<K*E4aA%9*pgivp-|)5R+_h`ivrvoNKzK!^qUitHyVB>jtt0*&e+61kO421M$w%6% zqj(fsc085sjK#$1I2jHkLNZbcPytdB`=Nh(-(K&+P08*t)l6au$2;~d-rM81yGoRQ z`<t3CLI%KI-I2M(*85r=qKrX8znh^M9;mEyfmpJY))fd~CbH&;o}2UNOqBk9BR2^o zKnx_SoN<wGN(SGX1nnm)*Fb`Dz;fAU9QSB8Hi{(fQ^r04u`Z6v+Q&z;DCQSyFz?tV zopTPNLiZGO!SggSD|@Ld8sOf@(lL8~cq}jAm_G$REg{T6^mawOW7vN+Xs4MhFI8)_ z#A@4JlQEhsbPH@&C_yL^<Xf$?ti>29QvAdnX@%Zz?8eX%rd8Vxq_YC&CP?fAT!_NT zAp})UOYG45TJFHOX34ZYgw;L>zh)QY!r0C92NdW{qMOmVQ{;cQE$oho0W_X}?5=S^ zC{Z9QGcZ2QNCD#h$AkbdmTlZ<s?FP>ZwJsK?swS@NPqab1#n`36?chSt(-6ynVR7y zO9?PbBF!bpBUaeD*6#SFKqLKO!=Mxewo;Dlpb?Np^fvm6`G6|DE45*X&6yQ|1s=7s zz+DnAsOAwKlVbdd8urBobvFxtE*W`xKgWHD^&)8S-ej@{)rJ~W-1XPw+7HUOtgTQl zmm4*_T5J`#PGBC*)}B_Rs&vA~k&_>Z&o?dIkU2oY_Gqp&HlDW)-)x^U5t15!<m)Hv z)1g3NrgV9<AB5^heN&+XuMA<!9qXKS2XC_!5}+z+EKB8&JX717x}Vd31#AO;$PhdC z?}xue*O7mfyM`ZcP}7>B$SCXqjLUtR;lPjA^+?b6JW9_t>?Wpul*A2`wFbslrl`XX z2Pa~^!*_Xu8jSSgaIDf0;ao>t4g{porJ>a>(h9Fm?P16O0-qrIt2l6%GkAcogo=d@ z^y)(|6{`=I>sS9eRs)BBqmvi#JYOd({vFdN^Y3b(qF*pN+v5hzna|IG5E&QJ#2IWR zS-#;vqYE%;Y2Lb2@`BG<6wHYya0B-sMeC-*v)~E9*m>A4!@#J`fX!HWm}Z1ydr)`c ztCz@5%sG7QO(r;!{qU<|5Ps#1P%{=hFdU6ThhdNg4#QX+;4zGUeW#;WtzUwjZim!o z%D=<s*XxuW6r3Z+^2niw5+TvG9^aY(z|MwpA5~GpvpmO;6(0iwIzsu`V{o|8P5r!U z8i17DL>WnP!E|C=CPelIl<|6uh9z~vL4*!CLBNUUAY!7Bo-{T)b|3{}nL6i~A&3w{ zZxHpSWBj;tH)Dr?SST4>KJuc9Ud7r=>a9J08eqFQ1+x;I#H$jE1O}s0awVYoC4#&c z8pq{&Dr`L`tCKdgdh-FnM4VFLTtnV!c;?u`nnn2qONShuZO4-in=M_uzj3IoSn2`} zRWU)PcFdg3MAk59h7?aIiv?2^jnuwA6ciO28Qa1KZ*OmZN#X1gJ}3{5jop!F!+sJk z2DR{~gLXv;hU<W#Q*1AN;=9y7>vp6&6r9f&KEy0nXTeoQ!mT{(WPG_}5Nui%{CWd+ zq#zA{ccG}iSF?fym*S<_?;3L167Y%-N@^Pu_S)<o#Fq|Nlw$&P2#rrHVh%@z8YSdW z^>cLq28<nlrKD@2<vOz?kSU`jHlh>Q?2tv<+d<v}L_&-%?D?xeB1-rJCn^I2t*h>V zpDs!hjzHy|4m3@%@1=U*CHWo0#>yK?r6}JqutwnUn?ioIK=}a0x=I3Y&mmZAi1EEF zXwY*?0zf2^77m9bssPuYWotMF@OuVl0p=@GBX^pAfuCfdni+hxP?AVE#J9rVhkGD+ zxYDfdOau#T>3~J5#X+*L-$2n8Vyjs|W}(y?{8Z$qO))K23&kkoaCa00IM<JZXsOs@ zH5iA3(|A>E;1@_|v`pf`FC$Bpd%qSDAYE9eKSUhd6Xt7m2|8ZzyQQo$ezZ6fx`xyN z643I0@6kW{A$brTx#}X#46f|RCEeH#wbtChqm~YkV0UQ$aZCHW4(&bg-}q&~-yOx! zs&t9ngw5XB6j_X{iK=wc5$OO^@mpz0!~$`VWKvMJmkw&Y8*sV4I*W=JMgIa=uKq59 z=Uf{#Zd?(EiREe!y~ffVWQ&WP@WEyoq^ci(l1Do4Xzn(qLv*@WE#UHYmJ3dB*=WtU zlNDp=41A2b+Q_J+WmASTqBhHhKLpu<feQALASJA!ZDW{l+AEnPV1l2^EYZBYcQH-e zhe@Jjihyp@i+Ij|VEjG!Ccw8nuVWHx`XwgmV6oWJN+Cn_N7<E+kaG&LJa~2p#W65{ zw^7L&QRbC?7Ktm|b6fICv82ws*9~lRwSri+9hqHMriO>L8>;<Wer3gy5ndgT?6Adg zLK<@CIXR$8W2@9UwOdV80PsU+>2l-vQFN*=K@{3Kzewekv}1ulD{r#U*6UjICU;XH z5#J2zwFd?4Kpb9clf5SFl547B7y*NSrXd9c24{owPznD~TMDD(S)18@xE5>P!*G9H z7b{SAt~Ejvzif<3QWsb))VMy;fB~llpIHbk`g)J(CAiR*i;CT--H-JCr@5t{lw<=^ zQ?8bzr%;NPIW2#k!U6(?BLRGFr3E{*&!lY?mpoprbBSM|8B_Ql4U7^n9fZw)%8N^m zDvHq)7{fC77Em|w{-8y1+H*83?|8SGn+(E-;nQ9F5@H*=bP&*7dvD#%-;YZGKcq}@ z{<H*PmiHTjEv4`u!4CG@1}u{)+gOv8|6yXdkH&fBqK;mw1K&26n^Yefg^8Lf#K!kf zMtv25`NLA?Tn)9CmfBTQt<xrdYdfpbSpCjwwAS8zRcWt&U$q)+U2nc7JL&xs(0BHE z7V7Z$+oSihFSJnK9?eev`h^zi`FDr!k6#~czfhjZp)IVep+-VCSk9Iu6bO#fm}IJ@ zL_#+M$=xd`h{=S2kZ5m6E)jAsNLLIRB#T>SFx*xke3<2dpB7LpBi6ou&935{2?X|I z^a{kQ4Tw%+DF*y^1h7o?FCnV|6j@LT^s@EYf^3&kTS(F>5!BW0?4q<e2gD*SIglnc zUcN!BhcpIE89&&hcXA4>&QOgTw-O73T^#V@2uHCduVY^j{6y_o2{fwag>e9MgW$Z0 z(}L;WO^Ql_5JA-o(?unJ=?<U~x=~J}Wo+<R&okuMd4|~BQ0_fk6+vX}m|V0uC!JwI zJdBo0z&c^>Wy;P)VFn_02P}4%Qh8A@OtXZI7CM^O9Ongyqpor`Y+BDClO^M#W#^yn z(l5`nHTAaG=i#Ww(_;TtoJ>|k;>}|$TK8yocW>vXH^(RVytUVV2DD46rUa>v@-Tar zfsf8s6SMG0CHF4e1Tl#p*zuZ$Ec46w7M`eR+I`vCxM6nj-`9X=w>J9v!CKaj@>roU zTy1BR_Sw-$f!fJi6K_d(YjugoQq}Z$9Fe%z?2#z$h*nwNeQMH+wE(@A=AM=XLzk?$ zwT7YZbZQVHuI{scJu$7dQ?~mGH?kBP@GAR*!Cb_-KmM&aCRwz1;c;bMQ%XC`@?=## zW-LbEt2rzTjR`jHft@vNXlt|OyjsbwsdN*_PLJDVr#n`5Qe7af#27DK$-+voux;#u z&N=wABHu*d40Iq#(h9s)xVP~9(>FOmoc}W4EXfCW-9P$&`dJBVnpm-Kg2okzxe)0` zlZ*)!*ueq4vuu=RWJ5J9o1#5R)ks~AH#<Ifo2(y2ZNiVh$dobUrvgBjA4l#Yn3I;U z?@BIk=IvD9Y5cm{>X3E(%I>L58Gmg~lGTb>_ARM1wjgOe91tS}L9wSG<{;Ds0Ky@6 z!V0rin>bp3F(6|Q18$J00UAJ)V=oTHT^+c&8zc@MMOjuu>sYr`bHczBTlSy_zu8$A z`HtH0cH;D!tyMwrAb3!{)2KUm^Og3M%+_)EHoFePKZScw_n$u5fAR;YsJ&}xWW2vg z^x&iEqi6~ZS$1mqy|j5be&`sKgL!xmf(I}7G0snavm&0;t8n>cv{dTKP@QQ?fX2jV zx!g_B5m>ssRPs1sjZ3#!Ab>9MfsyI}U3J69qoCYSa+-re$75UN8?qTa2%!tIlmjdl z{u2CCOu9}%zs#$LVH&O+JiesVJC7K~<c{XzA?E_%j8Vw?@b(mY<_r))Oli?xV-rVt zp0VA3OHYO-bY>^>$4PNa(WB|p-y2gu%~5wUbzXBP-FM>t(zMZ_kq*wd)GVyY2w~v; zI^vWFL`3RDqe?n8lj%N4)rDM*B<n`8HmX%pj;NP{F=**74M&@no@N5Ju-ARkt}Fc- zX=snvr&<@v)l$!)U>5>fM6_nyfe-JSrhVvt+DO|L(sm^;{Nzzm#P(y{-^(ajQf3S$ zUFm~|;~xO?DHI1h(*r^GBZgI~Pkugp808nmIDGi<Z#VE8yCfAAhV@jfISLRCEaM(f z^^E~05J}R|X`Wa_>H*-p_VBUX;0hAvOAQZBSUwKp>BV$xwGo0mgc&nq4f2}m`_$=w zM;Xg6iXn)Nrbn~q*omG9`#Y5|XC9(-l|F@Rm#%u8<&kA}st$jUDvmg#!cnSZGGK{= za1a$|Niv{Ee^A1rQjo!{?ZoESrRIP(3527>5aHiqn4SL0)C3Q><P%X>r!2!j29P;i zFDw>L&hb%%=->k@g#W^t4zxZ!a9I(5-RcLB{4Kf~>bD8t<1+SjwA@oq0#r$TVK78; z%8&f5KPklCI)rz|sGg0=UjR;Raf=YAN3Lrh-m7>+hVfCo2I~zk3JS^H-;}6Ue!cLA zj$Q8=91|`DkpgGNF8uh0sRaK_^B6z5;a~zT{Q1D)8Gbe(Zg^2w<|amFBAvs3Gl4qz zIPYFPNRG{dwTLxts2ZJC9zhAB#_fCHGJerTlR=9fjLhS1yz5{U5v=1t6}f32tB4Qk zC9k8C4L&PR&OxA6-1ZixZc&;SL`-Fx{>v<%gC6Ij711y{w{VJJ*tGv{!Y$S<W!*B$ zsO$j|%+L(O8bLMSaGS-hB3{LRDmAQ-SsmyZSOoH9%~#RI5K4jZ0MwtVHQn1Rx|m-< zmaROUPcNg@*(ZE>sva9nFY;`CRSZWTCwm0Ifd-%RfKbum4ee7@;JzWvj-eZC#`b%% zJ-W}@TZH<1Y+ebhGkch%khjCydg#P52fFou9`Rc+4jjOv@ZrFfp}9GKb2_8(8N$iy zBbljrGAWP*?j&bO-GS{78dOrD?!(mMdUyIOoI3K#^gP0vJl4q76H|;Z@<yq&A4>bj ziU9@@Etini7EL*jQCnvrg)1-Ky_s6X)C+5nOcIvc=5h<s=k{|ta7S4cvqI;~{6N+~ zQwiOmFh;fN^Mk=)R5dhz<`nM0W|0#-!xbOUFCrv>NJv*+zZ02J{;p&sxoKMZKSTX5 zF;qPVaW%pJ?=}Bk)_8#5Y{??Y-|oYoQ_U6ScN@%^n9zOR__iSlJuGya1L1}>%qUz_ z$&-%1cy3Svbt4#=PJA}~;pFhu(R_CF(@c$z-OkqkgCC0MBHkB&;N!Dr&%pKzpIMTg zGq(~hqWmi9S@6CHl>~M*UFzY+x5;V<=++XP7nDTcIrWhG_4?!9{x8DMs`nx4kl}9* z!aYkKqAuw%JxTx}gZjE_L=XA;hUO_4LIScS5_*oB+<XoLn$KC0dm!Oei_<^D|1ex* zm4k*teQtx${eUii2y#F&K&u5V?@E0g3(2CYW##<8!LKQ(Q<ja_O-&(DpWY|V7@$F9 zy@yEkSnM{MePh;$0dfWr8I)}l6GK6s264pP;9rD4YoVRi%`4(7JVIE7RT1kXtE6kc zBN+t%rM4pjc>>SQ#tva<3lG3F)0A?6YN$kM0YJI}2h~h}CwEE|>d@bN_?QarO`-_| z08gmg`{YxUr*YBQL;r+)hZPZ^=sSE2zC+4c8(~cK4p)`uZXC~{0f1o<6@IdZ!w_E6 z!4|0cg0FUn!0?fsJ*(Zr-_^UuU3xyTE-taEX9yL?@&utk>qH3?6}G)hA%}d0zpz4c z|BpWLKZ7uTSO?E*l@7UW+jLeQFvf*^y<2zt%Z#*IKzMWVs!~4qIXKy**;SDg#E2)H zKi9%SaN-7zlJjb)nvK?XFtg-Aas%;3)mLVn@cm^FHLJ1+@}(pY^D$e(M~m#SrD$=M zU2S@t+iqbg5Sz<|t1vZgoL|QQVj57g)!S>wZkPanr6@;A^lB%BUnIrVGTKNcqRN^_ zcszr65p;_f#4k|-jJ!NZ9l{mMyCH=gg4-ZpP#~em1)(Ds=yRQ9jXuZvDhqJn<=Dh7 zr~8vhzD^Nzho`%rMy$ip{*;dPs`5N=v_FBPU8)4)fn81+rtx>C#zY<HP7=y`=&Bxp zT9rG0hI0|zHl;F%u`YM$b?u^<)Q)?#UVWb7bUVE8F?*BOeu)wwy<8%v0%UAsxz+VI z8=ZxWJ1G$L={=@j=ZB0fp1Rnb?mpdBKN^xHC{(_mYb0-L`W6e-454wk+BhkI%)Q~f zV}Q#Lq@`qw6yI<zJ1=Ntvbv!@*6Vl)uvmD1$G+pdqQS)%5WWSE+E+Azb_Cb16SFuc z^majQR(M+rJA5~reXrQz!-o&k_eVedG=2W=&CWkx{N;!5j^7-<?Z6Iy4Ub=+%))ms z!{_hb&JLf?PCf@aygz!e9XlMpKR$YU)Q=sG)hj*NVfOy;$D`xdZ(n^WcIX}FOPdmZ z)u4l-mNx~}-9E(_)d^{)aKKIk!Izx}rr-+fYk2-In(L1`r%uPXJ}4IlB`G_H@qPW< zZ~j<Q2@c!wivn2Z2;RrYxD1PwEI711y^hlap!^1^3DU(GBs72|<d?c&BS!QqaX{_( z>Yy$XrOP+uMC_7pS~4U|II-OX;4PDX%jh=4=!OX=ahyOB$H`vTV8TBrB2~fRCA*xP zMo-65cqt>@gr1NFj$Fi6Ng=EJjR;{J2Gw5VxjjLj7u4avuQAR}XK!e!1kBBHrgUqP z!5&A!MQ3MN`iJvEk}DjJbg9h%UthOe^3_X9ALRtm6&x|zHJ$k0A7MEwaM#s;%gHfx z+!Mvp^;k-j-R+l^Zl*-isAx4daWqSpT!#{>!q2M3Y<pbkvZq{50oNW;(<WMw;!V{w zhU?`jxl{|h+>FB02sSN@SG8v(MKyH(kE93+btHmqk2#r550rjzWY@E%@<K?MW}8!z z^7NVsXVW2Gopr2|ixN9T1ZU@ePy|<Mk`)t(pjW3w496#w&|7t7vOfWnRT$`ITni8r zLFyckgCf*Dh1`?FWZ#16;YP@;`HYgHxa`(<mq>175dv2EI<DRv!1OA;0{#b7rZXvT z1P9(Hn}vqV9=y`PH^d}CYoG{n(7W@wo0mdoO$|R~%SFMvibpWS^I?U5qA*(CL>n9s zs&-UG8g3-INEnA5#2rgoSh;N}SY8bw$tPTSY=Xn?x&uAh1?H$w@t#|qND+x7*X7Nq z6NfJjAv{LWK`G=MD&ZyK#k^0Y+|3x05lFkH0m^lnqab6_k5YCL6AJ_d-Xvg7=N~~n zFjcWmH)tu4Q`}AsEafwQtZpS5`K3t%J*JW=kav|MNL)469FG50fyY-%DA!vZcKkiu zJ2tmE1{~vS|IwkwYK!j{7uvZ=C2#^P^&fFX*zikz@5{w7Cy+w|5>S4LFy^WW-f7kE zG3K}r1AWOT;BA6zIjqjwhpeJ8e)!||QLWP*FRnEUFQQyAl!UT>(qCS<soJMg%A0RX z1Re6<>FuJ%GD{N+I<(}Bl4Y*)nW4|{s9+*>NEi$2ApZ%1#B}H0#w``FIc7L|j>A!9 zQ{XNvw^5U-88}2YxYLksrz}F8XOO=V#e&?s7Vdo0sbsfRuT9rCU)?G>^v5K=F(sv_ zbRozF)8Liu^661F7F<@iR0r|5-@M>k&;dCt?xWpYDS=dJJO>z{5)al&YnZ8KupfGS z8W;kfW{VB{3om^W{0p-gGAM@$217AIaJUA0Sd&V*H3Y0B_)wFvyc;0hd^|$6<Wl?~ zF8~0Q#sB~q02lxO000010001_fvEzMVYwCzXmo9CRa6B40}%`dli;~J0UMJWx=I0B zlV-YC0i=_@x>*AFYLk(?6q7BxN&+5ilaag>la0Gb0*Zl?k-QX>>$^z;-Gh^nyc3g2 zyhZ_AlaRbx0pXL7ycLqYN&=aNlaag>lVH6{0U(pBy<Gw-m6Kt)6_X#nEe1Ea00000 Dh`}1C -- GitLab