mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-02-11 09:00:57 +03:00
Add more tests
This commit is contained in:
parent
45d04d8e6e
commit
2d3aa72cbd
|
@ -3302,7 +3302,6 @@ static const char __pyx_k_config_file[] = "config_file";
|
|||
static const char __pyx_k_initialized[] = ", initialized=";
|
||||
static const char __pyx_k_initializer[] = "initializer";
|
||||
static const char __pyx_k_instance_of[] = "instance_of";
|
||||
static const char __pyx_k_is_resource[] = "_is_resource";
|
||||
static const char __pyx_k_merge_dicts[] = "merge_dicts";
|
||||
static const char __pyx_k_reset_cache[] = "reset_cache";
|
||||
static const char __pyx_k_ConfigParser[] = "ConfigParser";
|
||||
|
@ -3382,6 +3381,7 @@ static const char __pyx_k_iscoroutinefunction[] = "iscoroutinefunction";
|
|||
static const char __pyx_k_isgeneratorfunction[] = "isgeneratorfunction";
|
||||
static const char __pyx_k_pyx_unpickle_Object[] = "__pyx_unpickle_Object";
|
||||
static const char __pyx_k_ThreadLocalSingleton[] = "ThreadLocalSingleton";
|
||||
static const char __pyx_k_is_resource_subclass[] = "_is_resource_subclass";
|
||||
static const char __pyx_k_override_providers_2[] = "override_providers";
|
||||
static const char __pyx_k_pyx_unpickle_Factory[] = "__pyx_unpickle_Factory";
|
||||
static const char __pyx_k_str___locals_genexpr[] = "__str__.<locals>.genexpr";
|
||||
|
@ -3709,7 +3709,7 @@ static PyObject *__pyx_kp_s_instance_of_0;
|
|||
static PyObject *__pyx_n_s_interpolation;
|
||||
static PyObject *__pyx_n_s_is_coroutine;
|
||||
static PyObject *__pyx_n_s_is_coroutine_marker;
|
||||
static PyObject *__pyx_n_s_is_resource;
|
||||
static PyObject *__pyx_n_s_is_resource_subclass;
|
||||
static PyObject *__pyx_n_s_iscoroutinefunction;
|
||||
static PyObject *__pyx_n_s_isgeneratorfunction;
|
||||
static PyObject *__pyx_n_s_item;
|
||||
|
@ -4221,7 +4221,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_16represent_provider(
|
|||
static PyObject *__pyx_pf_19dependency_injector_9providers_18deepcopy(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_instance, PyObject *__pyx_v_memo); /* proto */
|
||||
static PyObject *__pyx_pf_19dependency_injector_9providers_20__add_sys_streams(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_memo); /* proto */
|
||||
static PyObject *__pyx_pf_19dependency_injector_9providers_22merge_dicts(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dict1, PyObject *__pyx_v_dict2); /* proto */
|
||||
static PyObject *__pyx_pf_19dependency_injector_9providers_24_is_resource(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_instance); /* proto */
|
||||
static PyObject *__pyx_pf_19dependency_injector_9providers_24_is_resource_subclass(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_instance); /* proto */
|
||||
static PyObject *__pyx_pf_19dependency_injector_9providers_27__pyx_unpickle_Provider(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
|
||||
static PyObject *__pyx_pf_19dependency_injector_9providers_29__pyx_unpickle_Object(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
|
||||
static PyObject *__pyx_pf_19dependency_injector_9providers_31__pyx_unpickle_Delegate(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
|
||||
|
@ -48539,7 +48539,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers_8Resource__provide(str
|
|||
* if self.__initialized:
|
||||
* return self.__resource # <<<<<<<<<<<<<<
|
||||
*
|
||||
* if _is_resource(self.__initializer):
|
||||
* if _is_resource_subclass(self.__initializer):
|
||||
*/
|
||||
__Pyx_XDECREF(__pyx_r);
|
||||
__Pyx_INCREF(__pyx_v_self->__pyx___resource);
|
||||
|
@ -48558,11 +48558,11 @@ static PyObject *__pyx_f_19dependency_injector_9providers_8Resource__provide(str
|
|||
/* "dependency_injector/providers.pyx":2709
|
||||
* return self.__resource
|
||||
*
|
||||
* if _is_resource(self.__initializer): # <<<<<<<<<<<<<<
|
||||
* if _is_resource_subclass(self.__initializer): # <<<<<<<<<<<<<<
|
||||
* initializer = self.__initializer()
|
||||
* self.__resource = __call(
|
||||
*/
|
||||
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_is_resource); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2709, __pyx_L1_error)
|
||||
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_is_resource_subclass); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2709, __pyx_L1_error)
|
||||
__Pyx_GOTREF(__pyx_t_2);
|
||||
__pyx_t_3 = NULL;
|
||||
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
|
||||
|
@ -48585,7 +48585,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers_8Resource__provide(str
|
|||
|
||||
/* "dependency_injector/providers.pyx":2710
|
||||
*
|
||||
* if _is_resource(self.__initializer):
|
||||
* if _is_resource_subclass(self.__initializer):
|
||||
* initializer = self.__initializer() # <<<<<<<<<<<<<<
|
||||
* self.__resource = __call(
|
||||
* initializer.init,
|
||||
|
@ -48640,7 +48640,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers_8Resource__provide(str
|
|||
__Pyx_INCREF(__pyx_t_3);
|
||||
|
||||
/* "dependency_injector/providers.pyx":2711
|
||||
* if _is_resource(self.__initializer):
|
||||
* if _is_resource_subclass(self.__initializer):
|
||||
* initializer = self.__initializer()
|
||||
* self.__resource = __call( # <<<<<<<<<<<<<<
|
||||
* initializer.init,
|
||||
|
@ -48675,7 +48675,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers_8Resource__provide(str
|
|||
/* "dependency_injector/providers.pyx":2709
|
||||
* return self.__resource
|
||||
*
|
||||
* if _is_resource(self.__initializer): # <<<<<<<<<<<<<<
|
||||
* if _is_resource_subclass(self.__initializer): # <<<<<<<<<<<<<<
|
||||
* initializer = self.__initializer()
|
||||
* self.__resource = __call(
|
||||
*/
|
||||
|
@ -62780,43 +62780,44 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_22merge_dicts(CYTHON_
|
|||
/* "dependency_injector/providers.pyx":3362
|
||||
*
|
||||
*
|
||||
* def _is_resource(instance): # <<<<<<<<<<<<<<
|
||||
* def _is_resource_subclass(instance): # <<<<<<<<<<<<<<
|
||||
* if sys.version_info < (3, 5):
|
||||
* return False
|
||||
*/
|
||||
|
||||
/* Python wrapper */
|
||||
static PyObject *__pyx_pw_19dependency_injector_9providers_25_is_resource(PyObject *__pyx_self, PyObject *__pyx_v_instance); /*proto*/
|
||||
static PyMethodDef __pyx_mdef_19dependency_injector_9providers_25_is_resource = {"_is_resource", (PyCFunction)__pyx_pw_19dependency_injector_9providers_25_is_resource, METH_O, 0};
|
||||
static PyObject *__pyx_pw_19dependency_injector_9providers_25_is_resource(PyObject *__pyx_self, PyObject *__pyx_v_instance) {
|
||||
static PyObject *__pyx_pw_19dependency_injector_9providers_25_is_resource_subclass(PyObject *__pyx_self, PyObject *__pyx_v_instance); /*proto*/
|
||||
static PyMethodDef __pyx_mdef_19dependency_injector_9providers_25_is_resource_subclass = {"_is_resource_subclass", (PyCFunction)__pyx_pw_19dependency_injector_9providers_25_is_resource_subclass, METH_O, 0};
|
||||
static PyObject *__pyx_pw_19dependency_injector_9providers_25_is_resource_subclass(PyObject *__pyx_self, PyObject *__pyx_v_instance) {
|
||||
PyObject *__pyx_r = 0;
|
||||
__Pyx_RefNannyDeclarations
|
||||
__Pyx_RefNannySetupContext("_is_resource (wrapper)", 0);
|
||||
__pyx_r = __pyx_pf_19dependency_injector_9providers_24_is_resource(__pyx_self, ((PyObject *)__pyx_v_instance));
|
||||
__Pyx_RefNannySetupContext("_is_resource_subclass (wrapper)", 0);
|
||||
__pyx_r = __pyx_pf_19dependency_injector_9providers_24_is_resource_subclass(__pyx_self, ((PyObject *)__pyx_v_instance));
|
||||
|
||||
/* function exit code */
|
||||
__Pyx_RefNannyFinishContext();
|
||||
return __pyx_r;
|
||||
}
|
||||
|
||||
static PyObject *__pyx_pf_19dependency_injector_9providers_24_is_resource(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_instance) {
|
||||
static PyObject *__pyx_pf_19dependency_injector_9providers_24_is_resource_subclass(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_instance) {
|
||||
PyObject *__pyx_v_resources = NULL;
|
||||
PyObject *__pyx_r = NULL;
|
||||
__Pyx_RefNannyDeclarations
|
||||
PyObject *__pyx_t_1 = NULL;
|
||||
PyObject *__pyx_t_2 = NULL;
|
||||
int __pyx_t_3;
|
||||
int __pyx_t_4;
|
||||
int __pyx_lineno = 0;
|
||||
const char *__pyx_filename = NULL;
|
||||
int __pyx_clineno = 0;
|
||||
__Pyx_RefNannySetupContext("_is_resource", 0);
|
||||
__Pyx_RefNannySetupContext("_is_resource_subclass", 0);
|
||||
|
||||
/* "dependency_injector/providers.pyx":3363
|
||||
*
|
||||
* def _is_resource(instance):
|
||||
* def _is_resource_subclass(instance):
|
||||
* if sys.version_info < (3, 5): # <<<<<<<<<<<<<<
|
||||
* return False
|
||||
* from . import resources
|
||||
* if not isinstance(instance, CLASS_TYPES):
|
||||
*/
|
||||
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3363, __pyx_L1_error)
|
||||
__Pyx_GOTREF(__pyx_t_1);
|
||||
|
@ -62830,11 +62831,11 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_24_is_resource(CYTHON
|
|||
if (__pyx_t_3) {
|
||||
|
||||
/* "dependency_injector/providers.pyx":3364
|
||||
* def _is_resource(instance):
|
||||
* def _is_resource_subclass(instance):
|
||||
* if sys.version_info < (3, 5):
|
||||
* return False # <<<<<<<<<<<<<<
|
||||
* from . import resources
|
||||
* return isinstance(instance, resources.Resource)
|
||||
* if not isinstance(instance, CLASS_TYPES):
|
||||
* return
|
||||
*/
|
||||
__Pyx_XDECREF(__pyx_r);
|
||||
__Pyx_INCREF(Py_False);
|
||||
|
@ -62843,45 +62844,79 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_24_is_resource(CYTHON
|
|||
|
||||
/* "dependency_injector/providers.pyx":3363
|
||||
*
|
||||
* def _is_resource(instance):
|
||||
* def _is_resource_subclass(instance):
|
||||
* if sys.version_info < (3, 5): # <<<<<<<<<<<<<<
|
||||
* return False
|
||||
* from . import resources
|
||||
* if not isinstance(instance, CLASS_TYPES):
|
||||
*/
|
||||
}
|
||||
|
||||
/* "dependency_injector/providers.pyx":3365
|
||||
* if sys.version_info < (3, 5):
|
||||
* return False
|
||||
* from . import resources # <<<<<<<<<<<<<<
|
||||
* return isinstance(instance, resources.Resource)
|
||||
* if not isinstance(instance, CLASS_TYPES): # <<<<<<<<<<<<<<
|
||||
* return
|
||||
* from . import resources
|
||||
*/
|
||||
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3365, __pyx_L1_error)
|
||||
__pyx_t_1 = __pyx_v_19dependency_injector_9providers_CLASS_TYPES;
|
||||
__Pyx_INCREF(__pyx_t_1);
|
||||
__pyx_t_3 = PyObject_IsInstance(__pyx_v_instance, __pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 3365, __pyx_L1_error)
|
||||
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
|
||||
__pyx_t_4 = ((!(__pyx_t_3 != 0)) != 0);
|
||||
if (__pyx_t_4) {
|
||||
|
||||
/* "dependency_injector/providers.pyx":3366
|
||||
* return False
|
||||
* if not isinstance(instance, CLASS_TYPES):
|
||||
* return # <<<<<<<<<<<<<<
|
||||
* from . import resources
|
||||
* return issubclass(instance, resources.Resource)
|
||||
*/
|
||||
__Pyx_XDECREF(__pyx_r);
|
||||
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
|
||||
goto __pyx_L0;
|
||||
|
||||
/* "dependency_injector/providers.pyx":3365
|
||||
* if sys.version_info < (3, 5):
|
||||
* return False
|
||||
* if not isinstance(instance, CLASS_TYPES): # <<<<<<<<<<<<<<
|
||||
* return
|
||||
* from . import resources
|
||||
*/
|
||||
}
|
||||
|
||||
/* "dependency_injector/providers.pyx":3367
|
||||
* if not isinstance(instance, CLASS_TYPES):
|
||||
* return
|
||||
* from . import resources # <<<<<<<<<<<<<<
|
||||
* return issubclass(instance, resources.Resource)
|
||||
*/
|
||||
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3367, __pyx_L1_error)
|
||||
__Pyx_GOTREF(__pyx_t_1);
|
||||
__Pyx_INCREF(__pyx_n_s_resources);
|
||||
__Pyx_GIVEREF(__pyx_n_s_resources);
|
||||
PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_resources);
|
||||
__pyx_t_2 = __Pyx_Import(__pyx_kp_s__13, __pyx_t_1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3365, __pyx_L1_error)
|
||||
__pyx_t_2 = __Pyx_Import(__pyx_kp_s__13, __pyx_t_1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3367, __pyx_L1_error)
|
||||
__Pyx_GOTREF(__pyx_t_2);
|
||||
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
|
||||
__pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_resources); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3365, __pyx_L1_error)
|
||||
__pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_resources); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3367, __pyx_L1_error)
|
||||
__Pyx_GOTREF(__pyx_t_1);
|
||||
__Pyx_INCREF(__pyx_t_1);
|
||||
__pyx_v_resources = __pyx_t_1;
|
||||
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
|
||||
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
|
||||
|
||||
/* "dependency_injector/providers.pyx":3366
|
||||
* return False
|
||||
/* "dependency_injector/providers.pyx":3368
|
||||
* return
|
||||
* from . import resources
|
||||
* return isinstance(instance, resources.Resource) # <<<<<<<<<<<<<<
|
||||
* return issubclass(instance, resources.Resource) # <<<<<<<<<<<<<<
|
||||
*/
|
||||
__Pyx_XDECREF(__pyx_r);
|
||||
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_resources, __pyx_n_s_Resource); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3366, __pyx_L1_error)
|
||||
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_resources, __pyx_n_s_Resource); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3368, __pyx_L1_error)
|
||||
__Pyx_GOTREF(__pyx_t_2);
|
||||
__pyx_t_3 = PyObject_IsInstance(__pyx_v_instance, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 3366, __pyx_L1_error)
|
||||
__pyx_t_4 = PyObject_IsSubclass(__pyx_v_instance, __pyx_t_2); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 3368, __pyx_L1_error)
|
||||
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
|
||||
__pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3366, __pyx_L1_error)
|
||||
__pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3368, __pyx_L1_error)
|
||||
__Pyx_GOTREF(__pyx_t_2);
|
||||
__pyx_r = __pyx_t_2;
|
||||
__pyx_t_2 = 0;
|
||||
|
@ -62890,7 +62925,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_24_is_resource(CYTHON
|
|||
/* "dependency_injector/providers.pyx":3362
|
||||
*
|
||||
*
|
||||
* def _is_resource(instance): # <<<<<<<<<<<<<<
|
||||
* def _is_resource_subclass(instance): # <<<<<<<<<<<<<<
|
||||
* if sys.version_info < (3, 5):
|
||||
* return False
|
||||
*/
|
||||
|
@ -62899,7 +62934,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_24_is_resource(CYTHON
|
|||
__pyx_L1_error:;
|
||||
__Pyx_XDECREF(__pyx_t_1);
|
||||
__Pyx_XDECREF(__pyx_t_2);
|
||||
__Pyx_AddTraceback("dependency_injector.providers._is_resource", __pyx_clineno, __pyx_lineno, __pyx_filename);
|
||||
__Pyx_AddTraceback("dependency_injector.providers._is_resource_subclass", __pyx_clineno, __pyx_lineno, __pyx_filename);
|
||||
__pyx_r = NULL;
|
||||
__pyx_L0:;
|
||||
__Pyx_XDECREF(__pyx_v_resources);
|
||||
|
@ -90225,7 +90260,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
|
|||
{&__pyx_n_s_interpolation, __pyx_k_interpolation, sizeof(__pyx_k_interpolation), 0, 0, 1, 1},
|
||||
{&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1},
|
||||
{&__pyx_n_s_is_coroutine_marker, __pyx_k_is_coroutine_marker, sizeof(__pyx_k_is_coroutine_marker), 0, 0, 1, 1},
|
||||
{&__pyx_n_s_is_resource, __pyx_k_is_resource, sizeof(__pyx_k_is_resource), 0, 0, 1, 1},
|
||||
{&__pyx_n_s_is_resource_subclass, __pyx_k_is_resource_subclass, sizeof(__pyx_k_is_resource_subclass), 0, 0, 1, 1},
|
||||
{&__pyx_n_s_iscoroutinefunction, __pyx_k_iscoroutinefunction, sizeof(__pyx_k_iscoroutinefunction), 0, 0, 1, 1},
|
||||
{&__pyx_n_s_isgeneratorfunction, __pyx_k_isgeneratorfunction, sizeof(__pyx_k_isgeneratorfunction), 0, 0, 1, 1},
|
||||
{&__pyx_n_s_item, __pyx_k_item, sizeof(__pyx_k_item), 0, 0, 1, 1},
|
||||
|
@ -90440,10 +90475,10 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
|
|||
|
||||
/* "dependency_injector/providers.pyx":3363
|
||||
*
|
||||
* def _is_resource(instance):
|
||||
* def _is_resource_subclass(instance):
|
||||
* if sys.version_info < (3, 5): # <<<<<<<<<<<<<<
|
||||
* return False
|
||||
* from . import resources
|
||||
* if not isinstance(instance, CLASS_TYPES):
|
||||
*/
|
||||
__pyx_tuple__14 = PyTuple_Pack(2, __pyx_int_3, __pyx_int_5); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(1, 3363, __pyx_L1_error)
|
||||
__Pyx_GOTREF(__pyx_tuple__14);
|
||||
|
@ -90546,14 +90581,14 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
|
|||
/* "dependency_injector/providers.pyx":3362
|
||||
*
|
||||
*
|
||||
* def _is_resource(instance): # <<<<<<<<<<<<<<
|
||||
* def _is_resource_subclass(instance): # <<<<<<<<<<<<<<
|
||||
* if sys.version_info < (3, 5):
|
||||
* return False
|
||||
*/
|
||||
__pyx_tuple__30 = PyTuple_Pack(2, __pyx_n_s_instance, __pyx_n_s_resources); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 3362, __pyx_L1_error)
|
||||
__Pyx_GOTREF(__pyx_tuple__30);
|
||||
__Pyx_GIVEREF(__pyx_tuple__30);
|
||||
__pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dependency_injector_provider, __pyx_n_s_is_resource, 3362, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(1, 3362, __pyx_L1_error)
|
||||
__pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dependency_injector_provider, __pyx_n_s_is_resource_subclass, 3362, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(1, 3362, __pyx_L1_error)
|
||||
|
||||
/* "(tree fragment)":1
|
||||
* def __pyx_unpickle_Provider(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<<
|
||||
|
@ -93343,13 +93378,13 @@ if (!__Pyx_RefNanny) {
|
|||
/* "dependency_injector/providers.pyx":3362
|
||||
*
|
||||
*
|
||||
* def _is_resource(instance): # <<<<<<<<<<<<<<
|
||||
* def _is_resource_subclass(instance): # <<<<<<<<<<<<<<
|
||||
* if sys.version_info < (3, 5):
|
||||
* return False
|
||||
*/
|
||||
__pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_19dependency_injector_9providers_25_is_resource, NULL, __pyx_n_s_dependency_injector_providers); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3362, __pyx_L1_error)
|
||||
__pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_19dependency_injector_9providers_25_is_resource_subclass, NULL, __pyx_n_s_dependency_injector_providers); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3362, __pyx_L1_error)
|
||||
__Pyx_GOTREF(__pyx_t_1);
|
||||
if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_resource, __pyx_t_1) < 0) __PYX_ERR(1, 3362, __pyx_L1_error)
|
||||
if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_resource_subclass, __pyx_t_1) < 0) __PYX_ERR(1, 3362, __pyx_L1_error)
|
||||
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
|
||||
|
||||
/* "(tree fragment)":1
|
||||
|
|
|
@ -2706,7 +2706,7 @@ cdef class Resource(Provider):
|
|||
if self.__initialized:
|
||||
return self.__resource
|
||||
|
||||
if _is_resource(self.__initializer):
|
||||
if _is_resource_subclass(self.__initializer):
|
||||
initializer = self.__initializer()
|
||||
self.__resource = __call(
|
||||
initializer.init,
|
||||
|
@ -3359,8 +3359,10 @@ def merge_dicts(dict1, dict2):
|
|||
return result
|
||||
|
||||
|
||||
def _is_resource(instance):
|
||||
def _is_resource_subclass(instance):
|
||||
if sys.version_info < (3, 5):
|
||||
return False
|
||||
if not isinstance(instance, CLASS_TYPES):
|
||||
return
|
||||
from . import resources
|
||||
return isinstance(instance, resources.Resource)
|
||||
return issubclass(instance, resources.Resource)
|
|
@ -4,17 +4,13 @@ import sys
|
|||
|
||||
import unittest2 as unittest
|
||||
|
||||
from dependency_injector import providers
|
||||
from dependency_injector import providers, resources, errors
|
||||
|
||||
|
||||
def init_fn(*args, **kwargs):
|
||||
return args, kwargs
|
||||
|
||||
|
||||
def init_fn_return_none(*args, **kwargs):
|
||||
return None
|
||||
|
||||
|
||||
class ResourceTests(unittest.TestCase):
|
||||
|
||||
def test_is_provider(self):
|
||||
|
@ -26,129 +22,279 @@ class ResourceTests(unittest.TestCase):
|
|||
|
||||
# Initialization and shutdown
|
||||
# Injection
|
||||
# Initializer: function
|
||||
# Initializer: generator
|
||||
# Initializer: base class
|
||||
# Args
|
||||
# Kwargs
|
||||
# Overridden
|
||||
# Deepcopy
|
||||
# Repr
|
||||
# + Initializer: function
|
||||
# + Initializer: generator
|
||||
# + Initializer: base class
|
||||
# - Initializer: unknown type
|
||||
# + Init() and shutdown() methods
|
||||
# + Initialized
|
||||
# + Args
|
||||
# + Kwargs
|
||||
# + Overridden
|
||||
# + Deepcopy
|
||||
# + Deepcopy initialized
|
||||
# + Repr
|
||||
|
||||
def test_init_function(self):
|
||||
def _init():
|
||||
_init.counter += 1
|
||||
_init.counter = 0
|
||||
|
||||
provider = providers.Resource(_init)
|
||||
|
||||
result1 = provider()
|
||||
self.assertIsNone(result1)
|
||||
self.assertEqual(_init.counter, 1)
|
||||
|
||||
result2 = provider()
|
||||
self.assertIsNone(result2)
|
||||
self.assertEqual(_init.counter, 1)
|
||||
|
||||
provider.shutdown()
|
||||
|
||||
def test_init_generator(self):
|
||||
def _init():
|
||||
_init.init_counter += 1
|
||||
yield
|
||||
_init.shutdown_counter += 1
|
||||
|
||||
_init.init_counter = 0
|
||||
_init.shutdown_counter = 0
|
||||
|
||||
provider = providers.Resource(_init)
|
||||
|
||||
result1 = provider()
|
||||
self.assertIsNone(result1)
|
||||
self.assertEqual(_init.init_counter, 1)
|
||||
self.assertEqual(_init.shutdown_counter, 0)
|
||||
|
||||
provider.shutdown()
|
||||
self.assertEqual(_init.init_counter, 1)
|
||||
self.assertEqual(_init.shutdown_counter, 1)
|
||||
|
||||
result2 = provider()
|
||||
self.assertIsNone(result2)
|
||||
self.assertEqual(_init.init_counter, 2)
|
||||
self.assertEqual(_init.shutdown_counter, 1)
|
||||
|
||||
provider.shutdown()
|
||||
self.assertEqual(_init.init_counter, 2)
|
||||
self.assertEqual(_init.shutdown_counter, 2)
|
||||
|
||||
def test_init_class(self):
|
||||
class TestResource(resources.Resource):
|
||||
init_counter = 0
|
||||
shutdown_counter = 0
|
||||
|
||||
def init(self):
|
||||
self.__class__.init_counter += 1
|
||||
|
||||
def shutdown(self, _):
|
||||
self.__class__.shutdown_counter += 1
|
||||
|
||||
provider = providers.Resource(TestResource)
|
||||
|
||||
result1 = provider()
|
||||
self.assertIsNone(result1)
|
||||
self.assertEqual(TestResource.init_counter, 1)
|
||||
self.assertEqual(TestResource.shutdown_counter, 0)
|
||||
|
||||
provider.shutdown()
|
||||
self.assertEqual(TestResource.init_counter, 1)
|
||||
self.assertEqual(TestResource.shutdown_counter, 1)
|
||||
|
||||
result2 = provider()
|
||||
self.assertIsNone(result2)
|
||||
self.assertEqual(TestResource.init_counter, 2)
|
||||
self.assertEqual(TestResource.shutdown_counter, 1)
|
||||
|
||||
provider.shutdown()
|
||||
self.assertEqual(TestResource.init_counter, 2)
|
||||
self.assertEqual(TestResource.shutdown_counter, 2)
|
||||
|
||||
def test_init_and_shutdown(self):
|
||||
def _init():
|
||||
_init.init_counter += 1
|
||||
yield
|
||||
_init.shutdown_counter += 1
|
||||
|
||||
_init.init_counter = 0
|
||||
_init.shutdown_counter = 0
|
||||
|
||||
provider = providers.Resource(_init)
|
||||
|
||||
result1 = provider.init()
|
||||
self.assertIsNone(result1)
|
||||
self.assertEqual(_init.init_counter, 1)
|
||||
self.assertEqual(_init.shutdown_counter, 0)
|
||||
|
||||
provider.shutdown()
|
||||
self.assertEqual(_init.init_counter, 1)
|
||||
self.assertEqual(_init.shutdown_counter, 1)
|
||||
|
||||
result2 = provider.init()
|
||||
self.assertIsNone(result2)
|
||||
self.assertEqual(_init.init_counter, 2)
|
||||
self.assertEqual(_init.shutdown_counter, 1)
|
||||
|
||||
provider.shutdown()
|
||||
self.assertEqual(_init.init_counter, 2)
|
||||
self.assertEqual(_init.shutdown_counter, 2)
|
||||
|
||||
def test_initialized(self):
|
||||
provider = providers.Resource(init_fn)
|
||||
self.assertFalse(provider.initialized)
|
||||
|
||||
provider.init()
|
||||
self.assertTrue(provider.initialized)
|
||||
|
||||
provider.shutdown()
|
||||
self.assertFalse(provider.initialized)
|
||||
|
||||
def test_call_with_context_args(self):
|
||||
provider = providers.Resource(init_fn, 'i1', 'i2')
|
||||
self.assertEqual(provider('i3', i4=4), (('i1', 'i2', 'i3'), {'i4': 4}))
|
||||
|
||||
def test_fluent_interface(self):
|
||||
provider = providers.Resource(init_fn) \
|
||||
.add_args(1, 2) \
|
||||
.add_kwargs(a3=3, a4=4)
|
||||
|
||||
self.assertEqual(provider(), ((1, 2), {'a3': 3, 'a4': 4}))
|
||||
|
||||
def test_set_args(self):
|
||||
provider = providers.Resource(init_fn) \
|
||||
.add_args(1, 2) \
|
||||
.set_args(3, 4)
|
||||
self.assertEqual(provider.args, tuple([3, 4]))
|
||||
|
||||
def test_clear_args(self):
|
||||
provider = providers.Resource(init_fn) \
|
||||
.add_args(1, 2) \
|
||||
.clear_args()
|
||||
self.assertEqual(provider.args, tuple())
|
||||
|
||||
def test_set_kwargs(self):
|
||||
provider = providers.Resource(init_fn) \
|
||||
.add_kwargs(a1='i1', a2='i2') \
|
||||
.set_kwargs(a3='i3', a4='i4')
|
||||
self.assertEqual(provider.kwargs, {'a3': 'i3', 'a4': 'i4'})
|
||||
|
||||
def test_clear_kwargs(self):
|
||||
provider = providers.Resource(init_fn) \
|
||||
.add_kwargs(a1='i1', a2='i2') \
|
||||
.clear_kwargs()
|
||||
self.assertEqual(provider.kwargs, {})
|
||||
|
||||
def test_call_overridden(self):
|
||||
provider = providers.Resource(init_fn, 1)
|
||||
overriding_provider1 = providers.Resource(init_fn, 2)
|
||||
overriding_provider2 = providers.Resource(init_fn, 3)
|
||||
|
||||
provider.override(overriding_provider1)
|
||||
provider.override(overriding_provider2)
|
||||
|
||||
instance1 = provider()
|
||||
instance2 = provider()
|
||||
|
||||
self.assertIs(instance1, instance2)
|
||||
self.assertEqual(instance1, ((3,), {}))
|
||||
self.assertEqual(instance2, ((3,), {}))
|
||||
|
||||
def test_deepcopy(self):
|
||||
provider = providers.Resource(init_fn, 1, 2, a3=3, a4=4)
|
||||
|
||||
provider_copy = providers.deepcopy(provider)
|
||||
|
||||
self.assertIsNot(provider, provider_copy)
|
||||
self.assertEqual(provider.args, provider_copy.args)
|
||||
self.assertEqual(provider.kwargs, provider_copy.kwargs)
|
||||
self.assertIsInstance(provider, providers.Resource)
|
||||
|
||||
def test_deepcopy_initialized(self):
|
||||
provider = providers.Resource(init_fn)
|
||||
provider.init()
|
||||
|
||||
with self.assertRaises(errors.Error):
|
||||
providers.deepcopy(provider)
|
||||
|
||||
def test_deepcopy_from_memo(self):
|
||||
provider = providers.Resource(init_fn)
|
||||
provider_copy_memo = providers.Resource(init_fn)
|
||||
|
||||
provider_copy = providers.deepcopy(
|
||||
provider,
|
||||
memo={id(provider): provider_copy_memo},
|
||||
)
|
||||
|
||||
self.assertIs(provider_copy, provider_copy_memo)
|
||||
|
||||
def test_deepcopy_args(self):
|
||||
provider = providers.Resource(init_fn)
|
||||
dependent_provider1 = providers.Factory(list)
|
||||
dependent_provider2 = providers.Factory(dict)
|
||||
|
||||
provider.add_args(dependent_provider1, dependent_provider2)
|
||||
|
||||
provider_copy = providers.deepcopy(provider)
|
||||
dependent_provider_copy1 = provider_copy.args[0]
|
||||
dependent_provider_copy2 = provider_copy.args[1]
|
||||
|
||||
self.assertNotEqual(provider.args, provider_copy.args)
|
||||
|
||||
self.assertIs(dependent_provider1.cls, dependent_provider_copy1.cls)
|
||||
self.assertIsNot(dependent_provider1, dependent_provider_copy1)
|
||||
|
||||
self.assertIs(dependent_provider2.cls, dependent_provider_copy2.cls)
|
||||
self.assertIsNot(dependent_provider2, dependent_provider_copy2)
|
||||
|
||||
def test_deepcopy_kwargs(self):
|
||||
provider = providers.Resource(init_fn)
|
||||
dependent_provider1 = providers.Factory(list)
|
||||
dependent_provider2 = providers.Factory(dict)
|
||||
|
||||
provider.add_kwargs(d1=dependent_provider1, d2=dependent_provider2)
|
||||
|
||||
provider_copy = providers.deepcopy(provider)
|
||||
dependent_provider_copy1 = provider_copy.kwargs['d1']
|
||||
dependent_provider_copy2 = provider_copy.kwargs['d2']
|
||||
|
||||
self.assertNotEqual(provider.kwargs, provider_copy.kwargs)
|
||||
|
||||
self.assertIs(dependent_provider1.cls, dependent_provider_copy1.cls)
|
||||
self.assertIsNot(dependent_provider1, dependent_provider_copy1)
|
||||
|
||||
self.assertIs(dependent_provider2.cls, dependent_provider_copy2.cls)
|
||||
self.assertIsNot(dependent_provider2, dependent_provider_copy2)
|
||||
|
||||
def test_deepcopy_overridden(self):
|
||||
provider = providers.Resource(init_fn)
|
||||
object_provider = providers.Object(object())
|
||||
|
||||
provider.override(object_provider)
|
||||
|
||||
provider_copy = providers.deepcopy(provider)
|
||||
object_provider_copy = provider_copy.overridden[0]
|
||||
|
||||
self.assertIsNot(provider, provider_copy)
|
||||
self.assertEqual(provider.args, provider_copy.args)
|
||||
self.assertIsInstance(provider, providers.Resource)
|
||||
|
||||
self.assertIsNot(object_provider, object_provider_copy)
|
||||
self.assertIsInstance(object_provider_copy, providers.Object)
|
||||
|
||||
def test_deepcopy_with_sys_streams(self):
|
||||
provider = providers.Resource(init_fn)
|
||||
provider.add_args(sys.stdin, sys.stdout, sys.stderr)
|
||||
|
||||
provider_copy = providers.deepcopy(provider)
|
||||
|
||||
self.assertIsNot(provider, provider_copy)
|
||||
self.assertIsInstance(provider_copy, providers.Resource)
|
||||
self.assertIs(provider.args[0], sys.stdin)
|
||||
self.assertIs(provider.args[1], sys.stdout)
|
||||
self.assertIs(provider.args[2], sys.stderr)
|
||||
|
||||
# def test_call_with_init_positional_args(self):
|
||||
# provider = providers.List('i1', 'i2')
|
||||
#
|
||||
# list1 = provider()
|
||||
# list2 = provider()
|
||||
#
|
||||
# self.assertEqual(list1, ['i1', 'i2'])
|
||||
# self.assertEqual(list2, ['i1', 'i2'])
|
||||
#
|
||||
# self.assertIsNot(list1, list2)
|
||||
#
|
||||
# def test_call_with_context_args(self):
|
||||
# provider = providers.List('i1', 'i2')
|
||||
#
|
||||
# self.assertEqual(provider('i3', 'i4'), ['i1', 'i2', 'i3', 'i4'])
|
||||
#
|
||||
# def test_fluent_interface(self):
|
||||
# provider = providers.List() \
|
||||
# .add_args(1, 2)
|
||||
#
|
||||
# self.assertEqual(provider(), [1, 2])
|
||||
#
|
||||
# def test_set_args(self):
|
||||
# provider = providers.List() \
|
||||
# .add_args(1, 2) \
|
||||
# .set_args(3, 4)
|
||||
# self.assertEqual(provider.args, tuple([3, 4]))
|
||||
#
|
||||
# def test_clear_args(self):
|
||||
# provider = providers.List() \
|
||||
# .add_args(1, 2) \
|
||||
# .clear_args()
|
||||
# self.assertEqual(provider.args, tuple())
|
||||
#
|
||||
# def test_call_overridden(self):
|
||||
# provider = providers.List(1, 2)
|
||||
# overriding_provider1 = providers.List(2, 3)
|
||||
# overriding_provider2 = providers.List(3, 4)
|
||||
#
|
||||
# provider.override(overriding_provider1)
|
||||
# provider.override(overriding_provider2)
|
||||
#
|
||||
# instance1 = provider()
|
||||
# instance2 = provider()
|
||||
#
|
||||
# self.assertIsNot(instance1, instance2)
|
||||
# self.assertEqual(instance1, [3, 4])
|
||||
# self.assertEqual(instance2, [3, 4])
|
||||
#
|
||||
# def test_deepcopy(self):
|
||||
# provider = providers.List(1, 2)
|
||||
#
|
||||
# provider_copy = providers.deepcopy(provider)
|
||||
#
|
||||
# self.assertIsNot(provider, provider_copy)
|
||||
# self.assertEqual(provider.args, provider_copy.args)
|
||||
# self.assertIsInstance(provider, providers.List)
|
||||
#
|
||||
# def test_deepcopy_from_memo(self):
|
||||
# provider = providers.List(1, 2)
|
||||
# provider_copy_memo = providers.List(1, 2)
|
||||
#
|
||||
# provider_copy = providers.deepcopy(
|
||||
# provider, memo={id(provider): provider_copy_memo})
|
||||
#
|
||||
# self.assertIs(provider_copy, provider_copy_memo)
|
||||
#
|
||||
# def test_deepcopy_args(self):
|
||||
# provider = providers.List()
|
||||
# dependent_provider1 = providers.Factory(list)
|
||||
# dependent_provider2 = providers.Factory(dict)
|
||||
#
|
||||
# provider.add_args(dependent_provider1, dependent_provider2)
|
||||
#
|
||||
# provider_copy = providers.deepcopy(provider)
|
||||
# dependent_provider_copy1 = provider_copy.args[0]
|
||||
# dependent_provider_copy2 = provider_copy.args[1]
|
||||
#
|
||||
# self.assertNotEqual(provider.args, provider_copy.args)
|
||||
#
|
||||
# self.assertIs(dependent_provider1.cls, dependent_provider_copy1.cls)
|
||||
# self.assertIsNot(dependent_provider1, dependent_provider_copy1)
|
||||
#
|
||||
# self.assertIs(dependent_provider2.cls, dependent_provider_copy2.cls)
|
||||
# self.assertIsNot(dependent_provider2, dependent_provider_copy2)
|
||||
#
|
||||
# def test_deepcopy_overridden(self):
|
||||
# provider = providers.List()
|
||||
# object_provider = providers.Object(object())
|
||||
#
|
||||
# provider.override(object_provider)
|
||||
#
|
||||
# provider_copy = providers.deepcopy(provider)
|
||||
# object_provider_copy = provider_copy.overridden[0]
|
||||
#
|
||||
# self.assertIsNot(provider, provider_copy)
|
||||
# self.assertEqual(provider.args, provider_copy.args)
|
||||
# self.assertIsInstance(provider, providers.List)
|
||||
#
|
||||
# self.assertIsNot(object_provider, object_provider_copy)
|
||||
# self.assertIsInstance(object_provider_copy, providers.Object)
|
||||
#
|
||||
# def test_deepcopy_with_sys_streams(self):
|
||||
# provider = providers.List()
|
||||
# provider.add_args(sys.stdin, sys.stdout, sys.stderr)
|
||||
#
|
||||
# provider_copy = providers.deepcopy(provider)
|
||||
#
|
||||
# self.assertIsNot(provider, provider_copy)
|
||||
# self.assertIsInstance(provider_copy, providers.List)
|
||||
# self.assertIs(provider.args[0], sys.stdin)
|
||||
# self.assertIs(provider.args[1], sys.stdout)
|
||||
# self.assertIs(provider.args[2], sys.stderr)
|
||||
#
|
||||
def test_repr(self):
|
||||
provider = providers.Resource(init_fn)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user