File tree Expand file tree Collapse file tree 3 files changed +40
-9
lines changed Expand file tree Collapse file tree 3 files changed +40
-9
lines changed Original file line number Diff line number Diff line change @@ -15,7 +15,12 @@ Dependency provider will control that returned object is an instance of ``instan
15
15
16
16
To provide a dependency you need to override the ``Dependency `` provider. You can call
17
17
provider ``.override() `` method or provide an overriding provider when creating a container.
18
- See :ref: `provider-overriding `.
18
+ See :ref: `provider-overriding `. If you don't provide a dependency, ``Dependency `` provider
19
+ will raise an error:
20
+
21
+ .. literalinclude :: ../../examples/providers/dependency_undefined_error.py
22
+ :language: python
23
+ :lines: 18-
19
24
20
25
You also can provide a default for the dependency. To provide a default use ``default `` argument:
21
26
``Dependency(..., default=...) ``. Default can be a value or a provider. If default is not a provider,
Original file line number Diff line number Diff line change 3
3
import abc
4
4
import dataclasses
5
5
6
- from dependency_injector import containers , providers , errors
6
+ from dependency_injector import containers , providers
7
7
8
8
9
9
class DbAdapter (metaclass = abc .ABCMeta ):
@@ -41,10 +41,5 @@ class Container(containers.DeclarativeContainer):
41
41
assert isinstance (container2 .user_service ().database , PostgresDbAdapter )
42
42
43
43
container3 = Container (database = providers .Singleton (object ))
44
- try :
45
- container3 .user_service ()
46
- except errors .Error as exception :
47
- print (exception )
48
- # The output is:
49
- # <object object at 0x107ce5c40> is not an
50
- # instance of <class '__main__.DbAdapter'>
44
+ container3 .user_service () # <-- raises error:
45
+ # <object ...> is not an instance of DbAdapter
Original file line number Diff line number Diff line change
1
+ """`Dependency` provider undefined error example."""
2
+
3
+ import abc
4
+ import dataclasses
5
+
6
+ from dependency_injector import containers , providers
7
+
8
+
9
+ class DbAdapter (metaclass = abc .ABCMeta ):
10
+ ...
11
+
12
+
13
+ @dataclasses .dataclass
14
+ class UserService :
15
+ database : DbAdapter
16
+
17
+
18
+ class Container (containers .DeclarativeContainer ):
19
+
20
+ database = providers .Dependency (instance_of = DbAdapter )
21
+
22
+ user_service = providers .Factory (
23
+ UserService ,
24
+ database = database ,
25
+ )
26
+
27
+
28
+ if __name__ == '__main__' :
29
+ container = Container ()
30
+ container .user_service () # <-- raises error:
31
+ # Dependency "Container.database" is not defined
You can’t perform that action at this time.
0 commit comments