From b9a387bee39de8716f9bec58cd929f53cf20f49e Mon Sep 17 00:00:00 2001 From: dkuhlman <none@none> Date: Thu, 20 Mar 2014 14:27:41 -0700 Subject: [PATCH] Preliminary to release of v 2.12c --- README | 30 + generateDS.html | 31 +- generateDS.py | 172 +++-- generateDS.txt | 27 +- gui/generateds_gui.py | 2 +- libgenerateDS/gui/generateds_gui.py | 2 +- librarytemplate-1.0a.zip | Bin 13398 -> 13463 bytes librarytemplate_howto.html | 6 +- librarytemplate_howto.txt | 2 +- process_includes.py | 55 +- setup.py | 2 +- tests/OnePer/oneperType00_1One.py | 19 +- tests/OnePer/oneperType00_2One.py | 19 +- tests/OnePer/oneperType01_1One.py | 21 +- tests/OnePer/oneperType01_2One.py | 21 +- tests/OnePer/oneperType02_1One.py | 21 +- tests/OnePer/oneperType02_2One.py | 21 +- tests/OnePer/oneperType03_1One.py | 916 ++++++++++++++++++++++++ tests/OnePer/oneperType03_2One.py | 916 ++++++++++++++++++++++++ tests/abstract_type1_sub.py | 14 +- tests/abstract_type1_sup.py | 29 +- tests/abstract_type2_sub.py | 14 +- tests/abstract_type2_sup.py | 29 +- tests/annotations1_sub.py | 14 +- tests/annotations1_sup.py | 25 +- tests/annotations2_sub.py | 14 +- tests/annotations2_sup.py | 25 +- tests/anonymous_type1_sub.py | 8 +- tests/anonymous_type1_sup.py | 23 +- tests/anonymous_type2_sub.py | 8 +- tests/anonymous_type2_sup.py | 23 +- tests/anysimpletype1_sub.py | 8 +- tests/anysimpletype1_sup.py | 15 +- tests/anysimpletype2_sub.py | 8 +- tests/anysimpletype2_sup.py | 15 +- tests/anywildcard1_sub.py | 8 +- tests/anywildcard1_sup.py | 28 +- tests/anywildcard2_sub.py | 8 +- tests/anywildcard2_sup.py | 28 +- tests/attr_groups1_sub.py | 14 +- tests/attr_groups1_sup.py | 17 +- tests/attr_groups2_sub.py | 14 +- tests/attr_groups2_sup.py | 17 +- tests/catalogtest.xsd | 6 + tests/catalogtest1_sub.py | 8 +- tests/catalogtest1_sup.py | 11 +- tests/catalogtest2_sub.py | 8 +- tests/catalogtest2_sup.py | 11 +- tests/extensions1_sub.py | 14 +- tests/extensions1_sup.py | 52 +- tests/extensions2_sub.py | 14 +- tests/extensions2_sup.py | 52 +- tests/ipo1_sub.py | 14 +- tests/ipo1_sup.py | 39 +- tests/ipo2_sub.py | 14 +- tests/ipo2_sup.py | 39 +- tests/literal1.py | 2 +- tests/oneper00.xsd | 1 + tests/oneper03.xsd | 26 + tests/out1_sub.py | 8 +- tests/out1_sup.py | 56 +- tests/out2_sub.py | 8 +- tests/out2_sup.py | 56 +- tests/people_procincl1_sub.py | 8 +- tests/people_procincl1_sup.py | 71 +- tests/people_procincl2_sub.py | 8 +- tests/people_procincl2_sup.py | 71 +- tests/people_procincl_a.xsd | 2 +- tests/recursive_simpletype1_sub.py | 14 +- tests/recursive_simpletype1_sup.py | 17 +- tests/recursive_simpletype2_sub.py | 14 +- tests/recursive_simpletype2_sup.py | 17 +- tests/simplecontent_restriction1_sub.py | 8 +- tests/simplecontent_restriction1_sup.py | 17 +- tests/simplecontent_restriction2_sub.py | 8 +- tests/simplecontent_restriction2_sup.py | 17 +- tests/simpletype_memberspecs1_sub.py | 8 +- tests/simpletype_memberspecs1_sup.py | 14 +- tests/simpletype_memberspecs2_sub.py | 8 +- tests/simpletype_memberspecs2_sup.py | 14 +- tests/simpletypes_other1_sub.py | 14 +- tests/simpletypes_other1_sup.py | 20 +- tests/simpletypes_other2_sub.py | 14 +- tests/simpletypes_other2_sup.py | 20 +- tests/test.py | 18 +- tests/to_etree1_sub.py | 14 +- tests/to_etree1_sup.py | 49 +- tests/to_etree2_sub.py | 14 +- tests/to_etree2_sup.py | 49 +- tutorial/generateds_tutorial.html | 6 +- tutorial/generateds_tutorial.txt | 2 +- tutorial/generateds_tutorial.zip | Bin 48768 -> 48764 bytes 92 files changed, 3128 insertions(+), 536 deletions(-) create mode 100644 tests/OnePer/oneperType03_1One.py create mode 100644 tests/OnePer/oneperType03_2One.py create mode 100644 tests/catalogtest.xsd create mode 100644 tests/oneper03.xsd diff --git a/README b/README index 59de3a6..ff0b783 100644 --- a/README +++ b/README @@ -141,6 +141,36 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Change history -------------- +Version 2.12c (03/19/2014) +- Fix for "one module per XSD file" to handle an include or import + element that refers to a remote schema on the Net (i.e. the + location is "http:..." or "ftp:...") rather than a file on the + local file system. Added ability to access include/import file + across the Net. Thanks to Jinquan Liu for reporting this. +- Added schema to unit test for "one module per XSD file" that is + read from remote site (http://www.davekuhlman.org). +- Fix to process_includes.py -- When run directly from the command + line (as opposed to imported and called from another python + module), the fixtypenames option was not being intialized. +- Fix for error in order of generation of classes that have + superclasses. When an anonymous simpleType occured, the name of + the enclosing complexType was used, which caused generateDS.py to + believe that the superclass had already been generated. Thanks + again to Jinquan Liu for reporting this issue. +- Fix for handling of xs:substitutionGroup -- Namespace prefix was + causing gDS to fail to match on substitutionGroup name. +- Added code so that an instance of a generated class can remember + the tag from which it was built. This is needed for instances of + a class that represents an element type that is a member of a + xs:substitutionGroup. But, in fact, generated code now uses this + feature to remember and export the tag name of all complex + elements. +- Enhanced command line option --root-element so that both the root + tag and the root class can be specified (separated by a vertical + bar). +- Added support for the ability of an element definition to inherit + minOccurs and maxOccurs from the xs:sequence that contains it. + Version 2.12b (02/10/2014) - Fix to the aliasing capability. You should now be able to alias one element to another, and by doing so, only generate the diff --git a/generateDS.html b/generateDS.html index 1dee987..2964650 100644 --- a/generateDS.html +++ b/generateDS.html @@ -220,7 +220,7 @@ They are used by updateversion.py. --> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.12b</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.12c</td> </tr> </tbody> </table> @@ -229,7 +229,7 @@ They are used by updateversion.py. --> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">date:</th><td class="field-body">February 10, 2014</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">March 19, 2014</td> </tr> </tbody> </table> @@ -542,9 +542,11 @@ Options: Append XXX to the end of each file created. --subclass-suffix="XXX" Append XXX to the generated subclass names. Default="Sub". - --root-element="XXX" Assume XXX is root element of instance docs. - Default is first element defined in schema. - Also see section "Recognizing the top level + --root-element="XX" When parsing, assume XX is root element of + --root-element="XX|YY" instance docs. Default is first element defined + in schema. If YY is added, then YY is used as the + top level class; if YY omitted XX is the default. + class. Also see section "Recognizing the top level element" in the documentation. --super="XXX" Super module name in generated in subclass module. Default="???" @@ -624,7 +626,7 @@ creates (with force over-write) sample_lib.py from sample_api.xsd. creates sample_lib.py superclass and sample_app1.py subclass modules; also generates member specifications in each class (in a dictionary). </pre> -<p>The following command line flags are recognized by <tt class="docutils literal">generateDS.py</tt>:</p> +<p>The following command line options are recognized by <tt class="docutils literal">generateDS.py</tt>:</p> <dl class="docutils"> <dt>o <filename></dt> <dd>Write the data representation classes to file filename.</dd> @@ -698,11 +700,16 @@ and subclass names the same:</p> generateDS.py --subclass-suffix="" -s actions.py mydef.xsd </pre> </dd> -<dt>root-element=<element_name></dt> -<dd>Make element_name the assumed root of instance documents. The -default is the name of the element whose definition is first -in the XML Schema document. This flag effects the parsing -functions (for example, parse(), parseString()).</dd> +<dt>root-element=<element_name> -OR- <element_name>|<class_name></dt> +<dd>Make <tt class="docutils literal">element_name</tt> the assumed root of instance documents. +The default is the name of the element whose definition is first +in the XML Schema document. If <tt class="docutils literal">class_name</tt> is also present +(after a vertical bar), then <tt class="docutils literal">class_name</tt> is assumed to be the +name of the class to be created from the root (top level) +element when parsing an XML instance document. If +<tt class="docutils literal">class_name</tt> is omitted, the default class name is the same as +<tt class="docutils literal">element_name</tt>. This flag effects the parsing functions (for +example, parse(), parseString(), etc).</dd> <dt>super=<module_name></dt> <dd><p class="first">Make module_name the name of the superclass module imported by the subclass module. If this flag is omitted, the @@ -2865,7 +2872,7 @@ following among others:</p> <div class="footer"> <hr class="footer" /> <a class="reference external" href="generateDS.txt">View document source</a>. -Generated on: 2014-02-10 22:19 UTC. +Generated on: 2014-03-19 16:03 UTC. Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. </div> diff --git a/generateDS.py b/generateDS.py index b3356e6..cc7a168 100755 --- a/generateDS.py +++ b/generateDS.py @@ -25,9 +25,11 @@ Options: Append XXX to the end of each file created. --subclass-suffix="XXX" Append XXX to the generated subclass names. Default="Sub". - --root-element="XXX" Assume XXX is root element of instance docs. - Default is first element defined in schema. - Also see section "Recognizing the top level + --root-element="XX" When parsing, assume XX is root element of + --root-element="XX|YY" instance docs. Default is first element defined + in schema. If YY is added, then YY is used as the + top level class; if YY omitted XX is the default. + class. Also see section "Recognizing the top level element" in the documentation. --super="XXX" Super module name in generated in subclass module. Default="???" @@ -177,7 +179,7 @@ logging.disable(logging.INFO) # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## -VERSION = '2.12b' +VERSION = '2.12c' ##VERSION## GenerateProperties = 0 @@ -541,11 +543,7 @@ class SimpleTypeElement(XschemaElementBase): s1 = '<"%s" SimpleTypeElement instance at 0x%x>' % \ (self.getName(), id(self)) return s1 - - def __repr__(self): - s1 = '<"%s" SimpleTypeElement instance at 0x%x>' % \ - (self.getName(), id(self)) - return s1 + __repr__ = __str__ def resolve_list_type(self): if self.isListType(): @@ -1376,6 +1374,7 @@ class XschemaHandler(handler.ContentHandler): self.inComplexType = 0 self.inNonanonymousComplexType = 0 self.inSequence = 0 + self.sequenceStack = [] self.inChoice = 1 self.inAttribute = 0 self.attributeGroupLevel = 0 @@ -1449,6 +1448,13 @@ class XschemaHandler(handler.ContentHandler): if element.prefix in prefixToNamespaceMap: element.namespace = prefixToNamespaceMap[element.prefix] + if self.sequenceStack: + minOccurs, maxOccurs = self.sequenceStack[-1] + if 'minOccurs' not in attrs and minOccurs is not None: + element.attrs['minOccurs'] = minOccurs + if 'maxOccurs' not in attrs and maxOccurs is not None: + element.attrs['maxOccurs'] = maxOccurs + if not 'type' in attrs.keys() and not 'ref' in attrs.keys(): element.setExplicitDefine(1) if len(self.stack) == 1: @@ -1456,6 +1462,7 @@ class XschemaHandler(handler.ContentHandler): if 'substitutionGroup' in attrs.keys() and 'name' in attrs.keys(): substituteName = attrs['name'] headName = attrs['substitutionGroup'] + _, headName = get_prefix_and_value(headName) if headName not in SubstitutionGroups: SubstitutionGroups[headName] = [] SubstitutionGroups[headName].append(substituteName) @@ -1483,6 +1490,8 @@ class XschemaHandler(handler.ContentHandler): self.stack.append(element) elif name == SequenceType: self.inSequence = 1 + self.sequenceStack.append( + [attrs.get('minOccurs'), attrs.get('maxOccurs')]) elif name == ChoiceType: self.currentChoice = XschemaElement(attrs) self.inChoice = 1 @@ -1692,6 +1701,7 @@ class XschemaHandler(handler.ContentHandler): self.inComplexType = 0 elif name == SequenceType: self.inSequence = 0 + self.sequenceStack.pop() elif name == ChoiceType: self.currentChoice = None self.inChoice = 0 @@ -1826,7 +1836,6 @@ def generateExportFn_1(wrt, child, name, namespace, fill): namespace = 'namespace_' if child.prefix and 'ref' in child.attrs: namespace = "'%s:'" % child.prefix - s1 = "%s outfile.write('<%%s%s>%%s</%%s%s>%%s' %% " \ "(%s, self.gds_format_string(quote_xml(self.%s)." \ "encode(ExternalEncoding), input_name='%s'), " \ @@ -2542,6 +2551,9 @@ def generateExportFn(wrt, prefix, element, namespace, nameSpacesDef): wrt(" eol_ = '\\n'\n") wrt(' else:\n') wrt(" eol_ = ''\n") + # We need to be able to export the original tag name. + wrt(" if self.original_tagname_ is not None:\n") + wrt(" name_ = self.original_tagname_\n") wrt(' showIndent(outfile, level, pretty_print)\n') wrt(" outfile.write('<%s%s%s' % (namespace_, name_, " "namespacedef_ and ' ' + namespacedef_ or '', ))\n") @@ -3479,7 +3491,7 @@ def generateBuildStandard_1( if headChild.getMaxOccurs() > 1: substitutionGroup = child.getAttrs().get('substitutionGroup') if substitutionGroup is not None: - name = substitutionGroup + _, name = get_prefix_and_value(substitutionGroup) else: name = mappedName s1 = " self.%s.append(obj_)\n" % (name, ) @@ -3491,6 +3503,7 @@ def generateBuildStandard_1( name = headName s1 = " self.%s = obj_\n" % (mappedName, ) wrt(s1) + wrt(" obj_.original_tagname_ = '%s'\n" % (origName, )) # # If this child is defined in a simpleType, then generate # a validator method. @@ -3794,6 +3807,11 @@ def generateCtor(wrt, element): childCount = countChildren(element, 0) s2 = buildCtorArgs_multilevel(element, childCount) wrt(' def __init__(self%s):\n' % s2) + # Save the original tag name. This is needed when there is a + # xs:substitutionGroup and we later (e.g. during export) do not know + # which member of the xs:substitutionGroup this specific element + # came from. + wrt(' self.original_tagname_ = None\n') parentName, parent = getParentName(element) if parentName: if parentName in AlreadyGenerated: @@ -3836,9 +3854,7 @@ def generateCtor(wrt, element): pythonType = SchemaToPythonTypeMap.get(attrDef.getType()) attrVal = "_cast(%s, %s)" % (pythonType, name, ) wrt(' self.%s = %s\n' % (name, attrVal, )) - member = 1 # Generate member initializers in ctor. - member = 0 for child in element.getChildren(): name = cleanupName(child.getCleanName()) logging.debug("Constructor child: %s" % name) @@ -3900,22 +3916,16 @@ def generateCtor(wrt, element): wrt(' self.%s = %s\n' % (name, name)) else: wrt(' self.%s = %s\n' % (name, name)) - member = 1 eltype = element.getType() if (element.getSimpleContent() or element.isMixed() or eltype in SimpleTypeDict or CurrentNamespacePrefix + eltype in OtherSimpleTypes): wrt(' self.valueOf_ = valueOf_\n') - member = 1 if element.getAnyAttribute(): wrt(' self.anyAttributes_ = {}\n') - member = 1 if element.getExtended(): wrt(' self.extensiontype_ = extensiontype_\n') - member = 1 - if not member: - wrt(' pass\n') if element.isMixed(): wrt(MixedCtorInitializers) # end generateCtor @@ -4190,8 +4200,7 @@ def generateClasses(wrt, prefix, element, delayed, nameSpacesDef=''): # If this element is an extension (has a base) and the base has # not been generated, then postpone it. if parentName: - if (parentName not in AlreadyGenerated and - parentName not in SimpleTypeDict): + if parentName not in AlreadyGenerated: PostponedExtensions.append(element) return if mapName(element.getName()) in AlreadyGenerated: @@ -4917,8 +4926,8 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = '%(name)s' - rootClass = %(prefix)s%(root)s + rootTag = '%(rootElement)s' + rootClass = %(prefix)s%(rootClass)s rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. @@ -4937,8 +4946,8 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = '%(name)s' - rootClass = %(prefix)s%(root)s + rootTag = '%(rootElement)s' + rootClass = %(prefix)s%(rootClass)s rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. @@ -4959,10 +4968,10 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootClass = %(prefix)s%(root)s + rootTag = '%(rootElement)s' + rootClass = %(prefix)s%(rootClass)s rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. @@ -4970,7 +4979,7 @@ def parseString(inString, silence=False): #silence# if not silence: #silence# sys.stdout.write('<?xml version="1.0" ?>\\n') #silence# rootObj.export( -#silence# sys.stdout, 0, name_="%(name)s", +#silence# sys.stdout, 0, name_=rootTag, #silence# namespacedef_='%(namespacedef)s') return rootObj @@ -4980,8 +4989,8 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = '%(name)s' - rootClass = %(prefix)s%(root)s + rootTag = '%(rootElement)s' + rootClass = %(prefix)s%(rootClass)s rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. @@ -4989,7 +4998,7 @@ def parseLiteral(inFileName, silence=False): #silence# if not silence: #silence# sys.stdout.write('#from %(module_name)s import *\\n\\n') #silence# sys.stdout.write('import %(module_name)s as model_\\n\\n') -#silence# sys.stdout.write('rootObj = model_.rootTag(\\n') +#silence# sys.stdout.write('rootObj = model_.rootClass(\\n') #silence# rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) #silence# sys.stdout.write(')\\n') return rootObj @@ -5024,19 +5033,32 @@ def generateMain(outfile, prefix, root): exportDictLine += "}\n\n\n" outfile.write(exportDictLine) children = root.getChildren() + rootClass = None if children: name = RootElement or children[0].getName() elType = cleanupName(children[0].getType()) if RootElement: - rootElement = RootElement + roots = RootElement.split('|') + if len(roots) > 1: + rootElement = roots[0] + rootClass = roots[1] + else: + rootElement = roots[0] else: rootElement = elType else: name = '' if RootElement: - rootElement = RootElement + roots = RootElement.split('|') + if len(roots) > 1: + rootElement = roots[0] + rootClass = roots[1] + else: + rootElement = roots[0] else: rootElement = '' + if rootClass is None: + rootClass = rootElement if Namespacedef: namespace = Namespacedef elif Targetnamespace: @@ -5053,7 +5075,8 @@ def generateMain(outfile, prefix, root): 'name': name, 'cleanname': cleanupName(name), 'module_name': os.path.splitext(os.path.basename(outfile.name))[0], - 'root': rootElement, + 'rootElement': rootElement, + 'rootClass': rootClass, 'namespacedef': namespace, } s1 = TEMPLATE_MAIN % params @@ -5355,8 +5378,8 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = '%(name)s' - rootClass = supermod.%(root)s + rootTag = '%(rootElement)s' + rootClass = supermod.%(rootClass)s rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. @@ -5375,8 +5398,8 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = '%(name)s' - rootClass = supermod.%(root)s + rootTag = '%(rootElement)s' + rootClass = supermod.%(rootClass)s rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. @@ -5399,8 +5422,8 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = '%(name)s' - rootClass = supermod.%(root)s + rootTag = '%(rootElement)s' + rootClass = supermod.%(rootClass)s rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. @@ -5416,10 +5439,10 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootClass = supermod.%(root)s + rootTag = '%(rootElement)s' + rootClass = supermod.%(rootClass)s rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. @@ -5427,8 +5450,8 @@ def parseLiteral(inFilename, silence=False): #silence# if not silence: #silence# sys.stdout.write('#from %(super)s import *\\n\\n') #silence# sys.stdout.write('import %(super)s as model_\\n\\n') -#silence# sys.stdout.write('rootObj = model_.%(cleanname)s(\\n') -#silence# rootObj.exportLiteral(sys.stdout, 0, name_="%(cleanname)s") +#silence# sys.stdout.write('rootObj = model_.rootClass(\\n') +#silence# rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) #silence# sys.stdout.write(')\\n') return rootObj @@ -5518,7 +5541,6 @@ def getNamespace(element): namespace = 'xmlns:%s="%s"' % ( NamespacesDict[Targetnamespace].rstrip(':'), Targetnamespace, ) - return namespace @@ -5559,19 +5581,32 @@ def generateSubclasses(root, subclassFilename, behaviorFilename, generateSubclass( wrt, element, prefix, xmlbehavior, behaviors, baseUrl) children = root.getChildren() + rootClass = None if children: name = children[0].getName() elType = cleanupName(children[0].getType()) if RootElement: - rootElement = RootElement + roots = RootElement.split('|') + if len(roots) > 1: + rootElement = roots[0] + rootClass = roots[1] + else: + rootElement = roots[0] else: rootElement = elType else: name = '' if RootElement: - rootElement = RootElement + roots = RootElement.split('|') + if len(roots) > 1: + rootElement = roots[0] + rootClass = roots[1] + else: + rootElement = roots[0] else: rootElement = '' + if rootClass is None: + rootClass = rootElement if Namespacedef: namespace = Namespacedef elif Targetnamespace: @@ -5589,7 +5624,9 @@ def generateSubclasses(root, subclassFilename, behaviorFilename, 'cleanname': cleanupName(name), 'module_name': os.path.splitext( os.path.basename(subclassFilename))[0], - 'root': rootElement, + 'root': root, + 'rootElement': rootElement, + 'rootClass': rootClass, 'namespacedef': namespace, 'super': superModule, } @@ -5653,7 +5690,6 @@ def getImportsForExternalXsds(root): type)) for subChild in child.getChildren(): childStack.append(subChild) - return externalImports @@ -5674,9 +5710,7 @@ def generate(outfileName, subclassFilename, behaviorFilename, outfile = os.tmpfile() wrt = outfile.write processed = [] - externalImports = getImportsForExternalXsds(root) - generateHeader(wrt, prefix, externalImports) #generateSimpleTypes(outfile, prefix, SimpleTypeDict) DelayedElements = [] @@ -5767,7 +5801,6 @@ def strip_namespace(val): def get_prefix_and_value(val): if ':' in val: return val.split(':') - return None, val @@ -5865,13 +5898,11 @@ def parseAndGenerate( infile = sys.stdin else: infile = open(xschemaFileName, 'r') - if SingleFileOutput: parser = make_parser() dh = XschemaHandler() ## parser.setDocumentHandler(dh) parser.setContentHandler(dh) - if processIncludes: import process_includes outfile = StringIO.StringIO() @@ -5885,7 +5916,6 @@ def parseAndGenerate( parser.parse(infile) root = dh.getRoot() root.annotate() - ## print '-' * 60 ## root.show(sys.stdout, 0) ## print '-' * 60 @@ -5906,7 +5936,6 @@ def parseAndGenerate( outfile = open(outfileName, "a") outfile.write(exportLine) outfile.close() - else: import process_includes rootPaths = process_includes.get_all_root_file_paths( @@ -5915,23 +5944,30 @@ def parseAndGenerate( roots = [] rootInfos = [] for path in rootPaths: - rootFile = open(path, 'r') - + if path.startswith('http:') or path.startswith('ftp:'): + try: + urlfile = urllib2.urlopen(path) + content = urlfile.read() + urlfile.close() + rootFile = StringIO.StringIO() + rootFile.write(content) + rootFile.seek(0) + except urllib2.HTTPError: + msg = "Can't find file %s." % (path, ) + raise IOError(msg) + else: + rootFile = open(path, 'r') parser = make_parser() dh = XschemaHandler() parser.setContentHandler(dh) parser.parse(rootFile) - root = dh.getRoot() roots.append(root) rootFile.close() - for root in roots: root.annotate() - moduleName = None modulePath = None - # use the first root element to set # up the module name and path for child in root.getChildren(): @@ -5941,33 +5977,26 @@ def parseAndGenerate( # no need to create a module for # xs: types continue - # convert to lower camel case if needed. if "-" in typeName: tokens = typeName.split("-") typeName = ''.join([t.title() for t in tokens]) - moduleName = typeName[0].lower() + typeName[1:] - modulePath = ( OutputDirectory + os.sep + moduleName + ModuleSuffix + ".py") - fqnToModuleNameMap[child.getFullyQualifiedType()] = \ moduleName fqnToModuleNameMap[child.getFullyQualifiedName()] = \ moduleName break - rootInfos.append((root, modulePath)) - for root, modulePath in rootInfos: if modulePath: generate( modulePath, subclassFilename, behaviorFilename, prefix, root, superModule) - # Generate __all__. When using the parser as a module # it is useful # to isolate important classes from internal ones. This way one @@ -6249,7 +6278,6 @@ def main(): OutputDirectory = option[1] elif option[0] == "--module-suffix": ModuleSuffix = option[1] - if showVersion: print 'generateDS.py version %s' % VERSION sys.exit(0) diff --git a/generateDS.txt b/generateDS.txt index fd36e6d..0f2f866 100644 --- a/generateDS.txt +++ b/generateDS.txt @@ -12,7 +12,7 @@ generateDS -- Generate Data Structures from XML Schema .. version -:revision: 2.12b +:revision: 2.12c .. version @@ -243,9 +243,11 @@ Here is the usage message displayed by ``generateDS.py``:: Append XXX to the end of each file created. --subclass-suffix="XXX" Append XXX to the generated subclass names. Default="Sub". - --root-element="XXX" Assume XXX is root element of instance docs. - Default is first element defined in schema. - Also see section "Recognizing the top level + --root-element="XX" When parsing, assume XX is root element of + --root-element="XX|YY" instance docs. Default is first element defined + in schema. If YY is added, then YY is used as the + top level class; if YY omitted XX is the default. + class. Also see section "Recognizing the top level element" in the documentation. --super="XXX" Super module name in generated in subclass module. Default="???" @@ -326,7 +328,7 @@ Here is the usage message displayed by ``generateDS.py``:: also generates member specifications in each class (in a dictionary). -The following command line flags are recognized by ``generateDS.py``: +The following command line options are recognized by ``generateDS.py``: o <filename> Write the data representation classes to file filename. @@ -409,11 +411,16 @@ subclass-suffix=<suffix> generateDS.py --subclass-suffix="" -s actions.py mydef.xsd -root-element=<element_name> - Make element_name the assumed root of instance documents. The - default is the name of the element whose definition is first - in the XML Schema document. This flag effects the parsing - functions (for example, parse(), parseString()). +root-element=<element_name> -OR- <element_name>|<class_name> + Make ``element_name`` the assumed root of instance documents. + The default is the name of the element whose definition is first + in the XML Schema document. If ``class_name`` is also present + (after a vertical bar), then ``class_name`` is assumed to be the + name of the class to be created from the root (top level) + element when parsing an XML instance document. If + ``class_name`` is omitted, the default class name is the same as + ``element_name``. This flag effects the parsing functions (for + example, parse(), parseString(), etc). super=<module_name> Make module_name the name of the superclass module imported diff --git a/gui/generateds_gui.py b/gui/generateds_gui.py index da34cc6..f080d53 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.12b' +VERSION = '2.12c' ##VERSION## diff --git a/libgenerateDS/gui/generateds_gui.py b/libgenerateDS/gui/generateds_gui.py index da34cc6..f080d53 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.12b' +VERSION = '2.12c' ##VERSION## diff --git a/librarytemplate-1.0a.zip b/librarytemplate-1.0a.zip index 36313a504fbc4cd9ecbd5edd471eb7dc426c432f..923b5eced18b3effd91ec92351f94936e3905014 100644 GIT binary patch delta 892 zcmcbXF+Gznz?+$civa|jQnOtq@@aGMq{|1prpX6Sbo6C^#TV}b#1kE)Ca$+<ZCK#q z(=d6Xp2%baHIB{vjCw-sR!Z(ZK)l&S_&FoHhO)a45N|dTJ;s8jSW@aRBm187E<Qj! z`LXnTHi*faJ7jtp1s#AkpP3_i_6#EfLkkN7gTiD%Vadt%a{Tq|K(~N!X$3a}Bg+eB z1_m&(G{`%Dwu8XF_v>dQR~sy`jrz23mGV;o@4z`;Z%;-|+gN_JR-uezfyV#6hn-}S zidTpnX>6VO{$$$cmEL>yxGcSRvUxgReEeF?BhLlQopKCU-3m!*5*MGp?&Sj0YfWy^ zjRHyHSuBtH7uJ`3s;X!DDJ&Imso6EMy5Mk^j+1ji<GB^4>yAD>WKr$Zzg6YVyUnZS ztC<FFJ@<KA?&cu7$M@Z$)oaCG1=~qqf1=a;k7wS6V3Fd?)!w{s3J%1tec<_c>Vcq1 zEr)(w`Vnm7t@SX1U7aB#@#*(>a>vYXGQ~O{JJ$I@++O<C!y6T*^(m5!o~Z|JItfoK zR<|`UIPavbH>LNe%fzRt0fzDl+Z|2&e3$1nyl36cQ0~9G+D+G<CtGr%!x!V}o(K0` zI##~tYuKfUj~SeKCU`yEeDv#*hXE$Xrv1F&a4z}AQX{pgizfxX5cpOdWXQ_3)=Voh z?fc^WCv@VcNk3k*&*?PRJ=XncA3ee&ZI-;7ku|@s^Xw0gOWHQk{b$rVJDrb2Dmm01 z-Cy}<e$)9Httl3dt6z8)uX&lP^w3Y7(cS)xT`1QE_dgu7?eG1&@h;E!RflEk4&#YV zce`))|NXn{^`{bksd>gfrrq^0jQh_p`GdSG`>a+MA0P%MwasA)&fF}Z<T!b*wj~QF zJx=D=6`dTQ!#4S=wiDy4$^Z4`CWq<xGJ+DL+~z|%GK`E?lke+hFauNHWJUv-$!U6C zV9A@zp!D`oS7!1`{ZO#R4}7SpZSr3OOBPTPgIf`5D92=|FnOVY<m5g>0mfOA=NsBE z^+E*VjJPK=8aXk&gmJ@}wkZOYN=!a)6u=~+Hd)a)l__5hC?YpGLrq}vHe&}SP7SbG PAgwYcCT!=lL75Ez5XEjO delta 840 zcmbQ9c`bu4z?+$civa{ShOyaB<kRMm^NI0!0mKs>eOX`f#rvF@>|h`=xnF@};(B|I z`UNgNr?+_mC51P0GMWf6T25ZbE512Y_!=X-y0W{^r0t%YjYN;JpePiUI?2es`@D;f zz%|dwkEQ3cfs8%Lv$;d2mr?LQ^f#O3`2qIbj0_C_nHd-qCJPEnPPUihuUGH$@LBN8 z)2Fn8n}Lz#1yBx5ES+TUf7n3aXnB2?bYjLP<x&Tc&PK0}CYIo*R^d4h?I+d-N-g|! zbEgHP*KEd>VQo(yRqro9Kkxkcs7H^LHGBQm?Je1HKYFv^bIo(D5eY#TucS1IyYKfa zydahBxOlB2$3`B(gFkXR{Oad@>sMO8kWtk(V#>wl*U?YZOjz7st&#fZC1cK0eg8u8 zl$P$$!1Bj_z9I2bQ*Uo`J#u$lz`?2WuU0Q!J9(eYiwjS5Uf*N!f1%mwT)sJ3+9suc z#@Pp+k2{ZhO={`=IQ3)x%j2P}w<YE<Ea;pz{i!X_)Fh_s6E<eD*nQr;kZ)UWczx|0 z&IuumGWsT*mQ|N*8!d&|A3I%*IMcCcO_Nuu{!Wfng*GL2au3pzZY@mJ;E(<LWdF9{ zd3;g1A<s5XWt?{7<k6CvoIgTQcFXSf?6bUdRqVQ@huhju>B}VNdsMXs^ez*=tYT=f zr0&Igqk!<wTfP5#{%&9H)XKi6z0YL%#MP3jhZz02_&yudo)J%I{Sm&cX3yR@oqX<F zg2t^oj60p)966{feO-LAp@J*N%vKkl?ch`)xp}&RGdBw;Els|sZ8=%lSbnmZjuYcc zU?P&6JYC0^seZxahlb*l6O7n4GwaGQ0uzveUIvr8@?=Fl@yP}{Y?GJkc_As9ETF%e zY4>@Up2@HDL&1i9;6qI~lkE&GnSm*0vcIm_<Ozl<%pc?#CL5}WPd;ZT$T)NI14A2T z9|efWJR_dTPDW15E8zSH=2At7oPcov^JP^KTV-;)u>+&t<V0i1$&1y*CVw|}U_POa OFd^2&gsoQ_lyLy=98Wd? diff --git a/librarytemplate_howto.html b/librarytemplate_howto.html index 90c6887..f6402d7 100644 --- a/librarytemplate_howto.html +++ b/librarytemplate_howto.html @@ -217,7 +217,7 @@ ul.auto-toc { <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.12b</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.12c</td> </tr> </tbody> </table> @@ -226,7 +226,7 @@ ul.auto-toc { <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">date:</th><td class="field-body">February 10, 2014</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">March 18, 2014</td> </tr> </tbody> </table> @@ -380,7 +380,7 @@ this command for your needs. For example, you may need to use <div class="footer"> <hr class="footer" /> <a class="reference external" href="librarytemplate_howto.txt">View document source</a>. -Generated on: 2014-02-10 22:19 UTC. +Generated on: 2014-03-18 20:35 UTC. Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. </div> diff --git a/librarytemplate_howto.txt b/librarytemplate_howto.txt index 121f1b1..7cacd25 100644 --- a/librarytemplate_howto.txt +++ b/librarytemplate_howto.txt @@ -8,7 +8,7 @@ How to package a generateDS.py generated library .. version -:revision: 2.12b +:revision: 2.12c .. version diff --git a/process_includes.py b/process_includes.py index 4786776..93804d7 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.12b' +VERSION = '2.12c' ##VERSION## CatalogDict = {} @@ -309,14 +309,23 @@ def prep_schema(inpath, outpath, options): def process_groups(root): - namespaces = {root.prefix: root.nsmap[root.prefix]} # Get all the xs:group definitions at top level. - pattern = './%s:group' % (root.prefix, ) - defs = root.xpath(pattern, namespaces=namespaces) + if root.prefix: + namespaces = {root.prefix: root.nsmap[root.prefix]} + pattern = './%s:group' % (root.prefix, ) + defs = root.xpath(pattern, namespaces=namespaces) + else: + pattern = './group' + defs = root.xpath(pattern) defs = [node for node in defs if node.get('name') is not None] # Get all the xs:group references (below top level). - pattern = './*//%s:group' % (root.prefix, ) - refs = root.xpath(pattern, namespaces=namespaces) + if root.prefix: + namespaces = {root.prefix: root.nsmap[root.prefix]} + pattern = './*//%s:group' % (root.prefix, ) + refs = root.xpath(pattern, namespaces=namespaces) + else: + pattern = './*//group' + refs = root.xpath(pattern) refs = [node for node in refs if node.get('ref') is not None] # Create a dictionary of the named model groups (definitions). def_dict = {} @@ -417,15 +426,16 @@ def replace_group_defs(def_dict, refs): content = content[0] parent = ref_node.getparent() for node in content: - new_node = deepcopy(node) - # Copy minOccurs and maxOccurs attributes to new node. - value = ref_node.get('minOccurs') - if value is not None: - new_node.set('minOccurs', value) - value = ref_node.get('maxOccurs') - if value is not None: - new_node.set('maxOccurs', value) - ref_node.addprevious(new_node) + if not isinstance(node, etree._Comment): + new_node = deepcopy(node) + # Copy minOccurs and maxOccurs attributes to new node. + value = ref_node.get('minOccurs') + if value is not None: + new_node.set('minOccurs', value) + value = ref_node.get('maxOccurs') + if value is not None: + new_node.set('maxOccurs', value) + ref_node.addprevious(new_node) parent.remove(ref_node) @@ -450,11 +460,12 @@ def raise_anon_complextypes(root): pattern = './*/*//%s:complexType|./*/*//%s:simpleType' % ( prefix, prefix, ) element_tag = '{%s}element' % (root.nsmap[prefix], ) + namespaces = {prefix: root.nsmap[prefix]} + defs = root.xpath(pattern, namespaces=namespaces) else: pattern = './*/*//complexType|./*/*//simpleType' element_tag = 'element' - namespaces = {prefix: root.nsmap[prefix]} - defs = root.xpath(pattern, namespaces=namespaces) + defs = root.xpath(pattern) for node in defs: parent = node.getparent() if parent.tag != element_tag: @@ -527,6 +538,10 @@ def main(): "-f", "--force", action="store_true", dest="force", default=False, help="force overwrite without asking") + parser.add_option( + "--fix-type-names", action="store", + dest="fixtypenames", default=None, + help="Fix up (replace) complex type names.") (options, args) = parser.parse_args() if len(args) == 2: inpath = args[0] @@ -544,4 +559,8 @@ def main(): if __name__ == "__main__": #import pdb; pdb.set_trace() - main() + #main() + try: + main() + except: + import pdb; pdb.post_mortem() diff --git a/setup.py b/setup.py index e914720..994ca23 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.12b", + version="2.12c", ##VERSION## author="Dave Kuhlman", author_email="dkuhlman@rexx.com", diff --git a/tests/OnePer/oneperType00_1One.py b/tests/OnePer/oneperType00_1One.py index b6e3ec6..62995b4 100644 --- a/tests/OnePer/oneperType00_1One.py +++ b/tests/OnePer/oneperType00_1One.py @@ -619,6 +619,7 @@ class oneperType00_1(GeneratedsSuper): subclass = None superclass = None def __init__(self, inner01=None, inner02=None): + self.original_tagname_ = None self.inner01 = inner01 self.inner02 = inner02 def factory(*args_, **kwargs_): @@ -644,6 +645,8 @@ class oneperType00_1(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -701,10 +704,12 @@ class oneperType00_1(GeneratedsSuper): obj_ = oneperType01_1.factory() obj_.build(child_) self.inner01 = obj_ + obj_.original_tagname_ = 'inner01' elif nodeName_ == 'inner02': obj_ = oneperType01_2.factory() obj_.build(child_) self.inner02 = obj_ + obj_.original_tagname_ = 'inner02' # end class oneperType00_1 @@ -736,7 +741,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root00' + rootTag = 'oneperType00_1' rootClass = oneperType00_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -756,7 +761,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root00' + rootTag = 'oneperType00_1' rootClass = oneperType00_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -778,9 +783,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'oneperType00_1' rootClass = oneperType00_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -789,7 +794,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="root00", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -799,7 +804,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root00' + rootTag = 'oneperType00_1' rootClass = oneperType00_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -808,7 +813,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from oneperType00_1One import *\n\n') ## sys.stdout.write('import oneperType00_1One as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/OnePer/oneperType00_2One.py b/tests/OnePer/oneperType00_2One.py index b6e3ec6..62995b4 100644 --- a/tests/OnePer/oneperType00_2One.py +++ b/tests/OnePer/oneperType00_2One.py @@ -619,6 +619,7 @@ class oneperType00_1(GeneratedsSuper): subclass = None superclass = None def __init__(self, inner01=None, inner02=None): + self.original_tagname_ = None self.inner01 = inner01 self.inner02 = inner02 def factory(*args_, **kwargs_): @@ -644,6 +645,8 @@ class oneperType00_1(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -701,10 +704,12 @@ class oneperType00_1(GeneratedsSuper): obj_ = oneperType01_1.factory() obj_.build(child_) self.inner01 = obj_ + obj_.original_tagname_ = 'inner01' elif nodeName_ == 'inner02': obj_ = oneperType01_2.factory() obj_.build(child_) self.inner02 = obj_ + obj_.original_tagname_ = 'inner02' # end class oneperType00_1 @@ -736,7 +741,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root00' + rootTag = 'oneperType00_1' rootClass = oneperType00_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -756,7 +761,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root00' + rootTag = 'oneperType00_1' rootClass = oneperType00_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -778,9 +783,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'oneperType00_1' rootClass = oneperType00_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -789,7 +794,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="root00", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -799,7 +804,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root00' + rootTag = 'oneperType00_1' rootClass = oneperType00_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -808,7 +813,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from oneperType00_1One import *\n\n') ## sys.stdout.write('import oneperType00_1One as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/OnePer/oneperType01_1One.py b/tests/OnePer/oneperType01_1One.py index 8ba5e59..1778f19 100644 --- a/tests/OnePer/oneperType01_1One.py +++ b/tests/OnePer/oneperType01_1One.py @@ -619,6 +619,7 @@ class oneperType01_1(GeneratedsSuper): subclass = None superclass = None def __init__(self, username=None, inner01=None): + self.original_tagname_ = None self.username = username self.inner01 = inner01 def factory(*args_, **kwargs_): @@ -644,6 +645,8 @@ class oneperType01_1(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -703,6 +706,7 @@ class oneperType01_1(GeneratedsSuper): obj_ = oneperType01_2.factory() obj_.build(child_) self.inner01 = obj_ + obj_.original_tagname_ = 'inner01' # end class oneperType01_1 @@ -713,6 +717,7 @@ class oneperType01_2(GeneratedsSuper): subclass = None superclass = None def __init__(self, userdescription=None): + self.original_tagname_ = None self.userdescription = userdescription def factory(*args_, **kwargs_): if oneperType01_2.subclass: @@ -734,6 +739,8 @@ class oneperType01_2(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -813,7 +820,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root01' + rootTag = 'oneperType01_1' rootClass = oneperType01_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -833,7 +840,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root01' + rootTag = 'oneperType01_1' rootClass = oneperType01_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -855,9 +862,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'oneperType01_1' rootClass = oneperType01_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -866,7 +873,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="root01", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -876,7 +883,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root01' + rootTag = 'oneperType01_1' rootClass = oneperType01_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -885,7 +892,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from oneperType01_1One import *\n\n') ## sys.stdout.write('import oneperType01_1One as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/OnePer/oneperType01_2One.py b/tests/OnePer/oneperType01_2One.py index 8ba5e59..1778f19 100644 --- a/tests/OnePer/oneperType01_2One.py +++ b/tests/OnePer/oneperType01_2One.py @@ -619,6 +619,7 @@ class oneperType01_1(GeneratedsSuper): subclass = None superclass = None def __init__(self, username=None, inner01=None): + self.original_tagname_ = None self.username = username self.inner01 = inner01 def factory(*args_, **kwargs_): @@ -644,6 +645,8 @@ class oneperType01_1(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -703,6 +706,7 @@ class oneperType01_1(GeneratedsSuper): obj_ = oneperType01_2.factory() obj_.build(child_) self.inner01 = obj_ + obj_.original_tagname_ = 'inner01' # end class oneperType01_1 @@ -713,6 +717,7 @@ class oneperType01_2(GeneratedsSuper): subclass = None superclass = None def __init__(self, userdescription=None): + self.original_tagname_ = None self.userdescription = userdescription def factory(*args_, **kwargs_): if oneperType01_2.subclass: @@ -734,6 +739,8 @@ class oneperType01_2(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -813,7 +820,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root01' + rootTag = 'oneperType01_1' rootClass = oneperType01_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -833,7 +840,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root01' + rootTag = 'oneperType01_1' rootClass = oneperType01_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -855,9 +862,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'oneperType01_1' rootClass = oneperType01_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -866,7 +873,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="root01", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -876,7 +883,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root01' + rootTag = 'oneperType01_1' rootClass = oneperType01_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -885,7 +892,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from oneperType01_1One import *\n\n') ## sys.stdout.write('import oneperType01_1One as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/OnePer/oneperType02_1One.py b/tests/OnePer/oneperType02_1One.py index cebe79b..7c16cb5 100644 --- a/tests/OnePer/oneperType02_1One.py +++ b/tests/OnePer/oneperType02_1One.py @@ -619,6 +619,7 @@ class oneperType02_1(GeneratedsSuper): subclass = None superclass = None def __init__(self, clientname=None, inner01=None): + self.original_tagname_ = None self.clientname = clientname self.inner01 = inner01 def factory(*args_, **kwargs_): @@ -644,6 +645,8 @@ class oneperType02_1(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -703,6 +706,7 @@ class oneperType02_1(GeneratedsSuper): obj_ = oneperType02_2.factory() obj_.build(child_) self.inner01 = obj_ + obj_.original_tagname_ = 'inner01' # end class oneperType02_1 @@ -713,6 +717,7 @@ class oneperType02_2(GeneratedsSuper): subclass = None superclass = None def __init__(self, clientdescription=None): + self.original_tagname_ = None self.clientdescription = clientdescription def factory(*args_, **kwargs_): if oneperType02_2.subclass: @@ -734,6 +739,8 @@ class oneperType02_2(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -813,7 +820,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root02' + rootTag = 'oneperType02_1' rootClass = oneperType02_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -833,7 +840,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root02' + rootTag = 'oneperType02_1' rootClass = oneperType02_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -855,9 +862,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'oneperType02_1' rootClass = oneperType02_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -866,7 +873,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="root02", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -876,7 +883,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root02' + rootTag = 'oneperType02_1' rootClass = oneperType02_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -885,7 +892,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from oneperType02_1One import *\n\n') ## sys.stdout.write('import oneperType02_1One as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/OnePer/oneperType02_2One.py b/tests/OnePer/oneperType02_2One.py index cebe79b..7c16cb5 100644 --- a/tests/OnePer/oneperType02_2One.py +++ b/tests/OnePer/oneperType02_2One.py @@ -619,6 +619,7 @@ class oneperType02_1(GeneratedsSuper): subclass = None superclass = None def __init__(self, clientname=None, inner01=None): + self.original_tagname_ = None self.clientname = clientname self.inner01 = inner01 def factory(*args_, **kwargs_): @@ -644,6 +645,8 @@ class oneperType02_1(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -703,6 +706,7 @@ class oneperType02_1(GeneratedsSuper): obj_ = oneperType02_2.factory() obj_.build(child_) self.inner01 = obj_ + obj_.original_tagname_ = 'inner01' # end class oneperType02_1 @@ -713,6 +717,7 @@ class oneperType02_2(GeneratedsSuper): subclass = None superclass = None def __init__(self, clientdescription=None): + self.original_tagname_ = None self.clientdescription = clientdescription def factory(*args_, **kwargs_): if oneperType02_2.subclass: @@ -734,6 +739,8 @@ class oneperType02_2(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -813,7 +820,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root02' + rootTag = 'oneperType02_1' rootClass = oneperType02_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -833,7 +840,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root02' + rootTag = 'oneperType02_1' rootClass = oneperType02_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -855,9 +862,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'oneperType02_1' rootClass = oneperType02_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -866,7 +873,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="root02", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -876,7 +883,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'root02' + rootTag = 'oneperType02_1' rootClass = oneperType02_1 rootObj = rootClass.factory() rootObj.build(rootNode) @@ -885,7 +892,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from oneperType02_1One import *\n\n') ## sys.stdout.write('import oneperType02_1One as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/OnePer/oneperType03_1One.py b/tests/OnePer/oneperType03_1One.py new file mode 100644 index 0000000..bc8778e --- /dev/null +++ b/tests/OnePer/oneperType03_1One.py @@ -0,0 +1,916 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# +# Generated by generateDS.py. +# + +import sys +import getopt +import re as re_ +import base64 +import datetime as datetime_ + +etree_ = None +Verbose_import_ = False +( + XMLParser_import_none, XMLParser_import_lxml, + XMLParser_import_elementtree +) = range(3) +XMLParser_import_library = None +try: + # lxml + from lxml import etree as etree_ + XMLParser_import_library = XMLParser_import_lxml + if Verbose_import_: + print("running with lxml.etree") +except ImportError: + try: + # cElementTree from Python 2.5+ + import xml.etree.cElementTree as etree_ + XMLParser_import_library = XMLParser_import_elementtree + if Verbose_import_: + print("running with cElementTree on Python 2.5+") + except ImportError: + try: + # ElementTree from Python 2.5+ + import xml.etree.ElementTree as etree_ + XMLParser_import_library = XMLParser_import_elementtree + if Verbose_import_: + print("running with ElementTree on Python 2.5+") + except ImportError: + try: + # normal cElementTree install + import cElementTree as etree_ + XMLParser_import_library = XMLParser_import_elementtree + if Verbose_import_: + print("running with cElementTree") + except ImportError: + try: + # normal ElementTree install + import elementtree.ElementTree as etree_ + XMLParser_import_library = XMLParser_import_elementtree + if Verbose_import_: + print("running with ElementTree") + except ImportError: + raise ImportError( + "Failed to import ElementTree from any known place") + + +def parsexml_(*args, **kwargs): + if (XMLParser_import_library == XMLParser_import_lxml and + 'parser' not in kwargs): + # Use the lxml ElementTree compatible parser so that, e.g., + # we ignore comments. + kwargs['parser'] = etree_.ETCompatXMLParser() + doc = etree_.parse(*args, **kwargs) + return doc + +# +# User methods +# +# Calls to the methods in these classes are generated by generateDS.py. +# You can replace these methods by re-implementing the following class +# in a module named generatedssuper.py. + +try: + from generatedssuper import GeneratedsSuper +except ImportError, exp: + + class GeneratedsSuper(object): + tzoff_pattern = re_.compile(r'(\+|-)((0\d|1[0-3]):[0-5]\d|14:00)$') + class _FixedOffsetTZ(datetime_.tzinfo): + def __init__(self, offset, name): + self.__offset = datetime_.timedelta(minutes=offset) + self.__name = name + def utcoffset(self, dt): + return self.__offset + def tzname(self, dt): + return self.__name + def dst(self, dt): + return None + def gds_format_string(self, input_data, input_name=''): + return input_data + def gds_validate_string(self, input_data, node, input_name=''): + if not input_data: + return '' + else: + return input_data + def gds_format_base64(self, input_data, input_name=''): + return base64.b64encode(input_data) + def gds_validate_base64(self, input_data, node, input_name=''): + return input_data + def gds_format_integer(self, input_data, input_name=''): + return '%d' % input_data + def gds_validate_integer(self, input_data, node, input_name=''): + return input_data + def gds_format_integer_list(self, input_data, input_name=''): + return '%s' % input_data + def gds_validate_integer_list(self, input_data, node, input_name=''): + values = input_data.split() + for value in values: + try: + float(value) + except (TypeError, ValueError): + raise_parse_error(node, 'Requires sequence of integers') + return input_data + def gds_format_float(self, input_data, input_name=''): + return ('%.15f' % input_data).rstrip('0') + def gds_validate_float(self, input_data, node, input_name=''): + return input_data + def gds_format_float_list(self, input_data, input_name=''): + return '%s' % input_data + def gds_validate_float_list(self, input_data, node, input_name=''): + values = input_data.split() + for value in values: + try: + float(value) + except (TypeError, ValueError): + raise_parse_error(node, 'Requires sequence of floats') + return input_data + def gds_format_double(self, input_data, input_name=''): + return '%e' % input_data + def gds_validate_double(self, input_data, node, input_name=''): + return input_data + def gds_format_double_list(self, input_data, input_name=''): + return '%s' % input_data + def gds_validate_double_list(self, input_data, node, input_name=''): + values = input_data.split() + for value in values: + try: + float(value) + except (TypeError, ValueError): + raise_parse_error(node, 'Requires sequence of doubles') + return input_data + def gds_format_boolean(self, input_data, input_name=''): + return ('%s' % input_data).lower() + def gds_validate_boolean(self, input_data, node, input_name=''): + return input_data + def gds_format_boolean_list(self, input_data, input_name=''): + return '%s' % input_data + def gds_validate_boolean_list(self, input_data, node, input_name=''): + values = input_data.split() + for value in values: + if value not in ('true', '1', 'false', '0', ): + raise_parse_error( + node, + 'Requires sequence of booleans ' + '("true", "1", "false", "0")') + return input_data + def gds_validate_datetime(self, input_data, node, input_name=''): + return input_data + def gds_format_datetime(self, input_data, input_name=''): + if input_data.microsecond == 0: + _svalue = '%04d-%02d-%02dT%02d:%02d:%02d' % ( + input_data.year, + input_data.month, + input_data.day, + input_data.hour, + input_data.minute, + input_data.second, + ) + else: + _svalue = '%04d-%02d-%02dT%02d:%02d:%02d.%s' % ( + input_data.year, + input_data.month, + input_data.day, + input_data.hour, + input_data.minute, + input_data.second, + ('%f' % (float(input_data.microsecond) / 1000000))[2:], + ) + if input_data.tzinfo is not None: + tzoff = input_data.tzinfo.utcoffset(input_data) + if tzoff is not None: + total_seconds = tzoff.seconds + (86400 * tzoff.days) + if total_seconds == 0: + _svalue += 'Z' + else: + if total_seconds < 0: + _svalue += '-' + total_seconds *= -1 + else: + _svalue += '+' + hours = total_seconds // 3600 + minutes = (total_seconds - (hours * 3600)) // 60 + _svalue += '{0:02d}:{1:02d}'.format(hours, minutes) + return _svalue + @classmethod + def gds_parse_datetime(cls, input_data): + tz = None + if input_data[-1] == 'Z': + tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC') + input_data = input_data[:-1] + else: + results = GeneratedsSuper.tzoff_pattern.search(input_data) + if results is not None: + tzoff_parts = results.group(2).split(':') + tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1]) + if results.group(1) == '-': + tzoff *= -1 + tz = GeneratedsSuper._FixedOffsetTZ( + tzoff, results.group(0)) + input_data = input_data[:-6] + if len(input_data.split('.')) > 1: + dt = datetime_.datetime.strptime( + input_data, '%Y-%m-%dT%H:%M:%S.%f') + else: + dt = datetime_.datetime.strptime( + input_data, '%Y-%m-%dT%H:%M:%S') + dt = dt.replace(tzinfo=tz) + return dt + def gds_validate_date(self, input_data, node, input_name=''): + return input_data + def gds_format_date(self, input_data, input_name=''): + _svalue = '%04d-%02d-%02d' % ( + input_data.year, + input_data.month, + input_data.day, + ) + try: + if input_data.tzinfo is not None: + tzoff = input_data.tzinfo.utcoffset(input_data) + if tzoff is not None: + total_seconds = tzoff.seconds + (86400 * tzoff.days) + if total_seconds == 0: + _svalue += 'Z' + else: + if total_seconds < 0: + _svalue += '-' + total_seconds *= -1 + else: + _svalue += '+' + hours = total_seconds // 3600 + minutes = (total_seconds - (hours * 3600)) // 60 + _svalue += '{0:02d}:{1:02d}'.format(hours, minutes) + except AttributeError: + pass + return _svalue + @classmethod + def gds_parse_date(cls, input_data): + tz = None + if input_data[-1] == 'Z': + tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC') + input_data = input_data[:-1] + else: + results = GeneratedsSuper.tzoff_pattern.search(input_data) + if results is not None: + tzoff_parts = results.group(2).split(':') + tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1]) + if results.group(1) == '-': + tzoff *= -1 + tz = GeneratedsSuper._FixedOffsetTZ( + tzoff, results.group(0)) + input_data = input_data[:-6] + dt = datetime_.datetime.strptime(input_data, '%Y-%m-%d') + dt = dt.replace(tzinfo=tz) + return dt.date() + def gds_validate_time(self, input_data, node, input_name=''): + return input_data + def gds_format_time(self, input_data, input_name=''): + if input_data.microsecond == 0: + _svalue = '%02d:%02d:%02d' % ( + input_data.hour, + input_data.minute, + input_data.second, + ) + else: + _svalue = '%02d:%02d:%02d.%s' % ( + input_data.hour, + input_data.minute, + input_data.second, + ('%f' % (float(input_data.microsecond) / 1000000))[2:], + ) + if input_data.tzinfo is not None: + tzoff = input_data.tzinfo.utcoffset(input_data) + if tzoff is not None: + total_seconds = tzoff.seconds + (86400 * tzoff.days) + if total_seconds == 0: + _svalue += 'Z' + else: + if total_seconds < 0: + _svalue += '-' + total_seconds *= -1 + else: + _svalue += '+' + hours = total_seconds // 3600 + minutes = (total_seconds - (hours * 3600)) // 60 + _svalue += '{0:02d}:{1:02d}'.format(hours, minutes) + return _svalue + @classmethod + def gds_parse_time(cls, input_data): + tz = None + if input_data[-1] == 'Z': + tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC') + input_data = input_data[:-1] + else: + results = GeneratedsSuper.tzoff_pattern.search(input_data) + if results is not None: + tzoff_parts = results.group(2).split(':') + tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1]) + if results.group(1) == '-': + tzoff *= -1 + tz = GeneratedsSuper._FixedOffsetTZ( + tzoff, results.group(0)) + input_data = input_data[:-6] + if len(input_data.split('.')) > 1: + dt = datetime_.datetime.strptime(input_data, '%H:%M:%S.%f') + else: + dt = datetime_.datetime.strptime(input_data, '%H:%M:%S') + dt = dt.replace(tzinfo=tz) + return dt.time() + def gds_str_lower(self, instring): + return instring.lower() + def get_path_(self, node): + path_list = [] + self.get_path_list_(node, path_list) + path_list.reverse() + path = '/'.join(path_list) + return path + Tag_strip_pattern_ = re_.compile(r'\{.*\}') + def get_path_list_(self, node, path_list): + if node is None: + return + tag = GeneratedsSuper.Tag_strip_pattern_.sub('', node.tag) + if tag: + path_list.append(tag) + self.get_path_list_(node.getparent(), path_list) + def get_class_obj_(self, node, default_class=None): + class_obj1 = default_class + if 'xsi' in node.nsmap: + classname = node.get('{%s}type' % node.nsmap['xsi']) + if classname is not None: + names = classname.split(':') + if len(names) == 2: + classname = names[1] + class_obj2 = globals().get(classname) + if class_obj2 is not None: + class_obj1 = class_obj2 + return class_obj1 + def gds_build_any(self, node, type_name=None): + return None + @classmethod + def gds_reverse_node_mapping(cls, mapping): + return dict(((v, k) for k, v in mapping.iteritems())) + + +# +# If you have installed IPython you can uncomment and use the following. +# IPython is available from http://ipython.scipy.org/. +# + +## from IPython.Shell import IPShellEmbed +## args = '' +## ipshell = IPShellEmbed(args, +## banner = 'Dropping into IPython', +## exit_msg = 'Leaving Interpreter, back to program.') + +# Then use the following line where and when you want to drop into the +# IPython shell: +# ipshell('<some message> -- Entering ipshell.\nHit Ctrl-D to exit') + +# +# Globals +# + +ExternalEncoding = 'ascii' +Tag_pattern_ = re_.compile(r'({.*})?(.*)') +String_cleanup_pat_ = re_.compile(r"[\n\r\s]+") +Namespace_extract_pat_ = re_.compile(r'{(.*)}(.*)') + +# +# Support/utility functions. +# + + +def showIndent(outfile, level, pretty_print=True): + if pretty_print: + for idx in range(level): + outfile.write(' ') + + +def quote_xml(inStr): + if not inStr: + return '' + s1 = (isinstance(inStr, basestring) and inStr or + '%s' % inStr) + s1 = s1.replace('&', '&') + s1 = s1.replace('<', '<') + s1 = s1.replace('>', '>') + return s1 + + +def quote_attrib(inStr): + s1 = (isinstance(inStr, basestring) and inStr or + '%s' % inStr) + s1 = s1.replace('&', '&') + s1 = s1.replace('<', '<') + s1 = s1.replace('>', '>') + if '"' in s1: + if "'" in s1: + s1 = '"%s"' % s1.replace('"', """) + else: + s1 = "'%s'" % s1 + else: + s1 = '"%s"' % s1 + return s1 + + +def quote_python(inStr): + s1 = inStr + if s1.find("'") == -1: + if s1.find('\n') == -1: + return "'%s'" % s1 + else: + return "'''%s'''" % s1 + else: + if s1.find('"') != -1: + s1 = s1.replace('"', '\\"') + if s1.find('\n') == -1: + return '"%s"' % s1 + else: + return '"""%s"""' % s1 + + +def get_all_text_(node): + if node.text is not None: + text = node.text + else: + text = '' + for child in node: + if child.tail is not None: + text += child.tail + return text + + +def find_attr_value_(attr_name, node): + attrs = node.attrib + attr_parts = attr_name.split(':') + value = None + if len(attr_parts) == 1: + value = attrs.get(attr_name) + elif len(attr_parts) == 2: + prefix, name = attr_parts + namespace = node.nsmap.get(prefix) + if namespace is not None: + value = attrs.get('{%s}%s' % (namespace, name, )) + return value + + +class GDSParseError(Exception): + pass + + +def raise_parse_error(node, msg): + if XMLParser_import_library == XMLParser_import_lxml: + msg = '%s (element %s/line %d)' % ( + msg, node.tag, node.sourceline, ) + else: + msg = '%s (element %s)' % (msg, node.tag, ) + raise GDSParseError(msg) + + +class MixedContainer: + # Constants for category: + CategoryNone = 0 + CategoryText = 1 + CategorySimple = 2 + CategoryComplex = 3 + # Constants for content_type: + TypeNone = 0 + TypeText = 1 + TypeString = 2 + TypeInteger = 3 + TypeFloat = 4 + TypeDecimal = 5 + TypeDouble = 6 + TypeBoolean = 7 + TypeBase64 = 8 + def __init__(self, category, content_type, name, value): + self.category = category + self.content_type = content_type + self.name = name + self.value = value + def getCategory(self): + return self.category + def getContenttype(self, content_type): + return self.content_type + def getValue(self): + return self.value + def getName(self): + return self.name + def export(self, outfile, level, name, namespace, pretty_print=True): + if self.category == MixedContainer.CategoryText: + # Prevent exporting empty content as empty lines. + if self.value.strip(): + outfile.write(self.value) + elif self.category == MixedContainer.CategorySimple: + self.exportSimple(outfile, level, name) + else: # category == MixedContainer.CategoryComplex + self.value.export(outfile, level, namespace, name, pretty_print) + def exportSimple(self, outfile, level, name): + if self.content_type == MixedContainer.TypeString: + outfile.write('<%s>%s</%s>' % ( + self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeInteger or \ + self.content_type == MixedContainer.TypeBoolean: + outfile.write('<%s>%d</%s>' % ( + self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeFloat or \ + self.content_type == MixedContainer.TypeDecimal: + outfile.write('<%s>%f</%s>' % ( + self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeDouble: + outfile.write('<%s>%g</%s>' % ( + self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeBase64: + outfile.write('<%s>%s</%s>' % ( + self.name, base64.b64encode(self.value), self.name)) + def to_etree(self, element): + if self.category == MixedContainer.CategoryText: + # Prevent exporting empty content as empty lines. + if self.value.strip(): + if len(element) > 0: + if element[-1].tail is None: + element[-1].tail = self.value + else: + element[-1].tail += self.value + else: + if element.text is None: + element.text = self.value + else: + element.text += self.value + elif self.category == MixedContainer.CategorySimple: + subelement = etree_.SubElement(element, '%s' % self.name) + subelement.text = self.to_etree_simple() + else: # category == MixedContainer.CategoryComplex + self.value.to_etree(element) + def to_etree_simple(self): + if self.content_type == MixedContainer.TypeString: + text = self.value + elif (self.content_type == MixedContainer.TypeInteger or + self.content_type == MixedContainer.TypeBoolean): + text = '%d' % self.value + elif (self.content_type == MixedContainer.TypeFloat or + self.content_type == MixedContainer.TypeDecimal): + text = '%f' % self.value + elif self.content_type == MixedContainer.TypeDouble: + text = '%g' % self.value + elif self.content_type == MixedContainer.TypeBase64: + text = '%s' % base64.b64encode(self.value) + return text + def exportLiteral(self, outfile, level, name): + if self.category == MixedContainer.CategoryText: + showIndent(outfile, level) + outfile.write( + 'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % ( + self.category, self.content_type, self.name, self.value)) + elif self.category == MixedContainer.CategorySimple: + showIndent(outfile, level) + outfile.write( + 'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % ( + self.category, self.content_type, self.name, self.value)) + else: # category == MixedContainer.CategoryComplex + showIndent(outfile, level) + outfile.write( + 'model_.MixedContainer(%d, %d, "%s",\n' % ( + self.category, self.content_type, self.name,)) + self.value.exportLiteral(outfile, level + 1) + showIndent(outfile, level) + outfile.write(')\n') + + +class MemberSpec_(object): + def __init__(self, name='', data_type='', container=0): + self.name = name + self.data_type = data_type + self.container = container + def set_name(self, name): self.name = name + def get_name(self): return self.name + def set_data_type(self, data_type): self.data_type = data_type + def get_data_type_chain(self): return self.data_type + def get_data_type(self): + if isinstance(self.data_type, list): + if len(self.data_type) > 0: + return self.data_type[-1] + else: + return 'xs:string' + else: + return self.data_type + def set_container(self, container): self.container = container + def get_container(self): return self.container + + +def _cast(typ, value): + if typ is None or value is None: + return value + return typ(value) + +# +# Data representation classes. +# + + +class oneperType03_1(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('helpername', 'xs:string', 0), + MemberSpec_('inner01', 'oneperType02_2', 0), + ] + subclass = None + superclass = None + def __init__(self, helpername=None, inner01=None): + self.original_tagname_ = None + self.helpername = helpername + self.inner01 = inner01 + def factory(*args_, **kwargs_): + if oneperType03_1.subclass: + return oneperType03_1.subclass(*args_, **kwargs_) + else: + return oneperType03_1(*args_, **kwargs_) + factory = staticmethod(factory) + def get_helpername(self): return self.helpername + def set_helpername(self, helpername): self.helpername = helpername + def get_inner01(self): return self.inner01 + def set_inner01(self, inner01): self.inner01 = inner01 + def hasContent_(self): + if ( + self.helpername is not None or + self.inner01 is not None + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='oneperType03_1', namespacedef_='', pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ + showIndent(outfile, level, pretty_print) + outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) + already_processed = set() + self.exportAttributes(outfile, level, already_processed, namespace_, name_='oneperType03_1') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='oneperType03_1', pretty_print=pretty_print) + showIndent(outfile, level, pretty_print) + outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) + else: + outfile.write('/>%s' % (eol_, )) + def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='oneperType03_1'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='oneperType03_1', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.helpername is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%shelpername>%s</%shelpername>%s' % (namespace_, self.gds_format_string(quote_xml(self.helpername).encode(ExternalEncoding), input_name='helpername'), namespace_, eol_)) + if self.inner01 is not None: + self.inner01.export(outfile, level, namespace_, name_='inner01', pretty_print=pretty_print) + def exportLiteral(self, outfile, level, name_='oneperType03_1'): + level += 1 + 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_): + pass + def exportLiteralChildren(self, outfile, level, name_): + if self.helpername is not None: + showIndent(outfile, level) + outfile.write('helpername=%s,\n' % quote_python(self.helpername).encode(ExternalEncoding)) + if self.inner01 is not None: + showIndent(outfile, level) + outfile.write('inner01=model_.oneperType02_2(\n') + self.inner01.exportLiteral(outfile, level, name_='inner01') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node): + 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_) + return self + def buildAttributes(self, node, attrs, already_processed): + pass + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + if nodeName_ == 'helpername': + helpername_ = child_.text + helpername_ = self.gds_validate_string(helpername_, node, 'helpername') + self.helpername = helpername_ + elif nodeName_ == 'inner01': + obj_ = oneperType02_2.factory() + obj_.build(child_) + self.inner01 = obj_ + obj_.original_tagname_ = 'inner01' +# end class oneperType03_1 + + +class oneperType03_2(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('helperdescription', 'xs:string', 0), + ] + subclass = None + superclass = None + def __init__(self, helperdescription=None): + self.original_tagname_ = None + self.helperdescription = helperdescription + def factory(*args_, **kwargs_): + if oneperType03_2.subclass: + return oneperType03_2.subclass(*args_, **kwargs_) + else: + return oneperType03_2(*args_, **kwargs_) + factory = staticmethod(factory) + def get_helperdescription(self): return self.helperdescription + def set_helperdescription(self, helperdescription): self.helperdescription = helperdescription + def hasContent_(self): + if ( + self.helperdescription is not None + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='oneperType03_2', namespacedef_='', pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ + showIndent(outfile, level, pretty_print) + outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) + already_processed = set() + self.exportAttributes(outfile, level, already_processed, namespace_, name_='oneperType03_2') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='oneperType03_2', pretty_print=pretty_print) + showIndent(outfile, level, pretty_print) + outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) + else: + outfile.write('/>%s' % (eol_, )) + def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='oneperType03_2'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='oneperType03_2', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.helperdescription is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%shelperdescription>%s</%shelperdescription>%s' % (namespace_, self.gds_format_string(quote_xml(self.helperdescription).encode(ExternalEncoding), input_name='helperdescription'), namespace_, eol_)) + def exportLiteral(self, outfile, level, name_='oneperType03_2'): + level += 1 + 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_): + pass + def exportLiteralChildren(self, outfile, level, name_): + if self.helperdescription is not None: + showIndent(outfile, level) + outfile.write('helperdescription=%s,\n' % quote_python(self.helperdescription).encode(ExternalEncoding)) + def build(self, node): + 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_) + return self + def buildAttributes(self, node, attrs, already_processed): + pass + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + if nodeName_ == 'helperdescription': + helperdescription_ = child_.text + helperdescription_ = self.gds_validate_string(helperdescription_, node, 'helperdescription') + self.helperdescription = helperdescription_ +# end class oneperType03_2 + + +GDSClassesMapping = { + 'root03': oneperType03_1, +} + + +USAGE_TEXT = """ +Usage: python <Parser>.py [ -s ] <in_xml_file> +""" + + +def usage(): + print USAGE_TEXT + sys.exit(1) + + +def get_root_tag(node): + tag = Tag_pattern_.match(node.tag).groups()[-1] + rootClass = GDSClassesMapping.get(tag) + if rootClass is None: + rootClass = globals().get(tag) + return tag, rootClass + + +def parse(inFileName, silence=False): + doc = parsexml_(inFileName) + rootNode = doc.getroot() + rootTag, rootClass = get_root_tag(rootNode) + if rootClass is None: + rootTag = 'oneperType03_1' + rootClass = oneperType03_1 + rootObj = rootClass.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None +## if not silence: +## sys.stdout.write('<?xml version="1.0" ?>\n') +## rootObj.export( +## sys.stdout, 0, name_=rootTag, +## namespacedef_='', +## pretty_print=True) + return rootObj + + +def parseEtree(inFileName, silence=False): + doc = parsexml_(inFileName) + rootNode = doc.getroot() + rootTag, rootClass = get_root_tag(rootNode) + if rootClass is None: + rootTag = 'oneperType03_1' + rootClass = oneperType03_1 + rootObj = rootClass.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None + mapping = {} + rootElement = rootObj.to_etree(None, name_=rootTag, mapping_=mapping) + reverse_mapping = rootObj.gds_reverse_node_mapping(mapping) +## if not silence: +## content = etree_.tostring( +## rootElement, pretty_print=True, +## xml_declaration=True, encoding="utf-8") +## sys.stdout.write(content) +## sys.stdout.write('\n') + return rootObj, rootElement, mapping, reverse_mapping + + +def parseString(inString, silence=False): + from StringIO import StringIO + doc = parsexml_(StringIO(inString)) + rootNode = doc.getroot() + rootTag, rootClass = get_root_tag(rootNode) + if rootClass is None: + rootTag = 'oneperType03_1' + rootClass = oneperType03_1 + rootObj = rootClass.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None +## if not silence: +## sys.stdout.write('<?xml version="1.0" ?>\n') +## rootObj.export( +## sys.stdout, 0, name_=rootTag, +## namespacedef_='') + return rootObj + + +def parseLiteral(inFileName, silence=False): + doc = parsexml_(inFileName) + rootNode = doc.getroot() + rootTag, rootClass = get_root_tag(rootNode) + if rootClass is None: + rootTag = 'oneperType03_1' + rootClass = oneperType03_1 + rootObj = rootClass.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None +## if not silence: +## sys.stdout.write('#from oneperType03_1One import *\n\n') +## sys.stdout.write('import oneperType03_1One as model_\n\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) +## sys.stdout.write(')\n') + return rootObj + + +def main(): + args = sys.argv[1:] + if len(args) == 1: + parse(args[0]) + else: + usage() + + +if __name__ == '__main__': + #import pdb; pdb.set_trace() + main() + + +__all__ = [ + "oneperType03_1", + "oneperType03_2" +] diff --git a/tests/OnePer/oneperType03_2One.py b/tests/OnePer/oneperType03_2One.py new file mode 100644 index 0000000..bc8778e --- /dev/null +++ b/tests/OnePer/oneperType03_2One.py @@ -0,0 +1,916 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# +# Generated by generateDS.py. +# + +import sys +import getopt +import re as re_ +import base64 +import datetime as datetime_ + +etree_ = None +Verbose_import_ = False +( + XMLParser_import_none, XMLParser_import_lxml, + XMLParser_import_elementtree +) = range(3) +XMLParser_import_library = None +try: + # lxml + from lxml import etree as etree_ + XMLParser_import_library = XMLParser_import_lxml + if Verbose_import_: + print("running with lxml.etree") +except ImportError: + try: + # cElementTree from Python 2.5+ + import xml.etree.cElementTree as etree_ + XMLParser_import_library = XMLParser_import_elementtree + if Verbose_import_: + print("running with cElementTree on Python 2.5+") + except ImportError: + try: + # ElementTree from Python 2.5+ + import xml.etree.ElementTree as etree_ + XMLParser_import_library = XMLParser_import_elementtree + if Verbose_import_: + print("running with ElementTree on Python 2.5+") + except ImportError: + try: + # normal cElementTree install + import cElementTree as etree_ + XMLParser_import_library = XMLParser_import_elementtree + if Verbose_import_: + print("running with cElementTree") + except ImportError: + try: + # normal ElementTree install + import elementtree.ElementTree as etree_ + XMLParser_import_library = XMLParser_import_elementtree + if Verbose_import_: + print("running with ElementTree") + except ImportError: + raise ImportError( + "Failed to import ElementTree from any known place") + + +def parsexml_(*args, **kwargs): + if (XMLParser_import_library == XMLParser_import_lxml and + 'parser' not in kwargs): + # Use the lxml ElementTree compatible parser so that, e.g., + # we ignore comments. + kwargs['parser'] = etree_.ETCompatXMLParser() + doc = etree_.parse(*args, **kwargs) + return doc + +# +# User methods +# +# Calls to the methods in these classes are generated by generateDS.py. +# You can replace these methods by re-implementing the following class +# in a module named generatedssuper.py. + +try: + from generatedssuper import GeneratedsSuper +except ImportError, exp: + + class GeneratedsSuper(object): + tzoff_pattern = re_.compile(r'(\+|-)((0\d|1[0-3]):[0-5]\d|14:00)$') + class _FixedOffsetTZ(datetime_.tzinfo): + def __init__(self, offset, name): + self.__offset = datetime_.timedelta(minutes=offset) + self.__name = name + def utcoffset(self, dt): + return self.__offset + def tzname(self, dt): + return self.__name + def dst(self, dt): + return None + def gds_format_string(self, input_data, input_name=''): + return input_data + def gds_validate_string(self, input_data, node, input_name=''): + if not input_data: + return '' + else: + return input_data + def gds_format_base64(self, input_data, input_name=''): + return base64.b64encode(input_data) + def gds_validate_base64(self, input_data, node, input_name=''): + return input_data + def gds_format_integer(self, input_data, input_name=''): + return '%d' % input_data + def gds_validate_integer(self, input_data, node, input_name=''): + return input_data + def gds_format_integer_list(self, input_data, input_name=''): + return '%s' % input_data + def gds_validate_integer_list(self, input_data, node, input_name=''): + values = input_data.split() + for value in values: + try: + float(value) + except (TypeError, ValueError): + raise_parse_error(node, 'Requires sequence of integers') + return input_data + def gds_format_float(self, input_data, input_name=''): + return ('%.15f' % input_data).rstrip('0') + def gds_validate_float(self, input_data, node, input_name=''): + return input_data + def gds_format_float_list(self, input_data, input_name=''): + return '%s' % input_data + def gds_validate_float_list(self, input_data, node, input_name=''): + values = input_data.split() + for value in values: + try: + float(value) + except (TypeError, ValueError): + raise_parse_error(node, 'Requires sequence of floats') + return input_data + def gds_format_double(self, input_data, input_name=''): + return '%e' % input_data + def gds_validate_double(self, input_data, node, input_name=''): + return input_data + def gds_format_double_list(self, input_data, input_name=''): + return '%s' % input_data + def gds_validate_double_list(self, input_data, node, input_name=''): + values = input_data.split() + for value in values: + try: + float(value) + except (TypeError, ValueError): + raise_parse_error(node, 'Requires sequence of doubles') + return input_data + def gds_format_boolean(self, input_data, input_name=''): + return ('%s' % input_data).lower() + def gds_validate_boolean(self, input_data, node, input_name=''): + return input_data + def gds_format_boolean_list(self, input_data, input_name=''): + return '%s' % input_data + def gds_validate_boolean_list(self, input_data, node, input_name=''): + values = input_data.split() + for value in values: + if value not in ('true', '1', 'false', '0', ): + raise_parse_error( + node, + 'Requires sequence of booleans ' + '("true", "1", "false", "0")') + return input_data + def gds_validate_datetime(self, input_data, node, input_name=''): + return input_data + def gds_format_datetime(self, input_data, input_name=''): + if input_data.microsecond == 0: + _svalue = '%04d-%02d-%02dT%02d:%02d:%02d' % ( + input_data.year, + input_data.month, + input_data.day, + input_data.hour, + input_data.minute, + input_data.second, + ) + else: + _svalue = '%04d-%02d-%02dT%02d:%02d:%02d.%s' % ( + input_data.year, + input_data.month, + input_data.day, + input_data.hour, + input_data.minute, + input_data.second, + ('%f' % (float(input_data.microsecond) / 1000000))[2:], + ) + if input_data.tzinfo is not None: + tzoff = input_data.tzinfo.utcoffset(input_data) + if tzoff is not None: + total_seconds = tzoff.seconds + (86400 * tzoff.days) + if total_seconds == 0: + _svalue += 'Z' + else: + if total_seconds < 0: + _svalue += '-' + total_seconds *= -1 + else: + _svalue += '+' + hours = total_seconds // 3600 + minutes = (total_seconds - (hours * 3600)) // 60 + _svalue += '{0:02d}:{1:02d}'.format(hours, minutes) + return _svalue + @classmethod + def gds_parse_datetime(cls, input_data): + tz = None + if input_data[-1] == 'Z': + tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC') + input_data = input_data[:-1] + else: + results = GeneratedsSuper.tzoff_pattern.search(input_data) + if results is not None: + tzoff_parts = results.group(2).split(':') + tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1]) + if results.group(1) == '-': + tzoff *= -1 + tz = GeneratedsSuper._FixedOffsetTZ( + tzoff, results.group(0)) + input_data = input_data[:-6] + if len(input_data.split('.')) > 1: + dt = datetime_.datetime.strptime( + input_data, '%Y-%m-%dT%H:%M:%S.%f') + else: + dt = datetime_.datetime.strptime( + input_data, '%Y-%m-%dT%H:%M:%S') + dt = dt.replace(tzinfo=tz) + return dt + def gds_validate_date(self, input_data, node, input_name=''): + return input_data + def gds_format_date(self, input_data, input_name=''): + _svalue = '%04d-%02d-%02d' % ( + input_data.year, + input_data.month, + input_data.day, + ) + try: + if input_data.tzinfo is not None: + tzoff = input_data.tzinfo.utcoffset(input_data) + if tzoff is not None: + total_seconds = tzoff.seconds + (86400 * tzoff.days) + if total_seconds == 0: + _svalue += 'Z' + else: + if total_seconds < 0: + _svalue += '-' + total_seconds *= -1 + else: + _svalue += '+' + hours = total_seconds // 3600 + minutes = (total_seconds - (hours * 3600)) // 60 + _svalue += '{0:02d}:{1:02d}'.format(hours, minutes) + except AttributeError: + pass + return _svalue + @classmethod + def gds_parse_date(cls, input_data): + tz = None + if input_data[-1] == 'Z': + tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC') + input_data = input_data[:-1] + else: + results = GeneratedsSuper.tzoff_pattern.search(input_data) + if results is not None: + tzoff_parts = results.group(2).split(':') + tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1]) + if results.group(1) == '-': + tzoff *= -1 + tz = GeneratedsSuper._FixedOffsetTZ( + tzoff, results.group(0)) + input_data = input_data[:-6] + dt = datetime_.datetime.strptime(input_data, '%Y-%m-%d') + dt = dt.replace(tzinfo=tz) + return dt.date() + def gds_validate_time(self, input_data, node, input_name=''): + return input_data + def gds_format_time(self, input_data, input_name=''): + if input_data.microsecond == 0: + _svalue = '%02d:%02d:%02d' % ( + input_data.hour, + input_data.minute, + input_data.second, + ) + else: + _svalue = '%02d:%02d:%02d.%s' % ( + input_data.hour, + input_data.minute, + input_data.second, + ('%f' % (float(input_data.microsecond) / 1000000))[2:], + ) + if input_data.tzinfo is not None: + tzoff = input_data.tzinfo.utcoffset(input_data) + if tzoff is not None: + total_seconds = tzoff.seconds + (86400 * tzoff.days) + if total_seconds == 0: + _svalue += 'Z' + else: + if total_seconds < 0: + _svalue += '-' + total_seconds *= -1 + else: + _svalue += '+' + hours = total_seconds // 3600 + minutes = (total_seconds - (hours * 3600)) // 60 + _svalue += '{0:02d}:{1:02d}'.format(hours, minutes) + return _svalue + @classmethod + def gds_parse_time(cls, input_data): + tz = None + if input_data[-1] == 'Z': + tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC') + input_data = input_data[:-1] + else: + results = GeneratedsSuper.tzoff_pattern.search(input_data) + if results is not None: + tzoff_parts = results.group(2).split(':') + tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1]) + if results.group(1) == '-': + tzoff *= -1 + tz = GeneratedsSuper._FixedOffsetTZ( + tzoff, results.group(0)) + input_data = input_data[:-6] + if len(input_data.split('.')) > 1: + dt = datetime_.datetime.strptime(input_data, '%H:%M:%S.%f') + else: + dt = datetime_.datetime.strptime(input_data, '%H:%M:%S') + dt = dt.replace(tzinfo=tz) + return dt.time() + def gds_str_lower(self, instring): + return instring.lower() + def get_path_(self, node): + path_list = [] + self.get_path_list_(node, path_list) + path_list.reverse() + path = '/'.join(path_list) + return path + Tag_strip_pattern_ = re_.compile(r'\{.*\}') + def get_path_list_(self, node, path_list): + if node is None: + return + tag = GeneratedsSuper.Tag_strip_pattern_.sub('', node.tag) + if tag: + path_list.append(tag) + self.get_path_list_(node.getparent(), path_list) + def get_class_obj_(self, node, default_class=None): + class_obj1 = default_class + if 'xsi' in node.nsmap: + classname = node.get('{%s}type' % node.nsmap['xsi']) + if classname is not None: + names = classname.split(':') + if len(names) == 2: + classname = names[1] + class_obj2 = globals().get(classname) + if class_obj2 is not None: + class_obj1 = class_obj2 + return class_obj1 + def gds_build_any(self, node, type_name=None): + return None + @classmethod + def gds_reverse_node_mapping(cls, mapping): + return dict(((v, k) for k, v in mapping.iteritems())) + + +# +# If you have installed IPython you can uncomment and use the following. +# IPython is available from http://ipython.scipy.org/. +# + +## from IPython.Shell import IPShellEmbed +## args = '' +## ipshell = IPShellEmbed(args, +## banner = 'Dropping into IPython', +## exit_msg = 'Leaving Interpreter, back to program.') + +# Then use the following line where and when you want to drop into the +# IPython shell: +# ipshell('<some message> -- Entering ipshell.\nHit Ctrl-D to exit') + +# +# Globals +# + +ExternalEncoding = 'ascii' +Tag_pattern_ = re_.compile(r'({.*})?(.*)') +String_cleanup_pat_ = re_.compile(r"[\n\r\s]+") +Namespace_extract_pat_ = re_.compile(r'{(.*)}(.*)') + +# +# Support/utility functions. +# + + +def showIndent(outfile, level, pretty_print=True): + if pretty_print: + for idx in range(level): + outfile.write(' ') + + +def quote_xml(inStr): + if not inStr: + return '' + s1 = (isinstance(inStr, basestring) and inStr or + '%s' % inStr) + s1 = s1.replace('&', '&') + s1 = s1.replace('<', '<') + s1 = s1.replace('>', '>') + return s1 + + +def quote_attrib(inStr): + s1 = (isinstance(inStr, basestring) and inStr or + '%s' % inStr) + s1 = s1.replace('&', '&') + s1 = s1.replace('<', '<') + s1 = s1.replace('>', '>') + if '"' in s1: + if "'" in s1: + s1 = '"%s"' % s1.replace('"', """) + else: + s1 = "'%s'" % s1 + else: + s1 = '"%s"' % s1 + return s1 + + +def quote_python(inStr): + s1 = inStr + if s1.find("'") == -1: + if s1.find('\n') == -1: + return "'%s'" % s1 + else: + return "'''%s'''" % s1 + else: + if s1.find('"') != -1: + s1 = s1.replace('"', '\\"') + if s1.find('\n') == -1: + return '"%s"' % s1 + else: + return '"""%s"""' % s1 + + +def get_all_text_(node): + if node.text is not None: + text = node.text + else: + text = '' + for child in node: + if child.tail is not None: + text += child.tail + return text + + +def find_attr_value_(attr_name, node): + attrs = node.attrib + attr_parts = attr_name.split(':') + value = None + if len(attr_parts) == 1: + value = attrs.get(attr_name) + elif len(attr_parts) == 2: + prefix, name = attr_parts + namespace = node.nsmap.get(prefix) + if namespace is not None: + value = attrs.get('{%s}%s' % (namespace, name, )) + return value + + +class GDSParseError(Exception): + pass + + +def raise_parse_error(node, msg): + if XMLParser_import_library == XMLParser_import_lxml: + msg = '%s (element %s/line %d)' % ( + msg, node.tag, node.sourceline, ) + else: + msg = '%s (element %s)' % (msg, node.tag, ) + raise GDSParseError(msg) + + +class MixedContainer: + # Constants for category: + CategoryNone = 0 + CategoryText = 1 + CategorySimple = 2 + CategoryComplex = 3 + # Constants for content_type: + TypeNone = 0 + TypeText = 1 + TypeString = 2 + TypeInteger = 3 + TypeFloat = 4 + TypeDecimal = 5 + TypeDouble = 6 + TypeBoolean = 7 + TypeBase64 = 8 + def __init__(self, category, content_type, name, value): + self.category = category + self.content_type = content_type + self.name = name + self.value = value + def getCategory(self): + return self.category + def getContenttype(self, content_type): + return self.content_type + def getValue(self): + return self.value + def getName(self): + return self.name + def export(self, outfile, level, name, namespace, pretty_print=True): + if self.category == MixedContainer.CategoryText: + # Prevent exporting empty content as empty lines. + if self.value.strip(): + outfile.write(self.value) + elif self.category == MixedContainer.CategorySimple: + self.exportSimple(outfile, level, name) + else: # category == MixedContainer.CategoryComplex + self.value.export(outfile, level, namespace, name, pretty_print) + def exportSimple(self, outfile, level, name): + if self.content_type == MixedContainer.TypeString: + outfile.write('<%s>%s</%s>' % ( + self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeInteger or \ + self.content_type == MixedContainer.TypeBoolean: + outfile.write('<%s>%d</%s>' % ( + self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeFloat or \ + self.content_type == MixedContainer.TypeDecimal: + outfile.write('<%s>%f</%s>' % ( + self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeDouble: + outfile.write('<%s>%g</%s>' % ( + self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeBase64: + outfile.write('<%s>%s</%s>' % ( + self.name, base64.b64encode(self.value), self.name)) + def to_etree(self, element): + if self.category == MixedContainer.CategoryText: + # Prevent exporting empty content as empty lines. + if self.value.strip(): + if len(element) > 0: + if element[-1].tail is None: + element[-1].tail = self.value + else: + element[-1].tail += self.value + else: + if element.text is None: + element.text = self.value + else: + element.text += self.value + elif self.category == MixedContainer.CategorySimple: + subelement = etree_.SubElement(element, '%s' % self.name) + subelement.text = self.to_etree_simple() + else: # category == MixedContainer.CategoryComplex + self.value.to_etree(element) + def to_etree_simple(self): + if self.content_type == MixedContainer.TypeString: + text = self.value + elif (self.content_type == MixedContainer.TypeInteger or + self.content_type == MixedContainer.TypeBoolean): + text = '%d' % self.value + elif (self.content_type == MixedContainer.TypeFloat or + self.content_type == MixedContainer.TypeDecimal): + text = '%f' % self.value + elif self.content_type == MixedContainer.TypeDouble: + text = '%g' % self.value + elif self.content_type == MixedContainer.TypeBase64: + text = '%s' % base64.b64encode(self.value) + return text + def exportLiteral(self, outfile, level, name): + if self.category == MixedContainer.CategoryText: + showIndent(outfile, level) + outfile.write( + 'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % ( + self.category, self.content_type, self.name, self.value)) + elif self.category == MixedContainer.CategorySimple: + showIndent(outfile, level) + outfile.write( + 'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % ( + self.category, self.content_type, self.name, self.value)) + else: # category == MixedContainer.CategoryComplex + showIndent(outfile, level) + outfile.write( + 'model_.MixedContainer(%d, %d, "%s",\n' % ( + self.category, self.content_type, self.name,)) + self.value.exportLiteral(outfile, level + 1) + showIndent(outfile, level) + outfile.write(')\n') + + +class MemberSpec_(object): + def __init__(self, name='', data_type='', container=0): + self.name = name + self.data_type = data_type + self.container = container + def set_name(self, name): self.name = name + def get_name(self): return self.name + def set_data_type(self, data_type): self.data_type = data_type + def get_data_type_chain(self): return self.data_type + def get_data_type(self): + if isinstance(self.data_type, list): + if len(self.data_type) > 0: + return self.data_type[-1] + else: + return 'xs:string' + else: + return self.data_type + def set_container(self, container): self.container = container + def get_container(self): return self.container + + +def _cast(typ, value): + if typ is None or value is None: + return value + return typ(value) + +# +# Data representation classes. +# + + +class oneperType03_1(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('helpername', 'xs:string', 0), + MemberSpec_('inner01', 'oneperType02_2', 0), + ] + subclass = None + superclass = None + def __init__(self, helpername=None, inner01=None): + self.original_tagname_ = None + self.helpername = helpername + self.inner01 = inner01 + def factory(*args_, **kwargs_): + if oneperType03_1.subclass: + return oneperType03_1.subclass(*args_, **kwargs_) + else: + return oneperType03_1(*args_, **kwargs_) + factory = staticmethod(factory) + def get_helpername(self): return self.helpername + def set_helpername(self, helpername): self.helpername = helpername + def get_inner01(self): return self.inner01 + def set_inner01(self, inner01): self.inner01 = inner01 + def hasContent_(self): + if ( + self.helpername is not None or + self.inner01 is not None + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='oneperType03_1', namespacedef_='', pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ + showIndent(outfile, level, pretty_print) + outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) + already_processed = set() + self.exportAttributes(outfile, level, already_processed, namespace_, name_='oneperType03_1') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='oneperType03_1', pretty_print=pretty_print) + showIndent(outfile, level, pretty_print) + outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) + else: + outfile.write('/>%s' % (eol_, )) + def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='oneperType03_1'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='oneperType03_1', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.helpername is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%shelpername>%s</%shelpername>%s' % (namespace_, self.gds_format_string(quote_xml(self.helpername).encode(ExternalEncoding), input_name='helpername'), namespace_, eol_)) + if self.inner01 is not None: + self.inner01.export(outfile, level, namespace_, name_='inner01', pretty_print=pretty_print) + def exportLiteral(self, outfile, level, name_='oneperType03_1'): + level += 1 + 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_): + pass + def exportLiteralChildren(self, outfile, level, name_): + if self.helpername is not None: + showIndent(outfile, level) + outfile.write('helpername=%s,\n' % quote_python(self.helpername).encode(ExternalEncoding)) + if self.inner01 is not None: + showIndent(outfile, level) + outfile.write('inner01=model_.oneperType02_2(\n') + self.inner01.exportLiteral(outfile, level, name_='inner01') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node): + 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_) + return self + def buildAttributes(self, node, attrs, already_processed): + pass + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + if nodeName_ == 'helpername': + helpername_ = child_.text + helpername_ = self.gds_validate_string(helpername_, node, 'helpername') + self.helpername = helpername_ + elif nodeName_ == 'inner01': + obj_ = oneperType02_2.factory() + obj_.build(child_) + self.inner01 = obj_ + obj_.original_tagname_ = 'inner01' +# end class oneperType03_1 + + +class oneperType03_2(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('helperdescription', 'xs:string', 0), + ] + subclass = None + superclass = None + def __init__(self, helperdescription=None): + self.original_tagname_ = None + self.helperdescription = helperdescription + def factory(*args_, **kwargs_): + if oneperType03_2.subclass: + return oneperType03_2.subclass(*args_, **kwargs_) + else: + return oneperType03_2(*args_, **kwargs_) + factory = staticmethod(factory) + def get_helperdescription(self): return self.helperdescription + def set_helperdescription(self, helperdescription): self.helperdescription = helperdescription + def hasContent_(self): + if ( + self.helperdescription is not None + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='oneperType03_2', namespacedef_='', pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ + showIndent(outfile, level, pretty_print) + outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) + already_processed = set() + self.exportAttributes(outfile, level, already_processed, namespace_, name_='oneperType03_2') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='oneperType03_2', pretty_print=pretty_print) + showIndent(outfile, level, pretty_print) + outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) + else: + outfile.write('/>%s' % (eol_, )) + def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='oneperType03_2'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='oneperType03_2', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.helperdescription is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%shelperdescription>%s</%shelperdescription>%s' % (namespace_, self.gds_format_string(quote_xml(self.helperdescription).encode(ExternalEncoding), input_name='helperdescription'), namespace_, eol_)) + def exportLiteral(self, outfile, level, name_='oneperType03_2'): + level += 1 + 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_): + pass + def exportLiteralChildren(self, outfile, level, name_): + if self.helperdescription is not None: + showIndent(outfile, level) + outfile.write('helperdescription=%s,\n' % quote_python(self.helperdescription).encode(ExternalEncoding)) + def build(self, node): + 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_) + return self + def buildAttributes(self, node, attrs, already_processed): + pass + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + if nodeName_ == 'helperdescription': + helperdescription_ = child_.text + helperdescription_ = self.gds_validate_string(helperdescription_, node, 'helperdescription') + self.helperdescription = helperdescription_ +# end class oneperType03_2 + + +GDSClassesMapping = { + 'root03': oneperType03_1, +} + + +USAGE_TEXT = """ +Usage: python <Parser>.py [ -s ] <in_xml_file> +""" + + +def usage(): + print USAGE_TEXT + sys.exit(1) + + +def get_root_tag(node): + tag = Tag_pattern_.match(node.tag).groups()[-1] + rootClass = GDSClassesMapping.get(tag) + if rootClass is None: + rootClass = globals().get(tag) + return tag, rootClass + + +def parse(inFileName, silence=False): + doc = parsexml_(inFileName) + rootNode = doc.getroot() + rootTag, rootClass = get_root_tag(rootNode) + if rootClass is None: + rootTag = 'oneperType03_1' + rootClass = oneperType03_1 + rootObj = rootClass.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None +## if not silence: +## sys.stdout.write('<?xml version="1.0" ?>\n') +## rootObj.export( +## sys.stdout, 0, name_=rootTag, +## namespacedef_='', +## pretty_print=True) + return rootObj + + +def parseEtree(inFileName, silence=False): + doc = parsexml_(inFileName) + rootNode = doc.getroot() + rootTag, rootClass = get_root_tag(rootNode) + if rootClass is None: + rootTag = 'oneperType03_1' + rootClass = oneperType03_1 + rootObj = rootClass.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None + mapping = {} + rootElement = rootObj.to_etree(None, name_=rootTag, mapping_=mapping) + reverse_mapping = rootObj.gds_reverse_node_mapping(mapping) +## if not silence: +## content = etree_.tostring( +## rootElement, pretty_print=True, +## xml_declaration=True, encoding="utf-8") +## sys.stdout.write(content) +## sys.stdout.write('\n') + return rootObj, rootElement, mapping, reverse_mapping + + +def parseString(inString, silence=False): + from StringIO import StringIO + doc = parsexml_(StringIO(inString)) + rootNode = doc.getroot() + rootTag, rootClass = get_root_tag(rootNode) + if rootClass is None: + rootTag = 'oneperType03_1' + rootClass = oneperType03_1 + rootObj = rootClass.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None +## if not silence: +## sys.stdout.write('<?xml version="1.0" ?>\n') +## rootObj.export( +## sys.stdout, 0, name_=rootTag, +## namespacedef_='') + return rootObj + + +def parseLiteral(inFileName, silence=False): + doc = parsexml_(inFileName) + rootNode = doc.getroot() + rootTag, rootClass = get_root_tag(rootNode) + if rootClass is None: + rootTag = 'oneperType03_1' + rootClass = oneperType03_1 + rootObj = rootClass.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None +## if not silence: +## sys.stdout.write('#from oneperType03_1One import *\n\n') +## sys.stdout.write('import oneperType03_1One as model_\n\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) +## sys.stdout.write(')\n') + return rootObj + + +def main(): + args = sys.argv[1:] + if len(args) == 1: + parse(args[0]) + else: + usage() + + +if __name__ == '__main__': + #import pdb; pdb.set_trace() + main() + + +__all__ = [ + "oneperType03_1", + "oneperType03_2" +] diff --git a/tests/abstract_type1_sub.py b/tests/abstract_type1_sub.py index c8c5af4..296f07a 100644 --- a/tests/abstract_type1_sub.py +++ b/tests/abstract_type1_sub.py @@ -116,7 +116,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'carrier' + rootTag = 'carrierType' rootClass = supermod.carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -136,7 +136,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'carrier' + rootTag = 'carrierType' rootClass = supermod.carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -160,7 +160,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'carrier' + rootTag = 'carrierType' rootClass = supermod.carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -177,9 +177,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'carrierType' rootClass = supermod.carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -188,8 +188,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from abstract_type2_sup import *\n\n') ## sys.stdout.write('import abstract_type2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.carrier(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="carrier") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/abstract_type1_sup.py b/tests/abstract_type1_sup.py index fda613f..0ef7f20 100644 --- a/tests/abstract_type1_sup.py +++ b/tests/abstract_type1_sup.py @@ -618,6 +618,7 @@ class carrierType(GeneratedsSuper): subclass = None superclass = None def __init__(self, fleet=None): + self.original_tagname_ = None if fleet is None: self.fleet = [] else: @@ -644,6 +645,8 @@ class carrierType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -713,6 +716,7 @@ class carrierType(GeneratedsSuper): raise NotImplementedError( 'Class not implemented for <fleet> element') self.fleet.append(obj_) + obj_.original_tagname_ = 'fleet' # end class carrierType @@ -722,6 +726,7 @@ class Vehicle(GeneratedsSuper): subclass = None superclass = None def __init__(self, extensiontype_=None): + self.original_tagname_ = None self.extensiontype_ = extensiontype_ def factory(*args_, **kwargs_): if Vehicle.subclass: @@ -743,6 +748,8 @@ class Vehicle(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -794,8 +801,8 @@ class Car(Vehicle): subclass = None superclass = Vehicle def __init__(self): + self.original_tagname_ = None super(Car, self).__init__() - pass def factory(*args_, **kwargs_): if Car.subclass: return Car.subclass(*args_, **kwargs_) @@ -814,6 +821,8 @@ class Car(Vehicle): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -861,8 +870,8 @@ class Plane(Vehicle): subclass = None superclass = Vehicle def __init__(self): + self.original_tagname_ = None super(Plane, self).__init__() - pass def factory(*args_, **kwargs_): if Plane.subclass: return Plane.subclass(*args_, **kwargs_) @@ -881,6 +890,8 @@ class Plane(Vehicle): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -951,7 +962,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'carrier' + rootTag = 'carrierType' rootClass = carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -971,7 +982,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'carrier' + rootTag = 'carrierType' rootClass = carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -993,9 +1004,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'carrierType' rootClass = carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1004,7 +1015,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="carrier", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='xmlns:target="http://cars.example.com/schema"') return rootObj @@ -1014,7 +1025,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'carrier' + rootTag = 'carrierType' rootClass = carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1023,7 +1034,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from abstract_type2_sup import *\n\n') ## sys.stdout.write('import abstract_type2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/abstract_type2_sub.py b/tests/abstract_type2_sub.py index c8c5af4..296f07a 100644 --- a/tests/abstract_type2_sub.py +++ b/tests/abstract_type2_sub.py @@ -116,7 +116,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'carrier' + rootTag = 'carrierType' rootClass = supermod.carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -136,7 +136,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'carrier' + rootTag = 'carrierType' rootClass = supermod.carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -160,7 +160,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'carrier' + rootTag = 'carrierType' rootClass = supermod.carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -177,9 +177,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'carrierType' rootClass = supermod.carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -188,8 +188,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from abstract_type2_sup import *\n\n') ## sys.stdout.write('import abstract_type2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.carrier(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="carrier") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/abstract_type2_sup.py b/tests/abstract_type2_sup.py index fda613f..0ef7f20 100644 --- a/tests/abstract_type2_sup.py +++ b/tests/abstract_type2_sup.py @@ -618,6 +618,7 @@ class carrierType(GeneratedsSuper): subclass = None superclass = None def __init__(self, fleet=None): + self.original_tagname_ = None if fleet is None: self.fleet = [] else: @@ -644,6 +645,8 @@ class carrierType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -713,6 +716,7 @@ class carrierType(GeneratedsSuper): raise NotImplementedError( 'Class not implemented for <fleet> element') self.fleet.append(obj_) + obj_.original_tagname_ = 'fleet' # end class carrierType @@ -722,6 +726,7 @@ class Vehicle(GeneratedsSuper): subclass = None superclass = None def __init__(self, extensiontype_=None): + self.original_tagname_ = None self.extensiontype_ = extensiontype_ def factory(*args_, **kwargs_): if Vehicle.subclass: @@ -743,6 +748,8 @@ class Vehicle(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -794,8 +801,8 @@ class Car(Vehicle): subclass = None superclass = Vehicle def __init__(self): + self.original_tagname_ = None super(Car, self).__init__() - pass def factory(*args_, **kwargs_): if Car.subclass: return Car.subclass(*args_, **kwargs_) @@ -814,6 +821,8 @@ class Car(Vehicle): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -861,8 +870,8 @@ class Plane(Vehicle): subclass = None superclass = Vehicle def __init__(self): + self.original_tagname_ = None super(Plane, self).__init__() - pass def factory(*args_, **kwargs_): if Plane.subclass: return Plane.subclass(*args_, **kwargs_) @@ -881,6 +890,8 @@ class Plane(Vehicle): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -951,7 +962,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'carrier' + rootTag = 'carrierType' rootClass = carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -971,7 +982,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'carrier' + rootTag = 'carrierType' rootClass = carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -993,9 +1004,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'carrierType' rootClass = carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1004,7 +1015,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="carrier", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='xmlns:target="http://cars.example.com/schema"') return rootObj @@ -1014,7 +1025,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'carrier' + rootTag = 'carrierType' rootClass = carrierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1023,7 +1034,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from abstract_type2_sup import *\n\n') ## sys.stdout.write('import abstract_type2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/annotations1_sub.py b/tests/annotations1_sub.py index 63d361b..4e78079 100644 --- a/tests/annotations1_sub.py +++ b/tests/annotations1_sub.py @@ -109,7 +109,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'document1' + rootTag = 'document1Type' rootClass = supermod.document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -129,7 +129,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'document1' + rootTag = 'document1Type' rootClass = supermod.document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -153,7 +153,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'document1' + rootTag = 'document1Type' rootClass = supermod.document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -170,9 +170,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'document1Type' rootClass = supermod.document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -181,8 +181,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from annotations2_sup import *\n\n') ## sys.stdout.write('import annotations2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.document1(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="document1") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/annotations1_sup.py b/tests/annotations1_sup.py index 8cb90a9..9dc54cf 100644 --- a/tests/annotations1_sup.py +++ b/tests/annotations1_sup.py @@ -622,6 +622,7 @@ class document1Type(GeneratedsSuper): subclass = None superclass = None def __init__(self, comments=None, otherdoc=None): + self.original_tagname_ = None self.comments = comments self.otherdoc = otherdoc def factory(*args_, **kwargs_): @@ -647,6 +648,8 @@ class document1Type(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -706,6 +709,7 @@ class document1Type(GeneratedsSuper): obj_ = document2Type.factory() obj_.build(child_) self.otherdoc = obj_ + obj_.original_tagname_ = 'otherdoc' # end class document1Type @@ -721,6 +725,7 @@ class document2Type(GeneratedsSuper): subclass = None superclass = None def __init__(self, comments=None, rating=None, anotherdoc=None): + self.original_tagname_ = None self.comments = comments self.rating = rating self.anotherdoc = anotherdoc @@ -750,6 +755,8 @@ class document2Type(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -823,6 +830,7 @@ class document2Type(GeneratedsSuper): obj_ = document3Type.factory() obj_.build(child_) self.anotherdoc = obj_ + obj_.original_tagname_ = 'anotherdoc' # end class document2Type @@ -835,6 +843,7 @@ class document3Type(GeneratedsSuper): subclass = None superclass = None def __init__(self, comments=None, rating=None): + self.original_tagname_ = None self.comments = comments self.rating = rating def factory(*args_, **kwargs_): @@ -860,6 +869,8 @@ class document3Type(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -954,7 +965,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'document1' + rootTag = 'document1Type' rootClass = document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -974,7 +985,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'document1' + rootTag = 'document1Type' rootClass = document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -996,9 +1007,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'document1Type' rootClass = document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1007,7 +1018,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="document1", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -1017,7 +1028,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'document1' + rootTag = 'document1Type' rootClass = document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1026,7 +1037,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from annotations2_sup import *\n\n') ## sys.stdout.write('import annotations2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/annotations2_sub.py b/tests/annotations2_sub.py index 63d361b..4e78079 100644 --- a/tests/annotations2_sub.py +++ b/tests/annotations2_sub.py @@ -109,7 +109,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'document1' + rootTag = 'document1Type' rootClass = supermod.document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -129,7 +129,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'document1' + rootTag = 'document1Type' rootClass = supermod.document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -153,7 +153,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'document1' + rootTag = 'document1Type' rootClass = supermod.document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -170,9 +170,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'document1Type' rootClass = supermod.document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -181,8 +181,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from annotations2_sup import *\n\n') ## sys.stdout.write('import annotations2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.document1(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="document1") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/annotations2_sup.py b/tests/annotations2_sup.py index 8cb90a9..9dc54cf 100644 --- a/tests/annotations2_sup.py +++ b/tests/annotations2_sup.py @@ -622,6 +622,7 @@ class document1Type(GeneratedsSuper): subclass = None superclass = None def __init__(self, comments=None, otherdoc=None): + self.original_tagname_ = None self.comments = comments self.otherdoc = otherdoc def factory(*args_, **kwargs_): @@ -647,6 +648,8 @@ class document1Type(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -706,6 +709,7 @@ class document1Type(GeneratedsSuper): obj_ = document2Type.factory() obj_.build(child_) self.otherdoc = obj_ + obj_.original_tagname_ = 'otherdoc' # end class document1Type @@ -721,6 +725,7 @@ class document2Type(GeneratedsSuper): subclass = None superclass = None def __init__(self, comments=None, rating=None, anotherdoc=None): + self.original_tagname_ = None self.comments = comments self.rating = rating self.anotherdoc = anotherdoc @@ -750,6 +755,8 @@ class document2Type(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -823,6 +830,7 @@ class document2Type(GeneratedsSuper): obj_ = document3Type.factory() obj_.build(child_) self.anotherdoc = obj_ + obj_.original_tagname_ = 'anotherdoc' # end class document2Type @@ -835,6 +843,7 @@ class document3Type(GeneratedsSuper): subclass = None superclass = None def __init__(self, comments=None, rating=None): + self.original_tagname_ = None self.comments = comments self.rating = rating def factory(*args_, **kwargs_): @@ -860,6 +869,8 @@ class document3Type(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -954,7 +965,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'document1' + rootTag = 'document1Type' rootClass = document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -974,7 +985,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'document1' + rootTag = 'document1Type' rootClass = document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -996,9 +1007,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'document1Type' rootClass = document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1007,7 +1018,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="document1", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -1017,7 +1028,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'document1' + rootTag = 'document1Type' rootClass = document1Type rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1026,7 +1037,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from annotations2_sup import *\n\n') ## sys.stdout.write('import annotations2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/anonymous_type1_sub.py b/tests/anonymous_type1_sub.py index f608777..6e42385 100644 --- a/tests/anonymous_type1_sub.py +++ b/tests/anonymous_type1_sub.py @@ -177,9 +177,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'FooList' rootClass = supermod.FooList rootObj = rootClass.factory() rootObj.build(rootNode) @@ -188,8 +188,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from anonymous_type2_sup import *\n\n') ## sys.stdout.write('import anonymous_type2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.FooList(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="FooList") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/anonymous_type1_sup.py b/tests/anonymous_type1_sup.py index 075399b..e387d1d 100644 --- a/tests/anonymous_type1_sup.py +++ b/tests/anonymous_type1_sup.py @@ -620,6 +620,7 @@ class FooList(GeneratedsSuper): subclass = None superclass = None def __init__(self, Foo=None, Bar=None, Baz=None): + self.original_tagname_ = None self.Foo = Foo self.Bar = Bar self.Baz = Baz @@ -649,6 +650,8 @@ class FooList(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -714,14 +717,17 @@ class FooList(GeneratedsSuper): obj_ = FooType1.factory() obj_.build(child_) self.Foo = obj_ + obj_.original_tagname_ = 'Foo' elif nodeName_ == 'Bar': obj_ = BarType2.factory() obj_.build(child_) self.Bar = obj_ + obj_.original_tagname_ = 'Bar' elif nodeName_ == 'Baz': obj_ = BazType3.factory() obj_.build(child_) self.Baz = obj_ + obj_.original_tagname_ = 'Baz' # end class FooList @@ -732,6 +738,7 @@ class FooType1(GeneratedsSuper): subclass = None superclass = None def __init__(self, FooType=None): + self.original_tagname_ = None self.FooType = FooType def factory(*args_, **kwargs_): if FooType1.subclass: @@ -756,6 +763,8 @@ class FooType1(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -814,6 +823,7 @@ class BarType2(GeneratedsSuper): subclass = None superclass = None def __init__(self, BarType=None): + self.original_tagname_ = None self.BarType = BarType def factory(*args_, **kwargs_): if BarType2.subclass: @@ -838,6 +848,8 @@ class BarType2(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -896,6 +908,7 @@ class BazType3(GeneratedsSuper): subclass = None superclass = None def __init__(self, BazType=None): + self.original_tagname_ = None self.BazType = BazType def factory(*args_, **kwargs_): if BazType3.subclass: @@ -920,6 +933,8 @@ class BazType3(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1043,9 +1058,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'FooList' rootClass = FooList rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1054,7 +1069,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="FooList", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -1073,7 +1088,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from anonymous_type2_sup import *\n\n') ## sys.stdout.write('import anonymous_type2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/anonymous_type2_sub.py b/tests/anonymous_type2_sub.py index f608777..6e42385 100644 --- a/tests/anonymous_type2_sub.py +++ b/tests/anonymous_type2_sub.py @@ -177,9 +177,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'FooList' rootClass = supermod.FooList rootObj = rootClass.factory() rootObj.build(rootNode) @@ -188,8 +188,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from anonymous_type2_sup import *\n\n') ## sys.stdout.write('import anonymous_type2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.FooList(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="FooList") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/anonymous_type2_sup.py b/tests/anonymous_type2_sup.py index 075399b..e387d1d 100644 --- a/tests/anonymous_type2_sup.py +++ b/tests/anonymous_type2_sup.py @@ -620,6 +620,7 @@ class FooList(GeneratedsSuper): subclass = None superclass = None def __init__(self, Foo=None, Bar=None, Baz=None): + self.original_tagname_ = None self.Foo = Foo self.Bar = Bar self.Baz = Baz @@ -649,6 +650,8 @@ class FooList(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -714,14 +717,17 @@ class FooList(GeneratedsSuper): obj_ = FooType1.factory() obj_.build(child_) self.Foo = obj_ + obj_.original_tagname_ = 'Foo' elif nodeName_ == 'Bar': obj_ = BarType2.factory() obj_.build(child_) self.Bar = obj_ + obj_.original_tagname_ = 'Bar' elif nodeName_ == 'Baz': obj_ = BazType3.factory() obj_.build(child_) self.Baz = obj_ + obj_.original_tagname_ = 'Baz' # end class FooList @@ -732,6 +738,7 @@ class FooType1(GeneratedsSuper): subclass = None superclass = None def __init__(self, FooType=None): + self.original_tagname_ = None self.FooType = FooType def factory(*args_, **kwargs_): if FooType1.subclass: @@ -756,6 +763,8 @@ class FooType1(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -814,6 +823,7 @@ class BarType2(GeneratedsSuper): subclass = None superclass = None def __init__(self, BarType=None): + self.original_tagname_ = None self.BarType = BarType def factory(*args_, **kwargs_): if BarType2.subclass: @@ -838,6 +848,8 @@ class BarType2(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -896,6 +908,7 @@ class BazType3(GeneratedsSuper): subclass = None superclass = None def __init__(self, BazType=None): + self.original_tagname_ = None self.BazType = BazType def factory(*args_, **kwargs_): if BazType3.subclass: @@ -920,6 +933,8 @@ class BazType3(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1043,9 +1058,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'FooList' rootClass = FooList rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1054,7 +1069,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="FooList", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -1073,7 +1088,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from anonymous_type2_sup import *\n\n') ## sys.stdout.write('import anonymous_type2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/anysimpletype1_sub.py b/tests/anysimpletype1_sub.py index e79e857..77a78a8 100644 --- a/tests/anysimpletype1_sub.py +++ b/tests/anysimpletype1_sub.py @@ -163,9 +163,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'test1element' rootClass = supermod.test1element rootObj = rootClass.factory() rootObj.build(rootNode) @@ -174,8 +174,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from anysimpletype2_sup import *\n\n') ## sys.stdout.write('import anysimpletype2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.test1element(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="test1element") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/anysimpletype1_sup.py b/tests/anysimpletype1_sup.py index acb7ba3..e00caa9 100644 --- a/tests/anysimpletype1_sup.py +++ b/tests/anysimpletype1_sup.py @@ -619,6 +619,7 @@ class test1element(GeneratedsSuper): subclass = None superclass = None def __init__(self, test1attribute=None, test1member=None): + self.original_tagname_ = None self.test1attribute = _cast(None, test1attribute) self.test1member = test1member def factory(*args_, **kwargs_): @@ -643,6 +644,8 @@ class test1element(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -700,6 +703,7 @@ class test1element(GeneratedsSuper): obj_ = cimAnySimpleType.factory() obj_.build(child_) self.test1member = obj_ + obj_.original_tagname_ = 'test1member' # end class test1element @@ -710,6 +714,7 @@ class cimAnySimpleType(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): + self.original_tagname_ = None self.valueOf_ = valueOf_ self.anyAttributes_ = {} def factory(*args_, **kwargs_): @@ -734,6 +739,8 @@ class cimAnySimpleType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -882,9 +889,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'test1element' rootClass = test1element rootObj = rootClass.factory() rootObj.build(rootNode) @@ -893,7 +900,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="test1element", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -912,7 +919,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from anysimpletype2_sup import *\n\n') ## sys.stdout.write('import anysimpletype2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/anysimpletype2_sub.py b/tests/anysimpletype2_sub.py index e79e857..77a78a8 100644 --- a/tests/anysimpletype2_sub.py +++ b/tests/anysimpletype2_sub.py @@ -163,9 +163,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'test1element' rootClass = supermod.test1element rootObj = rootClass.factory() rootObj.build(rootNode) @@ -174,8 +174,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from anysimpletype2_sup import *\n\n') ## sys.stdout.write('import anysimpletype2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.test1element(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="test1element") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/anysimpletype2_sup.py b/tests/anysimpletype2_sup.py index acb7ba3..e00caa9 100644 --- a/tests/anysimpletype2_sup.py +++ b/tests/anysimpletype2_sup.py @@ -619,6 +619,7 @@ class test1element(GeneratedsSuper): subclass = None superclass = None def __init__(self, test1attribute=None, test1member=None): + self.original_tagname_ = None self.test1attribute = _cast(None, test1attribute) self.test1member = test1member def factory(*args_, **kwargs_): @@ -643,6 +644,8 @@ class test1element(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -700,6 +703,7 @@ class test1element(GeneratedsSuper): obj_ = cimAnySimpleType.factory() obj_.build(child_) self.test1member = obj_ + obj_.original_tagname_ = 'test1member' # end class test1element @@ -710,6 +714,7 @@ class cimAnySimpleType(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): + self.original_tagname_ = None self.valueOf_ = valueOf_ self.anyAttributes_ = {} def factory(*args_, **kwargs_): @@ -734,6 +739,8 @@ class cimAnySimpleType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -882,9 +889,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'test1element' rootClass = test1element rootObj = rootClass.factory() rootObj.build(rootNode) @@ -893,7 +900,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="test1element", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -912,7 +919,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from anysimpletype2_sup import *\n\n') ## sys.stdout.write('import anysimpletype2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/anywildcard1_sub.py b/tests/anywildcard1_sub.py index cc4939c..bc32d27 100644 --- a/tests/anywildcard1_sub.py +++ b/tests/anywildcard1_sub.py @@ -191,9 +191,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'PlantType_single' rootClass = supermod.PlantType_single rootObj = rootClass.factory() rootObj.build(rootNode) @@ -202,8 +202,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from anywildcard2_sup import *\n\n') ## sys.stdout.write('import anywildcard2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.PlantType_single(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="PlantType_single") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/anywildcard1_sup.py b/tests/anywildcard1_sup.py index b7314e1..029710e 100644 --- a/tests/anywildcard1_sup.py +++ b/tests/anywildcard1_sup.py @@ -620,6 +620,7 @@ class PlantType_single(GeneratedsSuper): subclass = None superclass = None def __init__(self, name=None, anytypeobjs_=None, description=None): + self.original_tagname_ = None self.name = name self.anytypeobjs_ = anytypeobjs_ self.description = description @@ -649,6 +650,8 @@ class PlantType_single(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -716,6 +719,7 @@ class PlantType_single(GeneratedsSuper): obj_ = DescriptionType.factory() obj_.build(child_) self.description = obj_ + obj_.original_tagname_ = 'description' else: obj_ = self.gds_build_any(child_, 'PlantType_single') if obj_ is not None: @@ -732,6 +736,7 @@ class PlantType_multiple(GeneratedsSuper): subclass = None superclass = None def __init__(self, name=None, anytypeobjs_=None, description=None): + self.original_tagname_ = None self.name = name if anytypeobjs_ is None: self.anytypeobjs_ = [] @@ -766,6 +771,8 @@ class PlantType_multiple(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -835,6 +842,7 @@ class PlantType_multiple(GeneratedsSuper): obj_ = DescriptionType.factory() obj_.build(child_) self.description = obj_ + obj_.original_tagname_ = 'description' else: obj_ = self.gds_build_any(child_, 'PlantType_multiple') if obj_ is not None: @@ -851,6 +859,7 @@ class DescriptionType(GeneratedsSuper): subclass = None superclass = None def __init__(self, name=None, size=None): + self.original_tagname_ = None self.name = name self.size = size def factory(*args_, **kwargs_): @@ -876,6 +885,8 @@ class DescriptionType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -945,6 +956,7 @@ class CatalogType(GeneratedsSuper): subclass = None superclass = None def __init__(self, name=None, catagory=None): + self.original_tagname_ = None self.name = name self.catagory = catagory def factory(*args_, **kwargs_): @@ -970,6 +982,8 @@ class CatalogType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1041,6 +1055,7 @@ class PlantType_single_nochild(GeneratedsSuper): subclass = None superclass = None def __init__(self, anytypeobjs_=None): + self.original_tagname_ = None self.anytypeobjs_ = anytypeobjs_ def factory(*args_, **kwargs_): if PlantType_single_nochild.subclass: @@ -1062,6 +1077,8 @@ class PlantType_single_nochild(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1120,6 +1137,7 @@ class PlantType_multiple_nochild(GeneratedsSuper): subclass = None superclass = None def __init__(self, anytypeobjs_=None): + self.original_tagname_ = None if anytypeobjs_ is None: self.anytypeobjs_ = [] else: @@ -1146,6 +1164,8 @@ class PlantType_multiple_nochild(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1269,9 +1289,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'PlantType_single' rootClass = PlantType_single rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1280,7 +1300,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="PlantType_single", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -1299,7 +1319,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from anywildcard2_sup import *\n\n') ## sys.stdout.write('import anywildcard2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/anywildcard2_sub.py b/tests/anywildcard2_sub.py index cc4939c..bc32d27 100644 --- a/tests/anywildcard2_sub.py +++ b/tests/anywildcard2_sub.py @@ -191,9 +191,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'PlantType_single' rootClass = supermod.PlantType_single rootObj = rootClass.factory() rootObj.build(rootNode) @@ -202,8 +202,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from anywildcard2_sup import *\n\n') ## sys.stdout.write('import anywildcard2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.PlantType_single(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="PlantType_single") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/anywildcard2_sup.py b/tests/anywildcard2_sup.py index b7314e1..029710e 100644 --- a/tests/anywildcard2_sup.py +++ b/tests/anywildcard2_sup.py @@ -620,6 +620,7 @@ class PlantType_single(GeneratedsSuper): subclass = None superclass = None def __init__(self, name=None, anytypeobjs_=None, description=None): + self.original_tagname_ = None self.name = name self.anytypeobjs_ = anytypeobjs_ self.description = description @@ -649,6 +650,8 @@ class PlantType_single(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -716,6 +719,7 @@ class PlantType_single(GeneratedsSuper): obj_ = DescriptionType.factory() obj_.build(child_) self.description = obj_ + obj_.original_tagname_ = 'description' else: obj_ = self.gds_build_any(child_, 'PlantType_single') if obj_ is not None: @@ -732,6 +736,7 @@ class PlantType_multiple(GeneratedsSuper): subclass = None superclass = None def __init__(self, name=None, anytypeobjs_=None, description=None): + self.original_tagname_ = None self.name = name if anytypeobjs_ is None: self.anytypeobjs_ = [] @@ -766,6 +771,8 @@ class PlantType_multiple(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -835,6 +842,7 @@ class PlantType_multiple(GeneratedsSuper): obj_ = DescriptionType.factory() obj_.build(child_) self.description = obj_ + obj_.original_tagname_ = 'description' else: obj_ = self.gds_build_any(child_, 'PlantType_multiple') if obj_ is not None: @@ -851,6 +859,7 @@ class DescriptionType(GeneratedsSuper): subclass = None superclass = None def __init__(self, name=None, size=None): + self.original_tagname_ = None self.name = name self.size = size def factory(*args_, **kwargs_): @@ -876,6 +885,8 @@ class DescriptionType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -945,6 +956,7 @@ class CatalogType(GeneratedsSuper): subclass = None superclass = None def __init__(self, name=None, catagory=None): + self.original_tagname_ = None self.name = name self.catagory = catagory def factory(*args_, **kwargs_): @@ -970,6 +982,8 @@ class CatalogType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1041,6 +1055,7 @@ class PlantType_single_nochild(GeneratedsSuper): subclass = None superclass = None def __init__(self, anytypeobjs_=None): + self.original_tagname_ = None self.anytypeobjs_ = anytypeobjs_ def factory(*args_, **kwargs_): if PlantType_single_nochild.subclass: @@ -1062,6 +1077,8 @@ class PlantType_single_nochild(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1120,6 +1137,7 @@ class PlantType_multiple_nochild(GeneratedsSuper): subclass = None superclass = None def __init__(self, anytypeobjs_=None): + self.original_tagname_ = None if anytypeobjs_ is None: self.anytypeobjs_ = [] else: @@ -1146,6 +1164,8 @@ class PlantType_multiple_nochild(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1269,9 +1289,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'PlantType_single' rootClass = PlantType_single rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1280,7 +1300,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="PlantType_single", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -1299,7 +1319,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from anywildcard2_sup import *\n\n') ## sys.stdout.write('import anywildcard2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/attr_groups1_sub.py b/tests/attr_groups1_sub.py index bc8d0a6..f2af2d9 100644 --- a/tests/attr_groups1_sub.py +++ b/tests/attr_groups1_sub.py @@ -95,7 +95,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'getUser' + rootTag = 'GetUserReq' rootClass = supermod.GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -115,7 +115,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'getUser' + rootTag = 'GetUserReq' rootClass = supermod.GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -139,7 +139,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'getUser' + rootTag = 'GetUserReq' rootClass = supermod.GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -156,9 +156,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'GetUserReq' rootClass = supermod.GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -167,8 +167,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from attr_groups2_sup import *\n\n') ## sys.stdout.write('import attr_groups2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.getUser(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="getUser") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/attr_groups1_sup.py b/tests/attr_groups1_sup.py index 6ee8428..4b82c99 100644 --- a/tests/attr_groups1_sup.py +++ b/tests/attr_groups1_sup.py @@ -626,6 +626,7 @@ class GetUserReq(GeneratedsSuper): subclass = None superclass = None def __init__(self, value04=None, value05=None, value06=None, value07=None, value01=None, value02=None, value03=None, sequence=None, returnedTags=None): + self.original_tagname_ = None self.value04 = _cast(int, value04) self.value05 = _cast(None, value05) self.value06 = _cast(int, value06) @@ -671,6 +672,8 @@ class GetUserReq(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -849,7 +852,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'getUser' + rootTag = 'GetUserReq' rootClass = GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -869,7 +872,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'getUser' + rootTag = 'GetUserReq' rootClass = GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -891,9 +894,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'GetUserReq' rootClass = GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -902,7 +905,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="getUser", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -912,7 +915,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'getUser' + rootTag = 'GetUserReq' rootClass = GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -921,7 +924,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from attr_groups2_sup import *\n\n') ## sys.stdout.write('import attr_groups2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/attr_groups2_sub.py b/tests/attr_groups2_sub.py index bc8d0a6..f2af2d9 100644 --- a/tests/attr_groups2_sub.py +++ b/tests/attr_groups2_sub.py @@ -95,7 +95,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'getUser' + rootTag = 'GetUserReq' rootClass = supermod.GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -115,7 +115,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'getUser' + rootTag = 'GetUserReq' rootClass = supermod.GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -139,7 +139,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'getUser' + rootTag = 'GetUserReq' rootClass = supermod.GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -156,9 +156,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'GetUserReq' rootClass = supermod.GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -167,8 +167,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from attr_groups2_sup import *\n\n') ## sys.stdout.write('import attr_groups2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.getUser(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="getUser") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/attr_groups2_sup.py b/tests/attr_groups2_sup.py index 6ee8428..4b82c99 100644 --- a/tests/attr_groups2_sup.py +++ b/tests/attr_groups2_sup.py @@ -626,6 +626,7 @@ class GetUserReq(GeneratedsSuper): subclass = None superclass = None def __init__(self, value04=None, value05=None, value06=None, value07=None, value01=None, value02=None, value03=None, sequence=None, returnedTags=None): + self.original_tagname_ = None self.value04 = _cast(int, value04) self.value05 = _cast(None, value05) self.value06 = _cast(int, value06) @@ -671,6 +672,8 @@ class GetUserReq(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -849,7 +852,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'getUser' + rootTag = 'GetUserReq' rootClass = GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -869,7 +872,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'getUser' + rootTag = 'GetUserReq' rootClass = GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -891,9 +894,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'GetUserReq' rootClass = GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -902,7 +905,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="getUser", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -912,7 +915,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'getUser' + rootTag = 'GetUserReq' rootClass = GetUserReq rootObj = rootClass.factory() rootObj.build(rootNode) @@ -921,7 +924,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from attr_groups2_sup import *\n\n') ## sys.stdout.write('import attr_groups2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/catalogtest.xsd b/tests/catalogtest.xsd new file mode 100644 index 0000000..adb07af --- /dev/null +++ b/tests/catalogtest.xsd @@ -0,0 +1,6 @@ +<?xml version="1.0"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> + + <xs:include namespace="http://www.generateds.com/catalog-part1"/> + +</xs:schema> diff --git a/tests/catalogtest1_sub.py b/tests/catalogtest1_sub.py index 0b153ec..21995ba 100644 --- a/tests/catalogtest1_sub.py +++ b/tests/catalogtest1_sub.py @@ -156,9 +156,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'airplane' rootClass = supermod.airplane rootObj = rootClass.factory() rootObj.build(rootNode) @@ -167,8 +167,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from catalogtest2_sup import *\n\n') ## sys.stdout.write('import catalogtest2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.airplane(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="airplane") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/catalogtest1_sup.py b/tests/catalogtest1_sup.py index 5baef46..a2e8f03 100644 --- a/tests/catalogtest1_sup.py +++ b/tests/catalogtest1_sup.py @@ -618,6 +618,7 @@ class airplane(GeneratedsSuper): subclass = None superclass = None def __init__(self, pilotname=None): + self.original_tagname_ = None self.pilotname = pilotname def factory(*args_, **kwargs_): if airplane.subclass: @@ -639,6 +640,8 @@ class airplane(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -759,9 +762,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'airplane' rootClass = airplane rootObj = rootClass.factory() rootObj.build(rootNode) @@ -770,7 +773,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="airplane", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -789,7 +792,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from catalogtest2_sup import *\n\n') ## sys.stdout.write('import catalogtest2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/catalogtest2_sub.py b/tests/catalogtest2_sub.py index 0b153ec..21995ba 100644 --- a/tests/catalogtest2_sub.py +++ b/tests/catalogtest2_sub.py @@ -156,9 +156,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'airplane' rootClass = supermod.airplane rootObj = rootClass.factory() rootObj.build(rootNode) @@ -167,8 +167,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from catalogtest2_sup import *\n\n') ## sys.stdout.write('import catalogtest2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.airplane(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="airplane") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/catalogtest2_sup.py b/tests/catalogtest2_sup.py index 5baef46..a2e8f03 100644 --- a/tests/catalogtest2_sup.py +++ b/tests/catalogtest2_sup.py @@ -618,6 +618,7 @@ class airplane(GeneratedsSuper): subclass = None superclass = None def __init__(self, pilotname=None): + self.original_tagname_ = None self.pilotname = pilotname def factory(*args_, **kwargs_): if airplane.subclass: @@ -639,6 +640,8 @@ class airplane(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -759,9 +762,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'airplane' rootClass = airplane rootObj = rootClass.factory() rootObj.build(rootNode) @@ -770,7 +773,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="airplane", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -789,7 +792,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from catalogtest2_sup import *\n\n') ## sys.stdout.write('import catalogtest2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/extensions1_sub.py b/tests/extensions1_sub.py index 46cfd20..ad5c267 100644 --- a/tests/extensions1_sub.py +++ b/tests/extensions1_sub.py @@ -172,7 +172,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'container' + rootTag = 'containerType' rootClass = supermod.containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -192,7 +192,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'container' + rootTag = 'containerType' rootClass = supermod.containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -216,7 +216,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'container' + rootTag = 'containerType' rootClass = supermod.containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -233,9 +233,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'containerType' rootClass = supermod.containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -244,8 +244,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from extensions2_sup import *\n\n') ## sys.stdout.write('import extensions2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.container(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="container") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/extensions1_sup.py b/tests/extensions1_sup.py index f3f1375..aa979fd 100644 --- a/tests/extensions1_sup.py +++ b/tests/extensions1_sup.py @@ -619,6 +619,7 @@ class SpecialDate(GeneratedsSuper): subclass = None superclass = None def __init__(self, SpecialProperty=None, valueOf_=None): + self.original_tagname_ = None self.SpecialProperty = _cast(None, SpecialProperty) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -643,6 +644,8 @@ class SpecialDate(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -701,6 +704,7 @@ class ExtremeDate(GeneratedsSuper): subclass = None superclass = None def __init__(self, ExtremeProperty=None, valueOf_=None): + self.original_tagname_ = None self.ExtremeProperty = _cast(None, ExtremeProperty) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -725,6 +729,8 @@ class ExtremeDate(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -783,6 +789,7 @@ class singleExtremeDate(GeneratedsSuper): subclass = None superclass = None def __init__(self, ExtremeProperty=None, valueOf_=None): + self.original_tagname_ = None self.ExtremeProperty = _cast(None, ExtremeProperty) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -807,6 +814,8 @@ class singleExtremeDate(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -865,6 +874,7 @@ class containerType(GeneratedsSuper): subclass = None superclass = None def __init__(self, simplefactoid=None, mixedfactoid=None): + self.original_tagname_ = None if simplefactoid is None: self.simplefactoid = [] else: @@ -895,6 +905,8 @@ class containerType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -958,10 +970,12 @@ class containerType(GeneratedsSuper): obj_ = simpleFactoidType.factory() obj_.build(child_) self.simplefactoid.append(obj_) + obj_.original_tagname_ = 'simplefactoid' elif nodeName_ == 'mixedfactoid': obj_ = mixedFactoidType.factory() obj_.build(child_) self.mixedfactoid = obj_ + obj_.original_tagname_ = 'mixedfactoid' # end class containerType @@ -972,6 +986,7 @@ class simpleFactoidType(GeneratedsSuper): subclass = None superclass = None def __init__(self, relation=None): + self.original_tagname_ = None self.relation = relation def factory(*args_, **kwargs_): if simpleFactoidType.subclass: @@ -996,6 +1011,8 @@ class simpleFactoidType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1055,6 +1072,7 @@ class mixedFactoidType(GeneratedsSuper): subclass = None superclass = None def __init__(self, relation=None, valueOf_=None, mixedclass_=None, content_=None): + self.original_tagname_ = None self.relation = relation self.valueOf_ = valueOf_ if mixedclass_ is None: @@ -1092,6 +1110,8 @@ class mixedFactoidType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1163,6 +1183,7 @@ class BaseType(GeneratedsSuper): subclass = None superclass = None def __init__(self, BaseProperty1=None, BaseProperty2=None, valueOf_=None, extensiontype_=None): + self.original_tagname_ = None self.BaseProperty1 = _cast(None, BaseProperty1) self.BaseProperty2 = _cast(None, BaseProperty2) self.valueOf_ = valueOf_ @@ -1193,6 +1214,8 @@ class BaseType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1271,6 +1294,7 @@ class DerivedType(BaseType): subclass = None superclass = BaseType def __init__(self, BaseProperty1=None, BaseProperty2=None, DerivedProperty1=None, DerivedProperty2=None, valueOf_=None): + self.original_tagname_ = None super(DerivedType, self).__init__(BaseProperty1, BaseProperty2, valueOf_, ) self.DerivedProperty1 = _cast(None, DerivedProperty1) self.DerivedProperty2 = _cast(None, DerivedProperty2) @@ -1300,6 +1324,8 @@ class DerivedType(BaseType): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1374,6 +1400,7 @@ class MyInteger(GeneratedsSuper): subclass = None superclass = None def __init__(self, MyAttr=None, valueOf_=None): + self.original_tagname_ = None self.MyAttr = _cast(None, MyAttr) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -1398,6 +1425,8 @@ class MyInteger(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1456,6 +1485,7 @@ class MyBoolean(GeneratedsSuper): subclass = None superclass = None def __init__(self, MyAttr=None, valueOf_=None): + self.original_tagname_ = None self.MyAttr = _cast(None, MyAttr) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -1480,6 +1510,8 @@ class MyBoolean(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1538,6 +1570,7 @@ class MyFloat(GeneratedsSuper): subclass = None superclass = None def __init__(self, MyAttr=None, valueOf_=None): + self.original_tagname_ = None self.MyAttr = _cast(None, MyAttr) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -1562,6 +1595,8 @@ class MyFloat(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1620,6 +1655,7 @@ class MyDouble(GeneratedsSuper): subclass = None superclass = None def __init__(self, MyAttr=None, valueOf_=None): + self.original_tagname_ = None self.MyAttr = _cast(None, MyAttr) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -1644,6 +1680,8 @@ class MyDouble(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1724,7 +1762,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'container' + rootTag = 'containerType' rootClass = containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1744,7 +1782,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'container' + rootTag = 'containerType' rootClass = containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1766,9 +1804,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'containerType' rootClass = containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1777,7 +1815,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="container", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -1787,7 +1825,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'container' + rootTag = 'containerType' rootClass = containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1796,7 +1834,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from extensions2_sup import *\n\n') ## sys.stdout.write('import extensions2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/extensions2_sub.py b/tests/extensions2_sub.py index 46cfd20..ad5c267 100644 --- a/tests/extensions2_sub.py +++ b/tests/extensions2_sub.py @@ -172,7 +172,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'container' + rootTag = 'containerType' rootClass = supermod.containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -192,7 +192,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'container' + rootTag = 'containerType' rootClass = supermod.containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -216,7 +216,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'container' + rootTag = 'containerType' rootClass = supermod.containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -233,9 +233,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'containerType' rootClass = supermod.containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -244,8 +244,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from extensions2_sup import *\n\n') ## sys.stdout.write('import extensions2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.container(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="container") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/extensions2_sup.py b/tests/extensions2_sup.py index f3f1375..aa979fd 100644 --- a/tests/extensions2_sup.py +++ b/tests/extensions2_sup.py @@ -619,6 +619,7 @@ class SpecialDate(GeneratedsSuper): subclass = None superclass = None def __init__(self, SpecialProperty=None, valueOf_=None): + self.original_tagname_ = None self.SpecialProperty = _cast(None, SpecialProperty) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -643,6 +644,8 @@ class SpecialDate(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -701,6 +704,7 @@ class ExtremeDate(GeneratedsSuper): subclass = None superclass = None def __init__(self, ExtremeProperty=None, valueOf_=None): + self.original_tagname_ = None self.ExtremeProperty = _cast(None, ExtremeProperty) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -725,6 +729,8 @@ class ExtremeDate(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -783,6 +789,7 @@ class singleExtremeDate(GeneratedsSuper): subclass = None superclass = None def __init__(self, ExtremeProperty=None, valueOf_=None): + self.original_tagname_ = None self.ExtremeProperty = _cast(None, ExtremeProperty) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -807,6 +814,8 @@ class singleExtremeDate(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -865,6 +874,7 @@ class containerType(GeneratedsSuper): subclass = None superclass = None def __init__(self, simplefactoid=None, mixedfactoid=None): + self.original_tagname_ = None if simplefactoid is None: self.simplefactoid = [] else: @@ -895,6 +905,8 @@ class containerType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -958,10 +970,12 @@ class containerType(GeneratedsSuper): obj_ = simpleFactoidType.factory() obj_.build(child_) self.simplefactoid.append(obj_) + obj_.original_tagname_ = 'simplefactoid' elif nodeName_ == 'mixedfactoid': obj_ = mixedFactoidType.factory() obj_.build(child_) self.mixedfactoid = obj_ + obj_.original_tagname_ = 'mixedfactoid' # end class containerType @@ -972,6 +986,7 @@ class simpleFactoidType(GeneratedsSuper): subclass = None superclass = None def __init__(self, relation=None): + self.original_tagname_ = None self.relation = relation def factory(*args_, **kwargs_): if simpleFactoidType.subclass: @@ -996,6 +1011,8 @@ class simpleFactoidType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1055,6 +1072,7 @@ class mixedFactoidType(GeneratedsSuper): subclass = None superclass = None def __init__(self, relation=None, valueOf_=None, mixedclass_=None, content_=None): + self.original_tagname_ = None self.relation = relation self.valueOf_ = valueOf_ if mixedclass_ is None: @@ -1092,6 +1110,8 @@ class mixedFactoidType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1163,6 +1183,7 @@ class BaseType(GeneratedsSuper): subclass = None superclass = None def __init__(self, BaseProperty1=None, BaseProperty2=None, valueOf_=None, extensiontype_=None): + self.original_tagname_ = None self.BaseProperty1 = _cast(None, BaseProperty1) self.BaseProperty2 = _cast(None, BaseProperty2) self.valueOf_ = valueOf_ @@ -1193,6 +1214,8 @@ class BaseType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1271,6 +1294,7 @@ class DerivedType(BaseType): subclass = None superclass = BaseType def __init__(self, BaseProperty1=None, BaseProperty2=None, DerivedProperty1=None, DerivedProperty2=None, valueOf_=None): + self.original_tagname_ = None super(DerivedType, self).__init__(BaseProperty1, BaseProperty2, valueOf_, ) self.DerivedProperty1 = _cast(None, DerivedProperty1) self.DerivedProperty2 = _cast(None, DerivedProperty2) @@ -1300,6 +1324,8 @@ class DerivedType(BaseType): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1374,6 +1400,7 @@ class MyInteger(GeneratedsSuper): subclass = None superclass = None def __init__(self, MyAttr=None, valueOf_=None): + self.original_tagname_ = None self.MyAttr = _cast(None, MyAttr) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -1398,6 +1425,8 @@ class MyInteger(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1456,6 +1485,7 @@ class MyBoolean(GeneratedsSuper): subclass = None superclass = None def __init__(self, MyAttr=None, valueOf_=None): + self.original_tagname_ = None self.MyAttr = _cast(None, MyAttr) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -1480,6 +1510,8 @@ class MyBoolean(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1538,6 +1570,7 @@ class MyFloat(GeneratedsSuper): subclass = None superclass = None def __init__(self, MyAttr=None, valueOf_=None): + self.original_tagname_ = None self.MyAttr = _cast(None, MyAttr) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -1562,6 +1595,8 @@ class MyFloat(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1620,6 +1655,7 @@ class MyDouble(GeneratedsSuper): subclass = None superclass = None def __init__(self, MyAttr=None, valueOf_=None): + self.original_tagname_ = None self.MyAttr = _cast(None, MyAttr) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -1644,6 +1680,8 @@ class MyDouble(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1724,7 +1762,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'container' + rootTag = 'containerType' rootClass = containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1744,7 +1782,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'container' + rootTag = 'containerType' rootClass = containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1766,9 +1804,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'containerType' rootClass = containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1777,7 +1815,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="container", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -1787,7 +1825,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'container' + rootTag = 'containerType' rootClass = containerType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1796,7 +1834,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from extensions2_sup import *\n\n') ## sys.stdout.write('import extensions2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/ipo1_sub.py b/tests/ipo1_sub.py index f973bb7..8140d69 100644 --- a/tests/ipo1_sub.py +++ b/tests/ipo1_sub.py @@ -130,7 +130,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'purchaseOrder' + rootTag = 'PurchaseOrderType' rootClass = supermod.PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -150,7 +150,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'purchaseOrder' + rootTag = 'PurchaseOrderType' rootClass = supermod.PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -174,7 +174,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'purchaseOrder' + rootTag = 'PurchaseOrderType' rootClass = supermod.PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -191,9 +191,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'PurchaseOrderType' rootClass = supermod.PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -202,8 +202,8 @@ def parseLiteral(inFilename, silence=False): if not silence: sys.stdout.write('#from ipo2_sup import *\n\n') sys.stdout.write('import ipo2_sup as model_\n\n') - sys.stdout.write('rootObj = model_.purchaseOrder(\n') - rootObj.exportLiteral(sys.stdout, 0, name_="purchaseOrder") + sys.stdout.write('rootObj = model_.rootClass(\n') + rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) sys.stdout.write(')\n') return rootObj diff --git a/tests/ipo1_sup.py b/tests/ipo1_sup.py index 47d0c7d..581fbea 100644 --- a/tests/ipo1_sup.py +++ b/tests/ipo1_sup.py @@ -622,6 +622,7 @@ class PurchaseOrderType(GeneratedsSuper): subclass = None superclass = None def __init__(self, orderDate=None, shipTo=None, billTo=None, comment=None, items=None): + self.original_tagname_ = None if isinstance(orderDate, basestring): initvalue_ = datetime_.datetime.strptime(orderDate, '%Y-%m-%d').date() else: @@ -662,6 +663,8 @@ class PurchaseOrderType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -745,11 +748,13 @@ class PurchaseOrderType(GeneratedsSuper): obj_ = class_obj_.factory() obj_.build(child_) self.shipTo = obj_ + obj_.original_tagname_ = 'shipTo' elif nodeName_ == 'billTo': class_obj_ = self.get_class_obj_(child_, Address) obj_ = class_obj_.factory() obj_.build(child_) self.billTo = obj_ + obj_.original_tagname_ = 'billTo' elif nodeName_ == 'comment': comment_ = child_.text comment_ = self.gds_validate_string(comment_, node, 'comment') @@ -758,6 +763,7 @@ class PurchaseOrderType(GeneratedsSuper): obj_ = Items.factory() obj_.build(child_) self.items = obj_ + obj_.original_tagname_ = 'items' # end class PurchaseOrderType @@ -768,6 +774,7 @@ class Items(GeneratedsSuper): subclass = None superclass = None def __init__(self, item=None): + self.original_tagname_ = None if item is None: self.item = [] else: @@ -794,6 +801,8 @@ class Items(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -849,6 +858,7 @@ class Items(GeneratedsSuper): obj_ = item.factory() obj_.build(child_) self.item.append(obj_) + obj_.original_tagname_ = 'item' # end class Items @@ -864,6 +874,7 @@ class item(GeneratedsSuper): subclass = None superclass = None def __init__(self, partNum=None, productName=None, quantity=None, USPrice=None, comment=None, shipDate=None): + self.original_tagname_ = None self.partNum = _cast(None, partNum) self.productName = productName self.quantity = quantity @@ -908,6 +919,8 @@ class item(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1022,6 +1035,7 @@ class quantity(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): + self.original_tagname_ = None self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if quantity.subclass: @@ -1041,6 +1055,8 @@ class quantity(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1088,6 +1104,7 @@ class Address(GeneratedsSuper): subclass = None superclass = None def __init__(self, name=None, street=None, city=None, extensiontype_=None): + self.original_tagname_ = None self.name = name self.street = street self.city = city @@ -1120,6 +1137,8 @@ class Address(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1205,6 +1224,7 @@ class USAddress(Address): subclass = None superclass = Address def __init__(self, name=None, street=None, city=None, state=None, zip=None): + self.original_tagname_ = None super(USAddress, self).__init__(name, street, city, ) self.state = state self.zip = zip @@ -1235,6 +1255,8 @@ class USAddress(Address): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1315,6 +1337,7 @@ class UKAddress(Address): subclass = None superclass = Address def __init__(self, name=None, street=None, city=None, category_attr=None, exportCode=None, postcode=None, category=None): + self.original_tagname_ = None super(UKAddress, self).__init__(name, street, city, ) self.category_attr = _cast(None, category_attr) self.exportCode = _cast(int, exportCode) @@ -1351,6 +1374,8 @@ class UKAddress(Address): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1473,7 +1498,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'purchaseOrder' + rootTag = 'PurchaseOrderType' rootClass = PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1493,7 +1518,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'purchaseOrder' + rootTag = 'PurchaseOrderType' rootClass = PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1515,9 +1540,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'PurchaseOrderType' rootClass = PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1526,7 +1551,7 @@ def parseString(inString, silence=False): if not silence: sys.stdout.write('<?xml version="1.0" ?>\n') rootObj.export( - sys.stdout, 0, name_="purchaseOrder", + sys.stdout, 0, name_=rootTag, namespacedef_='xmlns:ipo="http://www.example.com/IPO"') return rootObj @@ -1536,7 +1561,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'purchaseOrder' + rootTag = 'PurchaseOrderType' rootClass = PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1545,7 +1570,7 @@ def parseLiteral(inFileName, silence=False): if not silence: sys.stdout.write('#from ipo2_sup import *\n\n') sys.stdout.write('import ipo2_sup as model_\n\n') - sys.stdout.write('rootObj = model_.rootTag(\n') + sys.stdout.write('rootObj = model_.rootClass(\n') rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) sys.stdout.write(')\n') return rootObj diff --git a/tests/ipo2_sub.py b/tests/ipo2_sub.py index f973bb7..8140d69 100644 --- a/tests/ipo2_sub.py +++ b/tests/ipo2_sub.py @@ -130,7 +130,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'purchaseOrder' + rootTag = 'PurchaseOrderType' rootClass = supermod.PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -150,7 +150,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'purchaseOrder' + rootTag = 'PurchaseOrderType' rootClass = supermod.PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -174,7 +174,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'purchaseOrder' + rootTag = 'PurchaseOrderType' rootClass = supermod.PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -191,9 +191,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'PurchaseOrderType' rootClass = supermod.PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -202,8 +202,8 @@ def parseLiteral(inFilename, silence=False): if not silence: sys.stdout.write('#from ipo2_sup import *\n\n') sys.stdout.write('import ipo2_sup as model_\n\n') - sys.stdout.write('rootObj = model_.purchaseOrder(\n') - rootObj.exportLiteral(sys.stdout, 0, name_="purchaseOrder") + sys.stdout.write('rootObj = model_.rootClass(\n') + rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) sys.stdout.write(')\n') return rootObj diff --git a/tests/ipo2_sup.py b/tests/ipo2_sup.py index 47d0c7d..581fbea 100644 --- a/tests/ipo2_sup.py +++ b/tests/ipo2_sup.py @@ -622,6 +622,7 @@ class PurchaseOrderType(GeneratedsSuper): subclass = None superclass = None def __init__(self, orderDate=None, shipTo=None, billTo=None, comment=None, items=None): + self.original_tagname_ = None if isinstance(orderDate, basestring): initvalue_ = datetime_.datetime.strptime(orderDate, '%Y-%m-%d').date() else: @@ -662,6 +663,8 @@ class PurchaseOrderType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -745,11 +748,13 @@ class PurchaseOrderType(GeneratedsSuper): obj_ = class_obj_.factory() obj_.build(child_) self.shipTo = obj_ + obj_.original_tagname_ = 'shipTo' elif nodeName_ == 'billTo': class_obj_ = self.get_class_obj_(child_, Address) obj_ = class_obj_.factory() obj_.build(child_) self.billTo = obj_ + obj_.original_tagname_ = 'billTo' elif nodeName_ == 'comment': comment_ = child_.text comment_ = self.gds_validate_string(comment_, node, 'comment') @@ -758,6 +763,7 @@ class PurchaseOrderType(GeneratedsSuper): obj_ = Items.factory() obj_.build(child_) self.items = obj_ + obj_.original_tagname_ = 'items' # end class PurchaseOrderType @@ -768,6 +774,7 @@ class Items(GeneratedsSuper): subclass = None superclass = None def __init__(self, item=None): + self.original_tagname_ = None if item is None: self.item = [] else: @@ -794,6 +801,8 @@ class Items(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -849,6 +858,7 @@ class Items(GeneratedsSuper): obj_ = item.factory() obj_.build(child_) self.item.append(obj_) + obj_.original_tagname_ = 'item' # end class Items @@ -864,6 +874,7 @@ class item(GeneratedsSuper): subclass = None superclass = None def __init__(self, partNum=None, productName=None, quantity=None, USPrice=None, comment=None, shipDate=None): + self.original_tagname_ = None self.partNum = _cast(None, partNum) self.productName = productName self.quantity = quantity @@ -908,6 +919,8 @@ class item(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1022,6 +1035,7 @@ class quantity(GeneratedsSuper): subclass = None superclass = None def __init__(self, valueOf_=None): + self.original_tagname_ = None self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): if quantity.subclass: @@ -1041,6 +1055,8 @@ class quantity(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1088,6 +1104,7 @@ class Address(GeneratedsSuper): subclass = None superclass = None def __init__(self, name=None, street=None, city=None, extensiontype_=None): + self.original_tagname_ = None self.name = name self.street = street self.city = city @@ -1120,6 +1137,8 @@ class Address(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1205,6 +1224,7 @@ class USAddress(Address): subclass = None superclass = Address def __init__(self, name=None, street=None, city=None, state=None, zip=None): + self.original_tagname_ = None super(USAddress, self).__init__(name, street, city, ) self.state = state self.zip = zip @@ -1235,6 +1255,8 @@ class USAddress(Address): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1315,6 +1337,7 @@ class UKAddress(Address): subclass = None superclass = Address def __init__(self, name=None, street=None, city=None, category_attr=None, exportCode=None, postcode=None, category=None): + self.original_tagname_ = None super(UKAddress, self).__init__(name, street, city, ) self.category_attr = _cast(None, category_attr) self.exportCode = _cast(int, exportCode) @@ -1351,6 +1374,8 @@ class UKAddress(Address): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1473,7 +1498,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'purchaseOrder' + rootTag = 'PurchaseOrderType' rootClass = PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1493,7 +1518,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'purchaseOrder' + rootTag = 'PurchaseOrderType' rootClass = PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1515,9 +1540,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'PurchaseOrderType' rootClass = PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1526,7 +1551,7 @@ def parseString(inString, silence=False): if not silence: sys.stdout.write('<?xml version="1.0" ?>\n') rootObj.export( - sys.stdout, 0, name_="purchaseOrder", + sys.stdout, 0, name_=rootTag, namespacedef_='xmlns:ipo="http://www.example.com/IPO"') return rootObj @@ -1536,7 +1561,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'purchaseOrder' + rootTag = 'PurchaseOrderType' rootClass = PurchaseOrderType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1545,7 +1570,7 @@ def parseLiteral(inFileName, silence=False): if not silence: sys.stdout.write('#from ipo2_sup import *\n\n') sys.stdout.write('import ipo2_sup as model_\n\n') - sys.stdout.write('rootObj = model_.rootTag(\n') + sys.stdout.write('rootObj = model_.rootClass(\n') rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) sys.stdout.write(')\n') return rootObj diff --git a/tests/literal1.py b/tests/literal1.py index 6e24702..8c46e92 100644 --- a/tests/literal1.py +++ b/tests/literal1.py @@ -2,7 +2,7 @@ import out2_sup as model_ -rootObj = model_.rootTag( +rootObj = model_.rootClass( comments=[ model_.comments( content_ = [ diff --git a/tests/oneper00.xsd b/tests/oneper00.xsd index 0193a4b..7456aef 100644 --- a/tests/oneper00.xsd +++ b/tests/oneper00.xsd @@ -4,6 +4,7 @@ <xs:include schemaLocation="oneper01.xsd"/> <xs:include schemaLocation="oneper02.xsd"/> + <xs:include schemaLocation="http://www.davekuhlman.org/oneper03.xsd"/> <xs:element name="root00" type="oneperType00_1" /> diff --git a/tests/oneper03.xsd b/tests/oneper03.xsd new file mode 100644 index 0000000..dc4f1df --- /dev/null +++ b/tests/oneper03.xsd @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + > + +<!-- During unit tests, this schema file is actually read from + http://www.davekuhlman.org. + See xs:include element in oneper00.xsd. +--> + + <xs:element name="root03" type="oneperType03_1" /> + + <xs:complexType name="oneperType03_1"> + <xs:sequence> + <xs:element name="helpername" type="xs:string"/> + <xs:element name="inner01" type="oneperType02_2" /> + </xs:sequence> + </xs:complexType> + + <xs:complexType name="oneperType03_2"> + <xs:sequence> + <xs:element name="helperdescription" type="xs:string"/> + </xs:sequence> + </xs:complexType> + +</xs:schema> + diff --git a/tests/out1_sub.py b/tests/out1_sub.py index ad7595f..2292a32 100644 --- a/tests/out1_sub.py +++ b/tests/out1_sub.py @@ -233,9 +233,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'people' rootClass = supermod.people rootObj = rootClass.factory() rootObj.build(rootNode) @@ -244,8 +244,8 @@ def parseLiteral(inFilename, silence=False): if not silence: sys.stdout.write('#from out2_sup import *\n\n') sys.stdout.write('import out2_sup as model_\n\n') - sys.stdout.write('rootObj = model_.people(\n') - rootObj.exportLiteral(sys.stdout, 0, name_="people") + sys.stdout.write('rootObj = model_.rootClass(\n') + rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) sys.stdout.write(')\n') return rootObj diff --git a/tests/out1_sup.py b/tests/out1_sup.py index fcba530..4fee2b3 100644 --- a/tests/out1_sup.py +++ b/tests/out1_sup.py @@ -622,6 +622,7 @@ class people(GeneratedsSuper): subclass = None superclass = None def __init__(self, comments=None, person=None, programmer=None, python_programmer=None, java_programmer=None): + self.original_tagname_ = None if comments is None: self.comments = [] else: @@ -684,6 +685,8 @@ class people(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -795,24 +798,29 @@ class people(GeneratedsSuper): obj_ = comments.factory() obj_.build(child_) self.comments.append(obj_) + obj_.original_tagname_ = 'comments' elif nodeName_ == 'person': class_obj_ = self.get_class_obj_(child_, person) obj_ = class_obj_.factory() obj_.build(child_) self.person.append(obj_) + obj_.original_tagname_ = 'person' elif nodeName_ == 'programmer': class_obj_ = self.get_class_obj_(child_, programmer) obj_ = class_obj_.factory() obj_.build(child_) self.programmer.append(obj_) + obj_.original_tagname_ = 'programmer' elif nodeName_ == 'python-programmer': obj_ = python_programmer.factory() obj_.build(child_) self.python_programmer.append(obj_) + obj_.original_tagname_ = 'python-programmer' elif nodeName_ == 'java-programmer': obj_ = java_programmer.factory() obj_.build(child_) self.java_programmer.append(obj_) + obj_.original_tagname_ = 'java-programmer' def walk_and_update(self): members = people._member_data_items for member in members: @@ -875,6 +883,7 @@ class comments(GeneratedsSuper): subclass = None superclass = None def __init__(self, emp=None, valueOf_=None, mixedclass_=None, content_=None): + self.original_tagname_ = None if emp is None: self.emp = [] else: @@ -914,6 +923,8 @@ class comments(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1039,6 +1050,7 @@ class person(GeneratedsSuper): subclass = None superclass = None def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, extensiontype_=None): + self.original_tagname_ = None self.vegetable = _cast(None, vegetable) self.fruit = _cast(None, fruit) self.ratio = _cast(float, ratio) @@ -1113,6 +1125,8 @@ class person(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1294,10 +1308,12 @@ class person(GeneratedsSuper): obj_ = agent.factory() obj_.build(child_) self.agent.append(obj_) + obj_.original_tagname_ = 'agent' elif nodeName_ == 'promoter': obj_ = booster.factory() obj_.build(child_) self.promoter.append(obj_) + obj_.original_tagname_ = 'promoter' elif nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') @@ -1375,6 +1391,7 @@ class programmer(person): subclass = None superclass = person def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eldatetime=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, extensiontype_=None): + self.original_tagname_ = None super(programmer, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, extensiontype_, ) self.language = _cast(None, language) self.area = _cast(None, area) @@ -1474,6 +1491,8 @@ class programmer(person): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1758,6 +1777,7 @@ class programmer(person): obj_ = param.factory() obj_.build(child_) self.elparam = obj_ + obj_.original_tagname_ = 'elparam' elif nodeName_ == 'elarraytypes': elarraytypes_ = child_.text elarraytypes_ = self.gds_validate_string(elarraytypes_, node, 'elarraytypes') @@ -1828,6 +1848,7 @@ class param(GeneratedsSuper): subclass = None superclass = None def __init__(self, semantic=None, name=None, flow=None, sid=None, type_=None, id=None, valueOf_=None): + self.original_tagname_ = None self.semantic = _cast(None, semantic) self.name = _cast(None, name) self.flow = _cast(None, flow) @@ -1867,6 +1888,8 @@ class param(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2027,6 +2050,7 @@ class python_programmer(programmer): subclass = None superclass = programmer def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eldatetime=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, nick_name=None, favorite_editor=None): + self.original_tagname_ = None super(python_programmer, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, language, area, attrnegint, attrposint, attrnonnegint, attrnonposint, email, elposint, elnonposint, elnegint, elnonnegint, eldate, eldatetime, eltoken, elshort, ellong, elparam, elarraytypes, ) self.nick_name = _cast(None, nick_name) self.favorite_editor = favorite_editor @@ -2053,6 +2077,8 @@ class python_programmer(programmer): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2172,6 +2198,7 @@ class java_programmer(programmer): subclass = None superclass = programmer def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eldatetime=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, status=None, nick_name=None, favorite_editor=None): + self.original_tagname_ = None super(java_programmer, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, language, area, attrnegint, attrposint, attrnonnegint, attrnonposint, email, elposint, elnonposint, elnegint, elnonnegint, eldate, eldatetime, eltoken, elshort, ellong, elparam, elarraytypes, ) self.status = _cast(None, status) self.nick_name = _cast(None, nick_name) @@ -2201,6 +2228,8 @@ class java_programmer(programmer): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2332,6 +2361,7 @@ class agent(GeneratedsSuper): subclass = None superclass = None def __init__(self, firstname=None, lastname=None, priority=None, info=None): + self.original_tagname_ = None self.firstname = firstname self.lastname = lastname self.priority = priority @@ -2365,6 +2395,8 @@ class agent(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2448,6 +2480,7 @@ class agent(GeneratedsSuper): obj_ = info.factory() obj_.build(child_) self.info = obj_ + obj_.original_tagname_ = 'info' def walk_and_update(self): members = agent._member_data_items for member in members: @@ -2507,6 +2540,7 @@ class special_agent(GeneratedsSuper): subclass = None superclass = None def __init__(self, firstname=None, lastname=None, priority=None, info=None): + self.original_tagname_ = None self.firstname = firstname self.lastname = lastname self.priority = priority @@ -2540,6 +2574,8 @@ class special_agent(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2623,6 +2659,7 @@ class special_agent(GeneratedsSuper): obj_ = info.factory() obj_.build(child_) self.info = obj_ + obj_.original_tagname_ = 'info' def walk_and_update(self): members = special_agent._member_data_items for member in members: @@ -2685,6 +2722,7 @@ class booster(GeneratedsSuper): subclass = None superclass = None def __init__(self, firstname=None, lastname=None, other_name=None, class_=None, other_value=None, type_=None, client_handler=None): + self.original_tagname_ = None self.firstname = firstname self.lastname = lastname self.other_name = other_name @@ -2745,6 +2783,8 @@ class booster(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2888,6 +2928,7 @@ class booster(GeneratedsSuper): obj_ = client_handlerType.factory() obj_.build(child_) self.client_handler.append(obj_) + obj_.original_tagname_ = 'client-handler' def walk_and_update(self): members = booster._member_data_items for member in members: @@ -2946,10 +2987,10 @@ class info(GeneratedsSuper): subclass = None superclass = None def __init__(self, rating=None, type_=None, name=None): + self.original_tagname_ = None self.rating = _cast(float, rating) self.type_ = _cast(int, type_) self.name = _cast(None, name) - pass def factory(*args_, **kwargs_): if info.subclass: return info.subclass(*args_, **kwargs_) @@ -2974,6 +3015,8 @@ class info(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -3102,6 +3145,7 @@ class client_handlerType(GeneratedsSuper): subclass = None superclass = None def __init__(self, fullname=None, refid=None): + self.original_tagname_ = None self.fullname = fullname self.refid = refid def factory(*args_, **kwargs_): @@ -3127,6 +3171,8 @@ class client_handlerType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -3309,9 +3355,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'people' rootClass = people rootObj = rootClass.factory() rootObj.build(rootNode) @@ -3320,7 +3366,7 @@ def parseString(inString, silence=False): if not silence: sys.stdout.write('<?xml version="1.0" ?>\n') rootObj.export( - sys.stdout, 0, name_="people", + sys.stdout, 0, name_=rootTag, namespacedef_='') return rootObj @@ -3339,7 +3385,7 @@ def parseLiteral(inFileName, silence=False): if not silence: sys.stdout.write('#from out2_sup import *\n\n') sys.stdout.write('import out2_sup as model_\n\n') - sys.stdout.write('rootObj = model_.rootTag(\n') + sys.stdout.write('rootObj = model_.rootClass(\n') rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) sys.stdout.write(')\n') return rootObj diff --git a/tests/out2_sub.py b/tests/out2_sub.py index ad7595f..2292a32 100644 --- a/tests/out2_sub.py +++ b/tests/out2_sub.py @@ -233,9 +233,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'people' rootClass = supermod.people rootObj = rootClass.factory() rootObj.build(rootNode) @@ -244,8 +244,8 @@ def parseLiteral(inFilename, silence=False): if not silence: sys.stdout.write('#from out2_sup import *\n\n') sys.stdout.write('import out2_sup as model_\n\n') - sys.stdout.write('rootObj = model_.people(\n') - rootObj.exportLiteral(sys.stdout, 0, name_="people") + sys.stdout.write('rootObj = model_.rootClass(\n') + rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) sys.stdout.write(')\n') return rootObj diff --git a/tests/out2_sup.py b/tests/out2_sup.py index fcba530..4fee2b3 100644 --- a/tests/out2_sup.py +++ b/tests/out2_sup.py @@ -622,6 +622,7 @@ class people(GeneratedsSuper): subclass = None superclass = None def __init__(self, comments=None, person=None, programmer=None, python_programmer=None, java_programmer=None): + self.original_tagname_ = None if comments is None: self.comments = [] else: @@ -684,6 +685,8 @@ class people(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -795,24 +798,29 @@ class people(GeneratedsSuper): obj_ = comments.factory() obj_.build(child_) self.comments.append(obj_) + obj_.original_tagname_ = 'comments' elif nodeName_ == 'person': class_obj_ = self.get_class_obj_(child_, person) obj_ = class_obj_.factory() obj_.build(child_) self.person.append(obj_) + obj_.original_tagname_ = 'person' elif nodeName_ == 'programmer': class_obj_ = self.get_class_obj_(child_, programmer) obj_ = class_obj_.factory() obj_.build(child_) self.programmer.append(obj_) + obj_.original_tagname_ = 'programmer' elif nodeName_ == 'python-programmer': obj_ = python_programmer.factory() obj_.build(child_) self.python_programmer.append(obj_) + obj_.original_tagname_ = 'python-programmer' elif nodeName_ == 'java-programmer': obj_ = java_programmer.factory() obj_.build(child_) self.java_programmer.append(obj_) + obj_.original_tagname_ = 'java-programmer' def walk_and_update(self): members = people._member_data_items for member in members: @@ -875,6 +883,7 @@ class comments(GeneratedsSuper): subclass = None superclass = None def __init__(self, emp=None, valueOf_=None, mixedclass_=None, content_=None): + self.original_tagname_ = None if emp is None: self.emp = [] else: @@ -914,6 +923,8 @@ class comments(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1039,6 +1050,7 @@ class person(GeneratedsSuper): subclass = None superclass = None def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, extensiontype_=None): + self.original_tagname_ = None self.vegetable = _cast(None, vegetable) self.fruit = _cast(None, fruit) self.ratio = _cast(float, ratio) @@ -1113,6 +1125,8 @@ class person(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1294,10 +1308,12 @@ class person(GeneratedsSuper): obj_ = agent.factory() obj_.build(child_) self.agent.append(obj_) + obj_.original_tagname_ = 'agent' elif nodeName_ == 'promoter': obj_ = booster.factory() obj_.build(child_) self.promoter.append(obj_) + obj_.original_tagname_ = 'promoter' elif nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') @@ -1375,6 +1391,7 @@ class programmer(person): subclass = None superclass = person def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eldatetime=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, extensiontype_=None): + self.original_tagname_ = None super(programmer, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, extensiontype_, ) self.language = _cast(None, language) self.area = _cast(None, area) @@ -1474,6 +1491,8 @@ class programmer(person): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1758,6 +1777,7 @@ class programmer(person): obj_ = param.factory() obj_.build(child_) self.elparam = obj_ + obj_.original_tagname_ = 'elparam' elif nodeName_ == 'elarraytypes': elarraytypes_ = child_.text elarraytypes_ = self.gds_validate_string(elarraytypes_, node, 'elarraytypes') @@ -1828,6 +1848,7 @@ class param(GeneratedsSuper): subclass = None superclass = None def __init__(self, semantic=None, name=None, flow=None, sid=None, type_=None, id=None, valueOf_=None): + self.original_tagname_ = None self.semantic = _cast(None, semantic) self.name = _cast(None, name) self.flow = _cast(None, flow) @@ -1867,6 +1888,8 @@ class param(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2027,6 +2050,7 @@ class python_programmer(programmer): subclass = None superclass = programmer def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eldatetime=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, nick_name=None, favorite_editor=None): + self.original_tagname_ = None super(python_programmer, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, language, area, attrnegint, attrposint, attrnonnegint, attrnonposint, email, elposint, elnonposint, elnegint, elnonnegint, eldate, eldatetime, eltoken, elshort, ellong, elparam, elarraytypes, ) self.nick_name = _cast(None, nick_name) self.favorite_editor = favorite_editor @@ -2053,6 +2077,8 @@ class python_programmer(programmer): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2172,6 +2198,7 @@ class java_programmer(programmer): subclass = None superclass = programmer def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eldatetime=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, status=None, nick_name=None, favorite_editor=None): + self.original_tagname_ = None super(java_programmer, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, language, area, attrnegint, attrposint, attrnonnegint, attrnonposint, email, elposint, elnonposint, elnegint, elnonnegint, eldate, eldatetime, eltoken, elshort, ellong, elparam, elarraytypes, ) self.status = _cast(None, status) self.nick_name = _cast(None, nick_name) @@ -2201,6 +2228,8 @@ class java_programmer(programmer): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2332,6 +2361,7 @@ class agent(GeneratedsSuper): subclass = None superclass = None def __init__(self, firstname=None, lastname=None, priority=None, info=None): + self.original_tagname_ = None self.firstname = firstname self.lastname = lastname self.priority = priority @@ -2365,6 +2395,8 @@ class agent(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2448,6 +2480,7 @@ class agent(GeneratedsSuper): obj_ = info.factory() obj_.build(child_) self.info = obj_ + obj_.original_tagname_ = 'info' def walk_and_update(self): members = agent._member_data_items for member in members: @@ -2507,6 +2540,7 @@ class special_agent(GeneratedsSuper): subclass = None superclass = None def __init__(self, firstname=None, lastname=None, priority=None, info=None): + self.original_tagname_ = None self.firstname = firstname self.lastname = lastname self.priority = priority @@ -2540,6 +2574,8 @@ class special_agent(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2623,6 +2659,7 @@ class special_agent(GeneratedsSuper): obj_ = info.factory() obj_.build(child_) self.info = obj_ + obj_.original_tagname_ = 'info' def walk_and_update(self): members = special_agent._member_data_items for member in members: @@ -2685,6 +2722,7 @@ class booster(GeneratedsSuper): subclass = None superclass = None def __init__(self, firstname=None, lastname=None, other_name=None, class_=None, other_value=None, type_=None, client_handler=None): + self.original_tagname_ = None self.firstname = firstname self.lastname = lastname self.other_name = other_name @@ -2745,6 +2783,8 @@ class booster(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2888,6 +2928,7 @@ class booster(GeneratedsSuper): obj_ = client_handlerType.factory() obj_.build(child_) self.client_handler.append(obj_) + obj_.original_tagname_ = 'client-handler' def walk_and_update(self): members = booster._member_data_items for member in members: @@ -2946,10 +2987,10 @@ class info(GeneratedsSuper): subclass = None superclass = None def __init__(self, rating=None, type_=None, name=None): + self.original_tagname_ = None self.rating = _cast(float, rating) self.type_ = _cast(int, type_) self.name = _cast(None, name) - pass def factory(*args_, **kwargs_): if info.subclass: return info.subclass(*args_, **kwargs_) @@ -2974,6 +3015,8 @@ class info(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -3102,6 +3145,7 @@ class client_handlerType(GeneratedsSuper): subclass = None superclass = None def __init__(self, fullname=None, refid=None): + self.original_tagname_ = None self.fullname = fullname self.refid = refid def factory(*args_, **kwargs_): @@ -3127,6 +3171,8 @@ class client_handlerType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -3309,9 +3355,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'people' rootClass = people rootObj = rootClass.factory() rootObj.build(rootNode) @@ -3320,7 +3366,7 @@ def parseString(inString, silence=False): if not silence: sys.stdout.write('<?xml version="1.0" ?>\n') rootObj.export( - sys.stdout, 0, name_="people", + sys.stdout, 0, name_=rootTag, namespacedef_='') return rootObj @@ -3339,7 +3385,7 @@ def parseLiteral(inFileName, silence=False): if not silence: sys.stdout.write('#from out2_sup import *\n\n') sys.stdout.write('import out2_sup as model_\n\n') - sys.stdout.write('rootObj = model_.rootTag(\n') + sys.stdout.write('rootObj = model_.rootClass(\n') rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) sys.stdout.write(')\n') return rootObj diff --git a/tests/people_procincl1_sub.py b/tests/people_procincl1_sub.py index c3b5be6..55e0f42 100644 --- a/tests/people_procincl1_sub.py +++ b/tests/people_procincl1_sub.py @@ -261,9 +261,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'people' rootClass = supermod.people rootObj = rootClass.factory() rootObj.build(rootNode) @@ -272,8 +272,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from people_procincl2_sup import *\n\n') ## sys.stdout.write('import people_procincl2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.people(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="people") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/people_procincl1_sup.py b/tests/people_procincl1_sup.py index 87f7ddc..a3cc5d1 100644 --- a/tests/people_procincl1_sup.py +++ b/tests/people_procincl1_sup.py @@ -624,6 +624,7 @@ class people(GeneratedsSuper): subclass = None superclass = None def __init__(self, comments=None, person=None, specialperson=None, programmer=None, python_programmer=None, java_programmer=None): + self.original_tagname_ = None if comments is None: self.comments = [] else: @@ -695,6 +696,8 @@ class people(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -820,28 +823,34 @@ class people(GeneratedsSuper): obj_ = comments.factory() obj_.build(child_) self.comments.append(obj_) + obj_.original_tagname_ = 'comments' elif nodeName_ == 'person': class_obj_ = self.get_class_obj_(child_, person) obj_ = class_obj_.factory() obj_.build(child_) self.person.append(obj_) + obj_.original_tagname_ = 'person' elif nodeName_ == 'specialperson': obj_ = specialperson.factory() obj_.build(child_) self.specialperson.append(obj_) + obj_.original_tagname_ = 'specialperson' elif nodeName_ == 'programmer': class_obj_ = self.get_class_obj_(child_, programmer) obj_ = class_obj_.factory() obj_.build(child_) self.programmer.append(obj_) + obj_.original_tagname_ = 'programmer' elif nodeName_ == 'python-programmer': obj_ = python_programmer.factory() obj_.build(child_) self.python_programmer.append(obj_) + obj_.original_tagname_ = 'python-programmer' elif nodeName_ == 'java-programmer': obj_ = java_programmer.factory() obj_.build(child_) self.java_programmer.append(obj_) + obj_.original_tagname_ = 'java-programmer' # end class people @@ -854,6 +863,7 @@ class comments(GeneratedsSuper): subclass = None superclass = None def __init__(self, emp=None, bold=None, valueOf_=None, mixedclass_=None, content_=None): + self.original_tagname_ = None if emp is None: self.emp = [] else: @@ -902,6 +912,8 @@ class comments(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -995,6 +1007,7 @@ class person(GeneratedsSuper): subclass = None superclass = None def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, extensiontype_=None): + self.original_tagname_ = None self.vegetable = _cast(None, vegetable) self.fruit = _cast(None, fruit) self.ratio = _cast(float, ratio) @@ -1069,6 +1082,8 @@ class person(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1250,10 +1265,12 @@ class person(GeneratedsSuper): obj_ = agent.factory() obj_.build(child_) self.agent.append(obj_) + obj_.original_tagname_ = 'agent' elif nodeName_ == 'promoter': obj_ = booster.factory() obj_.build(child_) self.promoter.append(obj_) + obj_.original_tagname_ = 'promoter' elif nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') @@ -1267,8 +1284,8 @@ class specialperson(person): subclass = None superclass = person def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None): + self.original_tagname_ = None super(specialperson, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, ) - pass def factory(*args_, **kwargs_): if specialperson.subclass: return specialperson.subclass(*args_, **kwargs_) @@ -1287,6 +1304,8 @@ class specialperson(person): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1342,6 +1361,7 @@ class param(GeneratedsSuper): subclass = None superclass = None def __init__(self, semantic=None, name=None, flow=None, sid=None, type_=None, id=None, valueOf_=None): + self.original_tagname_ = None self.semantic = _cast(None, semantic) self.name = _cast(None, name) self.flow = _cast(None, flow) @@ -1381,6 +1401,8 @@ class param(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1498,6 +1520,7 @@ class agent(GeneratedsSuper): subclass = None superclass = None def __init__(self, firstname=None, lastname=None, priority=None, info=None, vehicle=None): + self.original_tagname_ = None self.firstname = firstname self.lastname = lastname self.priority = priority @@ -1540,6 +1563,8 @@ class agent(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1637,6 +1662,7 @@ class agent(GeneratedsSuper): obj_ = info.factory() obj_.build(child_) self.info = obj_ + obj_.original_tagname_ = 'info' elif nodeName_ == 'vehicle': type_name_ = child_.attrib.get( '{http://www.w3.org/2001/XMLSchema-instance}type') @@ -1655,6 +1681,7 @@ class agent(GeneratedsSuper): raise NotImplementedError( 'Class not implemented for <vehicle> element') self.vehicle.append(obj_) + obj_.original_tagname_ = 'vehicle' # end class agent @@ -1670,6 +1697,7 @@ class special_agent(GeneratedsSuper): subclass = None superclass = None def __init__(self, firstname=None, lastname=None, priority=None, info=None): + self.original_tagname_ = None self.firstname = firstname self.lastname = lastname self.priority = priority @@ -1703,6 +1731,8 @@ class special_agent(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1786,6 +1816,7 @@ class special_agent(GeneratedsSuper): obj_ = info.factory() obj_.build(child_) self.info = obj_ + obj_.original_tagname_ = 'info' # end class special_agent @@ -1803,6 +1834,7 @@ class booster(GeneratedsSuper): subclass = None superclass = None def __init__(self, member_id=None, firstname=None, lastname=None, other_name=None, class_=None, other_value=None, type_=None, client_handler=None): + self.original_tagname_ = None self.member_id = _cast(None, member_id) self.firstname = firstname self.lastname = lastname @@ -1866,6 +1898,8 @@ class booster(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2017,6 +2051,7 @@ class booster(GeneratedsSuper): obj_ = client_handlerType.factory() obj_.build(child_) self.client_handler.append(obj_) + obj_.original_tagname_ = 'client-handler' # end class booster @@ -2029,10 +2064,10 @@ class info(GeneratedsSuper): subclass = None superclass = None def __init__(self, rating=None, type_=None, name=None): + self.original_tagname_ = None self.rating = _cast(float, rating) self.type_ = _cast(int, type_) self.name = _cast(None, name) - pass def factory(*args_, **kwargs_): if info.subclass: return info.subclass(*args_, **kwargs_) @@ -2057,6 +2092,8 @@ class info(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2138,6 +2175,7 @@ class vehicle(GeneratedsSuper): subclass = None superclass = None def __init__(self, wheelcount=None, extensiontype_=None): + self.original_tagname_ = None self.wheelcount = wheelcount self.extensiontype_ = extensiontype_ def factory(*args_, **kwargs_): @@ -2162,6 +2200,8 @@ class vehicle(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2230,6 +2270,7 @@ class automobile(vehicle): subclass = None superclass = vehicle def __init__(self, wheelcount=None, drivername=None): + self.original_tagname_ = None super(automobile, self).__init__(wheelcount, ) self.drivername = drivername def factory(*args_, **kwargs_): @@ -2253,6 +2294,8 @@ class automobile(vehicle): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2313,6 +2356,7 @@ class airplane(vehicle): subclass = None superclass = vehicle def __init__(self, wheelcount=None, pilotname=None): + self.original_tagname_ = None super(airplane, self).__init__(wheelcount, ) self.pilotname = pilotname def factory(*args_, **kwargs_): @@ -2336,6 +2380,8 @@ class airplane(vehicle): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2414,6 +2460,7 @@ class programmer(person): subclass = None superclass = person def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, extensiontype_=None): + self.original_tagname_ = None super(programmer, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, extensiontype_, ) self.language = _cast(None, language) self.area = _cast(None, area) @@ -2505,6 +2552,8 @@ class programmer(person): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2779,6 +2828,7 @@ class programmer(person): obj_ = param.factory() obj_.build(child_) self.elparam = obj_ + obj_.original_tagname_ = 'elparam' elif nodeName_ == 'elarraytypes': elarraytypes_ = child_.text elarraytypes_ = self.gds_validate_string(elarraytypes_, node, 'elarraytypes') @@ -2796,6 +2846,7 @@ class client_handlerType(GeneratedsSuper): subclass = None superclass = None def __init__(self, fullname=None, refid=None): + self.original_tagname_ = None self.fullname = fullname self.refid = refid def factory(*args_, **kwargs_): @@ -2821,6 +2872,8 @@ class client_handlerType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2897,6 +2950,7 @@ class java_programmer(programmer): subclass = None superclass = programmer def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, status=None, nick_name=None, favorite_editor=None): + self.original_tagname_ = None super(java_programmer, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, language, area, attrnegint, attrposint, attrnonnegint, attrnonposint, email, elposint, elnonposint, elnegint, elnonnegint, eldate, eltoken, elshort, ellong, elparam, elarraytypes, ) self.status = _cast(None, status) self.nick_name = _cast(None, nick_name) @@ -2926,6 +2980,8 @@ class java_programmer(programmer): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -3011,6 +3067,7 @@ class python_programmer(programmer): subclass = None superclass = programmer def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, nick_name=None, favorite_editor=None): + self.original_tagname_ = None super(python_programmer, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, language, area, attrnegint, attrposint, attrnonnegint, attrnonposint, email, elposint, elnonposint, elnegint, elnonnegint, eldate, eltoken, elshort, ellong, elparam, elarraytypes, ) self.nick_name = _cast(None, nick_name) self.favorite_editor = favorite_editor @@ -3037,6 +3094,8 @@ class python_programmer(programmer): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -3173,9 +3232,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'people' rootClass = people rootObj = rootClass.factory() rootObj.build(rootNode) @@ -3184,7 +3243,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="people", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -3203,7 +3262,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from people_procincl2_sup import *\n\n') ## sys.stdout.write('import people_procincl2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/people_procincl2_sub.py b/tests/people_procincl2_sub.py index c3b5be6..55e0f42 100644 --- a/tests/people_procincl2_sub.py +++ b/tests/people_procincl2_sub.py @@ -261,9 +261,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'people' rootClass = supermod.people rootObj = rootClass.factory() rootObj.build(rootNode) @@ -272,8 +272,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from people_procincl2_sup import *\n\n') ## sys.stdout.write('import people_procincl2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.people(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="people") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/people_procincl2_sup.py b/tests/people_procincl2_sup.py index 87f7ddc..a3cc5d1 100644 --- a/tests/people_procincl2_sup.py +++ b/tests/people_procincl2_sup.py @@ -624,6 +624,7 @@ class people(GeneratedsSuper): subclass = None superclass = None def __init__(self, comments=None, person=None, specialperson=None, programmer=None, python_programmer=None, java_programmer=None): + self.original_tagname_ = None if comments is None: self.comments = [] else: @@ -695,6 +696,8 @@ class people(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -820,28 +823,34 @@ class people(GeneratedsSuper): obj_ = comments.factory() obj_.build(child_) self.comments.append(obj_) + obj_.original_tagname_ = 'comments' elif nodeName_ == 'person': class_obj_ = self.get_class_obj_(child_, person) obj_ = class_obj_.factory() obj_.build(child_) self.person.append(obj_) + obj_.original_tagname_ = 'person' elif nodeName_ == 'specialperson': obj_ = specialperson.factory() obj_.build(child_) self.specialperson.append(obj_) + obj_.original_tagname_ = 'specialperson' elif nodeName_ == 'programmer': class_obj_ = self.get_class_obj_(child_, programmer) obj_ = class_obj_.factory() obj_.build(child_) self.programmer.append(obj_) + obj_.original_tagname_ = 'programmer' elif nodeName_ == 'python-programmer': obj_ = python_programmer.factory() obj_.build(child_) self.python_programmer.append(obj_) + obj_.original_tagname_ = 'python-programmer' elif nodeName_ == 'java-programmer': obj_ = java_programmer.factory() obj_.build(child_) self.java_programmer.append(obj_) + obj_.original_tagname_ = 'java-programmer' # end class people @@ -854,6 +863,7 @@ class comments(GeneratedsSuper): subclass = None superclass = None def __init__(self, emp=None, bold=None, valueOf_=None, mixedclass_=None, content_=None): + self.original_tagname_ = None if emp is None: self.emp = [] else: @@ -902,6 +912,8 @@ class comments(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -995,6 +1007,7 @@ class person(GeneratedsSuper): subclass = None superclass = None def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, extensiontype_=None): + self.original_tagname_ = None self.vegetable = _cast(None, vegetable) self.fruit = _cast(None, fruit) self.ratio = _cast(float, ratio) @@ -1069,6 +1082,8 @@ class person(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1250,10 +1265,12 @@ class person(GeneratedsSuper): obj_ = agent.factory() obj_.build(child_) self.agent.append(obj_) + obj_.original_tagname_ = 'agent' elif nodeName_ == 'promoter': obj_ = booster.factory() obj_.build(child_) self.promoter.append(obj_) + obj_.original_tagname_ = 'promoter' elif nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') @@ -1267,8 +1284,8 @@ class specialperson(person): subclass = None superclass = person def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None): + self.original_tagname_ = None super(specialperson, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, ) - pass def factory(*args_, **kwargs_): if specialperson.subclass: return specialperson.subclass(*args_, **kwargs_) @@ -1287,6 +1304,8 @@ class specialperson(person): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1342,6 +1361,7 @@ class param(GeneratedsSuper): subclass = None superclass = None def __init__(self, semantic=None, name=None, flow=None, sid=None, type_=None, id=None, valueOf_=None): + self.original_tagname_ = None self.semantic = _cast(None, semantic) self.name = _cast(None, name) self.flow = _cast(None, flow) @@ -1381,6 +1401,8 @@ class param(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1498,6 +1520,7 @@ class agent(GeneratedsSuper): subclass = None superclass = None def __init__(self, firstname=None, lastname=None, priority=None, info=None, vehicle=None): + self.original_tagname_ = None self.firstname = firstname self.lastname = lastname self.priority = priority @@ -1540,6 +1563,8 @@ class agent(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1637,6 +1662,7 @@ class agent(GeneratedsSuper): obj_ = info.factory() obj_.build(child_) self.info = obj_ + obj_.original_tagname_ = 'info' elif nodeName_ == 'vehicle': type_name_ = child_.attrib.get( '{http://www.w3.org/2001/XMLSchema-instance}type') @@ -1655,6 +1681,7 @@ class agent(GeneratedsSuper): raise NotImplementedError( 'Class not implemented for <vehicle> element') self.vehicle.append(obj_) + obj_.original_tagname_ = 'vehicle' # end class agent @@ -1670,6 +1697,7 @@ class special_agent(GeneratedsSuper): subclass = None superclass = None def __init__(self, firstname=None, lastname=None, priority=None, info=None): + self.original_tagname_ = None self.firstname = firstname self.lastname = lastname self.priority = priority @@ -1703,6 +1731,8 @@ class special_agent(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1786,6 +1816,7 @@ class special_agent(GeneratedsSuper): obj_ = info.factory() obj_.build(child_) self.info = obj_ + obj_.original_tagname_ = 'info' # end class special_agent @@ -1803,6 +1834,7 @@ class booster(GeneratedsSuper): subclass = None superclass = None def __init__(self, member_id=None, firstname=None, lastname=None, other_name=None, class_=None, other_value=None, type_=None, client_handler=None): + self.original_tagname_ = None self.member_id = _cast(None, member_id) self.firstname = firstname self.lastname = lastname @@ -1866,6 +1898,8 @@ class booster(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2017,6 +2051,7 @@ class booster(GeneratedsSuper): obj_ = client_handlerType.factory() obj_.build(child_) self.client_handler.append(obj_) + obj_.original_tagname_ = 'client-handler' # end class booster @@ -2029,10 +2064,10 @@ class info(GeneratedsSuper): subclass = None superclass = None def __init__(self, rating=None, type_=None, name=None): + self.original_tagname_ = None self.rating = _cast(float, rating) self.type_ = _cast(int, type_) self.name = _cast(None, name) - pass def factory(*args_, **kwargs_): if info.subclass: return info.subclass(*args_, **kwargs_) @@ -2057,6 +2092,8 @@ class info(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2138,6 +2175,7 @@ class vehicle(GeneratedsSuper): subclass = None superclass = None def __init__(self, wheelcount=None, extensiontype_=None): + self.original_tagname_ = None self.wheelcount = wheelcount self.extensiontype_ = extensiontype_ def factory(*args_, **kwargs_): @@ -2162,6 +2200,8 @@ class vehicle(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2230,6 +2270,7 @@ class automobile(vehicle): subclass = None superclass = vehicle def __init__(self, wheelcount=None, drivername=None): + self.original_tagname_ = None super(automobile, self).__init__(wheelcount, ) self.drivername = drivername def factory(*args_, **kwargs_): @@ -2253,6 +2294,8 @@ class automobile(vehicle): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2313,6 +2356,7 @@ class airplane(vehicle): subclass = None superclass = vehicle def __init__(self, wheelcount=None, pilotname=None): + self.original_tagname_ = None super(airplane, self).__init__(wheelcount, ) self.pilotname = pilotname def factory(*args_, **kwargs_): @@ -2336,6 +2380,8 @@ class airplane(vehicle): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2414,6 +2460,7 @@ class programmer(person): subclass = None superclass = person def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, extensiontype_=None): + self.original_tagname_ = None super(programmer, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, extensiontype_, ) self.language = _cast(None, language) self.area = _cast(None, area) @@ -2505,6 +2552,8 @@ class programmer(person): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2779,6 +2828,7 @@ class programmer(person): obj_ = param.factory() obj_.build(child_) self.elparam = obj_ + obj_.original_tagname_ = 'elparam' elif nodeName_ == 'elarraytypes': elarraytypes_ = child_.text elarraytypes_ = self.gds_validate_string(elarraytypes_, node, 'elarraytypes') @@ -2796,6 +2846,7 @@ class client_handlerType(GeneratedsSuper): subclass = None superclass = None def __init__(self, fullname=None, refid=None): + self.original_tagname_ = None self.fullname = fullname self.refid = refid def factory(*args_, **kwargs_): @@ -2821,6 +2872,8 @@ class client_handlerType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -2897,6 +2950,7 @@ class java_programmer(programmer): subclass = None superclass = programmer def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, status=None, nick_name=None, favorite_editor=None): + self.original_tagname_ = None super(java_programmer, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, language, area, attrnegint, attrposint, attrnonnegint, attrnonposint, email, elposint, elnonposint, elnegint, elnonnegint, eldate, eltoken, elshort, ellong, elparam, elarraytypes, ) self.status = _cast(None, status) self.nick_name = _cast(None, nick_name) @@ -2926,6 +2980,8 @@ class java_programmer(programmer): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -3011,6 +3067,7 @@ class python_programmer(programmer): subclass = None superclass = programmer def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, agent=None, promoter=None, description=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, nick_name=None, favorite_editor=None): + self.original_tagname_ = None super(python_programmer, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, language, area, attrnegint, attrposint, attrnonnegint, attrnonposint, email, elposint, elnonposint, elnegint, elnonnegint, eldate, eltoken, elshort, ellong, elparam, elarraytypes, ) self.nick_name = _cast(None, nick_name) self.favorite_editor = favorite_editor @@ -3037,6 +3094,8 @@ class python_programmer(programmer): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -3173,9 +3232,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'people' rootClass = people rootObj = rootClass.factory() rootObj.build(rootNode) @@ -3184,7 +3243,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="people", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -3203,7 +3262,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from people_procincl2_sup import *\n\n') ## sys.stdout.write('import people_procincl2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/people_procincl_a.xsd b/tests/people_procincl_a.xsd index 6fad497..d637f39 100644 --- a/tests/people_procincl_a.xsd +++ b/tests/people_procincl_a.xsd @@ -5,7 +5,7 @@ <xs:include schemaLocation="people_10b.xsd" /> --> - <xs:include schemaLocation="http://www.rexx.com/~dkuhlman/people_procincl_c.xsd" /> + <xs:include schemaLocation="http://www.davekuhlman.org/people_procincl_c.xsd" /> <xs:element name="comments"> <xs:complexType mixed="true"> diff --git a/tests/recursive_simpletype1_sub.py b/tests/recursive_simpletype1_sub.py index db59f2a..48dee5d 100644 --- a/tests/recursive_simpletype1_sub.py +++ b/tests/recursive_simpletype1_sub.py @@ -95,7 +95,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'person' + rootTag = 'PersonType' rootClass = supermod.PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -115,7 +115,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'person' + rootTag = 'PersonType' rootClass = supermod.PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -139,7 +139,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'person' + rootTag = 'PersonType' rootClass = supermod.PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -156,9 +156,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'PersonType' rootClass = supermod.PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -167,8 +167,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from recursive_simpletype2_sup import *\n\n') ## sys.stdout.write('import recursive_simpletype2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.person(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="person") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/recursive_simpletype1_sup.py b/tests/recursive_simpletype1_sup.py index 181be29..8e08f9b 100644 --- a/tests/recursive_simpletype1_sup.py +++ b/tests/recursive_simpletype1_sup.py @@ -620,6 +620,7 @@ class PersonType(GeneratedsSuper): subclass = None superclass = None def __init__(self, personId=None, fname=None, lname=None): + self.original_tagname_ = None self.personId = personId self.fname = fname self.lname = lname @@ -649,6 +650,8 @@ class PersonType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -751,7 +754,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'person' + rootTag = 'PersonType' rootClass = PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -771,7 +774,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'person' + rootTag = 'PersonType' rootClass = PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -793,9 +796,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'PersonType' rootClass = PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -804,7 +807,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="person", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -814,7 +817,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'person' + rootTag = 'PersonType' rootClass = PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -823,7 +826,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from recursive_simpletype2_sup import *\n\n') ## sys.stdout.write('import recursive_simpletype2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/recursive_simpletype2_sub.py b/tests/recursive_simpletype2_sub.py index db59f2a..48dee5d 100644 --- a/tests/recursive_simpletype2_sub.py +++ b/tests/recursive_simpletype2_sub.py @@ -95,7 +95,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'person' + rootTag = 'PersonType' rootClass = supermod.PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -115,7 +115,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'person' + rootTag = 'PersonType' rootClass = supermod.PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -139,7 +139,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'person' + rootTag = 'PersonType' rootClass = supermod.PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -156,9 +156,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'PersonType' rootClass = supermod.PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -167,8 +167,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from recursive_simpletype2_sup import *\n\n') ## sys.stdout.write('import recursive_simpletype2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.person(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="person") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/recursive_simpletype2_sup.py b/tests/recursive_simpletype2_sup.py index 181be29..8e08f9b 100644 --- a/tests/recursive_simpletype2_sup.py +++ b/tests/recursive_simpletype2_sup.py @@ -620,6 +620,7 @@ class PersonType(GeneratedsSuper): subclass = None superclass = None def __init__(self, personId=None, fname=None, lname=None): + self.original_tagname_ = None self.personId = personId self.fname = fname self.lname = lname @@ -649,6 +650,8 @@ class PersonType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -751,7 +754,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'person' + rootTag = 'PersonType' rootClass = PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -771,7 +774,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'person' + rootTag = 'PersonType' rootClass = PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -793,9 +796,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'PersonType' rootClass = PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -804,7 +807,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="person", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -814,7 +817,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'person' + rootTag = 'PersonType' rootClass = PersonType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -823,7 +826,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from recursive_simpletype2_sup import *\n\n') ## sys.stdout.write('import recursive_simpletype2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/simplecontent_restriction1_sub.py b/tests/simplecontent_restriction1_sub.py index f986e75..99b68be 100644 --- a/tests/simplecontent_restriction1_sub.py +++ b/tests/simplecontent_restriction1_sub.py @@ -170,9 +170,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'IdentifierType' rootClass = supermod.IdentifierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -181,8 +181,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from simplecontent_restriction2_sup import *\n\n') ## sys.stdout.write('import simplecontent_restriction2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.IdentifierType(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="IdentifierType") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/simplecontent_restriction1_sup.py b/tests/simplecontent_restriction1_sup.py index 74e9032..e249811 100644 --- a/tests/simplecontent_restriction1_sup.py +++ b/tests/simplecontent_restriction1_sup.py @@ -625,6 +625,7 @@ class IdentifierType(GeneratedsSuper): subclass = None superclass = None def __init__(self, schemeDataURI=None, schemeID=None, schemeAgencyName=None, schemeAgencyID=None, schemeName=None, schemeVersionID=None, schemeURI=None, valueOf_=None, extensiontype_=None): + self.original_tagname_ = None self.schemeDataURI = _cast(None, schemeDataURI) self.schemeID = _cast(None, schemeID) self.schemeAgencyName = _cast(None, schemeAgencyName) @@ -670,6 +671,8 @@ class IdentifierType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -801,6 +804,7 @@ class BillOfResourcesIDType(IdentifierType): subclass = None superclass = IdentifierType def __init__(self, schemeDataURI=None, schemeID=None, schemeAgencyName=None, schemeAgencyID=None, schemeName=None, schemeVersionID=None, schemeURI=None, valueOf_=None): + self.original_tagname_ = None super(BillOfResourcesIDType, self).__init__(schemeDataURI, schemeID, schemeAgencyName, schemeAgencyID, schemeName, schemeVersionID, schemeURI, valueOf_, ) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -824,6 +828,8 @@ class BillOfResourcesIDType(IdentifierType): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -875,6 +881,7 @@ class BillOfMaterialIDType(IdentifierType): subclass = None superclass = IdentifierType def __init__(self, schemeDataURI=None, schemeID=None, schemeAgencyName=None, schemeAgencyID=None, schemeName=None, schemeVersionID=None, schemeURI=None, valueOf_=None): + self.original_tagname_ = None super(BillOfMaterialIDType, self).__init__(schemeDataURI, schemeID, schemeAgencyName, schemeAgencyID, schemeName, schemeVersionID, schemeURI, valueOf_, ) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -898,6 +905,8 @@ class BillOfMaterialIDType(IdentifierType): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1011,9 +1020,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'IdentifierType' rootClass = IdentifierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1022,7 +1031,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="IdentifierType", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -1041,7 +1050,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from simplecontent_restriction2_sup import *\n\n') ## sys.stdout.write('import simplecontent_restriction2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/simplecontent_restriction2_sub.py b/tests/simplecontent_restriction2_sub.py index f986e75..99b68be 100644 --- a/tests/simplecontent_restriction2_sub.py +++ b/tests/simplecontent_restriction2_sub.py @@ -170,9 +170,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'IdentifierType' rootClass = supermod.IdentifierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -181,8 +181,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from simplecontent_restriction2_sup import *\n\n') ## sys.stdout.write('import simplecontent_restriction2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.IdentifierType(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="IdentifierType") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/simplecontent_restriction2_sup.py b/tests/simplecontent_restriction2_sup.py index 74e9032..e249811 100644 --- a/tests/simplecontent_restriction2_sup.py +++ b/tests/simplecontent_restriction2_sup.py @@ -625,6 +625,7 @@ class IdentifierType(GeneratedsSuper): subclass = None superclass = None def __init__(self, schemeDataURI=None, schemeID=None, schemeAgencyName=None, schemeAgencyID=None, schemeName=None, schemeVersionID=None, schemeURI=None, valueOf_=None, extensiontype_=None): + self.original_tagname_ = None self.schemeDataURI = _cast(None, schemeDataURI) self.schemeID = _cast(None, schemeID) self.schemeAgencyName = _cast(None, schemeAgencyName) @@ -670,6 +671,8 @@ class IdentifierType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -801,6 +804,7 @@ class BillOfResourcesIDType(IdentifierType): subclass = None superclass = IdentifierType def __init__(self, schemeDataURI=None, schemeID=None, schemeAgencyName=None, schemeAgencyID=None, schemeName=None, schemeVersionID=None, schemeURI=None, valueOf_=None): + self.original_tagname_ = None super(BillOfResourcesIDType, self).__init__(schemeDataURI, schemeID, schemeAgencyName, schemeAgencyID, schemeName, schemeVersionID, schemeURI, valueOf_, ) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -824,6 +828,8 @@ class BillOfResourcesIDType(IdentifierType): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -875,6 +881,7 @@ class BillOfMaterialIDType(IdentifierType): subclass = None superclass = IdentifierType def __init__(self, schemeDataURI=None, schemeID=None, schemeAgencyName=None, schemeAgencyID=None, schemeName=None, schemeVersionID=None, schemeURI=None, valueOf_=None): + self.original_tagname_ = None super(BillOfMaterialIDType, self).__init__(schemeDataURI, schemeID, schemeAgencyName, schemeAgencyID, schemeName, schemeVersionID, schemeURI, valueOf_, ) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -898,6 +905,8 @@ class BillOfMaterialIDType(IdentifierType): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1011,9 +1020,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'IdentifierType' rootClass = IdentifierType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1022,7 +1031,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="IdentifierType", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -1041,7 +1050,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from simplecontent_restriction2_sup import *\n\n') ## sys.stdout.write('import simplecontent_restriction2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/simpletype_memberspecs1_sub.py b/tests/simpletype_memberspecs1_sub.py index f917d7b..91d67ee 100644 --- a/tests/simpletype_memberspecs1_sub.py +++ b/tests/simpletype_memberspecs1_sub.py @@ -163,9 +163,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'SpecialDate' rootClass = supermod.SpecialDate rootObj = rootClass.factory() rootObj.build(rootNode) @@ -174,8 +174,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from simpletype_memberspecs2_sup import *\n\n') ## sys.stdout.write('import simpletype_memberspecs2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.SpecialDate(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="SpecialDate") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/simpletype_memberspecs1_sup.py b/tests/simpletype_memberspecs1_sup.py index 0ee76d8..77fe1ff 100644 --- a/tests/simpletype_memberspecs1_sup.py +++ b/tests/simpletype_memberspecs1_sup.py @@ -619,6 +619,7 @@ class SpecialDate(GeneratedsSuper): subclass = None superclass = None def __init__(self, SpecialProperty=None, valueOf_=None): + self.original_tagname_ = None self.SpecialProperty = _cast(None, SpecialProperty) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -643,6 +644,8 @@ class SpecialDate(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -701,6 +704,7 @@ class ExtremeDate(GeneratedsSuper): subclass = None superclass = None def __init__(self, ExtremeProperty=None, valueOf_=None): + self.original_tagname_ = None self.ExtremeProperty = _cast(None, ExtremeProperty) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -725,6 +729,8 @@ class ExtremeDate(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -844,9 +850,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'SpecialDate' rootClass = SpecialDate rootObj = rootClass.factory() rootObj.build(rootNode) @@ -855,7 +861,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="SpecialDate", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='xmlns:pl="http://kuhlman.com/people.xsd"') return rootObj @@ -874,7 +880,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from simpletype_memberspecs2_sup import *\n\n') ## sys.stdout.write('import simpletype_memberspecs2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/simpletype_memberspecs2_sub.py b/tests/simpletype_memberspecs2_sub.py index f917d7b..91d67ee 100644 --- a/tests/simpletype_memberspecs2_sub.py +++ b/tests/simpletype_memberspecs2_sub.py @@ -163,9 +163,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'SpecialDate' rootClass = supermod.SpecialDate rootObj = rootClass.factory() rootObj.build(rootNode) @@ -174,8 +174,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from simpletype_memberspecs2_sup import *\n\n') ## sys.stdout.write('import simpletype_memberspecs2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.SpecialDate(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="SpecialDate") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/simpletype_memberspecs2_sup.py b/tests/simpletype_memberspecs2_sup.py index 0ee76d8..77fe1ff 100644 --- a/tests/simpletype_memberspecs2_sup.py +++ b/tests/simpletype_memberspecs2_sup.py @@ -619,6 +619,7 @@ class SpecialDate(GeneratedsSuper): subclass = None superclass = None def __init__(self, SpecialProperty=None, valueOf_=None): + self.original_tagname_ = None self.SpecialProperty = _cast(None, SpecialProperty) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -643,6 +644,8 @@ class SpecialDate(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -701,6 +704,7 @@ class ExtremeDate(GeneratedsSuper): subclass = None superclass = None def __init__(self, ExtremeProperty=None, valueOf_=None): + self.original_tagname_ = None self.ExtremeProperty = _cast(None, ExtremeProperty) self.valueOf_ = valueOf_ def factory(*args_, **kwargs_): @@ -725,6 +729,8 @@ class ExtremeDate(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -844,9 +850,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'SpecialDate' rootClass = SpecialDate rootObj = rootClass.factory() rootObj.build(rootNode) @@ -855,7 +861,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="SpecialDate", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='xmlns:pl="http://kuhlman.com/people.xsd"') return rootObj @@ -874,7 +880,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from simpletype_memberspecs2_sup import *\n\n') ## sys.stdout.write('import simpletype_memberspecs2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/simpletypes_other1_sub.py b/tests/simpletypes_other1_sub.py index 81260f7..c2fae5d 100644 --- a/tests/simpletypes_other1_sub.py +++ b/tests/simpletypes_other1_sub.py @@ -102,7 +102,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'simpleTypeTests' + rootTag = 'simpleTypeTestsType' rootClass = supermod.simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -122,7 +122,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'simpleTypeTests' + rootTag = 'simpleTypeTestsType' rootClass = supermod.simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -146,7 +146,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'simpleTypeTests' + rootTag = 'simpleTypeTestsType' rootClass = supermod.simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -163,9 +163,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'simpleTypeTestsType' rootClass = supermod.simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -174,8 +174,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from simpletypes_other2_sup import *\n\n') ## sys.stdout.write('import simpletypes_other2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.simpleTypeTests(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="simpleTypeTests") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/simpletypes_other1_sup.py b/tests/simpletypes_other1_sup.py index 3e58a68..3088ea6 100644 --- a/tests/simpletypes_other1_sup.py +++ b/tests/simpletypes_other1_sup.py @@ -618,6 +618,7 @@ class simpleTypeTestsType(GeneratedsSuper): subclass = None superclass = None def __init__(self, simpleTypeTest=None): + self.original_tagname_ = None if simpleTypeTest is None: self.simpleTypeTest = [] else: @@ -644,6 +645,8 @@ class simpleTypeTestsType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -727,6 +730,7 @@ class simpleTypeTest(GeneratedsSuper): subclass = None superclass = None def __init__(self, datetime1=None, datetime2=None, datetime3=None, datetime4=None, datetime5=None, integerVal1=None, integerVal2=None, stringVal1=None, stringVal2=None, booleanVal1=None, booleanVal2=None, decimalVal1=None, decimalVal2=None, doubleVal1=None, doubleVal2=None, floatVal1=None, floatVal2=None, dateVal1=None, dateVal2=None, dateTimeVal1=None, dateTimeVal2=None): + self.original_tagname_ = None self.datetime1 = datetime1 self.datetime2 = datetime2 self.datetime3 = datetime3 @@ -876,6 +880,8 @@ class simpleTypeTest(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1246,7 +1252,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'simpleTypeTests' + rootTag = 'simpleTypeTestsType' rootClass = simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1266,7 +1272,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'simpleTypeTests' + rootTag = 'simpleTypeTestsType' rootClass = simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1288,9 +1294,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'simpleTypeTestsType' rootClass = simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1299,7 +1305,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="simpleTypeTests", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -1309,7 +1315,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'simpleTypeTests' + rootTag = 'simpleTypeTestsType' rootClass = simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1318,7 +1324,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from simpletypes_other2_sup import *\n\n') ## sys.stdout.write('import simpletypes_other2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/simpletypes_other2_sub.py b/tests/simpletypes_other2_sub.py index 81260f7..c2fae5d 100644 --- a/tests/simpletypes_other2_sub.py +++ b/tests/simpletypes_other2_sub.py @@ -102,7 +102,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'simpleTypeTests' + rootTag = 'simpleTypeTestsType' rootClass = supermod.simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -122,7 +122,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'simpleTypeTests' + rootTag = 'simpleTypeTestsType' rootClass = supermod.simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -146,7 +146,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'simpleTypeTests' + rootTag = 'simpleTypeTestsType' rootClass = supermod.simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -163,9 +163,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'simpleTypeTestsType' rootClass = supermod.simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -174,8 +174,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from simpletypes_other2_sup import *\n\n') ## sys.stdout.write('import simpletypes_other2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.simpleTypeTests(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="simpleTypeTests") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/simpletypes_other2_sup.py b/tests/simpletypes_other2_sup.py index 3e58a68..3088ea6 100644 --- a/tests/simpletypes_other2_sup.py +++ b/tests/simpletypes_other2_sup.py @@ -618,6 +618,7 @@ class simpleTypeTestsType(GeneratedsSuper): subclass = None superclass = None def __init__(self, simpleTypeTest=None): + self.original_tagname_ = None if simpleTypeTest is None: self.simpleTypeTest = [] else: @@ -644,6 +645,8 @@ class simpleTypeTestsType(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -727,6 +730,7 @@ class simpleTypeTest(GeneratedsSuper): subclass = None superclass = None def __init__(self, datetime1=None, datetime2=None, datetime3=None, datetime4=None, datetime5=None, integerVal1=None, integerVal2=None, stringVal1=None, stringVal2=None, booleanVal1=None, booleanVal2=None, decimalVal1=None, decimalVal2=None, doubleVal1=None, doubleVal2=None, floatVal1=None, floatVal2=None, dateVal1=None, dateVal2=None, dateTimeVal1=None, dateTimeVal2=None): + self.original_tagname_ = None self.datetime1 = datetime1 self.datetime2 = datetime2 self.datetime3 = datetime3 @@ -876,6 +880,8 @@ class simpleTypeTest(GeneratedsSuper): eol_ = '\n' else: eol_ = '' + if self.original_tagname_ is not None: + name_ = self.original_tagname_ showIndent(outfile, level, pretty_print) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() @@ -1246,7 +1252,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'simpleTypeTests' + rootTag = 'simpleTypeTestsType' rootClass = simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1266,7 +1272,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'simpleTypeTests' + rootTag = 'simpleTypeTestsType' rootClass = simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1288,9 +1294,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'simpleTypeTestsType' rootClass = simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1299,7 +1305,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="simpleTypeTests", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -1309,7 +1315,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'simpleTypeTests' + rootTag = 'simpleTypeTestsType' rootClass = simpleTypeTestsType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -1318,7 +1324,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from simpletypes_other2_sup import *\n\n') ## sys.stdout.write('import simpletypes_other2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/test.py b/tests/test.py index 5d6762f..2257709 100755 --- a/tests/test.py +++ b/tests/test.py @@ -280,7 +280,7 @@ class GenTest(unittest.TestCase): result, err = self.execute(cmd) self.check_result(result, err, ()) - def test_012_abstracttype(self): + def test_012_abstract_type(self): cmdTempl = ( 'python generateDS.py --no-dates --no-versions ' '--silence --member-specs=list -f ' @@ -297,7 +297,7 @@ class GenTest(unittest.TestCase): result, err = self.execute(cmd) self.check_result(result, err, ()) - def test_013_procincl(self): + def test_013_people_procincl(self): cmdTempl = ( 'python generateDS.py --no-dates --no-versions ' '--silence --member-specs=list -f ' @@ -315,7 +315,7 @@ class GenTest(unittest.TestCase): result, err = self.execute(cmd) self.check_result(result, err, ()) - def test_014_xsi_type(self): + def test_014_ipo(self): cmdTempl = ( 'python generateDS.py --no-dates --no-versions ' '--member-specs=list -f ' @@ -494,6 +494,18 @@ class GenTest(unittest.TestCase): t_, t_, ) result, err = self.execute(cmd) self.check_result(result, err, ('sys.stdout.write',)) + cmd = 'diff OnePer/%sType01_1One.py OnePer/%sType01_2One.py' % ( + t_, t_, ) + result, err = self.execute(cmd) + self.check_result(result, err, ('sys.stdout.write',)) + cmd = 'diff OnePer/%sType02_1One.py OnePer/%sType02_2One.py' % ( + t_, t_, ) + result, err = self.execute(cmd) + self.check_result(result, err, ('sys.stdout.write',)) + cmd = 'diff OnePer/%sType03_1One.py OnePer/%sType03_2One.py' % ( + t_, t_, ) + result, err = self.execute(cmd) + self.check_result(result, err, ('sys.stdout.write',)) def check_result(self, result, err, ignore_strings): self.failUnlessEqual(len(result), 0) diff --git a/tests/to_etree1_sub.py b/tests/to_etree1_sub.py index 1771174..c5dbe1b 100644 --- a/tests/to_etree1_sub.py +++ b/tests/to_etree1_sub.py @@ -214,7 +214,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'people' + rootTag = 'peopleType' rootClass = supermod.peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -234,7 +234,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'people' + rootTag = 'peopleType' rootClass = supermod.peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -258,7 +258,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'people' + rootTag = 'peopleType' rootClass = supermod.peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -275,9 +275,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'peopleType' rootClass = supermod.peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -286,8 +286,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from to_etree2_sup import *\n\n') ## sys.stdout.write('import to_etree2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.people(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="people") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/to_etree1_sup.py b/tests/to_etree1_sup.py index 9f729d2..3f03962 100644 --- a/tests/to_etree1_sup.py +++ b/tests/to_etree1_sup.py @@ -623,6 +623,7 @@ class peopleType(GeneratedsSuper): subclass = None superclass = None def __init__(self, comments=None, person=None, specialperson=None, programmer=None, python_programmer=None, java_programmer=None): + self.original_tagname_ = None if comments is None: self.comments = [] else: @@ -723,28 +724,34 @@ class peopleType(GeneratedsSuper): obj_ = commentsType.factory() obj_.build(child_) self.comments.append(obj_) + obj_.original_tagname_ = 'comments' elif nodeName_ == 'person': class_obj_ = self.get_class_obj_(child_, personType) obj_ = class_obj_.factory() obj_.build(child_) self.person.append(obj_) + obj_.original_tagname_ = 'person' elif nodeName_ == 'specialperson': obj_ = specialperson.factory() obj_.build(child_) self.specialperson.append(obj_) + obj_.original_tagname_ = 'specialperson' elif nodeName_ == 'programmer': class_obj_ = self.get_class_obj_(child_, programmerType) obj_ = class_obj_.factory() obj_.build(child_) self.programmer.append(obj_) + obj_.original_tagname_ = 'programmer' elif nodeName_ == 'python-programmer': obj_ = python_programmerType.factory() obj_.build(child_) self.python_programmer.append(obj_) + obj_.original_tagname_ = 'python-programmer' elif nodeName_ == 'java-programmer': obj_ = java_programmerType.factory() obj_.build(child_) self.java_programmer.append(obj_) + obj_.original_tagname_ = 'java-programmer' # end class peopleType @@ -757,6 +764,7 @@ class commentsType(GeneratedsSuper): subclass = None superclass = None def __init__(self, emp=None, bold=None, valueOf_=None, mixedclass_=None, content_=None): + self.original_tagname_ = None if emp is None: self.emp = [] else: @@ -861,6 +869,7 @@ class personType(GeneratedsSuper): subclass = None superclass = None def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, hot_agent=None, agent=None, promoter=None, description=None, range_=None, extensiontype_=None): + self.original_tagname_ = None self.vegetable = _cast(None, vegetable) self.fruit = _cast(None, fruit) self.ratio = _cast(float, ratio) @@ -1041,15 +1050,18 @@ class personType(GeneratedsSuper): obj_ = hot_agent.factory() obj_.build(child_) self.hot_agent = obj_ + obj_.original_tagname_ = 'hot.agent' elif nodeName_ == 'agent': class_obj_ = self.get_class_obj_(child_, agentType) obj_ = class_obj_.factory() obj_.build(child_) self.agent.append(obj_) + obj_.original_tagname_ = 'agent' elif nodeName_ == 'promoter': obj_ = boosterType.factory() obj_.build(child_) self.promoter.append(obj_) + obj_.original_tagname_ = 'promoter' elif nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') @@ -1072,8 +1084,8 @@ class specialperson(personType): subclass = None superclass = personType def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, hot_agent=None, agent=None, promoter=None, description=None, range_=None): + self.original_tagname_ = None super(specialperson, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, hot_agent, agent, promoter, description, range_, ) - pass def factory(*args_, **kwargs_): if specialperson.subclass: return specialperson.subclass(*args_, **kwargs_) @@ -1132,6 +1144,7 @@ class programmerType(personType): subclass = None superclass = personType def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, hot_agent=None, agent=None, promoter=None, description=None, range_=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eldatetime=None, eldatetime1=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, extensiontype_=None): + self.original_tagname_ = None super(programmerType, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, hot_agent, agent, promoter, description, range_, extensiontype_, ) self.language = _cast(None, language) self.area = _cast(None, area) @@ -1431,6 +1444,7 @@ class programmerType(personType): obj_ = paramType.factory() obj_.build(child_) self.elparam = obj_ + obj_.original_tagname_ = 'elparam' elif nodeName_ == 'elarraytypes': elarraytypes_ = child_.text elarraytypes_ = self.gds_validate_string(elarraytypes_, node, 'elarraytypes') @@ -1453,6 +1467,7 @@ class paramType(GeneratedsSuper): subclass = None superclass = None def __init__(self, semantic=None, name=None, flow=None, sid=None, type_=None, id=None, valueOf_=None): + self.original_tagname_ = None self.semantic = _cast(None, semantic) self.name = _cast(None, name) self.flow = _cast(None, flow) @@ -1565,6 +1580,7 @@ class python_programmerType(programmerType): subclass = None superclass = programmerType def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, hot_agent=None, agent=None, promoter=None, description=None, range_=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eldatetime=None, eldatetime1=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, drcs_attr=None, nick_name=None, gui_developer=None, favorite_editor=None, flowvalue=None, drcs=None): + self.original_tagname_ = None super(python_programmerType, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, hot_agent, agent, promoter, description, range_, language, area, attrnegint, attrposint, attrnonnegint, attrnonposint, email, elposint, elnonposint, elnegint, elnonnegint, eldate, eldatetime, eldatetime1, eltoken, elshort, ellong, elparam, elarraytypes, ) self.drcs_attr = _cast(None, drcs_attr) self.nick_name = _cast(None, nick_name) @@ -1685,6 +1701,7 @@ class java_programmerType(programmerType): subclass = None superclass = programmerType def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, hot_agent=None, agent=None, promoter=None, description=None, range_=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eldatetime=None, eldatetime1=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, status=None, nick_name=None, favorite_editor=None, datetime1=None, datetime2=None, datetime3=None, datetime4=None, datetime5=None): + self.original_tagname_ = None super(java_programmerType, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, hot_agent, agent, promoter, description, range_, language, area, attrnegint, attrposint, attrnonnegint, attrnonposint, email, elposint, elnonposint, elnegint, elnonnegint, eldate, eldatetime, eldatetime1, eltoken, elshort, ellong, elparam, elarraytypes, ) self.status = _cast(None, status) self.nick_name = _cast(None, nick_name) @@ -1813,6 +1830,7 @@ class agentType(GeneratedsSuper): subclass = None superclass = None def __init__(self, firstname=None, lastname=None, priority=None, info=None, vehicle=None, extensiontype_=None): + self.original_tagname_ = None self.firstname = firstname self.lastname = lastname self.priority = priority @@ -1910,11 +1928,13 @@ class agentType(GeneratedsSuper): obj_ = infoType.factory() obj_.build(child_) self.info = obj_ + obj_.original_tagname_ = 'info' elif nodeName_ == 'vehicle': class_obj_ = self.get_class_obj_(child_, vehicleType) obj_ = class_obj_.factory() obj_.build(child_) self.vehicle.append(obj_) + obj_.original_tagname_ = 'vehicle' # end class agentType @@ -1930,6 +1950,7 @@ class special_agentType(agentType): subclass = None superclass = agentType def __init__(self, firstname=None, lastname=None, priority=None, info=None, vehicle=None): + self.original_tagname_ = None super(special_agentType, self).__init__(firstname, lastname, priority, info, vehicle, ) self.firstname = firstname self.lastname = lastname @@ -2007,6 +2028,7 @@ class special_agentType(agentType): obj_ = infoType.factory() obj_.build(child_) self.info = obj_ + obj_.original_tagname_ = 'info' super(special_agentType, self).buildChildren(child_, node, nodeName_, True) # end class special_agentType @@ -2023,6 +2045,7 @@ class weird_agentType(agentType): subclass = None superclass = agentType def __init__(self, firstname=None, lastname=None, priority=None, info=None, vehicle=None): + self.original_tagname_ = None super(weird_agentType, self).__init__(firstname, lastname, priority, info, vehicle, ) self.firstname = firstname self.lastname = lastname @@ -2100,6 +2123,7 @@ class weird_agentType(agentType): obj_ = infoType.factory() obj_.build(child_) self.info = obj_ + obj_.original_tagname_ = 'info' super(weird_agentType, self).buildChildren(child_, node, nodeName_, True) # end class weird_agentType @@ -2118,6 +2142,7 @@ class boosterType(GeneratedsSuper): subclass = None superclass = None def __init__(self, member_id=None, firstname=None, lastname=None, other_name=None, class_=None, other_value=None, type_=None, client_handler=None): + self.original_tagname_ = None self.member_id = _cast(None, member_id) self.firstname = firstname self.lastname = lastname @@ -2261,6 +2286,7 @@ class boosterType(GeneratedsSuper): obj_ = client_handlerType.factory() obj_.build(child_) self.client_handler.append(obj_) + obj_.original_tagname_ = 'client-handler' # end class boosterType @@ -2273,10 +2299,10 @@ class infoType(GeneratedsSuper): subclass = None superclass = None def __init__(self, rating=None, type_=None, name=None): + self.original_tagname_ = None self.rating = _cast(float, rating) self.type_ = _cast(int, type_) self.name = _cast(None, name) - pass def factory(*args_, **kwargs_): if infoType.subclass: return infoType.subclass(*args_, **kwargs_) @@ -2348,6 +2374,7 @@ class vehicleType(GeneratedsSuper): subclass = None superclass = None def __init__(self, wheelcount=None, extensiontype_=None): + self.original_tagname_ = None self.wheelcount = wheelcount self.extensiontype_ = extensiontype_ def factory(*args_, **kwargs_): @@ -2411,6 +2438,7 @@ class automobile(vehicleType): subclass = None superclass = vehicleType def __init__(self, wheelcount=None, drivername=None): + self.original_tagname_ = None super(automobile, self).__init__(wheelcount, ) self.drivername = drivername def factory(*args_, **kwargs_): @@ -2462,6 +2490,7 @@ class airplane(vehicleType): subclass = None superclass = vehicleType def __init__(self, wheelcount=None, pilotname=None): + self.original_tagname_ = None super(airplane, self).__init__(wheelcount, ) self.pilotname = pilotname def factory(*args_, **kwargs_): @@ -2516,6 +2545,7 @@ class hot_agent(GeneratedsSuper): subclass = None superclass = None def __init__(self, firstname='empty\\name', lastname='no \'last\' name', priority=None, startDate=None): + self.original_tagname_ = None self.firstname = firstname self.lastname = lastname self.priority = priority @@ -2615,6 +2645,7 @@ class client_handlerType(GeneratedsSuper): subclass = None superclass = None def __init__(self, fullname=None, refid=None): + self.original_tagname_ = None self.fullname = fullname self.refid = refid def factory(*args_, **kwargs_): @@ -2717,7 +2748,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'people' + rootTag = 'peopleType' rootClass = peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -2737,7 +2768,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'people' + rootTag = 'peopleType' rootClass = peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -2759,9 +2790,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'peopleType' rootClass = peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -2770,7 +2801,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="people", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -2780,7 +2811,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'people' + rootTag = 'peopleType' rootClass = peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -2789,7 +2820,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from to_etree2_sup import *\n\n') ## sys.stdout.write('import to_etree2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/to_etree2_sub.py b/tests/to_etree2_sub.py index 1771174..c5dbe1b 100644 --- a/tests/to_etree2_sub.py +++ b/tests/to_etree2_sub.py @@ -214,7 +214,7 @@ def parse(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'people' + rootTag = 'peopleType' rootClass = supermod.peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -234,7 +234,7 @@ def parseEtree(inFilename, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'people' + rootTag = 'peopleType' rootClass = supermod.peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -258,7 +258,7 @@ def parseString(inString, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'people' + rootTag = 'peopleType' rootClass = supermod.peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -275,9 +275,9 @@ def parseString(inString, silence=False): def parseLiteral(inFilename, silence=False): doc = parsexml_(inFilename) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'peopleType' rootClass = supermod.peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -286,8 +286,8 @@ def parseLiteral(inFilename, silence=False): ## if not silence: ## sys.stdout.write('#from to_etree2_sup import *\n\n') ## sys.stdout.write('import to_etree2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.people(\n') -## rootObj.exportLiteral(sys.stdout, 0, name_="people") +## sys.stdout.write('rootObj = model_.rootClass(\n') +## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tests/to_etree2_sup.py b/tests/to_etree2_sup.py index 9f729d2..3f03962 100644 --- a/tests/to_etree2_sup.py +++ b/tests/to_etree2_sup.py @@ -623,6 +623,7 @@ class peopleType(GeneratedsSuper): subclass = None superclass = None def __init__(self, comments=None, person=None, specialperson=None, programmer=None, python_programmer=None, java_programmer=None): + self.original_tagname_ = None if comments is None: self.comments = [] else: @@ -723,28 +724,34 @@ class peopleType(GeneratedsSuper): obj_ = commentsType.factory() obj_.build(child_) self.comments.append(obj_) + obj_.original_tagname_ = 'comments' elif nodeName_ == 'person': class_obj_ = self.get_class_obj_(child_, personType) obj_ = class_obj_.factory() obj_.build(child_) self.person.append(obj_) + obj_.original_tagname_ = 'person' elif nodeName_ == 'specialperson': obj_ = specialperson.factory() obj_.build(child_) self.specialperson.append(obj_) + obj_.original_tagname_ = 'specialperson' elif nodeName_ == 'programmer': class_obj_ = self.get_class_obj_(child_, programmerType) obj_ = class_obj_.factory() obj_.build(child_) self.programmer.append(obj_) + obj_.original_tagname_ = 'programmer' elif nodeName_ == 'python-programmer': obj_ = python_programmerType.factory() obj_.build(child_) self.python_programmer.append(obj_) + obj_.original_tagname_ = 'python-programmer' elif nodeName_ == 'java-programmer': obj_ = java_programmerType.factory() obj_.build(child_) self.java_programmer.append(obj_) + obj_.original_tagname_ = 'java-programmer' # end class peopleType @@ -757,6 +764,7 @@ class commentsType(GeneratedsSuper): subclass = None superclass = None def __init__(self, emp=None, bold=None, valueOf_=None, mixedclass_=None, content_=None): + self.original_tagname_ = None if emp is None: self.emp = [] else: @@ -861,6 +869,7 @@ class personType(GeneratedsSuper): subclass = None superclass = None def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, hot_agent=None, agent=None, promoter=None, description=None, range_=None, extensiontype_=None): + self.original_tagname_ = None self.vegetable = _cast(None, vegetable) self.fruit = _cast(None, fruit) self.ratio = _cast(float, ratio) @@ -1041,15 +1050,18 @@ class personType(GeneratedsSuper): obj_ = hot_agent.factory() obj_.build(child_) self.hot_agent = obj_ + obj_.original_tagname_ = 'hot.agent' elif nodeName_ == 'agent': class_obj_ = self.get_class_obj_(child_, agentType) obj_ = class_obj_.factory() obj_.build(child_) self.agent.append(obj_) + obj_.original_tagname_ = 'agent' elif nodeName_ == 'promoter': obj_ = boosterType.factory() obj_.build(child_) self.promoter.append(obj_) + obj_.original_tagname_ = 'promoter' elif nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') @@ -1072,8 +1084,8 @@ class specialperson(personType): subclass = None superclass = personType def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, hot_agent=None, agent=None, promoter=None, description=None, range_=None): + self.original_tagname_ = None super(specialperson, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, hot_agent, agent, promoter, description, range_, ) - pass def factory(*args_, **kwargs_): if specialperson.subclass: return specialperson.subclass(*args_, **kwargs_) @@ -1132,6 +1144,7 @@ class programmerType(personType): subclass = None superclass = personType def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, hot_agent=None, agent=None, promoter=None, description=None, range_=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eldatetime=None, eldatetime1=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, extensiontype_=None): + self.original_tagname_ = None super(programmerType, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, hot_agent, agent, promoter, description, range_, extensiontype_, ) self.language = _cast(None, language) self.area = _cast(None, area) @@ -1431,6 +1444,7 @@ class programmerType(personType): obj_ = paramType.factory() obj_.build(child_) self.elparam = obj_ + obj_.original_tagname_ = 'elparam' elif nodeName_ == 'elarraytypes': elarraytypes_ = child_.text elarraytypes_ = self.gds_validate_string(elarraytypes_, node, 'elarraytypes') @@ -1453,6 +1467,7 @@ class paramType(GeneratedsSuper): subclass = None superclass = None def __init__(self, semantic=None, name=None, flow=None, sid=None, type_=None, id=None, valueOf_=None): + self.original_tagname_ = None self.semantic = _cast(None, semantic) self.name = _cast(None, name) self.flow = _cast(None, flow) @@ -1565,6 +1580,7 @@ class python_programmerType(programmerType): subclass = None superclass = programmerType def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, hot_agent=None, agent=None, promoter=None, description=None, range_=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eldatetime=None, eldatetime1=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, drcs_attr=None, nick_name=None, gui_developer=None, favorite_editor=None, flowvalue=None, drcs=None): + self.original_tagname_ = None super(python_programmerType, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, hot_agent, agent, promoter, description, range_, language, area, attrnegint, attrposint, attrnonnegint, attrnonposint, email, elposint, elnonposint, elnegint, elnonnegint, eldate, eldatetime, eldatetime1, eltoken, elshort, ellong, elparam, elarraytypes, ) self.drcs_attr = _cast(None, drcs_attr) self.nick_name = _cast(None, nick_name) @@ -1685,6 +1701,7 @@ class java_programmerType(programmerType): subclass = None superclass = programmerType def __init__(self, vegetable=None, fruit=None, ratio=None, id=None, value=None, name=None, interest=None, category=None, hot_agent=None, agent=None, promoter=None, description=None, range_=None, language=None, area=None, attrnegint=None, attrposint=None, attrnonnegint=None, attrnonposint=None, email=None, elposint=None, elnonposint=None, elnegint=None, elnonnegint=None, eldate=None, eldatetime=None, eldatetime1=None, eltoken=None, elshort=None, ellong=None, elparam=None, elarraytypes=None, status=None, nick_name=None, favorite_editor=None, datetime1=None, datetime2=None, datetime3=None, datetime4=None, datetime5=None): + self.original_tagname_ = None super(java_programmerType, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, hot_agent, agent, promoter, description, range_, language, area, attrnegint, attrposint, attrnonnegint, attrnonposint, email, elposint, elnonposint, elnegint, elnonnegint, eldate, eldatetime, eldatetime1, eltoken, elshort, ellong, elparam, elarraytypes, ) self.status = _cast(None, status) self.nick_name = _cast(None, nick_name) @@ -1813,6 +1830,7 @@ class agentType(GeneratedsSuper): subclass = None superclass = None def __init__(self, firstname=None, lastname=None, priority=None, info=None, vehicle=None, extensiontype_=None): + self.original_tagname_ = None self.firstname = firstname self.lastname = lastname self.priority = priority @@ -1910,11 +1928,13 @@ class agentType(GeneratedsSuper): obj_ = infoType.factory() obj_.build(child_) self.info = obj_ + obj_.original_tagname_ = 'info' elif nodeName_ == 'vehicle': class_obj_ = self.get_class_obj_(child_, vehicleType) obj_ = class_obj_.factory() obj_.build(child_) self.vehicle.append(obj_) + obj_.original_tagname_ = 'vehicle' # end class agentType @@ -1930,6 +1950,7 @@ class special_agentType(agentType): subclass = None superclass = agentType def __init__(self, firstname=None, lastname=None, priority=None, info=None, vehicle=None): + self.original_tagname_ = None super(special_agentType, self).__init__(firstname, lastname, priority, info, vehicle, ) self.firstname = firstname self.lastname = lastname @@ -2007,6 +2028,7 @@ class special_agentType(agentType): obj_ = infoType.factory() obj_.build(child_) self.info = obj_ + obj_.original_tagname_ = 'info' super(special_agentType, self).buildChildren(child_, node, nodeName_, True) # end class special_agentType @@ -2023,6 +2045,7 @@ class weird_agentType(agentType): subclass = None superclass = agentType def __init__(self, firstname=None, lastname=None, priority=None, info=None, vehicle=None): + self.original_tagname_ = None super(weird_agentType, self).__init__(firstname, lastname, priority, info, vehicle, ) self.firstname = firstname self.lastname = lastname @@ -2100,6 +2123,7 @@ class weird_agentType(agentType): obj_ = infoType.factory() obj_.build(child_) self.info = obj_ + obj_.original_tagname_ = 'info' super(weird_agentType, self).buildChildren(child_, node, nodeName_, True) # end class weird_agentType @@ -2118,6 +2142,7 @@ class boosterType(GeneratedsSuper): subclass = None superclass = None def __init__(self, member_id=None, firstname=None, lastname=None, other_name=None, class_=None, other_value=None, type_=None, client_handler=None): + self.original_tagname_ = None self.member_id = _cast(None, member_id) self.firstname = firstname self.lastname = lastname @@ -2261,6 +2286,7 @@ class boosterType(GeneratedsSuper): obj_ = client_handlerType.factory() obj_.build(child_) self.client_handler.append(obj_) + obj_.original_tagname_ = 'client-handler' # end class boosterType @@ -2273,10 +2299,10 @@ class infoType(GeneratedsSuper): subclass = None superclass = None def __init__(self, rating=None, type_=None, name=None): + self.original_tagname_ = None self.rating = _cast(float, rating) self.type_ = _cast(int, type_) self.name = _cast(None, name) - pass def factory(*args_, **kwargs_): if infoType.subclass: return infoType.subclass(*args_, **kwargs_) @@ -2348,6 +2374,7 @@ class vehicleType(GeneratedsSuper): subclass = None superclass = None def __init__(self, wheelcount=None, extensiontype_=None): + self.original_tagname_ = None self.wheelcount = wheelcount self.extensiontype_ = extensiontype_ def factory(*args_, **kwargs_): @@ -2411,6 +2438,7 @@ class automobile(vehicleType): subclass = None superclass = vehicleType def __init__(self, wheelcount=None, drivername=None): + self.original_tagname_ = None super(automobile, self).__init__(wheelcount, ) self.drivername = drivername def factory(*args_, **kwargs_): @@ -2462,6 +2490,7 @@ class airplane(vehicleType): subclass = None superclass = vehicleType def __init__(self, wheelcount=None, pilotname=None): + self.original_tagname_ = None super(airplane, self).__init__(wheelcount, ) self.pilotname = pilotname def factory(*args_, **kwargs_): @@ -2516,6 +2545,7 @@ class hot_agent(GeneratedsSuper): subclass = None superclass = None def __init__(self, firstname='empty\\name', lastname='no \'last\' name', priority=None, startDate=None): + self.original_tagname_ = None self.firstname = firstname self.lastname = lastname self.priority = priority @@ -2615,6 +2645,7 @@ class client_handlerType(GeneratedsSuper): subclass = None superclass = None def __init__(self, fullname=None, refid=None): + self.original_tagname_ = None self.fullname = fullname self.refid = refid def factory(*args_, **kwargs_): @@ -2717,7 +2748,7 @@ def parse(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'people' + rootTag = 'peopleType' rootClass = peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -2737,7 +2768,7 @@ def parseEtree(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'people' + rootTag = 'peopleType' rootClass = peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -2759,9 +2790,9 @@ def parseString(inString, silence=False): from StringIO import StringIO doc = parsexml_(StringIO(inString)) rootNode = doc.getroot() - roots = get_root_tag(rootNode) - rootClass = roots[1] + rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: + rootTag = 'peopleType' rootClass = peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -2770,7 +2801,7 @@ def parseString(inString, silence=False): ## if not silence: ## sys.stdout.write('<?xml version="1.0" ?>\n') ## rootObj.export( -## sys.stdout, 0, name_="people", +## sys.stdout, 0, name_=rootTag, ## namespacedef_='') return rootObj @@ -2780,7 +2811,7 @@ def parseLiteral(inFileName, silence=False): rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: - rootTag = 'people' + rootTag = 'peopleType' rootClass = peopleType rootObj = rootClass.factory() rootObj.build(rootNode) @@ -2789,7 +2820,7 @@ def parseLiteral(inFileName, silence=False): ## if not silence: ## sys.stdout.write('#from to_etree2_sup import *\n\n') ## sys.stdout.write('import to_etree2_sup as model_\n\n') -## sys.stdout.write('rootObj = model_.rootTag(\n') +## sys.stdout.write('rootObj = model_.rootClass(\n') ## rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) ## sys.stdout.write(')\n') return rootObj diff --git a/tutorial/generateds_tutorial.html b/tutorial/generateds_tutorial.html index 6bdd145..20364ff 100644 --- a/tutorial/generateds_tutorial.html +++ b/tutorial/generateds_tutorial.html @@ -219,7 +219,7 @@ They are used by updateversion.py. --> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.12b</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.12c</td> </tr> </tbody> </table> @@ -228,7 +228,7 @@ They are used by updateversion.py. --> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">date:</th><td class="field-body">February 10, 2014</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">March 18, 2014</td> </tr> </tbody> </table> @@ -1210,7 +1210,7 @@ named <tt class="docutils literal">garden_api.py</tt>, you can create an instanc <div class="footer"> <hr class="footer" /> <a class="reference external" href="generateds_tutorial.txt">View document source</a>. -Generated on: 2014-02-10 22:19 UTC. +Generated on: 2014-03-18 20:35 UTC. Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. </div> diff --git a/tutorial/generateds_tutorial.txt b/tutorial/generateds_tutorial.txt index 7ec816e..c84446b 100644 --- a/tutorial/generateds_tutorial.txt +++ b/tutorial/generateds_tutorial.txt @@ -11,7 +11,7 @@ generateDS -- Introduction and Tutorial .. version -:revision: 2.12b +:revision: 2.12c .. version diff --git a/tutorial/generateds_tutorial.zip b/tutorial/generateds_tutorial.zip index cc32d31d335966a04b4b308df3cafcc208470ab2..bc1fc6b45e7b182561537dee010543f6c8cb9534 100644 GIT binary patch delta 11848 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 delta 11773 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 -- GitLab