mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2024-11-22 01:26:51 +03:00
Add Provider.last_overriding read-only property
This commit is contained in:
parent
0766df39d7
commit
e8bd524b6d
|
@ -11,6 +11,12 @@ Development version
|
|||
-------------------
|
||||
- No features.
|
||||
|
||||
3.4.4
|
||||
-----
|
||||
- Add ``Provider.last_overriding`` read-only property that points to last
|
||||
overriding provider, if any. If target provider is not overridden, ``None``
|
||||
would be returned.
|
||||
|
||||
3.4.3
|
||||
-----
|
||||
- Update doc block for ``Provider.overriding_lock`` attribute.
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -129,6 +129,14 @@ cdef class Provider(object):
|
|||
with self.__overriding_lock:
|
||||
return self.__overridden
|
||||
|
||||
@property
|
||||
def last_overriding(self):
|
||||
"""Return last overriding provider.
|
||||
|
||||
If provider is not overridden, then None is returned.
|
||||
"""
|
||||
return self.__last_overriding
|
||||
|
||||
def override(self, provider):
|
||||
"""Override provider with another provider.
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@ class ProviderTests(unittest.TestCase):
|
|||
overriding_provider = providers.Provider()
|
||||
self.provider.override(overriding_provider)
|
||||
self.assertTrue(self.provider.overridden)
|
||||
self.assertIs(self.provider.last_overriding, overriding_provider)
|
||||
|
||||
def test_overriding_context(self):
|
||||
overriding_provider = providers.Provider()
|
||||
|
@ -59,12 +60,15 @@ class ProviderTests(unittest.TestCase):
|
|||
self.provider.override(overriding_provider2)
|
||||
|
||||
self.assertIs(self.provider.overridden[-1], overriding_provider2)
|
||||
self.assertIs(self.provider.last_overriding, overriding_provider2)
|
||||
|
||||
self.provider.reset_last_overriding()
|
||||
self.assertIs(self.provider.overridden[-1], overriding_provider1)
|
||||
self.assertIs(self.provider.last_overriding, overriding_provider1)
|
||||
|
||||
self.provider.reset_last_overriding()
|
||||
self.assertFalse(self.provider.overridden)
|
||||
self.assertIsNone(self.provider.last_overriding)
|
||||
|
||||
def test_reset_last_overriding_of_not_overridden_provider(self):
|
||||
self.assertRaises(errors.Error, self.provider.reset_last_overriding)
|
||||
|
|
Loading…
Reference in New Issue
Block a user