Generated by Cython 0.29.34

Yellow lines hint at Python interaction.
Click on a line that starts with a "+" to see the C code that Cython generated for it.

Raw output: c_di.c

 001: # cython: language_level=3
 002: from ..components.c_components cimport Components
+003: from ..components import ComponentLookupError
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_ComponentLookupError);
  __Pyx_GIVEREF(__pyx_n_s_ComponentLookupError);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_ComponentLookupError);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_components, __pyx_t_1, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __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_ComponentLookupError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ComponentLookupError, __pyx_t_1) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+004: from buvar import context
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_context);
  __Pyx_GIVEREF(__pyx_n_s_context);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_context);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_buvar, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_context); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_context, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 005: 
 006: 
+007: missing = object()
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_object); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_missing, __pyx_t_1) < 0) __PYX_ERR(0, 7, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 008: 
 009: 
+010: cdef class ResolveError(Exception):
struct __pyx_obj_5buvar_2di_4c_di_ResolveError {
  PyBaseExceptionObject __pyx_base;
};

 011:     pass
 012: 
 013: 
+014: cdef _get_name_or_default(cmps: Components, target, name=None):
static PyObject *__pyx_f_5buvar_2di_4c_di__get_name_or_default(struct __pyx_obj_5buvar_10components_12c_components_Components *__pyx_v_cmps, PyObject *__pyx_v_target, struct __pyx_opt_args_5buvar_2di_4c_di__get_name_or_default *__pyx_optional_args) {
  PyObject *__pyx_v_name = ((PyObject *)Py_None);
  PyObject *__pyx_v_component = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_get_name_or_default", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_name = __pyx_optional_args->name;
    }
  }
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("buvar.di.c_di._get_name_or_default", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_component);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5buvar_2di_4c_di__get_name_or_default {
  int __pyx_n;
  PyObject *name;
};
 015:     # find in components
+016:     if name is not None:
  __pyx_t_1 = (__pyx_v_name != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
/* … */
  }
+017:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L1_error;
      __pyx_L8_try_return:;
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L0;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    }
+018:             component = cmps.get(target, name=name)
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cmps), __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 18, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 18, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_v_target);
        __Pyx_GIVEREF(__pyx_v_target);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_target);
        __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 18, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_name, __pyx_v_name) < 0) __PYX_ERR(0, 18, __pyx_L4_error)
        __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 18, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_v_component = __pyx_t_9;
        __pyx_t_9 = 0;
+019:             return component
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_v_component);
        __pyx_r = __pyx_v_component;
        goto __pyx_L8_try_return;
+020:         except ComponentLookupError:
      __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_ComponentLookupError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 20, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_9, __pyx_t_6);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_ErrRestore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
      __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0;
      if (__pyx_t_10) {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;
      __pyx_L6_except_error:;
 021:             pass
 022: 
+023:     component = cmps.get(target, name=None)
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cmps), __pyx_n_s_get); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_v_target);
  __Pyx_GIVEREF(__pyx_v_target);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_target);
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_name, Py_None) < 0) __PYX_ERR(0, 23, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_XDECREF_SET(__pyx_v_component, __pyx_t_6);
  __pyx_t_6 = 0;
+024:     return component
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_component);
  __pyx_r = __pyx_v_component;
  goto __pyx_L0;
 025: 
 026: 
+027: cdef prepare_components(tuple targets, dict dependencies):
static PyObject *__pyx_f_5buvar_2di_4c_di_prepare_components(CYTHON_UNUSED PyObject *__pyx_v_targets, PyObject *__pyx_v_dependencies) {
  struct __pyx_obj_5buvar_10components_12c_components_Components *__pyx_v_cmps = 0;
  PyObject *__pyx_v_stack = 0;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_dep = NULL;
  struct __pyx_obj_5buvar_10components_12c_components_Components *__pyx_v_current_context = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("prepare_components", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("buvar.di.c_di.prepare_components", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cmps);
  __Pyx_XDECREF(__pyx_v_stack);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_dep);
  __Pyx_XDECREF((PyObject *)__pyx_v_current_context);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_5buvar_2di_4c_di_12AdaptersImpl_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
 028:     # create components
+029:     cdef Components cmps = Components()
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_5buvar_10components_12c_components_Components)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cmps = ((struct __pyx_obj_5buvar_10components_12c_components_Components *)__pyx_t_1);
  __pyx_t_1 = 0;
 030:     cdef list stack
 031: 
 032:     # add default unnamed dependencies
 033:     # every non-default argument of the same type gets its value
 034:     # XXX is this good?
+035:     for name, dep in dependencies.items():
  __pyx_t_2 = 0;
  if (unlikely(__pyx_v_dependencies == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 35, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_dependencies, 1, __pyx_n_s_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_5;
  __pyx_t_5 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 35, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_XDECREF_SET(__pyx_v_dep, __pyx_t_6);
    __pyx_t_6 = 0;
+036:         cmps.add(dep)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cmps), __pyx_n_s_add); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    __pyx_t_6 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_8, __pyx_v_dep) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_dep);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 037: 
+038:     cdef Components current_context = context.current_context()
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_context); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_current_context); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5buvar_10components_12c_components_Components))))) __PYX_ERR(0, 38, __pyx_L1_error)
  __pyx_v_current_context = ((struct __pyx_obj_5buvar_10components_12c_components_Components *)__pyx_t_1);
  __pyx_t_1 = 0;
 039: 
 040:     # add current context
+041:     if not current_context:
  __pyx_t_9 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_current_context)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 41, __pyx_L1_error)
  __pyx_t_10 = ((!__pyx_t_9) != 0);
  if (__pyx_t_10) {
/* … */
    goto __pyx_L5;
  }
+042:         stack = []
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_stack = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;
 043:     else:
+044:         stack = current_context.stack
  /*else*/ {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_current_context), __pyx_n_s_stack); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||((void)PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 44, __pyx_L1_error)
    __pyx_v_stack = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;
  }
  __pyx_L5:;
+045:     cmps = cmps.push(*stack)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cmps), __pyx_n_s_push); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PySequence_Tuple(__pyx_v_stack); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5buvar_10components_12c_components_Components))))) __PYX_ERR(0, 45, __pyx_L1_error)
  __Pyx_DECREF_SET(__pyx_v_cmps, ((struct __pyx_obj_5buvar_10components_12c_components_Components *)__pyx_t_6));
  __pyx_t_6 = 0;
 046: 
 047:     # add default named dependencies
+048:     cmps = cmps.push()
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cmps), __pyx_n_s_push); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  __pyx_t_6 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5buvar_10components_12c_components_Components))))) __PYX_ERR(0, 48, __pyx_L1_error)
  __Pyx_DECREF_SET(__pyx_v_cmps, ((struct __pyx_obj_5buvar_10components_12c_components_Components *)__pyx_t_6));
  __pyx_t_6 = 0;
+049:     for name, dep in dependencies.items():
  __pyx_t_3 = 0;
  if (unlikely(__pyx_v_dependencies == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 49, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_dependencies, 1, __pyx_n_s_items, (&__pyx_t_2), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __pyx_t_6 = __pyx_t_5;
  __pyx_t_5 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_2, &__pyx_t_3, &__pyx_t_5, &__pyx_t_1, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_XDECREF_SET(__pyx_v_dep, __pyx_t_1);
    __pyx_t_1 = 0;
+050:         cmps.add(dep, name=name)
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cmps), __pyx_n_s_add); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_dep);
    __Pyx_GIVEREF(__pyx_v_dep);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_dep);
    __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_name, __pyx_v_name) < 0) __PYX_ERR(0, 50, __pyx_L1_error)
    __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 051: 
+052:     return cmps
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_cmps));
  __pyx_r = ((PyObject *)__pyx_v_cmps);
  goto __pyx_L0;
 053: 
 054: 
+055: cdef class AdaptersImpl:
struct __pyx_obj_5buvar_2di_4c_di_AdaptersImpl {
  PyObject_HEAD
};

+056:     async def nject(self, *targets, **dependencies):
/* Python wrapper */
static PyObject *__pyx_pw_5buvar_2di_4c_di_12AdaptersImpl_1nject(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_5buvar_2di_4c_di_12AdaptersImpl_nject[] = "Resolve all dependencies and return the created component.";
static PyObject *__pyx_pw_5buvar_2di_4c_di_12AdaptersImpl_1nject(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_targets = 0;
  PyObject *__pyx_v_dependencies = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("nject (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "nject", 1))) return NULL;
  __pyx_v_dependencies = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_dependencies)) return NULL;
  __Pyx_GOTREF(__pyx_v_dependencies);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_targets = __pyx_args;
  __pyx_r = __pyx_pf_5buvar_2di_4c_di_12AdaptersImpl_nject(((struct __pyx_obj_5buvar_2di_4c_di_AdaptersImpl *)__pyx_v_self), __pyx_v_targets, __pyx_v_dependencies);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_targets);
  __Pyx_XDECREF(__pyx_v_dependencies);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_5buvar_2di_4c_di_12AdaptersImpl_5nject_7genexpr_2generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
/* … */
static PyObject *__pyx_pf_5buvar_2di_4c_di_12AdaptersImpl_nject(struct __pyx_obj_5buvar_2di_4c_di_AdaptersImpl *__pyx_v_self, PyObject *__pyx_v_targets, PyObject *__pyx_v_dependencies) {
  struct __pyx_obj_5buvar_2di_4c_di___pyx_scope_struct__nject *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("nject", 0);
  __pyx_cur_scope = (struct __pyx_obj_5buvar_2di_4c_di___pyx_scope_struct__nject *)__pyx_tp_new_5buvar_2di_4c_di___pyx_scope_struct__nject(__pyx_ptype_5buvar_2di_4c_di___pyx_scope_struct__nject, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_5buvar_2di_4c_di___pyx_scope_struct__nject *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 56, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_targets = __pyx_v_targets;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_targets);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_targets);
  __pyx_cur_scope->__pyx_v_dependencies = __pyx_v_dependencies;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_dependencies);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_dependencies);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_5buvar_2di_4c_di_12AdaptersImpl_2generator, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_nject, __pyx_n_s_AdaptersImpl_nject, __pyx_n_s_buvar_di_c_di); if (unlikely(!gen)) __PYX_ERR(0, 56, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("buvar.di.c_di.AdaptersImpl.nject", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_5buvar_2di_4c_di_12AdaptersImpl_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("nject", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 56, __pyx_L1_error)
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("nject", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_5buvar_2di_4c_di_12AdaptersImpl_5generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
/* … */
struct __pyx_obj_5buvar_2di_4c_di___pyx_scope_struct__nject {
  PyObject_HEAD
  PyObject *__pyx_v__targets;
  struct __pyx_obj_5buvar_10components_12c_components_Components *__pyx_v_cmps;
  PyObject *__pyx_v_dependencies;
  PyObject *__pyx_v_genexpr;
  PyObject *__pyx_v_injected;
  PyObject *__pyx_7genexpr__pyx_v_name;
  struct __pyx_obj_5buvar_2di_4c_di_AdaptersImpl *__pyx_v_self;
  PyObject *__pyx_7genexpr__pyx_v_target;
  PyObject *__pyx_v_targets;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
};

 057:         """Resolve all dependencies and return the created component."""
 058: 
+059:         cdef tuple _targets = targets
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_targets);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_targets);
  __pyx_cur_scope->__pyx_v__targets = __pyx_cur_scope->__pyx_v_targets;
 060: 
 061:          # create components
+062:         cdef Components cmps = prepare_components(_targets, dependencies)        # create components
  __pyx_t_1 = __pyx_f_5buvar_2di_4c_di_prepare_components(__pyx_cur_scope->__pyx_v__targets, __pyx_cur_scope->__pyx_v_dependencies); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5buvar_10components_12c_components_Components))))) __PYX_ERR(0, 62, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_cmps = ((struct __pyx_obj_5buvar_10components_12c_components_Components *)__pyx_t_1);
  __pyx_t_1 = 0;
 063:         # find the proper components to instantiate that class
+064:         cdef list injected = [
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
+065:             await self.resolve_adapter(cmps, target, name=name)
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_resolve_adapter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 65, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 65, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_cmps));
      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_cmps));
      PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_cmps));
      __Pyx_INCREF(__pyx_cur_scope->__pyx_7genexpr__pyx_v_target);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_7genexpr__pyx_v_target);
      PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_cur_scope->__pyx_7genexpr__pyx_v_target);
      __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 65, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_name, __pyx_cur_scope->__pyx_7genexpr__pyx_v_name) < 0) __PYX_ERR(0, 65, __pyx_L1_error)
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 65, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_8);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_1);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
        __Pyx_XGIVEREF(__pyx_t_3);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
        __pyx_cur_scope->__pyx_t_3 = __pyx_t_5;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L8_resume_from_await:;
        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_1);
        __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_3);
        __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
        __pyx_t_5 = __pyx_cur_scope->__pyx_t_3;
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 65, __pyx_L1_error)
        __pyx_t_8 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_8);
      } else {
        __pyx_t_8 = NULL;
        if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_8) < 0) __PYX_ERR(0, 65, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 64, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+066:             for name, target in ((None, target) for target in targets)
static PyObject *__pyx_pf_5buvar_2di_4c_di_12AdaptersImpl_5nject_7genexpr_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_5buvar_2di_4c_di___pyx_scope_struct_1_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_5buvar_2di_4c_di___pyx_scope_struct_1_genexpr *)__pyx_tp_new_5buvar_2di_4c_di___pyx_scope_struct_1_genexpr(__pyx_ptype_5buvar_2di_4c_di___pyx_scope_struct_1_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_5buvar_2di_4c_di___pyx_scope_struct_1_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 66, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_5buvar_2di_4c_di___pyx_scope_struct__nject *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_5buvar_2di_4c_di_12AdaptersImpl_5nject_7genexpr_2generator2, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_nject_locals_genexpr, __pyx_n_s_buvar_di_c_di); if (unlikely(!gen)) __PYX_ERR(0, 66, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("buvar.di.c_di.AdaptersImpl.nject.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_5buvar_2di_4c_di_12AdaptersImpl_5nject_7genexpr_2generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 66, __pyx_L1_error)
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_targets)) { __Pyx_RaiseClosureNameError("targets"); __PYX_ERR(0, 66, __pyx_L1_error) }
  if (unlikely(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_targets == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 66, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_targets; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 66, __pyx_L1_error)
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_target);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_target, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_target);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_target);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_cur_scope->__pyx_v_target);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 66, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
    __pyx_t_2 = __pyx_pf_5buvar_2di_4c_di_12AdaptersImpl_5nject_7genexpr_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
      __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 66, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    for (;;) {
      if (likely(!__pyx_t_5)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 66, __pyx_L1_error)
          #else
          __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 66, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          #endif
        } else {
          if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 66, __pyx_L1_error)
          #else
          __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 66, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          #endif
        }
      } else {
        __pyx_t_2 = __pyx_t_5(__pyx_t_3);
        if (unlikely(!__pyx_t_2)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 66, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_2);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
        PyObject* sequence = __pyx_t_2;
        Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(0, 66, __pyx_L1_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        #else
        __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 66, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 66, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 66, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L6_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 66, __pyx_L1_error)
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L7_unpacking_done;
        __pyx_L6_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(0, 66, __pyx_L1_error)
        __pyx_L7_unpacking_done:;
      }
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_7genexpr__pyx_v_name);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_7genexpr__pyx_v_name, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_7genexpr__pyx_v_target);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_7genexpr__pyx_v_target, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      __pyx_t_7 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } /* exit inner scope */
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_injected = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
/* … */
struct __pyx_obj_5buvar_2di_4c_di___pyx_scope_struct_1_genexpr {
  PyObject_HEAD
  struct __pyx_obj_5buvar_2di_4c_di___pyx_scope_struct__nject *__pyx_outer_scope;
  PyObject *__pyx_v_target;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
};

 067:         ]
+068:         if len(targets) == 1:
  __pyx_t_1 = __pyx_cur_scope->__pyx_v_targets;
  __Pyx_INCREF(__pyx_t_1);
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 68, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_10 = ((__pyx_t_4 == 1) != 0);
  if (__pyx_t_10) {
/* … */
  }
+069:             return injected[0]
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_cur_scope->__pyx_v_injected, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L0;
+070:         return injected
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_cur_scope->__pyx_v_injected);
  goto __pyx_L0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
 071: 
+072:     async def resolve_adapter(self, cmps, target, *, name=None, default=missing):
/* Python wrapper */
static PyObject *__pyx_pw_5buvar_2di_4c_di_12AdaptersImpl_4resolve_adapter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_5buvar_2di_4c_di_12AdaptersImpl_4resolve_adapter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cmps = 0;
  PyObject *__pyx_v_target = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_default = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("resolve_adapter (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cmps,&__pyx_n_s_target,&__pyx_n_s_name,&__pyx_n_s_default,0};
    PyObject* values[4] = {0,0,0,0};
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cmps)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_target)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("resolve_adapter", 1, 2, 2, 1); __PYX_ERR(0, 72, __pyx_L3_error)
        }
      }
      if (kw_args > 0 && likely(kw_args <= 2)) {
        Py_ssize_t index;
        for (index = 2; index < 4 && kw_args > 0; index++) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, *__pyx_pyargnames[index]);
          if (value) { values[index] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "resolve_adapter") < 0)) __PYX_ERR(0, 72, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cmps = values[0];
    __pyx_v_target = values[1];
    __pyx_v_name = values[2];
    __pyx_v_default = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("resolve_adapter", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 72, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("buvar.di.c_di.AdaptersImpl.resolve_adapter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5buvar_2di_4c_di_12AdaptersImpl_3resolve_adapter(((struct __pyx_obj_5buvar_2di_4c_di_AdaptersImpl *)__pyx_v_self), __pyx_v_cmps, __pyx_v_target, __pyx_v_name, __pyx_v_default);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_5buvar_2di_4c_di_12AdaptersImpl_3resolve_adapter(struct __pyx_obj_5buvar_2di_4c_di_AdaptersImpl *__pyx_v_self, PyObject *__pyx_v_cmps, PyObject *__pyx_v_target, PyObject *__pyx_v_name, PyObject *__pyx_v_default) {
  struct __pyx_obj_5buvar_2di_4c_di___pyx_scope_struct_2_resolve_adapter *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("resolve_adapter", 0);
  __pyx_cur_scope = (struct __pyx_obj_5buvar_2di_4c_di___pyx_scope_struct_2_resolve_adapter *)__pyx_tp_new_5buvar_2di_4c_di___pyx_scope_struct_2_resolve_adapter(__pyx_ptype_5buvar_2di_4c_di___pyx_scope_struct_2_resolve_adapter, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_5buvar_2di_4c_di___pyx_scope_struct_2_resolve_adapter *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 72, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_cmps = __pyx_v_cmps;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cmps);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cmps);
  __pyx_cur_scope->__pyx_v_target = __pyx_v_target;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_target);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_target);
  __pyx_cur_scope->__pyx_v_name = __pyx_v_name;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name);
  __pyx_cur_scope->__pyx_v_default = __pyx_v_default;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_default);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_default);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_5buvar_2di_4c_di_12AdaptersImpl_5generator1, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_resolve_adapter, __pyx_n_s_AdaptersImpl_resolve_adapter, __pyx_n_s_buvar_di_c_di); if (unlikely(!gen)) __PYX_ERR(0, 72, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("buvar.di.c_di.AdaptersImpl.resolve_adapter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_5buvar_2di_4c_di_12AdaptersImpl_5generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("resolve_adapter", 0);
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 72, __pyx_L1_error)
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_AddTraceback("resolve_adapter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_missing); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k_ = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
/* … */
struct __pyx_obj_5buvar_2di_4c_di___pyx_scope_struct_2_resolve_adapter {
  PyObject_HEAD
  PyObject *__pyx_v_adapter;
  PyObject *__pyx_v_adapter_args;
  PyObject *__pyx_v_cmps;
  PyObject *__pyx_v_component;
  PyObject *__pyx_v_default;
  PyObject *__pyx_v_ex;
  PyObject *__pyx_v_name;
  PyObject *__pyx_8genexpr2__pyx_v_param;
  PyObject *__pyx_v_resolve_errors;
  struct __pyx_obj_5buvar_2di_4c_di_AdaptersImpl *__pyx_v_self;
  PyObject *__pyx_v_target;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
  PyObject *__pyx_t_3;
  PyObject *__pyx_t_4;
  PyObject *__pyx_t_5;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  PyObject *__pyx_t_11;
};


 073:         # find in components
+074:         try:
  {
    /*try:*/ {
/* … */
    }
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L8_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L5_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
  }
+075:             component = _get_name_or_default(cmps, target, name)
      if (!(likely(((__pyx_cur_scope->__pyx_v_cmps) == Py_None) || likely(__Pyx_TypeTest(__pyx_cur_scope->__pyx_v_cmps, __pyx_ptype_5buvar_10components_12c_components_Components))))) __PYX_ERR(0, 75, __pyx_L4_error)
      __pyx_t_5.__pyx_n = 1;
      __pyx_t_5.name = __pyx_cur_scope->__pyx_v_name;
      __pyx_t_4 = __pyx_f_5buvar_2di_4c_di__get_name_or_default(((struct __pyx_obj_5buvar_10components_12c_components_Components *)__pyx_cur_scope->__pyx_v_cmps), __pyx_cur_scope->__pyx_v_target, &__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 75, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_cur_scope->__pyx_v_component = __pyx_t_4;
      __pyx_t_4 = 0;
+076:             return component
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_cur_scope->__pyx_v_component);
      goto __pyx_L8_try_return;
+077:         except ComponentLookupError:
    __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7);
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ComponentLookupError); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 77, __pyx_L6_except_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_8);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_ErrRestore(__pyx_t_4, __pyx_t_6, __pyx_t_7);
    __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0;
    if (__pyx_t_9) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L5_exception_handled;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;
 078:             pass
 079: 
+080:         cdef list resolve_errors = []
  __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_7);
  __pyx_cur_scope->__pyx_v_resolve_errors = ((PyObject*)__pyx_t_7);
  __pyx_t_7 = 0;
 081:         cdef dict adapter_args
 082: 
+083:         for adapter in self.lookup(target):
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_lookup); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_cur_scope->__pyx_v_target) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_cur_scope->__pyx_v_target);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
    __pyx_t_6 = __pyx_t_7; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0;
    __pyx_t_11 = NULL;
  } else {
    __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 83, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  for (;;) {
    if (likely(!__pyx_t_11)) {
      if (likely(PyList_CheckExact(__pyx_t_6))) {
        if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_6)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 83, __pyx_L1_error)
        #else
        __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 83, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
      } else {
        if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 83, __pyx_L1_error)
        #else
        __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 83, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
      }
    } else {
      __pyx_t_7 = __pyx_t_11(__pyx_t_6);
      if (unlikely(!__pyx_t_7)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 83, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_7);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_adapter);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_adapter, __pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_7);
    __pyx_t_7 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+084:             try:
    {
      /*try:*/ {
/* … */
      }
/* … */
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_1);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
      goto __pyx_L1_error;
      __pyx_L15_except_return:;
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_1);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
      goto __pyx_L0;
      __pyx_L13_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_1);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
    }
+085:                 adapter_args = {
        { /* enter inner scope */
          __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 85, __pyx_L12_error)
          __Pyx_GOTREF(__pyx_t_7);
+086:                     param.name: await self.resolve_adapter(
            __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_8genexpr2__pyx_v_param, __pyx_n_s_name); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 86, __pyx_L12_error)
            __Pyx_GOTREF(__pyx_t_14);
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_resolve_adapter); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 86, __pyx_L12_error)
            __Pyx_GOTREF(__pyx_t_8);
/* … */
            __pyx_t_17 = PyTuple_New(2); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 86, __pyx_L12_error)
            __Pyx_GOTREF(__pyx_t_17);
            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cmps);
            __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cmps);
            PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_cur_scope->__pyx_v_cmps);
            __Pyx_GIVEREF(__pyx_t_16);
            PyTuple_SET_ITEM(__pyx_t_17, 1, __pyx_t_16);
            __pyx_t_16 = 0;
/* … */
            __pyx_t_18 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_17, __pyx_t_16); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 86, __pyx_L12_error)
            __Pyx_GOTREF(__pyx_t_18);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
            __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
            __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_18);
            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
            __Pyx_XGOTREF(__pyx_r);
            if (likely(__pyx_r)) {
              __Pyx_XGIVEREF(__pyx_t_1);
              __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
              __Pyx_XGIVEREF(__pyx_t_2);
              __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
              __Pyx_XGIVEREF(__pyx_t_3);
              __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
              __Pyx_XGIVEREF(__pyx_t_4);
              __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
              __Pyx_XGIVEREF(__pyx_t_6);
              __pyx_cur_scope->__pyx_t_4 = __pyx_t_6;
              __Pyx_XGIVEREF(__pyx_t_7);
              __pyx_cur_scope->__pyx_t_5 = __pyx_t_7;
              __pyx_cur_scope->__pyx_t_6 = __pyx_t_9;
              __pyx_cur_scope->__pyx_t_7 = __pyx_t_10;
              __pyx_cur_scope->__pyx_t_8 = __pyx_t_11;
              __pyx_cur_scope->__pyx_t_9 = __pyx_t_12;
              __pyx_cur_scope->__pyx_t_10 = __pyx_t_13;
              __Pyx_XGIVEREF(__pyx_t_14);
              __pyx_cur_scope->__pyx_t_11 = __pyx_t_14;
              __Pyx_XGIVEREF(__pyx_r);
              __Pyx_RefNannyFinishContext();
              __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
              /* return from generator, awaiting value */
              __pyx_generator->resume_label = 1;
              return __pyx_r;
              __pyx_L22_resume_from_await:;
              __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
              __pyx_cur_scope->__pyx_t_0 = 0;
              __Pyx_XGOTREF(__pyx_t_1);
              __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
              __pyx_cur_scope->__pyx_t_1 = 0;
              __Pyx_XGOTREF(__pyx_t_2);
              __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
              __pyx_cur_scope->__pyx_t_2 = 0;
              __Pyx_XGOTREF(__pyx_t_3);
              __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
              __pyx_cur_scope->__pyx_t_3 = 0;
              __Pyx_XGOTREF(__pyx_t_4);
              __pyx_t_6 = __pyx_cur_scope->__pyx_t_4;
              __pyx_cur_scope->__pyx_t_4 = 0;
              __Pyx_XGOTREF(__pyx_t_6);
              __pyx_t_7 = __pyx_cur_scope->__pyx_t_5;
              __pyx_cur_scope->__pyx_t_5 = 0;
              __Pyx_XGOTREF(__pyx_t_7);
              __pyx_t_9 = __pyx_cur_scope->__pyx_t_6;
              __pyx_t_10 = __pyx_cur_scope->__pyx_t_7;
              __pyx_t_11 = __pyx_cur_scope->__pyx_t_8;
              __pyx_t_12 = __pyx_cur_scope->__pyx_t_9;
              __pyx_t_13 = __pyx_cur_scope->__pyx_t_10;
              __pyx_t_14 = __pyx_cur_scope->__pyx_t_11;
              __pyx_cur_scope->__pyx_t_11 = 0;
              __Pyx_XGOTREF(__pyx_t_14);
              if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 86, __pyx_L12_error)
              __pyx_t_18 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_18);
            } else {
              __pyx_t_18 = NULL;
              if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_18) < 0) __PYX_ERR(0, 86, __pyx_L12_error)
              __Pyx_GOTREF(__pyx_t_18);
            }
            if (unlikely(PyDict_SetItem(__pyx_t_7, (PyObject*)__pyx_t_14, (PyObject*)__pyx_t_18))) __PYX_ERR(0, 86, __pyx_L12_error)
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
          }
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        } /* exit inner scope */
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_adapter_args);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_adapter_args, ((PyObject*)__pyx_t_7));
        __Pyx_GIVEREF(__pyx_t_7);
        __pyx_t_7 = 0;
 087:                         cmps,
+088:                         param.annotation,
            __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_8genexpr2__pyx_v_param, __pyx_n_s_annotation); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 88, __pyx_L12_error)
            __Pyx_GOTREF(__pyx_t_16);
+089:                         name=param.name,
            __pyx_t_16 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 89, __pyx_L12_error)
            __Pyx_GOTREF(__pyx_t_16);
            __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_8genexpr2__pyx_v_param, __pyx_n_s_name); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 89, __pyx_L12_error)
            __Pyx_GOTREF(__pyx_t_18);
            if (PyDict_SetItem(__pyx_t_16, __pyx_n_s_name, __pyx_t_18) < 0) __PYX_ERR(0, 89, __pyx_L12_error)
            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+090:                         default=param.default,
            __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_8genexpr2__pyx_v_param, __pyx_n_s_default); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 90, __pyx_L12_error)
            __Pyx_GOTREF(__pyx_t_18);
            if (PyDict_SetItem(__pyx_t_16, __pyx_n_s_default, __pyx_t_18) < 0) __PYX_ERR(0, 89, __pyx_L12_error)
            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
 091:                     )
+092:                     for param in adapter.parameters.values()
          __pyx_t_12 = 0;
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_adapter, __pyx_n_s_parameters); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 92, __pyx_L12_error)
          __Pyx_GOTREF(__pyx_t_8);
          if (unlikely(__pyx_t_8 == Py_None)) {
            PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
            __PYX_ERR(0, 92, __pyx_L12_error)
          }
          __pyx_t_14 = __Pyx_dict_iterator(__pyx_t_8, 0, __pyx_n_s_values, (&__pyx_t_13), (&__pyx_t_9)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 92, __pyx_L12_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF(__pyx_t_4);
          __pyx_t_4 = __pyx_t_14;
          __pyx_t_14 = 0;
          while (1) {
            __pyx_t_15 = __Pyx_dict_iter_next(__pyx_t_4, __pyx_t_13, &__pyx_t_12, NULL, &__pyx_t_14, NULL, __pyx_t_9);
            if (unlikely(__pyx_t_15 == 0)) break;
            if (unlikely(__pyx_t_15 == -1)) __PYX_ERR(0, 92, __pyx_L12_error)
            __Pyx_GOTREF(__pyx_t_14);
            __Pyx_XGOTREF(__pyx_cur_scope->__pyx_8genexpr2__pyx_v_param);
            __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_8genexpr2__pyx_v_param, __pyx_t_14);
            __Pyx_GIVEREF(__pyx_t_14);
            __pyx_t_14 = 0;
 093:                 }
+094:             except ResolveError as ex:
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_5buvar_2di_4c_di_ResolveError));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("buvar.di.c_di.AdaptersImpl.resolve_adapter", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_14, &__pyx_t_18, &__pyx_t_4) < 0) __PYX_ERR(0, 94, __pyx_L14_except_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_GOTREF(__pyx_t_18);
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_18);
        __Pyx_GIVEREF(__pyx_t_18);
        __pyx_cur_scope->__pyx_v_ex = __pyx_t_18;
        /*try:*/ {
/* … */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_ex);
            __Pyx_DECREF(__pyx_cur_scope->__pyx_v_ex);
            __pyx_cur_scope->__pyx_v_ex = NULL;
            goto __pyx_L30;
          }
          __pyx_L29_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_assign
            __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0;
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
            if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26);
            if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23) < 0)) __Pyx_ErrFetch(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_22);
            __Pyx_XGOTREF(__pyx_t_23);
            __Pyx_XGOTREF(__pyx_t_24);
            __Pyx_XGOTREF(__pyx_t_25);
            __Pyx_XGOTREF(__pyx_t_26);
            __pyx_t_9 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_20 = __pyx_filename;
            {
              __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_ex);
              __Pyx_DECREF(__pyx_cur_scope->__pyx_v_ex);
              __pyx_cur_scope->__pyx_v_ex = NULL;
            }
            if (PY_MAJOR_VERSION >= 3) {
              __Pyx_XGIVEREF(__pyx_t_24);
              __Pyx_XGIVEREF(__pyx_t_25);
              __Pyx_XGIVEREF(__pyx_t_26);
              __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_25, __pyx_t_26);
            }
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_ErrRestore(__pyx_t_21, __pyx_t_22, __pyx_t_23);
            __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0;
            __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_20;
            goto __pyx_L14_except_error;
          }
          __pyx_L30:;
        }
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        goto __pyx_L13_exception_handled;
      }
      goto __pyx_L14_except_error;
      __pyx_L14_except_error:;
 095:                 # try next adapter
+096:                 resolve_errors.append(ex)
          __pyx_t_19 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_resolve_errors, __pyx_cur_scope->__pyx_v_ex); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 96, __pyx_L29_error)
        }
 097:             else:
+098:                 component = await adapter.create(target, **adapter_args)
      /*else:*/ {
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_adapter, __pyx_n_s_create); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 98, __pyx_L14_except_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 98, __pyx_L14_except_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_target);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_target);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_target);
        __pyx_t_18 = PyDict_Copy(__pyx_cur_scope->__pyx_v_adapter_args); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 98, __pyx_L14_except_error)
        __Pyx_GOTREF(__pyx_t_18);
        __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, __pyx_t_18); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 98, __pyx_L14_except_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
        __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_14);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_XGOTREF(__pyx_r);
        if (likely(__pyx_r)) {
          __Pyx_XGIVEREF(__pyx_t_1);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
          __Pyx_XGIVEREF(__pyx_t_2);
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
          __Pyx_XGIVEREF(__pyx_t_3);
          __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
          __Pyx_XGIVEREF(__pyx_t_6);
          __pyx_cur_scope->__pyx_t_3 = __pyx_t_6;
          __pyx_cur_scope->__pyx_t_7 = __pyx_t_10;
          __pyx_cur_scope->__pyx_t_8 = __pyx_t_11;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
          /* return from generator, awaiting value */
          __pyx_generator->resume_label = 2;
          return __pyx_r;
          __pyx_L23_resume_from_await:;
          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
          __pyx_cur_scope->__pyx_t_0 = 0;
          __Pyx_XGOTREF(__pyx_t_1);
          __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
          __pyx_cur_scope->__pyx_t_1 = 0;
          __Pyx_XGOTREF(__pyx_t_2);
          __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
          __pyx_cur_scope->__pyx_t_2 = 0;
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_6 = __pyx_cur_scope->__pyx_t_3;
          __pyx_cur_scope->__pyx_t_3 = 0;
          __Pyx_XGOTREF(__pyx_t_6);
          __pyx_t_10 = __pyx_cur_scope->__pyx_t_7;
          __pyx_t_11 = __pyx_cur_scope->__pyx_t_8;
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 98, __pyx_L14_except_error)
          __pyx_t_14 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_14);
        } else {
          __pyx_t_14 = NULL;
          if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_14) < 0) __PYX_ERR(0, 98, __pyx_L14_except_error)
          __Pyx_GOTREF(__pyx_t_14);
        }
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_component);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_component, __pyx_t_14);
        __Pyx_GIVEREF(__pyx_t_14);
        __pyx_t_14 = 0;
 099:                 # we do not use the name
+100:                 cmps.add(component)
        __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_cmps, __pyx_n_s_add); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 100, __pyx_L14_except_error)
        __Pyx_GOTREF(__pyx_t_18);
        __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_18))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_18);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_18);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_18, function);
          }
        }
        __pyx_t_14 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_18, __pyx_t_4, __pyx_cur_scope->__pyx_v_component) : __Pyx_PyObject_CallOneArg(__pyx_t_18, __pyx_cur_scope->__pyx_v_component);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 100, __pyx_L14_except_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+101:                 return component
        __Pyx_XDECREF(__pyx_r);
        __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_cur_scope->__pyx_v_component);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        goto __pyx_L15_except_return;
      }
      __pyx_L12_error:;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
      __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 102: 
+103:         if default is not missing:
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_missing); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_27 = (__pyx_cur_scope->__pyx_v_default != __pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_28 = (__pyx_t_27 != 0);
  if (__pyx_t_28) {
/* … */
  }
+104:             return default
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_cur_scope->__pyx_v_default);
    goto __pyx_L0;
 105: 
+106:         if resolve_errors:
  __pyx_t_28 = (PyList_GET_SIZE(__pyx_cur_scope->__pyx_v_resolve_errors) != 0);
  if (unlikely(__pyx_t_28)) {
/* … */
  }
+107:             raise ResolveError("No adapter dependencies found", target, resolve_errors)
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_INCREF(__pyx_kp_u_No_adapter_dependencies_found);
    __Pyx_GIVEREF(__pyx_kp_u_No_adapter_dependencies_found);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_No_adapter_dependencies_found);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_target);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_target);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_cur_scope->__pyx_v_target);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_resolve_errors);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_resolve_errors);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_cur_scope->__pyx_v_resolve_errors);
    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5buvar_2di_4c_di_ResolveError), __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(0, 107, __pyx_L1_error)
+108:         raise ResolveError("No possible adapter found", target, [])
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_kp_u_No_possible_adapter_found);
  __Pyx_GIVEREF(__pyx_kp_u_No_possible_adapter_found);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_kp_u_No_possible_adapter_found);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_target);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_target);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_cur_scope->__pyx_v_target);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5buvar_2di_4c_di_ResolveError), __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_Raise(__pyx_t_4, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __PYX_ERR(0, 108, __pyx_L1_error)
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);