diff --git a/src/dependency_injector/providers.c b/src/dependency_injector/providers.c index c214ab88..dd7193bc 100644 --- a/src/dependency_injector/providers.c +++ b/src/dependency_injector/providers.c @@ -4195,6 +4195,7 @@ static const char __pyx_k_Missing_1st_required_positional[] = "Missing 1st requi static const char __pyx_k_cls_object_has_no_attribute_att[] = "'{cls}' object has no attribute '{attribute_name}'"; static const char __pyx_k_expected_to_get_coroutine_funct[] = " expected to get coroutine function, got "; static const char __pyx_k_Abstract_provider_forward_provid[] = "Abstract provider forward providing logic to overriding provider"; +static const char __pyx_k_Attempted_relative_import_with_n[] = "Attempted relative import with no known parent package"; static const char __pyx_k_Can_not_copy_initialized_resourc[] = "Can not copy initialized resource"; static const char __pyx_k_Can_not_resolve_name_for_provide[] = "Can not resolve name for provider \""; static const char __pyx_k_Configuration_option_can_only_be[] = "Configuration option can only be overridden by a value"; @@ -4241,7 +4242,6 @@ static const char __pyx_k_Unable_to_recognize_settings_ins[] = "Unable to recogn static const char __pyx_k_Undefined_configuration_option_0[] = "Undefined configuration option \"{0}.{1}\""; static const char __pyx_k_Unknown_type_of_resource_initial[] = "Unknown type of resource initializer"; static const char __pyx_k_YAML_loader_This_loader_mimics_y[] = "YAML loader.\n\n This loader mimics ``yaml.SafeLoader``.\n "; -static const char __pyx_k_attempted_relative_import_with_n[] = "attempted relative import with no known parent package"; static const char __pyx_k_src_dependency_injector_provider[] = "src/dependency_injector/providers.pyx"; static PyObject *__pyx_kp_s_; static PyObject *__pyx_kp_s_0_1; @@ -4261,6 +4261,7 @@ static PyObject *__pyx_kp_s_Abstract_provider_forward_provid; static PyObject *__pyx_n_s_Aggregate; static PyObject *__pyx_n_s_Aggregate___get; static PyObject *__pyx_n_s_AsyncResource; +static PyObject *__pyx_kp_s_Attempted_relative_import_with_n; static PyObject *__pyx_n_s_AttributeError; static PyObject *__pyx_n_s_AttributeGetter; static PyObject *__pyx_n_s_AttributeGetter___get; @@ -4450,7 +4451,6 @@ static PyObject *__pyx_n_s_asyncio; static PyObject *__pyx_n_s_asyncio_coroutines; static PyObject *__pyx_n_s_asyncio_tasks; static PyObject *__pyx_kp_u_at; -static PyObject *__pyx_kp_s_attempted_relative_import_with_n; static PyObject *__pyx_n_s_attribute_name; static PyObject *__pyx_n_s_attributes; static PyObject *__pyx_n_s_builtin; @@ -97328,7 +97328,8 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_37_resolve_provides(C PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; Py_ssize_t __pyx_t_6; - PyObject *__pyx_t_7 = NULL; + int __pyx_t_7; + PyObject *__pyx_t_8 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -97339,7 +97340,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_37_resolve_provides(C * def _resolve_provides(provides): * if provides is None: # <<<<<<<<<<<<<< * return provides - * elif not isinstance(provides, str): + * */ __pyx_t_1 = (__pyx_v_provides == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); @@ -97349,8 +97350,8 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_37_resolve_provides(C * def _resolve_provides(provides): * if provides is None: * return provides # <<<<<<<<<<<<<< - * elif not isinstance(provides, str): - * return provides + * + * if not isinstance(provides, str): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_provides); @@ -97362,349 +97363,326 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_37_resolve_provides(C * def _resolve_provides(provides): * if provides is None: # <<<<<<<<<<<<<< * return provides - * elif not isinstance(provides, str): + * */ } - /* "dependency_injector/providers.pyx":4899 - * if provides is None: + /* "dependency_injector/providers.pyx":4900 * return provides - * elif not isinstance(provides, str): # <<<<<<<<<<<<<< + * + * if not isinstance(provides, str): # <<<<<<<<<<<<<< * return provides - * else: + * */ __pyx_t_2 = PyString_Check(__pyx_v_provides); __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0); if (__pyx_t_1) { - /* "dependency_injector/providers.pyx":4900 - * return provides - * elif not isinstance(provides, str): + /* "dependency_injector/providers.pyx":4901 + * + * if not isinstance(provides, str): * return provides # <<<<<<<<<<<<<< - * else: - * segments = provides.split(".") + * + * segments = provides.split(".") */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_provides); __pyx_r = __pyx_v_provides; goto __pyx_L0; - /* "dependency_injector/providers.pyx":4899 - * if provides is None: + /* "dependency_injector/providers.pyx":4900 * return provides - * elif not isinstance(provides, str): # <<<<<<<<<<<<<< + * + * if not isinstance(provides, str): # <<<<<<<<<<<<<< * return provides - * else: + * */ } - /* "dependency_injector/providers.pyx":4902 + /* "dependency_injector/providers.pyx":4903 * return provides - * else: - * segments = provides.split(".") # <<<<<<<<<<<<<< - * member_name = segments[-1] + * + * segments = provides.split(".") # <<<<<<<<<<<<<< + * member_name = segments[-1] * */ - /*else*/ { - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_provides, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4902, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_provides, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4903, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); } - __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s__7) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s__7); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4902, __pyx_L1_error) + } + __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s__7) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s__7); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4903, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_segments = __pyx_t_3; + __pyx_t_3 = 0; + + /* "dependency_injector/providers.pyx":4904 + * + * segments = provides.split(".") + * member_name = segments[-1] # <<<<<<<<<<<<<< + * + * if len(segments) == 1: + */ + __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_segments, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4904, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_member_name = __pyx_t_3; + __pyx_t_3 = 0; + + /* "dependency_injector/providers.pyx":4906 + * member_name = segments[-1] + * + * if len(segments) == 1: # <<<<<<<<<<<<<< + * if member_name in dir(builtins): + * module = builtins + */ + __pyx_t_6 = PyObject_Length(__pyx_v_segments); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(1, 4906, __pyx_L1_error) + __pyx_t_1 = ((__pyx_t_6 == 1) != 0); + if (__pyx_t_1) { + + /* "dependency_injector/providers.pyx":4907 + * + * if len(segments) == 1: + * if member_name in dir(builtins): # <<<<<<<<<<<<<< + * module = builtins + * else: + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_builtins); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_segments = __pyx_t_3; - __pyx_t_3 = 0; - - /* "dependency_injector/providers.pyx":4903 - * else: - * segments = provides.split(".") - * member_name = segments[-1] # <<<<<<<<<<<<<< - * - * if len(segments) == 1: - */ - __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_segments, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4903, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_member_name = __pyx_t_3; - __pyx_t_3 = 0; - - /* "dependency_injector/providers.pyx":4905 - * member_name = segments[-1] - * - * if len(segments) == 1: # <<<<<<<<<<<<<< - * if member_name in dir(builtins): - * module = builtins - */ - __pyx_t_6 = PyObject_Length(__pyx_v_segments); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(1, 4905, __pyx_L1_error) - __pyx_t_1 = ((__pyx_t_6 == 1) != 0); - if (__pyx_t_1) { - - /* "dependency_injector/providers.pyx":4906 - * - * if len(segments) == 1: - * if member_name in dir(builtins): # <<<<<<<<<<<<<< - * module = builtins - * else: - */ - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_builtins); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4906, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyObject_Dir(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4906, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_member_name, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 4906, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_2 = (__pyx_t_1 != 0); - if (__pyx_t_2) { - - /* "dependency_injector/providers.pyx":4907 - * if len(segments) == 1: - * if member_name in dir(builtins): - * module = builtins # <<<<<<<<<<<<<< - * else: - * module = _resolve_calling_module() - */ - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_builtins); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4907, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_v_module = __pyx_t_4; - __pyx_t_4 = 0; - - /* "dependency_injector/providers.pyx":4906 - * - * if len(segments) == 1: - * if member_name in dir(builtins): # <<<<<<<<<<<<<< - * module = builtins - * else: - */ - goto __pyx_L5; - } - - /* "dependency_injector/providers.pyx":4909 - * module = builtins - * else: - * module = _resolve_calling_module() # <<<<<<<<<<<<<< - * return getattr(module, member_name) - * - */ - /*else*/ { - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_resolve_calling_module); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4909, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4909, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_module = __pyx_t_4; - __pyx_t_4 = 0; - } - __pyx_L5:; - - /* "dependency_injector/providers.pyx":4910 - * else: - * module = _resolve_calling_module() - * return getattr(module, member_name) # <<<<<<<<<<<<<< - * - * module_name = ".".join(segments[:-1]) - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_4 = __Pyx_GetAttr(__pyx_v_module, __pyx_v_member_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4910, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_r = __pyx_t_4; - __pyx_t_4 = 0; - goto __pyx_L0; - - /* "dependency_injector/providers.pyx":4905 - * member_name = segments[-1] - * - * if len(segments) == 1: # <<<<<<<<<<<<<< - * if member_name in dir(builtins): - * module = builtins - */ - } - - /* "dependency_injector/providers.pyx":4912 - * return getattr(module, member_name) - * - * module_name = ".".join(segments[:-1]) # <<<<<<<<<<<<<< - * - * package_name = None - */ - __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_segments, 0, -1L, NULL, NULL, &__pyx_slice__43, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4912, __pyx_L1_error) + __pyx_t_4 = PyObject_Dir(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_PyString_Join(__pyx_kp_s__7, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4912, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_module_name = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; - - /* "dependency_injector/providers.pyx":4914 - * module_name = ".".join(segments[:-1]) - * - * package_name = None # <<<<<<<<<<<<<< - * if module_name.startswith("."): - * package_name = _resolve_calling_package_name() - */ - __Pyx_INCREF(Py_None); - __pyx_v_package_name = Py_None; - - /* "dependency_injector/providers.pyx":4915 - * - * package_name = None - * if module_name.startswith("."): # <<<<<<<<<<<<<< - * package_name = _resolve_calling_package_name() - * if package_name is None: - */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_module_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4915, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s__7) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s__7); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4915, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 4915, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_member_name, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 4907, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "dependency_injector/providers.pyx":4916 - * package_name = None - * if module_name.startswith("."): - * package_name = _resolve_calling_package_name() # <<<<<<<<<<<<<< - * if package_name is None: - * raise ImportError("attempted relative import with no known parent package") + /* "dependency_injector/providers.pyx":4908 + * if len(segments) == 1: + * if member_name in dir(builtins): + * module = builtins # <<<<<<<<<<<<<< + * else: + * module = _resolve_calling_module() */ - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_resolve_calling_package_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4916, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_builtins); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4908, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4916, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF_SET(__pyx_v_package_name, __pyx_t_3); - __pyx_t_3 = 0; + __pyx_v_module = __pyx_t_4; + __pyx_t_4 = 0; - /* "dependency_injector/providers.pyx":4917 - * if module_name.startswith("."): - * package_name = _resolve_calling_package_name() - * if package_name is None: # <<<<<<<<<<<<<< - * raise ImportError("attempted relative import with no known parent package") + /* "dependency_injector/providers.pyx":4907 * + * if len(segments) == 1: + * if member_name in dir(builtins): # <<<<<<<<<<<<<< + * module = builtins + * else: */ - __pyx_t_2 = (__pyx_v_package_name == Py_None); - __pyx_t_1 = (__pyx_t_2 != 0); - if (unlikely(__pyx_t_1)) { - - /* "dependency_injector/providers.pyx":4918 - * package_name = _resolve_calling_package_name() - * if package_name is None: - * raise ImportError("attempted relative import with no known parent package") # <<<<<<<<<<<<<< - * - * module = importlib.import_module(module_name, package=package_name) - */ - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4918, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_Raise(__pyx_t_3, 0, 0, 0); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 4918, __pyx_L1_error) - - /* "dependency_injector/providers.pyx":4917 - * if module_name.startswith("."): - * package_name = _resolve_calling_package_name() - * if package_name is None: # <<<<<<<<<<<<<< - * raise ImportError("attempted relative import with no known parent package") - * - */ - } - - /* "dependency_injector/providers.pyx":4915 - * - * package_name = None - * if module_name.startswith("."): # <<<<<<<<<<<<<< - * package_name = _resolve_calling_package_name() - * if package_name is None: - */ + goto __pyx_L6; } - /* "dependency_injector/providers.pyx":4920 - * raise ImportError("attempted relative import with no known parent package") - * - * module = importlib.import_module(module_name, package=package_name) # <<<<<<<<<<<<<< + /* "dependency_injector/providers.pyx":4910 + * module = builtins + * else: + * module = _resolve_calling_module() # <<<<<<<<<<<<<< * return getattr(module, member_name) * */ - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_importlib); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4920, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_import_module); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4920, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4920, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_INCREF(__pyx_v_module_name); - __Pyx_GIVEREF(__pyx_v_module_name); - PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_module_name); - __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4920, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_package, __pyx_v_package_name) < 0) __PYX_ERR(1, 4920, __pyx_L1_error) - __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 4920, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_v_module = __pyx_t_7; - __pyx_t_7 = 0; + /*else*/ { + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_resolve_calling_module); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4910, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_3, function); + } + } + __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4910, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_module = __pyx_t_4; + __pyx_t_4 = 0; + } + __pyx_L6:; - /* "dependency_injector/providers.pyx":4921 - * - * module = importlib.import_module(module_name, package=package_name) + /* "dependency_injector/providers.pyx":4911 + * else: + * module = _resolve_calling_module() * return getattr(module, member_name) # <<<<<<<<<<<<<< * + * module_name = ".".join(segments[:-1]) + */ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = __Pyx_GetAttr(__pyx_v_module, __pyx_v_member_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4911, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "dependency_injector/providers.pyx":4906 + * member_name = segments[-1] + * + * if len(segments) == 1: # <<<<<<<<<<<<<< + * if member_name in dir(builtins): + * module = builtins + */ + } + + /* "dependency_injector/providers.pyx":4913 + * return getattr(module, member_name) + * + * module_name = ".".join(segments[:-1]) # <<<<<<<<<<<<<< + * + * package_name = _resolve_calling_package_name() + */ + __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_segments, 0, -1L, NULL, NULL, &__pyx_slice__43, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4913, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyString_Join(__pyx_kp_s__7, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4913, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_module_name = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "dependency_injector/providers.pyx":4915 + * module_name = ".".join(segments[:-1]) + * + * package_name = _resolve_calling_package_name() # <<<<<<<<<<<<<< + * if module_name.startswith(".") and package_name is None: + * raise ImportError("Attempted relative import with no known parent package") + */ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_resolve_calling_package_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4915, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4915, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_package_name = __pyx_t_3; + __pyx_t_3 = 0; + + /* "dependency_injector/providers.pyx":4916 + * + * package_name = _resolve_calling_package_name() + * if module_name.startswith(".") and package_name is None: # <<<<<<<<<<<<<< + * raise ImportError("Attempted relative import with no known parent package") + * + */ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_module_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4916, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); + if (likely(__pyx_t_5)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_4, function); + } + } + __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s__7) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s__7); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4916, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 4916, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L8_bool_binop_done; + } + __pyx_t_1 = (__pyx_v_package_name == Py_None); + __pyx_t_7 = (__pyx_t_1 != 0); + __pyx_t_2 = __pyx_t_7; + __pyx_L8_bool_binop_done:; + if (unlikely(__pyx_t_2)) { + + /* "dependency_injector/providers.pyx":4917 + * package_name = _resolve_calling_package_name() + * if module_name.startswith(".") and package_name is None: + * raise ImportError("Attempted relative import with no known parent package") # <<<<<<<<<<<<<< + * + * module = importlib.import_module(module_name, package=package_name) + */ + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4917, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_Raise(__pyx_t_3, 0, 0, 0); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __PYX_ERR(1, 4917, __pyx_L1_error) + + /* "dependency_injector/providers.pyx":4916 + * + * package_name = _resolve_calling_package_name() + * if module_name.startswith(".") and package_name is None: # <<<<<<<<<<<<<< + * raise ImportError("Attempted relative import with no known parent package") + * + */ + } + + /* "dependency_injector/providers.pyx":4919 + * raise ImportError("Attempted relative import with no known parent package") + * + * module = importlib.import_module(module_name, package=package_name) # <<<<<<<<<<<<<< + * return getattr(module, member_name) + * + */ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_importlib); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4919, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_import_module); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4919, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4919, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v_module_name); + __Pyx_GIVEREF(__pyx_v_module_name); + PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_module_name); + __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4919, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_package, __pyx_v_package_name) < 0) __PYX_ERR(1, 4919, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 4919, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_module = __pyx_t_8; + __pyx_t_8 = 0; + + /* "dependency_injector/providers.pyx":4920 + * + * module = importlib.import_module(module_name, package=package_name) + * return getattr(module, member_name) # <<<<<<<<<<<<<< + * * */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_7 = __Pyx_GetAttr(__pyx_v_module, __pyx_v_member_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 4921, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_r = __pyx_t_7; - __pyx_t_7 = 0; - goto __pyx_L0; - } + __Pyx_XDECREF(__pyx_r); + __pyx_t_8 = __Pyx_GetAttr(__pyx_v_module, __pyx_v_member_name); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 4920, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_r = __pyx_t_8; + __pyx_t_8 = 0; + goto __pyx_L0; /* "dependency_injector/providers.pyx":4896 * @@ -97719,7 +97697,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_37_resolve_provides(C __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("dependency_injector.providers._resolve_provides", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -97733,7 +97711,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_37_resolve_provides(C return __pyx_r; } -/* "dependency_injector/providers.pyx":4924 +/* "dependency_injector/providers.pyx":4923 * * * def _resolve_calling_module(): # <<<<<<<<<<<<<< @@ -97769,16 +97747,16 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_39_resolve_calling_mo int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_resolve_calling_module", 0); - /* "dependency_injector/providers.pyx":4925 + /* "dependency_injector/providers.pyx":4924 * * def _resolve_calling_module(): * stack = inspect.stack() # <<<<<<<<<<<<<< * pre_last_frame = stack[0] * return inspect.getmodule(pre_last_frame[0]) */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_inspect); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4925, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_inspect); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4924, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_stack); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4925, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_stack); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4924, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; @@ -97793,25 +97771,25 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_39_resolve_calling_mo } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4925, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4924, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_stack = __pyx_t_1; __pyx_t_1 = 0; - /* "dependency_injector/providers.pyx":4926 + /* "dependency_injector/providers.pyx":4925 * def _resolve_calling_module(): * stack = inspect.stack() * pre_last_frame = stack[0] # <<<<<<<<<<<<<< * return inspect.getmodule(pre_last_frame[0]) * */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_stack, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4926, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_stack, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4925, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_pre_last_frame = __pyx_t_1; __pyx_t_1 = 0; - /* "dependency_injector/providers.pyx":4927 + /* "dependency_injector/providers.pyx":4926 * stack = inspect.stack() * pre_last_frame = stack[0] * return inspect.getmodule(pre_last_frame[0]) # <<<<<<<<<<<<<< @@ -97819,12 +97797,12 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_39_resolve_calling_mo * */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_inspect); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4927, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_inspect); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4926, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_getmodule); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4927, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_getmodule); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4926, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_pre_last_frame, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4927, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_pre_last_frame, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4926, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -97839,14 +97817,14 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_39_resolve_calling_mo __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4927, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4926, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "dependency_injector/providers.pyx":4924 + /* "dependency_injector/providers.pyx":4923 * * * def _resolve_calling_module(): # <<<<<<<<<<<<<< @@ -97870,7 +97848,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_39_resolve_calling_mo return __pyx_r; } -/* "dependency_injector/providers.pyx":4930 +/* "dependency_injector/providers.pyx":4929 * * * def _resolve_calling_package_name(): # <<<<<<<<<<<<<< @@ -97904,14 +97882,14 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_41_resolve_calling_pa int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_resolve_calling_package_name", 0); - /* "dependency_injector/providers.pyx":4931 + /* "dependency_injector/providers.pyx":4930 * * def _resolve_calling_package_name(): * module = _resolve_calling_module() # <<<<<<<<<<<<<< * return module.__package__ * */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_resolve_calling_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4931, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_resolve_calling_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { @@ -97925,13 +97903,13 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_41_resolve_calling_pa } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4931, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_module = __pyx_t_1; __pyx_t_1 = 0; - /* "dependency_injector/providers.pyx":4932 + /* "dependency_injector/providers.pyx":4931 * def _resolve_calling_package_name(): * module = _resolve_calling_module() * return module.__package__ # <<<<<<<<<<<<<< @@ -97939,13 +97917,13 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_41_resolve_calling_pa * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_package_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4932, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_package_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4931, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "dependency_injector/providers.pyx":4930 + /* "dependency_injector/providers.pyx":4929 * * * def _resolve_calling_package_name(): # <<<<<<<<<<<<<< @@ -97967,7 +97945,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_41_resolve_calling_pa return __pyx_r; } -/* "dependency_injector/providers.pyx":4935 +/* "dependency_injector/providers.pyx":4934 * * * cpdef _copy_parent(object from_, object to, dict memo): # <<<<<<<<<<<<<< @@ -97991,14 +97969,14 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_parent(PyObject int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_copy_parent", 0); - /* "dependency_injector/providers.pyx":4939 + /* "dependency_injector/providers.pyx":4938 * copied_parent = ( * deepcopy(from_.parent, memo) * if is_provider(from_.parent) or is_container_instance(from_.parent) # <<<<<<<<<<<<<< * else from_.parent * ) */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4939, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = (__pyx_f_19dependency_injector_9providers_is_provider(__pyx_t_3, 0) != 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -98007,7 +97985,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_parent(PyObject __pyx_t_2 = __pyx_t_4; goto __pyx_L3_bool_binop_done; } - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4939, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = (__pyx_f_19dependency_injector_9providers_is_container_instance(__pyx_t_3, 0) != 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -98015,32 +97993,32 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_parent(PyObject __pyx_L3_bool_binop_done:; if (__pyx_t_2) { - /* "dependency_injector/providers.pyx":4938 + /* "dependency_injector/providers.pyx":4937 * """Copy and assign provider parent.""" * copied_parent = ( * deepcopy(from_.parent, memo) # <<<<<<<<<<<<<< * if is_provider(from_.parent) or is_container_instance(from_.parent) * else from_.parent */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4938, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4937, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6.__pyx_n = 1; __pyx_t_6.memo = __pyx_v_memo; - __pyx_t_5 = __pyx_f_19dependency_injector_9providers_deepcopy(__pyx_t_3, 0, &__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4938, __pyx_L1_error) + __pyx_t_5 = __pyx_f_19dependency_injector_9providers_deepcopy(__pyx_t_3, 0, &__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4937, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __pyx_t_5; __pyx_t_5 = 0; } else { - /* "dependency_injector/providers.pyx":4940 + /* "dependency_injector/providers.pyx":4939 * deepcopy(from_.parent, memo) * if is_provider(from_.parent) or is_container_instance(from_.parent) * else from_.parent # <<<<<<<<<<<<<< * ) * to.assign_parent(copied_parent) */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4940, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_from_, __pyx_n_s_parent); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4939, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __pyx_t_5; __pyx_t_5 = 0; @@ -98048,14 +98026,14 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_parent(PyObject __pyx_v_copied_parent = __pyx_t_1; __pyx_t_1 = 0; - /* "dependency_injector/providers.pyx":4942 + /* "dependency_injector/providers.pyx":4941 * else from_.parent * ) * to.assign_parent(copied_parent) # <<<<<<<<<<<<<< * * */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_to, __pyx_n_s_assign_parent); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4942, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_to, __pyx_n_s_assign_parent); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { @@ -98069,12 +98047,12 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_parent(PyObject } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_v_copied_parent) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_copied_parent); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4942, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "dependency_injector/providers.pyx":4935 + /* "dependency_injector/providers.pyx":4934 * * * cpdef _copy_parent(object from_, object to, dict memo): # <<<<<<<<<<<<<< @@ -98136,17 +98114,17 @@ static PyObject *__pyx_pw_19dependency_injector_9providers_44_copy_parent(PyObje case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_to)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_copy_parent", 1, 3, 3, 1); __PYX_ERR(1, 4935, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("_copy_parent", 1, 3, 3, 1); __PYX_ERR(1, 4934, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_memo)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_copy_parent", 1, 3, 3, 2); __PYX_ERR(1, 4935, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("_copy_parent", 1, 3, 3, 2); __PYX_ERR(1, 4934, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_copy_parent") < 0)) __PYX_ERR(1, 4935, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_copy_parent") < 0)) __PYX_ERR(1, 4934, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -98161,13 +98139,13 @@ static PyObject *__pyx_pw_19dependency_injector_9providers_44_copy_parent(PyObje } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_copy_parent", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 4935, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("_copy_parent", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 4934, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("dependency_injector.providers._copy_parent", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_memo), (&PyDict_Type), 1, "memo", 1))) __PYX_ERR(1, 4935, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_memo), (&PyDict_Type), 1, "memo", 1))) __PYX_ERR(1, 4934, __pyx_L1_error) __pyx_r = __pyx_pf_19dependency_injector_9providers_43_copy_parent(__pyx_self, __pyx_v_from_, __pyx_v_to, __pyx_v_memo); /* function exit code */ @@ -98188,7 +98166,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_43_copy_parent(CYTHON int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_copy_parent", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_19dependency_injector_9providers__copy_parent(__pyx_v_from_, __pyx_v_to, __pyx_v_memo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4935, __pyx_L1_error) + __pyx_t_1 = __pyx_f_19dependency_injector_9providers__copy_parent(__pyx_v_from_, __pyx_v_to, __pyx_v_memo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4934, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -98205,7 +98183,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_43_copy_parent(CYTHON return __pyx_r; } -/* "dependency_injector/providers.pyx":4945 +/* "dependency_injector/providers.pyx":4944 * * * cpdef object _memorized_duplicate(object instance, dict memo): # <<<<<<<<<<<<<< @@ -98226,14 +98204,14 @@ static PyObject *__pyx_f_19dependency_injector_9providers__memorized_duplicate(P int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_memorized_duplicate", 0); - /* "dependency_injector/providers.pyx":4946 + /* "dependency_injector/providers.pyx":4945 * * cpdef object _memorized_duplicate(object instance, dict memo): * copied = instance.__class__() # <<<<<<<<<<<<<< * memo[id(instance)] = copied * return copied */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4946, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -98247,13 +98225,13 @@ static PyObject *__pyx_f_19dependency_injector_9providers__memorized_duplicate(P } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4946, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_copied = __pyx_t_1; __pyx_t_1 = 0; - /* "dependency_injector/providers.pyx":4947 + /* "dependency_injector/providers.pyx":4946 * cpdef object _memorized_duplicate(object instance, dict memo): * copied = instance.__class__() * memo[id(instance)] = copied # <<<<<<<<<<<<<< @@ -98262,14 +98240,14 @@ static PyObject *__pyx_f_19dependency_injector_9providers__memorized_duplicate(P */ if (unlikely(__pyx_v_memo == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(1, 4947, __pyx_L1_error) + __PYX_ERR(1, 4946, __pyx_L1_error) } - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_instance); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4947, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, __pyx_v_instance); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4946, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (unlikely(PyDict_SetItem(__pyx_v_memo, __pyx_t_1, __pyx_v_copied) < 0)) __PYX_ERR(1, 4947, __pyx_L1_error) + if (unlikely(PyDict_SetItem(__pyx_v_memo, __pyx_t_1, __pyx_v_copied) < 0)) __PYX_ERR(1, 4946, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "dependency_injector/providers.pyx":4948 + /* "dependency_injector/providers.pyx":4947 * copied = instance.__class__() * memo[id(instance)] = copied * return copied # <<<<<<<<<<<<<< @@ -98281,7 +98259,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers__memorized_duplicate(P __pyx_r = __pyx_v_copied; goto __pyx_L0; - /* "dependency_injector/providers.pyx":4945 + /* "dependency_injector/providers.pyx":4944 * * * cpdef object _memorized_duplicate(object instance, dict memo): # <<<<<<<<<<<<<< @@ -98337,11 +98315,11 @@ static PyObject *__pyx_pw_19dependency_injector_9providers_46_memorized_duplicat case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_memo)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_memorized_duplicate", 1, 2, 2, 1); __PYX_ERR(1, 4945, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("_memorized_duplicate", 1, 2, 2, 1); __PYX_ERR(1, 4944, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_memorized_duplicate") < 0)) __PYX_ERR(1, 4945, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_memorized_duplicate") < 0)) __PYX_ERR(1, 4944, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -98354,13 +98332,13 @@ static PyObject *__pyx_pw_19dependency_injector_9providers_46_memorized_duplicat } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_memorized_duplicate", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 4945, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("_memorized_duplicate", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 4944, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("dependency_injector.providers._memorized_duplicate", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_memo), (&PyDict_Type), 1, "memo", 1))) __PYX_ERR(1, 4945, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_memo), (&PyDict_Type), 1, "memo", 1))) __PYX_ERR(1, 4944, __pyx_L1_error) __pyx_r = __pyx_pf_19dependency_injector_9providers_45_memorized_duplicate(__pyx_self, __pyx_v_instance, __pyx_v_memo); /* function exit code */ @@ -98381,7 +98359,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_45_memorized_duplicat int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_memorized_duplicate", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_19dependency_injector_9providers__memorized_duplicate(__pyx_v_instance, __pyx_v_memo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4945, __pyx_L1_error) + __pyx_t_1 = __pyx_f_19dependency_injector_9providers__memorized_duplicate(__pyx_v_instance, __pyx_v_memo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -98398,7 +98376,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_45_memorized_duplicat return __pyx_r; } -/* "dependency_injector/providers.pyx":4951 +/* "dependency_injector/providers.pyx":4950 * * * cpdef object _copy_if_provider(object instance, dict memo): # <<<<<<<<<<<<<< @@ -98418,7 +98396,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_if_provider(PyOb int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_copy_if_provider", 0); - /* "dependency_injector/providers.pyx":4952 + /* "dependency_injector/providers.pyx":4951 * * cpdef object _copy_if_provider(object instance, dict memo): * if not is_provider(instance): # <<<<<<<<<<<<<< @@ -98428,7 +98406,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_if_provider(PyOb __pyx_t_1 = ((!(__pyx_f_19dependency_injector_9providers_is_provider(__pyx_v_instance, 0) != 0)) != 0); if (__pyx_t_1) { - /* "dependency_injector/providers.pyx":4953 + /* "dependency_injector/providers.pyx":4952 * cpdef object _copy_if_provider(object instance, dict memo): * if not is_provider(instance): * return instance # <<<<<<<<<<<<<< @@ -98440,7 +98418,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_if_provider(PyOb __pyx_r = __pyx_v_instance; goto __pyx_L0; - /* "dependency_injector/providers.pyx":4952 + /* "dependency_injector/providers.pyx":4951 * * cpdef object _copy_if_provider(object instance, dict memo): * if not is_provider(instance): # <<<<<<<<<<<<<< @@ -98449,7 +98427,7 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_if_provider(PyOb */ } - /* "dependency_injector/providers.pyx":4954 + /* "dependency_injector/providers.pyx":4953 * if not is_provider(instance): * return instance * return deepcopy(instance, memo) # <<<<<<<<<<<<<< @@ -98459,13 +98437,13 @@ static PyObject *__pyx_f_19dependency_injector_9providers__copy_if_provider(PyOb __Pyx_XDECREF(__pyx_r); __pyx_t_3.__pyx_n = 1; __pyx_t_3.memo = __pyx_v_memo; - __pyx_t_2 = __pyx_f_19dependency_injector_9providers_deepcopy(__pyx_v_instance, 0, &__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4954, __pyx_L1_error) + __pyx_t_2 = __pyx_f_19dependency_injector_9providers_deepcopy(__pyx_v_instance, 0, &__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4953, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "dependency_injector/providers.pyx":4951 + /* "dependency_injector/providers.pyx":4950 * * * cpdef object _copy_if_provider(object instance, dict memo): # <<<<<<<<<<<<<< @@ -98518,11 +98496,11 @@ static PyObject *__pyx_pw_19dependency_injector_9providers_48_copy_if_provider(P case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_memo)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("_copy_if_provider", 1, 2, 2, 1); __PYX_ERR(1, 4951, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("_copy_if_provider", 1, 2, 2, 1); __PYX_ERR(1, 4950, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_copy_if_provider") < 0)) __PYX_ERR(1, 4951, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_copy_if_provider") < 0)) __PYX_ERR(1, 4950, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -98535,13 +98513,13 @@ static PyObject *__pyx_pw_19dependency_injector_9providers_48_copy_if_provider(P } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("_copy_if_provider", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 4951, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("_copy_if_provider", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 4950, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("dependency_injector.providers._copy_if_provider", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_memo), (&PyDict_Type), 1, "memo", 1))) __PYX_ERR(1, 4951, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_memo), (&PyDict_Type), 1, "memo", 1))) __PYX_ERR(1, 4950, __pyx_L1_error) __pyx_r = __pyx_pf_19dependency_injector_9providers_47_copy_if_provider(__pyx_self, __pyx_v_instance, __pyx_v_memo); /* function exit code */ @@ -98562,7 +98540,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_47_copy_if_provider(C int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_copy_if_provider", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_19dependency_injector_9providers__copy_if_provider(__pyx_v_instance, __pyx_v_memo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4951, __pyx_L1_error) + __pyx_t_1 = __pyx_f_19dependency_injector_9providers__copy_if_provider(__pyx_v_instance, __pyx_v_memo, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4950, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -98579,7 +98557,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_47_copy_if_provider(C return __pyx_r; } -/* "dependency_injector/providers.pyx":4957 +/* "dependency_injector/providers.pyx":4956 * * * cpdef str _class_qualname(object instance): # <<<<<<<<<<<<<< @@ -98602,49 +98580,49 @@ static PyObject *__pyx_f_19dependency_injector_9providers__class_qualname(PyObje int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_class_qualname", 0); - /* "dependency_injector/providers.pyx":4958 + /* "dependency_injector/providers.pyx":4957 * * cpdef str _class_qualname(object instance): * name = getattr(instance.__class__, "__qualname__", None) # <<<<<<<<<<<<<< * if not name: * name = ".".join((instance.__class__.__module__, instance.__class__.__name__)) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4958, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_GetAttr3(__pyx_t_1, __pyx_n_s_qualname, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4958, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetAttr3(__pyx_t_1, __pyx_n_s_qualname, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_name = __pyx_t_2; __pyx_t_2 = 0; - /* "dependency_injector/providers.pyx":4959 + /* "dependency_injector/providers.pyx":4958 * cpdef str _class_qualname(object instance): * name = getattr(instance.__class__, "__qualname__", None) * if not name: # <<<<<<<<<<<<<< * name = ".".join((instance.__class__.__module__, instance.__class__.__name__)) * return name */ - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_name); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 4959, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_name); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 4958, __pyx_L1_error) __pyx_t_4 = ((!__pyx_t_3) != 0); if (__pyx_t_4) { - /* "dependency_injector/providers.pyx":4960 + /* "dependency_injector/providers.pyx":4959 * name = getattr(instance.__class__, "__qualname__", None) * if not name: * name = ".".join((instance.__class__.__module__, instance.__class__.__name__)) # <<<<<<<<<<<<<< * return name */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4960, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_module); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4960, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_module); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4960, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_instance, __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4960, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4960, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); @@ -98652,13 +98630,13 @@ static PyObject *__pyx_f_19dependency_injector_9providers__class_qualname(PyObje PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5); __pyx_t_1 = 0; __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s__7, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4960, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s__7, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_5); __pyx_t_5 = 0; - /* "dependency_injector/providers.pyx":4959 + /* "dependency_injector/providers.pyx":4958 * cpdef str _class_qualname(object instance): * name = getattr(instance.__class__, "__qualname__", None) * if not name: # <<<<<<<<<<<<<< @@ -98667,18 +98645,18 @@ static PyObject *__pyx_f_19dependency_injector_9providers__class_qualname(PyObje */ } - /* "dependency_injector/providers.pyx":4961 + /* "dependency_injector/providers.pyx":4960 * if not name: * name = ".".join((instance.__class__.__module__, instance.__class__.__name__)) * return name # <<<<<<<<<<<<<< */ __Pyx_XDECREF(__pyx_r); - if (!(likely(PyString_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(1, 4961, __pyx_L1_error) + if (!(likely(PyString_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(1, 4960, __pyx_L1_error) __Pyx_INCREF(__pyx_v_name); __pyx_r = ((PyObject*)__pyx_v_name); goto __pyx_L0; - /* "dependency_injector/providers.pyx":4957 + /* "dependency_injector/providers.pyx":4956 * * * cpdef str _class_qualname(object instance): # <<<<<<<<<<<<<< @@ -98722,7 +98700,7 @@ static PyObject *__pyx_pf_19dependency_injector_9providers_49_class_qualname(CYT int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_class_qualname", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_19dependency_injector_9providers__class_qualname(__pyx_v_instance, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4957, __pyx_L1_error) + __pyx_t_1 = __pyx_f_19dependency_injector_9providers__class_qualname(__pyx_v_instance, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -137061,6 +137039,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_Aggregate, __pyx_k_Aggregate, sizeof(__pyx_k_Aggregate), 0, 0, 1, 1}, {&__pyx_n_s_Aggregate___get, __pyx_k_Aggregate___get, sizeof(__pyx_k_Aggregate___get), 0, 0, 1, 1}, {&__pyx_n_s_AsyncResource, __pyx_k_AsyncResource, sizeof(__pyx_k_AsyncResource), 0, 0, 1, 1}, + {&__pyx_kp_s_Attempted_relative_import_with_n, __pyx_k_Attempted_relative_import_with_n, sizeof(__pyx_k_Attempted_relative_import_with_n), 0, 0, 1, 0}, {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1}, {&__pyx_n_s_AttributeGetter, __pyx_k_AttributeGetter, sizeof(__pyx_k_AttributeGetter), 0, 0, 1, 1}, {&__pyx_n_s_AttributeGetter___get, __pyx_k_AttributeGetter___get, sizeof(__pyx_k_AttributeGetter___get), 0, 0, 1, 1}, @@ -137250,7 +137229,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1}, {&__pyx_n_s_asyncio_tasks, __pyx_k_asyncio_tasks, sizeof(__pyx_k_asyncio_tasks), 0, 0, 1, 1}, {&__pyx_kp_u_at, __pyx_k_at, sizeof(__pyx_k_at), 0, 1, 0, 0}, - {&__pyx_kp_s_attempted_relative_import_with_n, __pyx_k_attempted_relative_import_with_n, sizeof(__pyx_k_attempted_relative_import_with_n), 0, 0, 1, 0}, {&__pyx_n_s_attribute_name, __pyx_k_attribute_name, sizeof(__pyx_k_attribute_name), 0, 0, 1, 1}, {&__pyx_n_s_attributes, __pyx_k_attributes, sizeof(__pyx_k_attributes), 0, 0, 1, 1}, {&__pyx_n_s_builtin, __pyx_k_builtin, sizeof(__pyx_k_builtin), 0, 0, 1, 1}, @@ -137720,25 +137698,25 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__37); __Pyx_GIVEREF(__pyx_tuple__37); - /* "dependency_injector/providers.pyx":4912 - * return getattr(module, member_name) + /* "dependency_injector/providers.pyx":4913 + * return getattr(module, member_name) * - * module_name = ".".join(segments[:-1]) # <<<<<<<<<<<<<< + * module_name = ".".join(segments[:-1]) # <<<<<<<<<<<<<< * - * package_name = None + * package_name = _resolve_calling_package_name() */ - __pyx_slice__43 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__43)) __PYX_ERR(1, 4912, __pyx_L1_error) + __pyx_slice__43 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__43)) __PYX_ERR(1, 4913, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__43); __Pyx_GIVEREF(__pyx_slice__43); - /* "dependency_injector/providers.pyx":4918 - * package_name = _resolve_calling_package_name() - * if package_name is None: - * raise ImportError("attempted relative import with no known parent package") # <<<<<<<<<<<<<< + /* "dependency_injector/providers.pyx":4917 + * package_name = _resolve_calling_package_name() + * if module_name.startswith(".") and package_name is None: + * raise ImportError("Attempted relative import with no known parent package") # <<<<<<<<<<<<<< * - * module = importlib.import_module(module_name, package=package_name) + * module = importlib.import_module(module_name, package=package_name) */ - __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_attempted_relative_import_with_n); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(1, 4918, __pyx_L1_error) + __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_Attempted_relative_import_with_n); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(1, 4917, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__44); __Pyx_GIVEREF(__pyx_tuple__44); @@ -137954,29 +137932,29 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_GIVEREF(__pyx_tuple__78); __pyx_codeobj__79 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__78, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dependency_injector_provider, __pyx_n_s_resolve_provides, 4896, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__79)) __PYX_ERR(1, 4896, __pyx_L1_error) - /* "dependency_injector/providers.pyx":4924 + /* "dependency_injector/providers.pyx":4923 * * * def _resolve_calling_module(): # <<<<<<<<<<<<<< * stack = inspect.stack() * pre_last_frame = stack[0] */ - __pyx_tuple__80 = PyTuple_Pack(2, __pyx_n_s_stack, __pyx_n_s_pre_last_frame); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(1, 4924, __pyx_L1_error) + __pyx_tuple__80 = PyTuple_Pack(2, __pyx_n_s_stack, __pyx_n_s_pre_last_frame); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(1, 4923, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__80); __Pyx_GIVEREF(__pyx_tuple__80); - __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__80, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dependency_injector_provider, __pyx_n_s_resolve_calling_module, 4924, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(1, 4924, __pyx_L1_error) + __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__80, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dependency_injector_provider, __pyx_n_s_resolve_calling_module, 4923, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(1, 4923, __pyx_L1_error) - /* "dependency_injector/providers.pyx":4930 + /* "dependency_injector/providers.pyx":4929 * * * def _resolve_calling_package_name(): # <<<<<<<<<<<<<< * module = _resolve_calling_module() * return module.__package__ */ - __pyx_tuple__82 = PyTuple_Pack(1, __pyx_n_s_module_2); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(1, 4930, __pyx_L1_error) + __pyx_tuple__82 = PyTuple_Pack(1, __pyx_n_s_module_2); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(1, 4929, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__82); __Pyx_GIVEREF(__pyx_tuple__82); - __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dependency_injector_provider, __pyx_n_s_resolve_calling_package_name, 4930, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(1, 4930, __pyx_L1_error) + __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__82, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dependency_injector_provider, __pyx_n_s_resolve_calling_package_name, 4929, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(1, 4929, __pyx_L1_error) /* "(tree fragment)":1 * def __pyx_unpickle_Provider(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< @@ -141766,28 +141744,28 @@ if (!__Pyx_RefNanny) { if (PyDict_SetItem(__pyx_d, __pyx_n_s_resolve_provides, __pyx_t_1) < 0) __PYX_ERR(1, 4896, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "dependency_injector/providers.pyx":4924 + /* "dependency_injector/providers.pyx":4923 * * * def _resolve_calling_module(): # <<<<<<<<<<<<<< * stack = inspect.stack() * pre_last_frame = stack[0] */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_19dependency_injector_9providers_40_resolve_calling_module, NULL, __pyx_n_s_dependency_injector_providers); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4924, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_19dependency_injector_9providers_40_resolve_calling_module, NULL, __pyx_n_s_dependency_injector_providers); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4923, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_resolve_calling_module, __pyx_t_1) < 0) __PYX_ERR(1, 4924, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_resolve_calling_module, __pyx_t_1) < 0) __PYX_ERR(1, 4923, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "dependency_injector/providers.pyx":4930 + /* "dependency_injector/providers.pyx":4929 * * * def _resolve_calling_package_name(): # <<<<<<<<<<<<<< * module = _resolve_calling_module() * return module.__package__ */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_19dependency_injector_9providers_42_resolve_calling_package_name, NULL, __pyx_n_s_dependency_injector_providers); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4930, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_19dependency_injector_9providers_42_resolve_calling_package_name, NULL, __pyx_n_s_dependency_injector_providers); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_resolve_calling_package_name, __pyx_t_1) < 0) __PYX_ERR(1, 4930, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_resolve_calling_package_name, __pyx_t_1) < 0) __PYX_ERR(1, 4929, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "(tree fragment)":1 diff --git a/src/dependency_injector/providers.pyx b/src/dependency_injector/providers.pyx index 89bf022d..7bb1573a 100644 --- a/src/dependency_injector/providers.pyx +++ b/src/dependency_injector/providers.pyx @@ -4896,30 +4896,29 @@ def isasyncgenfunction(obj): def _resolve_provides(provides): if provides is None: return provides - elif not isinstance(provides, str): + + if not isinstance(provides, str): return provides - else: - segments = provides.split(".") - member_name = segments[-1] - if len(segments) == 1: - if member_name in dir(builtins): - module = builtins - else: - module = _resolve_calling_module() - return getattr(module, member_name) + segments = provides.split(".") + member_name = segments[-1] - module_name = ".".join(segments[:-1]) - - package_name = None - if module_name.startswith("."): - package_name = _resolve_calling_package_name() - if package_name is None: - raise ImportError("attempted relative import with no known parent package") - - module = importlib.import_module(module_name, package=package_name) + if len(segments) == 1: + if member_name in dir(builtins): + module = builtins + else: + module = _resolve_calling_module() return getattr(module, member_name) + module_name = ".".join(segments[:-1]) + + package_name = _resolve_calling_package_name() + if module_name.startswith(".") and package_name is None: + raise ImportError("Attempted relative import with no known parent package") + + module = importlib.import_module(module_name, package=package_name) + return getattr(module, member_name) + def _resolve_calling_module(): stack = inspect.stack()