mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-11-04 09:57:37 +03:00 
			
		
		
		
	Merge branch 'release/4.10.3' into master
This commit is contained in:
		
						commit
						349c252b50
					
				| 
						 | 
				
			
			@ -7,6 +7,13 @@ that were made in every particular version.
 | 
			
		|||
From version 0.7.6 *Dependency Injector* framework strictly 
 | 
			
		||||
follows `Semantic versioning`_
 | 
			
		||||
 | 
			
		||||
4.10.3
 | 
			
		||||
------
 | 
			
		||||
- Fix a bug in the ``Configuration`` provider: strict mode didn't work when provider
 | 
			
		||||
  is overridden by ``None``.
 | 
			
		||||
  See issue: `#358#issuecomment-761607432 <https://github.com/ets-labs/python-dependency-injector/issues/358#issuecomment-761607432>`_.
 | 
			
		||||
  Many thanks to `Stefano Frazzetto <https://github.com/StefanoFrazzetto>`_ for reporting the issue.
 | 
			
		||||
 | 
			
		||||
4.10.2
 | 
			
		||||
------
 | 
			
		||||
- Fix a bug in ``Resource`` that cause failure when async resource depends on
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
"""Top-level package."""
 | 
			
		||||
 | 
			
		||||
__version__ = '4.10.2'
 | 
			
		||||
__version__ = '4.10.3'
 | 
			
		||||
"""Version number.
 | 
			
		||||
 | 
			
		||||
:type: str
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -1471,12 +1471,14 @@ cdef class Configuration(Object):
 | 
			
		|||
        :return: Option value.
 | 
			
		||||
        :rtype: Any
 | 
			
		||||
        """
 | 
			
		||||
        keys = selector.split('.')
 | 
			
		||||
        value = self.__call__()
 | 
			
		||||
 | 
			
		||||
        if value is None:
 | 
			
		||||
            if self.__strict or required:
 | 
			
		||||
                raise Error('Undefined configuration option "{0}.{1}"'.format(self.__name, selector))
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
        keys = selector.split('.')
 | 
			
		||||
        while len(keys) > 0:
 | 
			
		||||
            key = keys.pop(0)
 | 
			
		||||
            value = value.get(key, self.UNDEFINED)
 | 
			
		||||
| 
						 | 
				
			
			@ -1500,9 +1502,9 @@ cdef class Configuration(Object):
 | 
			
		|||
        :return: Overriding context.
 | 
			
		||||
        :rtype: :py:class:`OverridingContext`
 | 
			
		||||
        """
 | 
			
		||||
        keys = selector.split('.')
 | 
			
		||||
        original_value = current_value = deepcopy(self.__call__())
 | 
			
		||||
 | 
			
		||||
        keys = selector.split('.')
 | 
			
		||||
        while len(keys) > 0:
 | 
			
		||||
            key = keys.pop(0)
 | 
			
		||||
            if len(keys) == 0:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -214,6 +214,12 @@ class ConfigTests(unittest.TestCase):
 | 
			
		|||
        with self.assertRaisesRegex(errors.Error, 'Undefined configuration option "config.a"'):
 | 
			
		||||
            self.config.a()
 | 
			
		||||
 | 
			
		||||
    def test_value_of_undefined_option_with_root_none_in_strict_mode(self):
 | 
			
		||||
        self.config = providers.Configuration(strict=True)
 | 
			
		||||
        self.config.override(None)
 | 
			
		||||
        with self.assertRaisesRegex(errors.Error, 'Undefined configuration option "config.a"'):
 | 
			
		||||
            self.config.a()
 | 
			
		||||
 | 
			
		||||
    def test_value_of_defined_none_option_in_strict_mode(self):
 | 
			
		||||
        self.config = providers.Configuration(strict=True)
 | 
			
		||||
        self.config.from_dict({'a': None})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user