Drop Python 3.4 support (#518)

* Update gitignore

* Drop Python 3.4 support

* Update change log

* Fix typo in changelog
This commit is contained in:
Roman Mogylatov 2021-10-12 12:16:49 -04:00 committed by GitHub
parent 284dee6e58
commit 4cc4ca9188
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 167 additions and 203 deletions

View File

@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-18.04 runs-on: ubuntu-18.04
strategy: strategy:
matrix: matrix:
python-version: [2.7, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, pypy2, pypy3] python-version: [2.7, 3.5, 3.6, 3.7, 3.8, 3.9, pypy2, pypy3]
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-python@v2 - uses: actions/setup-python@v2

3
.gitignore vendored
View File

@ -36,6 +36,7 @@ reports/
.cache .cache
nosetests.xml nosetests.xml
coverage.xml coverage.xml
.hypothesis/
# Translations # Translations
*.mo *.mo
@ -54,7 +55,7 @@ target/
.idea/ .idea/
# Virtualenv # Virtualenv
venv/ venv*/
# SQLite # SQLite
*.db *.db

View File

@ -13,6 +13,8 @@ Develop
``container.wire(modules=["yourapp.module1"])``. ``container.wire(modules=["yourapp.module1"])``.
- Add container wiring configuration ``wiring_config = containers.WiringConfiguration()``. - Add container wiring configuration ``wiring_config = containers.WiringConfiguration()``.
- Add support of ``with`` statement for ``container.override_providers()`` method. - Add support of ``with`` statement for ``container.override_providers()`` method.
- Drop support of Python 3.4. There are no immediate breaking changes, but Dependency Injector
will no longer be tested on Python 3.4 and any bugs will not be fixed.
- Update documentation and fix typos. - Update documentation and fix typos.
4.36.2 4.36.2

View File

@ -96,7 +96,6 @@ setup(name="dependency-injector",
"Programming Language :: Python :: 2", "Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7", "Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3", "Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.7",

View File

@ -94529,13 +94529,13 @@ static PyObject *__pyx_gb_19dependency_injector_9providers_30generator20(__pyx_C
* *
* *
* def isawaitable(obj): # <<<<<<<<<<<<<< * def isawaitable(obj): # <<<<<<<<<<<<<<
* """Check if object is a coroutine function. * """Check if object is a coroutine function."""
* * try:
*/ */
/* Python wrapper */ /* Python wrapper */
static PyObject *__pyx_pw_19dependency_injector_9providers_32isawaitable(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/ static PyObject *__pyx_pw_19dependency_injector_9providers_32isawaitable(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static char __pyx_doc_19dependency_injector_9providers_31isawaitable[] = "Check if object is a coroutine function.\n\n Return False for any object in Python 3.4 or below.\n "; static char __pyx_doc_19dependency_injector_9providers_31isawaitable[] = "Check if object is a coroutine function.";
static PyMethodDef __pyx_mdef_19dependency_injector_9providers_32isawaitable = {"isawaitable", (PyCFunction)__pyx_pw_19dependency_injector_9providers_32isawaitable, METH_O, __pyx_doc_19dependency_injector_9providers_31isawaitable}; static PyMethodDef __pyx_mdef_19dependency_injector_9providers_32isawaitable = {"isawaitable", (PyCFunction)__pyx_pw_19dependency_injector_9providers_32isawaitable, METH_O, __pyx_doc_19dependency_injector_9providers_31isawaitable};
static PyObject *__pyx_pw_19dependency_injector_9providers_32isawaitable(PyObject *__pyx_self, PyObject *__pyx_v_obj) { static PyObject *__pyx_pw_19dependency_injector_9providers_32isawaitable(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
PyObject *__pyx_r = 0; PyObject *__pyx_r = 0;
@ -94563,9 +94563,9 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_31isawaitable(CYTHON_
int __pyx_clineno = 0; int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("isawaitable", 0); __Pyx_RefNannySetupContext("isawaitable", 0);
/* "dependency_injector/providers.pyx":4750 /* "dependency_injector/providers.pyx":4747
* Return False for any object in Python 3.4 or below. * def isawaitable(obj):
* """ * """Check if object is a coroutine function."""
* try: # <<<<<<<<<<<<<< * try: # <<<<<<<<<<<<<<
* return inspect.isawaitable(obj) * return inspect.isawaitable(obj)
* except AttributeError: * except AttributeError:
@ -94579,17 +94579,17 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_31isawaitable(CYTHON_
__Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_3);
/*try:*/ { /*try:*/ {
/* "dependency_injector/providers.pyx":4751 /* "dependency_injector/providers.pyx":4748
* """ * """Check if object is a coroutine function."""
* try: * try:
* return inspect.isawaitable(obj) # <<<<<<<<<<<<<< * return inspect.isawaitable(obj) # <<<<<<<<<<<<<<
* except AttributeError: * except AttributeError:
* return False * return False
*/ */
__Pyx_XDECREF(__pyx_r); __Pyx_XDECREF(__pyx_r);
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_inspect); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4751, __pyx_L3_error) __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_inspect); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4748, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_isawaitable); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4751, __pyx_L3_error) __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_isawaitable); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4748, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = NULL; __pyx_t_5 = NULL;
@ -94604,16 +94604,16 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_31isawaitable(CYTHON_
} }
__pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_v_obj) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_obj); __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_v_obj) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_obj);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4751, __pyx_L3_error) if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4748, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_r = __pyx_t_4; __pyx_r = __pyx_t_4;
__pyx_t_4 = 0; __pyx_t_4 = 0;
goto __pyx_L7_try_return; goto __pyx_L7_try_return;
/* "dependency_injector/providers.pyx":4750 /* "dependency_injector/providers.pyx":4747
* Return False for any object in Python 3.4 or below. * def isawaitable(obj):
* """ * """Check if object is a coroutine function."""
* try: # <<<<<<<<<<<<<< * try: # <<<<<<<<<<<<<<
* return inspect.isawaitable(obj) * return inspect.isawaitable(obj)
* except AttributeError: * except AttributeError:
@ -94624,7 +94624,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_31isawaitable(CYTHON_
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "dependency_injector/providers.pyx":4752 /* "dependency_injector/providers.pyx":4749
* try: * try:
* return inspect.isawaitable(obj) * return inspect.isawaitable(obj)
* except AttributeError: # <<<<<<<<<<<<<< * except AttributeError: # <<<<<<<<<<<<<<
@ -94634,12 +94634,12 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_31isawaitable(CYTHON_
__pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError); __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
if (__pyx_t_7) { if (__pyx_t_7) {
__Pyx_AddTraceback("dependency_injector.providers.isawaitable", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_AddTraceback("dependency_injector.providers.isawaitable", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(1, 4752, __pyx_L5_except_error) if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(1, 4749, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_5);
/* "dependency_injector/providers.pyx":4753 /* "dependency_injector/providers.pyx":4750
* return inspect.isawaitable(obj) * return inspect.isawaitable(obj)
* except AttributeError: * except AttributeError:
* return False # <<<<<<<<<<<<<< * return False # <<<<<<<<<<<<<<
@ -94657,9 +94657,9 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_31isawaitable(CYTHON_
goto __pyx_L5_except_error; goto __pyx_L5_except_error;
__pyx_L5_except_error:; __pyx_L5_except_error:;
/* "dependency_injector/providers.pyx":4750 /* "dependency_injector/providers.pyx":4747
* Return False for any object in Python 3.4 or below. * def isawaitable(obj):
* """ * """Check if object is a coroutine function."""
* try: # <<<<<<<<<<<<<< * try: # <<<<<<<<<<<<<<
* return inspect.isawaitable(obj) * return inspect.isawaitable(obj)
* except AttributeError: * except AttributeError:
@ -94687,8 +94687,8 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_31isawaitable(CYTHON_
* *
* *
* def isawaitable(obj): # <<<<<<<<<<<<<< * def isawaitable(obj): # <<<<<<<<<<<<<<
* """Check if object is a coroutine function. * """Check if object is a coroutine function."""
* * try:
*/ */
/* function exit code */ /* function exit code */
@ -94704,17 +94704,17 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_31isawaitable(CYTHON_
return __pyx_r; return __pyx_r;
} }
/* "dependency_injector/providers.pyx":4756 /* "dependency_injector/providers.pyx":4753
* *
* *
* def iscoroutinefunction(obj): # <<<<<<<<<<<<<< * def iscoroutinefunction(obj): # <<<<<<<<<<<<<<
* """Check if object is a coroutine function. * """Check if object is a coroutine function."""
* * try:
*/ */
/* Python wrapper */ /* Python wrapper */
static PyObject *__pyx_pw_19dependency_injector_9providers_34iscoroutinefunction(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/ static PyObject *__pyx_pw_19dependency_injector_9providers_34iscoroutinefunction(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static char __pyx_doc_19dependency_injector_9providers_33iscoroutinefunction[] = "Check if object is a coroutine function.\n\n Return False for any object in Python 3.4 or below.\n "; static char __pyx_doc_19dependency_injector_9providers_33iscoroutinefunction[] = "Check if object is a coroutine function.";
static PyMethodDef __pyx_mdef_19dependency_injector_9providers_34iscoroutinefunction = {"iscoroutinefunction", (PyCFunction)__pyx_pw_19dependency_injector_9providers_34iscoroutinefunction, METH_O, __pyx_doc_19dependency_injector_9providers_33iscoroutinefunction}; static PyMethodDef __pyx_mdef_19dependency_injector_9providers_34iscoroutinefunction = {"iscoroutinefunction", (PyCFunction)__pyx_pw_19dependency_injector_9providers_34iscoroutinefunction, METH_O, __pyx_doc_19dependency_injector_9providers_33iscoroutinefunction};
static PyObject *__pyx_pw_19dependency_injector_9providers_34iscoroutinefunction(PyObject *__pyx_self, PyObject *__pyx_v_obj) { static PyObject *__pyx_pw_19dependency_injector_9providers_34iscoroutinefunction(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
PyObject *__pyx_r = 0; PyObject *__pyx_r = 0;
@ -94742,9 +94742,9 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_33iscoroutinefunction
int __pyx_clineno = 0; int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("iscoroutinefunction", 0); __Pyx_RefNannySetupContext("iscoroutinefunction", 0);
/* "dependency_injector/providers.pyx":4761 /* "dependency_injector/providers.pyx":4755
* Return False for any object in Python 3.4 or below. * def iscoroutinefunction(obj):
* """ * """Check if object is a coroutine function."""
* try: # <<<<<<<<<<<<<< * try: # <<<<<<<<<<<<<<
* return inspect.iscoroutinefunction(obj) * return inspect.iscoroutinefunction(obj)
* except AttributeError: * except AttributeError:
@ -94758,17 +94758,17 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_33iscoroutinefunction
__Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_3);
/*try:*/ { /*try:*/ {
/* "dependency_injector/providers.pyx":4762 /* "dependency_injector/providers.pyx":4756
* """ * """Check if object is a coroutine function."""
* try: * try:
* return inspect.iscoroutinefunction(obj) # <<<<<<<<<<<<<< * return inspect.iscoroutinefunction(obj) # <<<<<<<<<<<<<<
* except AttributeError: * except AttributeError:
* return False * return False
*/ */
__Pyx_XDECREF(__pyx_r); __Pyx_XDECREF(__pyx_r);
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_inspect); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4762, __pyx_L3_error) __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_inspect); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4756, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_iscoroutinefunction); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4762, __pyx_L3_error) __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_iscoroutinefunction); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4756, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = NULL; __pyx_t_5 = NULL;
@ -94783,16 +94783,16 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_33iscoroutinefunction
} }
__pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_v_obj) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_obj); __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_v_obj) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_obj);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4762, __pyx_L3_error) if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4756, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_r = __pyx_t_4; __pyx_r = __pyx_t_4;
__pyx_t_4 = 0; __pyx_t_4 = 0;
goto __pyx_L7_try_return; goto __pyx_L7_try_return;
/* "dependency_injector/providers.pyx":4761 /* "dependency_injector/providers.pyx":4755
* Return False for any object in Python 3.4 or below. * def iscoroutinefunction(obj):
* """ * """Check if object is a coroutine function."""
* try: # <<<<<<<<<<<<<< * try: # <<<<<<<<<<<<<<
* return inspect.iscoroutinefunction(obj) * return inspect.iscoroutinefunction(obj)
* except AttributeError: * except AttributeError:
@ -94803,7 +94803,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_33iscoroutinefunction
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "dependency_injector/providers.pyx":4763 /* "dependency_injector/providers.pyx":4757
* try: * try:
* return inspect.iscoroutinefunction(obj) * return inspect.iscoroutinefunction(obj)
* except AttributeError: # <<<<<<<<<<<<<< * except AttributeError: # <<<<<<<<<<<<<<
@ -94813,12 +94813,12 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_33iscoroutinefunction
__pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError); __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
if (__pyx_t_7) { if (__pyx_t_7) {
__Pyx_AddTraceback("dependency_injector.providers.iscoroutinefunction", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_AddTraceback("dependency_injector.providers.iscoroutinefunction", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(1, 4763, __pyx_L5_except_error) if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(1, 4757, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_5);
/* "dependency_injector/providers.pyx":4764 /* "dependency_injector/providers.pyx":4758
* return inspect.iscoroutinefunction(obj) * return inspect.iscoroutinefunction(obj)
* except AttributeError: * except AttributeError:
* return False # <<<<<<<<<<<<<< * return False # <<<<<<<<<<<<<<
@ -94836,9 +94836,9 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_33iscoroutinefunction
goto __pyx_L5_except_error; goto __pyx_L5_except_error;
__pyx_L5_except_error:; __pyx_L5_except_error:;
/* "dependency_injector/providers.pyx":4761 /* "dependency_injector/providers.pyx":4755
* Return False for any object in Python 3.4 or below. * def iscoroutinefunction(obj):
* """ * """Check if object is a coroutine function."""
* try: # <<<<<<<<<<<<<< * try: # <<<<<<<<<<<<<<
* return inspect.iscoroutinefunction(obj) * return inspect.iscoroutinefunction(obj)
* except AttributeError: * except AttributeError:
@ -94862,12 +94862,12 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_33iscoroutinefunction
goto __pyx_L0; goto __pyx_L0;
} }
/* "dependency_injector/providers.pyx":4756 /* "dependency_injector/providers.pyx":4753
* *
* *
* def iscoroutinefunction(obj): # <<<<<<<<<<<<<< * def iscoroutinefunction(obj): # <<<<<<<<<<<<<<
* """Check if object is a coroutine function. * """Check if object is a coroutine function."""
* * try:
*/ */
/* function exit code */ /* function exit code */
@ -94883,17 +94883,17 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_33iscoroutinefunction
return __pyx_r; return __pyx_r;
} }
/* "dependency_injector/providers.pyx":4767 /* "dependency_injector/providers.pyx":4761
* *
* *
* def isasyncgenfunction(obj): # <<<<<<<<<<<<<< * def isasyncgenfunction(obj): # <<<<<<<<<<<<<<
* """Check if object is an asynchronous generator function. * """Check if object is an asynchronous generator function."""
* * try:
*/ */
/* Python wrapper */ /* Python wrapper */
static PyObject *__pyx_pw_19dependency_injector_9providers_36isasyncgenfunction(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/ static PyObject *__pyx_pw_19dependency_injector_9providers_36isasyncgenfunction(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
static char __pyx_doc_19dependency_injector_9providers_35isasyncgenfunction[] = "Check if object is an asynchronous generator function.\n\n Return False for any object in Python 3.4 or below.\n "; static char __pyx_doc_19dependency_injector_9providers_35isasyncgenfunction[] = "Check if object is an asynchronous generator function.";
static PyMethodDef __pyx_mdef_19dependency_injector_9providers_36isasyncgenfunction = {"isasyncgenfunction", (PyCFunction)__pyx_pw_19dependency_injector_9providers_36isasyncgenfunction, METH_O, __pyx_doc_19dependency_injector_9providers_35isasyncgenfunction}; static PyMethodDef __pyx_mdef_19dependency_injector_9providers_36isasyncgenfunction = {"isasyncgenfunction", (PyCFunction)__pyx_pw_19dependency_injector_9providers_36isasyncgenfunction, METH_O, __pyx_doc_19dependency_injector_9providers_35isasyncgenfunction};
static PyObject *__pyx_pw_19dependency_injector_9providers_36isasyncgenfunction(PyObject *__pyx_self, PyObject *__pyx_v_obj) { static PyObject *__pyx_pw_19dependency_injector_9providers_36isasyncgenfunction(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
PyObject *__pyx_r = 0; PyObject *__pyx_r = 0;
@ -94921,9 +94921,9 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_35isasyncgenfunction(
int __pyx_clineno = 0; int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("isasyncgenfunction", 0); __Pyx_RefNannySetupContext("isasyncgenfunction", 0);
/* "dependency_injector/providers.pyx":4772 /* "dependency_injector/providers.pyx":4763
* Return False for any object in Python 3.4 or below. * def isasyncgenfunction(obj):
* """ * """Check if object is an asynchronous generator function."""
* try: # <<<<<<<<<<<<<< * try: # <<<<<<<<<<<<<<
* return inspect.isasyncgenfunction(obj) * return inspect.isasyncgenfunction(obj)
* except AttributeError: * except AttributeError:
@ -94937,17 +94937,17 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_35isasyncgenfunction(
__Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_3);
/*try:*/ { /*try:*/ {
/* "dependency_injector/providers.pyx":4773 /* "dependency_injector/providers.pyx":4764
* """ * """Check if object is an asynchronous generator function."""
* try: * try:
* return inspect.isasyncgenfunction(obj) # <<<<<<<<<<<<<< * return inspect.isasyncgenfunction(obj) # <<<<<<<<<<<<<<
* except AttributeError: * except AttributeError:
* return False * return False
*/ */
__Pyx_XDECREF(__pyx_r); __Pyx_XDECREF(__pyx_r);
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_inspect); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4773, __pyx_L3_error) __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_inspect); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4764, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_isasyncgenfunction); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4773, __pyx_L3_error) __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_isasyncgenfunction); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4764, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = NULL; __pyx_t_5 = NULL;
@ -94962,16 +94962,16 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_35isasyncgenfunction(
} }
__pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_v_obj) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_obj); __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_v_obj) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_obj);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4773, __pyx_L3_error) if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4764, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_r = __pyx_t_4; __pyx_r = __pyx_t_4;
__pyx_t_4 = 0; __pyx_t_4 = 0;
goto __pyx_L7_try_return; goto __pyx_L7_try_return;
/* "dependency_injector/providers.pyx":4772 /* "dependency_injector/providers.pyx":4763
* Return False for any object in Python 3.4 or below. * def isasyncgenfunction(obj):
* """ * """Check if object is an asynchronous generator function."""
* try: # <<<<<<<<<<<<<< * try: # <<<<<<<<<<<<<<
* return inspect.isasyncgenfunction(obj) * return inspect.isasyncgenfunction(obj)
* except AttributeError: * except AttributeError:
@ -94982,7 +94982,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_35isasyncgenfunction(
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "dependency_injector/providers.pyx":4774 /* "dependency_injector/providers.pyx":4765
* try: * try:
* return inspect.isasyncgenfunction(obj) * return inspect.isasyncgenfunction(obj)
* except AttributeError: # <<<<<<<<<<<<<< * except AttributeError: # <<<<<<<<<<<<<<
@ -94992,12 +94992,12 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_35isasyncgenfunction(
__pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError); __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
if (__pyx_t_7) { if (__pyx_t_7) {
__Pyx_AddTraceback("dependency_injector.providers.isasyncgenfunction", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_AddTraceback("dependency_injector.providers.isasyncgenfunction", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(1, 4774, __pyx_L5_except_error) if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(1, 4765, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_5);
/* "dependency_injector/providers.pyx":4775 /* "dependency_injector/providers.pyx":4766
* return inspect.isasyncgenfunction(obj) * return inspect.isasyncgenfunction(obj)
* except AttributeError: * except AttributeError:
* return False # <<<<<<<<<<<<<< * return False # <<<<<<<<<<<<<<
@ -95015,9 +95015,9 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_35isasyncgenfunction(
goto __pyx_L5_except_error; goto __pyx_L5_except_error;
__pyx_L5_except_error:; __pyx_L5_except_error:;
/* "dependency_injector/providers.pyx":4772 /* "dependency_injector/providers.pyx":4763
* Return False for any object in Python 3.4 or below. * def isasyncgenfunction(obj):
* """ * """Check if object is an asynchronous generator function."""
* try: # <<<<<<<<<<<<<< * try: # <<<<<<<<<<<<<<
* return inspect.isasyncgenfunction(obj) * return inspect.isasyncgenfunction(obj)
* except AttributeError: * except AttributeError:
@ -95041,12 +95041,12 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_35isasyncgenfunction(
goto __pyx_L0; goto __pyx_L0;
} }
/* "dependency_injector/providers.pyx":4767 /* "dependency_injector/providers.pyx":4761
* *
* *
* def isasyncgenfunction(obj): # <<<<<<<<<<<<<< * def isasyncgenfunction(obj): # <<<<<<<<<<<<<<
* """Check if object is an asynchronous generator function. * """Check if object is an asynchronous generator function."""
* * try:
*/ */
/* function exit code */ /* function exit code */
@ -95062,7 +95062,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_35isasyncgenfunction(
return __pyx_r; return __pyx_r;
} }
/* "dependency_injector/providers.pyx":4778 /* "dependency_injector/providers.pyx":4769
* *
* *
* cpdef _copy_parent(object from_, object to, dict memo): # <<<<<<<<<<<<<< * cpdef _copy_parent(object from_, object to, dict memo): # <<<<<<<<<<<<<<
@ -95086,14 +95086,14 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_parent(PyObject
int __pyx_clineno = 0; int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_copy_parent", 0); __Pyx_RefNannySetupContext("_copy_parent", 0);
/* "dependency_injector/providers.pyx":4782 /* "dependency_injector/providers.pyx":4773
* copied_parent = ( * copied_parent = (
* deepcopy(from_.parent, memo) * deepcopy(from_.parent, memo)
* if is_provider(from_.parent) or is_container_instance(from_.parent) # <<<<<<<<<<<<<< * if is_provider(from_.parent) or is_container_instance(from_.parent) # <<<<<<<<<<<<<<
* else from_.parent * else from_.parent
* ) * )
*/ */
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4782, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4773, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = (__pyx_f_19dependency_injector_9providers_is_provider(__pyx_t_3, 0) != 0); __pyx_t_4 = (__pyx_f_19dependency_injector_9providers_is_provider(__pyx_t_3, 0) != 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@ -95102,7 +95102,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_parent(PyObject
__pyx_t_2 = __pyx_t_4; __pyx_t_2 = __pyx_t_4;
goto __pyx_L3_bool_binop_done; goto __pyx_L3_bool_binop_done;
} }
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4782, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4773, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = (__pyx_f_19dependency_injector_9providers_is_container_instance(__pyx_t_3, 0) != 0); __pyx_t_4 = (__pyx_f_19dependency_injector_9providers_is_container_instance(__pyx_t_3, 0) != 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@ -95110,32 +95110,32 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_parent(PyObject
__pyx_L3_bool_binop_done:; __pyx_L3_bool_binop_done:;
if (__pyx_t_2) { if (__pyx_t_2) {
/* "dependency_injector/providers.pyx":4781 /* "dependency_injector/providers.pyx":4772
* """Copy and assign provider parent.""" * """Copy and assign provider parent."""
* copied_parent = ( * copied_parent = (
* deepcopy(from_.parent, memo) # <<<<<<<<<<<<<< * deepcopy(from_.parent, memo) # <<<<<<<<<<<<<<
* if is_provider(from_.parent) or is_container_instance(from_.parent) * if is_provider(from_.parent) or is_container_instance(from_.parent)
* else from_.parent * else from_.parent
*/ */
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4781, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4772, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_3);
__pyx_t_6.__pyx_n = 1; __pyx_t_6.__pyx_n = 1;
__pyx_t_6.memo = __pyx_v_memo; __pyx_t_6.memo = __pyx_v_memo;
__pyx_t_5 = __pyx_f_19dependency_injector_9providers_deepcopy(__pyx_t_3, 0, &__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4781, __pyx_L1_error) __pyx_t_5 = __pyx_f_19dependency_injector_9providers_deepcopy(__pyx_t_3, 0, &__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4772, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_1 = __pyx_t_5; __pyx_t_1 = __pyx_t_5;
__pyx_t_5 = 0; __pyx_t_5 = 0;
} else { } else {
/* "dependency_injector/providers.pyx":4783 /* "dependency_injector/providers.pyx":4774
* deepcopy(from_.parent, memo) * deepcopy(from_.parent, memo)
* if is_provider(from_.parent) or is_container_instance(from_.parent) * if is_provider(from_.parent) or is_container_instance(from_.parent)
* else from_.parent # <<<<<<<<<<<<<< * else from_.parent # <<<<<<<<<<<<<<
* ) * )
* to.assign_parent(copied_parent) * to.assign_parent(copied_parent)
*/ */
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4783, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4774, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = __pyx_t_5; __pyx_t_1 = __pyx_t_5;
__pyx_t_5 = 0; __pyx_t_5 = 0;
@ -95143,14 +95143,14 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_parent(PyObject
__pyx_v_copied_parent = __pyx_t_1; __pyx_v_copied_parent = __pyx_t_1;
__pyx_t_1 = 0; __pyx_t_1 = 0;
/* "dependency_injector/providers.pyx":4785 /* "dependency_injector/providers.pyx":4776
* else from_.parent * else from_.parent
* ) * )
* to.assign_parent(copied_parent) # <<<<<<<<<<<<<< * to.assign_parent(copied_parent) # <<<<<<<<<<<<<<
* *
* *
*/ */
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_to, __pyx_n_s_assign_parent); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4785, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_to, __pyx_n_s_assign_parent); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4776, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_5);
__pyx_t_3 = NULL; __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@ -95164,12 +95164,12 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_parent(PyObject
} }
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_v_copied_parent) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_copied_parent); __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_v_copied_parent) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_copied_parent);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4785, __pyx_L1_error) if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4776, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "dependency_injector/providers.pyx":4778 /* "dependency_injector/providers.pyx":4769
* *
* *
* cpdef _copy_parent(object from_, object to, dict memo): # <<<<<<<<<<<<<< * cpdef _copy_parent(object from_, object to, dict memo): # <<<<<<<<<<<<<<
@ -95231,17 +95231,17 @@ static PyObject *__pyx_pw_19dependency_injector_9providers_38_copy_parent(PyObje
case 1: case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_to)) != 0)) kw_args--; if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_to)) != 0)) kw_args--;
else { else {
__Pyx_RaiseArgtupleInvalid("_copy_parent", 1, 3, 3, 1); __PYX_ERR(1, 4778, __pyx_L3_error) __Pyx_RaiseArgtupleInvalid("_copy_parent", 1, 3, 3, 1); __PYX_ERR(1, 4769, __pyx_L3_error)
} }
CYTHON_FALLTHROUGH; CYTHON_FALLTHROUGH;
case 2: case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_memo)) != 0)) kw_args--; if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_memo)) != 0)) kw_args--;
else { else {
__Pyx_RaiseArgtupleInvalid("_copy_parent", 1, 3, 3, 2); __PYX_ERR(1, 4778, __pyx_L3_error) __Pyx_RaiseArgtupleInvalid("_copy_parent", 1, 3, 3, 2); __PYX_ERR(1, 4769, __pyx_L3_error)
} }
} }
if (unlikely(kw_args > 0)) { if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_copy_parent") < 0)) __PYX_ERR(1, 4778, __pyx_L3_error) if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_copy_parent") < 0)) __PYX_ERR(1, 4769, __pyx_L3_error)
} }
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) { } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error; goto __pyx_L5_argtuple_error;
@ -95256,13 +95256,13 @@ static PyObject *__pyx_pw_19dependency_injector_9providers_38_copy_parent(PyObje
} }
goto __pyx_L4_argument_unpacking_done; goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:; __pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_copy_parent", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 4778, __pyx_L3_error) __Pyx_RaiseArgtupleInvalid("_copy_parent", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 4769, __pyx_L3_error)
__pyx_L3_error:; __pyx_L3_error:;
__Pyx_AddTraceback("dependency_injector.providers._copy_parent", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_AddTraceback("dependency_injector.providers._copy_parent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext(); __Pyx_RefNannyFinishContext();
return NULL; return NULL;
__pyx_L4_argument_unpacking_done:; __pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_memo), (&PyDict_Type), 1, "memo", 1))) __PYX_ERR(1, 4778, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_memo), (&PyDict_Type), 1, "memo", 1))) __PYX_ERR(1, 4769, __pyx_L1_error)
__pyx_r = __pyx_pf_19dependency_injector_9providers_37_copy_parent(__pyx_self, __pyx_v_from_, __pyx_v_to, __pyx_v_memo); __pyx_r = __pyx_pf_19dependency_injector_9providers_37_copy_parent(__pyx_self, __pyx_v_from_, __pyx_v_to, __pyx_v_memo);
/* function exit code */ /* function exit code */
@ -95283,7 +95283,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_37_copy_parent(CYTHON
int __pyx_clineno = 0; int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_copy_parent", 0); __Pyx_RefNannySetupContext("_copy_parent", 0);
__Pyx_XDECREF(__pyx_r); __Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __pyx_f_19dependency_injector_9providers__copy_parent(__pyx_v_from_, __pyx_v_to, __pyx_v_memo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4778, __pyx_L1_error) __pyx_t_1 = __pyx_f_19dependency_injector_9providers__copy_parent(__pyx_v_from_, __pyx_v_to, __pyx_v_memo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4769, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1; __pyx_r = __pyx_t_1;
__pyx_t_1 = 0; __pyx_t_1 = 0;
@ -95300,7 +95300,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_37_copy_parent(CYTHON
return __pyx_r; return __pyx_r;
} }
/* "dependency_injector/providers.pyx":4788 /* "dependency_injector/providers.pyx":4779
* *
* *
* cpdef object _memorized_duplicate(object instance, dict memo): # <<<<<<<<<<<<<< * cpdef object _memorized_duplicate(object instance, dict memo): # <<<<<<<<<<<<<<
@ -95321,14 +95321,14 @@ static PyObject *__pyx_f_19dependency_injector_9providers__memorized_duplicate(P
int __pyx_clineno = 0; int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_memorized_duplicate", 0); __Pyx_RefNannySetupContext("_memorized_duplicate", 0);
/* "dependency_injector/providers.pyx":4789 /* "dependency_injector/providers.pyx":4780
* *
* cpdef object _memorized_duplicate(object instance, dict memo): * cpdef object _memorized_duplicate(object instance, dict memo):
* copied = instance.__class__() # <<<<<<<<<<<<<< * copied = instance.__class__() # <<<<<<<<<<<<<<
* memo[id(instance)] = copied * memo[id(instance)] = copied
* return copied * return copied
*/ */
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4789, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4780, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL; __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@ -95342,13 +95342,13 @@ static PyObject *__pyx_f_19dependency_injector_9providers__memorized_duplicate(P
} }
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4789, __pyx_L1_error) if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4780, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_copied = __pyx_t_1; __pyx_v_copied = __pyx_t_1;
__pyx_t_1 = 0; __pyx_t_1 = 0;
/* "dependency_injector/providers.pyx":4790 /* "dependency_injector/providers.pyx":4781
* cpdef object _memorized_duplicate(object instance, dict memo): * cpdef object _memorized_duplicate(object instance, dict memo):
* copied = instance.__class__() * copied = instance.__class__()
* memo[id(instance)] = copied # <<<<<<<<<<<<<< * memo[id(instance)] = copied # <<<<<<<<<<<<<<
@ -95357,14 +95357,14 @@ static PyObject *__pyx_f_19dependency_injector_9providers__memorized_duplicate(P
*/ */
if (unlikely(__pyx_v_memo == Py_None)) { if (unlikely(__pyx_v_memo == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(1, 4790, __pyx_L1_error) __PYX_ERR(1, 4781, __pyx_L1_error)
} }
__pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_instance); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4790, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_instance); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4781, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_1);
if (unlikely(PyDict_SetItem(__pyx_v_memo, __pyx_t_1, __pyx_v_copied) < 0)) __PYX_ERR(1, 4790, __pyx_L1_error) if (unlikely(PyDict_SetItem(__pyx_v_memo, __pyx_t_1, __pyx_v_copied) < 0)) __PYX_ERR(1, 4781, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "dependency_injector/providers.pyx":4791 /* "dependency_injector/providers.pyx":4782
* copied = instance.__class__() * copied = instance.__class__()
* memo[id(instance)] = copied * memo[id(instance)] = copied
* return copied # <<<<<<<<<<<<<< * return copied # <<<<<<<<<<<<<<
@ -95376,7 +95376,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers__memorized_duplicate(P
__pyx_r = __pyx_v_copied; __pyx_r = __pyx_v_copied;
goto __pyx_L0; goto __pyx_L0;
/* "dependency_injector/providers.pyx":4788 /* "dependency_injector/providers.pyx":4779
* *
* *
* cpdef object _memorized_duplicate(object instance, dict memo): # <<<<<<<<<<<<<< * cpdef object _memorized_duplicate(object instance, dict memo): # <<<<<<<<<<<<<<
@ -95432,11 +95432,11 @@ static PyObject *__pyx_pw_19dependency_injector_9providers_40_memorized_duplicat
case 1: case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_memo)) != 0)) kw_args--; if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_memo)) != 0)) kw_args--;
else { else {
__Pyx_RaiseArgtupleInvalid("_memorized_duplicate", 1, 2, 2, 1); __PYX_ERR(1, 4788, __pyx_L3_error) __Pyx_RaiseArgtupleInvalid("_memorized_duplicate", 1, 2, 2, 1); __PYX_ERR(1, 4779, __pyx_L3_error)
} }
} }
if (unlikely(kw_args > 0)) { if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_memorized_duplicate") < 0)) __PYX_ERR(1, 4788, __pyx_L3_error) if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_memorized_duplicate") < 0)) __PYX_ERR(1, 4779, __pyx_L3_error)
} }
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) { } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error; goto __pyx_L5_argtuple_error;
@ -95449,13 +95449,13 @@ static PyObject *__pyx_pw_19dependency_injector_9providers_40_memorized_duplicat
} }
goto __pyx_L4_argument_unpacking_done; goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:; __pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_memorized_duplicate", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 4788, __pyx_L3_error) __Pyx_RaiseArgtupleInvalid("_memorized_duplicate", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 4779, __pyx_L3_error)
__pyx_L3_error:; __pyx_L3_error:;
__Pyx_AddTraceback("dependency_injector.providers._memorized_duplicate", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_AddTraceback("dependency_injector.providers._memorized_duplicate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext(); __Pyx_RefNannyFinishContext();
return NULL; return NULL;
__pyx_L4_argument_unpacking_done:; __pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_memo), (&PyDict_Type), 1, "memo", 1))) __PYX_ERR(1, 4788, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_memo), (&PyDict_Type), 1, "memo", 1))) __PYX_ERR(1, 4779, __pyx_L1_error)
__pyx_r = __pyx_pf_19dependency_injector_9providers_39_memorized_duplicate(__pyx_self, __pyx_v_instance, __pyx_v_memo); __pyx_r = __pyx_pf_19dependency_injector_9providers_39_memorized_duplicate(__pyx_self, __pyx_v_instance, __pyx_v_memo);
/* function exit code */ /* function exit code */
@ -95476,7 +95476,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_39_memorized_duplicat
int __pyx_clineno = 0; int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_memorized_duplicate", 0); __Pyx_RefNannySetupContext("_memorized_duplicate", 0);
__Pyx_XDECREF(__pyx_r); __Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __pyx_f_19dependency_injector_9providers__memorized_duplicate(__pyx_v_instance, __pyx_v_memo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4788, __pyx_L1_error) __pyx_t_1 = __pyx_f_19dependency_injector_9providers__memorized_duplicate(__pyx_v_instance, __pyx_v_memo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1; __pyx_r = __pyx_t_1;
__pyx_t_1 = 0; __pyx_t_1 = 0;
@ -95493,7 +95493,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_39_memorized_duplicat
return __pyx_r; return __pyx_r;
} }
/* "dependency_injector/providers.pyx":4794 /* "dependency_injector/providers.pyx":4785
* *
* *
* cpdef object _copy_if_provider(object instance, dict memo): # <<<<<<<<<<<<<< * cpdef object _copy_if_provider(object instance, dict memo): # <<<<<<<<<<<<<<
@ -95513,7 +95513,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_if_provider(PyOb
int __pyx_clineno = 0; int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_copy_if_provider", 0); __Pyx_RefNannySetupContext("_copy_if_provider", 0);
/* "dependency_injector/providers.pyx":4795 /* "dependency_injector/providers.pyx":4786
* *
* cpdef object _copy_if_provider(object instance, dict memo): * cpdef object _copy_if_provider(object instance, dict memo):
* if not is_provider(instance): # <<<<<<<<<<<<<< * if not is_provider(instance): # <<<<<<<<<<<<<<
@ -95523,7 +95523,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_if_provider(PyOb
__pyx_t_1 = ((!(__pyx_f_19dependency_injector_9providers_is_provider(__pyx_v_instance, 0) != 0)) != 0); __pyx_t_1 = ((!(__pyx_f_19dependency_injector_9providers_is_provider(__pyx_v_instance, 0) != 0)) != 0);
if (__pyx_t_1) { if (__pyx_t_1) {
/* "dependency_injector/providers.pyx":4796 /* "dependency_injector/providers.pyx":4787
* cpdef object _copy_if_provider(object instance, dict memo): * cpdef object _copy_if_provider(object instance, dict memo):
* if not is_provider(instance): * if not is_provider(instance):
* return instance # <<<<<<<<<<<<<< * return instance # <<<<<<<<<<<<<<
@ -95535,7 +95535,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_if_provider(PyOb
__pyx_r = __pyx_v_instance; __pyx_r = __pyx_v_instance;
goto __pyx_L0; goto __pyx_L0;
/* "dependency_injector/providers.pyx":4795 /* "dependency_injector/providers.pyx":4786
* *
* cpdef object _copy_if_provider(object instance, dict memo): * cpdef object _copy_if_provider(object instance, dict memo):
* if not is_provider(instance): # <<<<<<<<<<<<<< * if not is_provider(instance): # <<<<<<<<<<<<<<
@ -95544,7 +95544,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_if_provider(PyOb
*/ */
} }
/* "dependency_injector/providers.pyx":4797 /* "dependency_injector/providers.pyx":4788
* if not is_provider(instance): * if not is_provider(instance):
* return instance * return instance
* return deepcopy(instance, memo) # <<<<<<<<<<<<<< * return deepcopy(instance, memo) # <<<<<<<<<<<<<<
@ -95554,13 +95554,13 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_if_provider(PyOb
__Pyx_XDECREF(__pyx_r); __Pyx_XDECREF(__pyx_r);
__pyx_t_3.__pyx_n = 1; __pyx_t_3.__pyx_n = 1;
__pyx_t_3.memo = __pyx_v_memo; __pyx_t_3.memo = __pyx_v_memo;
__pyx_t_2 = __pyx_f_19dependency_injector_9providers_deepcopy(__pyx_v_instance, 0, &__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4797, __pyx_L1_error) __pyx_t_2 = __pyx_f_19dependency_injector_9providers_deepcopy(__pyx_v_instance, 0, &__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4788, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2; __pyx_r = __pyx_t_2;
__pyx_t_2 = 0; __pyx_t_2 = 0;
goto __pyx_L0; goto __pyx_L0;
/* "dependency_injector/providers.pyx":4794 /* "dependency_injector/providers.pyx":4785
* *
* *
* cpdef object _copy_if_provider(object instance, dict memo): # <<<<<<<<<<<<<< * cpdef object _copy_if_provider(object instance, dict memo): # <<<<<<<<<<<<<<
@ -95613,11 +95613,11 @@ static PyObject *__pyx_pw_19dependency_injector_9providers_42_copy_if_provider(P
case 1: case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_memo)) != 0)) kw_args--; if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_memo)) != 0)) kw_args--;
else { else {
__Pyx_RaiseArgtupleInvalid("_copy_if_provider", 1, 2, 2, 1); __PYX_ERR(1, 4794, __pyx_L3_error) __Pyx_RaiseArgtupleInvalid("_copy_if_provider", 1, 2, 2, 1); __PYX_ERR(1, 4785, __pyx_L3_error)
} }
} }
if (unlikely(kw_args > 0)) { if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_copy_if_provider") < 0)) __PYX_ERR(1, 4794, __pyx_L3_error) if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_copy_if_provider") < 0)) __PYX_ERR(1, 4785, __pyx_L3_error)
} }
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) { } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error; goto __pyx_L5_argtuple_error;
@ -95630,13 +95630,13 @@ static PyObject *__pyx_pw_19dependency_injector_9providers_42_copy_if_provider(P
} }
goto __pyx_L4_argument_unpacking_done; goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:; __pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_copy_if_provider", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 4794, __pyx_L3_error) __Pyx_RaiseArgtupleInvalid("_copy_if_provider", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 4785, __pyx_L3_error)
__pyx_L3_error:; __pyx_L3_error:;
__Pyx_AddTraceback("dependency_injector.providers._copy_if_provider", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_AddTraceback("dependency_injector.providers._copy_if_provider", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext(); __Pyx_RefNannyFinishContext();
return NULL; return NULL;
__pyx_L4_argument_unpacking_done:; __pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_memo), (&PyDict_Type), 1, "memo", 1))) __PYX_ERR(1, 4794, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_memo), (&PyDict_Type), 1, "memo", 1))) __PYX_ERR(1, 4785, __pyx_L1_error)
__pyx_r = __pyx_pf_19dependency_injector_9providers_41_copy_if_provider(__pyx_self, __pyx_v_instance, __pyx_v_memo); __pyx_r = __pyx_pf_19dependency_injector_9providers_41_copy_if_provider(__pyx_self, __pyx_v_instance, __pyx_v_memo);
/* function exit code */ /* function exit code */
@ -95657,7 +95657,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_41_copy_if_provider(C
int __pyx_clineno = 0; int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_copy_if_provider", 0); __Pyx_RefNannySetupContext("_copy_if_provider", 0);
__Pyx_XDECREF(__pyx_r); __Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __pyx_f_19dependency_injector_9providers__copy_if_provider(__pyx_v_instance, __pyx_v_memo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4794, __pyx_L1_error) __pyx_t_1 = __pyx_f_19dependency_injector_9providers__copy_if_provider(__pyx_v_instance, __pyx_v_memo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4785, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1; __pyx_r = __pyx_t_1;
__pyx_t_1 = 0; __pyx_t_1 = 0;
@ -95674,7 +95674,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_41_copy_if_provider(C
return __pyx_r; return __pyx_r;
} }
/* "dependency_injector/providers.pyx":4800 /* "dependency_injector/providers.pyx":4791
* *
* *
* cpdef str _class_qualname(object instance): # <<<<<<<<<<<<<< * cpdef str _class_qualname(object instance): # <<<<<<<<<<<<<<
@ -95697,49 +95697,49 @@ static PyObject *__pyx_f_19dependency_injector_9providers__class_qualname(PyObje
int __pyx_clineno = 0; int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_class_qualname", 0); __Pyx_RefNannySetupContext("_class_qualname", 0);
/* "dependency_injector/providers.pyx":4801 /* "dependency_injector/providers.pyx":4792
* *
* cpdef str _class_qualname(object instance): * cpdef str _class_qualname(object instance):
* name = getattr(instance.__class__, '__qualname__', None) # <<<<<<<<<<<<<< * name = getattr(instance.__class__, '__qualname__', None) # <<<<<<<<<<<<<<
* if not name: * if not name:
* name = '.'.join((instance.__class__.__module__, instance.__class__.__name__)) * name = '.'.join((instance.__class__.__module__, instance.__class__.__name__))
*/ */
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4801, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4792, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __Pyx_GetAttr3(__pyx_t_1, __pyx_n_s_qualname, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4801, __pyx_L1_error) __pyx_t_2 = __Pyx_GetAttr3(__pyx_t_1, __pyx_n_s_qualname, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4792, __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_v_name = __pyx_t_2; __pyx_v_name = __pyx_t_2;
__pyx_t_2 = 0; __pyx_t_2 = 0;
/* "dependency_injector/providers.pyx":4802 /* "dependency_injector/providers.pyx":4793
* cpdef str _class_qualname(object instance): * cpdef str _class_qualname(object instance):
* name = getattr(instance.__class__, '__qualname__', None) * name = getattr(instance.__class__, '__qualname__', None)
* if not name: # <<<<<<<<<<<<<< * if not name: # <<<<<<<<<<<<<<
* name = '.'.join((instance.__class__.__module__, instance.__class__.__name__)) * name = '.'.join((instance.__class__.__module__, instance.__class__.__name__))
* return name * return name
*/ */
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_name); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 4802, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_name); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 4793, __pyx_L1_error)
__pyx_t_4 = ((!__pyx_t_3) != 0); __pyx_t_4 = ((!__pyx_t_3) != 0);
if (__pyx_t_4) { if (__pyx_t_4) {
/* "dependency_injector/providers.pyx":4803 /* "dependency_injector/providers.pyx":4794
* name = getattr(instance.__class__, '__qualname__', None) * name = getattr(instance.__class__, '__qualname__', None)
* if not name: * if not name:
* name = '.'.join((instance.__class__.__module__, instance.__class__.__name__)) # <<<<<<<<<<<<<< * name = '.'.join((instance.__class__.__module__, instance.__class__.__name__)) # <<<<<<<<<<<<<<
* return name * return name
*/ */
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4803, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4794, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_module); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4803, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_module); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4794, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4803, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4794, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_2);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4803, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4794, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4803, __pyx_L1_error) __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4794, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
@ -95747,13 +95747,13 @@ static PyObject *__pyx_f_19dependency_injector_9providers__class_qualname(PyObje
PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
__pyx_t_1 = 0; __pyx_t_1 = 0;
__pyx_t_5 = 0; __pyx_t_5 = 0;
__pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s__6, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4803, __pyx_L1_error) __pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s__6, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4794, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF_SET(__pyx_v_name, __pyx_t_5); __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_5);
__pyx_t_5 = 0; __pyx_t_5 = 0;
/* "dependency_injector/providers.pyx":4802 /* "dependency_injector/providers.pyx":4793
* cpdef str _class_qualname(object instance): * cpdef str _class_qualname(object instance):
* name = getattr(instance.__class__, '__qualname__', None) * name = getattr(instance.__class__, '__qualname__', None)
* if not name: # <<<<<<<<<<<<<< * if not name: # <<<<<<<<<<<<<<
@ -95762,18 +95762,18 @@ static PyObject *__pyx_f_19dependency_injector_9providers__class_qualname(PyObje
*/ */
} }
/* "dependency_injector/providers.pyx":4804 /* "dependency_injector/providers.pyx":4795
* if not name: * if not name:
* name = '.'.join((instance.__class__.__module__, instance.__class__.__name__)) * name = '.'.join((instance.__class__.__module__, instance.__class__.__name__))
* return name # <<<<<<<<<<<<<< * return name # <<<<<<<<<<<<<<
*/ */
__Pyx_XDECREF(__pyx_r); __Pyx_XDECREF(__pyx_r);
if (!(likely(PyString_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(1, 4804, __pyx_L1_error) if (!(likely(PyString_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(1, 4795, __pyx_L1_error)
__Pyx_INCREF(__pyx_v_name); __Pyx_INCREF(__pyx_v_name);
__pyx_r = ((PyObject*)__pyx_v_name); __pyx_r = ((PyObject*)__pyx_v_name);
goto __pyx_L0; goto __pyx_L0;
/* "dependency_injector/providers.pyx":4800 /* "dependency_injector/providers.pyx":4791
* *
* *
* cpdef str _class_qualname(object instance): # <<<<<<<<<<<<<< * cpdef str _class_qualname(object instance): # <<<<<<<<<<<<<<
@ -95817,7 +95817,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_43_class_qualname(CYT
int __pyx_clineno = 0; int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_class_qualname", 0); __Pyx_RefNannySetupContext("_class_qualname", 0);
__Pyx_XDECREF(__pyx_r); __Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __pyx_f_19dependency_injector_9providers__class_qualname(__pyx_v_instance, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4800, __pyx_L1_error) __pyx_t_1 = __pyx_f_19dependency_injector_9providers__class_qualname(__pyx_v_instance, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4791, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1; __pyx_r = __pyx_t_1;
__pyx_t_1 = 0; __pyx_t_1 = 0;
@ -134301,37 +134301,37 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
* *
* *
* def isawaitable(obj): # <<<<<<<<<<<<<< * def isawaitable(obj): # <<<<<<<<<<<<<<
* """Check if object is a coroutine function. * """Check if object is a coroutine function."""
* * try:
*/ */
__pyx_tuple__60 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(1, 4745, __pyx_L1_error) __pyx_tuple__60 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(1, 4745, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__60); __Pyx_GOTREF(__pyx_tuple__60);
__Pyx_GIVEREF(__pyx_tuple__60); __Pyx_GIVEREF(__pyx_tuple__60);
__pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dependency_injector_provider, __pyx_n_s_isawaitable, 4745, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(1, 4745, __pyx_L1_error) __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dependency_injector_provider, __pyx_n_s_isawaitable, 4745, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(1, 4745, __pyx_L1_error)
/* "dependency_injector/providers.pyx":4756 /* "dependency_injector/providers.pyx":4753
* *
* *
* def iscoroutinefunction(obj): # <<<<<<<<<<<<<< * def iscoroutinefunction(obj): # <<<<<<<<<<<<<<
* """Check if object is a coroutine function. * """Check if object is a coroutine function."""
* * try:
*/ */
__pyx_tuple__62 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(1, 4756, __pyx_L1_error) __pyx_tuple__62 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(1, 4753, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__62); __Pyx_GOTREF(__pyx_tuple__62);
__Pyx_GIVEREF(__pyx_tuple__62); __Pyx_GIVEREF(__pyx_tuple__62);
__pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dependency_injector_provider, __pyx_n_s_iscoroutinefunction, 4756, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(1, 4756, __pyx_L1_error) __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dependency_injector_provider, __pyx_n_s_iscoroutinefunction, 4753, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(1, 4753, __pyx_L1_error)
/* "dependency_injector/providers.pyx":4767 /* "dependency_injector/providers.pyx":4761
* *
* *
* def isasyncgenfunction(obj): # <<<<<<<<<<<<<< * def isasyncgenfunction(obj): # <<<<<<<<<<<<<<
* """Check if object is an asynchronous generator function. * """Check if object is an asynchronous generator function."""
* * try:
*/ */
__pyx_tuple__64 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(1, 4767, __pyx_L1_error) __pyx_tuple__64 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(1, 4761, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__64); __Pyx_GOTREF(__pyx_tuple__64);
__Pyx_GIVEREF(__pyx_tuple__64); __Pyx_GIVEREF(__pyx_tuple__64);
__pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dependency_injector_provider, __pyx_n_s_isasyncgenfunction, 4767, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(1, 4767, __pyx_L1_error) __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dependency_injector_provider, __pyx_n_s_isasyncgenfunction, 4761, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(1, 4761, __pyx_L1_error)
/* "(tree fragment)":1 /* "(tree fragment)":1
* def __pyx_unpickle_Provider(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< * def __pyx_unpickle_Provider(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
@ -137832,36 +137832,36 @@ if (!__Pyx_RefNanny) {
* *
* *
* def isawaitable(obj): # <<<<<<<<<<<<<< * def isawaitable(obj): # <<<<<<<<<<<<<<
* """Check if object is a coroutine function. * """Check if object is a coroutine function."""
* * try:
*/ */
__pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_19dependency_injector_9providers_32isawaitable, NULL, __pyx_n_s_dependency_injector_providers); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4745, __pyx_L1_error) __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_19dependency_injector_9providers_32isawaitable, NULL, __pyx_n_s_dependency_injector_providers); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4745, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_1);
if (PyDict_SetItem(__pyx_d, __pyx_n_s_isawaitable, __pyx_t_1) < 0) __PYX_ERR(1, 4745, __pyx_L1_error) if (PyDict_SetItem(__pyx_d, __pyx_n_s_isawaitable, __pyx_t_1) < 0) __PYX_ERR(1, 4745, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "dependency_injector/providers.pyx":4756 /* "dependency_injector/providers.pyx":4753
* *
* *
* def iscoroutinefunction(obj): # <<<<<<<<<<<<<< * def iscoroutinefunction(obj): # <<<<<<<<<<<<<<
* """Check if object is a coroutine function. * """Check if object is a coroutine function."""
* * try:
*/ */
__pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_19dependency_injector_9providers_34iscoroutinefunction, NULL, __pyx_n_s_dependency_injector_providers); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4756, __pyx_L1_error) __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_19dependency_injector_9providers_34iscoroutinefunction, NULL, __pyx_n_s_dependency_injector_providers); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4753, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_1);
if (PyDict_SetItem(__pyx_d, __pyx_n_s_iscoroutinefunction, __pyx_t_1) < 0) __PYX_ERR(1, 4756, __pyx_L1_error) if (PyDict_SetItem(__pyx_d, __pyx_n_s_iscoroutinefunction, __pyx_t_1) < 0) __PYX_ERR(1, 4753, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "dependency_injector/providers.pyx":4767 /* "dependency_injector/providers.pyx":4761
* *
* *
* def isasyncgenfunction(obj): # <<<<<<<<<<<<<< * def isasyncgenfunction(obj): # <<<<<<<<<<<<<<
* """Check if object is an asynchronous generator function. * """Check if object is an asynchronous generator function."""
* * try:
*/ */
__pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_19dependency_injector_9providers_36isasyncgenfunction, NULL, __pyx_n_s_dependency_injector_providers); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4767, __pyx_L1_error) __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_19dependency_injector_9providers_36isasyncgenfunction, NULL, __pyx_n_s_dependency_injector_providers); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4761, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_1);
if (PyDict_SetItem(__pyx_d, __pyx_n_s_isasyncgenfunction, __pyx_t_1) < 0) __PYX_ERR(1, 4767, __pyx_L1_error) if (PyDict_SetItem(__pyx_d, __pyx_n_s_isasyncgenfunction, __pyx_t_1) < 0) __PYX_ERR(1, 4761, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* "(tree fragment)":1 /* "(tree fragment)":1

View File

@ -4743,10 +4743,7 @@ def traverse(*providers, types=None):
def isawaitable(obj): def isawaitable(obj):
"""Check if object is a coroutine function. """Check if object is a coroutine function."""
Return False for any object in Python 3.4 or below.
"""
try: try:
return inspect.isawaitable(obj) return inspect.isawaitable(obj)
except AttributeError: except AttributeError:
@ -4754,10 +4751,7 @@ def isawaitable(obj):
def iscoroutinefunction(obj): def iscoroutinefunction(obj):
"""Check if object is a coroutine function. """Check if object is a coroutine function."""
Return False for any object in Python 3.4 or below.
"""
try: try:
return inspect.iscoroutinefunction(obj) return inspect.iscoroutinefunction(obj)
except AttributeError: except AttributeError:
@ -4765,10 +4759,7 @@ def iscoroutinefunction(obj):
def isasyncgenfunction(obj): def isasyncgenfunction(obj):
"""Check if object is an asynchronous generator function. """Check if object is an asynchronous generator function."""
Return False for any object in Python 3.4 or below.
"""
try: try:
return inspect.isasyncgenfunction(obj) return inspect.isasyncgenfunction(obj)
except AttributeError: except AttributeError:

View File

@ -795,7 +795,6 @@ class ConfigFromYamlTests(unittest.TestCase):
os.unlink(self.config_file_1) os.unlink(self.config_file_1)
os.unlink(self.config_file_2) os.unlink(self.config_file_2)
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test(self): def test(self):
self.config.from_yaml(self.config_file_1) self.config.from_yaml(self.config_file_1)
@ -805,7 +804,6 @@ class ConfigFromYamlTests(unittest.TestCase):
self.assertEqual(self.config.section2(), {"value2": 2}) self.assertEqual(self.config.section2(), {"value2": 2})
self.assertEqual(self.config.section2.value2(), 2) self.assertEqual(self.config.section2.value2(), 2)
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_merge(self): def test_merge(self):
self.config.from_yaml(self.config_file_1) self.config.from_yaml(self.config_file_1)
self.config.from_yaml(self.config_file_2) self.config.from_yaml(self.config_file_2)
@ -833,45 +831,37 @@ class ConfigFromYamlTests(unittest.TestCase):
self.assertEqual(self.config.section3(), {"value3": 3}) self.assertEqual(self.config.section3(), {"value3": 3})
self.assertEqual(self.config.section3.value3(), 3) self.assertEqual(self.config.section3.value3(), 3)
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_file_does_not_exist(self): def test_file_does_not_exist(self):
self.config.from_yaml("./does_not_exist.yml") self.config.from_yaml("./does_not_exist.yml")
self.assertEqual(self.config(), {}) self.assertEqual(self.config(), {})
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_file_does_not_exist_strict_mode(self): def test_file_does_not_exist_strict_mode(self):
self.config = providers.Configuration(strict=True) self.config = providers.Configuration(strict=True)
with self.assertRaises(IOError): with self.assertRaises(IOError):
self.config.from_yaml("./does_not_exist.yml") self.config.from_yaml("./does_not_exist.yml")
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_option_file_does_not_exist(self): def test_option_file_does_not_exist(self):
self.config.option.from_yaml("./does_not_exist.yml") self.config.option.from_yaml("./does_not_exist.yml")
self.assertIsNone(self.config.option()) self.assertIsNone(self.config.option())
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_option_file_does_not_exist_strict_mode(self): def test_option_file_does_not_exist_strict_mode(self):
self.config = providers.Configuration(strict=True) self.config = providers.Configuration(strict=True)
with self.assertRaises(IOError): with self.assertRaises(IOError):
self.config.option.from_yaml("./does_not_exist.yml") self.config.option.from_yaml("./does_not_exist.yml")
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_required_file_does_not_exist(self): def test_required_file_does_not_exist(self):
with self.assertRaises(IOError): with self.assertRaises(IOError):
self.config.from_yaml("./does_not_exist.yml", required=True) self.config.from_yaml("./does_not_exist.yml", required=True)
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_required_option_file_does_not_exist(self): def test_required_option_file_does_not_exist(self):
with self.assertRaises(IOError): with self.assertRaises(IOError):
self.config.option.from_yaml("./does_not_exist.yml", required=True) self.config.option.from_yaml("./does_not_exist.yml", required=True)
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_not_required_file_does_not_exist_strict_mode(self): def test_not_required_file_does_not_exist_strict_mode(self):
self.config = providers.Configuration(strict=True) self.config = providers.Configuration(strict=True)
self.config.from_yaml("./does_not_exist.yml", required=False) self.config.from_yaml("./does_not_exist.yml", required=False)
self.assertEqual(self.config(), {}) self.assertEqual(self.config(), {})
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_not_required_option_file_does_not_exist_strict_mode(self): def test_not_required_option_file_does_not_exist_strict_mode(self):
self.config = providers.Configuration(strict=True) self.config = providers.Configuration(strict=True)
self.config.option.from_yaml("./does_not_exist.yml", required=False) self.config.option.from_yaml("./does_not_exist.yml", required=False)
@ -943,7 +933,6 @@ class ConfigFromYamlWithEnvInterpolationTests(unittest.TestCase):
os.environ.pop("CONFIG_TEST_PATH", None) os.environ.pop("CONFIG_TEST_PATH", None)
os.unlink(self.config_file) os.unlink(self.config_file)
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_env_variable_interpolation(self): def test_env_variable_interpolation(self):
self.config.from_yaml(self.config_file) self.config.from_yaml(self.config_file)
@ -966,7 +955,6 @@ class ConfigFromYamlWithEnvInterpolationTests(unittest.TestCase):
self.assertEqual(self.config.section1.value1(), "test-value") self.assertEqual(self.config.section1.value1(), "test-value")
self.assertEqual(self.config.section1.value2(), "test-path/path") self.assertEqual(self.config.section1.value2(), "test-path/path")
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_missing_envs_not_required(self): def test_missing_envs_not_required(self):
del os.environ["CONFIG_TEST_ENV"] del os.environ["CONFIG_TEST_ENV"]
del os.environ["CONFIG_TEST_PATH"] del os.environ["CONFIG_TEST_PATH"]
@ -992,7 +980,6 @@ class ConfigFromYamlWithEnvInterpolationTests(unittest.TestCase):
self.assertIsNone(self.config.section1.value1()) self.assertIsNone(self.config.section1.value1())
self.assertEqual(self.config.section1.value2(), "/path") self.assertEqual(self.config.section1.value2(), "/path")
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_missing_envs_required(self): def test_missing_envs_required(self):
with open(self.config_file, "w") as config_file: with open(self.config_file, "w") as config_file:
config_file.write( config_file.write(
@ -1008,7 +995,6 @@ class ConfigFromYamlWithEnvInterpolationTests(unittest.TestCase):
"Missing required environment variable \"UNDEFINED\"", "Missing required environment variable \"UNDEFINED\"",
) )
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_missing_envs_strict_mode(self): def test_missing_envs_strict_mode(self):
with open(self.config_file, "w") as config_file: with open(self.config_file, "w") as config_file:
config_file.write( config_file.write(
@ -1025,7 +1011,6 @@ class ConfigFromYamlWithEnvInterpolationTests(unittest.TestCase):
"Missing required environment variable \"UNDEFINED\"", "Missing required environment variable \"UNDEFINED\"",
) )
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_option_missing_envs_not_required(self): def test_option_missing_envs_not_required(self):
del os.environ["CONFIG_TEST_ENV"] del os.environ["CONFIG_TEST_ENV"]
del os.environ["CONFIG_TEST_PATH"] del os.environ["CONFIG_TEST_PATH"]
@ -1051,7 +1036,6 @@ class ConfigFromYamlWithEnvInterpolationTests(unittest.TestCase):
self.assertIsNone(self.config.option.section1.value1()) self.assertIsNone(self.config.option.section1.value1())
self.assertEqual(self.config.option.section1.value2(), "/path") self.assertEqual(self.config.option.section1.value2(), "/path")
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_option_missing_envs_required(self): def test_option_missing_envs_required(self):
with open(self.config_file, "w") as config_file: with open(self.config_file, "w") as config_file:
config_file.write( config_file.write(
@ -1067,7 +1051,6 @@ class ConfigFromYamlWithEnvInterpolationTests(unittest.TestCase):
"Missing required environment variable \"UNDEFINED\"", "Missing required environment variable \"UNDEFINED\"",
) )
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_option_missing_envs_strict_mode(self): def test_option_missing_envs_strict_mode(self):
with open(self.config_file, "w") as config_file: with open(self.config_file, "w") as config_file:
config_file.write( config_file.write(
@ -1084,7 +1067,6 @@ class ConfigFromYamlWithEnvInterpolationTests(unittest.TestCase):
"Missing required environment variable \"UNDEFINED\"", "Missing required environment variable \"UNDEFINED\"",
) )
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_default_values(self): def test_default_values(self):
os.environ["DEFINED"] = "defined" os.environ["DEFINED"] = "defined"
self.addCleanup(os.environ.pop, "DEFINED") self.addCleanup(os.environ.pop, "DEFINED")
@ -1108,7 +1090,6 @@ class ConfigFromYamlWithEnvInterpolationTests(unittest.TestCase):
}, },
) )
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_option_env_variable_interpolation(self): def test_option_env_variable_interpolation(self):
self.config.option.from_yaml(self.config_file) self.config.option.from_yaml(self.config_file)
@ -1131,7 +1112,6 @@ class ConfigFromYamlWithEnvInterpolationTests(unittest.TestCase):
self.assertEqual(self.config.option.section1.value1(), "test-value") self.assertEqual(self.config.option.section1.value1(), "test-value")
self.assertEqual(self.config.option.section1.value2(), "test-path/path") self.assertEqual(self.config.option.section1.value2(), "test-path/path")
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_env_variable_interpolation_custom_loader(self): def test_env_variable_interpolation_custom_loader(self):
self.config.from_yaml(self.config_file, loader=yaml.UnsafeLoader) self.config.from_yaml(self.config_file, loader=yaml.UnsafeLoader)
@ -1145,7 +1125,6 @@ class ConfigFromYamlWithEnvInterpolationTests(unittest.TestCase):
self.assertEqual(self.config.section1.value1(), "test-value") self.assertEqual(self.config.section1.value1(), "test-value")
self.assertEqual(self.config.section1.value2(), "test-path/path") self.assertEqual(self.config.section1.value2(), "test-path/path")
@unittest.skipIf(sys.version_info[:2] == (3, 4), "PyYAML does not support Python 3.4")
def test_option_env_variable_interpolation_custom_loader(self): def test_option_env_variable_interpolation_custom_loader(self):
self.config.option.from_yaml(self.config_file, loader=yaml.UnsafeLoader) self.config.option.from_yaml(self.config_file, loader=yaml.UnsafeLoader)

10
tox.ini
View File

@ -1,6 +1,6 @@
[tox] [tox]
envlist= envlist=
coveralls, pylint, flake8, pydocstyle, 2.7, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, pypy2, pypy3 coveralls, pylint, flake8, pydocstyle, 2.7, 3.5, 3.6, 3.7, 3.8, 3.9, pypy2, pypy3
[testenv] [testenv]
deps= deps=
@ -43,14 +43,6 @@ extras=
commands= commands=
python -m unittest discover -s tests/unit -p test_*_py2_py3.py python -m unittest discover -s tests/unit -p test_*_py2_py3.py
[testenv:3.4]
deps=
contextvars
extras=
flask
commands=
python -m unittest discover -s tests/unit -p test_*_py3.py
[testenv:3.5] [testenv:3.5]
deps= deps=
contextvars contextvars