#!/usr/bin/env python # -*- coding: utf-8 -*- # # Generated by generateDS.py. # Python 3.7.3rc1 (default, Mar 13 2019, 11:01:15) [GCC 8.3.0] # # 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 base64 import datetime as datetime_ import re as re_ import sys 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() 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 a 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", # } # try: from generatedsnamespaces import GenerateDSNamespaceDefs as GenerateDSNamespaceDefs_ except ImportError: GenerateDSNamespaceDefs_ = {} # # 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_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_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_validate_float(self, input_data, node=None, input_name=''): return input_data 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_double(self, input_data, input_name=''): return '%e' % input_data 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_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): 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, **kwargs_): self.original_tagname_ = None self.parent_object_ = kwargs_.get('parent_object_') self.parts = parts self.assembly = assembly 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 hasContent_(self): if ( self.parts is not None or self.assembly 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, namespaceprefix_, 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) 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' # end class PartDb class Part(GeneratedsSuper): subclass = None superclass = None def __init__(self, uri=None, supplier=None, description=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.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_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.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, namespaceprefix_, 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.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': supplier_ = child_.text supplier_ = self.gds_validate_string(supplier_, node, 'supplier') self.supplier = supplier_ elif nodeName_ == 'description': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') self.description = description_ 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 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, namespaceprefix_, 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 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, namespaceprefix_, 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': part_uri_ = child_.text part_uri_ = self.gds_validate_string(part_uri_, node, 'part_uri') self.part_uri = part_uri_ # 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, namespaceprefix_, 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_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, namespaceprefix_, 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_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, namespaceprefix_, 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': reference_ = child_.text reference_ = self.gds_validate_string(reference_, node, 'reference') self.reference = reference_ # 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 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 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 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 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 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, namespaceprefix_, 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': description_ = child_.text description_ = self.gds_validate_string(description_, node, 'description') self.description.append(description_) # 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, namespaceprefix_, 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': key_ = child_.text key_ = self.gds_validate_string(key_, node, 'key') self.key = key_ elif nodeName_ == 'label': label_ = child_.text label_ = self.gds_validate_string(label_, node, 'label') self.label = label_ elif nodeName_ == 'value': value_ = child_.text 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 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, namespaceprefix_, 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, namespaceprefix_, 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 self.value is not None and '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, namespaceprefix_, 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': quantity_ = child_.text quantity_ = self.gds_validate_string(quantity_, node, 'quantity') self.quantity = quantity_ 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 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, namespaceprefix_, 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, **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) 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 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, namespaceprefix_, 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')), )) 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 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 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, namespaceprefix_, 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, namespaceprefix_, 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 try: fval_ = float(sval_) except (TypeError, ValueError) as exp: raise_parse_error(child_, 'requires float or double: %s' % exp) fval_ = self.gds_validate_float(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 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, namespaceprefix_, 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, namespaceprefix_, 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 = { '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() __all__ = [ "Amount", "Assembly", "AssemblyPart", "AssemblyPartList", "Fact", "FactList", "Link", "LinkList", "Part", "PartDb", "PartList", "PartNumber", "PartReference", "PriceBreak", "PriceBreakList", "ReferenceList", "SchematicReference", "SupplierPartNumber" ]