From fffd52eec6bf00ad1227796c365f96fafc9c33b5 Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Thu, 24 Dec 2020 07:40:14 +0100 Subject: [PATCH] remove pylint comment --- src/rougail/objspace.py | 94 ++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 52 deletions(-) diff --git a/src/rougail/objspace.py b/src/rougail/objspace.py index e48b4470..0a462bc3 100644 --- a/src/rougail/objspace.py +++ b/src/rougail/objspace.py @@ -4,11 +4,6 @@ as an input and outputs a Tiramisu's file Sample usage:: - eolobj.space_visitor(func) - xml = eolobj.save() - - - >>> from rougail.objspace import RougailObjSpace >>> eolobj = RougailObjSpace('/usr/share/rougail/rougail.dtd') >>> eolobj.create_or_populate_from_xml('rougail', ['/usr/share/rougail/dicos']) @@ -74,11 +69,10 @@ class ObjSpace: class RougailObjSpace: - """DOM XML reflexion free internal representation of a Rougail Dictionary + """Rougail ObjectSpace is an object's reflexion of the XML elements """ - - def __init__(self, dtdfilename): # pylint: disable=R0912 + def __init__(self, dtdfilename): self.index = 0 self.space = ObjSpace() self.paths = Path() @@ -91,13 +85,13 @@ class RougailObjSpace: self.list_conditions = {} self.booleans_attributs = [] - self.make_object_space_class() + self.make_object_space_classes() - def make_object_space_class(self): - """Create Rougail ObjectSpace class types, it enables us to create objects like: + def make_object_space_classes(self): + """Create Rougail ObjectSpace class types from DDT file + It enables us to create objects like: File(), Variable(), Ip(), Family(), Constraints()... and so on. - - Rougail ObjectSpace is an object's reflexion of the XML elements""" + """ for dtd_elt in self.xmlreflector.dtd.iterelements(): attrs = {} @@ -138,12 +132,18 @@ class RougailObjSpace: setattr(self, elt, type(name, (RootRougailObject,), dict())) self.Leadership = self.leadership + def display_xmlfiles(self, + xmlfiles: list, + ) -> str: + if len(xmlfiles) == 1: + return '"' + xmlfiles[0] + '"' + return '"' + '", "'.join(xmlfiles[:-1]) + '"' + ' and ' + '"' + xmlfiles[-1] + '"' + def create_or_populate_from_xml(self, namespace, xmlfolders, ): - """Parses a bunch of XML files - populates the RougailObjSpace + """Parses a bunch of XML files and populates the RougailObjSpace """ for xmlfile, document in self.xmlreflector.load_xml_from_folders(xmlfolders): self.redefine_variables = [] @@ -159,8 +159,7 @@ class RougailObjSpace: space, namespace, ): - """Parses a Rougail XML file - populates the RougailObjSpace + """Parses a Rougail XML file and populates the RougailObjSpace """ # var to check unique family name in a XML file family_names = [] @@ -177,6 +176,7 @@ class RougailObjSpace: # variables has no name, so force namespace name child.attrib['name'] = namespace if child.tag == 'value' and child.text is None: + # remove empty value continue # variable objects creation try: @@ -223,7 +223,7 @@ class RougailObjSpace: namespace, ): """ - instanciates or creates Rougail Object Subspace objects + retrieves or creates Rougail Object Subspace objects """ obj = getattr(self, child.tag) if Redefinable in obj.__mro__: @@ -285,45 +285,36 @@ class RougailObjSpace: return getattr(self, child.tag)(xmlfile) raise DictConsistencyError(_(f'Redefined object in "{xmlfile}": "{name}" does not exist yet')) - def display_xmlfiles(self, - xmlfiles: list, - ) -> str: - if len(xmlfiles) == 1: - return '"' + xmlfiles[0] + '"' - return '"' + '", "'.join(xmlfiles[:-1]) + '"' + ' and ' + '"' + xmlfiles[-1] + '"' - def get_existed_obj(self, name: str, space: str, child, namespace: str, ): - if isinstance(space, self.family): # pylint: disable=E1101 + if isinstance(space, self.family): if namespace != Config['variable_namespace']: name = space.path + '.' + name - if self.paths.path_is_defined(name): - old_family_name = self.paths.get_variable_family_name(name) - if namespace != Config['variable_namespace']: - old_family_name = namespace + '.' + old_family_name - if space.path != old_family_name: - xmlfiles = self.display_xmlfiles(space.xmlfiles) - raise DictConsistencyError(_(f'Variable was previously create in family "{old_family_name}", now it is in "{space.path}" in {xmlfiles}')) - return self.paths.get_variable_obj(name) - return + if not self.paths.path_is_defined(name): + return + old_family_name = self.paths.get_variable_family_name(name) + if namespace != Config['variable_namespace']: + old_family_name = namespace + '.' + old_family_name + if space.path != old_family_name: + xmlfiles = self.display_xmlfiles(space.xmlfiles) + raise DictConsistencyError(_(f'Variable was previously create in family "{old_family_name}", now it is in "{space.path}" in {xmlfiles}')) + return self.paths.get_variable_obj(name) children = getattr(space, child.tag, {}) if name in children: return children[name] - def convert_boolean(self, value): # pylint: disable=R0201 + def convert_boolean(self, value): """Boolean coercion. The Rougail XML may contain srings like `True` or `False` """ if isinstance(value, bool): return value if value == 'True': return True - elif value == 'False': - return False - raise TypeError(_('{} is not True or False').format(value)) # pragma: no cover + return False def set_text(self, child, @@ -377,37 +368,37 @@ class RougailObjSpace: if child.tag == 'fill' and child.attrib['target'] in self.redefine_variables: self.remove_fill(child.attrib['target']) - def remove_check(self, name): # pylint: disable=C0111 + def remove_check(self, name): if hasattr(self.space, 'constraints') and hasattr(self.space.constraints, 'check'): remove_checks = [] - for idx, check in enumerate(self.space.constraints.check): # pylint: disable=E1101 + for idx, check in enumerate(self.space.constraints.check): if hasattr(check, 'target') and check.target == name: remove_checks.append(idx) remove_checks = list(set(remove_checks)) remove_checks.sort(reverse=True) for idx in remove_checks: - self.space.constraints.check.pop(idx) # pylint: disable=E1101 + self.space.constraints.check.pop(idx) - def remove_condition(self, name): # pylint: disable=C0111 + def remove_condition(self, name): remove_conditions = [] - for idx, condition in enumerate(self.space.constraints.condition): # pylint: disable=E1101 + for idx, condition in enumerate(self.space.constraints.condition): if condition.source == name: remove_conditions.append(idx) for idx in remove_conditions: del self.space.constraints.condition[idx] - def remove_fill(self, name): # pylint: disable=C0111 + def remove_fill(self, name): if hasattr(self.space, 'constraints') and hasattr(self.space.constraints, 'fill'): remove_fills= [] - for idx, fill in enumerate(self.space.constraints.fill): # pylint: disable=E1101 + for idx, fill in enumerate(self.space.constraints.fill): if hasattr(fill, 'target') and fill.target == name: remove_fills.append(idx) remove_fills = list(set(remove_fills)) remove_fills.sort(reverse=True) for idx in remove_fills: - self.space.constraints.fill.pop(idx) # pylint: disable=E1101 + self.space.constraints.fill.pop(idx) def set_path(self, space, @@ -415,7 +406,7 @@ class RougailObjSpace: namespace, document, variableobj, - ): # pylint: disable=R0913 + ): """Fill self.paths attributes """ if child.tag == 'variable': @@ -449,7 +440,7 @@ class RougailObjSpace: space, child, namespace, - ): # pylint: disable=R0201 + ): if not hasattr(variableobj, 'index'): variableobj.index = self.index variableobj.namespace = namespace @@ -463,12 +454,11 @@ class RougailObjSpace: else: setattr(space, child.tag, variableobj) - def space_visitor(self, eosfunc_file): # pylint: disable=C0111 + def space_visitor(self, eosfunc_file): self.funcs_path = eosfunc_file SpaceAnnotator(self, eosfunc_file) - def save(self, - ): + def save(self): tiramisu_objects = TiramisuReflector(self.space, self.funcs_path, )