mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-10-31 07:57:43 +03:00 
			
		
		
		
	Merge branch 'release/4.32.1' into master
This commit is contained in:
		
						commit
						ce157eeab9
					
				|  | @ -7,6 +7,13 @@ that were made in every particular version. | ||||||
| From version 0.7.6 *Dependency Injector* framework strictly  | From version 0.7.6 *Dependency Injector* framework strictly  | ||||||
| follows `Semantic versioning`_ | follows `Semantic versioning`_ | ||||||
| 
 | 
 | ||||||
|  | 4.32.1 | ||||||
|  | ------ | ||||||
|  | - Fix a bug with ``List`` provider not working in async mode. | ||||||
|  |   See issue: `#450 <https://github.com/ets-labs/python-dependency-injector/issues/450>`_. | ||||||
|  |   Thanks to `@mxab <https://github.com/mxab>`_ for reporting the issue. | ||||||
|  | - Add async mode tests for ``List`` and ``Dict`` provider. | ||||||
|  | 
 | ||||||
| 4.32.0 | 4.32.0 | ||||||
| ------ | ------ | ||||||
| - Add ``ContextLocalSingleton`` provider. | - Add ``ContextLocalSingleton`` provider. | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| """Top-level package.""" | """Top-level package.""" | ||||||
| 
 | 
 | ||||||
| __version__ = '4.32.0' | __version__ = '4.32.1' | ||||||
| """Version number. | """Version number. | ||||||
| 
 | 
 | ||||||
| :type: str | :type: str | ||||||
|  |  | ||||||
|  | @ -62896,7 +62896,7 @@ static PyObject *__pyx_gb_19dependency_injector_9providers_4List_7related_2gener | ||||||
|  *  |  *  | ||||||
|  *     cpdef object _provide(self, tuple args, dict kwargs):             # <<<<<<<<<<<<<< |  *     cpdef object _provide(self, tuple args, dict kwargs):             # <<<<<<<<<<<<<< | ||||||
|  *         """Return result of provided callable's call.""" |  *         """Return result of provided callable's call.""" | ||||||
|  *         return list(__provide_positional_args(args, self.__args, self.__args_len)) |  *         return __provide_positional_args(args, self.__args, self.__args_len) | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| static PyObject *__pyx_pw_19dependency_injector_9providers_4List_13_provide(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ | static PyObject *__pyx_pw_19dependency_injector_9providers_4List_13_provide(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ | ||||||
|  | @ -62993,7 +62993,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers_4List__provide(struct | ||||||
|   /* "dependency_injector/providers.pyx":3214
 |   /* "dependency_injector/providers.pyx":3214
 | ||||||
|  *     cpdef object _provide(self, tuple args, dict kwargs): |  *     cpdef object _provide(self, tuple args, dict kwargs): | ||||||
|  *         """Return result of provided callable's call.""" |  *         """Return result of provided callable's call.""" | ||||||
|  *         return list(__provide_positional_args(args, self.__args, self.__args_len))             # <<<<<<<<<<<<<< |  *         return __provide_positional_args(args, self.__args, self.__args_len)             # <<<<<<<<<<<<<< | ||||||
|  *  |  *  | ||||||
|  *  |  *  | ||||||
|  */ |  */ | ||||||
|  | @ -63003,11 +63003,8 @@ static PyObject *__pyx_f_19dependency_injector_9providers_4List__provide(struct | ||||||
|   __pyx_t_2 = __pyx_f_19dependency_injector_9providers___provide_positional_args(__pyx_v_args, ((PyObject*)__pyx_t_1), __pyx_v_self->__pyx___args_len); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3214, __pyx_L1_error) |   __pyx_t_2 = __pyx_f_19dependency_injector_9providers___provide_positional_args(__pyx_v_args, ((PyObject*)__pyx_t_1), __pyx_v_self->__pyx___args_len); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3214, __pyx_L1_error) | ||||||
|   __Pyx_GOTREF(__pyx_t_2); |   __Pyx_GOTREF(__pyx_t_2); | ||||||
|   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; |   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; | ||||||
|   __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3214, __pyx_L1_error) |   __pyx_r = __pyx_t_2; | ||||||
|   __Pyx_GOTREF(__pyx_t_1); |   __pyx_t_2 = 0; | ||||||
|   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; |  | ||||||
|   __pyx_r = __pyx_t_1; |  | ||||||
|   __pyx_t_1 = 0; |  | ||||||
|   goto __pyx_L0; |   goto __pyx_L0; | ||||||
| 
 | 
 | ||||||
|   /* "dependency_injector/providers.pyx":3212
 |   /* "dependency_injector/providers.pyx":3212
 | ||||||
|  | @ -63015,7 +63012,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers_4List__provide(struct | ||||||
|  *  |  *  | ||||||
|  *     cpdef object _provide(self, tuple args, dict kwargs):             # <<<<<<<<<<<<<< |  *     cpdef object _provide(self, tuple args, dict kwargs):             # <<<<<<<<<<<<<< | ||||||
|  *         """Return result of provided callable's call.""" |  *         """Return result of provided callable's call.""" | ||||||
|  *         return list(__provide_positional_args(args, self.__args, self.__args_len)) |  *         return __provide_positional_args(args, self.__args, self.__args_len) | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
|   /* function exit code */ |   /* function exit code */ | ||||||
|  |  | ||||||
|  | @ -3211,7 +3211,7 @@ cdef class List(Provider): | ||||||
| 
 | 
 | ||||||
|     cpdef object _provide(self, tuple args, dict kwargs): |     cpdef object _provide(self, tuple args, dict kwargs): | ||||||
|         """Return result of provided callable's call.""" |         """Return result of provided callable's call.""" | ||||||
|         return list(__provide_positional_args(args, self.__args, self.__args_len)) |         return __provide_positional_args(args, self.__args, self.__args_len) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| cdef class Dict(Provider): | cdef class Dict(Provider): | ||||||
|  |  | ||||||
|  | @ -868,6 +868,47 @@ class DependencyTests(AsyncTestCase): | ||||||
|         self.assertEqual(dependency4, dependency) |         self.assertEqual(dependency4, dependency) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | class ListTests(AsyncTestCase): | ||||||
|  | 
 | ||||||
|  |     def test_provide(self): | ||||||
|  |         # See issue: https://github.com/ets-labs/python-dependency-injector/issues/450 | ||||||
|  |         async def create_resource(param: str): | ||||||
|  |             return param | ||||||
|  | 
 | ||||||
|  |         class Container(containers.DeclarativeContainer): | ||||||
|  | 
 | ||||||
|  |             resources = providers.List( | ||||||
|  |                 providers.Resource(create_resource, 'foo'), | ||||||
|  |                 providers.Resource(create_resource, 'bar') | ||||||
|  |             ) | ||||||
|  | 
 | ||||||
|  |         container = Container() | ||||||
|  |         resources = self._run(container.resources()) | ||||||
|  | 
 | ||||||
|  |         self.assertEqual(resources[0], 'foo') | ||||||
|  |         self.assertEqual(resources[1], 'bar') | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class DictTests(AsyncTestCase): | ||||||
|  | 
 | ||||||
|  |     def test_provide(self): | ||||||
|  |         async def create_resource(param: str): | ||||||
|  |             return param | ||||||
|  | 
 | ||||||
|  |         class Container(containers.DeclarativeContainer): | ||||||
|  | 
 | ||||||
|  |             resources = providers.Dict( | ||||||
|  |                 foo=providers.Resource(create_resource, 'foo'), | ||||||
|  |                 bar=providers.Resource(create_resource, 'bar') | ||||||
|  |             ) | ||||||
|  | 
 | ||||||
|  |         container = Container() | ||||||
|  |         resources = self._run(container.resources()) | ||||||
|  | 
 | ||||||
|  |         self.assertEqual(resources['foo'], 'foo') | ||||||
|  |         self.assertEqual(resources['bar'], 'bar') | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| class OverrideTests(AsyncTestCase): | class OverrideTests(AsyncTestCase): | ||||||
| 
 | 
 | ||||||
|     def test_provider(self): |     def test_provider(self): | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user