diff --git a/README b/README index 59de3a66d4c732d9b4414961389276694df12b02..ff0b7838bd02a68857b7bb85425529fab34d5f3e 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 1dee987d4f389a66ce8026a27032e109cfa6352d..29646502b44262edb6433b63bb3b46e07820c53b 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 b3356e6837d89c04264f648b67baaaedc65a1d2e..cc7a168e81f000d22a487fdbadffea803c22ea02 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 fd36e6d940e664f7797733c7ec90309538746c09..0f2f866d9cbd9b442b33273e2186eef93749aa6a 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 da34cc6697fa9b7931fb298b0994a29d54f99474..f080d53c20b5e5c3b1e8dc86d4b7fed401564916 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 da34cc6697fa9b7931fb298b0994a29d54f99474..f080d53c20b5e5c3b1e8dc86d4b7fed401564916 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 Binary files a/librarytemplate-1.0a.zip and b/librarytemplate-1.0a.zip differ diff --git a/librarytemplate_howto.html b/librarytemplate_howto.html index 90c68872316255c8756f9a67ceac2b4c5fe50fc4..f6402d70f4eb2c07a0263e862aaf1ab0205191a6 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 121f1b1e67a2a3ea91e4389b3c877389e89146a8..7cacd251507ca11c68c798e8d61b93511a21f924 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 47867760b42d58ed41e395f3da3163e1761c0323..93804d7966e34a97893dbc0fbae71c262de5d689 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 e914720f412596453b40433001ae9df0f80cffdf..994ca23158d139e3843af64b562dca3a5ee187e9 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 b6e3ec6b7dac0912b328fe98a33bd8f8900c739a..62995b45b5ffaeb31f8c884f5d18787f757f505e 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 b6e3ec6b7dac0912b328fe98a33bd8f8900c739a..62995b45b5ffaeb31f8c884f5d18787f757f505e 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 8ba5e590511e0a353215cd0dc484faf29379e388..1778f19ea0fef100a83a3e8171135804d1858950 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 8ba5e590511e0a353215cd0dc484faf29379e388..1778f19ea0fef100a83a3e8171135804d1858950 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 cebe79b39da5d2088b08b4da5933b13aa3f1a1ff..7c16cb5f924e8df6b73f55fc3a85ef573f51e224 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 cebe79b39da5d2088b08b4da5933b13aa3f1a1ff..7c16cb5f924e8df6b73f55fc3a85ef573f51e224 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 0000000000000000000000000000000000000000..bc8778e31e36017191332406a4ccc16f9c25001a --- /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 0000000000000000000000000000000000000000..bc8778e31e36017191332406a4ccc16f9c25001a --- /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 c8c5af40fe0d5a254e9f7242a33fdf3cdb3b0ff1..296f07aaa6c0d6ae37f736069be740e2ed3ffd21 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 fda613f234c17415f35289a83dbdd4948a83bcd4..0ef7f20ed4cf5000867d30b228b4d3dfb59239c9 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 c8c5af40fe0d5a254e9f7242a33fdf3cdb3b0ff1..296f07aaa6c0d6ae37f736069be740e2ed3ffd21 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 fda613f234c17415f35289a83dbdd4948a83bcd4..0ef7f20ed4cf5000867d30b228b4d3dfb59239c9 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 63d361b63e0246fca280a3622739e3943776f1c9..4e78079e343bab9b178b205818dc8f58b3412058 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 8cb90a948bbe74e90e33b52080bfa3f5b924e8d7..9dc54cff24f93cb4c52c1a4ac42f438de9e68d36 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 63d361b63e0246fca280a3622739e3943776f1c9..4e78079e343bab9b178b205818dc8f58b3412058 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 8cb90a948bbe74e90e33b52080bfa3f5b924e8d7..9dc54cff24f93cb4c52c1a4ac42f438de9e68d36 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 f6087774e745f0bb310542ae385230b515fe2e68..6e42385d9159dfa9441b1878f6b5864aab64bd94 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 075399babc47b577ec8b18644caf256f92431677..e387d1dcd88f1030148d3f0d2fcceb4b10e9d3c5 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 f6087774e745f0bb310542ae385230b515fe2e68..6e42385d9159dfa9441b1878f6b5864aab64bd94 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 075399babc47b577ec8b18644caf256f92431677..e387d1dcd88f1030148d3f0d2fcceb4b10e9d3c5 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 e79e857b331dc353c31b668b8eeb8c3063f19070..77a78a829e64d01f13b3ba97b83092f706262b28 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 acb7ba3157df07ee20e24d2f2a735bb703562137..e00caa9cd19ea12b5062fe81b30091308137814f 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 e79e857b331dc353c31b668b8eeb8c3063f19070..77a78a829e64d01f13b3ba97b83092f706262b28 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 acb7ba3157df07ee20e24d2f2a735bb703562137..e00caa9cd19ea12b5062fe81b30091308137814f 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 cc4939ca40b3de95b0a3123243890f9a6ad94f26..bc32d2750905fc92e8b418fd927d96a32dcc1b6b 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 b7314e18aaca5b3e59c1c05dbc9e887ece855887..029710edf4ac3fef3185641bc95bc14d3c05f9ac 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 cc4939ca40b3de95b0a3123243890f9a6ad94f26..bc32d2750905fc92e8b418fd927d96a32dcc1b6b 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 b7314e18aaca5b3e59c1c05dbc9e887ece855887..029710edf4ac3fef3185641bc95bc14d3c05f9ac 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 bc8d0a6cf61647fe67b55f6ec67d19e375a74a66..f2af2d9ba775791a7634aaee0b5501eb983ad50e 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 6ee84284491b8a7614c1ce836cf698bb236711c7..4b82c99e18906848fa330acf489bdc4844e44e0d 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 bc8d0a6cf61647fe67b55f6ec67d19e375a74a66..f2af2d9ba775791a7634aaee0b5501eb983ad50e 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 6ee84284491b8a7614c1ce836cf698bb236711c7..4b82c99e18906848fa330acf489bdc4844e44e0d 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 0000000000000000000000000000000000000000..adb07afb6ea0aca78b4a34d573cafe85a839a2c7 --- /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 0b153ec54fbb6d955b4c54735c667ccab5883172..21995ba5e9d685a8089c63dca4f827b91bef195c 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 5baef460788e8361126d62809fcd221a53c60ce1..a2e8f03d6cba446dfd24dcf7c423b6976f162402 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 0b153ec54fbb6d955b4c54735c667ccab5883172..21995ba5e9d685a8089c63dca4f827b91bef195c 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 5baef460788e8361126d62809fcd221a53c60ce1..a2e8f03d6cba446dfd24dcf7c423b6976f162402 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 46cfd200e32b80b95ea36ee61f0cc0393a58e2fc..ad5c2678945fe6f085caae28677bc5c2eaa969cd 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 f3f137508a56cddf40c1ab078dfde3b2b44c282b..aa979fdff4eb326008bbec7a2afa0f84dad241e0 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 46cfd200e32b80b95ea36ee61f0cc0393a58e2fc..ad5c2678945fe6f085caae28677bc5c2eaa969cd 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 f3f137508a56cddf40c1ab078dfde3b2b44c282b..aa979fdff4eb326008bbec7a2afa0f84dad241e0 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 f973bb78b9aadd2981a7c9e11091f10f029fc93c..8140d69b9325f3f7d1d25d31b027f2c08021e4c6 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 47d0c7da97579ae18a7157dbb971ef8ec13d92fd..581fbea1d0e0303e22bedc171817cf04c770c2a8 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 f973bb78b9aadd2981a7c9e11091f10f029fc93c..8140d69b9325f3f7d1d25d31b027f2c08021e4c6 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 47d0c7da97579ae18a7157dbb971ef8ec13d92fd..581fbea1d0e0303e22bedc171817cf04c770c2a8 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 6e247027a3c23c9b0840c96521fd30a3921143f6..8c46e9282ea6aaf03a5a281e0b52b24e86169784 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 0193a4b34a27038b30f3eb776b1ec9e4098bb88e..7456aef3b0f06c24e31f32fbf945f814ae101e5d 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 0000000000000000000000000000000000000000..dc4f1dfabd2ccdbb2c604b23f0c7adda1a7bdc88 --- /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 ad7595f73d420d321faf77081c39fad7975629a9..2292a32252b38ea236cf72b06c6b66441cce1533 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 fcba530818ccc36be2427a200cbf015cfdd31fd0..4fee2b36600328e0fb63f766f19308cec99ac7f0 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 ad7595f73d420d321faf77081c39fad7975629a9..2292a32252b38ea236cf72b06c6b66441cce1533 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 fcba530818ccc36be2427a200cbf015cfdd31fd0..4fee2b36600328e0fb63f766f19308cec99ac7f0 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 c3b5be6194abe2ee514f4655f3c989b427e9b07d..55e0f429d867b8a8a356ba36ee040e8179a5b72f 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 87f7ddc9e00e7488bd566b0ce97456b7b5a9deb6..a3cc5d153df708e75a919bce7b984e659bee87e4 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 c3b5be6194abe2ee514f4655f3c989b427e9b07d..55e0f429d867b8a8a356ba36ee040e8179a5b72f 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 87f7ddc9e00e7488bd566b0ce97456b7b5a9deb6..a3cc5d153df708e75a919bce7b984e659bee87e4 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 6fad49719cfdd1e6e92fbaf33dd907ac4db9a11c..d637f39b693c6088ea57c988c978a0d9c8d0a1d2 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 db59f2ae53181f0e1d1a07e3764a91992cf2d90b..48dee5dbdcfd48265c257b526270a218b47dd5a4 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 181be29c19a24fb9b7ff304225452e12835b8ba1..8e08f9b550848d705d13f7bde74c06d11ff0a644 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 db59f2ae53181f0e1d1a07e3764a91992cf2d90b..48dee5dbdcfd48265c257b526270a218b47dd5a4 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 181be29c19a24fb9b7ff304225452e12835b8ba1..8e08f9b550848d705d13f7bde74c06d11ff0a644 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 f986e758b67a7366ba5e8959dd03ad5015832210..99b68bee78b2caa6c5289e4eb50f2ed63b2669cf 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 74e903201ad896ca84e3800f5efda614a5c0e403..e2498110404d7d90ad1fd47f0d2f053a42f3d411 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 f986e758b67a7366ba5e8959dd03ad5015832210..99b68bee78b2caa6c5289e4eb50f2ed63b2669cf 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 74e903201ad896ca84e3800f5efda614a5c0e403..e2498110404d7d90ad1fd47f0d2f053a42f3d411 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 f917d7b94e834f63b96f262b690f0f75fec1f0db..91d67ee9b271dc22e13f99c47da52dc45539c8cd 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 0ee76d83fabfda371e60ab86744b892fcd186b0f..77fe1ff1c607ff693d896f9686896ef85026143e 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 f917d7b94e834f63b96f262b690f0f75fec1f0db..91d67ee9b271dc22e13f99c47da52dc45539c8cd 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 0ee76d83fabfda371e60ab86744b892fcd186b0f..77fe1ff1c607ff693d896f9686896ef85026143e 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 81260f7d724fc73e01de0f3dfd1732c505b06996..c2fae5de3105e00afced27f2c03d373a1aee6ba2 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 3e58a68c7de6698092abbdcc597aa832b2387254..3088ea6edf203dc7c18bd87957eb195f7badbdd6 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 81260f7d724fc73e01de0f3dfd1732c505b06996..c2fae5de3105e00afced27f2c03d373a1aee6ba2 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 3e58a68c7de6698092abbdcc597aa832b2387254..3088ea6edf203dc7c18bd87957eb195f7badbdd6 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 5d6762f8d0ab146994b7134face546b25f922de2..225770984b09b73bc52e4339c66f37f30a1c16c9 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 1771174e34bcf18b74d5b7fc2b5608a114f8e7a1..c5dbe1b2573d5c49e478118f78ec79709b884b99 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 9f729d22aa5fd10eacec0dfe51cfd7010a324fc9..3f0396272f6d4d9f249f491654572aa14454efb3 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 1771174e34bcf18b74d5b7fc2b5608a114f8e7a1..c5dbe1b2573d5c49e478118f78ec79709b884b99 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 9f729d22aa5fd10eacec0dfe51cfd7010a324fc9..3f0396272f6d4d9f249f491654572aa14454efb3 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 6bdd14579fbda62c8788871865f789159bc76ec5..20364ff954c383f4e55666177284be5ff9f7df16 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 7ec816e0bbedd24bc9b4d380cfc3c982acff8e61..c84446bfb8bb06f2b0ca5789d3f31b01d9b205bd 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 Binary files a/tutorial/generateds_tutorial.zip and b/tutorial/generateds_tutorial.zip differ