#!/usr/bin/env python # -*- coding: utf-8 -*- # # Generated by generateDS.py. # Python 3.7.5rc1 (default, Oct 8 2019, 16:47:45) [GCC 9.2.1 20190909] # # Command line options: # ('-f', '') # ('--no-dates', '') # ('--no-versions', '') # ('--output-directory', 'src/ee/xml') # ('-o', 'src/ee/xml/types.py') # ('-m', '') # # Command line arguments: # xsd/ee.xsd # # Command line: # env/bin/generateDS.py -f --no-dates --no-versions --output-directory="src/ee/xml" -o "src/ee/xml/types.py" -m xsd/ee.xsd # # Current working directory (os.getcwd()): # ee-python # import os import sys import re as re_ import base64 import datetime as datetime_ import warnings as warnings_ import decimal as decimal_ try: from lxml import etree as etree_ except ImportError: from xml.etree import ElementTree as etree_ Validate_simpletypes_ = True if sys.version_info.major == 2: BaseStrType_ = basestring else: BaseStrType_ = str def parsexml_(infile, parser=None, **kwargs): if parser is None: # Use the lxml ElementTree compatible parser so that, e.g., # we ignore comments. try: parser = etree_.ETCompatXMLParser() except AttributeError: # fallback to xml.etree parser = etree_.XMLParser() try: if isinstance(infile, os.PathLike): infile = os.path.join(infile) except AttributeError: pass doc = etree_.parse(infile, parser=parser, **kwargs) return doc def parsexmlstring_(instring, parser=None, **kwargs): if parser is None: # Use the lxml ElementTree compatible parser so that, e.g., # we ignore comments. try: parser = etree_.ETCompatXMLParser() except AttributeError: # fallback to xml.etree parser = etree_.XMLParser() element = etree_.fromstring(instring, parser=parser, **kwargs) return element # # Namespace prefix definition table (and other attributes, too) # # The module generatedsnamespaces, if it is importable, must contain # a dictionary named GeneratedsNamespaceDefs. This Python dictionary # should map element type names (strings) to XML schema namespace prefix # definitions. The export method for any class for which there is # a namespace prefix definition, will export that definition in the # XML representation of that element. See the export method of # any generated element type class for an example of the use of this # table. # A sample table is: # # # File: generatedsnamespaces.py # # GenerateDSNamespaceDefs = { # "ElementtypeA": "http://www.xxx.com/namespaceA", # "ElementtypeB": "http://www.xxx.com/namespaceB", # } # # Additionally, the generatedsnamespaces module can contain a python # dictionary named GenerateDSNamespaceTypePrefixes that associates element # types with the namespace prefixes that are to be added to the # "xsi:type" attribute value. See the exportAttributes method of # any generated element type and the generation of "xsi:type" for an # example of the use of this table. # An example table: # # # File: generatedsnamespaces.py # # GenerateDSNamespaceTypePrefixes = { # "ElementtypeC": "aaa:", # "ElementtypeD": "bbb:", # } # try: from generatedsnamespaces import GenerateDSNamespaceDefs as GenerateDSNamespaceDefs_ except ImportError: GenerateDSNamespaceDefs_ = {} try: from generatedsnamespaces import GenerateDSNamespaceTypePrefixes as GenerateDSNamespaceTypePrefixes_ except ImportError: GenerateDSNamespaceTypePrefixes_ = {} # # The super-class for enum types # try: from enum import Enum except ImportError: Enum = object # # The root super-class for element type classes # # 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 as 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_parse_string(self, input_data, node=None, input_name=''): return input_data def gds_validate_string(self, input_data, node=None, 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=None, input_name=''): return input_data def gds_format_integer(self, input_data, input_name=''): return '%d' % input_data def gds_parse_integer(self, input_data, node=None, input_name=''): try: ival = int(input_data) except (TypeError, ValueError) as exp: raise_parse_error(node, 'requires integer: %s' % exp) return ival def gds_validate_integer(self, input_data, node=None, input_name=''): return input_data def gds_format_integer_list(self, input_data, input_name=''): return '%s' % ' '.join(input_data) def gds_validate_integer_list( self, input_data, node=None, input_name=''): values = input_data.split() for value in values: try: int(value) except (TypeError, ValueError): raise_parse_error(node, 'Requires sequence of integers') return values def gds_format_float(self, input_data, input_name=''): return ('%.15f' % input_data).rstrip('0') def gds_parse_float(self, input_data, node=None, input_name=''): try: fval_ = float(input_data) except (TypeError, ValueError) as exp: raise_parse_error(node, 'requires float or double: %s' % exp) return fval_ def gds_validate_float(self, input_data, node=None, input_name=''): try: value = float(input_data) except (TypeError, ValueError): raise_parse_error(node, 'Requires sequence of floats') return value def gds_format_float_list(self, input_data, input_name=''): return '%s' % ' '.join(input_data) def gds_validate_float_list( self, input_data, node=None, 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 values def gds_format_decimal(self, input_data, input_name=''): return ('%0.10f' % input_data).rstrip('0') def gds_parse_decimal(self, input_data, node=None, input_name=''): try: decimal_.Decimal(input_data) except (TypeError, ValueError): raise_parse_error(node, 'Requires decimal value') return input_data def gds_validate_decimal(self, input_data, node=None, input_name=''): try: value = decimal_.Decimal(input_data) except (TypeError, ValueError): raise_parse_error(node, 'Requires decimal value') return value def gds_format_decimal_list(self, input_data, input_name=''): return '%s' % ' '.join(input_data) def gds_validate_decimal_list( self, input_data, node=None, input_name=''): values = input_data.split() for value in values: try: decimal_.Decimal(value) except (TypeError, ValueError): raise_parse_error(node, 'Requires sequence of decimal values') return values def gds_format_double(self, input_data, input_name=''): return '%e' % input_data def gds_parse_double(self, input_data, node=None, input_name=''): try: fval_ = float(input_data) except (TypeError, ValueError) as exp: raise_parse_error(node, 'requires float or double: %s' % exp) return fval_ def gds_validate_double(self, input_data, node=None, input_name=''): return input_data def gds_format_double_list(self, input_data, input_name=''): return '%s' % ' '.join(input_data) def gds_validate_double_list( self, input_data, node=None, 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 values def gds_format_boolean(self, input_data, input_name=''): return ('%s' % input_data).lower() def gds_parse_boolean(self, input_data, node=None, input_name=''): if input_data in ('true', '1'): bval = True elif input_data in ('false', '0'): bval = False else: raise_parse_error(node, 'requires boolean') return bval def gds_validate_boolean(self, input_data, node=None, input_name=''): return input_data def gds_format_boolean_list(self, input_data, input_name=''): return '%s' % ' '.join(input_data) def gds_validate_boolean_list( self, input_data, node=None, 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 values def gds_validate_datetime(self, input_data, node=None, 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], "{}".format(micro_seconds).rjust(6, "0"), ) 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=None, 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=None, 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 def gds_validate_simple_patterns(self, patterns, target): # pat is a list of lists of strings/patterns. # The target value must match at least one of the patterns # in order for the test to succeed. found1 = True for patterns1 in patterns: found2 = False for patterns2 in patterns1: mo = re_.search(patterns2, target) if mo is not None and len(mo.group(0)) == len(target): found2 = True break if not found2: found1 = False break return found1 @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.items())) @staticmethod def gds_encode(instring): if sys.version_info.major == 2: if ExternalEncoding: encoding = ExternalEncoding else: encoding = 'utf-8' return instring.encode(encoding) else: return instring @staticmethod def convert_unicode(instring): if isinstance(instring, str): result = quote_xml(instring) elif sys.version_info.major == 2 and isinstance(instring, unicode): result = quote_xml(instring).encode('utf8') else: result = GeneratedsSuper.gds_encode(str(instring)) return result def __eq__(self, other): if type(self) != type(other): return False return self.__dict__ == other.__dict__ def __ne__(self, other): return not self.__eq__(other) def getSubclassFromModule_(module, class_): '''Get the subclass of a class from a specific module.''' name = class_.__name__ + 'Sub' if hasattr(module, name): return getattr(module, name) else: return None # # 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(' -- Entering ipshell.\nHit Ctrl-D to exit') # # Globals # ExternalEncoding = '' Tag_pattern_ = re_.compile(r'({.*})?(.*)') String_cleanup_pat_ = re_.compile(r"[\n\r\s]+") Namespace_extract_pat_ = re_.compile(r'{(.*)}(.*)') CDATA_pattern_ = re_.compile(r"", re_.DOTALL) # Change this to redirect the generated superclass module to use a # specific subclass module. CurrentSubclassModule_ = None # # Support/utility functions. # def showIndent(outfile, level, pretty_print=True): if pretty_print: for idx in range(level): outfile.write(' ') def quote_xml(inStr): "Escape markup chars, but do not modify CDATA sections." if not inStr: return '' s1 = (isinstance(inStr, BaseStrType_) and inStr or '%s' % inStr) s2 = '' pos = 0 matchobjects = CDATA_pattern_.finditer(s1) for mo in matchobjects: s3 = s1[pos:mo.start()] s2 += quote_xml_aux(s3) s2 += s1[mo.start():mo.end()] pos = mo.end() s3 = s1[pos:] s2 += quote_xml_aux(s3) return s2 def quote_xml_aux(inStr): s1 = inStr.replace('&', '&') s1 = s1.replace('<', '<') s1 = s1.replace('>', '>') return s1 def quote_attrib(inStr): s1 = (isinstance(inStr, BaseStrType_) 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 node is not None: msg = '%s (element %s/line %d)' % (msg, node.tag, node.sourceline, ) 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_=name, pretty_print=pretty_print) def exportSimple(self, outfile, level, name): if self.content_type == MixedContainer.TypeString: outfile.write('<%s>%s' % ( self.name, self.value, self.name)) elif self.content_type == MixedContainer.TypeInteger or \ self.content_type == MixedContainer.TypeBoolean: outfile.write('<%s>%d' % ( self.name, self.value, self.name)) elif self.content_type == MixedContainer.TypeFloat or \ self.content_type == MixedContainer.TypeDecimal: outfile.write('<%s>%f' % ( self.name, self.value, self.name)) elif self.content_type == MixedContainer.TypeDouble: outfile.write('<%s>%g' % ( self.name, self.value, self.name)) elif self.content_type == MixedContainer.TypeBase64: outfile.write('<%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, optional=0, child_attrs=None, choice=None): self.name = name self.data_type = data_type self.container = container self.child_attrs = child_attrs self.choice = choice self.optional = optional 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 set_child_attrs(self, child_attrs): self.child_attrs = child_attrs def get_child_attrs(self): return self.child_attrs def set_choice(self, choice): self.choice = choice def get_choice(self): return self.choice def set_optional(self, optional): self.optional = optional def get_optional(self): return self.optional def _cast(typ, value): if typ is None or value is None: return value return typ(value) # # Data representation classes. # class PartDb(GeneratedsSuper): subclass = None superclass = None def __init__(self, parts=None, assembly=None, categories=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') self.parts = parts self.assembly = assembly self.categories = categories def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, PartDb) if subclass is not None: return subclass(*args_, **kwargs_) if PartDb.subclass: return PartDb.subclass(*args_, **kwargs_) else: return PartDb(*args_, **kwargs_) factory = staticmethod(factory) def get_parts(self): return self.parts def set_parts(self, parts): self.parts = parts partsProp = property(get_parts, set_parts) def get_assembly(self): return self.assembly def set_assembly(self, assembly): self.assembly = assembly assemblyProp = property(get_assembly, set_assembly) def get_categories(self): return self.categories def set_categories(self, categories): self.categories = categories categoriesProp = property(get_categories, set_categories) def hasContent_(self): if ( self.parts is not None or self.assembly is not None or self.categories is not None ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='PartDb', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('PartDb') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='PartDb') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='PartDb', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='PartDb'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='PartDb', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' if self.parts is not None: self.parts.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parts', pretty_print=pretty_print) if self.assembly is not None: self.assembly.export(outfile, level, namespaceprefix_, namespacedef_='', name_='assembly', pretty_print=pretty_print) if self.categories is not None: self.categories.export(outfile, level, namespaceprefix_, namespacedef_='', name_='categories', pretty_print=pretty_print) 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_ == 'parts': obj_ = PartList.factory(parent_object_=self) obj_.build(child_) self.parts = obj_ obj_.original_tagname_ = 'parts' elif nodeName_ == 'assembly': obj_ = Assembly.factory(parent_object_=self) obj_.build(child_) self.assembly = obj_ obj_.original_tagname_ = 'assembly' elif nodeName_ == 'categories': obj_ = CategoryList.factory(parent_object_=self) obj_.build(child_) self.categories = obj_ obj_.original_tagname_ = 'categories' # end class PartDb class Part(GeneratedsSuper): subclass = None superclass = None def __init__(self, uri=None, supplier=None, description=None, category=None, links=None, references=None, facts=None, price_breaks=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') self.uri = _cast(None, uri) self.supplier = supplier self.description = description self.category = category self.links = links self.references = references self.facts = facts self.price_breaks = price_breaks def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, Part) if subclass is not None: return subclass(*args_, **kwargs_) if Part.subclass: return Part.subclass(*args_, **kwargs_) else: return Part(*args_, **kwargs_) factory = staticmethod(factory) def get_supplier(self): return self.supplier def set_supplier(self, supplier): self.supplier = supplier supplierProp = property(get_supplier, set_supplier) def get_description(self): return self.description def set_description(self, description): self.description = description descriptionProp = property(get_description, set_description) def get_category(self): return self.category def set_category(self, category): self.category = category categoryProp = property(get_category, set_category) def get_links(self): return self.links def set_links(self, links): self.links = links linksProp = property(get_links, set_links) def get_references(self): return self.references def set_references(self, references): self.references = references referencesProp = property(get_references, set_references) def get_facts(self): return self.facts def set_facts(self, facts): self.facts = facts factsProp = property(get_facts, set_facts) def get_price_breaks(self): return self.price_breaks def set_price_breaks(self, price_breaks): self.price_breaks = price_breaks price_breaksProp = property(get_price_breaks, set_price_breaks) def get_uri(self): return self.uri def set_uri(self, uri): self.uri = uri uriProp = property(get_uri, set_uri) def hasContent_(self): if ( self.supplier is not None or self.description is not None or self.category is not None or self.links is not None or self.references is not None or self.facts is not None or self.price_breaks is not None ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='Part', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('Part') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='Part') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='Part', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='Part'): if self.uri is not None and 'uri' not in already_processed: already_processed.add('uri') outfile.write(' uri=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.uri), input_name='uri')), )) def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='Part', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' if self.supplier is not None: showIndent(outfile, level, pretty_print) outfile.write('<%ssupplier>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.supplier), input_name='supplier')), namespaceprefix_ , eol_)) if self.description is not None: showIndent(outfile, level, pretty_print) outfile.write('<%sdescription>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.description), input_name='description')), namespaceprefix_ , eol_)) if self.category is not None: showIndent(outfile, level, pretty_print) outfile.write('<%scategory>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.category), input_name='category')), namespaceprefix_ , eol_)) if self.links is not None: self.links.export(outfile, level, namespaceprefix_, namespacedef_='', name_='links', pretty_print=pretty_print) if self.references is not None: self.references.export(outfile, level, namespaceprefix_, namespacedef_='', name_='references', pretty_print=pretty_print) if self.facts is not None: self.facts.export(outfile, level, namespaceprefix_, namespacedef_='', name_='facts', pretty_print=pretty_print) if self.price_breaks is not None: self.price_breaks.export(outfile, level, namespaceprefix_, namespacedef_='', name_='price-breaks', pretty_print=pretty_print) 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_('uri', node) if value is not None and 'uri' not in already_processed: already_processed.add('uri') self.uri = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'supplier': value_ = child_.text value_ = self.gds_parse_string(value_, node, 'supplier') value_ = self.gds_validate_string(value_, node, 'supplier') self.supplier = value_ elif nodeName_ == 'description': value_ = child_.text value_ = self.gds_parse_string(value_, node, 'description') value_ = self.gds_validate_string(value_, node, 'description') self.description = value_ elif nodeName_ == 'category': value_ = child_.text value_ = self.gds_parse_string(value_, node, 'category') value_ = self.gds_validate_string(value_, node, 'category') self.category = value_ elif nodeName_ == 'links': obj_ = LinkList.factory(parent_object_=self) obj_.build(child_) self.links = obj_ obj_.original_tagname_ = 'links' elif nodeName_ == 'references': obj_ = ReferenceList.factory(parent_object_=self) obj_.build(child_) self.references = obj_ obj_.original_tagname_ = 'references' elif nodeName_ == 'facts': obj_ = FactList.factory(parent_object_=self) obj_.build(child_) self.facts = obj_ obj_.original_tagname_ = 'facts' elif nodeName_ == 'price-breaks': obj_ = PriceBreakList.factory(parent_object_=self) obj_.build(child_) self.price_breaks = obj_ obj_.original_tagname_ = 'price-breaks' # end class Part class PartList(GeneratedsSuper): subclass = None superclass = None def __init__(self, part=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') if part is None: self.part = [] else: self.part = part def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, PartList) if subclass is not None: return subclass(*args_, **kwargs_) if PartList.subclass: return PartList.subclass(*args_, **kwargs_) else: return PartList(*args_, **kwargs_) factory = staticmethod(factory) def get_part(self): return self.part def set_part(self, part): self.part = part def add_part(self, value): self.part.append(value) def insert_part_at(self, index, value): self.part.insert(index, value) def replace_part_at(self, index, value): self.part[index] = value partProp = property(get_part, set_part) def hasContent_(self): if ( self.part ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='PartList', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('PartList') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='PartList') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='PartList', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='PartList'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='PartList', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' for part_ in self.part: part_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='part', pretty_print=pretty_print) 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_ == 'part': obj_ = Part.factory(parent_object_=self) obj_.build(child_) self.part.append(obj_) obj_.original_tagname_ = 'part' # end class PartList class Category(GeneratedsSuper): subclass = None superclass = None def __init__(self, uri=None, name=None, links=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') self.uri = _cast(None, uri) self.name = name self.links = links def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, Category) if subclass is not None: return subclass(*args_, **kwargs_) if Category.subclass: return Category.subclass(*args_, **kwargs_) else: return Category(*args_, **kwargs_) factory = staticmethod(factory) def get_name(self): return self.name def set_name(self, name): self.name = name nameProp = property(get_name, set_name) def get_links(self): return self.links def set_links(self, links): self.links = links linksProp = property(get_links, set_links) def get_uri(self): return self.uri def set_uri(self, uri): self.uri = uri uriProp = property(get_uri, set_uri) def hasContent_(self): if ( self.name is not None or self.links is not None ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='Category', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('Category') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='Category') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='Category', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='Category'): if self.uri is not None and 'uri' not in already_processed: already_processed.add('uri') outfile.write(' uri=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.uri), input_name='uri')), )) def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='Category', 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%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.name), input_name='name')), namespaceprefix_ , eol_)) if self.links is not None: self.links.export(outfile, level, namespaceprefix_, namespacedef_='', name_='links', pretty_print=pretty_print) 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_('uri', node) if value is not None and 'uri' not in already_processed: already_processed.add('uri') self.uri = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'name': value_ = child_.text value_ = self.gds_parse_string(value_, node, 'name') value_ = self.gds_validate_string(value_, node, 'name') self.name = value_ elif nodeName_ == 'links': obj_ = LinkList.factory(parent_object_=self) obj_.build(child_) self.links = obj_ obj_.original_tagname_ = 'links' # end class Category class CategoryList(GeneratedsSuper): subclass = None superclass = None def __init__(self, category=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') if category is None: self.category = [] else: self.category = category def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, CategoryList) if subclass is not None: return subclass(*args_, **kwargs_) if CategoryList.subclass: return CategoryList.subclass(*args_, **kwargs_) else: return CategoryList(*args_, **kwargs_) factory = staticmethod(factory) def get_category(self): return self.category def set_category(self, category): self.category = category def add_category(self, value): self.category.append(value) def insert_category_at(self, index, value): self.category.insert(index, value) def replace_category_at(self, index, value): self.category[index] = value categoryProp = property(get_category, set_category) def hasContent_(self): if ( self.category ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='CategoryList', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('CategoryList') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='CategoryList') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='CategoryList', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='CategoryList'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='CategoryList', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' for category_ in self.category: category_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='category', pretty_print=pretty_print) 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_ == 'category': obj_ = Category.factory(parent_object_=self) obj_.build(child_) self.category.append(obj_) obj_.original_tagname_ = 'category' # end class CategoryList class PartReference(GeneratedsSuper): subclass = None superclass = None def __init__(self, part_uri=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') self.part_uri = part_uri def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, PartReference) if subclass is not None: return subclass(*args_, **kwargs_) if PartReference.subclass: return PartReference.subclass(*args_, **kwargs_) else: return PartReference(*args_, **kwargs_) factory = staticmethod(factory) def get_part_uri(self): return self.part_uri def set_part_uri(self, part_uri): self.part_uri = part_uri part_uriProp = property(get_part_uri, set_part_uri) def hasContent_(self): if ( self.part_uri is not None ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='PartReference', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('PartReference') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='PartReference') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='PartReference', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='PartReference'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='PartReference', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' if self.part_uri is not None: showIndent(outfile, level, pretty_print) outfile.write('<%spart-uri>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.part_uri), input_name='part-uri')), namespaceprefix_ , eol_)) 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_ == 'part-uri': value_ = child_.text value_ = self.gds_parse_string(value_, node, 'part_uri') value_ = self.gds_validate_string(value_, node, 'part_uri') self.part_uri = value_ # end class PartReference class PartNumber(GeneratedsSuper): subclass = None superclass = None def __init__(self, value=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') self.value = value def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, PartNumber) if subclass is not None: return subclass(*args_, **kwargs_) if PartNumber.subclass: return PartNumber.subclass(*args_, **kwargs_) else: return PartNumber(*args_, **kwargs_) factory = staticmethod(factory) def get_value(self): return self.value def set_value(self, value): self.value = value valueProp = property(get_value, set_value) def hasContent_(self): if ( self.value is not None ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='PartNumber', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('PartNumber') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='PartNumber') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='PartNumber', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='PartNumber'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='PartNumber', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' if self.value is not None: showIndent(outfile, level, pretty_print) outfile.write('<%svalue>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.value), input_name='value')), namespaceprefix_ , eol_)) 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_ == 'value': value_ = child_.text value_ = self.gds_parse_string(value_, node, 'value') value_ = self.gds_validate_string(value_, node, 'value') self.value = value_ # end class PartNumber class SupplierPartNumber(GeneratedsSuper): subclass = None superclass = None def __init__(self, value=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') self.value = value def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, SupplierPartNumber) if subclass is not None: return subclass(*args_, **kwargs_) if SupplierPartNumber.subclass: return SupplierPartNumber.subclass(*args_, **kwargs_) else: return SupplierPartNumber(*args_, **kwargs_) factory = staticmethod(factory) def get_value(self): return self.value def set_value(self, value): self.value = value valueProp = property(get_value, set_value) def hasContent_(self): if ( self.value is not None ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='SupplierPartNumber', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('SupplierPartNumber') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='SupplierPartNumber') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='SupplierPartNumber', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='SupplierPartNumber'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='SupplierPartNumber', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' if self.value is not None: showIndent(outfile, level, pretty_print) outfile.write('<%svalue>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.value), input_name='value')), namespaceprefix_ , eol_)) 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_ == 'value': value_ = child_.text value_ = self.gds_parse_string(value_, node, 'value') value_ = self.gds_validate_string(value_, node, 'value') self.value = value_ # end class SupplierPartNumber class SchematicReference(GeneratedsSuper): subclass = None superclass = None def __init__(self, reference=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') self.reference = reference def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, SchematicReference) if subclass is not None: return subclass(*args_, **kwargs_) if SchematicReference.subclass: return SchematicReference.subclass(*args_, **kwargs_) else: return SchematicReference(*args_, **kwargs_) factory = staticmethod(factory) def get_reference(self): return self.reference def set_reference(self, reference): self.reference = reference referenceProp = property(get_reference, set_reference) def hasContent_(self): if ( self.reference is not None ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='SchematicReference', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('SchematicReference') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='SchematicReference') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='SchematicReference', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='SchematicReference'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='SchematicReference', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' if self.reference is not None: showIndent(outfile, level, pretty_print) outfile.write('<%sreference>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.reference), input_name='reference')), namespaceprefix_ , eol_)) 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_ == 'reference': value_ = child_.text value_ = self.gds_parse_string(value_, node, 'reference') value_ = self.gds_validate_string(value_, node, 'reference') self.reference = value_ # end class SchematicReference class ReferenceList(GeneratedsSuper): subclass = None superclass = None def __init__(self, part_reference=None, schematic_reference=None, part_number=None, supplier_part_number=None, description=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') if part_reference is None: self.part_reference = [] else: self.part_reference = part_reference if schematic_reference is None: self.schematic_reference = [] else: self.schematic_reference = schematic_reference if part_number is None: self.part_number = [] else: self.part_number = part_number if supplier_part_number is None: self.supplier_part_number = [] else: self.supplier_part_number = supplier_part_number if description is None: self.description = [] else: self.description = description def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, ReferenceList) if subclass is not None: return subclass(*args_, **kwargs_) if ReferenceList.subclass: return ReferenceList.subclass(*args_, **kwargs_) else: return ReferenceList(*args_, **kwargs_) factory = staticmethod(factory) def get_part_reference(self): return self.part_reference def set_part_reference(self, part_reference): self.part_reference = part_reference def add_part_reference(self, value): self.part_reference.append(value) def insert_part_reference_at(self, index, value): self.part_reference.insert(index, value) def replace_part_reference_at(self, index, value): self.part_reference[index] = value part_referenceProp = property(get_part_reference, set_part_reference) def get_schematic_reference(self): return self.schematic_reference def set_schematic_reference(self, schematic_reference): self.schematic_reference = schematic_reference def add_schematic_reference(self, value): self.schematic_reference.append(value) def insert_schematic_reference_at(self, index, value): self.schematic_reference.insert(index, value) def replace_schematic_reference_at(self, index, value): self.schematic_reference[index] = value schematic_referenceProp = property(get_schematic_reference, set_schematic_reference) def get_part_number(self): return self.part_number def set_part_number(self, part_number): self.part_number = part_number def add_part_number(self, value): self.part_number.append(value) def insert_part_number_at(self, index, value): self.part_number.insert(index, value) def replace_part_number_at(self, index, value): self.part_number[index] = value part_numberProp = property(get_part_number, set_part_number) def get_supplier_part_number(self): return self.supplier_part_number def set_supplier_part_number(self, supplier_part_number): self.supplier_part_number = supplier_part_number def add_supplier_part_number(self, value): self.supplier_part_number.append(value) def insert_supplier_part_number_at(self, index, value): self.supplier_part_number.insert(index, value) def replace_supplier_part_number_at(self, index, value): self.supplier_part_number[index] = value supplier_part_numberProp = property(get_supplier_part_number, set_supplier_part_number) def get_description(self): return self.description def set_description(self, description): self.description = description def add_description(self, value): self.description.append(value) def insert_description_at(self, index, value): self.description.insert(index, value) def replace_description_at(self, index, value): self.description[index] = value descriptionProp = property(get_description, set_description) def hasContent_(self): if ( self.part_reference or self.schematic_reference or self.part_number or self.supplier_part_number or self.description ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='ReferenceList', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('ReferenceList') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='ReferenceList') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='ReferenceList', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='ReferenceList'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='ReferenceList', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' for part_reference_ in self.part_reference: part_reference_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='part-reference', pretty_print=pretty_print) for schematic_reference_ in self.schematic_reference: schematic_reference_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='schematic-reference', pretty_print=pretty_print) for part_number_ in self.part_number: part_number_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='part-number', pretty_print=pretty_print) for supplier_part_number_ in self.supplier_part_number: supplier_part_number_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='supplier-part-number', pretty_print=pretty_print) for description_ in self.description: showIndent(outfile, level, pretty_print) outfile.write('<%sdescription>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(description_), input_name='description')), namespaceprefix_ , eol_)) 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_ == 'part-reference': obj_ = PartReference.factory(parent_object_=self) obj_.build(child_) self.part_reference.append(obj_) obj_.original_tagname_ = 'part-reference' elif nodeName_ == 'schematic-reference': obj_ = SchematicReference.factory(parent_object_=self) obj_.build(child_) self.schematic_reference.append(obj_) obj_.original_tagname_ = 'schematic-reference' elif nodeName_ == 'part-number': obj_ = PartNumber.factory(parent_object_=self) obj_.build(child_) self.part_number.append(obj_) obj_.original_tagname_ = 'part-number' elif nodeName_ == 'supplier-part-number': obj_ = SupplierPartNumber.factory(parent_object_=self) obj_.build(child_) self.supplier_part_number.append(obj_) obj_.original_tagname_ = 'supplier-part-number' elif nodeName_ == 'description': value_ = child_.text value_ = self.gds_parse_string(value_, node, 'description') value_ = self.gds_validate_string(value_, node, 'description') self.description.append(value_) # end class ReferenceList class Fact(GeneratedsSuper): subclass = None superclass = None def __init__(self, key=None, label=None, value=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') self.key = key self.label = label self.value = value def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, Fact) if subclass is not None: return subclass(*args_, **kwargs_) if Fact.subclass: return Fact.subclass(*args_, **kwargs_) else: return Fact(*args_, **kwargs_) factory = staticmethod(factory) def get_key(self): return self.key def set_key(self, key): self.key = key keyProp = property(get_key, set_key) def get_label(self): return self.label def set_label(self, label): self.label = label labelProp = property(get_label, set_label) def get_value(self): return self.value def set_value(self, value): self.value = value valueProp = property(get_value, set_value) def hasContent_(self): if ( self.key is not None or self.label is not None or self.value is not None ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='Fact', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('Fact') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='Fact') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='Fact', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='Fact'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='Fact', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' if self.key is not None: showIndent(outfile, level, pretty_print) outfile.write('<%skey>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.key), input_name='key')), namespaceprefix_ , eol_)) if self.label is not None: showIndent(outfile, level, pretty_print) outfile.write('<%slabel>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.label), input_name='label')), namespaceprefix_ , eol_)) if self.value is not None: showIndent(outfile, level, pretty_print) outfile.write('<%svalue>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.value), input_name='value')), namespaceprefix_ , eol_)) 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_ == 'key': value_ = child_.text value_ = self.gds_parse_string(value_, node, 'key') value_ = self.gds_validate_string(value_, node, 'key') self.key = value_ elif nodeName_ == 'label': value_ = child_.text value_ = self.gds_parse_string(value_, node, 'label') value_ = self.gds_validate_string(value_, node, 'label') self.label = value_ elif nodeName_ == 'value': value_ = child_.text value_ = self.gds_parse_string(value_, node, 'value') value_ = self.gds_validate_string(value_, node, 'value') self.value = value_ # end class Fact class FactList(GeneratedsSuper): subclass = None superclass = None def __init__(self, fact=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') if fact is None: self.fact = [] else: self.fact = fact def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, FactList) if subclass is not None: return subclass(*args_, **kwargs_) if FactList.subclass: return FactList.subclass(*args_, **kwargs_) else: return FactList(*args_, **kwargs_) factory = staticmethod(factory) def get_fact(self): return self.fact def set_fact(self, fact): self.fact = fact def add_fact(self, value): self.fact.append(value) def insert_fact_at(self, index, value): self.fact.insert(index, value) def replace_fact_at(self, index, value): self.fact[index] = value factProp = property(get_fact, set_fact) def hasContent_(self): if ( self.fact ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='FactList', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('FactList') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='FactList') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='FactList', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='FactList'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='FactList', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' for fact_ in self.fact: fact_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='fact', pretty_print=pretty_print) 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_ == 'fact': obj_ = Fact.factory(parent_object_=self) obj_.build(child_) self.fact.append(obj_) obj_.original_tagname_ = 'fact' # end class FactList class Amount(GeneratedsSuper): subclass = None superclass = None def __init__(self, value=None, currency=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') self.value = _cast(None, value) self.currency = _cast(None, currency) def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, Amount) if subclass is not None: return subclass(*args_, **kwargs_) if Amount.subclass: return Amount.subclass(*args_, **kwargs_) else: return Amount(*args_, **kwargs_) factory = staticmethod(factory) def get_value(self): return self.value def set_value(self, value): self.value = value valueProp = property(get_value, set_value) def get_currency(self): return self.currency def set_currency(self, currency): self.currency = currency currencyProp = property(get_currency, set_currency) def hasContent_(self): if ( ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='Amount', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('Amount') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='Amount') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='Amount', pretty_print=pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='Amount'): if 'value' not in already_processed: already_processed.add('value') outfile.write(' value=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.value), input_name='value')), )) if self.currency is not None and 'currency' not in already_processed: already_processed.add('currency') outfile.write(' currency=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.currency), input_name='currency')), )) def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='Amount', fromsubclass_=False, pretty_print=True): 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_('value', node) if value is not None and 'value' not in already_processed: already_processed.add('value') self.value = value value = find_attr_value_('currency', node) if value is not None and 'currency' not in already_processed: already_processed.add('currency') self.currency = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass # end class Amount class PriceBreak(GeneratedsSuper): subclass = None superclass = None def __init__(self, quantity=None, amount=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') self.quantity = quantity self.amount = amount def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, PriceBreak) if subclass is not None: return subclass(*args_, **kwargs_) if PriceBreak.subclass: return PriceBreak.subclass(*args_, **kwargs_) else: return PriceBreak(*args_, **kwargs_) factory = staticmethod(factory) def get_quantity(self): return self.quantity def set_quantity(self, quantity): self.quantity = quantity quantityProp = property(get_quantity, set_quantity) def get_amount(self): return self.amount def set_amount(self, amount): self.amount = amount amountProp = property(get_amount, set_amount) def hasContent_(self): if ( self.quantity is not None or self.amount is not None ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='PriceBreak', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('PriceBreak') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='PriceBreak') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='PriceBreak', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='PriceBreak'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='PriceBreak', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' if self.quantity is not None: showIndent(outfile, level, pretty_print) outfile.write('<%squantity>%s%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.quantity), input_name='quantity')), namespaceprefix_ , eol_)) if self.amount is not None: self.amount.export(outfile, level, namespaceprefix_, namespacedef_='', name_='amount', pretty_print=pretty_print) 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_ == 'quantity': value_ = child_.text value_ = self.gds_parse_string(value_, node, 'quantity') value_ = self.gds_validate_string(value_, node, 'quantity') self.quantity = value_ elif nodeName_ == 'amount': obj_ = Amount.factory(parent_object_=self) obj_.build(child_) self.amount = obj_ obj_.original_tagname_ = 'amount' # end class PriceBreak class PriceBreakList(GeneratedsSuper): subclass = None superclass = None def __init__(self, price_break=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') if price_break is None: self.price_break = [] else: self.price_break = price_break def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, PriceBreakList) if subclass is not None: return subclass(*args_, **kwargs_) if PriceBreakList.subclass: return PriceBreakList.subclass(*args_, **kwargs_) else: return PriceBreakList(*args_, **kwargs_) factory = staticmethod(factory) def get_price_break(self): return self.price_break def set_price_break(self, price_break): self.price_break = price_break def add_price_break(self, value): self.price_break.append(value) def insert_price_break_at(self, index, value): self.price_break.insert(index, value) def replace_price_break_at(self, index, value): self.price_break[index] = value price_breakProp = property(get_price_break, set_price_break) def hasContent_(self): if ( self.price_break ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='PriceBreakList', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('PriceBreakList') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='PriceBreakList') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='PriceBreakList', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='PriceBreakList'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='PriceBreakList', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' for price_break_ in self.price_break: price_break_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='price-break', pretty_print=pretty_print) 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_ == 'price-break': obj_ = PriceBreak.factory(parent_object_=self) obj_.build(child_) self.price_break.append(obj_) obj_.original_tagname_ = 'price-break' # end class PriceBreakList class Link(GeneratedsSuper): subclass = None superclass = None def __init__(self, url=None, relation=None, media_type=None, title=None, cache_url=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') self.url = _cast(None, url) self.relation = _cast(None, relation) self.media_type = _cast(None, media_type) self.title = _cast(None, title) self.cache_url = _cast(None, cache_url) def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, Link) if subclass is not None: return subclass(*args_, **kwargs_) if Link.subclass: return Link.subclass(*args_, **kwargs_) else: return Link(*args_, **kwargs_) factory = staticmethod(factory) def get_url(self): return self.url def set_url(self, url): self.url = url urlProp = property(get_url, set_url) def get_relation(self): return self.relation def set_relation(self, relation): self.relation = relation relationProp = property(get_relation, set_relation) def get_media_type(self): return self.media_type def set_media_type(self, media_type): self.media_type = media_type media_typeProp = property(get_media_type, set_media_type) def get_title(self): return self.title def set_title(self, title): self.title = title titleProp = property(get_title, set_title) def get_cache_url(self): return self.cache_url def set_cache_url(self, cache_url): self.cache_url = cache_url cache_urlProp = property(get_cache_url, set_cache_url) def hasContent_(self): if ( ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='Link', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('Link') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='Link') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='Link', pretty_print=pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='Link'): if self.url is not None and 'url' not in already_processed: already_processed.add('url') outfile.write(' url=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.url), input_name='url')), )) if self.relation is not None and 'relation' not in already_processed: already_processed.add('relation') outfile.write(' relation=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.relation), input_name='relation')), )) if self.media_type is not None and 'media_type' not in already_processed: already_processed.add('media_type') outfile.write(' media-type=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.media_type), input_name='media-type')), )) if self.title is not None and 'title' not in already_processed: already_processed.add('title') outfile.write(' title=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.title), input_name='title')), )) if self.cache_url is not None and 'cache_url' not in already_processed: already_processed.add('cache_url') outfile.write(' cache-url=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.cache_url), input_name='cache-url')), )) def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='Link', fromsubclass_=False, pretty_print=True): 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_('url', node) if value is not None and 'url' not in already_processed: already_processed.add('url') self.url = value value = find_attr_value_('relation', node) if value is not None and 'relation' not in already_processed: already_processed.add('relation') self.relation = value value = find_attr_value_('media-type', node) if value is not None and 'media-type' not in already_processed: already_processed.add('media-type') self.media_type = value value = find_attr_value_('title', node) if value is not None and 'title' not in already_processed: already_processed.add('title') self.title = value value = find_attr_value_('cache-url', node) if value is not None and 'cache-url' not in already_processed: already_processed.add('cache-url') self.cache_url = value def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): pass # end class Link class LinkList(GeneratedsSuper): subclass = None superclass = None def __init__(self, link=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') if link is None: self.link = [] else: self.link = link def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, LinkList) if subclass is not None: return subclass(*args_, **kwargs_) if LinkList.subclass: return LinkList.subclass(*args_, **kwargs_) else: return LinkList(*args_, **kwargs_) factory = staticmethod(factory) def get_link(self): return self.link def set_link(self, link): self.link = link def add_link(self, value): self.link.append(value) def insert_link_at(self, index, value): self.link.insert(index, value) def replace_link_at(self, index, value): self.link[index] = value linkProp = property(get_link, set_link) def hasContent_(self): if ( self.link ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='LinkList', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('LinkList') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='LinkList') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='LinkList', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='LinkList'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='LinkList', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' for link_ in self.link: link_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='link', pretty_print=pretty_print) 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_ == 'link': obj_ = Link.factory(parent_object_=self) obj_.build(child_) self.link.append(obj_) obj_.original_tagname_ = 'link' # end class LinkList class AssemblyPart(GeneratedsSuper): subclass = None superclass = None def __init__(self, references=None, count=None, sub_parts=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') self.references = references self.count = count self.sub_parts = sub_parts def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, AssemblyPart) if subclass is not None: return subclass(*args_, **kwargs_) if AssemblyPart.subclass: return AssemblyPart.subclass(*args_, **kwargs_) else: return AssemblyPart(*args_, **kwargs_) factory = staticmethod(factory) def get_references(self): return self.references def set_references(self, references): self.references = references referencesProp = property(get_references, set_references) def get_count(self): return self.count def set_count(self, count): self.count = count countProp = property(get_count, set_count) def get_sub_parts(self): return self.sub_parts def set_sub_parts(self, sub_parts): self.sub_parts = sub_parts sub_partsProp = property(get_sub_parts, set_sub_parts) def hasContent_(self): if ( self.references is not None or self.count is not None or self.sub_parts is not None ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='AssemblyPart', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('AssemblyPart') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='AssemblyPart') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='AssemblyPart', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='AssemblyPart'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='AssemblyPart', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' if self.references is not None: self.references.export(outfile, level, namespaceprefix_, namespacedef_='', name_='references', pretty_print=pretty_print) if self.count is not None: showIndent(outfile, level, pretty_print) outfile.write('<%scount>%s%s' % (namespaceprefix_ , self.gds_format_double(self.count, input_name='count'), namespaceprefix_ , eol_)) if self.sub_parts is not None: self.sub_parts.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sub-parts', pretty_print=pretty_print) 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_ == 'references': obj_ = ReferenceList.factory(parent_object_=self) obj_.build(child_) self.references = obj_ obj_.original_tagname_ = 'references' elif nodeName_ == 'count' and child_.text: sval_ = child_.text fval_ = self.gds_parse_double(sval_, node, 'count') fval_ = self.gds_validate_double(fval_, node, 'count') self.count = fval_ elif nodeName_ == 'sub-parts': obj_ = AssemblyPartList.factory(parent_object_=self) obj_.build(child_) self.sub_parts = obj_ obj_.original_tagname_ = 'sub-parts' # end class AssemblyPart class AssemblyPartList(GeneratedsSuper): subclass = None superclass = None def __init__(self, assembly_part=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') if assembly_part is None: self.assembly_part = [] else: self.assembly_part = assembly_part def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, AssemblyPartList) if subclass is not None: return subclass(*args_, **kwargs_) if AssemblyPartList.subclass: return AssemblyPartList.subclass(*args_, **kwargs_) else: return AssemblyPartList(*args_, **kwargs_) factory = staticmethod(factory) def get_assembly_part(self): return self.assembly_part def set_assembly_part(self, assembly_part): self.assembly_part = assembly_part def add_assembly_part(self, value): self.assembly_part.append(value) def insert_assembly_part_at(self, index, value): self.assembly_part.insert(index, value) def replace_assembly_part_at(self, index, value): self.assembly_part[index] = value assembly_partProp = property(get_assembly_part, set_assembly_part) def hasContent_(self): if ( self.assembly_part ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='AssemblyPartList', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('AssemblyPartList') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='AssemblyPartList') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='AssemblyPartList', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='AssemblyPartList'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='AssemblyPartList', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' for assembly_part_ in self.assembly_part: assembly_part_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='assembly-part', pretty_print=pretty_print) 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_ == 'assembly-part': obj_ = AssemblyPart.factory(parent_object_=self) obj_.build(child_) self.assembly_part.append(obj_) obj_.original_tagname_ = 'assembly-part' # end class AssemblyPartList class Assembly(GeneratedsSuper): subclass = None superclass = None def __init__(self, assembly_parts=None, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') self.assembly_parts = assembly_parts def factory(*args_, **kwargs_): if CurrentSubclassModule_ is not None: subclass = getSubclassFromModule_( CurrentSubclassModule_, Assembly) if subclass is not None: return subclass(*args_, **kwargs_) if Assembly.subclass: return Assembly.subclass(*args_, **kwargs_) else: return Assembly(*args_, **kwargs_) factory = staticmethod(factory) def get_assembly_parts(self): return self.assembly_parts def set_assembly_parts(self, assembly_parts): self.assembly_parts = assembly_parts assembly_partsProp = property(get_assembly_parts, set_assembly_parts) def hasContent_(self): if ( self.assembly_parts is not None ): return True else: return False def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='Assembly', pretty_print=True): imported_ns_def_ = GenerateDSNamespaceDefs_.get('Assembly') if imported_ns_def_ is not None: namespacedef_ = imported_ns_def_ 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' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) already_processed = set() self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='Assembly') if self.hasContent_(): outfile.write('>%s' % (eol_, )) self.exportChildren(outfile, level + 1, '', namespacedef_, name_='Assembly', pretty_print=pretty_print) showIndent(outfile, level, pretty_print) outfile.write('%s' % (namespaceprefix_, name_, eol_)) else: outfile.write('/>%s' % (eol_, )) def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='Assembly'): pass def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='Assembly', fromsubclass_=False, pretty_print=True): if pretty_print: eol_ = '\n' else: eol_ = '' if self.assembly_parts is not None: self.assembly_parts.export(outfile, level, namespaceprefix_, namespacedef_='', name_='assembly-parts', pretty_print=pretty_print) 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_ == 'assembly-parts': obj_ = AssemblyPartList.factory(parent_object_=self) obj_.build(child_) self.assembly_parts = obj_ obj_.original_tagname_ = 'assembly-parts' # end class Assembly GDSClassesMapping = { 'categories': CategoryList, 'part': Part, 'part-db': PartDb, } USAGE_TEXT = """ Usage: python .py [ -s ] """ 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): parser = None doc = parsexml_(inFileName, parser) rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: rootTag = 'PartDb' rootClass = PartDb rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. doc = None if not silence: sys.stdout.write('\n') rootObj.export( sys.stdout, 0, name_=rootTag, namespacedef_='', pretty_print=True) return rootObj def parseEtree(inFileName, silence=False): parser = None doc = parsexml_(inFileName, parser) rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: rootTag = 'PartDb' rootClass = PartDb 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): '''Parse a string, create the object tree, and export it. Arguments: - inString -- A string. This XML fragment should not start with an XML declaration containing an encoding. - silence -- A boolean. If False, export the object. Returns -- The root object in the tree. ''' parser = None rootNode= parsexmlstring_(inString, parser) rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: rootTag = 'PartDb' rootClass = PartDb rootObj = rootClass.factory() rootObj.build(rootNode) # Enable Python to collect the space used by the DOM. if not silence: sys.stdout.write('\n') rootObj.export( sys.stdout, 0, name_=rootTag, namespacedef_='') return rootObj def parseLiteral(inFileName, silence=False): parser = None doc = parsexml_(inFileName, parser) rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: rootTag = 'PartDb' rootClass = PartDb 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 types import *\n\n') sys.stdout.write('import types 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() RenameMappings_ = { } __all__ = [ "Amount", "Assembly", "AssemblyPart", "AssemblyPartList", "Category", "CategoryList", "Fact", "FactList", "Link", "LinkList", "Part", "PartDb", "PartList", "PartNumber", "PartReference", "PriceBreak", "PriceBreakList", "ReferenceList", "SchematicReference", "SupplierPartNumber" ]