mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-02-28 01:30:35 +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
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
import asyncio
|
||||||
import copy
|
import copy
|
||||||
import errno
|
import errno
|
||||||
import functools
|
import functools
|
||||||
|
@ -27,17 +28,19 @@ except ImportError:
|
||||||
import __builtin__ as builtins
|
import __builtin__ as builtins
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import asyncio
|
from inspect import _is_coroutine_mark as _is_coroutine_marker
|
||||||
except ImportError:
|
except ImportError:
|
||||||
asyncio = None
|
try:
|
||||||
_is_coroutine_marker = None
|
# Python >=3.12.0,<3.12.5
|
||||||
else:
|
from inspect import _is_coroutine_marker
|
||||||
if sys.version_info >= (3, 5, 3):
|
except ImportError:
|
||||||
import asyncio.coroutines
|
|
||||||
_is_coroutine_marker = asyncio.coroutines._is_coroutine
|
|
||||||
else:
|
|
||||||
_is_coroutine_marker = True
|
_is_coroutine_marker = True
|
||||||
|
|
||||||
|
try:
|
||||||
|
from asyncio.coroutines import _is_coroutine
|
||||||
|
except ImportError:
|
||||||
|
_is_coroutine = True
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import ConfigParser as iniconfigparser
|
import ConfigParser as iniconfigparser
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
@ -1475,7 +1478,8 @@ cdef class Coroutine(Callable):
|
||||||
some_coroutine.add_kwargs(keyword_argument1=3, keyword_argument=4)
|
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):
|
def set_provides(self, provides):
|
||||||
"""Set provider provides."""
|
"""Set provider provides."""
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
"""Coroutine provider tests."""
|
"""Coroutine provider tests."""
|
||||||
|
import sys
|
||||||
|
|
||||||
from dependency_injector import providers, errors
|
from dependency_injector import providers, errors
|
||||||
from pytest import mark, raises
|
from pytest import mark, raises
|
||||||
|
@ -208,3 +209,17 @@ def test_repr():
|
||||||
"<dependency_injector.providers."
|
"<dependency_injector.providers."
|
||||||
"Coroutine({0}) at {1}>".format(repr(example), hex(id(provider)))
|
"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