Skip to content

Commit ce157ee

Browse files
committed
Merge branch 'release/4.32.1' into master
2 parents fab4e3e + 0f3e170 commit ce157ee

File tree

5 files changed

+55
-10
lines changed

5 files changed

+55
-10
lines changed

docs/main/changelog.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ that were made in every particular version.
77
From version 0.7.6 *Dependency Injector* framework strictly
88
follows `Semantic versioning`_
99

10+
4.32.1
11+
------
12+
- Fix a bug with ``List`` provider not working in async mode.
13+
See issue: `#450 <https://github.com/ets-labs/python-dependency-injector/issues/450>`_.
14+
Thanks to `@mxab <https://github.com/mxab>`_ for reporting the issue.
15+
- Add async mode tests for ``List`` and ``Dict`` provider.
16+
1017
4.32.0
1118
------
1219
- Add ``ContextLocalSingleton`` provider.

src/dependency_injector/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""Top-level package."""
22

3-
__version__ = '4.32.0'
3+
__version__ = '4.32.1'
44
"""Version number.
55
66
:type: str

src/dependency_injector/providers.c

Lines changed: 5 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/dependency_injector/providers.pyx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3211,7 +3211,7 @@ cdef class List(Provider):
32113211

32123212
cpdef object _provide(self, tuple args, dict kwargs):
32133213
"""Return result of provided callable's call."""
3214-
return list(__provide_positional_args(args, self.__args, self.__args_len))
3214+
return __provide_positional_args(args, self.__args, self.__args_len)
32153215

32163216

32173217
cdef class Dict(Provider):

tests/unit/providers/test_async_py36.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -868,6 +868,47 @@ def get_sync():
868868
self.assertEqual(dependency4, dependency)
869869

870870

871+
class ListTests(AsyncTestCase):
872+
873+
def test_provide(self):
874+
# See issue: https://github.com/ets-labs/python-dependency-injector/issues/450
875+
async def create_resource(param: str):
876+
return param
877+
878+
class Container(containers.DeclarativeContainer):
879+
880+
resources = providers.List(
881+
providers.Resource(create_resource, 'foo'),
882+
providers.Resource(create_resource, 'bar')
883+
)
884+
885+
container = Container()
886+
resources = self._run(container.resources())
887+
888+
self.assertEqual(resources[0], 'foo')
889+
self.assertEqual(resources[1], 'bar')
890+
891+
892+
class DictTests(AsyncTestCase):
893+
894+
def test_provide(self):
895+
async def create_resource(param: str):
896+
return param
897+
898+
class Container(containers.DeclarativeContainer):
899+
900+
resources = providers.Dict(
901+
foo=providers.Resource(create_resource, 'foo'),
902+
bar=providers.Resource(create_resource, 'bar')
903+
)
904+
905+
container = Container()
906+
resources = self._run(container.resources())
907+
908+
self.assertEqual(resources['foo'], 'foo')
909+
self.assertEqual(resources['bar'], 'bar')
910+
911+
871912
class OverrideTests(AsyncTestCase):
872913

873914
def test_provider(self):

0 commit comments

Comments
 (0)