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):
 | 
					    def __getitem__(self, key):
 | 
				
			||||||
        """Returns a config value, pulling from the `user` section as a fallback.
 | 
					        """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]
 | 
					            return self._config[key]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        elif key in self.parent.user:
 | 
					        elif key in self.parent.user:
 | 
				
			||||||
| 
						 | 
					@ -187,6 +188,15 @@ class ConfigurationSection(Configuration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return None
 | 
					        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):
 | 
					def handle_store_boolean(self, *args, **kwargs):
 | 
				
			||||||
    """Does the add_argument for action='store_boolean'.
 | 
					    """Does the add_argument for action='store_boolean'.
 | 
				
			||||||
| 
						 | 
					@ -519,7 +529,10 @@ class MILC(object):
 | 
				
			||||||
                        self.config[section][argument] = arg_value
 | 
					                        self.config[section][argument] = arg_value
 | 
				
			||||||
                else:
 | 
					                else:
 | 
				
			||||||
                    if argument not in self.config[section]:
 | 
					                    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()
 | 
					        self.release_lock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue