family and var with same name
This commit is contained in:
@ -13,7 +13,8 @@ class Path:
|
||||
def __init__(self):
|
||||
self.variables = {}
|
||||
self.families = {}
|
||||
self.full_paths = {}
|
||||
self.full_paths_families = {}
|
||||
self.full_paths_variables = {}
|
||||
|
||||
# Family
|
||||
def add_family(self,
|
||||
@ -23,7 +24,7 @@ class Path:
|
||||
) -> str: # pylint: disable=C0111
|
||||
if '.' not in name and namespace == Config['variable_namespace']:
|
||||
full_name = '.'.join([namespace, name])
|
||||
self.full_paths[name] = full_name
|
||||
self.full_paths_families[name] = full_name
|
||||
else:
|
||||
full_name = name
|
||||
if full_name in self.families and self.families[full_name]['variableobj'] != variableobj:
|
||||
@ -41,8 +42,8 @@ class Path:
|
||||
check_name=False,
|
||||
allow_dot=True,
|
||||
)
|
||||
if '.' not in name and current_namespace == Config['variable_namespace'] and name in self.full_paths:
|
||||
name = self.full_paths[name]
|
||||
if '.' not in name and current_namespace == Config['variable_namespace'] and name in self.full_paths_families:
|
||||
name = self.full_paths_families[name]
|
||||
if current_namespace is None: # pragma: no cover
|
||||
raise OperationError('current_namespace must not be None')
|
||||
dico = self.families[name]
|
||||
@ -55,8 +56,8 @@ class Path:
|
||||
def get_family_obj(self,
|
||||
name: str,
|
||||
) -> 'Family': # pylint: disable=C0111
|
||||
if '.' not in name and name in self.full_paths:
|
||||
name = self.full_paths[name]
|
||||
if '.' not in name and name in self.full_paths_families:
|
||||
name = self.full_paths_families[name]
|
||||
if name not in self.families:
|
||||
raise DictConsistencyError(_('unknown family {}').format(name))
|
||||
dico = self.families[name]
|
||||
@ -65,7 +66,7 @@ class Path:
|
||||
def family_is_defined(self,
|
||||
name: str,
|
||||
) -> str: # pylint: disable=C0111
|
||||
if '.' not in name and name not in self.families and name in self.full_paths:
|
||||
if '.' not in name and name not in self.families and name in self.full_paths_families:
|
||||
return True
|
||||
return name in self.families
|
||||
|
||||
@ -88,7 +89,7 @@ class Path:
|
||||
dico['variableobj'],
|
||||
)
|
||||
if namespace == Config['variable_namespace']:
|
||||
self.full_paths[name] = new_path
|
||||
self.full_paths_variables[name] = new_path
|
||||
else:
|
||||
name = new_path
|
||||
dico = self._get_variable(name)
|
||||
@ -110,7 +111,7 @@ class Path:
|
||||
) -> str: # pylint: disable=C0111
|
||||
if '.' not in name:
|
||||
full_name = '.'.join([namespace, family, name])
|
||||
self.full_paths[name] = full_name
|
||||
self.full_paths_variables[name] = full_name
|
||||
else:
|
||||
full_name = name
|
||||
if namespace == Config['variable_namespace']:
|
||||
@ -176,7 +177,7 @@ class Path:
|
||||
def path_is_defined(self,
|
||||
name: str,
|
||||
) -> str: # pylint: disable=C0111
|
||||
if '.' not in name and name not in self.variables and name in self.full_paths:
|
||||
if '.' not in name and name not in self.variables and name in self.full_paths_variables:
|
||||
return True
|
||||
return name in self.variables
|
||||
|
||||
@ -186,8 +187,8 @@ class Path:
|
||||
) -> str:
|
||||
if name not in self.variables:
|
||||
if name not in self.variables:
|
||||
if '.' not in name and name in self.full_paths:
|
||||
name = self.full_paths[name]
|
||||
if '.' not in name and name in self.full_paths_variables:
|
||||
name = self.full_paths_variables[name]
|
||||
if name not in self.variables:
|
||||
for var_name, variable in self.variables.items():
|
||||
if variable['is_dynamic'] and name.startswith(var_name):
|
||||
@ -195,9 +196,9 @@ class Path:
|
||||
raise Exception('This option is dynamic, should use "with_suffix" attribute')
|
||||
return variable, name[len(var_name):]
|
||||
if '.' not in name:
|
||||
for var_name, path in self.full_paths.items():
|
||||
for var_name, path in self.full_paths_variables.items():
|
||||
if name.startswith(var_name):
|
||||
variable = self.variables[self.full_paths[var_name]]
|
||||
variable = self.variables[self.full_paths_variables[var_name]]
|
||||
if variable['is_dynamic']:
|
||||
if not with_suffix:
|
||||
raise Exception('This option is dynamic, should use "with_suffix" attribute')
|
||||
|
Reference in New Issue
Block a user