mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-11-04 09:57:37 +03:00 
			
		
		
		
	Patch Configuration provider to raise AttributeError for special attributes
This commit is contained in:
		
							parent
							
								
									f8960ddacb
								
							
						
					
					
						commit
						7cb3310c5d
					
				
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -641,11 +641,17 @@ cdef class Configuration(Provider):
 | 
			
		|||
        """
 | 
			
		||||
        return represent_provider(provider=self, provides=self.__name)
 | 
			
		||||
 | 
			
		||||
    def __getattr__(self, name):
 | 
			
		||||
    def __getattr__(self, str name):
 | 
			
		||||
        """Return child configuration provider."""
 | 
			
		||||
        cdef Configuration child_provider
 | 
			
		||||
        cdef object value
 | 
			
		||||
 | 
			
		||||
        if name.startswith('__'):
 | 
			
		||||
            raise AttributeError(
 | 
			
		||||
                '\'{cls}\' object has no attribute '
 | 
			
		||||
                '\'{attribute_name}\''.format(cls=self.__class__.__name__,
 | 
			
		||||
                                              attribute_name=name))
 | 
			
		||||
 | 
			
		||||
        child_provider = self.__children.get(name)
 | 
			
		||||
 | 
			
		||||
        if child_provider is None:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -63,6 +63,15 @@ class ConfigTests(unittest.TestCase):
 | 
			
		|||
    def test_value_of_undefined_option(self):
 | 
			
		||||
        self.assertIsNone(self.config.a())
 | 
			
		||||
 | 
			
		||||
    def test_getting_of_special_attributes(self):
 | 
			
		||||
        with self.assertRaises(AttributeError):
 | 
			
		||||
            self.config.__name__
 | 
			
		||||
 | 
			
		||||
    def test_getting_of_special_attributes_from_child(self):
 | 
			
		||||
        a = self.config.a
 | 
			
		||||
        with self.assertRaises(AttributeError):
 | 
			
		||||
            a.__name__
 | 
			
		||||
 | 
			
		||||
    def test_deepcopy(self):
 | 
			
		||||
        provider = providers.Configuration('config')
 | 
			
		||||
        provider_copy = providers.deepcopy(provider)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user