MILC: Fix/complete attribute heritance
If an undefined attribute of a submodule is accessed, fall back to same attribute of the submodule's parent.
This commit is contained in:
		
							parent
							
								
									80d329bb55
								
							
						
					
					
						commit
						20290a1cff
					
				
					 1 changed files with 15 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -178,8 +178,9 @@ class ConfigurationSection(Configuration):
 | 
			
		|||
 | 
			
		||||
    def __getitem__(self, key):
 | 
			
		||||
        """Returns a config value, pulling from the `user` section as a fallback.
 | 
			
		||||
        This is called when the attribute is accessed either via the get method or through [ ] index.
 | 
			
		||||
        """
 | 
			
		||||
        if key in self._config:
 | 
			
		||||
        if key in self._config and self._config[key]:
 | 
			
		||||
            return self._config[key]
 | 
			
		||||
 | 
			
		||||
        elif key in self.parent.user:
 | 
			
		||||
| 
						 | 
				
			
			@ -187,6 +188,15 @@ class ConfigurationSection(Configuration):
 | 
			
		|||
 | 
			
		||||
        return None
 | 
			
		||||
 | 
			
		||||
    def __getattr__(self, key):
 | 
			
		||||
        """Returns the config value from the `user` section.
 | 
			
		||||
        This is called when the attribute is accessed via dot notation but does not exists.
 | 
			
		||||
        """
 | 
			
		||||
        if key in self.parent.user:
 | 
			
		||||
            return self.parent.user[key]
 | 
			
		||||
 | 
			
		||||
        return None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def handle_store_boolean(self, *args, **kwargs):
 | 
			
		||||
    """Does the add_argument for action='store_boolean'.
 | 
			
		||||
| 
						 | 
				
			
			@ -519,7 +529,10 @@ class MILC(object):
 | 
			
		|||
                        self.config[section][argument] = arg_value
 | 
			
		||||
                else:
 | 
			
		||||
                    if argument not in self.config[section]:
 | 
			
		||||
                        self.config[section][argument] = getattr(self.args, argument)
 | 
			
		||||
                        # Check if the argument exist for this section
 | 
			
		||||
                        arg = getattr(self.args, argument)
 | 
			
		||||
                        if arg:
 | 
			
		||||
                            self.config[section][argument] = arg
 | 
			
		||||
 | 
			
		||||
        self.release_lock()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue