mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-11-04 01:47:36 +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