| 
						 
						
						
						
						 
					 | 
					 | 
					@ -1,4 +1,4 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					/* Generated by Cython 0.29.2 */
 | 
					 | 
					 | 
					 | 
					/* Generated by Cython 0.29.6 */
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define PY_SSIZE_T_CLEAN
 | 
					 | 
					 | 
					 | 
					#define PY_SSIZE_T_CLEAN
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "Python.h"
 | 
					 | 
					 | 
					 | 
					#include "Python.h"
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -7,8 +7,8 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
 | 
					 | 
					 | 
					 | 
					#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #error Cython requires Python 2.6+ or Python 3.3+.
 | 
					 | 
					 | 
					 | 
					    #error Cython requires Python 2.6+ or Python 3.3+.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#else
 | 
					 | 
					 | 
					 | 
					#else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define CYTHON_ABI "0_29_2"
 | 
					 | 
					 | 
					 | 
					#define CYTHON_ABI "0_29_6"
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define CYTHON_HEX_VERSION 0x001D02F0
 | 
					 | 
					 | 
					 | 
					#define CYTHON_HEX_VERSION 0x001D06F0
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define CYTHON_FUTURE_DIVISION 0
 | 
					 | 
					 | 
					 | 
					#define CYTHON_FUTURE_DIVISION 0
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include <stddef.h>
 | 
					 | 
					 | 
					 | 
					#include <stddef.h>
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#ifndef offsetof
 | 
					 | 
					 | 
					 | 
					#ifndef offsetof
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -346,26 +346,6 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#else
 | 
					 | 
					 | 
					 | 
					#else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define __Pyx_PyFastCFunction_Check(func) 0
 | 
					 | 
					 | 
					 | 
					#define __Pyx_PyFastCFunction_Check(func) 0
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif
 | 
					 | 
					 | 
					 | 
					#endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#if CYTHON_USE_DICT_VERSIONS
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    (version_var) = __PYX_GET_DICT_VERSION(dict);\
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    (cache_var) = (value);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        static PY_UINT64_T __pyx_dict_version = 0;\
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        static PyObject *__pyx_dict_cached_value = NULL;\
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            (VAR) = __pyx_dict_cached_value;\
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } else {\
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            (VAR) = __pyx_dict_cached_value = (LOOKUP);\
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }\
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#else
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define __PYX_GET_DICT_VERSION(dict)  (0)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP)  (VAR) = (LOOKUP);
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
 | 
					 | 
					 | 
					 | 
					#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  #define PyObject_Malloc(s)   PyMem_Malloc(s)
 | 
					 | 
					 | 
					 | 
					  #define PyObject_Malloc(s)   PyMem_Malloc(s)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  #define PyObject_Free(p)     PyMem_Free(p)
 | 
					 | 
					 | 
					 | 
					  #define PyObject_Free(p)     PyMem_Free(p)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -398,7 +378,7 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					typedef int Py_tss_t;
 | 
					 | 
					 | 
					 | 
					typedef int Py_tss_t;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
 | 
					 | 
					 | 
					 | 
					static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  *key = PyThread_create_key();
 | 
					 | 
					 | 
					 | 
					  *key = PyThread_create_key();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  return 0; // PyThread_create_key reports success always
 | 
					 | 
					 | 
					 | 
					  return 0;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
 | 
					 | 
					 | 
					 | 
					static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
 | 
					 | 
					 | 
					 | 
					  Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -421,7 +401,7 @@ static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
 | 
					 | 
					 | 
					 | 
					static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  return PyThread_get_key_value(*key);
 | 
					 | 
					 | 
					 | 
					  return PyThread_get_key_value(*key);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif // TSS (Thread Specific Storage) API
 | 
					 | 
					 | 
					 | 
					#endif
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
 | 
					 | 
					 | 
					 | 
					#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
 | 
					 | 
					 | 
					 | 
					#define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#else
 | 
					 | 
					 | 
					 | 
					#else
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -620,7 +600,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
 | 
					 | 
					 | 
					 | 
					                const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
 | 
					 | 
					 | 
					 | 
					#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
 | 
					 | 
					 | 
					 | 
					#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define __PYX_DEFAULT_STRING_ENCODING ""
 | 
					 | 
					 | 
					 | 
					#define __PYX_DEFAULT_STRING_ENCODING ""
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
 | 
					 | 
					 | 
					 | 
					#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
 | 
					 | 
					 | 
					 | 
					#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -1788,6 +1769,32 @@ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
 | 
					 | 
					 | 
					 | 
					    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    const char* function_name);
 | 
					 | 
					 | 
					 | 
					    const char* function_name);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					/* PyDictVersioning.proto */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    (version_var) = __PYX_GET_DICT_VERSION(dict);\
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    (cache_var) = (value);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    static PY_UINT64_T __pyx_dict_version = 0;\
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    static PyObject *__pyx_dict_cached_value = NULL;\
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        (VAR) = __pyx_dict_cached_value;\
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    } else {\
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        (VAR) = __pyx_dict_cached_value = (LOOKUP);\
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    }\
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#define __PYX_GET_DICT_VERSION(dict)  (0)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP)  (VAR) = (LOOKUP);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					/* GetModuleGlobalName.proto */
 | 
					 | 
					 | 
					 | 
					/* GetModuleGlobalName.proto */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#if CYTHON_USE_DICT_VERSIONS
 | 
					 | 
					 | 
					 | 
					#if CYTHON_USE_DICT_VERSIONS
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define __Pyx_GetModuleGlobalName(var, name)  {\
 | 
					 | 
					 | 
					 | 
					#define __Pyx_GetModuleGlobalName(var, name)  {\
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -4527,11 +4534,11 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_8Provider_10override(
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L14_try_end;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L14_try_end;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __pyx_L9_error:;
 | 
					 | 
					 | 
					 | 
					        __pyx_L9_error:;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        /*except:*/ {
 | 
					 | 
					 | 
					 | 
					        /*except:*/ {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          __Pyx_AddTraceback("dependency_injector.providers.Provider.override", __pyx_clineno, __pyx_lineno, __pyx_filename);
 | 
					 | 
					 | 
					 | 
					          __Pyx_AddTraceback("dependency_injector.providers.Provider.override", __pyx_clineno, __pyx_lineno, __pyx_filename);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_5) < 0) __PYX_ERR(1, 172, __pyx_L11_except_error)
 | 
					 | 
					 | 
					 | 
					          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_5) < 0) __PYX_ERR(1, 172, __pyx_L11_except_error)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -4872,12 +4879,12 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_8Provider_12reset_las
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
 | 
					 | 
					 | 
					 | 
					            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            goto __pyx_L19_try_end;
 | 
					 | 
					 | 
					 | 
					            goto __pyx_L19_try_end;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            __pyx_L14_error:;
 | 
					 | 
					 | 
					 | 
					            __pyx_L14_error:;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            /* "dependency_injector/providers.pyx":193
 | 
					 | 
					 | 
					 | 
					            /* "dependency_injector/providers.pyx":193
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *             try:
 | 
					 | 
					 | 
					 | 
					 *             try:
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -4947,12 +4954,12 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_8Provider_12reset_las
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L12_try_end;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L12_try_end;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __pyx_L7_error:;
 | 
					 | 
					 | 
					 | 
					        __pyx_L7_error:;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        /*except:*/ {
 | 
					 | 
					 | 
					 | 
					        /*except:*/ {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          __Pyx_AddTraceback("dependency_injector.providers.Provider.reset_last_overriding", __pyx_clineno, __pyx_lineno, __pyx_filename);
 | 
					 | 
					 | 
					 | 
					          __Pyx_AddTraceback("dependency_injector.providers.Provider.reset_last_overriding", __pyx_clineno, __pyx_lineno, __pyx_filename);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_1) < 0) __PYX_ERR(1, 186, __pyx_L9_except_error)
 | 
					 | 
					 | 
					 | 
					          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_1) < 0) __PYX_ERR(1, 186, __pyx_L9_except_error)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -5163,10 +5170,10 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_8Provider_14reset_ove
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L12_try_end;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L12_try_end;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __pyx_L7_error:;
 | 
					 | 
					 | 
					 | 
					        __pyx_L7_error:;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        /*except:*/ {
 | 
					 | 
					 | 
					 | 
					        /*except:*/ {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          __Pyx_AddTraceback("dependency_injector.providers.Provider.reset_override", __pyx_clineno, __pyx_lineno, __pyx_filename);
 | 
					 | 
					 | 
					 | 
					          __Pyx_AddTraceback("dependency_injector.providers.Provider.reset_override", __pyx_clineno, __pyx_lineno, __pyx_filename);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(1, 201, __pyx_L9_except_error)
 | 
					 | 
					 | 
					 | 
					          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(1, 201, __pyx_L9_except_error)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -5418,11 +5425,10 @@ static PyObject *__pyx_f_19dependency_injector_9providers_8Provider__provide(CYT
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
 | 
					 | 
					 | 
					 | 
					    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else {
 | 
					 | 
					 | 
					 | 
					      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 220, __pyx_L1_error)
 | 
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 220, __pyx_L1_error)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -5479,15 +5485,15 @@ static PyObject *__pyx_f_19dependency_injector_9providers_8Provider__provide(CYT
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (unlikely(type_dict_guard != tp_dict_version)) {
 | 
					 | 
					 | 
					 | 
					      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tp_dict_version = obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -5642,11 +5648,10 @@ static void __pyx_f_19dependency_injector_9providers_8Provider__copy_overridings
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
 | 
					 | 
					 | 
					 | 
					    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else {
 | 
					 | 
					 | 
					 | 
					      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy_overridings); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 229, __pyx_L1_error)
 | 
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy_overridings); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 229, __pyx_L1_error)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -5701,15 +5706,15 @@ static void __pyx_f_19dependency_injector_9providers_8Provider__copy_overridings
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (unlikely(type_dict_guard != tp_dict_version)) {
 | 
					 | 
					 | 
					 | 
					      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tp_dict_version = obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -6666,11 +6671,10 @@ static PyObject *__pyx_f_19dependency_injector_9providers_6Object__provide(struc
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
 | 
					 | 
					 | 
					 | 
					    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else {
 | 
					 | 
					 | 
					 | 
					      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 280, __pyx_L1_error)
 | 
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 280, __pyx_L1_error)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -6727,15 +6731,15 @@ static PyObject *__pyx_f_19dependency_injector_9providers_6Object__provide(struc
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (unlikely(type_dict_guard != tp_dict_version)) {
 | 
					 | 
					 | 
					 | 
					      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tp_dict_version = obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -10193,9 +10197,9 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_21DependenciesContain
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      goto __pyx_L12_try_end;
 | 
					 | 
					 | 
					 | 
					      goto __pyx_L12_try_end;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_L5_error:;
 | 
					 | 
					 | 
					 | 
					      __pyx_L5_error:;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      /* "dependency_injector/providers.pyx":539
 | 
					 | 
					 | 
					 | 
					      /* "dependency_injector/providers.pyx":539
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *             try:
 | 
					 | 
					 | 
					 | 
					 *             try:
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -10531,11 +10535,10 @@ static PyObject *__pyx_f_19dependency_injector_9providers_21DependenciesContaine
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
 | 
					 | 
					 | 
					 | 
					    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else {
 | 
					 | 
					 | 
					 | 
					      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_override_providers); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 552, __pyx_L1_error)
 | 
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_override_providers); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 552, __pyx_L1_error)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -10562,15 +10565,15 @@ static PyObject *__pyx_f_19dependency_injector_9providers_21DependenciesContaine
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (unlikely(type_dict_guard != tp_dict_version)) {
 | 
					 | 
					 | 
					 | 
					      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tp_dict_version = obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -13464,11 +13467,10 @@ static PyObject *__pyx_f_19dependency_injector_9providers_8Callable__provide(str
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
 | 
					 | 
					 | 
					 | 
					    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else {
 | 
					 | 
					 | 
					 | 
					      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 763, __pyx_L1_error)
 | 
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 763, __pyx_L1_error)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -13525,15 +13527,15 @@ static PyObject *__pyx_f_19dependency_injector_9providers_8Callable__provide(str
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (unlikely(type_dict_guard != tp_dict_version)) {
 | 
					 | 
					 | 
					 | 
					      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tp_dict_version = obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -14729,11 +14731,10 @@ static PyObject *__pyx_f_19dependency_injector_9providers_16AbstractCallable__pr
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
 | 
					 | 
					 | 
					 | 
					    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else {
 | 
					 | 
					 | 
					 | 
					      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 812, __pyx_L1_error)
 | 
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 812, __pyx_L1_error)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -14790,15 +14791,15 @@ static PyObject *__pyx_f_19dependency_injector_9providers_16AbstractCallable__pr
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (unlikely(type_dict_guard != tp_dict_version)) {
 | 
					 | 
					 | 
					 | 
					      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tp_dict_version = obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -17275,11 +17276,10 @@ static PyObject *__pyx_f_19dependency_injector_9providers_17AbstractCoroutine__p
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
 | 
					 | 
					 | 
					 | 
					    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else {
 | 
					 | 
					 | 
					 | 
					      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 928, __pyx_L1_error)
 | 
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 928, __pyx_L1_error)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -17336,15 +17336,15 @@ static PyObject *__pyx_f_19dependency_injector_9providers_17AbstractCoroutine__p
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (unlikely(type_dict_guard != tp_dict_version)) {
 | 
					 | 
					 | 
					 | 
					      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tp_dict_version = obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -19758,9 +19758,9 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_13Configuration_12res
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      goto __pyx_L12_try_end;
 | 
					 | 
					 | 
					 | 
					      goto __pyx_L12_try_end;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_L5_error:;
 | 
					 | 
					 | 
					 | 
					      __pyx_L5_error:;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      /* "dependency_injector/providers.pyx":1076
 | 
					 | 
					 | 
					 | 
					      /* "dependency_injector/providers.pyx":1076
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *             try:
 | 
					 | 
					 | 
					 | 
					 *             try:
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -22835,11 +22835,10 @@ static PyObject *__pyx_f_19dependency_injector_9providers_7Factory__provide(stru
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
 | 
					 | 
					 | 
					 | 
					    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else {
 | 
					 | 
					 | 
					 | 
					      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1333, __pyx_L1_error)
 | 
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1333, __pyx_L1_error)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -22896,15 +22895,15 @@ static PyObject *__pyx_f_19dependency_injector_9providers_7Factory__provide(stru
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (unlikely(type_dict_guard != tp_dict_version)) {
 | 
					 | 
					 | 
					 | 
					      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tp_dict_version = obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -24070,11 +24069,10 @@ static PyObject *__pyx_f_19dependency_injector_9providers_15AbstractFactory__pro
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
 | 
					 | 
					 | 
					 | 
					    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else {
 | 
					 | 
					 | 
					 | 
					      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1394, __pyx_L1_error)
 | 
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1394, __pyx_L1_error)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -24131,15 +24129,15 @@ static PyObject *__pyx_f_19dependency_injector_9providers_15AbstractFactory__pro
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (unlikely(type_dict_guard != tp_dict_version)) {
 | 
					 | 
					 | 
					 | 
					      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tp_dict_version = obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -28744,11 +28742,10 @@ static PyObject *__pyx_f_19dependency_injector_9providers_9Singleton__provide(st
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
 | 
					 | 
					 | 
					 | 
					    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else {
 | 
					 | 
					 | 
					 | 
					      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1694, __pyx_L1_error)
 | 
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1694, __pyx_L1_error)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -28805,15 +28802,15 @@ static PyObject *__pyx_f_19dependency_injector_9providers_9Singleton__provide(st
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (unlikely(type_dict_guard != tp_dict_version)) {
 | 
					 | 
					 | 
					 | 
					      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tp_dict_version = obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -29903,11 +29900,10 @@ static PyObject *__pyx_f_19dependency_injector_9providers_19ThreadSafeSingleton_
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
 | 
					 | 
					 | 
					 | 
					    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else {
 | 
					 | 
					 | 
					 | 
					      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1749, __pyx_L1_error)
 | 
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1749, __pyx_L1_error)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -29964,15 +29960,15 @@ static PyObject *__pyx_f_19dependency_injector_9providers_19ThreadSafeSingleton_
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (unlikely(type_dict_guard != tp_dict_version)) {
 | 
					 | 
					 | 
					 | 
					      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tp_dict_version = obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -30082,11 +30078,11 @@ static PyObject *__pyx_f_19dependency_injector_9providers_19ThreadSafeSingleton_
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L12_try_end;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L12_try_end;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __pyx_L7_error:;
 | 
					 | 
					 | 
					 | 
					        __pyx_L7_error:;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        /*except:*/ {
 | 
					 | 
					 | 
					 | 
					        /*except:*/ {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          __Pyx_AddTraceback("dependency_injector.providers.ThreadSafeSingleton._provide", __pyx_clineno, __pyx_lineno, __pyx_filename);
 | 
					 | 
					 | 
					 | 
					          __Pyx_AddTraceback("dependency_injector.providers.ThreadSafeSingleton._provide", __pyx_clineno, __pyx_lineno, __pyx_filename);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_3) < 0) __PYX_ERR(1, 1751, __pyx_L9_except_error)
 | 
					 | 
					 | 
					 | 
					          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_3) < 0) __PYX_ERR(1, 1751, __pyx_L9_except_error)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -31149,11 +31145,11 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_20ThreadLocalSingleto
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  /* "dependency_injector/providers.pyx":1811
 | 
					 | 
					 | 
					 | 
					  /* "dependency_injector/providers.pyx":1811
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *         :rtype: None
 | 
					 | 
					 | 
					 | 
					 *         :rtype: None
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *         """
 | 
					 | 
					 | 
					 | 
					 *         """
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *         self.__storage.instance = None             # <<<<<<<<<<<<<<
 | 
					 | 
					 | 
					 | 
					 *         del self.__storage.instance             # <<<<<<<<<<<<<<
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 * 
 | 
					 | 
					 | 
					 | 
					 * 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *     cpdef object _provide(self, tuple args, dict kwargs):
 | 
					 | 
					 | 
					 | 
					 *     cpdef object _provide(self, tuple args, dict kwargs):
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 */
 | 
					 | 
					 | 
					 | 
					 */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self->__pyx___storage, __pyx_n_s_instance, Py_None) < 0) __PYX_ERR(1, 1811, __pyx_L1_error)
 | 
					 | 
					 | 
					 | 
					  if (__Pyx_PyObject_DelAttrStr(__pyx_v_self->__pyx___storage, __pyx_n_s_instance) < 0) __PYX_ERR(1, 1811, __pyx_L1_error)
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  /* "dependency_injector/providers.pyx":1806
 | 
					 | 
					 | 
					 | 
					  /* "dependency_injector/providers.pyx":1806
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *         super(ThreadLocalSingleton, self).__init__(provides, *args, **kwargs)
 | 
					 | 
					 | 
					 | 
					 *         super(ThreadLocalSingleton, self).__init__(provides, *args, **kwargs)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -31176,7 +31172,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_20ThreadLocalSingleto
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					/* "dependency_injector/providers.pyx":1813
 | 
					 | 
					 | 
					 | 
					/* "dependency_injector/providers.pyx":1813
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *         self.__storage.instance = None
 | 
					 | 
					 | 
					 | 
					 *         del self.__storage.instance
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 * 
 | 
					 | 
					 | 
					 | 
					 * 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *     cpdef object _provide(self, tuple args, dict kwargs):             # <<<<<<<<<<<<<<
 | 
					 | 
					 | 
					 | 
					 *     cpdef object _provide(self, tuple args, dict kwargs):             # <<<<<<<<<<<<<<
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *         """Return single instance."""
 | 
					 | 
					 | 
					 | 
					 *         """Return single instance."""
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -31205,11 +31201,10 @@ static PyObject *__pyx_f_19dependency_injector_9providers_20ThreadLocalSingleton
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
					 | 
					 | 
					 | 
					  if (unlikely(__pyx_skip_dispatch)) ;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
					 | 
					 | 
					 | 
					  /* Check if overridden in Python */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
					 | 
					 | 
					 | 
					  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
 | 
					 | 
					 | 
					 | 
					    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else {
 | 
					 | 
					 | 
					 | 
					      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1813, __pyx_L1_error)
 | 
					 | 
					 | 
					 | 
					      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_provide); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1813, __pyx_L1_error)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
					 | 
					 | 
					 | 
					      __Pyx_GOTREF(__pyx_t_1);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -31266,15 +31261,15 @@ static PyObject *__pyx_f_19dependency_injector_9providers_20ThreadLocalSingleton
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
					 | 
					 | 
					 | 
					        goto __pyx_L0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (unlikely(type_dict_guard != tp_dict_version)) {
 | 
					 | 
					 | 
					 | 
					      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        tp_dict_version = obj_dict_version = 0;
 | 
					 | 
					 | 
					 | 
					        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      }
 | 
					 | 
					 | 
					 | 
					      }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #endif
 | 
					 | 
					 | 
					 | 
					      #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
 | 
					 | 
					 | 
					 | 
					      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #endif
 | 
					 | 
					 | 
					 | 
					    #endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -31321,11 +31316,11 @@ static PyObject *__pyx_f_19dependency_injector_9providers_20ThreadLocalSingleton
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      goto __pyx_L11_try_end;
 | 
					 | 
					 | 
					 | 
					      goto __pyx_L11_try_end;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_L6_error:;
 | 
					 | 
					 | 
					 | 
					      __pyx_L6_error:;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      /* "dependency_injector/providers.pyx":1819
 | 
					 | 
					 | 
					 | 
					      /* "dependency_injector/providers.pyx":1819
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *         try:
 | 
					 | 
					 | 
					 | 
					 *         try:
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -31413,11 +31408,11 @@ static PyObject *__pyx_f_19dependency_injector_9providers_20ThreadLocalSingleton
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_PyThreadState_declare
 | 
					 | 
					 | 
					 | 
					      __Pyx_PyThreadState_declare
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_PyThreadState_assign
 | 
					 | 
					 | 
					 | 
					      __Pyx_PyThreadState_assign
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
 | 
					 | 
					 | 
					 | 
					      __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
 | 
					 | 
					 | 
					 | 
					      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
 | 
					 | 
					 | 
					 | 
					      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      __Pyx_XGOTREF(__pyx_t_9);
 | 
					 | 
					 | 
					 | 
					      __Pyx_XGOTREF(__pyx_t_9);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -31461,7 +31456,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers_20ThreadLocalSingleton
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  /* "dependency_injector/providers.pyx":1813
 | 
					 | 
					 | 
					 | 
					  /* "dependency_injector/providers.pyx":1813
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *         self.__storage.instance = None
 | 
					 | 
					 | 
					 | 
					 *         del self.__storage.instance
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 * 
 | 
					 | 
					 | 
					 | 
					 * 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *     cpdef object _provide(self, tuple args, dict kwargs):             # <<<<<<<<<<<<<<
 | 
					 | 
					 | 
					 | 
					 *     cpdef object _provide(self, tuple args, dict kwargs):             # <<<<<<<<<<<<<<
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *         """Return single instance."""
 | 
					 | 
					 | 
					 | 
					 *         """Return single instance."""
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -58261,6 +58256,32 @@ bad:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return -1;
 | 
					 | 
					 | 
					 | 
					    return -1;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					/* PyDictVersioning */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    PyObject *dict = Py_TYPE(obj)->tp_dict;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    PyObject **dictptr = NULL;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    if (offset) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#if CYTHON_COMPILING_IN_CPYTHON
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#else
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        dictptr = _PyObject_GetDictPtr(obj);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    PyObject *dict = Py_TYPE(obj)->tp_dict;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        return 0;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    return obj_dict_version == __Pyx_get_object_dict_version(obj);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					/* GetModuleGlobalName */
 | 
					 | 
					 | 
					 | 
					/* GetModuleGlobalName */
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#if CYTHON_USE_DICT_VERSIONS
 | 
					 | 
					 | 
					 | 
					#if CYTHON_USE_DICT_VERSIONS
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
 | 
					 | 
					 | 
					 | 
					static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					
 
 |