mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-11-04 09:57:37 +03:00 
			
		
		
		
	Add implementation and tests
This commit is contained in:
		
							parent
							
								
									69ebc19b5f
								
							
						
					
					
						commit
						c3e93f8d4d
					
				
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -1140,6 +1140,15 @@ cdef class ConfigurationOption(Provider):
 | 
			
		|||
        root = self.__root_ref()
 | 
			
		||||
        return '.'.join((root.get_name(), self._get_self_name()))
 | 
			
		||||
 | 
			
		||||
    def as_int(self):
 | 
			
		||||
        return Callable(int, self)
 | 
			
		||||
 | 
			
		||||
    def as_float(self):
 | 
			
		||||
        return Callable(float, self)
 | 
			
		||||
 | 
			
		||||
    def as_(self, callback, *args, **kwargs):
 | 
			
		||||
        return Callable(callback, self, *args, **kwargs)
 | 
			
		||||
 | 
			
		||||
    def override(self, value):
 | 
			
		||||
        if isinstance(value, Provider):
 | 
			
		||||
            raise Error('Configuration option can only be overridden by a value')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
"""Dependency injector config providers unit tests."""
 | 
			
		||||
 | 
			
		||||
import contextlib
 | 
			
		||||
import decimal
 | 
			
		||||
import os
 | 
			
		||||
import sys
 | 
			
		||||
import tempfile
 | 
			
		||||
| 
						 | 
				
			
			@ -69,6 +70,33 @@ class ConfigTests(unittest.TestCase):
 | 
			
		|||
        self.assertEqual(abc(), 1)
 | 
			
		||||
        self.assertEqual(abd(), 2)
 | 
			
		||||
 | 
			
		||||
    def test_as_int(self):
 | 
			
		||||
        value_provider = providers.Callable(lambda value: value, self.config.test.as_int())
 | 
			
		||||
        self.config.from_dict({'test': '123'})
 | 
			
		||||
 | 
			
		||||
        value = value_provider()
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(value, 123)
 | 
			
		||||
 | 
			
		||||
    def test_as_float(self):
 | 
			
		||||
        value_provider = providers.Callable(lambda value: value, self.config.test.as_float())
 | 
			
		||||
        self.config.from_dict({'test': '123.123'})
 | 
			
		||||
 | 
			
		||||
        value = value_provider()
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(value, 123.123)
 | 
			
		||||
 | 
			
		||||
    def test_as_(self):
 | 
			
		||||
        value_provider = providers.Callable(
 | 
			
		||||
            lambda value: value,
 | 
			
		||||
            self.config.test.as_(decimal.Decimal),
 | 
			
		||||
        )
 | 
			
		||||
        self.config.from_dict({'test': '123.123'})
 | 
			
		||||
 | 
			
		||||
        value = value_provider()
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(value, decimal.Decimal('123.123'))
 | 
			
		||||
 | 
			
		||||
    def test_providers_value_override(self):
 | 
			
		||||
        a = self.config.a
 | 
			
		||||
        ab = self.config.a.b
 | 
			
		||||
| 
						 | 
				
			
			@ -358,7 +386,6 @@ class ConfigFromIniWithEnvInterpolationTests(unittest.TestCase):
 | 
			
		|||
        self.assertEqual(self.config.section1.value1(), 'test-value')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ConfigFromYamlTests(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user