diff --git a/README b/README index 8ab152e1c84469dd5c64a05b69b6c1171c85301b..5cdd6ebf2987d2683a6234140f0e9bc4d801dfb5 100644 --- a/README +++ b/README @@ -141,10 +141,14 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Change history -------------- -Version 2.12g (09/03/2014) +Version 2.13a (09/09/2014) - Minor fix to function generateToEtreeChildren. Must generate call to get_valueOf only when defined (i.e. when element is simpleContent or isMixed). +- Fix to generation of class name prefixes added with the "-p" + command line option. This fix was added by Christian Ascheberg. + Thank you Christian. +- Added unit test for class name prefixes command line option. Version 2.12f (08/12/2014) - Fix for substitutionGroup conflict with keyword name mapping. diff --git a/generateDS.html b/generateDS.html index 15ff8bd3e8998e1cd190a34d3b9044b7ad9fb700..4ed9fd4217980343a74581d3fa526cd0cf5da606 100644 --- a/generateDS.html +++ b/generateDS.html @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.13: http://docutils.sourceforge.net/" /> <title>generateDS -- Generate Data Structures from XML Schema</title> <meta name="author" content="Dave Kuhlman" /> <style type="text/css"> @@ -205,7 +205,7 @@ ul.auto-toc { <tr><th class="docinfo-name">Author:</th> <td>Dave Kuhlman</td></tr> <tr><th class="docinfo-name">Contact:</th> -<td><a class="first last reference external" href="mailto:dkuhlman@pacbell.net">dkuhlman@pacbell.net</a></td></tr> +<td><a class="first last reference external" href="mailto:dkuhlman@davekuhlman.org">dkuhlman@davekuhlman.org</a></td></tr> <tr><th class="docinfo-name">Address:</th> <td><pre class="address"> <a class="first last reference external" href="http://www.davekuhlman.org">http://www.davekuhlman.org</a> @@ -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.12e</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.13a</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">May 30, 2014</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">September 09, 2014</td> </tr> </tbody> </table> @@ -2886,7 +2886,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-05-30 18:59 UTC. +Generated on: 2014-09-09 20:05 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 0bb303d4d0ca58980fe78d01fe2814ef708aeec1..7c32e5d61c9592623927b7131b0fd69f0a4f758b 100755 --- a/generateDS.py +++ b/generateDS.py @@ -179,7 +179,7 @@ logging.disable(logging.INFO) # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## -VERSION = '2.12g' +VERSION = '2.13a' ##VERSION## GenerateProperties = 0 @@ -4281,7 +4281,7 @@ def generateClasses(wrt, prefix, element, delayed, nameSpacesDef=''): generateExportLiteralFn(wrt, prefix, element) generateBuildFn(wrt, prefix, element, delayed) generateUserMethods(wrt, element) - wrt('# end class %s\n' % name) + wrt('# end class %s%s\n' % (prefix, name, )) wrt('\n\n') # end generateClasses @@ -5957,7 +5957,7 @@ def parseAndGenerate( # can do a reasonably safe "from parser import *" if outfileName: exportableClassList = [ - '"%s"' % name + '"%s%s"' % (prefix, name, ) for name in AlreadyGenerated] exportableClassList.sort() exportableClassNames = ',\n '.join(exportableClassList) @@ -6031,7 +6031,7 @@ def parseAndGenerate( # to isolate important classes from internal ones. This way one # can do a reasonably safe "from parser import *" exportableClassList = [ - '"%s"' % name + '"%s%s"' % (prefix, name, ) for name in AlreadyGenerated] exportableClassList.sort() exportableClassNames = ',\n '.join(exportableClassList) diff --git a/generateDS.txt b/generateDS.txt index e831964708daf43c4dbd3d219cd8888c70503b7b..0cfa919835bdef2ffc20113e7c352df143e68d3b 100644 --- a/generateDS.txt +++ b/generateDS.txt @@ -3,7 +3,7 @@ generateDS -- Generate Data Structures from XML Schema ====================================================== :author: Dave Kuhlman -:contact: dkuhlman@pacbell.net +:contact: dkuhlman@davekuhlman.org :address: http://www.davekuhlman.org @@ -12,7 +12,7 @@ generateDS -- Generate Data Structures from XML Schema .. version -:revision: 2.12g +:revision: 2.13a .. version diff --git a/gui/generateds_gui.py b/gui/generateds_gui.py index 60aef401a31da20ac781cb5df81c1e54f09b6647..8622d6837262a43dba0199147f3a73d51bbac5ef 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.12g' +VERSION = '2.13a' ##VERSION## diff --git a/librarytemplate_howto.html b/librarytemplate_howto.html index 1a2df9d8067d4076366ba4b37ca3e6b01f294829..db0373e6e90e744f1717cc761f486d098c96ccf3 100644 --- a/librarytemplate_howto.html +++ b/librarytemplate_howto.html @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.13: http://docutils.sourceforge.net/" /> <title>How to package a generateDS.py generated library</title> <meta name="author" content="Dave Kuhlman" /> <style type="text/css"> @@ -217,7 +217,7 @@ 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.12e</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.13a</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">May 23, 2014</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">September 09, 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-05-23 16:00 UTC. +Generated on: 2014-09-09 19:14 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 32f3bf1679996dcf78bb28dedabb48b9bdd4726a..51928ab43686dc7bef909d3135a7977bfee57143 100644 --- a/librarytemplate_howto.txt +++ b/librarytemplate_howto.txt @@ -8,7 +8,7 @@ How to package a generateDS.py generated library .. version -:revision: 2.12g +:revision: 2.13a .. version diff --git a/process_includes.py b/process_includes.py index 6bb534769a2e999fc34acc1e50dfb710fe045009..31ba6af72a602f4f5548ad7633939b3eb26d16d7 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.12g' +VERSION = '2.13a' ##VERSION## CatalogDict = {} diff --git a/setup.py b/setup.py index 515df70aa63d8f56158f2106b7450a8e45d1e48c..0bdcc977ce36e0a6b07742dd7790b1b36a14996f 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.12g", + version="2.13a", ##VERSION## author="Dave Kuhlman", author_email="dkuhlman@davekuhlman.org", diff --git a/tests/prefix_classname.xml b/tests/prefix_classname.xml new file mode 100644 index 0000000000000000000000000000000000000000..322414c322bab1e5fae502fda39e23b25bc929ce --- /dev/null +++ b/tests/prefix_classname.xml @@ -0,0 +1,118 @@ +<?xml version="1.0"?> +<people> + + <comments>1. This is a <emp>foolish</emp> comment. It is <emp>really</emp> important.</comments> + <comments>2. This is a <emp>silly</emp> comment. It is <emp>very</emp> significant.</comments> + + + <person id="1" value="abcd" ratio="3.2" extraattr="aaa"> + <name>Alberta</name> + <interest>gardening</interest> + <interest>reading</interest> + <category>5</category> + <hot /> + <hot.agent oneattr="bbb" twoattr="ccc"> + <firstname>Paula</firstname> + <lastname>Peterson</lastname> + <priority>4.3</priority> + </hot.agent> + </person> + + <person id="2"> + <name>Bernardo</name> + <interest>programming</interest> + <category>0</category> + <agent> + <firstname>Darren</firstname> + <lastname>Diddly</lastname> + <priority>4.5</priority> + <info name="Albert Abasinian" type="321" rating="5.33"> + Albert is a test for attributes + character content + + *no* element content. + </info> + </agent> + </person> + + <programmer id="2" language="python" area="xml"> + <name>Charles Carlson</name> + <interest>programming</interest> + <category>2233</category> + <description>A very happy programmer</description> + <email>charles@happyprogrammers.com</email> + <agent> + <firstname>Ernest</firstname> + <lastname>Echo</lastname> + <priority>3.8</priority> + <info name="George Gregory" type="321" rating="5.33" /> + </agent> + <elposint>14</elposint> + <elnegint>-12</elnegint> + <elnonnegint>4</elnonnegint> + <elnonposint>0</elnonposint> + <eldate>2005-04-26</eldate> + <eldatetime>2005-04-26T10:11:12</eldatetime> + <eltoken>aa bb cc + dd</eltoken> + <elshort>123</elshort> + <ellong>13241234123412341234</ellong> + <elparam id="id001" name="Davy" semantic="a big semantic"/> + </programmer> + + <person id="3"> + <name>Charlie</name> + <interest>people</interest> + <interest>cats</interest> + <interest>dogs</interest> + <category>8</category> + <promoter> + <firstname>David</firstname> + <lastname>Donaldson</lastname> + <client> + <fullname>Arnold Applebee</fullname> + <refid>10001</refid> + </client> + </promoter> + <promoter> + <firstname>Edward</firstname> + <lastname>Eddleberry</lastname> + <client> + <fullname>Arnold Applebee</fullname> + <refid>10001</refid> + </client> + </promoter> + </person> + + <person id="4" /> + + <python-programmer vegetable="tomato" fruit="peach" language="python" area="xml" nick-name="davy" id="232" ratio="8.7" value="abcd"> + <favorite-editor>jed</favorite-editor> + <name>Darrel Dawson</name> + <interest>hang gliding</interest> + <category>3344</category> + <description>An object-orientated programmer</description> + <email>darrel@happyprogrammers.com</email> + <agent> + <firstname>Harvey</firstname> + <lastname>Hippolite</lastname> + <priority>5.2</priority> + <info name="Harvey Hippolite" type="543" rating="6.55" /> + </agent> + </python-programmer> + + <java-programmer vegetable="tomato" fruit="peach" language="python" area="xml" nick-name="davy" id="232" ratio="8.7" value="abcd"> + <favorite-editor>jed</favorite-editor> + <name>Darrel Dawson</name> + <interest>hang gliding</interest> + <category>3344</category> + <description>An object-orientated programmer</description> + <email>darrel@happyprogrammers.com</email> + <agent> + <firstname>Harvey</firstname> + <lastname>Hippolite</lastname> + <priority>5.2</priority> + <info name="Harvey Hippolite" type="543" rating="6.55" /> + </agent> + </java-programmer> + +</people> + diff --git a/tests/prefix_classname.xsd b/tests/prefix_classname.xsd new file mode 100644 index 0000000000000000000000000000000000000000..a8520250a82b5efafb1d4c28db656a0baed518fb --- /dev/null +++ b/tests/prefix_classname.xsd @@ -0,0 +1,203 @@ +<?xml version="1.0"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> + + <xs:element name="people"> + <xs:complexType> + <xs:sequence> + <xs:element name="comments" type="comments" maxOccurs="unbounded"/> + <xs:element name="person" maxOccurs="unbounded" type="person"/> + <xs:element name="programmer" maxOccurs="unbounded" type="programmer"/> + <xs:element name="python-programmer" maxOccurs="unbounded" type="python-programmer"/> + <xs:element name="java-programmer" maxOccurs="unbounded" type="java-programmer"/> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="comments"> + <xs:complexType mixed="true"> + <xs:sequence> + <!-- + <xs:element name="emp" type="xs:string" /> + --> + <xs:element name="emp" type="xs:string" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="person"> + <xs:complexType mixed="0"> + <xs:sequence> + <xs:element name="name" type="xs:string"/> + <xs:element name="interest" type="xs:string" maxOccurs="unbounded" /> + <xs:element name="category" type="xs:integer"/> + <xs:element name="agent" type="agent" maxOccurs="unbounded" /> + <xs:element name="promoter" type="booster" maxOccurs="unbounded" /> + <xs:element name="description" type="xs:string"/> + </xs:sequence> + <xs:attribute name="value" type="xs:ID" /> + <xs:attribute name="id" type="xs:integer" /> + <xs:attribute name="ratio" type="xs:float" /> + <xs:attributeGroup ref="favorites" /> + </xs:complexType> + </xs:element> + + <!-- + <xs:element name="description-a" type="xs:string" substitutionGroup="description" /> + --> + + <xs:element name="programmer"> + <xs:complexType mixed="0"> + <xs:complexContent> + <xs:extension base="person"> + <xs:sequence> + <!-- + <xs:element name="description" type="xs:string"/> + --> + <xs:element name="email" type="xs:string"/> + <xs:element name="elposint" type="xs:positiveInteger"/> + <xs:element name="elnonposint" type="xs:nonPositiveInteger"/> + <xs:element name="elnegint" type="xs:negativeInteger"/> + <xs:element name="elnonnegint" type="xs:nonNegativeInteger"/> + <xs:element name="eldate" type="xs:date"/> + <xs:element name="eldatetime" type="xs:dateTime"/> + <xs:element name="eltoken" type="xs:token"/> + <xs:element name="elshort" type="xs:short"/> + <xs:element name="ellong" type="xs:long"/> + <xs:element name="elparam" type="param"/> + <xs:element name="elarraytypes" type="ArrayTypes"/> + + </xs:sequence> + <xs:attribute name="language" type="xs:string" /> + <xs:attribute name="area"/> + <xs:attribute name="attrposint" type="xs:positiveInteger"/> + <xs:attribute name="attrnonposint" type="xs:nonPositiveInteger"/> + <xs:attribute name="attrnegint" type="xs:negativeInteger"/> + <xs:attribute name="attrnonnegint" type="xs:nonNegativeInteger"/> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + + <xs:element name="param"> + <xs:annotation> + <xs:documentation>Finding flow attribute unneccesary in practice. A unnamed parameter is unbound/skipped.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="id" type="xs:ID" /> + <xs:attribute name="name" type="xs:NCName" /> + <xs:attribute name="sid" type="xs:NCName" /> + <xs:attribute name="flow" type="FlowType" /> + <xs:attribute name="semantic" type="xs:token" /> + <xs:attribute name="type" type="xs:NMTOKEN" use="required" /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + + + <xs:simpleType name="ArrayTypes"> + <xs:restriction base="xs:NMTOKEN"> + <xs:enumeration value="float" /> + <xs:enumeration value="int" /> + <xs:enumeration value="Name" /> + <xs:enumeration value="token" /> + </xs:restriction> + </xs:simpleType> + + + + <xs:element name="python-programmer"> + <xs:complexType mixed="0"> + <xs:complexContent> + <xs:extension base="programmer"> + <xs:sequence> + <xs:element name="favorite-editor" type="xs:string"/> + </xs:sequence> + <xs:attribute name="nick-name"/> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:element name="java-programmer"> + <xs:complexType mixed="0"> + <xs:complexContent> + <xs:extension base="programmer"> + <xs:sequence> + <xs:element name="favorite-editor" type="xs:string"/> + </xs:sequence> + <xs:attribute name="nick-name"/> + <xs:attribute name="status"/> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:element name="agent"> + <xs:complexType> + <xs:sequence> + <xs:element name="firstname" type="xs:string"/> + <xs:element name="lastname" type="xs:string"/> + <xs:element name="priority" type="xs:float"/> + <xs:element name="info" type="info"/> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="special-agent" substitutionGroup="agent"> + <xs:complexType> + <xs:sequence> + <xs:element name="firstname" type="xs:string"/> + <xs:element name="lastname" type="xs:string"/> + <xs:element name="priority" type="xs:float"/> + <xs:element name="info" type="info"/> + </xs:sequence> + </xs:complexType> + </xs:element> + + <xs:element name="booster"> + <xs:complexType> + <xs:sequence> + <xs:element name="firstname" type="xs:string"/> + <xs:element name="lastname" type="xs:string"/> + <xs:element name="other-name" type="xs:float"/> + <xs:element name="class" type="xs:float"/> + <xs:element name="other-value" type="xs:float" maxOccurs="unbounded" /> + <xs:element name="type" type="xs:float" maxOccurs="unbounded" /> + <xs:element name="client-handler" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="fullname" type="xs:string"/> + <xs:element name="refid" type="xs:integer"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + <!-- Test for element with attributes but no children. + Should use valueOf. + --> + <xs:element name="info"> + <xs:complexType> + <xs:sequence> + </xs:sequence> + <xs:attribute name="name" type="xs:string" /> + <xs:attribute name="type" type="xs:integer" /> + <xs:attribute name="rating" type="xs:float" /> + </xs:complexType> + </xs:element> + + + <xs:attributeGroup name="favorites"> + <xs:attribute name="fruit" /> + <xs:attribute name="vegetable" /> + </xs:attributeGroup> + + +</xs:schema> + diff --git a/tests/prefix_classname1_out.xml b/tests/prefix_classname1_out.xml new file mode 100644 index 0000000000000000000000000000000000000000..c2e2e7ebf4af40a823bf7e24b8b0e9e7cfb9b86f --- /dev/null +++ b/tests/prefix_classname1_out.xml @@ -0,0 +1,91 @@ +<?xml version="1.0" ?> +<people> + <comments> +1. This is a <emp>foolish</emp> comment. It is <emp>really</emp> important. </comments> + <comments> +2. This is a <emp>silly</emp> comment. It is <emp>very</emp> significant. </comments> + <person ratio="3.2" id="1" value="abcd"> + <name>Alberta</name> + <interest>gardening</interest> + <interest>reading</interest> + <category>5</category> + </person> + <person id="2"> + <name>Bernardo</name> + <interest>programming</interest> + <category>0</category> + <agent> + <firstname>Darren</firstname> + <lastname>Diddly</lastname> + <priority>4.5</priority> + <info rating="5.33" type="321" name="Albert Abasinian"/> + </agent> + </person> + <person id="3"> + <name>Charlie</name> + <interest>people</interest> + <interest>cats</interest> + <interest>dogs</interest> + <category>8</category> + <promoter> + <firstname>David</firstname> + <lastname>Donaldson</lastname> + </promoter> + <promoter> + <firstname>Edward</firstname> + <lastname>Eddleberry</lastname> + </promoter> + </person> + <person id="4"/> + <programmer id="2" language="python" area="xml"> + <name>Charles Carlson</name> + <interest>programming</interest> + <category>2233</category> + <agent> + <firstname>Ernest</firstname> + <lastname>Echo</lastname> + <priority>3.8</priority> + <info rating="5.33" type="321" name="George Gregory"/> + </agent> + <description>A very happy programmer</description> + <email>charles@happyprogrammers.com</email> + <elposint>14</elposint> + <elnonposint>0</elnonposint> + <elnegint>-12</elnegint> + <elnonnegint>4</elnonnegint> + <eldate>2005-04-26</eldate> + <eldatetime>2005-04-26T10:11:12</eldatetime> + <eltoken>aa bb cc dd</eltoken> + <elshort>123</elshort> + <ellong>13241234123412341234</ellong> + <elparam semantic="a big semantic" name="Davy" id="id001"/> + </programmer> + <python-programmer vegetable="tomato" fruit="peach" ratio="8.699999999999999" id="232" value="abcd" language="python" area="xml" nick-name="davy"> + <name>Darrel Dawson</name> + <interest>hang gliding</interest> + <category>3344</category> + <agent> + <firstname>Harvey</firstname> + <lastname>Hippolite</lastname> + <priority>5.2</priority> + <info rating="6.55" type="543" name="Harvey Hippolite"/> + </agent> + <description>An object-orientated programmer</description> + <email>darrel@happyprogrammers.com</email> + <favorite-editor>jed</favorite-editor> + </python-programmer> + <java-programmer vegetable="tomato" fruit="peach" ratio="8.699999999999999" id="232" value="abcd" language="python" area="xml" nick-name="davy"> + <name>Darrel Dawson</name> + <interest>hang gliding</interest> + <category>3344</category> + <agent> + <firstname>Harvey</firstname> + <lastname>Hippolite</lastname> + <priority>5.2</priority> + <info rating="6.55" type="543" name="Harvey Hippolite"/> + </agent> + <description>An object-orientated programmer</description> + <email>darrel@happyprogrammers.com</email> + <favorite-editor>jed</favorite-editor> + </java-programmer> +</people> diff --git a/tests/prefix_classname1_sub.py b/tests/prefix_classname1_sub.py new file mode 100644 index 0000000000000000000000000000000000000000..a196947cf8ce05793a34dbac19687a5db1ef9537 --- /dev/null +++ b/tests/prefix_classname1_sub.py @@ -0,0 +1,292 @@ +#!/usr/bin/env python + +# +# Generated by generateDS.py. +# +# Command line options: +# ('--no-dates', '') +# ('--no-versions', '') +# ('-p', 'tomato_') +# ('--member-specs', 'list') +# ('-f', '') +# ('-o', 'tests/prefix_classname2_sup.py') +# ('-s', 'tests/prefix_classname2_sub.py') +# ('--super', 'prefix_classname2_sup') +# +# Command line arguments: +# tests/prefix_classname.xsd +# +# Command line: +# generateDS.py --no-dates --no-versions -p "tomato_" --member-specs="list" -f -o "tests/prefix_classname2_sup.py" -s "tests/prefix_classname2_sub.py" --super="prefix_classname2_sup" tests/prefix_classname.xsd +# +# Current working directory (os.getcwd()): +# generateds +# + +import sys + +import prefix_classname2_sup as supermod + +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 + +# +# Globals +# + +ExternalEncoding = 'ascii' + +# +# Data representation classes +# + + +class tomato_peopleSub(supermod.tomato_people): + def __init__(self, comments=None, person=None, programmer=None, python_programmer=None, java_programmer=None): + super(tomato_peopleSub, self).__init__(comments, person, programmer, python_programmer, java_programmer, ) +supermod.tomato_people.subclass = tomato_peopleSub +# end class tomato_peopleSub + + +class tomato_commentsSub(supermod.tomato_comments): + def __init__(self, emp=None, valueOf_=None, mixedclass_=None, content_=None): + super(tomato_commentsSub, self).__init__(emp, valueOf_, mixedclass_, content_, ) +supermod.tomato_comments.subclass = tomato_commentsSub +# end class tomato_commentsSub + + +class tomato_personSub(supermod.tomato_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, extensiontype_=None): + super(tomato_personSub, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, extensiontype_, ) +supermod.tomato_person.subclass = tomato_personSub +# end class tomato_personSub + + +class tomato_programmerSub(supermod.tomato_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, extensiontype_=None): + super(tomato_programmerSub, 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, extensiontype_, ) +supermod.tomato_programmer.subclass = tomato_programmerSub +# end class tomato_programmerSub + + +class tomato_paramSub(supermod.tomato_param): + def __init__(self, semantic=None, name=None, flow=None, sid=None, type_=None, id=None, valueOf_=None): + super(tomato_paramSub, self).__init__(semantic, name, flow, sid, type_, id, valueOf_, ) +supermod.tomato_param.subclass = tomato_paramSub +# end class tomato_paramSub + + +class tomato_python_programmerSub(supermod.tomato_python_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): + super(tomato_python_programmerSub, 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, nick_name, favorite_editor, ) +supermod.tomato_python_programmer.subclass = tomato_python_programmerSub +# end class tomato_python_programmerSub + + +class tomato_java_programmerSub(supermod.tomato_java_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): + super(tomato_java_programmerSub, 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, status, nick_name, favorite_editor, ) +supermod.tomato_java_programmer.subclass = tomato_java_programmerSub +# end class tomato_java_programmerSub + + +class tomato_agentSub(supermod.tomato_agent): + def __init__(self, firstname=None, lastname=None, priority=None, info=None): + super(tomato_agentSub, self).__init__(firstname, lastname, priority, info, ) +supermod.tomato_agent.subclass = tomato_agentSub +# end class tomato_agentSub + + +class tomato_special_agentSub(supermod.tomato_special_agent): + def __init__(self, firstname=None, lastname=None, priority=None, info=None): + super(tomato_special_agentSub, self).__init__(firstname, lastname, priority, info, ) +supermod.tomato_special_agent.subclass = tomato_special_agentSub +# end class tomato_special_agentSub + + +class tomato_boosterSub(supermod.tomato_booster): + def __init__(self, firstname=None, lastname=None, other_name=None, class_=None, other_value=None, type_=None, client_handler=None): + super(tomato_boosterSub, self).__init__(firstname, lastname, other_name, class_, other_value, type_, client_handler, ) +supermod.tomato_booster.subclass = tomato_boosterSub +# end class tomato_boosterSub + + +class tomato_infoSub(supermod.tomato_info): + def __init__(self, rating=None, type_=None, name=None): + super(tomato_infoSub, self).__init__(rating, type_, name, ) +supermod.tomato_info.subclass = tomato_infoSub +# end class tomato_infoSub + + +class tomato_client_handlerTypeSub(supermod.tomato_client_handlerType): + def __init__(self, fullname=None, refid=None): + super(tomato_client_handlerTypeSub, self).__init__(fullname, refid, ) +supermod.tomato_client_handlerType.subclass = tomato_client_handlerTypeSub +# end class tomato_client_handlerTypeSub + + +def get_root_tag(node): + tag = supermod.Tag_pattern_.match(node.tag).groups()[-1] + rootClass = None + rootClass = supermod.GDSClassesMapping.get(tag) + if rootClass is None and hasattr(supermod, tag): + rootClass = getattr(supermod, 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 = 'people' + rootClass = supermod.tomato_people + 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 = 'people' + rootClass = supermod.tomato_people + 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 = 'people' + rootClass = supermod.tomato_people + 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 = 'people' + rootClass = supermod.tomato_people + 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 prefix_classname2_sup import *\n\n') + sys.stdout.write('import prefix_classname2_sup as model_\n\n') + sys.stdout.write('rootObj = model_.rootClass(\n') + rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) + sys.stdout.write(')\n') + return rootObj + + +USAGE_TEXT = """ +Usage: python ???.py <infilename> +""" + + +def usage(): + print USAGE_TEXT + sys.exit(1) + + +def main(): + args = sys.argv[1:] + if len(args) != 1: + usage() + infilename = args[0] + parse(infilename) + + +if __name__ == '__main__': + #import pdb; pdb.set_trace() + main() diff --git a/tests/prefix_classname1_sup.py b/tests/prefix_classname1_sup.py new file mode 100644 index 0000000000000000000000000000000000000000..5f2ebd0ef75074325a48d8d749e64c03c366efbf --- /dev/null +++ b/tests/prefix_classname1_sup.py @@ -0,0 +1,2897 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# +# Generated by generateDS.py. +# +# Command line options: +# ('--no-dates', '') +# ('--no-versions', '') +# ('-p', 'tomato_') +# ('--member-specs', 'list') +# ('-f', '') +# ('-o', 'tests/prefix_classname2_sup.py') +# ('-s', 'tests/prefix_classname2_sub.py') +# ('--super', 'prefix_classname2_sup') +# +# Command line arguments: +# tests/prefix_classname.xsd +# +# Command line: +# generateDS.py --no-dates --no-versions -p "tomato_" --member-specs="list" -f -o "tests/prefix_classname2_sup.py" -s "tests/prefix_classname2_sub.py" --super="prefix_classname2_sup" tests/prefix_classname.xsd +# +# Current working directory (os.getcwd()): +# generateds +# + +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] + time_parts = input_data.split('.') + if len(time_parts) > 1: + micro_seconds = int(float('0.' + time_parts[1]) * 1000000) + input_data = '%s.%s' % (time_parts[0], micro_seconds, ) + 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 tomato_people(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('comments', 'comments', 1), + MemberSpec_('person', 'person', 1), + MemberSpec_('programmer', 'programmer', 1), + MemberSpec_('python_programmer', 'python-programmer', 1), + MemberSpec_('java_programmer', 'java-programmer', 1), + ] + 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: + self.comments = comments + if person is None: + self.person = [] + else: + self.person = person + if programmer is None: + self.programmer = [] + else: + self.programmer = programmer + if python_programmer is None: + self.python_programmer = [] + else: + self.python_programmer = python_programmer + if java_programmer is None: + self.java_programmer = [] + else: + self.java_programmer = java_programmer + def factory(*args_, **kwargs_): + if tomato_people.subclass: + return tomato_people.subclass(*args_, **kwargs_) + else: + return tomato_people(*args_, **kwargs_) + factory = staticmethod(factory) + def get_comments(self): return self.comments + def set_comments(self, comments): self.comments = comments + def add_comments(self, value): self.comments.append(value) + def insert_comments_at(self, index, value): self.comments.insert(index, value) + def replace_comments_at(self, index, value): self.comments[index] = value + def get_person(self): return self.person + def set_person(self, person): self.person = person + def add_person(self, value): self.person.append(value) + def insert_person_at(self, index, value): self.person.insert(index, value) + def replace_person_at(self, index, value): self.person[index] = value + def get_programmer(self): return self.programmer + def set_programmer(self, programmer): self.programmer = programmer + def add_programmer(self, value): self.programmer.append(value) + def insert_programmer_at(self, index, value): self.programmer.insert(index, value) + def replace_programmer_at(self, index, value): self.programmer[index] = value + def get_python_programmer(self): return self.python_programmer + def set_python_programmer(self, python_programmer): self.python_programmer = python_programmer + def add_python_programmer(self, value): self.python_programmer.append(value) + def insert_python_programmer_at(self, index, value): self.python_programmer.insert(index, value) + def replace_python_programmer_at(self, index, value): self.python_programmer[index] = value + def get_java_programmer(self): return self.java_programmer + def set_java_programmer(self, java_programmer): self.java_programmer = java_programmer + def add_java_programmer(self, value): self.java_programmer.append(value) + def insert_java_programmer_at(self, index, value): self.java_programmer.insert(index, value) + def replace_java_programmer_at(self, index, value): self.java_programmer[index] = value + def hasContent_(self): + if ( + self.comments or + self.person or + self.programmer or + self.python_programmer or + self.java_programmer + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='people', 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_='people') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='people', 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_='people'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='people', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + for comments_ in self.comments: + comments_.export(outfile, level, namespace_, name_='comments', pretty_print=pretty_print) + for person_ in self.person: + person_.export(outfile, level, namespace_, name_='person', pretty_print=pretty_print) + for programmer_ in self.programmer: + programmer_.export(outfile, level, namespace_, name_='programmer', pretty_print=pretty_print) + for python_programmer_ in self.python_programmer: + python_programmer_.export(outfile, level, namespace_, name_='python-programmer', pretty_print=pretty_print) + for java_programmer_ in self.java_programmer: + java_programmer_.export(outfile, level, namespace_, name_='java-programmer', pretty_print=pretty_print) + def exportLiteral(self, outfile, level, name_='people'): + 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_): + showIndent(outfile, level) + outfile.write('comments=[\n') + level += 1 + for comments_ in self.comments: + showIndent(outfile, level) + outfile.write('model_.comments(\n') + comments_.exportLiteral(outfile, level) + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('person=[\n') + level += 1 + for person_ in self.person: + showIndent(outfile, level) + outfile.write('model_.person(\n') + person_.exportLiteral(outfile, level) + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('programmer=[\n') + level += 1 + for programmer_ in self.programmer: + showIndent(outfile, level) + outfile.write('model_.programmer(\n') + programmer_.exportLiteral(outfile, level) + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('python_programmer=[\n') + level += 1 + for python_programmer_ in self.python_programmer: + showIndent(outfile, level) + outfile.write('model_.python_programmer(\n') + python_programmer_.exportLiteral(outfile, level, name_='python-programmer') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('java_programmer=[\n') + level += 1 + for java_programmer_ in self.java_programmer: + showIndent(outfile, level) + outfile.write('model_.java_programmer(\n') + java_programmer_.exportLiteral(outfile, level, name_='java-programmer') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + 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_ == 'comments': + obj_ = tomato_comments.factory() + obj_.build(child_) + self.comments.append(obj_) + obj_.original_tagname_ = 'comments' + elif nodeName_ == 'person': + class_obj_ = self.get_class_obj_(child_, tomato_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_, tomato_programmer) + obj_ = class_obj_.factory() + obj_.build(child_) + self.programmer.append(obj_) + obj_.original_tagname_ = 'programmer' + elif nodeName_ == 'python-programmer': + obj_ = tomato_python_programmer.factory() + obj_.build(child_) + self.python_programmer.append(obj_) + obj_.original_tagname_ = 'python-programmer' + elif nodeName_ == 'java-programmer': + obj_ = tomato_java_programmer.factory() + obj_.build(child_) + self.java_programmer.append(obj_) + obj_.original_tagname_ = 'java-programmer' +# end class tomato_people + + +class tomato_comments(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('emp', 'xs:string', 1), + MemberSpec_('valueOf_', [], 0), + ] + 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: + self.emp = emp + self.valueOf_ = valueOf_ + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if tomato_comments.subclass: + return tomato_comments.subclass(*args_, **kwargs_) + else: + return tomato_comments(*args_, **kwargs_) + factory = staticmethod(factory) + def get_emp(self): return self.emp + def set_emp(self, emp): self.emp = emp + def add_emp(self, value): self.emp.append(value) + def insert_emp_at(self, index, value): self.emp.insert(index, value) + def replace_emp_at(self, index, value): self.emp[index] = value + def get_valueOf_(self): return self.valueOf_ + def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def hasContent_(self): + if ( + self.emp or + self.valueOf_ + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='comments', 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_='comments') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='comments', 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_='comments'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='comments', fromsubclass_=False, pretty_print=True): + if not fromsubclass_: + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_, pretty_print=pretty_print) + def exportLiteral(self, outfile, level, name_='comments'): + level += 1 + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + showIndent(outfile, level) + outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) + def exportLiteralAttributes(self, outfile, level, already_processed, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + pass + def build(self, node): + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) + self.valueOf_ = get_all_text_(node) + if node.text is not None: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', node.text) + self.content_.append(obj_) + 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_ == 'emp' and child_.text is not None: + valuestr_ = child_.text + obj_ = self.mixedclass_(MixedContainer.CategorySimple, + MixedContainer.TypeString, 'emp', valuestr_) + self.content_.append(obj_) + if not fromsubclass_ and child_.tail is not None: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.tail) + self.content_.append(obj_) +# end class tomato_comments + + +class tomato_person(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('vegetable', 'xs:string', 0), + MemberSpec_('fruit', 'xs:string', 0), + MemberSpec_('ratio', 'xs:float', 0), + MemberSpec_('id', 'xs:integer', 0), + MemberSpec_('value', 'xs:string', 0), + MemberSpec_('name', 'xs:string', 0), + MemberSpec_('interest', 'xs:string', 1), + MemberSpec_('category', 'xs:integer', 0), + MemberSpec_('agent', 'agent', 1), + MemberSpec_('promoter', 'booster', 1), + MemberSpec_('description', 'xs:string', 0), + ] + 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) + self.id = _cast(int, id) + self.value = _cast(None, value) + self.name = name + if interest is None: + self.interest = [] + else: + self.interest = interest + self.category = category + if agent is None: + self.agent = [] + else: + self.agent = agent + if promoter is None: + self.promoter = [] + else: + self.promoter = promoter + self.description = description + self.extensiontype_ = extensiontype_ + def factory(*args_, **kwargs_): + if tomato_person.subclass: + return tomato_person.subclass(*args_, **kwargs_) + else: + return tomato_person(*args_, **kwargs_) + factory = staticmethod(factory) + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_interest(self): return self.interest + def set_interest(self, interest): self.interest = interest + def add_interest(self, value): self.interest.append(value) + def insert_interest_at(self, index, value): self.interest.insert(index, value) + def replace_interest_at(self, index, value): self.interest[index] = value + def get_category(self): return self.category + def set_category(self, category): self.category = category + def get_agent(self): return self.agent + def set_agent(self, agent): self.agent = agent + def add_agent(self, value): self.agent.append(value) + def insert_agent_at(self, index, value): self.agent.insert(index, value) + def replace_agent_at(self, index, value): self.agent[index] = value + def get_promoter(self): return self.promoter + def set_promoter(self, promoter): self.promoter = promoter + def add_promoter(self, value): self.promoter.append(value) + def insert_promoter_at(self, index, value): self.promoter.insert(index, value) + def replace_promoter_at(self, index, value): self.promoter[index] = value + def get_description(self): return self.description + def set_description(self, description): self.description = description + def get_vegetable(self): return self.vegetable + def set_vegetable(self, vegetable): self.vegetable = vegetable + def get_fruit(self): return self.fruit + def set_fruit(self, fruit): self.fruit = fruit + def get_ratio(self): return self.ratio + def set_ratio(self, ratio): self.ratio = ratio + def get_id(self): return self.id + def set_id(self, id): self.id = id + def get_value(self): return self.value + def set_value(self, value): self.value = value + def get_extensiontype_(self): return self.extensiontype_ + def set_extensiontype_(self, extensiontype_): self.extensiontype_ = extensiontype_ + def hasContent_(self): + if ( + self.name is not None or + self.interest or + self.category is not None or + self.agent or + self.promoter or + self.description is not None + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='person', 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_='person') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='person', 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_='person'): + if self.vegetable is not None and 'vegetable' not in already_processed: + already_processed.add('vegetable') + outfile.write(' vegetable=%s' % (self.gds_format_string(quote_attrib(self.vegetable).encode(ExternalEncoding), input_name='vegetable'), )) + if self.fruit is not None and 'fruit' not in already_processed: + already_processed.add('fruit') + outfile.write(' fruit=%s' % (self.gds_format_string(quote_attrib(self.fruit).encode(ExternalEncoding), input_name='fruit'), )) + if self.ratio is not None and 'ratio' not in already_processed: + already_processed.add('ratio') + outfile.write(' ratio="%s"' % self.gds_format_float(self.ratio, input_name='ratio')) + if self.id is not None and 'id' not in already_processed: + already_processed.add('id') + outfile.write(' id="%s"' % self.gds_format_integer(self.id, input_name='id')) + if self.value is not None and 'value' not in already_processed: + already_processed.add('value') + outfile.write(' value=%s' % (self.gds_format_string(quote_attrib(self.value).encode(ExternalEncoding), input_name='value'), )) + if self.extensiontype_ is not None and 'xsi:type' not in already_processed: + already_processed.add('xsi:type') + outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') + outfile.write(' xsi:type="%s"' % self.extensiontype_) + def exportChildren(self, outfile, level, namespace_='', name_='person', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.name is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sname>%s</%sname>%s' % (namespace_, self.gds_format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_, eol_)) + for interest_ in self.interest: + showIndent(outfile, level, pretty_print) + outfile.write('<%sinterest>%s</%sinterest>%s' % (namespace_, self.gds_format_string(quote_xml(interest_).encode(ExternalEncoding), input_name='interest'), namespace_, eol_)) + if self.category is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%scategory>%s</%scategory>%s' % (namespace_, self.gds_format_integer(self.category, input_name='category'), namespace_, eol_)) + for agent_ in self.agent: + agent_.export(outfile, level, namespace_, name_='agent', pretty_print=pretty_print) + for promoter_ in self.promoter: + promoter_.export(outfile, level, namespace_, name_='promoter', pretty_print=pretty_print) + if self.description is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sdescription>%s</%sdescription>%s' % (namespace_, self.gds_format_string(quote_xml(self.description).encode(ExternalEncoding), input_name='description'), namespace_, eol_)) + def exportLiteral(self, outfile, level, name_='person'): + 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_): + if self.vegetable is not None and 'vegetable' not in already_processed: + already_processed.add('vegetable') + showIndent(outfile, level) + outfile.write('vegetable="%s",\n' % (self.vegetable,)) + if self.fruit is not None and 'fruit' not in already_processed: + already_processed.add('fruit') + showIndent(outfile, level) + outfile.write('fruit="%s",\n' % (self.fruit,)) + if self.ratio is not None and 'ratio' not in already_processed: + already_processed.add('ratio') + showIndent(outfile, level) + outfile.write('ratio=%f,\n' % (self.ratio,)) + if self.id is not None and 'id' not in already_processed: + already_processed.add('id') + showIndent(outfile, level) + outfile.write('id=%d,\n' % (self.id,)) + if self.value is not None and 'value' not in already_processed: + already_processed.add('value') + showIndent(outfile, level) + outfile.write('value="%s",\n' % (self.value,)) + def exportLiteralChildren(self, outfile, level, name_): + if self.name is not None: + showIndent(outfile, level) + outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('interest=[\n') + level += 1 + for interest_ in self.interest: + showIndent(outfile, level) + outfile.write('%s,\n' % quote_python(interest_).encode(ExternalEncoding)) + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.category is not None: + showIndent(outfile, level) + outfile.write('category=%d,\n' % self.category) + showIndent(outfile, level) + outfile.write('agent=[\n') + level += 1 + for agent_ in self.agent: + showIndent(outfile, level) + outfile.write('model_.agent(\n') + agent_.exportLiteral(outfile, level) + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('promoter=[\n') + level += 1 + for promoter_ in self.promoter: + showIndent(outfile, level) + outfile.write('model_.booster(\n') + promoter_.exportLiteral(outfile, level, name_='booster') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.description is not None: + showIndent(outfile, level) + outfile.write('description=%s,\n' % quote_python(self.description).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): + value = find_attr_value_('vegetable', node) + if value is not None and 'vegetable' not in already_processed: + already_processed.add('vegetable') + self.vegetable = value + value = find_attr_value_('fruit', node) + if value is not None and 'fruit' not in already_processed: + already_processed.add('fruit') + self.fruit = value + value = find_attr_value_('ratio', node) + if value is not None and 'ratio' not in already_processed: + already_processed.add('ratio') + try: + self.ratio = float(value) + except ValueError, exp: + raise ValueError('Bad float/double attribute (ratio): %s' % exp) + value = find_attr_value_('id', node) + if value is not None and 'id' not in already_processed: + already_processed.add('id') + try: + self.id = int(value) + except ValueError, exp: + raise_parse_error(node, 'Bad integer attribute: %s' % exp) + value = find_attr_value_('value', node) + if value is not None and 'value' not in already_processed: + already_processed.add('value') + self.value = value + value = find_attr_value_('xsi:type', node) + if value is not None and 'xsi:type' not in already_processed: + already_processed.add('xsi:type') + self.extensiontype_ = value + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + if nodeName_ == 'name': + name_ = child_.text + name_ = self.gds_validate_string(name_, node, 'name') + self.name = name_ + elif nodeName_ == 'interest': + interest_ = child_.text + interest_ = self.gds_validate_string(interest_, node, 'interest') + self.interest.append(interest_) + elif nodeName_ == 'category': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + ival_ = self.gds_validate_integer(ival_, node, 'category') + self.category = ival_ + elif nodeName_ == 'agent': + obj_ = tomato_agent.factory() + obj_.build(child_) + self.agent.append(obj_) + obj_.original_tagname_ = 'agent' + elif nodeName_ == 'promoter': + obj_ = tomato_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') + self.description = description_ +# end class tomato_person + + +class tomato_programmer(tomato_person): + member_data_items_ = [ + MemberSpec_('language', 'xs:string', 0), + MemberSpec_('area', 'xs:string', 0), + MemberSpec_('attrnegint', 'xs:negativeInteger', 0), + MemberSpec_('attrposint', 'xs:positiveInteger', 0), + MemberSpec_('attrnonnegint', 'xs:nonNegativeInteger', 0), + MemberSpec_('attrnonposint', 'xs:nonPositiveInteger', 0), + MemberSpec_('email', 'xs:string', 0), + MemberSpec_('elposint', 'xs:positiveInteger', 0), + MemberSpec_('elnonposint', 'xs:nonPositiveInteger', 0), + MemberSpec_('elnegint', 'xs:negativeInteger', 0), + MemberSpec_('elnonnegint', 'xs:nonNegativeInteger', 0), + MemberSpec_('eldate', 'xs:date', 0), + MemberSpec_('eldatetime', 'xs:dateTime', 0), + MemberSpec_('eltoken', 'xs:token', 0), + MemberSpec_('elshort', 'xs:short', 0), + MemberSpec_('ellong', 'xs:long', 0), + MemberSpec_('elparam', 'param', 0), + MemberSpec_('elarraytypes', ['ArrayTypes', 'xs:NMTOKEN'], 0), + ] + subclass = None + superclass = tomato_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(tomato_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) + self.attrnegint = _cast(int, attrnegint) + self.attrposint = _cast(int, attrposint) + self.attrnonnegint = _cast(int, attrnonnegint) + self.attrnonposint = _cast(int, attrnonposint) + self.email = email + self.elposint = elposint + self.elnonposint = elnonposint + self.elnegint = elnegint + self.elnonnegint = elnonnegint + if isinstance(eldate, basestring): + initvalue_ = datetime_.datetime.strptime(eldate, '%Y-%m-%d').date() + else: + initvalue_ = eldate + self.eldate = initvalue_ + if isinstance(eldatetime, basestring): + initvalue_ = datetime_.datetime.strptime(eldatetime, '%Y-%m-%dT%H:%M:%S') + else: + initvalue_ = eldatetime + self.eldatetime = initvalue_ + self.eltoken = eltoken + self.elshort = elshort + self.ellong = ellong + self.elparam = elparam + self.elarraytypes = elarraytypes + self.extensiontype_ = extensiontype_ + def factory(*args_, **kwargs_): + if tomato_programmer.subclass: + return tomato_programmer.subclass(*args_, **kwargs_) + else: + return tomato_programmer(*args_, **kwargs_) + factory = staticmethod(factory) + def get_email(self): return self.email + def set_email(self, email): self.email = email + def get_elposint(self): return self.elposint + def set_elposint(self, elposint): self.elposint = elposint + def get_elnonposint(self): return self.elnonposint + def set_elnonposint(self, elnonposint): self.elnonposint = elnonposint + def get_elnegint(self): return self.elnegint + def set_elnegint(self, elnegint): self.elnegint = elnegint + def get_elnonnegint(self): return self.elnonnegint + def set_elnonnegint(self, elnonnegint): self.elnonnegint = elnonnegint + def get_eldate(self): return self.eldate + def set_eldate(self, eldate): self.eldate = eldate + def get_eldatetime(self): return self.eldatetime + def set_eldatetime(self, eldatetime): self.eldatetime = eldatetime + def get_eltoken(self): return self.eltoken + def set_eltoken(self, eltoken): self.eltoken = eltoken + def get_elshort(self): return self.elshort + def set_elshort(self, elshort): self.elshort = elshort + def get_ellong(self): return self.ellong + def set_ellong(self, ellong): self.ellong = ellong + def get_elparam(self): return self.elparam + def set_elparam(self, elparam): self.elparam = elparam + def get_elarraytypes(self): return self.elarraytypes + def set_elarraytypes(self, elarraytypes): self.elarraytypes = elarraytypes + def get_language(self): return self.language + def set_language(self, language): self.language = language + def get_area(self): return self.area + def set_area(self, area): self.area = area + def get_attrnegint(self): return self.attrnegint + def set_attrnegint(self, attrnegint): self.attrnegint = attrnegint + def get_attrposint(self): return self.attrposint + def set_attrposint(self, attrposint): self.attrposint = attrposint + def get_attrnonnegint(self): return self.attrnonnegint + def set_attrnonnegint(self, attrnonnegint): self.attrnonnegint = attrnonnegint + def get_attrnonposint(self): return self.attrnonposint + def set_attrnonposint(self, attrnonposint): self.attrnonposint = attrnonposint + def get_extensiontype_(self): return self.extensiontype_ + def set_extensiontype_(self, extensiontype_): self.extensiontype_ = extensiontype_ + def validate_ArrayTypes(self, value): + # Validate type ArrayTypes, a restriction on xs:NMTOKEN. + pass + def hasContent_(self): + if ( + self.email is not None or + self.elposint is not None or + self.elnonposint is not None or + self.elnegint is not None or + self.elnonnegint is not None or + self.eldate is not None or + self.eldatetime is not None or + self.eltoken is not None or + self.elshort is not None or + self.ellong is not None or + self.elparam is not None or + self.elarraytypes is not None or + super(tomato_programmer, self).hasContent_() + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='programmer', 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_='programmer') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='programmer', 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_='programmer'): + super(tomato_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='programmer') + if self.language is not None and 'language' not in already_processed: + already_processed.add('language') + outfile.write(' language=%s' % (self.gds_format_string(quote_attrib(self.language).encode(ExternalEncoding), input_name='language'), )) + if self.area is not None and 'area' not in already_processed: + already_processed.add('area') + outfile.write(' area=%s' % (self.gds_format_string(quote_attrib(self.area).encode(ExternalEncoding), input_name='area'), )) + if self.attrnegint is not None and 'attrnegint' not in already_processed: + already_processed.add('attrnegint') + outfile.write(' attrnegint="%s"' % self.gds_format_integer(self.attrnegint, input_name='attrnegint')) + if self.attrposint is not None and 'attrposint' not in already_processed: + already_processed.add('attrposint') + outfile.write(' attrposint="%s"' % self.gds_format_integer(self.attrposint, input_name='attrposint')) + if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed: + already_processed.add('attrnonnegint') + outfile.write(' attrnonnegint="%s"' % self.gds_format_integer(self.attrnonnegint, input_name='attrnonnegint')) + if self.attrnonposint is not None and 'attrnonposint' not in already_processed: + already_processed.add('attrnonposint') + outfile.write(' attrnonposint="%s"' % self.gds_format_integer(self.attrnonposint, input_name='attrnonposint')) + if self.extensiontype_ is not None and 'xsi:type' not in already_processed: + already_processed.add('xsi:type') + outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') + outfile.write(' xsi:type="%s"' % self.extensiontype_) + def exportChildren(self, outfile, level, namespace_='', name_='programmer', fromsubclass_=False, pretty_print=True): + super(tomato_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.email is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%semail>%s</%semail>%s' % (namespace_, self.gds_format_string(quote_xml(self.email).encode(ExternalEncoding), input_name='email'), namespace_, eol_)) + if self.elposint is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%selposint>%s</%selposint>%s' % (namespace_, self.gds_format_integer(self.elposint, input_name='elposint'), namespace_, eol_)) + if self.elnonposint is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%selnonposint>%s</%selnonposint>%s' % (namespace_, self.gds_format_integer(self.elnonposint, input_name='elnonposint'), namespace_, eol_)) + if self.elnegint is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%selnegint>%s</%selnegint>%s' % (namespace_, self.gds_format_integer(self.elnegint, input_name='elnegint'), namespace_, eol_)) + if self.elnonnegint is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%selnonnegint>%s</%selnonnegint>%s' % (namespace_, self.gds_format_integer(self.elnonnegint, input_name='elnonnegint'), namespace_, eol_)) + if self.eldate is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%seldate>%s</%seldate>%s' % (namespace_, self.gds_format_date(self.eldate, input_name='eldate'), namespace_, eol_)) + if self.eldatetime is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%seldatetime>%s</%seldatetime>%s' % (namespace_, self.gds_format_datetime(self.eldatetime, input_name='eldatetime'), namespace_, eol_)) + if self.eltoken is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%seltoken>%s</%seltoken>%s' % (namespace_, self.gds_format_string(quote_xml(self.eltoken).encode(ExternalEncoding), input_name='eltoken'), namespace_, eol_)) + if self.elshort is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%selshort>%s</%selshort>%s' % (namespace_, self.gds_format_integer(self.elshort, input_name='elshort'), namespace_, eol_)) + if self.ellong is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sellong>%s</%sellong>%s' % (namespace_, self.gds_format_integer(self.ellong, input_name='ellong'), namespace_, eol_)) + if self.elparam is not None: + self.elparam.export(outfile, level, namespace_, name_='elparam', pretty_print=pretty_print) + if self.elarraytypes is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%selarraytypes>%s</%selarraytypes>%s' % (namespace_, self.gds_format_string(quote_xml(self.elarraytypes).encode(ExternalEncoding), input_name='elarraytypes'), namespace_, eol_)) + def exportLiteral(self, outfile, level, name_='programmer'): + 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_): + if self.language is not None and 'language' not in already_processed: + already_processed.add('language') + showIndent(outfile, level) + outfile.write('language="%s",\n' % (self.language,)) + if self.area is not None and 'area' not in already_processed: + already_processed.add('area') + showIndent(outfile, level) + outfile.write('area="%s",\n' % (self.area,)) + if self.attrnegint is not None and 'attrnegint' not in already_processed: + already_processed.add('attrnegint') + showIndent(outfile, level) + outfile.write('attrnegint=%d,\n' % (self.attrnegint,)) + if self.attrposint is not None and 'attrposint' not in already_processed: + already_processed.add('attrposint') + showIndent(outfile, level) + outfile.write('attrposint=%d,\n' % (self.attrposint,)) + if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed: + already_processed.add('attrnonnegint') + showIndent(outfile, level) + outfile.write('attrnonnegint=%d,\n' % (self.attrnonnegint,)) + if self.attrnonposint is not None and 'attrnonposint' not in already_processed: + already_processed.add('attrnonposint') + showIndent(outfile, level) + outfile.write('attrnonposint=%d,\n' % (self.attrnonposint,)) + super(tomato_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) + def exportLiteralChildren(self, outfile, level, name_): + super(tomato_programmer, self).exportLiteralChildren(outfile, level, name_) + if self.email is not None: + showIndent(outfile, level) + outfile.write('email=%s,\n' % quote_python(self.email).encode(ExternalEncoding)) + if self.elposint is not None: + showIndent(outfile, level) + outfile.write('elposint=%d,\n' % self.elposint) + if self.elnonposint is not None: + showIndent(outfile, level) + outfile.write('elnonposint=%d,\n' % self.elnonposint) + if self.elnegint is not None: + showIndent(outfile, level) + outfile.write('elnegint=%d,\n' % self.elnegint) + if self.elnonnegint is not None: + showIndent(outfile, level) + outfile.write('elnonnegint=%d,\n' % self.elnonnegint) + if self.eldate is not None: + showIndent(outfile, level) + outfile.write('eldate=model_.GeneratedsSuper.gds_parse_date("%s"),\n' % self.gds_format_date(self.eldate, input_name='eldate')) + if self.eldatetime is not None: + showIndent(outfile, level) + outfile.write('eldatetime=model_.GeneratedsSuper.gds_parse_datetime("%s"),\n' % self.gds_format_datetime(self.eldatetime, input_name='eldatetime')) + if self.eltoken is not None: + showIndent(outfile, level) + outfile.write('eltoken=%s,\n' % quote_python(self.eltoken).encode(ExternalEncoding)) + if self.elshort is not None: + showIndent(outfile, level) + outfile.write('elshort=%d,\n' % self.elshort) + if self.ellong is not None: + showIndent(outfile, level) + outfile.write('ellong=%d,\n' % self.ellong) + if self.elparam is not None: + showIndent(outfile, level) + outfile.write('elparam=model_.param(\n') + self.elparam.exportLiteral(outfile, level, name_='elparam') + showIndent(outfile, level) + outfile.write('),\n') + if self.elarraytypes is not None: + showIndent(outfile, level) + outfile.write('elarraytypes=%s,\n' % quote_python(self.elarraytypes).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): + value = find_attr_value_('language', node) + if value is not None and 'language' not in already_processed: + already_processed.add('language') + self.language = value + value = find_attr_value_('area', node) + if value is not None and 'area' not in already_processed: + already_processed.add('area') + self.area = value + value = find_attr_value_('attrnegint', node) + if value is not None and 'attrnegint' not in already_processed: + already_processed.add('attrnegint') + try: + self.attrnegint = int(value) + except ValueError, exp: + raise_parse_error(node, 'Bad integer attribute: %s' % exp) + if self.attrnegint >= 0: + raise_parse_error(node, 'Invalid NegativeInteger') + value = find_attr_value_('attrposint', node) + if value is not None and 'attrposint' not in already_processed: + already_processed.add('attrposint') + try: + self.attrposint = int(value) + except ValueError, exp: + raise_parse_error(node, 'Bad integer attribute: %s' % exp) + if self.attrposint <= 0: + raise_parse_error(node, 'Invalid PositiveInteger') + value = find_attr_value_('attrnonnegint', node) + if value is not None and 'attrnonnegint' not in already_processed: + already_processed.add('attrnonnegint') + try: + self.attrnonnegint = int(value) + except ValueError, exp: + raise_parse_error(node, 'Bad integer attribute: %s' % exp) + if self.attrnonnegint < 0: + raise_parse_error(node, 'Invalid NonNegativeInteger') + value = find_attr_value_('attrnonposint', node) + if value is not None and 'attrnonposint' not in already_processed: + already_processed.add('attrnonposint') + try: + self.attrnonposint = int(value) + except ValueError, exp: + raise_parse_error(node, 'Bad integer attribute: %s' % exp) + if self.attrnonposint > 0: + raise_parse_error(node, 'Invalid NonPositiveInteger') + value = find_attr_value_('xsi:type', node) + if value is not None and 'xsi:type' not in already_processed: + already_processed.add('xsi:type') + self.extensiontype_ = value + super(tomato_programmer, self).buildAttributes(node, attrs, already_processed) + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + if nodeName_ == 'email': + email_ = child_.text + email_ = self.gds_validate_string(email_, node, 'email') + self.email = email_ + elif nodeName_ == 'elposint': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + if ival_ <= 0: + raise_parse_error(child_, 'requires positiveInteger') + ival_ = self.gds_validate_integer(ival_, node, 'elposint') + self.elposint = ival_ + elif nodeName_ == 'elnonposint': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + if ival_ > 0: + raise_parse_error(child_, 'requires nonPositiveInteger') + ival_ = self.gds_validate_integer(ival_, node, 'elnonposint') + self.elnonposint = ival_ + elif nodeName_ == 'elnegint': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + if ival_ >= 0: + raise_parse_error(child_, 'requires negativeInteger') + ival_ = self.gds_validate_integer(ival_, node, 'elnegint') + self.elnegint = ival_ + elif nodeName_ == 'elnonnegint': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + if ival_ < 0: + raise_parse_error(child_, 'requires nonNegativeInteger') + ival_ = self.gds_validate_integer(ival_, node, 'elnonnegint') + self.elnonnegint = ival_ + elif nodeName_ == 'eldate': + sval_ = child_.text + dval_ = self.gds_parse_date(sval_) + self.eldate = dval_ + elif nodeName_ == 'eldatetime': + sval_ = child_.text + dval_ = self.gds_parse_datetime(sval_) + self.eldatetime = dval_ + elif nodeName_ == 'eltoken': + eltoken_ = child_.text + eltoken_ = re_.sub(String_cleanup_pat_, " ", eltoken_).strip() + eltoken_ = self.gds_validate_string(eltoken_, node, 'eltoken') + self.eltoken = eltoken_ + elif nodeName_ == 'elshort': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + ival_ = self.gds_validate_integer(ival_, node, 'elshort') + self.elshort = ival_ + elif nodeName_ == 'ellong': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + ival_ = self.gds_validate_integer(ival_, node, 'ellong') + self.ellong = ival_ + elif nodeName_ == 'elparam': + obj_ = tomato_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') + self.elarraytypes = elarraytypes_ + self.validate_ArrayTypes(self.elarraytypes) # validate type ArrayTypes + super(tomato_programmer, self).buildChildren(child_, node, nodeName_, True) +# end class tomato_programmer + + +class tomato_param(GeneratedsSuper): + """Finding flow attribute unneccesary in practice. A unnamed parameter + is unbound/skipped.""" + member_data_items_ = [ + MemberSpec_('semantic', 'xs:token', 0), + MemberSpec_('name', 'xs:NCName', 0), + MemberSpec_('flow', 'FlowType', 0), + MemberSpec_('sid', 'xs:NCName', 0), + MemberSpec_('type', 'xs:NMTOKEN', 0), + MemberSpec_('id', 'xs:string', 0), + MemberSpec_('valueOf_', 'xs:string', 0), + ] + 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) + self.sid = _cast(None, sid) + self.type_ = _cast(None, type_) + self.id = _cast(None, id) + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if tomato_param.subclass: + return tomato_param.subclass(*args_, **kwargs_) + else: + return tomato_param(*args_, **kwargs_) + factory = staticmethod(factory) + def get_semantic(self): return self.semantic + def set_semantic(self, semantic): self.semantic = semantic + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_flow(self): return self.flow + def set_flow(self, flow): self.flow = flow + def get_sid(self): return self.sid + def set_sid(self, sid): self.sid = sid + def get_type(self): return self.type_ + def set_type(self, type_): self.type_ = type_ + def get_id(self): return self.id + def set_id(self, id): self.id = id + def get_valueOf_(self): return self.valueOf_ + def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def hasContent_(self): + if ( + self.valueOf_ + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='param', 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_='param') + if self.hasContent_(): + outfile.write('>') + outfile.write(str(self.valueOf_).encode(ExternalEncoding)) + self.exportChildren(outfile, level + 1, namespace_='', name_='param', pretty_print=pretty_print) + outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) + else: + outfile.write('/>%s' % (eol_, )) + def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='param'): + if self.semantic is not None and 'semantic' not in already_processed: + already_processed.add('semantic') + outfile.write(' semantic=%s' % (self.gds_format_string(quote_attrib(self.semantic).encode(ExternalEncoding), input_name='semantic'), )) + if self.name is not None and 'name' not in already_processed: + already_processed.add('name') + outfile.write(' name=%s' % (quote_attrib(self.name), )) + if self.flow is not None and 'flow' not in already_processed: + already_processed.add('flow') + outfile.write(' flow=%s' % (quote_attrib(self.flow), )) + if self.sid is not None and 'sid' not in already_processed: + already_processed.add('sid') + outfile.write(' sid=%s' % (quote_attrib(self.sid), )) + if self.type_ is not None and 'type_' not in already_processed: + already_processed.add('type_') + outfile.write(' type=%s' % (self.gds_format_string(quote_attrib(self.type_).encode(ExternalEncoding), input_name='type'), )) + if self.id is not None and 'id' not in already_processed: + already_processed.add('id') + outfile.write(' id=%s' % (self.gds_format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='param', fromsubclass_=False, pretty_print=True): + pass + def exportLiteral(self, outfile, level, name_='param'): + level += 1 + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + showIndent(outfile, level) + outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) + def exportLiteralAttributes(self, outfile, level, already_processed, name_): + if self.semantic is not None and 'semantic' not in already_processed: + already_processed.add('semantic') + showIndent(outfile, level) + outfile.write('semantic="%s",\n' % (self.semantic,)) + if self.name is not None and 'name' not in already_processed: + already_processed.add('name') + showIndent(outfile, level) + outfile.write('name="%s",\n' % (self.name,)) + if self.flow is not None and 'flow' not in already_processed: + already_processed.add('flow') + showIndent(outfile, level) + outfile.write('flow=%s,\n' % (self.flow,)) + if self.sid is not None and 'sid' not in already_processed: + already_processed.add('sid') + showIndent(outfile, level) + outfile.write('sid="%s",\n' % (self.sid,)) + if self.type_ is not None and 'type_' not in already_processed: + already_processed.add('type_') + showIndent(outfile, level) + outfile.write('type_="%s",\n' % (self.type_,)) + if self.id is not None and 'id' not in already_processed: + already_processed.add('id') + showIndent(outfile, level) + outfile.write('id="%s",\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + pass + def build(self, node): + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) + self.valueOf_ = get_all_text_(node) + for child in node: + nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] + self.buildChildren(child, node, nodeName_) + return self + def buildAttributes(self, node, attrs, already_processed): + value = find_attr_value_('semantic', node) + if value is not None and 'semantic' not in already_processed: + already_processed.add('semantic') + self.semantic = value + self.semantic = ' '.join(self.semantic.split()) + value = find_attr_value_('name', node) + if value is not None and 'name' not in already_processed: + already_processed.add('name') + self.name = value + value = find_attr_value_('flow', node) + if value is not None and 'flow' not in already_processed: + already_processed.add('flow') + self.flow = value + value = find_attr_value_('sid', node) + if value is not None and 'sid' not in already_processed: + already_processed.add('sid') + self.sid = value + value = find_attr_value_('type', node) + if value is not None and 'type' not in already_processed: + already_processed.add('type') + self.type_ = value + value = find_attr_value_('id', node) + if value is not None and 'id' not in already_processed: + already_processed.add('id') + self.id = value + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + pass +# end class tomato_param + + +class tomato_python_programmer(tomato_programmer): + member_data_items_ = [ + MemberSpec_('nick-name', 'xs:string', 0), + MemberSpec_('favorite_editor', 'xs:string', 0), + ] + subclass = None + superclass = tomato_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(tomato_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 + def factory(*args_, **kwargs_): + if tomato_python_programmer.subclass: + return tomato_python_programmer.subclass(*args_, **kwargs_) + else: + return tomato_python_programmer(*args_, **kwargs_) + factory = staticmethod(factory) + def get_favorite_editor(self): return self.favorite_editor + def set_favorite_editor(self, favorite_editor): self.favorite_editor = favorite_editor + def get_nick_name(self): return self.nick_name + def set_nick_name(self, nick_name): self.nick_name = nick_name + def hasContent_(self): + if ( + self.favorite_editor is not None or + super(tomato_python_programmer, self).hasContent_() + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='python-programmer', 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_='python-programmer') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='python-programmer', 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_='python-programmer'): + super(tomato_python_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer') + if self.nick_name is not None and 'nick_name' not in already_processed: + already_processed.add('nick_name') + outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), )) + def exportChildren(self, outfile, level, namespace_='', name_='python-programmer', fromsubclass_=False, pretty_print=True): + super(tomato_python_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.favorite_editor is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sfavorite-editor>%s</%sfavorite-editor>%s' % (namespace_, self.gds_format_string(quote_xml(self.favorite_editor).encode(ExternalEncoding), input_name='favorite-editor'), namespace_, eol_)) + def exportLiteral(self, outfile, level, name_='python-programmer'): + 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_): + if self.nick_name is not None and 'nick_name' not in already_processed: + already_processed.add('nick_name') + showIndent(outfile, level) + outfile.write('nick_name="%s",\n' % (self.nick_name,)) + super(tomato_python_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) + def exportLiteralChildren(self, outfile, level, name_): + super(tomato_python_programmer, self).exportLiteralChildren(outfile, level, name_) + if self.favorite_editor is not None: + showIndent(outfile, level) + outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).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): + value = find_attr_value_('nick-name', node) + if value is not None and 'nick-name' not in already_processed: + already_processed.add('nick-name') + self.nick_name = value + super(tomato_python_programmer, self).buildAttributes(node, attrs, already_processed) + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + if nodeName_ == 'favorite-editor': + favorite_editor_ = child_.text + favorite_editor_ = self.gds_validate_string(favorite_editor_, node, 'favorite_editor') + self.favorite_editor = favorite_editor_ + super(tomato_python_programmer, self).buildChildren(child_, node, nodeName_, True) +# end class tomato_python_programmer + + +class tomato_java_programmer(tomato_programmer): + member_data_items_ = [ + MemberSpec_('status', 'xs:string', 0), + MemberSpec_('nick-name', 'xs:string', 0), + MemberSpec_('favorite_editor', 'xs:string', 0), + ] + subclass = None + superclass = tomato_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(tomato_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) + self.favorite_editor = favorite_editor + def factory(*args_, **kwargs_): + if tomato_java_programmer.subclass: + return tomato_java_programmer.subclass(*args_, **kwargs_) + else: + return tomato_java_programmer(*args_, **kwargs_) + factory = staticmethod(factory) + def get_favorite_editor(self): return self.favorite_editor + def set_favorite_editor(self, favorite_editor): self.favorite_editor = favorite_editor + def get_status(self): return self.status + def set_status(self, status): self.status = status + def get_nick_name(self): return self.nick_name + def set_nick_name(self, nick_name): self.nick_name = nick_name + def hasContent_(self): + if ( + self.favorite_editor is not None or + super(tomato_java_programmer, self).hasContent_() + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='java-programmer', 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_='java-programmer') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='java-programmer', 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_='java-programmer'): + super(tomato_java_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer') + if self.status is not None and 'status' not in already_processed: + already_processed.add('status') + outfile.write(' status=%s' % (self.gds_format_string(quote_attrib(self.status).encode(ExternalEncoding), input_name='status'), )) + if self.nick_name is not None and 'nick_name' not in already_processed: + already_processed.add('nick_name') + outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), )) + def exportChildren(self, outfile, level, namespace_='', name_='java-programmer', fromsubclass_=False, pretty_print=True): + super(tomato_java_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.favorite_editor is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sfavorite-editor>%s</%sfavorite-editor>%s' % (namespace_, self.gds_format_string(quote_xml(self.favorite_editor).encode(ExternalEncoding), input_name='favorite-editor'), namespace_, eol_)) + def exportLiteral(self, outfile, level, name_='java-programmer'): + 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_): + if self.status is not None and 'status' not in already_processed: + already_processed.add('status') + showIndent(outfile, level) + outfile.write('status="%s",\n' % (self.status,)) + if self.nick_name is not None and 'nick_name' not in already_processed: + already_processed.add('nick_name') + showIndent(outfile, level) + outfile.write('nick_name="%s",\n' % (self.nick_name,)) + super(tomato_java_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) + def exportLiteralChildren(self, outfile, level, name_): + super(tomato_java_programmer, self).exportLiteralChildren(outfile, level, name_) + if self.favorite_editor is not None: + showIndent(outfile, level) + outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).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): + value = find_attr_value_('status', node) + if value is not None and 'status' not in already_processed: + already_processed.add('status') + self.status = value + value = find_attr_value_('nick-name', node) + if value is not None and 'nick-name' not in already_processed: + already_processed.add('nick-name') + self.nick_name = value + super(tomato_java_programmer, self).buildAttributes(node, attrs, already_processed) + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + if nodeName_ == 'favorite-editor': + favorite_editor_ = child_.text + favorite_editor_ = self.gds_validate_string(favorite_editor_, node, 'favorite_editor') + self.favorite_editor = favorite_editor_ + super(tomato_java_programmer, self).buildChildren(child_, node, nodeName_, True) +# end class tomato_java_programmer + + +class tomato_agent(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('firstname', 'xs:string', 0), + MemberSpec_('lastname', 'xs:string', 0), + MemberSpec_('priority', 'xs:float', 0), + MemberSpec_('info', 'info', 0), + ] + 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 + self.info = info + def factory(*args_, **kwargs_): + if tomato_agent.subclass: + return tomato_agent.subclass(*args_, **kwargs_) + else: + return tomato_agent(*args_, **kwargs_) + factory = staticmethod(factory) + def get_firstname(self): return self.firstname + def set_firstname(self, firstname): self.firstname = firstname + def get_lastname(self): return self.lastname + def set_lastname(self, lastname): self.lastname = lastname + def get_priority(self): return self.priority + def set_priority(self, priority): self.priority = priority + def get_info(self): return self.info + def set_info(self, info): self.info = info + def hasContent_(self): + if ( + self.firstname is not None or + self.lastname is not None or + self.priority is not None or + self.info is not None + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='agent', 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_='agent') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='agent', 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_='agent'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='agent', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.firstname is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sfirstname>%s</%sfirstname>%s' % (namespace_, self.gds_format_string(quote_xml(self.firstname).encode(ExternalEncoding), input_name='firstname'), namespace_, eol_)) + if self.lastname is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%slastname>%s</%slastname>%s' % (namespace_, self.gds_format_string(quote_xml(self.lastname).encode(ExternalEncoding), input_name='lastname'), namespace_, eol_)) + if self.priority is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%spriority>%s</%spriority>%s' % (namespace_, self.gds_format_float(self.priority, input_name='priority'), namespace_, eol_)) + if self.info is not None: + self.info.export(outfile, level, namespace_, name_='info', pretty_print=pretty_print) + def exportLiteral(self, outfile, level, name_='agent'): + 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.firstname is not None: + showIndent(outfile, level) + outfile.write('firstname=%s,\n' % quote_python(self.firstname).encode(ExternalEncoding)) + if self.lastname is not None: + showIndent(outfile, level) + outfile.write('lastname=%s,\n' % quote_python(self.lastname).encode(ExternalEncoding)) + if self.priority is not None: + showIndent(outfile, level) + outfile.write('priority=%f,\n' % self.priority) + if self.info is not None: + showIndent(outfile, level) + outfile.write('info=model_.info(\n') + self.info.exportLiteral(outfile, level) + 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_ == 'firstname': + firstname_ = child_.text + firstname_ = self.gds_validate_string(firstname_, node, 'firstname') + self.firstname = firstname_ + elif nodeName_ == 'lastname': + lastname_ = child_.text + lastname_ = self.gds_validate_string(lastname_, node, 'lastname') + self.lastname = lastname_ + elif nodeName_ == 'priority': + sval_ = child_.text + try: + fval_ = float(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires float or double: %s' % exp) + fval_ = self.gds_validate_float(fval_, node, 'priority') + self.priority = fval_ + elif nodeName_ == 'info': + obj_ = tomato_info.factory() + obj_.build(child_) + self.info = obj_ + obj_.original_tagname_ = 'info' +# end class tomato_agent + + +class tomato_special_agent(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('firstname', 'xs:string', 0), + MemberSpec_('lastname', 'xs:string', 0), + MemberSpec_('priority', 'xs:float', 0), + MemberSpec_('info', 'info', 0), + ] + 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 + self.info = info + def factory(*args_, **kwargs_): + if tomato_special_agent.subclass: + return tomato_special_agent.subclass(*args_, **kwargs_) + else: + return tomato_special_agent(*args_, **kwargs_) + factory = staticmethod(factory) + def get_firstname(self): return self.firstname + def set_firstname(self, firstname): self.firstname = firstname + def get_lastname(self): return self.lastname + def set_lastname(self, lastname): self.lastname = lastname + def get_priority(self): return self.priority + def set_priority(self, priority): self.priority = priority + def get_info(self): return self.info + def set_info(self, info): self.info = info + def hasContent_(self): + if ( + self.firstname is not None or + self.lastname is not None or + self.priority is not None or + self.info is not None + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='special-agent', 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_='special-agent') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='special-agent', 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_='special-agent'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='special-agent', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.firstname is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sfirstname>%s</%sfirstname>%s' % (namespace_, self.gds_format_string(quote_xml(self.firstname).encode(ExternalEncoding), input_name='firstname'), namespace_, eol_)) + if self.lastname is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%slastname>%s</%slastname>%s' % (namespace_, self.gds_format_string(quote_xml(self.lastname).encode(ExternalEncoding), input_name='lastname'), namespace_, eol_)) + if self.priority is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%spriority>%s</%spriority>%s' % (namespace_, self.gds_format_float(self.priority, input_name='priority'), namespace_, eol_)) + if self.info is not None: + self.info.export(outfile, level, namespace_, name_='info', pretty_print=pretty_print) + def exportLiteral(self, outfile, level, name_='special-agent'): + 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.firstname is not None: + showIndent(outfile, level) + outfile.write('firstname=%s,\n' % quote_python(self.firstname).encode(ExternalEncoding)) + if self.lastname is not None: + showIndent(outfile, level) + outfile.write('lastname=%s,\n' % quote_python(self.lastname).encode(ExternalEncoding)) + if self.priority is not None: + showIndent(outfile, level) + outfile.write('priority=%f,\n' % self.priority) + if self.info is not None: + showIndent(outfile, level) + outfile.write('info=model_.info(\n') + self.info.exportLiteral(outfile, level) + 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_ == 'firstname': + firstname_ = child_.text + firstname_ = self.gds_validate_string(firstname_, node, 'firstname') + self.firstname = firstname_ + elif nodeName_ == 'lastname': + lastname_ = child_.text + lastname_ = self.gds_validate_string(lastname_, node, 'lastname') + self.lastname = lastname_ + elif nodeName_ == 'priority': + sval_ = child_.text + try: + fval_ = float(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires float or double: %s' % exp) + fval_ = self.gds_validate_float(fval_, node, 'priority') + self.priority = fval_ + elif nodeName_ == 'info': + obj_ = tomato_info.factory() + obj_.build(child_) + self.info = obj_ + obj_.original_tagname_ = 'info' +# end class tomato_special_agent + + +class tomato_booster(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('firstname', 'xs:string', 0), + MemberSpec_('lastname', 'xs:string', 0), + MemberSpec_('other_name', 'xs:float', 0), + MemberSpec_('class_', 'xs:float', 0), + MemberSpec_('other_value', 'xs:float', 1), + MemberSpec_('type_', 'xs:float', 1), + MemberSpec_('client_handler', 'client-handlerType', 1), + ] + 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 + self.class_ = class_ + if other_value is None: + self.other_value = [] + else: + self.other_value = other_value + if type_ is None: + self.type_ = [] + else: + self.type_ = type_ + if client_handler is None: + self.client_handler = [] + else: + self.client_handler = client_handler + def factory(*args_, **kwargs_): + if tomato_booster.subclass: + return tomato_booster.subclass(*args_, **kwargs_) + else: + return tomato_booster(*args_, **kwargs_) + factory = staticmethod(factory) + def get_firstname(self): return self.firstname + def set_firstname(self, firstname): self.firstname = firstname + def get_lastname(self): return self.lastname + def set_lastname(self, lastname): self.lastname = lastname + def get_other_name(self): return self.other_name + def set_other_name(self, other_name): self.other_name = other_name + def get_class(self): return self.class_ + def set_class(self, class_): self.class_ = class_ + def get_other_value(self): return self.other_value + def set_other_value(self, other_value): self.other_value = other_value + def add_other_value(self, value): self.other_value.append(value) + def insert_other_value_at(self, index, value): self.other_value.insert(index, value) + def replace_other_value_at(self, index, value): self.other_value[index] = value + def get_type(self): return self.type_ + def set_type(self, type_): self.type_ = type_ + def add_type(self, value): self.type_.append(value) + def insert_type_at(self, index, value): self.type_.insert(index, value) + def replace_type_at(self, index, value): self.type_[index] = value + def get_client_handler(self): return self.client_handler + def set_client_handler(self, client_handler): self.client_handler = client_handler + def add_client_handler(self, value): self.client_handler.append(value) + def insert_client_handler_at(self, index, value): self.client_handler.insert(index, value) + def replace_client_handler_at(self, index, value): self.client_handler[index] = value + def hasContent_(self): + if ( + self.firstname is not None or + self.lastname is not None or + self.other_name is not None or + self.class_ is not None or + self.other_value or + self.type_ or + self.client_handler + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='booster', 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_='booster') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='booster', 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_='booster'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='booster', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.firstname is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sfirstname>%s</%sfirstname>%s' % (namespace_, self.gds_format_string(quote_xml(self.firstname).encode(ExternalEncoding), input_name='firstname'), namespace_, eol_)) + if self.lastname is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%slastname>%s</%slastname>%s' % (namespace_, self.gds_format_string(quote_xml(self.lastname).encode(ExternalEncoding), input_name='lastname'), namespace_, eol_)) + if self.other_name is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sother-name>%s</%sother-name>%s' % (namespace_, self.gds_format_float(self.other_name, input_name='other-name'), namespace_, eol_)) + if self.class_ is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sclass>%s</%sclass>%s' % (namespace_, self.gds_format_float(self.class_, input_name='class'), namespace_, eol_)) + for other_value_ in self.other_value: + showIndent(outfile, level, pretty_print) + outfile.write('<%sother-value>%s</%sother-value>%s' % (namespace_, self.gds_format_float(other_value_, input_name='other-value'), namespace_, eol_)) + for type_ in self.type_: + showIndent(outfile, level, pretty_print) + outfile.write('<%stype>%s</%stype>%s' % (namespace_, self.gds_format_float(type_, input_name='type'), namespace_, eol_)) + for client_handler_ in self.client_handler: + client_handler_.export(outfile, level, namespace_, name_='client-handler', pretty_print=pretty_print) + def exportLiteral(self, outfile, level, name_='booster'): + 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.firstname is not None: + showIndent(outfile, level) + outfile.write('firstname=%s,\n' % quote_python(self.firstname).encode(ExternalEncoding)) + if self.lastname is not None: + showIndent(outfile, level) + outfile.write('lastname=%s,\n' % quote_python(self.lastname).encode(ExternalEncoding)) + if self.other_name is not None: + showIndent(outfile, level) + outfile.write('other_name=%f,\n' % self.other_name) + if self.class_ is not None: + showIndent(outfile, level) + outfile.write('class_=%f,\n' % self.class_) + showIndent(outfile, level) + outfile.write('other_value=[\n') + level += 1 + for other_value_ in self.other_value: + showIndent(outfile, level) + outfile.write('%f,\n' % other_value_) + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('type_=[\n') + level += 1 + for type_ in self.type_: + showIndent(outfile, level) + outfile.write('%f,\n' % type_) + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('client_handler=[\n') + level += 1 + for client_handler_ in self.client_handler: + showIndent(outfile, level) + outfile.write('model_.client_handlerType(\n') + client_handler_.exportLiteral(outfile, level, name_='client-handlerType') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + 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_ == 'firstname': + firstname_ = child_.text + firstname_ = self.gds_validate_string(firstname_, node, 'firstname') + self.firstname = firstname_ + elif nodeName_ == 'lastname': + lastname_ = child_.text + lastname_ = self.gds_validate_string(lastname_, node, 'lastname') + self.lastname = lastname_ + elif nodeName_ == 'other-name': + sval_ = child_.text + try: + fval_ = float(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires float or double: %s' % exp) + fval_ = self.gds_validate_float(fval_, node, 'other_name') + self.other_name = fval_ + elif nodeName_ == 'class': + sval_ = child_.text + try: + fval_ = float(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires float or double: %s' % exp) + fval_ = self.gds_validate_float(fval_, node, 'class') + self.class_ = fval_ + elif nodeName_ == 'other-value': + sval_ = child_.text + try: + fval_ = float(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires float or double: %s' % exp) + fval_ = self.gds_validate_float(fval_, node, 'other_value') + self.other_value.append(fval_) + elif nodeName_ == 'type': + sval_ = child_.text + try: + fval_ = float(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires float or double: %s' % exp) + fval_ = self.gds_validate_float(fval_, node, 'type') + self.type_.append(fval_) + elif nodeName_ == 'client-handler': + obj_ = tomato_client_handlerType.factory() + obj_.build(child_) + self.client_handler.append(obj_) + obj_.original_tagname_ = 'client-handler' +# end class tomato_booster + + +class tomato_info(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('rating', 'xs:float', 0), + MemberSpec_('type', 'xs:integer', 0), + MemberSpec_('name', 'xs:string', 0), + ] + 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) + def factory(*args_, **kwargs_): + if tomato_info.subclass: + return tomato_info.subclass(*args_, **kwargs_) + else: + return tomato_info(*args_, **kwargs_) + factory = staticmethod(factory) + def get_rating(self): return self.rating + def set_rating(self, rating): self.rating = rating + def get_type(self): return self.type_ + def set_type(self, type_): self.type_ = type_ + def get_name(self): return self.name + def set_name(self, name): self.name = name + def hasContent_(self): + if ( + + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='info', 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_='info') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='info', pretty_print=pretty_print) + outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) + else: + outfile.write('/>%s' % (eol_, )) + def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='info'): + if self.rating is not None and 'rating' not in already_processed: + already_processed.add('rating') + outfile.write(' rating="%s"' % self.gds_format_float(self.rating, input_name='rating')) + if self.type_ is not None and 'type_' not in already_processed: + already_processed.add('type_') + outfile.write(' type="%s"' % self.gds_format_integer(self.type_, input_name='type')) + if self.name is not None and 'name' not in already_processed: + already_processed.add('name') + outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) + def exportChildren(self, outfile, level, namespace_='', name_='info', fromsubclass_=False, pretty_print=True): + pass + def exportLiteral(self, outfile, level, name_='info'): + 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_): + if self.rating is not None and 'rating' not in already_processed: + already_processed.add('rating') + showIndent(outfile, level) + outfile.write('rating=%f,\n' % (self.rating,)) + if self.type_ is not None and 'type_' not in already_processed: + already_processed.add('type_') + showIndent(outfile, level) + outfile.write('type_=%d,\n' % (self.type_,)) + if self.name is not None and 'name' not in already_processed: + already_processed.add('name') + showIndent(outfile, level) + outfile.write('name="%s",\n' % (self.name,)) + def exportLiteralChildren(self, outfile, level, name_): + pass + 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): + value = find_attr_value_('rating', node) + if value is not None and 'rating' not in already_processed: + already_processed.add('rating') + try: + self.rating = float(value) + except ValueError, exp: + raise ValueError('Bad float/double attribute (rating): %s' % exp) + value = find_attr_value_('type', node) + if value is not None and 'type' not in already_processed: + already_processed.add('type') + try: + self.type_ = int(value) + except ValueError, exp: + raise_parse_error(node, 'Bad integer attribute: %s' % exp) + value = find_attr_value_('name', node) + if value is not None and 'name' not in already_processed: + already_processed.add('name') + self.name = value + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + pass +# end class tomato_info + + +class tomato_client_handlerType(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('fullname', 'xs:string', 0), + MemberSpec_('refid', 'xs:integer', 0), + ] + 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_): + if tomato_client_handlerType.subclass: + return tomato_client_handlerType.subclass(*args_, **kwargs_) + else: + return tomato_client_handlerType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_fullname(self): return self.fullname + def set_fullname(self, fullname): self.fullname = fullname + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def hasContent_(self): + if ( + self.fullname is not None or + self.refid is not None + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='client-handlerType', 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_='client-handlerType') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='client-handlerType', 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_='client-handlerType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='client-handlerType', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.fullname is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sfullname>%s</%sfullname>%s' % (namespace_, self.gds_format_string(quote_xml(self.fullname).encode(ExternalEncoding), input_name='fullname'), namespace_, eol_)) + if self.refid is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%srefid>%s</%srefid>%s' % (namespace_, self.gds_format_integer(self.refid, input_name='refid'), namespace_, eol_)) + def exportLiteral(self, outfile, level, name_='client-handlerType'): + 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.fullname is not None: + showIndent(outfile, level) + outfile.write('fullname=%s,\n' % quote_python(self.fullname).encode(ExternalEncoding)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid=%d,\n' % self.refid) + 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_ == 'fullname': + fullname_ = child_.text + fullname_ = self.gds_validate_string(fullname_, node, 'fullname') + self.fullname = fullname_ + elif nodeName_ == 'refid': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + ival_ = self.gds_validate_integer(ival_, node, 'refid') + self.refid = ival_ +# end class tomato_client_handlerType + + +GDSClassesMapping = { + 'client-handler': tomato_client_handlerType, + 'elparam': tomato_param, + 'promoter': tomato_booster, +} + + +USAGE_TEXT = """ +Usage: python <tomato_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 = 'people' + rootClass = tomato_people + 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 = 'people' + rootClass = tomato_people + 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 = 'people' + rootClass = tomato_people + 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 = 'people' + rootClass = tomato_people + 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 prefix_classname2_sup import *\n\n') + sys.stdout.write('import prefix_classname2_sup 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__ = [ + "tomato_agent", + "tomato_booster", + "tomato_client_handlerType", + "tomato_comments", + "tomato_info", + "tomato_java_programmer", + "tomato_param", + "tomato_people", + "tomato_person", + "tomato_programmer", + "tomato_python_programmer", + "tomato_special_agent" +] diff --git a/tests/prefix_classname2_out.xml b/tests/prefix_classname2_out.xml new file mode 100644 index 0000000000000000000000000000000000000000..c2e2e7ebf4af40a823bf7e24b8b0e9e7cfb9b86f --- /dev/null +++ b/tests/prefix_classname2_out.xml @@ -0,0 +1,91 @@ +<?xml version="1.0" ?> +<people> + <comments> +1. This is a <emp>foolish</emp> comment. It is <emp>really</emp> important. </comments> + <comments> +2. This is a <emp>silly</emp> comment. It is <emp>very</emp> significant. </comments> + <person ratio="3.2" id="1" value="abcd"> + <name>Alberta</name> + <interest>gardening</interest> + <interest>reading</interest> + <category>5</category> + </person> + <person id="2"> + <name>Bernardo</name> + <interest>programming</interest> + <category>0</category> + <agent> + <firstname>Darren</firstname> + <lastname>Diddly</lastname> + <priority>4.5</priority> + <info rating="5.33" type="321" name="Albert Abasinian"/> + </agent> + </person> + <person id="3"> + <name>Charlie</name> + <interest>people</interest> + <interest>cats</interest> + <interest>dogs</interest> + <category>8</category> + <promoter> + <firstname>David</firstname> + <lastname>Donaldson</lastname> + </promoter> + <promoter> + <firstname>Edward</firstname> + <lastname>Eddleberry</lastname> + </promoter> + </person> + <person id="4"/> + <programmer id="2" language="python" area="xml"> + <name>Charles Carlson</name> + <interest>programming</interest> + <category>2233</category> + <agent> + <firstname>Ernest</firstname> + <lastname>Echo</lastname> + <priority>3.8</priority> + <info rating="5.33" type="321" name="George Gregory"/> + </agent> + <description>A very happy programmer</description> + <email>charles@happyprogrammers.com</email> + <elposint>14</elposint> + <elnonposint>0</elnonposint> + <elnegint>-12</elnegint> + <elnonnegint>4</elnonnegint> + <eldate>2005-04-26</eldate> + <eldatetime>2005-04-26T10:11:12</eldatetime> + <eltoken>aa bb cc dd</eltoken> + <elshort>123</elshort> + <ellong>13241234123412341234</ellong> + <elparam semantic="a big semantic" name="Davy" id="id001"/> + </programmer> + <python-programmer vegetable="tomato" fruit="peach" ratio="8.699999999999999" id="232" value="abcd" language="python" area="xml" nick-name="davy"> + <name>Darrel Dawson</name> + <interest>hang gliding</interest> + <category>3344</category> + <agent> + <firstname>Harvey</firstname> + <lastname>Hippolite</lastname> + <priority>5.2</priority> + <info rating="6.55" type="543" name="Harvey Hippolite"/> + </agent> + <description>An object-orientated programmer</description> + <email>darrel@happyprogrammers.com</email> + <favorite-editor>jed</favorite-editor> + </python-programmer> + <java-programmer vegetable="tomato" fruit="peach" ratio="8.699999999999999" id="232" value="abcd" language="python" area="xml" nick-name="davy"> + <name>Darrel Dawson</name> + <interest>hang gliding</interest> + <category>3344</category> + <agent> + <firstname>Harvey</firstname> + <lastname>Hippolite</lastname> + <priority>5.2</priority> + <info rating="6.55" type="543" name="Harvey Hippolite"/> + </agent> + <description>An object-orientated programmer</description> + <email>darrel@happyprogrammers.com</email> + <favorite-editor>jed</favorite-editor> + </java-programmer> +</people> diff --git a/tests/prefix_classname2_sub.py b/tests/prefix_classname2_sub.py new file mode 100644 index 0000000000000000000000000000000000000000..a196947cf8ce05793a34dbac19687a5db1ef9537 --- /dev/null +++ b/tests/prefix_classname2_sub.py @@ -0,0 +1,292 @@ +#!/usr/bin/env python + +# +# Generated by generateDS.py. +# +# Command line options: +# ('--no-dates', '') +# ('--no-versions', '') +# ('-p', 'tomato_') +# ('--member-specs', 'list') +# ('-f', '') +# ('-o', 'tests/prefix_classname2_sup.py') +# ('-s', 'tests/prefix_classname2_sub.py') +# ('--super', 'prefix_classname2_sup') +# +# Command line arguments: +# tests/prefix_classname.xsd +# +# Command line: +# generateDS.py --no-dates --no-versions -p "tomato_" --member-specs="list" -f -o "tests/prefix_classname2_sup.py" -s "tests/prefix_classname2_sub.py" --super="prefix_classname2_sup" tests/prefix_classname.xsd +# +# Current working directory (os.getcwd()): +# generateds +# + +import sys + +import prefix_classname2_sup as supermod + +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 + +# +# Globals +# + +ExternalEncoding = 'ascii' + +# +# Data representation classes +# + + +class tomato_peopleSub(supermod.tomato_people): + def __init__(self, comments=None, person=None, programmer=None, python_programmer=None, java_programmer=None): + super(tomato_peopleSub, self).__init__(comments, person, programmer, python_programmer, java_programmer, ) +supermod.tomato_people.subclass = tomato_peopleSub +# end class tomato_peopleSub + + +class tomato_commentsSub(supermod.tomato_comments): + def __init__(self, emp=None, valueOf_=None, mixedclass_=None, content_=None): + super(tomato_commentsSub, self).__init__(emp, valueOf_, mixedclass_, content_, ) +supermod.tomato_comments.subclass = tomato_commentsSub +# end class tomato_commentsSub + + +class tomato_personSub(supermod.tomato_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, extensiontype_=None): + super(tomato_personSub, self).__init__(vegetable, fruit, ratio, id, value, name, interest, category, agent, promoter, description, extensiontype_, ) +supermod.tomato_person.subclass = tomato_personSub +# end class tomato_personSub + + +class tomato_programmerSub(supermod.tomato_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, extensiontype_=None): + super(tomato_programmerSub, 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, extensiontype_, ) +supermod.tomato_programmer.subclass = tomato_programmerSub +# end class tomato_programmerSub + + +class tomato_paramSub(supermod.tomato_param): + def __init__(self, semantic=None, name=None, flow=None, sid=None, type_=None, id=None, valueOf_=None): + super(tomato_paramSub, self).__init__(semantic, name, flow, sid, type_, id, valueOf_, ) +supermod.tomato_param.subclass = tomato_paramSub +# end class tomato_paramSub + + +class tomato_python_programmerSub(supermod.tomato_python_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): + super(tomato_python_programmerSub, 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, nick_name, favorite_editor, ) +supermod.tomato_python_programmer.subclass = tomato_python_programmerSub +# end class tomato_python_programmerSub + + +class tomato_java_programmerSub(supermod.tomato_java_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): + super(tomato_java_programmerSub, 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, status, nick_name, favorite_editor, ) +supermod.tomato_java_programmer.subclass = tomato_java_programmerSub +# end class tomato_java_programmerSub + + +class tomato_agentSub(supermod.tomato_agent): + def __init__(self, firstname=None, lastname=None, priority=None, info=None): + super(tomato_agentSub, self).__init__(firstname, lastname, priority, info, ) +supermod.tomato_agent.subclass = tomato_agentSub +# end class tomato_agentSub + + +class tomato_special_agentSub(supermod.tomato_special_agent): + def __init__(self, firstname=None, lastname=None, priority=None, info=None): + super(tomato_special_agentSub, self).__init__(firstname, lastname, priority, info, ) +supermod.tomato_special_agent.subclass = tomato_special_agentSub +# end class tomato_special_agentSub + + +class tomato_boosterSub(supermod.tomato_booster): + def __init__(self, firstname=None, lastname=None, other_name=None, class_=None, other_value=None, type_=None, client_handler=None): + super(tomato_boosterSub, self).__init__(firstname, lastname, other_name, class_, other_value, type_, client_handler, ) +supermod.tomato_booster.subclass = tomato_boosterSub +# end class tomato_boosterSub + + +class tomato_infoSub(supermod.tomato_info): + def __init__(self, rating=None, type_=None, name=None): + super(tomato_infoSub, self).__init__(rating, type_, name, ) +supermod.tomato_info.subclass = tomato_infoSub +# end class tomato_infoSub + + +class tomato_client_handlerTypeSub(supermod.tomato_client_handlerType): + def __init__(self, fullname=None, refid=None): + super(tomato_client_handlerTypeSub, self).__init__(fullname, refid, ) +supermod.tomato_client_handlerType.subclass = tomato_client_handlerTypeSub +# end class tomato_client_handlerTypeSub + + +def get_root_tag(node): + tag = supermod.Tag_pattern_.match(node.tag).groups()[-1] + rootClass = None + rootClass = supermod.GDSClassesMapping.get(tag) + if rootClass is None and hasattr(supermod, tag): + rootClass = getattr(supermod, 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 = 'people' + rootClass = supermod.tomato_people + 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 = 'people' + rootClass = supermod.tomato_people + 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 = 'people' + rootClass = supermod.tomato_people + 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 = 'people' + rootClass = supermod.tomato_people + 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 prefix_classname2_sup import *\n\n') + sys.stdout.write('import prefix_classname2_sup as model_\n\n') + sys.stdout.write('rootObj = model_.rootClass(\n') + rootObj.exportLiteral(sys.stdout, 0, name_=rootTag) + sys.stdout.write(')\n') + return rootObj + + +USAGE_TEXT = """ +Usage: python ???.py <infilename> +""" + + +def usage(): + print USAGE_TEXT + sys.exit(1) + + +def main(): + args = sys.argv[1:] + if len(args) != 1: + usage() + infilename = args[0] + parse(infilename) + + +if __name__ == '__main__': + #import pdb; pdb.set_trace() + main() diff --git a/tests/prefix_classname2_sup.py b/tests/prefix_classname2_sup.py new file mode 100644 index 0000000000000000000000000000000000000000..5f2ebd0ef75074325a48d8d749e64c03c366efbf --- /dev/null +++ b/tests/prefix_classname2_sup.py @@ -0,0 +1,2897 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# +# Generated by generateDS.py. +# +# Command line options: +# ('--no-dates', '') +# ('--no-versions', '') +# ('-p', 'tomato_') +# ('--member-specs', 'list') +# ('-f', '') +# ('-o', 'tests/prefix_classname2_sup.py') +# ('-s', 'tests/prefix_classname2_sub.py') +# ('--super', 'prefix_classname2_sup') +# +# Command line arguments: +# tests/prefix_classname.xsd +# +# Command line: +# generateDS.py --no-dates --no-versions -p "tomato_" --member-specs="list" -f -o "tests/prefix_classname2_sup.py" -s "tests/prefix_classname2_sub.py" --super="prefix_classname2_sup" tests/prefix_classname.xsd +# +# Current working directory (os.getcwd()): +# generateds +# + +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] + time_parts = input_data.split('.') + if len(time_parts) > 1: + micro_seconds = int(float('0.' + time_parts[1]) * 1000000) + input_data = '%s.%s' % (time_parts[0], micro_seconds, ) + 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 tomato_people(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('comments', 'comments', 1), + MemberSpec_('person', 'person', 1), + MemberSpec_('programmer', 'programmer', 1), + MemberSpec_('python_programmer', 'python-programmer', 1), + MemberSpec_('java_programmer', 'java-programmer', 1), + ] + 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: + self.comments = comments + if person is None: + self.person = [] + else: + self.person = person + if programmer is None: + self.programmer = [] + else: + self.programmer = programmer + if python_programmer is None: + self.python_programmer = [] + else: + self.python_programmer = python_programmer + if java_programmer is None: + self.java_programmer = [] + else: + self.java_programmer = java_programmer + def factory(*args_, **kwargs_): + if tomato_people.subclass: + return tomato_people.subclass(*args_, **kwargs_) + else: + return tomato_people(*args_, **kwargs_) + factory = staticmethod(factory) + def get_comments(self): return self.comments + def set_comments(self, comments): self.comments = comments + def add_comments(self, value): self.comments.append(value) + def insert_comments_at(self, index, value): self.comments.insert(index, value) + def replace_comments_at(self, index, value): self.comments[index] = value + def get_person(self): return self.person + def set_person(self, person): self.person = person + def add_person(self, value): self.person.append(value) + def insert_person_at(self, index, value): self.person.insert(index, value) + def replace_person_at(self, index, value): self.person[index] = value + def get_programmer(self): return self.programmer + def set_programmer(self, programmer): self.programmer = programmer + def add_programmer(self, value): self.programmer.append(value) + def insert_programmer_at(self, index, value): self.programmer.insert(index, value) + def replace_programmer_at(self, index, value): self.programmer[index] = value + def get_python_programmer(self): return self.python_programmer + def set_python_programmer(self, python_programmer): self.python_programmer = python_programmer + def add_python_programmer(self, value): self.python_programmer.append(value) + def insert_python_programmer_at(self, index, value): self.python_programmer.insert(index, value) + def replace_python_programmer_at(self, index, value): self.python_programmer[index] = value + def get_java_programmer(self): return self.java_programmer + def set_java_programmer(self, java_programmer): self.java_programmer = java_programmer + def add_java_programmer(self, value): self.java_programmer.append(value) + def insert_java_programmer_at(self, index, value): self.java_programmer.insert(index, value) + def replace_java_programmer_at(self, index, value): self.java_programmer[index] = value + def hasContent_(self): + if ( + self.comments or + self.person or + self.programmer or + self.python_programmer or + self.java_programmer + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='people', 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_='people') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='people', 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_='people'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='people', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + for comments_ in self.comments: + comments_.export(outfile, level, namespace_, name_='comments', pretty_print=pretty_print) + for person_ in self.person: + person_.export(outfile, level, namespace_, name_='person', pretty_print=pretty_print) + for programmer_ in self.programmer: + programmer_.export(outfile, level, namespace_, name_='programmer', pretty_print=pretty_print) + for python_programmer_ in self.python_programmer: + python_programmer_.export(outfile, level, namespace_, name_='python-programmer', pretty_print=pretty_print) + for java_programmer_ in self.java_programmer: + java_programmer_.export(outfile, level, namespace_, name_='java-programmer', pretty_print=pretty_print) + def exportLiteral(self, outfile, level, name_='people'): + 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_): + showIndent(outfile, level) + outfile.write('comments=[\n') + level += 1 + for comments_ in self.comments: + showIndent(outfile, level) + outfile.write('model_.comments(\n') + comments_.exportLiteral(outfile, level) + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('person=[\n') + level += 1 + for person_ in self.person: + showIndent(outfile, level) + outfile.write('model_.person(\n') + person_.exportLiteral(outfile, level) + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('programmer=[\n') + level += 1 + for programmer_ in self.programmer: + showIndent(outfile, level) + outfile.write('model_.programmer(\n') + programmer_.exportLiteral(outfile, level) + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('python_programmer=[\n') + level += 1 + for python_programmer_ in self.python_programmer: + showIndent(outfile, level) + outfile.write('model_.python_programmer(\n') + python_programmer_.exportLiteral(outfile, level, name_='python-programmer') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('java_programmer=[\n') + level += 1 + for java_programmer_ in self.java_programmer: + showIndent(outfile, level) + outfile.write('model_.java_programmer(\n') + java_programmer_.exportLiteral(outfile, level, name_='java-programmer') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + 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_ == 'comments': + obj_ = tomato_comments.factory() + obj_.build(child_) + self.comments.append(obj_) + obj_.original_tagname_ = 'comments' + elif nodeName_ == 'person': + class_obj_ = self.get_class_obj_(child_, tomato_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_, tomato_programmer) + obj_ = class_obj_.factory() + obj_.build(child_) + self.programmer.append(obj_) + obj_.original_tagname_ = 'programmer' + elif nodeName_ == 'python-programmer': + obj_ = tomato_python_programmer.factory() + obj_.build(child_) + self.python_programmer.append(obj_) + obj_.original_tagname_ = 'python-programmer' + elif nodeName_ == 'java-programmer': + obj_ = tomato_java_programmer.factory() + obj_.build(child_) + self.java_programmer.append(obj_) + obj_.original_tagname_ = 'java-programmer' +# end class tomato_people + + +class tomato_comments(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('emp', 'xs:string', 1), + MemberSpec_('valueOf_', [], 0), + ] + 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: + self.emp = emp + self.valueOf_ = valueOf_ + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if tomato_comments.subclass: + return tomato_comments.subclass(*args_, **kwargs_) + else: + return tomato_comments(*args_, **kwargs_) + factory = staticmethod(factory) + def get_emp(self): return self.emp + def set_emp(self, emp): self.emp = emp + def add_emp(self, value): self.emp.append(value) + def insert_emp_at(self, index, value): self.emp.insert(index, value) + def replace_emp_at(self, index, value): self.emp[index] = value + def get_valueOf_(self): return self.valueOf_ + def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def hasContent_(self): + if ( + self.emp or + self.valueOf_ + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='comments', 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_='comments') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='comments', 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_='comments'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='comments', fromsubclass_=False, pretty_print=True): + if not fromsubclass_: + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_, pretty_print=pretty_print) + def exportLiteral(self, outfile, level, name_='comments'): + level += 1 + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + showIndent(outfile, level) + outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) + def exportLiteralAttributes(self, outfile, level, already_processed, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + pass + def build(self, node): + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) + self.valueOf_ = get_all_text_(node) + if node.text is not None: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', node.text) + self.content_.append(obj_) + 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_ == 'emp' and child_.text is not None: + valuestr_ = child_.text + obj_ = self.mixedclass_(MixedContainer.CategorySimple, + MixedContainer.TypeString, 'emp', valuestr_) + self.content_.append(obj_) + if not fromsubclass_ and child_.tail is not None: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.tail) + self.content_.append(obj_) +# end class tomato_comments + + +class tomato_person(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('vegetable', 'xs:string', 0), + MemberSpec_('fruit', 'xs:string', 0), + MemberSpec_('ratio', 'xs:float', 0), + MemberSpec_('id', 'xs:integer', 0), + MemberSpec_('value', 'xs:string', 0), + MemberSpec_('name', 'xs:string', 0), + MemberSpec_('interest', 'xs:string', 1), + MemberSpec_('category', 'xs:integer', 0), + MemberSpec_('agent', 'agent', 1), + MemberSpec_('promoter', 'booster', 1), + MemberSpec_('description', 'xs:string', 0), + ] + 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) + self.id = _cast(int, id) + self.value = _cast(None, value) + self.name = name + if interest is None: + self.interest = [] + else: + self.interest = interest + self.category = category + if agent is None: + self.agent = [] + else: + self.agent = agent + if promoter is None: + self.promoter = [] + else: + self.promoter = promoter + self.description = description + self.extensiontype_ = extensiontype_ + def factory(*args_, **kwargs_): + if tomato_person.subclass: + return tomato_person.subclass(*args_, **kwargs_) + else: + return tomato_person(*args_, **kwargs_) + factory = staticmethod(factory) + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_interest(self): return self.interest + def set_interest(self, interest): self.interest = interest + def add_interest(self, value): self.interest.append(value) + def insert_interest_at(self, index, value): self.interest.insert(index, value) + def replace_interest_at(self, index, value): self.interest[index] = value + def get_category(self): return self.category + def set_category(self, category): self.category = category + def get_agent(self): return self.agent + def set_agent(self, agent): self.agent = agent + def add_agent(self, value): self.agent.append(value) + def insert_agent_at(self, index, value): self.agent.insert(index, value) + def replace_agent_at(self, index, value): self.agent[index] = value + def get_promoter(self): return self.promoter + def set_promoter(self, promoter): self.promoter = promoter + def add_promoter(self, value): self.promoter.append(value) + def insert_promoter_at(self, index, value): self.promoter.insert(index, value) + def replace_promoter_at(self, index, value): self.promoter[index] = value + def get_description(self): return self.description + def set_description(self, description): self.description = description + def get_vegetable(self): return self.vegetable + def set_vegetable(self, vegetable): self.vegetable = vegetable + def get_fruit(self): return self.fruit + def set_fruit(self, fruit): self.fruit = fruit + def get_ratio(self): return self.ratio + def set_ratio(self, ratio): self.ratio = ratio + def get_id(self): return self.id + def set_id(self, id): self.id = id + def get_value(self): return self.value + def set_value(self, value): self.value = value + def get_extensiontype_(self): return self.extensiontype_ + def set_extensiontype_(self, extensiontype_): self.extensiontype_ = extensiontype_ + def hasContent_(self): + if ( + self.name is not None or + self.interest or + self.category is not None or + self.agent or + self.promoter or + self.description is not None + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='person', 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_='person') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='person', 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_='person'): + if self.vegetable is not None and 'vegetable' not in already_processed: + already_processed.add('vegetable') + outfile.write(' vegetable=%s' % (self.gds_format_string(quote_attrib(self.vegetable).encode(ExternalEncoding), input_name='vegetable'), )) + if self.fruit is not None and 'fruit' not in already_processed: + already_processed.add('fruit') + outfile.write(' fruit=%s' % (self.gds_format_string(quote_attrib(self.fruit).encode(ExternalEncoding), input_name='fruit'), )) + if self.ratio is not None and 'ratio' not in already_processed: + already_processed.add('ratio') + outfile.write(' ratio="%s"' % self.gds_format_float(self.ratio, input_name='ratio')) + if self.id is not None and 'id' not in already_processed: + already_processed.add('id') + outfile.write(' id="%s"' % self.gds_format_integer(self.id, input_name='id')) + if self.value is not None and 'value' not in already_processed: + already_processed.add('value') + outfile.write(' value=%s' % (self.gds_format_string(quote_attrib(self.value).encode(ExternalEncoding), input_name='value'), )) + if self.extensiontype_ is not None and 'xsi:type' not in already_processed: + already_processed.add('xsi:type') + outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') + outfile.write(' xsi:type="%s"' % self.extensiontype_) + def exportChildren(self, outfile, level, namespace_='', name_='person', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.name is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sname>%s</%sname>%s' % (namespace_, self.gds_format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_, eol_)) + for interest_ in self.interest: + showIndent(outfile, level, pretty_print) + outfile.write('<%sinterest>%s</%sinterest>%s' % (namespace_, self.gds_format_string(quote_xml(interest_).encode(ExternalEncoding), input_name='interest'), namespace_, eol_)) + if self.category is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%scategory>%s</%scategory>%s' % (namespace_, self.gds_format_integer(self.category, input_name='category'), namespace_, eol_)) + for agent_ in self.agent: + agent_.export(outfile, level, namespace_, name_='agent', pretty_print=pretty_print) + for promoter_ in self.promoter: + promoter_.export(outfile, level, namespace_, name_='promoter', pretty_print=pretty_print) + if self.description is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sdescription>%s</%sdescription>%s' % (namespace_, self.gds_format_string(quote_xml(self.description).encode(ExternalEncoding), input_name='description'), namespace_, eol_)) + def exportLiteral(self, outfile, level, name_='person'): + 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_): + if self.vegetable is not None and 'vegetable' not in already_processed: + already_processed.add('vegetable') + showIndent(outfile, level) + outfile.write('vegetable="%s",\n' % (self.vegetable,)) + if self.fruit is not None and 'fruit' not in already_processed: + already_processed.add('fruit') + showIndent(outfile, level) + outfile.write('fruit="%s",\n' % (self.fruit,)) + if self.ratio is not None and 'ratio' not in already_processed: + already_processed.add('ratio') + showIndent(outfile, level) + outfile.write('ratio=%f,\n' % (self.ratio,)) + if self.id is not None and 'id' not in already_processed: + already_processed.add('id') + showIndent(outfile, level) + outfile.write('id=%d,\n' % (self.id,)) + if self.value is not None and 'value' not in already_processed: + already_processed.add('value') + showIndent(outfile, level) + outfile.write('value="%s",\n' % (self.value,)) + def exportLiteralChildren(self, outfile, level, name_): + if self.name is not None: + showIndent(outfile, level) + outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('interest=[\n') + level += 1 + for interest_ in self.interest: + showIndent(outfile, level) + outfile.write('%s,\n' % quote_python(interest_).encode(ExternalEncoding)) + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.category is not None: + showIndent(outfile, level) + outfile.write('category=%d,\n' % self.category) + showIndent(outfile, level) + outfile.write('agent=[\n') + level += 1 + for agent_ in self.agent: + showIndent(outfile, level) + outfile.write('model_.agent(\n') + agent_.exportLiteral(outfile, level) + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('promoter=[\n') + level += 1 + for promoter_ in self.promoter: + showIndent(outfile, level) + outfile.write('model_.booster(\n') + promoter_.exportLiteral(outfile, level, name_='booster') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.description is not None: + showIndent(outfile, level) + outfile.write('description=%s,\n' % quote_python(self.description).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): + value = find_attr_value_('vegetable', node) + if value is not None and 'vegetable' not in already_processed: + already_processed.add('vegetable') + self.vegetable = value + value = find_attr_value_('fruit', node) + if value is not None and 'fruit' not in already_processed: + already_processed.add('fruit') + self.fruit = value + value = find_attr_value_('ratio', node) + if value is not None and 'ratio' not in already_processed: + already_processed.add('ratio') + try: + self.ratio = float(value) + except ValueError, exp: + raise ValueError('Bad float/double attribute (ratio): %s' % exp) + value = find_attr_value_('id', node) + if value is not None and 'id' not in already_processed: + already_processed.add('id') + try: + self.id = int(value) + except ValueError, exp: + raise_parse_error(node, 'Bad integer attribute: %s' % exp) + value = find_attr_value_('value', node) + if value is not None and 'value' not in already_processed: + already_processed.add('value') + self.value = value + value = find_attr_value_('xsi:type', node) + if value is not None and 'xsi:type' not in already_processed: + already_processed.add('xsi:type') + self.extensiontype_ = value + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + if nodeName_ == 'name': + name_ = child_.text + name_ = self.gds_validate_string(name_, node, 'name') + self.name = name_ + elif nodeName_ == 'interest': + interest_ = child_.text + interest_ = self.gds_validate_string(interest_, node, 'interest') + self.interest.append(interest_) + elif nodeName_ == 'category': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + ival_ = self.gds_validate_integer(ival_, node, 'category') + self.category = ival_ + elif nodeName_ == 'agent': + obj_ = tomato_agent.factory() + obj_.build(child_) + self.agent.append(obj_) + obj_.original_tagname_ = 'agent' + elif nodeName_ == 'promoter': + obj_ = tomato_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') + self.description = description_ +# end class tomato_person + + +class tomato_programmer(tomato_person): + member_data_items_ = [ + MemberSpec_('language', 'xs:string', 0), + MemberSpec_('area', 'xs:string', 0), + MemberSpec_('attrnegint', 'xs:negativeInteger', 0), + MemberSpec_('attrposint', 'xs:positiveInteger', 0), + MemberSpec_('attrnonnegint', 'xs:nonNegativeInteger', 0), + MemberSpec_('attrnonposint', 'xs:nonPositiveInteger', 0), + MemberSpec_('email', 'xs:string', 0), + MemberSpec_('elposint', 'xs:positiveInteger', 0), + MemberSpec_('elnonposint', 'xs:nonPositiveInteger', 0), + MemberSpec_('elnegint', 'xs:negativeInteger', 0), + MemberSpec_('elnonnegint', 'xs:nonNegativeInteger', 0), + MemberSpec_('eldate', 'xs:date', 0), + MemberSpec_('eldatetime', 'xs:dateTime', 0), + MemberSpec_('eltoken', 'xs:token', 0), + MemberSpec_('elshort', 'xs:short', 0), + MemberSpec_('ellong', 'xs:long', 0), + MemberSpec_('elparam', 'param', 0), + MemberSpec_('elarraytypes', ['ArrayTypes', 'xs:NMTOKEN'], 0), + ] + subclass = None + superclass = tomato_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(tomato_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) + self.attrnegint = _cast(int, attrnegint) + self.attrposint = _cast(int, attrposint) + self.attrnonnegint = _cast(int, attrnonnegint) + self.attrnonposint = _cast(int, attrnonposint) + self.email = email + self.elposint = elposint + self.elnonposint = elnonposint + self.elnegint = elnegint + self.elnonnegint = elnonnegint + if isinstance(eldate, basestring): + initvalue_ = datetime_.datetime.strptime(eldate, '%Y-%m-%d').date() + else: + initvalue_ = eldate + self.eldate = initvalue_ + if isinstance(eldatetime, basestring): + initvalue_ = datetime_.datetime.strptime(eldatetime, '%Y-%m-%dT%H:%M:%S') + else: + initvalue_ = eldatetime + self.eldatetime = initvalue_ + self.eltoken = eltoken + self.elshort = elshort + self.ellong = ellong + self.elparam = elparam + self.elarraytypes = elarraytypes + self.extensiontype_ = extensiontype_ + def factory(*args_, **kwargs_): + if tomato_programmer.subclass: + return tomato_programmer.subclass(*args_, **kwargs_) + else: + return tomato_programmer(*args_, **kwargs_) + factory = staticmethod(factory) + def get_email(self): return self.email + def set_email(self, email): self.email = email + def get_elposint(self): return self.elposint + def set_elposint(self, elposint): self.elposint = elposint + def get_elnonposint(self): return self.elnonposint + def set_elnonposint(self, elnonposint): self.elnonposint = elnonposint + def get_elnegint(self): return self.elnegint + def set_elnegint(self, elnegint): self.elnegint = elnegint + def get_elnonnegint(self): return self.elnonnegint + def set_elnonnegint(self, elnonnegint): self.elnonnegint = elnonnegint + def get_eldate(self): return self.eldate + def set_eldate(self, eldate): self.eldate = eldate + def get_eldatetime(self): return self.eldatetime + def set_eldatetime(self, eldatetime): self.eldatetime = eldatetime + def get_eltoken(self): return self.eltoken + def set_eltoken(self, eltoken): self.eltoken = eltoken + def get_elshort(self): return self.elshort + def set_elshort(self, elshort): self.elshort = elshort + def get_ellong(self): return self.ellong + def set_ellong(self, ellong): self.ellong = ellong + def get_elparam(self): return self.elparam + def set_elparam(self, elparam): self.elparam = elparam + def get_elarraytypes(self): return self.elarraytypes + def set_elarraytypes(self, elarraytypes): self.elarraytypes = elarraytypes + def get_language(self): return self.language + def set_language(self, language): self.language = language + def get_area(self): return self.area + def set_area(self, area): self.area = area + def get_attrnegint(self): return self.attrnegint + def set_attrnegint(self, attrnegint): self.attrnegint = attrnegint + def get_attrposint(self): return self.attrposint + def set_attrposint(self, attrposint): self.attrposint = attrposint + def get_attrnonnegint(self): return self.attrnonnegint + def set_attrnonnegint(self, attrnonnegint): self.attrnonnegint = attrnonnegint + def get_attrnonposint(self): return self.attrnonposint + def set_attrnonposint(self, attrnonposint): self.attrnonposint = attrnonposint + def get_extensiontype_(self): return self.extensiontype_ + def set_extensiontype_(self, extensiontype_): self.extensiontype_ = extensiontype_ + def validate_ArrayTypes(self, value): + # Validate type ArrayTypes, a restriction on xs:NMTOKEN. + pass + def hasContent_(self): + if ( + self.email is not None or + self.elposint is not None or + self.elnonposint is not None or + self.elnegint is not None or + self.elnonnegint is not None or + self.eldate is not None or + self.eldatetime is not None or + self.eltoken is not None or + self.elshort is not None or + self.ellong is not None or + self.elparam is not None or + self.elarraytypes is not None or + super(tomato_programmer, self).hasContent_() + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='programmer', 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_='programmer') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='programmer', 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_='programmer'): + super(tomato_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='programmer') + if self.language is not None and 'language' not in already_processed: + already_processed.add('language') + outfile.write(' language=%s' % (self.gds_format_string(quote_attrib(self.language).encode(ExternalEncoding), input_name='language'), )) + if self.area is not None and 'area' not in already_processed: + already_processed.add('area') + outfile.write(' area=%s' % (self.gds_format_string(quote_attrib(self.area).encode(ExternalEncoding), input_name='area'), )) + if self.attrnegint is not None and 'attrnegint' not in already_processed: + already_processed.add('attrnegint') + outfile.write(' attrnegint="%s"' % self.gds_format_integer(self.attrnegint, input_name='attrnegint')) + if self.attrposint is not None and 'attrposint' not in already_processed: + already_processed.add('attrposint') + outfile.write(' attrposint="%s"' % self.gds_format_integer(self.attrposint, input_name='attrposint')) + if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed: + already_processed.add('attrnonnegint') + outfile.write(' attrnonnegint="%s"' % self.gds_format_integer(self.attrnonnegint, input_name='attrnonnegint')) + if self.attrnonposint is not None and 'attrnonposint' not in already_processed: + already_processed.add('attrnonposint') + outfile.write(' attrnonposint="%s"' % self.gds_format_integer(self.attrnonposint, input_name='attrnonposint')) + if self.extensiontype_ is not None and 'xsi:type' not in already_processed: + already_processed.add('xsi:type') + outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') + outfile.write(' xsi:type="%s"' % self.extensiontype_) + def exportChildren(self, outfile, level, namespace_='', name_='programmer', fromsubclass_=False, pretty_print=True): + super(tomato_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.email is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%semail>%s</%semail>%s' % (namespace_, self.gds_format_string(quote_xml(self.email).encode(ExternalEncoding), input_name='email'), namespace_, eol_)) + if self.elposint is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%selposint>%s</%selposint>%s' % (namespace_, self.gds_format_integer(self.elposint, input_name='elposint'), namespace_, eol_)) + if self.elnonposint is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%selnonposint>%s</%selnonposint>%s' % (namespace_, self.gds_format_integer(self.elnonposint, input_name='elnonposint'), namespace_, eol_)) + if self.elnegint is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%selnegint>%s</%selnegint>%s' % (namespace_, self.gds_format_integer(self.elnegint, input_name='elnegint'), namespace_, eol_)) + if self.elnonnegint is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%selnonnegint>%s</%selnonnegint>%s' % (namespace_, self.gds_format_integer(self.elnonnegint, input_name='elnonnegint'), namespace_, eol_)) + if self.eldate is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%seldate>%s</%seldate>%s' % (namespace_, self.gds_format_date(self.eldate, input_name='eldate'), namespace_, eol_)) + if self.eldatetime is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%seldatetime>%s</%seldatetime>%s' % (namespace_, self.gds_format_datetime(self.eldatetime, input_name='eldatetime'), namespace_, eol_)) + if self.eltoken is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%seltoken>%s</%seltoken>%s' % (namespace_, self.gds_format_string(quote_xml(self.eltoken).encode(ExternalEncoding), input_name='eltoken'), namespace_, eol_)) + if self.elshort is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%selshort>%s</%selshort>%s' % (namespace_, self.gds_format_integer(self.elshort, input_name='elshort'), namespace_, eol_)) + if self.ellong is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sellong>%s</%sellong>%s' % (namespace_, self.gds_format_integer(self.ellong, input_name='ellong'), namespace_, eol_)) + if self.elparam is not None: + self.elparam.export(outfile, level, namespace_, name_='elparam', pretty_print=pretty_print) + if self.elarraytypes is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%selarraytypes>%s</%selarraytypes>%s' % (namespace_, self.gds_format_string(quote_xml(self.elarraytypes).encode(ExternalEncoding), input_name='elarraytypes'), namespace_, eol_)) + def exportLiteral(self, outfile, level, name_='programmer'): + 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_): + if self.language is not None and 'language' not in already_processed: + already_processed.add('language') + showIndent(outfile, level) + outfile.write('language="%s",\n' % (self.language,)) + if self.area is not None and 'area' not in already_processed: + already_processed.add('area') + showIndent(outfile, level) + outfile.write('area="%s",\n' % (self.area,)) + if self.attrnegint is not None and 'attrnegint' not in already_processed: + already_processed.add('attrnegint') + showIndent(outfile, level) + outfile.write('attrnegint=%d,\n' % (self.attrnegint,)) + if self.attrposint is not None and 'attrposint' not in already_processed: + already_processed.add('attrposint') + showIndent(outfile, level) + outfile.write('attrposint=%d,\n' % (self.attrposint,)) + if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed: + already_processed.add('attrnonnegint') + showIndent(outfile, level) + outfile.write('attrnonnegint=%d,\n' % (self.attrnonnegint,)) + if self.attrnonposint is not None and 'attrnonposint' not in already_processed: + already_processed.add('attrnonposint') + showIndent(outfile, level) + outfile.write('attrnonposint=%d,\n' % (self.attrnonposint,)) + super(tomato_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) + def exportLiteralChildren(self, outfile, level, name_): + super(tomato_programmer, self).exportLiteralChildren(outfile, level, name_) + if self.email is not None: + showIndent(outfile, level) + outfile.write('email=%s,\n' % quote_python(self.email).encode(ExternalEncoding)) + if self.elposint is not None: + showIndent(outfile, level) + outfile.write('elposint=%d,\n' % self.elposint) + if self.elnonposint is not None: + showIndent(outfile, level) + outfile.write('elnonposint=%d,\n' % self.elnonposint) + if self.elnegint is not None: + showIndent(outfile, level) + outfile.write('elnegint=%d,\n' % self.elnegint) + if self.elnonnegint is not None: + showIndent(outfile, level) + outfile.write('elnonnegint=%d,\n' % self.elnonnegint) + if self.eldate is not None: + showIndent(outfile, level) + outfile.write('eldate=model_.GeneratedsSuper.gds_parse_date("%s"),\n' % self.gds_format_date(self.eldate, input_name='eldate')) + if self.eldatetime is not None: + showIndent(outfile, level) + outfile.write('eldatetime=model_.GeneratedsSuper.gds_parse_datetime("%s"),\n' % self.gds_format_datetime(self.eldatetime, input_name='eldatetime')) + if self.eltoken is not None: + showIndent(outfile, level) + outfile.write('eltoken=%s,\n' % quote_python(self.eltoken).encode(ExternalEncoding)) + if self.elshort is not None: + showIndent(outfile, level) + outfile.write('elshort=%d,\n' % self.elshort) + if self.ellong is not None: + showIndent(outfile, level) + outfile.write('ellong=%d,\n' % self.ellong) + if self.elparam is not None: + showIndent(outfile, level) + outfile.write('elparam=model_.param(\n') + self.elparam.exportLiteral(outfile, level, name_='elparam') + showIndent(outfile, level) + outfile.write('),\n') + if self.elarraytypes is not None: + showIndent(outfile, level) + outfile.write('elarraytypes=%s,\n' % quote_python(self.elarraytypes).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): + value = find_attr_value_('language', node) + if value is not None and 'language' not in already_processed: + already_processed.add('language') + self.language = value + value = find_attr_value_('area', node) + if value is not None and 'area' not in already_processed: + already_processed.add('area') + self.area = value + value = find_attr_value_('attrnegint', node) + if value is not None and 'attrnegint' not in already_processed: + already_processed.add('attrnegint') + try: + self.attrnegint = int(value) + except ValueError, exp: + raise_parse_error(node, 'Bad integer attribute: %s' % exp) + if self.attrnegint >= 0: + raise_parse_error(node, 'Invalid NegativeInteger') + value = find_attr_value_('attrposint', node) + if value is not None and 'attrposint' not in already_processed: + already_processed.add('attrposint') + try: + self.attrposint = int(value) + except ValueError, exp: + raise_parse_error(node, 'Bad integer attribute: %s' % exp) + if self.attrposint <= 0: + raise_parse_error(node, 'Invalid PositiveInteger') + value = find_attr_value_('attrnonnegint', node) + if value is not None and 'attrnonnegint' not in already_processed: + already_processed.add('attrnonnegint') + try: + self.attrnonnegint = int(value) + except ValueError, exp: + raise_parse_error(node, 'Bad integer attribute: %s' % exp) + if self.attrnonnegint < 0: + raise_parse_error(node, 'Invalid NonNegativeInteger') + value = find_attr_value_('attrnonposint', node) + if value is not None and 'attrnonposint' not in already_processed: + already_processed.add('attrnonposint') + try: + self.attrnonposint = int(value) + except ValueError, exp: + raise_parse_error(node, 'Bad integer attribute: %s' % exp) + if self.attrnonposint > 0: + raise_parse_error(node, 'Invalid NonPositiveInteger') + value = find_attr_value_('xsi:type', node) + if value is not None and 'xsi:type' not in already_processed: + already_processed.add('xsi:type') + self.extensiontype_ = value + super(tomato_programmer, self).buildAttributes(node, attrs, already_processed) + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + if nodeName_ == 'email': + email_ = child_.text + email_ = self.gds_validate_string(email_, node, 'email') + self.email = email_ + elif nodeName_ == 'elposint': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + if ival_ <= 0: + raise_parse_error(child_, 'requires positiveInteger') + ival_ = self.gds_validate_integer(ival_, node, 'elposint') + self.elposint = ival_ + elif nodeName_ == 'elnonposint': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + if ival_ > 0: + raise_parse_error(child_, 'requires nonPositiveInteger') + ival_ = self.gds_validate_integer(ival_, node, 'elnonposint') + self.elnonposint = ival_ + elif nodeName_ == 'elnegint': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + if ival_ >= 0: + raise_parse_error(child_, 'requires negativeInteger') + ival_ = self.gds_validate_integer(ival_, node, 'elnegint') + self.elnegint = ival_ + elif nodeName_ == 'elnonnegint': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + if ival_ < 0: + raise_parse_error(child_, 'requires nonNegativeInteger') + ival_ = self.gds_validate_integer(ival_, node, 'elnonnegint') + self.elnonnegint = ival_ + elif nodeName_ == 'eldate': + sval_ = child_.text + dval_ = self.gds_parse_date(sval_) + self.eldate = dval_ + elif nodeName_ == 'eldatetime': + sval_ = child_.text + dval_ = self.gds_parse_datetime(sval_) + self.eldatetime = dval_ + elif nodeName_ == 'eltoken': + eltoken_ = child_.text + eltoken_ = re_.sub(String_cleanup_pat_, " ", eltoken_).strip() + eltoken_ = self.gds_validate_string(eltoken_, node, 'eltoken') + self.eltoken = eltoken_ + elif nodeName_ == 'elshort': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + ival_ = self.gds_validate_integer(ival_, node, 'elshort') + self.elshort = ival_ + elif nodeName_ == 'ellong': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + ival_ = self.gds_validate_integer(ival_, node, 'ellong') + self.ellong = ival_ + elif nodeName_ == 'elparam': + obj_ = tomato_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') + self.elarraytypes = elarraytypes_ + self.validate_ArrayTypes(self.elarraytypes) # validate type ArrayTypes + super(tomato_programmer, self).buildChildren(child_, node, nodeName_, True) +# end class tomato_programmer + + +class tomato_param(GeneratedsSuper): + """Finding flow attribute unneccesary in practice. A unnamed parameter + is unbound/skipped.""" + member_data_items_ = [ + MemberSpec_('semantic', 'xs:token', 0), + MemberSpec_('name', 'xs:NCName', 0), + MemberSpec_('flow', 'FlowType', 0), + MemberSpec_('sid', 'xs:NCName', 0), + MemberSpec_('type', 'xs:NMTOKEN', 0), + MemberSpec_('id', 'xs:string', 0), + MemberSpec_('valueOf_', 'xs:string', 0), + ] + 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) + self.sid = _cast(None, sid) + self.type_ = _cast(None, type_) + self.id = _cast(None, id) + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if tomato_param.subclass: + return tomato_param.subclass(*args_, **kwargs_) + else: + return tomato_param(*args_, **kwargs_) + factory = staticmethod(factory) + def get_semantic(self): return self.semantic + def set_semantic(self, semantic): self.semantic = semantic + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_flow(self): return self.flow + def set_flow(self, flow): self.flow = flow + def get_sid(self): return self.sid + def set_sid(self, sid): self.sid = sid + def get_type(self): return self.type_ + def set_type(self, type_): self.type_ = type_ + def get_id(self): return self.id + def set_id(self, id): self.id = id + def get_valueOf_(self): return self.valueOf_ + def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def hasContent_(self): + if ( + self.valueOf_ + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='param', 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_='param') + if self.hasContent_(): + outfile.write('>') + outfile.write(str(self.valueOf_).encode(ExternalEncoding)) + self.exportChildren(outfile, level + 1, namespace_='', name_='param', pretty_print=pretty_print) + outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) + else: + outfile.write('/>%s' % (eol_, )) + def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='param'): + if self.semantic is not None and 'semantic' not in already_processed: + already_processed.add('semantic') + outfile.write(' semantic=%s' % (self.gds_format_string(quote_attrib(self.semantic).encode(ExternalEncoding), input_name='semantic'), )) + if self.name is not None and 'name' not in already_processed: + already_processed.add('name') + outfile.write(' name=%s' % (quote_attrib(self.name), )) + if self.flow is not None and 'flow' not in already_processed: + already_processed.add('flow') + outfile.write(' flow=%s' % (quote_attrib(self.flow), )) + if self.sid is not None and 'sid' not in already_processed: + already_processed.add('sid') + outfile.write(' sid=%s' % (quote_attrib(self.sid), )) + if self.type_ is not None and 'type_' not in already_processed: + already_processed.add('type_') + outfile.write(' type=%s' % (self.gds_format_string(quote_attrib(self.type_).encode(ExternalEncoding), input_name='type'), )) + if self.id is not None and 'id' not in already_processed: + already_processed.add('id') + outfile.write(' id=%s' % (self.gds_format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='param', fromsubclass_=False, pretty_print=True): + pass + def exportLiteral(self, outfile, level, name_='param'): + level += 1 + already_processed = set() + self.exportLiteralAttributes(outfile, level, already_processed, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + showIndent(outfile, level) + outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,)) + def exportLiteralAttributes(self, outfile, level, already_processed, name_): + if self.semantic is not None and 'semantic' not in already_processed: + already_processed.add('semantic') + showIndent(outfile, level) + outfile.write('semantic="%s",\n' % (self.semantic,)) + if self.name is not None and 'name' not in already_processed: + already_processed.add('name') + showIndent(outfile, level) + outfile.write('name="%s",\n' % (self.name,)) + if self.flow is not None and 'flow' not in already_processed: + already_processed.add('flow') + showIndent(outfile, level) + outfile.write('flow=%s,\n' % (self.flow,)) + if self.sid is not None and 'sid' not in already_processed: + already_processed.add('sid') + showIndent(outfile, level) + outfile.write('sid="%s",\n' % (self.sid,)) + if self.type_ is not None and 'type_' not in already_processed: + already_processed.add('type_') + showIndent(outfile, level) + outfile.write('type_="%s",\n' % (self.type_,)) + if self.id is not None and 'id' not in already_processed: + already_processed.add('id') + showIndent(outfile, level) + outfile.write('id="%s",\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + pass + def build(self, node): + already_processed = set() + self.buildAttributes(node, node.attrib, already_processed) + self.valueOf_ = get_all_text_(node) + for child in node: + nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] + self.buildChildren(child, node, nodeName_) + return self + def buildAttributes(self, node, attrs, already_processed): + value = find_attr_value_('semantic', node) + if value is not None and 'semantic' not in already_processed: + already_processed.add('semantic') + self.semantic = value + self.semantic = ' '.join(self.semantic.split()) + value = find_attr_value_('name', node) + if value is not None and 'name' not in already_processed: + already_processed.add('name') + self.name = value + value = find_attr_value_('flow', node) + if value is not None and 'flow' not in already_processed: + already_processed.add('flow') + self.flow = value + value = find_attr_value_('sid', node) + if value is not None and 'sid' not in already_processed: + already_processed.add('sid') + self.sid = value + value = find_attr_value_('type', node) + if value is not None and 'type' not in already_processed: + already_processed.add('type') + self.type_ = value + value = find_attr_value_('id', node) + if value is not None and 'id' not in already_processed: + already_processed.add('id') + self.id = value + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + pass +# end class tomato_param + + +class tomato_python_programmer(tomato_programmer): + member_data_items_ = [ + MemberSpec_('nick-name', 'xs:string', 0), + MemberSpec_('favorite_editor', 'xs:string', 0), + ] + subclass = None + superclass = tomato_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(tomato_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 + def factory(*args_, **kwargs_): + if tomato_python_programmer.subclass: + return tomato_python_programmer.subclass(*args_, **kwargs_) + else: + return tomato_python_programmer(*args_, **kwargs_) + factory = staticmethod(factory) + def get_favorite_editor(self): return self.favorite_editor + def set_favorite_editor(self, favorite_editor): self.favorite_editor = favorite_editor + def get_nick_name(self): return self.nick_name + def set_nick_name(self, nick_name): self.nick_name = nick_name + def hasContent_(self): + if ( + self.favorite_editor is not None or + super(tomato_python_programmer, self).hasContent_() + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='python-programmer', 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_='python-programmer') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='python-programmer', 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_='python-programmer'): + super(tomato_python_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer') + if self.nick_name is not None and 'nick_name' not in already_processed: + already_processed.add('nick_name') + outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), )) + def exportChildren(self, outfile, level, namespace_='', name_='python-programmer', fromsubclass_=False, pretty_print=True): + super(tomato_python_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.favorite_editor is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sfavorite-editor>%s</%sfavorite-editor>%s' % (namespace_, self.gds_format_string(quote_xml(self.favorite_editor).encode(ExternalEncoding), input_name='favorite-editor'), namespace_, eol_)) + def exportLiteral(self, outfile, level, name_='python-programmer'): + 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_): + if self.nick_name is not None and 'nick_name' not in already_processed: + already_processed.add('nick_name') + showIndent(outfile, level) + outfile.write('nick_name="%s",\n' % (self.nick_name,)) + super(tomato_python_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) + def exportLiteralChildren(self, outfile, level, name_): + super(tomato_python_programmer, self).exportLiteralChildren(outfile, level, name_) + if self.favorite_editor is not None: + showIndent(outfile, level) + outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).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): + value = find_attr_value_('nick-name', node) + if value is not None and 'nick-name' not in already_processed: + already_processed.add('nick-name') + self.nick_name = value + super(tomato_python_programmer, self).buildAttributes(node, attrs, already_processed) + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + if nodeName_ == 'favorite-editor': + favorite_editor_ = child_.text + favorite_editor_ = self.gds_validate_string(favorite_editor_, node, 'favorite_editor') + self.favorite_editor = favorite_editor_ + super(tomato_python_programmer, self).buildChildren(child_, node, nodeName_, True) +# end class tomato_python_programmer + + +class tomato_java_programmer(tomato_programmer): + member_data_items_ = [ + MemberSpec_('status', 'xs:string', 0), + MemberSpec_('nick-name', 'xs:string', 0), + MemberSpec_('favorite_editor', 'xs:string', 0), + ] + subclass = None + superclass = tomato_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(tomato_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) + self.favorite_editor = favorite_editor + def factory(*args_, **kwargs_): + if tomato_java_programmer.subclass: + return tomato_java_programmer.subclass(*args_, **kwargs_) + else: + return tomato_java_programmer(*args_, **kwargs_) + factory = staticmethod(factory) + def get_favorite_editor(self): return self.favorite_editor + def set_favorite_editor(self, favorite_editor): self.favorite_editor = favorite_editor + def get_status(self): return self.status + def set_status(self, status): self.status = status + def get_nick_name(self): return self.nick_name + def set_nick_name(self, nick_name): self.nick_name = nick_name + def hasContent_(self): + if ( + self.favorite_editor is not None or + super(tomato_java_programmer, self).hasContent_() + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='java-programmer', 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_='java-programmer') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='java-programmer', 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_='java-programmer'): + super(tomato_java_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer') + if self.status is not None and 'status' not in already_processed: + already_processed.add('status') + outfile.write(' status=%s' % (self.gds_format_string(quote_attrib(self.status).encode(ExternalEncoding), input_name='status'), )) + if self.nick_name is not None and 'nick_name' not in already_processed: + already_processed.add('nick_name') + outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), )) + def exportChildren(self, outfile, level, namespace_='', name_='java-programmer', fromsubclass_=False, pretty_print=True): + super(tomato_java_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print) + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.favorite_editor is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sfavorite-editor>%s</%sfavorite-editor>%s' % (namespace_, self.gds_format_string(quote_xml(self.favorite_editor).encode(ExternalEncoding), input_name='favorite-editor'), namespace_, eol_)) + def exportLiteral(self, outfile, level, name_='java-programmer'): + 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_): + if self.status is not None and 'status' not in already_processed: + already_processed.add('status') + showIndent(outfile, level) + outfile.write('status="%s",\n' % (self.status,)) + if self.nick_name is not None and 'nick_name' not in already_processed: + already_processed.add('nick_name') + showIndent(outfile, level) + outfile.write('nick_name="%s",\n' % (self.nick_name,)) + super(tomato_java_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_) + def exportLiteralChildren(self, outfile, level, name_): + super(tomato_java_programmer, self).exportLiteralChildren(outfile, level, name_) + if self.favorite_editor is not None: + showIndent(outfile, level) + outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).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): + value = find_attr_value_('status', node) + if value is not None and 'status' not in already_processed: + already_processed.add('status') + self.status = value + value = find_attr_value_('nick-name', node) + if value is not None and 'nick-name' not in already_processed: + already_processed.add('nick-name') + self.nick_name = value + super(tomato_java_programmer, self).buildAttributes(node, attrs, already_processed) + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + if nodeName_ == 'favorite-editor': + favorite_editor_ = child_.text + favorite_editor_ = self.gds_validate_string(favorite_editor_, node, 'favorite_editor') + self.favorite_editor = favorite_editor_ + super(tomato_java_programmer, self).buildChildren(child_, node, nodeName_, True) +# end class tomato_java_programmer + + +class tomato_agent(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('firstname', 'xs:string', 0), + MemberSpec_('lastname', 'xs:string', 0), + MemberSpec_('priority', 'xs:float', 0), + MemberSpec_('info', 'info', 0), + ] + 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 + self.info = info + def factory(*args_, **kwargs_): + if tomato_agent.subclass: + return tomato_agent.subclass(*args_, **kwargs_) + else: + return tomato_agent(*args_, **kwargs_) + factory = staticmethod(factory) + def get_firstname(self): return self.firstname + def set_firstname(self, firstname): self.firstname = firstname + def get_lastname(self): return self.lastname + def set_lastname(self, lastname): self.lastname = lastname + def get_priority(self): return self.priority + def set_priority(self, priority): self.priority = priority + def get_info(self): return self.info + def set_info(self, info): self.info = info + def hasContent_(self): + if ( + self.firstname is not None or + self.lastname is not None or + self.priority is not None or + self.info is not None + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='agent', 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_='agent') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='agent', 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_='agent'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='agent', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.firstname is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sfirstname>%s</%sfirstname>%s' % (namespace_, self.gds_format_string(quote_xml(self.firstname).encode(ExternalEncoding), input_name='firstname'), namespace_, eol_)) + if self.lastname is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%slastname>%s</%slastname>%s' % (namespace_, self.gds_format_string(quote_xml(self.lastname).encode(ExternalEncoding), input_name='lastname'), namespace_, eol_)) + if self.priority is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%spriority>%s</%spriority>%s' % (namespace_, self.gds_format_float(self.priority, input_name='priority'), namespace_, eol_)) + if self.info is not None: + self.info.export(outfile, level, namespace_, name_='info', pretty_print=pretty_print) + def exportLiteral(self, outfile, level, name_='agent'): + 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.firstname is not None: + showIndent(outfile, level) + outfile.write('firstname=%s,\n' % quote_python(self.firstname).encode(ExternalEncoding)) + if self.lastname is not None: + showIndent(outfile, level) + outfile.write('lastname=%s,\n' % quote_python(self.lastname).encode(ExternalEncoding)) + if self.priority is not None: + showIndent(outfile, level) + outfile.write('priority=%f,\n' % self.priority) + if self.info is not None: + showIndent(outfile, level) + outfile.write('info=model_.info(\n') + self.info.exportLiteral(outfile, level) + 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_ == 'firstname': + firstname_ = child_.text + firstname_ = self.gds_validate_string(firstname_, node, 'firstname') + self.firstname = firstname_ + elif nodeName_ == 'lastname': + lastname_ = child_.text + lastname_ = self.gds_validate_string(lastname_, node, 'lastname') + self.lastname = lastname_ + elif nodeName_ == 'priority': + sval_ = child_.text + try: + fval_ = float(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires float or double: %s' % exp) + fval_ = self.gds_validate_float(fval_, node, 'priority') + self.priority = fval_ + elif nodeName_ == 'info': + obj_ = tomato_info.factory() + obj_.build(child_) + self.info = obj_ + obj_.original_tagname_ = 'info' +# end class tomato_agent + + +class tomato_special_agent(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('firstname', 'xs:string', 0), + MemberSpec_('lastname', 'xs:string', 0), + MemberSpec_('priority', 'xs:float', 0), + MemberSpec_('info', 'info', 0), + ] + 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 + self.info = info + def factory(*args_, **kwargs_): + if tomato_special_agent.subclass: + return tomato_special_agent.subclass(*args_, **kwargs_) + else: + return tomato_special_agent(*args_, **kwargs_) + factory = staticmethod(factory) + def get_firstname(self): return self.firstname + def set_firstname(self, firstname): self.firstname = firstname + def get_lastname(self): return self.lastname + def set_lastname(self, lastname): self.lastname = lastname + def get_priority(self): return self.priority + def set_priority(self, priority): self.priority = priority + def get_info(self): return self.info + def set_info(self, info): self.info = info + def hasContent_(self): + if ( + self.firstname is not None or + self.lastname is not None or + self.priority is not None or + self.info is not None + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='special-agent', 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_='special-agent') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='special-agent', 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_='special-agent'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='special-agent', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.firstname is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sfirstname>%s</%sfirstname>%s' % (namespace_, self.gds_format_string(quote_xml(self.firstname).encode(ExternalEncoding), input_name='firstname'), namespace_, eol_)) + if self.lastname is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%slastname>%s</%slastname>%s' % (namespace_, self.gds_format_string(quote_xml(self.lastname).encode(ExternalEncoding), input_name='lastname'), namespace_, eol_)) + if self.priority is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%spriority>%s</%spriority>%s' % (namespace_, self.gds_format_float(self.priority, input_name='priority'), namespace_, eol_)) + if self.info is not None: + self.info.export(outfile, level, namespace_, name_='info', pretty_print=pretty_print) + def exportLiteral(self, outfile, level, name_='special-agent'): + 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.firstname is not None: + showIndent(outfile, level) + outfile.write('firstname=%s,\n' % quote_python(self.firstname).encode(ExternalEncoding)) + if self.lastname is not None: + showIndent(outfile, level) + outfile.write('lastname=%s,\n' % quote_python(self.lastname).encode(ExternalEncoding)) + if self.priority is not None: + showIndent(outfile, level) + outfile.write('priority=%f,\n' % self.priority) + if self.info is not None: + showIndent(outfile, level) + outfile.write('info=model_.info(\n') + self.info.exportLiteral(outfile, level) + 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_ == 'firstname': + firstname_ = child_.text + firstname_ = self.gds_validate_string(firstname_, node, 'firstname') + self.firstname = firstname_ + elif nodeName_ == 'lastname': + lastname_ = child_.text + lastname_ = self.gds_validate_string(lastname_, node, 'lastname') + self.lastname = lastname_ + elif nodeName_ == 'priority': + sval_ = child_.text + try: + fval_ = float(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires float or double: %s' % exp) + fval_ = self.gds_validate_float(fval_, node, 'priority') + self.priority = fval_ + elif nodeName_ == 'info': + obj_ = tomato_info.factory() + obj_.build(child_) + self.info = obj_ + obj_.original_tagname_ = 'info' +# end class tomato_special_agent + + +class tomato_booster(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('firstname', 'xs:string', 0), + MemberSpec_('lastname', 'xs:string', 0), + MemberSpec_('other_name', 'xs:float', 0), + MemberSpec_('class_', 'xs:float', 0), + MemberSpec_('other_value', 'xs:float', 1), + MemberSpec_('type_', 'xs:float', 1), + MemberSpec_('client_handler', 'client-handlerType', 1), + ] + 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 + self.class_ = class_ + if other_value is None: + self.other_value = [] + else: + self.other_value = other_value + if type_ is None: + self.type_ = [] + else: + self.type_ = type_ + if client_handler is None: + self.client_handler = [] + else: + self.client_handler = client_handler + def factory(*args_, **kwargs_): + if tomato_booster.subclass: + return tomato_booster.subclass(*args_, **kwargs_) + else: + return tomato_booster(*args_, **kwargs_) + factory = staticmethod(factory) + def get_firstname(self): return self.firstname + def set_firstname(self, firstname): self.firstname = firstname + def get_lastname(self): return self.lastname + def set_lastname(self, lastname): self.lastname = lastname + def get_other_name(self): return self.other_name + def set_other_name(self, other_name): self.other_name = other_name + def get_class(self): return self.class_ + def set_class(self, class_): self.class_ = class_ + def get_other_value(self): return self.other_value + def set_other_value(self, other_value): self.other_value = other_value + def add_other_value(self, value): self.other_value.append(value) + def insert_other_value_at(self, index, value): self.other_value.insert(index, value) + def replace_other_value_at(self, index, value): self.other_value[index] = value + def get_type(self): return self.type_ + def set_type(self, type_): self.type_ = type_ + def add_type(self, value): self.type_.append(value) + def insert_type_at(self, index, value): self.type_.insert(index, value) + def replace_type_at(self, index, value): self.type_[index] = value + def get_client_handler(self): return self.client_handler + def set_client_handler(self, client_handler): self.client_handler = client_handler + def add_client_handler(self, value): self.client_handler.append(value) + def insert_client_handler_at(self, index, value): self.client_handler.insert(index, value) + def replace_client_handler_at(self, index, value): self.client_handler[index] = value + def hasContent_(self): + if ( + self.firstname is not None or + self.lastname is not None or + self.other_name is not None or + self.class_ is not None or + self.other_value or + self.type_ or + self.client_handler + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='booster', 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_='booster') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='booster', 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_='booster'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='booster', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.firstname is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sfirstname>%s</%sfirstname>%s' % (namespace_, self.gds_format_string(quote_xml(self.firstname).encode(ExternalEncoding), input_name='firstname'), namespace_, eol_)) + if self.lastname is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%slastname>%s</%slastname>%s' % (namespace_, self.gds_format_string(quote_xml(self.lastname).encode(ExternalEncoding), input_name='lastname'), namespace_, eol_)) + if self.other_name is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sother-name>%s</%sother-name>%s' % (namespace_, self.gds_format_float(self.other_name, input_name='other-name'), namespace_, eol_)) + if self.class_ is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sclass>%s</%sclass>%s' % (namespace_, self.gds_format_float(self.class_, input_name='class'), namespace_, eol_)) + for other_value_ in self.other_value: + showIndent(outfile, level, pretty_print) + outfile.write('<%sother-value>%s</%sother-value>%s' % (namespace_, self.gds_format_float(other_value_, input_name='other-value'), namespace_, eol_)) + for type_ in self.type_: + showIndent(outfile, level, pretty_print) + outfile.write('<%stype>%s</%stype>%s' % (namespace_, self.gds_format_float(type_, input_name='type'), namespace_, eol_)) + for client_handler_ in self.client_handler: + client_handler_.export(outfile, level, namespace_, name_='client-handler', pretty_print=pretty_print) + def exportLiteral(self, outfile, level, name_='booster'): + 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.firstname is not None: + showIndent(outfile, level) + outfile.write('firstname=%s,\n' % quote_python(self.firstname).encode(ExternalEncoding)) + if self.lastname is not None: + showIndent(outfile, level) + outfile.write('lastname=%s,\n' % quote_python(self.lastname).encode(ExternalEncoding)) + if self.other_name is not None: + showIndent(outfile, level) + outfile.write('other_name=%f,\n' % self.other_name) + if self.class_ is not None: + showIndent(outfile, level) + outfile.write('class_=%f,\n' % self.class_) + showIndent(outfile, level) + outfile.write('other_value=[\n') + level += 1 + for other_value_ in self.other_value: + showIndent(outfile, level) + outfile.write('%f,\n' % other_value_) + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('type_=[\n') + level += 1 + for type_ in self.type_: + showIndent(outfile, level) + outfile.write('%f,\n' % type_) + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('client_handler=[\n') + level += 1 + for client_handler_ in self.client_handler: + showIndent(outfile, level) + outfile.write('model_.client_handlerType(\n') + client_handler_.exportLiteral(outfile, level, name_='client-handlerType') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + 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_ == 'firstname': + firstname_ = child_.text + firstname_ = self.gds_validate_string(firstname_, node, 'firstname') + self.firstname = firstname_ + elif nodeName_ == 'lastname': + lastname_ = child_.text + lastname_ = self.gds_validate_string(lastname_, node, 'lastname') + self.lastname = lastname_ + elif nodeName_ == 'other-name': + sval_ = child_.text + try: + fval_ = float(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires float or double: %s' % exp) + fval_ = self.gds_validate_float(fval_, node, 'other_name') + self.other_name = fval_ + elif nodeName_ == 'class': + sval_ = child_.text + try: + fval_ = float(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires float or double: %s' % exp) + fval_ = self.gds_validate_float(fval_, node, 'class') + self.class_ = fval_ + elif nodeName_ == 'other-value': + sval_ = child_.text + try: + fval_ = float(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires float or double: %s' % exp) + fval_ = self.gds_validate_float(fval_, node, 'other_value') + self.other_value.append(fval_) + elif nodeName_ == 'type': + sval_ = child_.text + try: + fval_ = float(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires float or double: %s' % exp) + fval_ = self.gds_validate_float(fval_, node, 'type') + self.type_.append(fval_) + elif nodeName_ == 'client-handler': + obj_ = tomato_client_handlerType.factory() + obj_.build(child_) + self.client_handler.append(obj_) + obj_.original_tagname_ = 'client-handler' +# end class tomato_booster + + +class tomato_info(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('rating', 'xs:float', 0), + MemberSpec_('type', 'xs:integer', 0), + MemberSpec_('name', 'xs:string', 0), + ] + 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) + def factory(*args_, **kwargs_): + if tomato_info.subclass: + return tomato_info.subclass(*args_, **kwargs_) + else: + return tomato_info(*args_, **kwargs_) + factory = staticmethod(factory) + def get_rating(self): return self.rating + def set_rating(self, rating): self.rating = rating + def get_type(self): return self.type_ + def set_type(self, type_): self.type_ = type_ + def get_name(self): return self.name + def set_name(self, name): self.name = name + def hasContent_(self): + if ( + + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='info', 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_='info') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='info', pretty_print=pretty_print) + outfile.write('</%s%s>%s' % (namespace_, name_, eol_)) + else: + outfile.write('/>%s' % (eol_, )) + def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='info'): + if self.rating is not None and 'rating' not in already_processed: + already_processed.add('rating') + outfile.write(' rating="%s"' % self.gds_format_float(self.rating, input_name='rating')) + if self.type_ is not None and 'type_' not in already_processed: + already_processed.add('type_') + outfile.write(' type="%s"' % self.gds_format_integer(self.type_, input_name='type')) + if self.name is not None and 'name' not in already_processed: + already_processed.add('name') + outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) + def exportChildren(self, outfile, level, namespace_='', name_='info', fromsubclass_=False, pretty_print=True): + pass + def exportLiteral(self, outfile, level, name_='info'): + 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_): + if self.rating is not None and 'rating' not in already_processed: + already_processed.add('rating') + showIndent(outfile, level) + outfile.write('rating=%f,\n' % (self.rating,)) + if self.type_ is not None and 'type_' not in already_processed: + already_processed.add('type_') + showIndent(outfile, level) + outfile.write('type_=%d,\n' % (self.type_,)) + if self.name is not None and 'name' not in already_processed: + already_processed.add('name') + showIndent(outfile, level) + outfile.write('name="%s",\n' % (self.name,)) + def exportLiteralChildren(self, outfile, level, name_): + pass + 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): + value = find_attr_value_('rating', node) + if value is not None and 'rating' not in already_processed: + already_processed.add('rating') + try: + self.rating = float(value) + except ValueError, exp: + raise ValueError('Bad float/double attribute (rating): %s' % exp) + value = find_attr_value_('type', node) + if value is not None and 'type' not in already_processed: + already_processed.add('type') + try: + self.type_ = int(value) + except ValueError, exp: + raise_parse_error(node, 'Bad integer attribute: %s' % exp) + value = find_attr_value_('name', node) + if value is not None and 'name' not in already_processed: + already_processed.add('name') + self.name = value + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + pass +# end class tomato_info + + +class tomato_client_handlerType(GeneratedsSuper): + member_data_items_ = [ + MemberSpec_('fullname', 'xs:string', 0), + MemberSpec_('refid', 'xs:integer', 0), + ] + 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_): + if tomato_client_handlerType.subclass: + return tomato_client_handlerType.subclass(*args_, **kwargs_) + else: + return tomato_client_handlerType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_fullname(self): return self.fullname + def set_fullname(self, fullname): self.fullname = fullname + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def hasContent_(self): + if ( + self.fullname is not None or + self.refid is not None + ): + return True + else: + return False + def export(self, outfile, level, namespace_='', name_='client-handlerType', 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_='client-handlerType') + if self.hasContent_(): + outfile.write('>%s' % (eol_, )) + self.exportChildren(outfile, level + 1, namespace_='', name_='client-handlerType', 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_='client-handlerType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='client-handlerType', fromsubclass_=False, pretty_print=True): + if pretty_print: + eol_ = '\n' + else: + eol_ = '' + if self.fullname is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%sfullname>%s</%sfullname>%s' % (namespace_, self.gds_format_string(quote_xml(self.fullname).encode(ExternalEncoding), input_name='fullname'), namespace_, eol_)) + if self.refid is not None: + showIndent(outfile, level, pretty_print) + outfile.write('<%srefid>%s</%srefid>%s' % (namespace_, self.gds_format_integer(self.refid, input_name='refid'), namespace_, eol_)) + def exportLiteral(self, outfile, level, name_='client-handlerType'): + 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.fullname is not None: + showIndent(outfile, level) + outfile.write('fullname=%s,\n' % quote_python(self.fullname).encode(ExternalEncoding)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid=%d,\n' % self.refid) + 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_ == 'fullname': + fullname_ = child_.text + fullname_ = self.gds_validate_string(fullname_, node, 'fullname') + self.fullname = fullname_ + elif nodeName_ == 'refid': + sval_ = child_.text + try: + ival_ = int(sval_) + except (TypeError, ValueError), exp: + raise_parse_error(child_, 'requires integer: %s' % exp) + ival_ = self.gds_validate_integer(ival_, node, 'refid') + self.refid = ival_ +# end class tomato_client_handlerType + + +GDSClassesMapping = { + 'client-handler': tomato_client_handlerType, + 'elparam': tomato_param, + 'promoter': tomato_booster, +} + + +USAGE_TEXT = """ +Usage: python <tomato_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 = 'people' + rootClass = tomato_people + 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 = 'people' + rootClass = tomato_people + 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 = 'people' + rootClass = tomato_people + 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 = 'people' + rootClass = tomato_people + 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 prefix_classname2_sup import *\n\n') + sys.stdout.write('import prefix_classname2_sup 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__ = [ + "tomato_agent", + "tomato_booster", + "tomato_client_handlerType", + "tomato_comments", + "tomato_info", + "tomato_java_programmer", + "tomato_param", + "tomato_people", + "tomato_person", + "tomato_programmer", + "tomato_python_programmer", + "tomato_special_agent" +] diff --git a/tests/test.py b/tests/test.py index 96a05e27068e50e1ce9cacc523e85333f8f02732..5e965bc05c34b9442b2ea2097573b446115ac1cc 100755 --- a/tests/test.py +++ b/tests/test.py @@ -525,6 +525,31 @@ class GenTest(unittest.TestCase): result, err = self.execute(cmd) self.check_result(result, err, ()) + def test_024_prefix_classname(self): + cmdTempl = ( + 'python generateDS.py --no-dates --no-versions ' + '-p tomato_ ' + '--member-specs=list -f ' + '-o tests/%s2_sup.py -s tests/%s2_sub.py ' + '--super=%s2_sup ' + 'tests/%s.xsd' + ) + t_ = 'prefix_classname' + cmd = cmdTempl % (t_, t_, t_, t_, ) + result, _ = self.execute(cmd, cwd='..') + cmd = 'diff %s1_sup.py %s2_sup.py' % (t_, t_, ) + result, err = self.execute(cmd) + self.check_result(result, err, ('sys.stdout.write',)) + cmd = 'diff %s1_sub.py %s2_sub.py' % (t_, t_, ) + result, err = self.execute(cmd) + self.check_result(result, err, ()) + cmdTempl = 'python tests/%s2_sup.py tests/%s.xml > tests/%s2_out.xml' + cmd = cmdTempl % (t_, t_, t_, ) + result, _ = self.execute(cmd, cwd='..') + cmd = 'diff %s1_out.xml %s2_out.xml' % (t_, t_, ) + result, err = self.execute(cmd) + self.check_result(result, err, ()) + def check_result(self, result, err, ignore_strings): self.failUnlessEqual(len(result), 0) self.failUnlessEqual(len(err), 0) diff --git a/tutorial/generateds_tutorial.html b/tutorial/generateds_tutorial.html index ce709171a45627d78d4f6465d28e7939ebb4c5a2..4229ff0389cb521dbff0011e11f149f05c3835ae 100644 --- a/tutorial/generateds_tutorial.html +++ b/tutorial/generateds_tutorial.html @@ -3,7 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" /> +<meta name="generator" content="Docutils 0.13: http://docutils.sourceforge.net/" /> <title>generateDS -- Introduction and Tutorial</title> <meta name="author" content="Dave Kuhlman" /> <style type="text/css"> @@ -219,7 +219,7 @@ They are used by updateversion.py. --> <col class="field-name" /> <col class="field-body" /> <tbody valign="top"> -<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.12e</td> +<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.13a</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">May 22, 2014</td> +<tr class="field"><th class="field-name">date:</th><td class="field-body">September 09, 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-05-22 16:15 UTC. +Generated on: 2014-09-09 19:14 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 0dcab2bed59309ae4a0193ae930ed316d586c40a..3a9d416596b41c7ae9904be075260b98be870c83 100644 --- a/tutorial/generateds_tutorial.txt +++ b/tutorial/generateds_tutorial.txt @@ -11,7 +11,7 @@ generateDS -- Introduction and Tutorial .. version -:revision: 2.12g +:revision: 2.13a .. version diff --git a/tutorial/generateds_tutorial.zip b/tutorial/generateds_tutorial.zip index 0a67f630b3d3efdefc4e51b17fc154474101f81b..157eecae050a3a0201ce0ca0984aaeb93fe97c59 100644 Binary files a/tutorial/generateds_tutorial.zip and b/tutorial/generateds_tutorial.zip differ diff --git a/updateversion.py b/updateversion.py new file mode 100755 index 0000000000000000000000000000000000000000..b122794cdea2956bd88d9ee523b41c289fd87dc9 --- /dev/null +++ b/updateversion.py @@ -0,0 +1,143 @@ +#!/usr/bin/env python + +""" +Usage: + python updateversion.py [options] +Options: + -h, --help Display this help message. + -v x.xx, --version=x.xx + New version. Required. + --verbose Print extra info. +Example: + python updateversion.py -v 1.17c +""" + + +# +# Imports + +import sys +import getopt +import re +import shutil + + +# +# Globals and constants + +VERBOSE = False + +REPL_SPEC = [ + { + 'filename': 'setup.py', + 'pattern': r'(##VERSION##\s*version=")([\w\.\-]*)(",\s*##VERSION##)', + }, + { + 'filename': 'generateDS.py', + 'pattern': r"(##VERSION##\s*VERSION = ')([\w\.\-]*)('\s*##VERSION##)", + }, + { + 'filename': 'process_includes.py', + 'pattern': r"(##VERSION##\s*VERSION = ')([\w\.\-]*)('\s*##VERSION##)", + }, + { + 'filename': 'generateDS.txt', + 'pattern': r"(.. version\s*:revision: )([\w\.\-]*)(\s*.. version)", + }, + { + 'filename': 'generateDS.txt', + 'pattern': r"(\.\. version\s*- My Web site -- \s*" + r"http://www\.rexx\.com/~dkuhlman/generateDS-)" + r"([\w\.\-]*)(\.tar\.gz\s*\.\. version)", + }, + { + 'filename': 'librarytemplate_howto.txt', + 'pattern': r"(.. version\s*:revision: )([\w\.\-]*)(\s*.. version)", + }, + { + 'filename': 'tutorial/generateds_tutorial.txt', + 'pattern': r"(.. version\s*:revision: )([\w\.\-]*)(\s*.. version)", + }, + { + 'filename': 'gui/generateds_gui.py', + 'pattern': r"(##VERSION##\s*VERSION = ')([\w\.\-]*)('\s*##VERSION##)", + }, +] + + +# +# Functions for external use + +def updateversion(version): + replfunc = replfuncmaker(version) + for spec in REPL_SPEC: + targetfilename = spec['filename'] + if VERBOSE: + print 'updating: "%s"' % (targetfilename, ) + targetfile = open(targetfilename, 'r') + content = targetfile.read() + targetfile.close() + content1 = re.sub( + spec['pattern'], + replfunc, + content) + update1file(targetfilename, content1) + + + +# +# Classes + + + +# +# Functions for internal use and testing + +def update1file(targetfilename, content): + backupfilename = targetfilename + '.bak' + shutil.copy2(targetfilename, backupfilename) + targetfile = open(targetfilename, 'w') + targetfile.write(content) + targetfile.close() + #shutil.copymode(backupfilename, targetfilename) + +def replfuncmaker(version): + def replfunc(matchobj): + if VERBOSE: + print '(replfunc) matchobj.groups()', matchobj.groups() + return matchobj.group(1) + version + matchobj.group(3) + return replfunc + + +USAGE_TEXT = __doc__ + +def usage(): + print USAGE_TEXT + sys.exit(1) + + +def main(): + global VERBOSE + args = sys.argv[1:] + try: + opts, args = getopt.getopt(args, 'hv:', [ + 'help', 'version=', 'verbose', ]) + except: + usage() + version = None + for opt, val in opts: + if opt in ('-h', '--help'): + usage() + elif opt in ('-v', '--version'): + version = val + elif opt in ('--verbose', ): + VERBOSE = True + if len(args) != 0 or version is None: + usage() + updateversion(version) + + +if __name__ == '__main__': + #import pdb; pdb.set_trace() + main() +