Skip to content

Commit 50d05d4

Browse files
committed
Update docs and examples
1 parent 21c0c82 commit 50d05d4

File tree

3 files changed

+40
-9
lines changed

3 files changed

+40
-9
lines changed

docs/providers/dependency.rst

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,12 @@ Dependency provider will control that returned object is an instance of ``instan
1515

1616
To provide a dependency you need to override the ``Dependency`` provider. You can call
1717
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-
1924

2025
You also can provide a default for the dependency. To provide a default use ``default`` argument:
2126
``Dependency(..., default=...)``. Default can be a value or a provider. If default is not a provider,

examples/providers/dependency.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import abc
44
import dataclasses
55

6-
from dependency_injector import containers, providers, errors
6+
from dependency_injector import containers, providers
77

88

99
class DbAdapter(metaclass=abc.ABCMeta):
@@ -41,10 +41,5 @@ class Container(containers.DeclarativeContainer):
4141
assert isinstance(container2.user_service().database, PostgresDbAdapter)
4242

4343
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
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
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

0 commit comments

Comments
 (0)