mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-02-27 17:25:03 +03:00
Add support for inspect.iscoroutinefunction() in Coroutine provider (#830)
This commit is contained in:
parent
0d6fdb5b78
commit
23acf01c15
|
@ -2,6 +2,7 @@
|
|||
|
||||
from __future__ import absolute_import
|
||||
|
||||
import asyncio
|
||||
import copy
|
||||
import errno
|
||||
import functools
|
||||
|
@ -27,17 +28,19 @@ except ImportError:
|
|||
import __builtin__ as builtins
|
||||
|
||||
try:
|
||||
import asyncio
|
||||
from inspect import _is_coroutine_mark as _is_coroutine_marker
|
||||
except ImportError:
|
||||
asyncio = None
|
||||
_is_coroutine_marker = None
|
||||
else:
|
||||
if sys.version_info >= (3, 5, 3):
|
||||
import asyncio.coroutines
|
||||
_is_coroutine_marker = asyncio.coroutines._is_coroutine
|
||||
else:
|
||||
try:
|
||||
# Python >=3.12.0,<3.12.5
|
||||
from inspect import _is_coroutine_marker
|
||||
except ImportError:
|
||||
_is_coroutine_marker = True
|
||||
|
||||
try:
|
||||
from asyncio.coroutines import _is_coroutine
|
||||
except ImportError:
|
||||
_is_coroutine = True
|
||||
|
||||
try:
|
||||
import ConfigParser as iniconfigparser
|
||||
except ImportError:
|
||||
|
@ -1475,7 +1478,8 @@ cdef class Coroutine(Callable):
|
|||
some_coroutine.add_kwargs(keyword_argument1=3, keyword_argument=4)
|
||||
"""
|
||||
|
||||
_is_coroutine = _is_coroutine_marker
|
||||
_is_coroutine_marker = _is_coroutine_marker # Python >=3.12
|
||||
_is_coroutine = _is_coroutine # Python <3.16
|
||||
|
||||
def set_provides(self, provides):
|
||||
"""Set provider provides."""
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
"""Coroutine provider tests."""
|
||||
import sys
|
||||
|
||||
from dependency_injector import providers, errors
|
||||
from pytest import mark, raises
|
||||
|
@ -208,3 +209,17 @@ def test_repr():
|
|||
"<dependency_injector.providers."
|
||||
"Coroutine({0}) at {1}>".format(repr(example), hex(id(provider)))
|
||||
)
|
||||
|
||||
|
||||
@mark.skipif(sys.version_info > (3, 15), reason="requires Python<3.16")
|
||||
def test_asyncio_iscoroutinefunction() -> None:
|
||||
from asyncio.coroutines import iscoroutinefunction
|
||||
|
||||
assert iscoroutinefunction(providers.Coroutine(example))
|
||||
|
||||
|
||||
@mark.skipif(sys.version_info < (3, 12), reason="requires Python>=3.12")
|
||||
def test_inspect_iscoroutinefunction() -> None:
|
||||
from inspect import iscoroutinefunction
|
||||
|
||||
assert iscoroutinefunction(providers.Coroutine(example))
|
||||
|
|
Loading…
Reference in New Issue
Block a user