File tree Expand file tree Collapse file tree 2 files changed +39
-1
lines changed Expand file tree Collapse file tree 2 files changed +39
-1
lines changed Original file line number Diff line number Diff line change 44from typing import Any , Callable
55
66
7+ class Container :
8+ def __init__ (self ):
9+ self .dependencies = {}
10+
11+ def __getitem__ (self , dependency : Callable ):
12+ return self .dependencies [dependency ]
13+
14+ def __setitem__ (self , key : Callable , value : Callable ):
15+ self .dependencies [key ] = value
16+
17+
18+ container = Container ()
19+
20+
721class _Depends :
822 """Dependency injection to run callable as a dependency"""
923
@@ -14,12 +28,18 @@ def __init__(
1428 * args ,
1529 ** kwargs ,
1630 ):
17- self .dependency = dependency
31+ self ._dependency = dependency
32+ container .dependencies [dependency ] = dependency
1833 self .use_cache = use_cache
1934 self .result = ...
2035 self .args = args
2136 self .kwargs = kwargs
2237
38+ def get_dependency (self ):
39+ return container [self ._dependency ]
40+
41+ dependency = property (get_dependency )
42+
2343 async def async_eval (self ):
2444 """Run async callable dependency and store it as cache entry"""
2545 if self .result is ...:
Original file line number Diff line number Diff line change 33import pytest
44
55from fastcrawler .utils import Depends , _Depends , dependency_injector
6+ from fastcrawler .utils .injection import container
67
78
89def test_sync_dependency_injection ():
@@ -194,3 +195,20 @@ def func(
194195
195196 assert result1 == "sync_dependency1"
196197 assert result2 == "sync_dependency2"
198+
199+
200+ def test_override_dependency ():
201+ def dependency_1 ():
202+ return "sync_dependency1"
203+
204+ def dependency_2 ():
205+ return "sync_dependency2"
206+
207+ @dependency_injector
208+ def func (
209+ dep1 = Depends (dependency_1 , use_cache = True ),
210+ ):
211+ return dep1
212+
213+ container [dependency_1 ] = dependency_2
214+ assert func () == "sync_dependency2"
You can’t perform that action at this time.
0 commit comments