Generated by Cython 3.3.1

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: converters.c

+0001: # cython: language_level=3, embedsignature=True, initializedcheck=False
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_2) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0002: # Copyright (C) 2018-present Jesus Lara
 0003: #
+0004: import re
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_re, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_re, __pyx_t_2) < (0)) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0005: from typing import get_args, get_origin, Union, Optional, List, NewType, Literal, Any, Set
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_get_args,__pyx_mstate_global->__pyx_n_u_get_origin,__pyx_mstate_global->__pyx_n_u_Union,__pyx_mstate_global->__pyx_n_u_Optional,__pyx_mstate_global->__pyx_n_u_List,__pyx_mstate_global->__pyx_n_u_NewType,__pyx_mstate_global->__pyx_n_u_Literal,__pyx_mstate_global->__pyx_n_u_Any,__pyx_mstate_global->__pyx_n_u_Set};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_typing, __pyx_imported_names, 9, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_get_args,__pyx_mstate_global->__pyx_n_u_get_origin,__pyx_mstate_global->__pyx_n_u_Union,__pyx_mstate_global->__pyx_n_u_Optional,__pyx_mstate_global->__pyx_n_u_List,__pyx_mstate_global->__pyx_n_u_NewType,__pyx_mstate_global->__pyx_n_u_Literal,__pyx_mstate_global->__pyx_n_u_Any,__pyx_mstate_global->__pyx_n_u_Set};
    for (__pyx_t_3=0; __pyx_t_3 < 9; __pyx_t_3++) {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 5, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0006: from collections.abc import Sequence, Mapping, Callable, Awaitable
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Sequence,__pyx_mstate_global->__pyx_n_u_Mapping,__pyx_mstate_global->__pyx_n_u_Callable,__pyx_mstate_global->__pyx_n_u_Awaitable};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_collections_abc, __pyx_imported_names, 4, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Sequence,__pyx_mstate_global->__pyx_n_u_Mapping,__pyx_mstate_global->__pyx_n_u_Callable,__pyx_mstate_global->__pyx_n_u_Awaitable};
    for (__pyx_t_3=0; __pyx_t_3 < 4; __pyx_t_3++) {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 6, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0007: import types
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_types, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_types, __pyx_t_2) < (0)) __PYX_ERR(0, 7, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0008: from types import UnionType
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_UnionType};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_types, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_UnionType};
    __pyx_t_3 = 0; {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 8, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0009: from dataclasses import _MISSING_TYPE, _FIELDS, fields
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_MISSING_TYPE,__pyx_mstate_global->__pyx_n_u_FIELDS,__pyx_mstate_global->__pyx_n_u_fields};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_dataclasses, __pyx_imported_names, 3, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_MISSING_TYPE,__pyx_mstate_global->__pyx_n_u_FIELDS,__pyx_mstate_global->__pyx_n_u_fields};
    for (__pyx_t_3=0; __pyx_t_3 < 3; __pyx_t_3++) {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 9, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0010: import ciso8601
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_ciso8601, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ciso8601, __pyx_t_2) < (0)) __PYX_ERR(0, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0011: import orjson
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_orjson, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_orjson, __pyx_t_2) < (0)) __PYX_ERR(0, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0012: from pathlib import PurePath, Path
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_PurePath,__pyx_mstate_global->__pyx_n_u_Path};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pathlib, __pyx_imported_names, 2, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_PurePath,__pyx_mstate_global->__pyx_n_u_Path};
    for (__pyx_t_3=0; __pyx_t_3 < 2; __pyx_t_3++) {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 12, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0013: from decimal import Decimal, InvalidOperation
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Decimal,__pyx_mstate_global->__pyx_n_u_InvalidOperation};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_decimal, __pyx_imported_names, 2, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Decimal,__pyx_mstate_global->__pyx_n_u_InvalidOperation};
    for (__pyx_t_3=0; __pyx_t_3 < 2; __pyx_t_3++) {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 13, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 13, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0014: from libc.stdio cimport sprintf, snprintf
 0015: from libc.stdlib cimport malloc, free
 0016: from cpython.mem cimport PyMem_Malloc, PyMem_Free
 0017: cimport cython
 0018: from cpython cimport datetime
 0019: from cpython.object cimport (
 0020:     PyObject_IsInstance,
 0021:     PyObject_IsSubclass,
 0022:     PyObject_HasAttr,
 0023:     PyObject_GetAttr,
 0024:     PyObject_SetAttr,
 0025:     PyObject_Call,
 0026:     PyObject_TypeCheck,
 0027:     PyCallable_Check
 0028: )
 0029: from cpython.ref cimport PyObject
+0030: from uuid import UUID
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_UUID};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_uuid, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_UUID};
    __pyx_t_3 = 0; {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 30, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 30, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0031: import asyncpg.pgproto.pgproto as pgproto
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_asyncpg_pgproto_pgproto, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error)
  __pyx_t_5 = __Pyx_ImportFrom(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_pgproto);
  Py_DECREF(__pyx_t_1);
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 31, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_5;
  __pyx_t_5 = __Pyx_ImportFrom(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_pgproto);
  Py_DECREF(__pyx_t_1);
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 31, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_5;
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pgproto, __pyx_t_2) < (0)) __PYX_ERR(0, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0032: from .functions import is_iterable, is_primitive
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_is_iterable,__pyx_mstate_global->__pyx_n_u_is_primitive};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_functions, __pyx_imported_names, 2, __pyx_mstate_global->__pyx_kp_u_datamodel_functions, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_is_iterable,__pyx_mstate_global->__pyx_n_u_is_primitive};
    for (__pyx_t_3=0; __pyx_t_3 < 2; __pyx_t_3++) {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 32, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 32, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0033: from .validation import _validation
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_validation};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_validation_2, __pyx_imported_names, 1, __pyx_mstate_global->__pyx_kp_u_datamodel_validation, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 33, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_validation};
    __pyx_t_3 = 0; {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 33, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 33, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0034: from .validation cimport _validate_constraints
+0035: from .fields import Field
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Field};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_fields, __pyx_imported_names, 1, __pyx_mstate_global->__pyx_kp_u_datamodel_fields, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Field};
    __pyx_t_3 = 0; {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 35, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 35, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0036: # New converter:
+0037: import datamodel.rs_parsers as rc
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_datamodel_rs_parsers, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 37, __pyx_L1_error)
  __pyx_t_5 = __Pyx_ImportFrom(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_rs_parsers);
  Py_DECREF(__pyx_t_1);
  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 37, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_5;
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_rc, __pyx_t_2) < (0)) __PYX_ERR(0, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0038: 
+0039: cdef struct ColumnDef:
struct __pyx_t_9datamodel_10converters_ColumnDef {
  char const *name;
  PyObject *field;
};
 0040:     const char* name
 0041:     PyObject* field
 0042: 
+0043: cdef bint is_dc(object obj):
static int __pyx_f_9datamodel_10converters_is_dc(PyObject *__pyx_v_obj) {
  PyObject *__pyx_v_cls = NULL;
  int __pyx_r;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("datamodel.converters.is_dc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cls);

  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0044:     """Returns True if obj is a dataclass or an instance of a
 0045:     dataclass."""
+0046:     cls = obj if isinstance(obj, type) and not isinstance(obj, types.GenericAlias) else type(obj)
  __pyx_t_3 = PyType_Check(__pyx_v_obj); 
  if (__pyx_t_3) {

  } else {

    __pyx_t_2 = __pyx_t_3;

    goto __pyx_L3_bool_binop_done;
  }
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_GenericAlias); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_obj, __pyx_t_5); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_6 = (!__pyx_t_3);



  __pyx_t_2 = __pyx_t_6;

  __pyx_L3_bool_binop_done:;
  if (__pyx_t_2) {
    __Pyx_INCREF(__pyx_v_obj);
    __pyx_t_1 = __pyx_v_obj;
  } else {
    __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_obj)));
    __pyx_t_1 = ((PyObject *)Py_TYPE(__pyx_v_obj));
  }

  __pyx_v_cls = __pyx_t_1;
  __pyx_t_1 = 0;
+0047:     return PyObject_HasAttr(cls, '__dataclass_fields__')
  {

    __pyx_r = PyObject_HasAttr(__pyx_v_cls, __pyx_mstate_global->__pyx_n_u_dataclass_fields);
  }
  goto __pyx_L0;
 0048: 
+0049: cdef bint is_typing(object obj):
static int __pyx_f_9datamodel_10converters_is_typing(PyObject *__pyx_v_obj) {
  int __pyx_r;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("datamodel.converters.is_typing", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;

  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0050:     return PyObject_HasAttr(obj, '__module__') and obj.__module__ == 'typing'
  __pyx_t_2 = PyObject_HasAttr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_module);

  if (__pyx_t_2) {

  } else {

    __pyx_t_1 = __pyx_t_2;

    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_typing, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 50, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_t_1 = __pyx_t_2;

  __pyx_L3_bool_binop_done:;
  {
    __pyx_r = __pyx_t_1;
  }
  goto __pyx_L0;
 0051: 
+0052: cdef bint is_union(object origin):
static int __pyx_f_9datamodel_10converters_is_union(PyObject *__pyx_v_origin) {
  int __pyx_r;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("datamodel.converters.is_union", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;

  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0053:     return origin is Union or origin is UnionType
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Union); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = (__pyx_v_origin == __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!__pyx_t_3) {

  } else {

    __pyx_t_1 = __pyx_t_3;

    goto __pyx_L3_bool_binop_done;
  }
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_UnionType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = (__pyx_v_origin == __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_t_1 = __pyx_t_3;

  __pyx_L3_bool_binop_done:;
  {
    __pyx_r = __pyx_t_1;
  }
  goto __pyx_L0;
 0054: 
+0055: cdef object normalize_origin(object origin):
static PyObject *__pyx_f_9datamodel_10converters_normalize_origin(PyObject *__pyx_v_origin) {
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.normalize_origin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0056:     if origin is UnionType:
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_UnionType); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__pyx_v_origin == __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
/* … */
  }
+0057:         return Union
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_Union); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_1;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_1 = 0;
    goto __pyx_L0;
+0058:     return origin
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __Pyx_INCREF(__pyx_v_origin);
      __pyx_r = __pyx_v_origin;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  goto __pyx_L0;
 0059: 
+0060: cdef bint is_empty(object value):
static int __pyx_f_9datamodel_10converters_is_empty(PyObject *__pyx_v_value) {
  int __pyx_r;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("datamodel.converters.is_empty", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;

  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0061:     """
 0062:     Determines if a value should be considered empty.
 0063: 
 0064:     Enhanced to handle different container types properly, including:
 0065:     - None
 0066:     - Empty strings
 0067:     - Empty lists, tuples, sets
 0068:     - _MISSING_TYPE (used in default value checks)
 0069: 
 0070:     Returns True if the value is considered empty, False otherwise.
 0071:     """
 0072:     # None is always empty
+0073:     if value is None:
  __pyx_t_1 = (__pyx_v_value == Py_None);
  if (__pyx_t_1) {
/* … */
  }
+0074:         return True
    {

      __pyx_r = 1;
    }
    goto __pyx_L0;
 0075: 
 0076:     # Field default missing markers
+0077:     if PyObject_IsInstance(value, _MISSING_TYPE) or value == _MISSING_TYPE:
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_MISSING_TYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_value, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!__pyx_t_3) {

  } else {

    __pyx_t_1 = __pyx_t_3;

    goto __pyx_L5_bool_binop_done;
  }
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_MISSING_TYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_CompareBoolEq_object_object(__pyx_v_value, __pyx_t_2, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_t_1 = __pyx_t_3;

  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0078:         return True
    {

      __pyx_r = 1;
    }
    goto __pyx_L0;
 0079: 
 0080:     # Empty strings are considered empty
+0081:     if PyObject_IsInstance(value, str) and value == '':
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_value, ((PyObject *)(&PyUnicode_Type))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 81, __pyx_L1_error)
  if (__pyx_t_3) {

  } else {

    __pyx_t_1 = __pyx_t_3;

    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_v_value, __pyx_mstate_global->__pyx_kp_u__2, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 81, __pyx_L1_error)

  __pyx_t_1 = __pyx_t_3;

  __pyx_L8_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0082:         return True
    {

      __pyx_r = 1;
    }
    goto __pyx_L0;
 0083: 
+0084:     if PyObject_IsInstance(value, dict) and value == {}:
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_value, ((PyObject *)(&PyDict_Type))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 84, __pyx_L1_error)
  if (__pyx_t_3) {

  } else {

    __pyx_t_1 = __pyx_t_3;

    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_RichCompareBool(__pyx_v_value, __pyx_t_2, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 84, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_t_1 = __pyx_t_3;

  __pyx_L11_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0085:         return False
    {

      __pyx_r = 0;
    }
    goto __pyx_L0;
 0086: 
+0087:     if PyObject_IsInstance(value, (tuple, list, set)) and len(value) == 0:
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF((PyObject *)(&PyTuple_Type));
  __Pyx_GIVEREF((PyObject *)(&PyTuple_Type));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)(&PyTuple_Type))) != (0)) __PYX_ERR(0, 87, __pyx_L1_error);
  __Pyx_INCREF((PyObject *)(&PyList_Type));
  __Pyx_GIVEREF((PyObject *)(&PyList_Type));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)(&PyList_Type))) != (0)) __PYX_ERR(0, 87, __pyx_L1_error);
  __Pyx_INCREF((PyObject *)(&PySet_Type));
  __Pyx_GIVEREF((PyObject *)(&PySet_Type));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)(&PySet_Type))) != (0)) __PYX_ERR(0, 87, __pyx_L1_error);
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_value, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 87, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {

  } else {

    __pyx_t_1 = __pyx_t_3;

    goto __pyx_L14_bool_binop_done;
  }
  __pyx_t_4 = PyObject_Length(__pyx_v_value); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 87, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_4 == 0);



  __pyx_t_1 = __pyx_t_3;

  __pyx_L14_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0088:         return True
    {

      __pyx_r = 1;
    }
    goto __pyx_L0;
 0089: 
 0090:     # Special case for containers: empty containers are NOT considered empty
 0091:     # because they are valid initialized values
+0092:     if PyObject_IsInstance(value, (list, tuple, set)):
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF((PyObject *)(&PyList_Type));
  __Pyx_GIVEREF((PyObject *)(&PyList_Type));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)(&PyList_Type))) != (0)) __PYX_ERR(0, 92, __pyx_L1_error);
  __Pyx_INCREF((PyObject *)(&PyTuple_Type));
  __Pyx_GIVEREF((PyObject *)(&PyTuple_Type));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)(&PyTuple_Type))) != (0)) __PYX_ERR(0, 92, __pyx_L1_error);
  __Pyx_INCREF((PyObject *)(&PySet_Type));
  __Pyx_GIVEREF((PyObject *)(&PySet_Type));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)(&PySet_Type))) != (0)) __PYX_ERR(0, 92, __pyx_L1_error);
  __pyx_t_1 = PyObject_IsInstance(__pyx_v_value, __pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {
/* … */
  }
+0093:         return False  # Return False even for empty containers
    {

      __pyx_r = 0;
    }
    goto __pyx_L0;
 0094: 
 0095:     # Numeric values of 0 are not considered empty
+0096:     if PyObject_IsInstance(value, (int, float)) and value == 0:
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF((PyObject *)(&PyLong_Type));
  __Pyx_GIVEREF((PyObject *)(&PyLong_Type));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)(&PyLong_Type))) != (0)) __PYX_ERR(0, 96, __pyx_L1_error);
  __Pyx_INCREF((PyObject *)(&PyFloat_Type));
  __Pyx_GIVEREF((PyObject *)(&PyFloat_Type));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)(&PyFloat_Type))) != (0)) __PYX_ERR(0, 96, __pyx_L1_error);
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_value, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 96, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {

  } else {

    __pyx_t_1 = __pyx_t_3;

    goto __pyx_L18_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_value, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 96, __pyx_L1_error)

  __pyx_t_1 = __pyx_t_3;

  __pyx_L18_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0097:         return False
    {

      __pyx_r = 0;
    }
    goto __pyx_L0;
 0098: 
 0099:     # Objects with explicit "empty" attribute
+0100:     if PyObject_HasAttr(value, 'empty') and PyObject_GetAttr(value, 'empty') == False:
  __pyx_t_3 = PyObject_HasAttr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_empty);

  if (__pyx_t_3) {

  } else {

    __pyx_t_1 = __pyx_t_3;

    goto __pyx_L21_bool_binop_done;
  }
  __pyx_t_2 = PyObject_GetAttr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_RichCompareBool(__pyx_t_2, Py_False, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_t_1 = __pyx_t_3;

  __pyx_L21_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0101:         return False
    {

      __pyx_r = 0;
    }
    goto __pyx_L0;
 0102: 
 0103:     # Fallback to Python's truthiness
+0104:     if not value:
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 104, __pyx_L1_error)
  __pyx_t_3 = (!__pyx_t_1);


  if (__pyx_t_3) {
/* … */
  }
+0105:         return True
    {

      __pyx_r = 1;
    }
    goto __pyx_L0;
 0106: 
 0107:     # Default: not empty
+0108:     return False
  {

    __pyx_r = 0;
  }
  goto __pyx_L0;
 0109: 
+0110: cpdef bint has_attribute(object obj, object attr):
static PyObject *__pyx_pw_9datamodel_10converters_1has_attribute(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_f_9datamodel_10converters_has_attribute(PyObject *__pyx_v_obj, PyObject *__pyx_v_attr, CYTHON_UNUSED int __pyx_skip_dispatch) {
  int __pyx_r;
/* … */
  /* function exit code */
  __pyx_L0:;

  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_1has_attribute(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_has_attribute, "has_attribute(obj, attr) -> bool\n\nReturns True if obj has the attribute attr.");
static PyMethodDef __pyx_mdef_9datamodel_10converters_1has_attribute = {"has_attribute", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_1has_attribute, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_has_attribute};
static PyObject *__pyx_pw_9datamodel_10converters_1has_attribute(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_v_attr = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("has_attribute (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,&__pyx_mstate_global->__pyx_n_u_attr,0};
  PyObject* values[2] = {0,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 110, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 110, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 110, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "has_attribute", 0) < (0)) __PYX_ERR(0, 110, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("has_attribute", 1, 2, 2, i); __PYX_ERR(0, 110, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 110, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 110, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
    __pyx_v_attr = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("has_attribute", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 110, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.has_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_has_attribute(__pyx_self, __pyx_v_obj, __pyx_v_attr);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_has_attribute(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_attr) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_has_attribute(__pyx_v_obj, __pyx_v_attr, 1); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 110, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_2;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("datamodel.converters.has_attribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_1has_attribute, 0, __pyx_mstate_global->__pyx_n_u_has_attribute, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[5])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_has_attribute, __pyx_t_2) < (0)) __PYX_ERR(0, 110, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0111:     """Returns True if obj has the attribute attr."""
+0112:     return PyObject_HasAttr(obj, attr)
  {

    __pyx_r = PyObject_HasAttr(__pyx_v_obj, __pyx_v_attr);
  }
  goto __pyx_L0;
 0113: 
+0114: cpdef str to_string(object obj):
static PyObject *__pyx_pw_9datamodel_10converters_3to_string(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_to_string(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_v_val = NULL;
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("datamodel.converters.to_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XDECREF(__pyx_v_val);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_3to_string(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_2to_string, "to_string(obj) -> str\n\nReturns a string version of an object.");
static PyMethodDef __pyx_mdef_9datamodel_10converters_3to_string = {"to_string", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_3to_string, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_2to_string};
static PyObject *__pyx_pw_9datamodel_10converters_3to_string(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_string (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
  PyObject* values[1] = {0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 114, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 114, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "to_string", 0) < (0)) __PYX_ERR(0, 114, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("to_string", 1, 1, 1, i); __PYX_ERR(0, 114, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 114, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("to_string", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 114, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.to_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_2to_string(__pyx_self, __pyx_v_obj);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_2to_string(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_to_string(__pyx_v_obj, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.to_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_3to_string, 0, __pyx_mstate_global->__pyx_n_u_to_string_2, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[6])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_to_string_2, __pyx_t_2) < (0)) __PYX_ERR(0, 114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0115:     """
 0116:     Returns a string version of an object.
 0117:     """
+0118:     if obj is None:
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {
/* … */
  }
+0119:         return None
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0120:     if isinstance(obj, str):
  __pyx_t_1 = PyUnicode_Check(__pyx_v_obj); 
  if (__pyx_t_1) {
/* … */
  }
+0121:         return obj
    __pyx_t_2 = __pyx_v_obj;
    __Pyx_INCREF(__pyx_t_2);
    if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(0, 121, __pyx_L1_error)
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = ((PyObject*)__pyx_t_2);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_2 = 0;
    goto __pyx_L0;
+0122:     if isinstance(obj, bytes):
  __pyx_t_1 = PyBytes_Check(__pyx_v_obj); 
  if (__pyx_t_1) {
/* … */
  }
+0123:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L6_error:;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
      __pyx_L8_except_error:;
      __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_L10_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;
    }
+0124:             return obj.decode()
        __pyx_t_6 = __pyx_v_obj;
        __Pyx_INCREF(__pyx_t_6);
        __pyx_t_7 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L6_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(0, 124, __pyx_L6_error)
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = ((PyObject*)__pyx_t_2);
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_2 = 0;
        goto __pyx_L10_try_return;
+0125:         except UnicodeDecodeError as e:
      __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_UnicodeDecodeError))));
      if (__pyx_t_8) {
        __Pyx_AddTraceback("datamodel.converters.to_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_6, &__pyx_t_9) < 0) __PYX_ERR(0, 125, __pyx_L8_except_error)
        __Pyx_XGOTREF(__pyx_t_2);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_6);
        __pyx_v_e = __pyx_t_6;
        /*try:*/ {
/* … */
        /*finally:*/ {
          __pyx_L17_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
             __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if ( unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __pyx_t_8 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
            }
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
            __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
            __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
            goto __pyx_L8_except_error;
          }
        }
      }
      goto __pyx_L8_except_error;
+0126:             raise ValueError(f"Cannot decode bytes: {e}") from e
          __pyx_t_11 = NULL;
          __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 126, __pyx_L17_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_13 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Cannot_decode_bytes, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 126, __pyx_L17_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __pyx_t_7 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_13};
            __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 126, __pyx_L17_error)
            __Pyx_GOTREF(__pyx_t_10);
          }
          __Pyx_Raise(__pyx_t_10, 0, 0, __pyx_v_e);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __PYX_ERR(0, 126, __pyx_L17_error)
        }
+0127:     if isinstance(obj, (int, float, Decimal)):
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_Decimal); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_22 = PyLong_Check(__pyx_v_obj); 
  if (!__pyx_t_22) {

  } else {

    __pyx_t_1 = __pyx_t_22;

    goto __pyx_L24_bool_binop_done;
  }
  __pyx_t_22 = PyFloat_Check(__pyx_v_obj); 
  if (!__pyx_t_22) {

  } else {

    __pyx_t_1 = __pyx_t_22;

    goto __pyx_L24_bool_binop_done;
  }
  __pyx_t_22 = PyObject_IsInstance(__pyx_v_obj, __pyx_t_9); 

  __pyx_t_1 = __pyx_t_22;

  __pyx_L24_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__pyx_t_1) {
/* … */
  }
 0128:         # its a number
+0129:         return str(obj)
    __pyx_t_9 = __Pyx_PyObject_Unicode(__pyx_v_obj); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = ((PyObject*)__pyx_t_9);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_9 = 0;
    goto __pyx_L0;
+0130:     if callable(obj):
  __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 130, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
 0131:         # its a function callable returning a value
+0132:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L28_error:;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
      __pyx_L30_except_error:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      goto __pyx_L1_error;
      __pyx_L32_try_return:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      goto __pyx_L0;
      __pyx_L29_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
    }
+0133:             val = obj()
        __pyx_t_6 = NULL;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_t_2 = __pyx_v_obj; 
        __pyx_t_7 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_2))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
          assert(__pyx_t_6);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
          __pyx_t_7 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
          __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 133, __pyx_L28_error)
          __Pyx_GOTREF(__pyx_t_9);
        }
        __pyx_v_val = __pyx_t_9;
        __pyx_t_9 = 0;
 0134:             # Recursively call to_string on that result:
+0135:             return to_string(val)
        __pyx_t_9 = __pyx_f_9datamodel_10converters_to_string(__pyx_v_val, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 135, __pyx_L28_error)
        __Pyx_GOTREF(__pyx_t_9);
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = ((PyObject*)__pyx_t_9);
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_9 = 0;
        goto __pyx_L32_try_return;
+0136:         except Exception:
      __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
      if (__pyx_t_14) {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L29_exception_handled;
      }
      goto __pyx_L30_except_error;
 0137:             pass
 0138:     # For any other arbitrary type, explicitly fail:
+0139:     raise ValueError(
  __pyx_t_2 = NULL;
+0140:         f"Cannot convert object of type {type(obj).__name__} to string."
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_obj)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_23[0] = __pyx_mstate_global->__pyx_kp_u_Cannot_convert_object_of_type;
  __pyx_t_23[1] = __pyx_t_10;
  __pyx_t_23[2] = __pyx_mstate_global->__pyx_kp_u_to_string;
  __pyx_t_24 = 41;
  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
  __pyx_t_24 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_23[1]);
  #endif
  __pyx_t_14 = 0;
  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
  __pyx_t_14 |= __Pyx_PyUnicode_KIND_04(__pyx_t_23[1]);
  #endif
  __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_23, 3, __pyx_t_24, __pyx_t_14);
  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_7 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_6};
    __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
  }
  __Pyx_Raise(__pyx_t_9, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __PYX_ERR(0, 139, __pyx_L1_error)
 0141:     )
 0142: 
+0143: cpdef object to_uuid(object obj):
static PyObject *__pyx_pw_9datamodel_10converters_5to_uuid(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_to_uuid(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("datamodel.converters.to_uuid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_5to_uuid(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_4to_uuid, "to_uuid(obj)\n\nReturns a UUID version of a str column.\n    ");
static PyMethodDef __pyx_mdef_9datamodel_10converters_5to_uuid = {"to_uuid", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_5to_uuid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_4to_uuid};
static PyObject *__pyx_pw_9datamodel_10converters_5to_uuid(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_uuid (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
  PyObject* values[1] = {0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 143, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 143, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "to_uuid", 0) < (0)) __PYX_ERR(0, 143, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("to_uuid", 1, 1, 1, i); __PYX_ERR(0, 143, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 143, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("to_uuid", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 143, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.to_uuid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_4to_uuid(__pyx_self, __pyx_v_obj);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_4to_uuid(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_to_uuid(__pyx_v_obj, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.to_uuid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_5to_uuid, 0, __pyx_mstate_global->__pyx_n_u_to_uuid, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[7])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_to_uuid, __pyx_t_2) < (0)) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0144:     """Returns a UUID version of a str column.
 0145:     """
+0146:     if isinstance(obj, pgproto.UUID):
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_pgproto); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_UUID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_obj, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 146, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {
/* … */
  }
 0147:         # If it's asyncpg's UUID, convert by casting to string first
+0148:         return UUID(str(obj))
    __pyx_t_1 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_UUID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 148, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Unicode(__pyx_v_obj); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 148, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_1);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_5};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 148, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_2;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_2 = 0;
    goto __pyx_L0;
+0149:     if isinstance(obj, UUID):
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_UUID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_obj, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {
/* … */
  }
 0150:         # already an uuid
+0151:         return obj
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_r = __pyx_v_obj;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0152:     elif callable(obj):
  __pyx_t_3 = __Pyx_PyCallable_Check(__pyx_v_obj); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 152, __pyx_L1_error)
  if (__pyx_t_3) {
/* … */
  }
 0153:         # its a function callable returning a value
+0154:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
      __pyx_L9_try_return:;
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      goto __pyx_L0;
      __pyx_L6_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
    }
+0155:             return UUID(obj())
        __pyx_t_4 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_UUID); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 155, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_10 = NULL;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_t_11 = __pyx_v_obj; 
        __pyx_t_6 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_11))) {
          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
          assert(__pyx_t_10);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
          __pyx_t_6 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
          __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
        __pyx_t_6 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
          assert(__pyx_t_4);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
          __pyx_t_6 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_1};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 155, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_2;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_2 = 0;
        goto __pyx_L9_try_return;
+0156:         except:
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L6_exception_handled;
      }
 0157:             pass
+0158:     try:
  {
    /*try:*/ {
/* … */
    }
    __pyx_L13_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
    __pyx_L15_except_error:;
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7);
    goto __pyx_L1_error;
    __pyx_L17_try_return:;
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7);
    goto __pyx_L0;
    __pyx_L16_except_return:;
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7);
    goto __pyx_L0;
  }
+0159:         return UUID(str(obj))
      __pyx_t_5 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_UUID); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L13_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = __Pyx_PyObject_Unicode(__pyx_v_obj); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 159, __pyx_L13_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
        assert(__pyx_t_5);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
        __pyx_t_6 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 159, __pyx_L13_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = __pyx_t_2;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L17_try_return;
+0160:     except ValueError:
    __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_12) {
      __Pyx_ErrRestore(0,0,0);
+0161:         return None
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = Py_None; __Pyx_INCREF(Py_None);
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      goto __pyx_L16_except_return;
    }
    goto __pyx_L15_except_error;
 0162: 
 0163: 
+0164: cpdef str slugify_camelcase(str obj):
static PyObject *__pyx_pw_9datamodel_10converters_7slugify_camelcase(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_slugify_camelcase(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_v_slugified = NULL;
  Py_ssize_t __pyx_v_i;
  Py_UCS4 __pyx_v_c;
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("datamodel.converters.slugify_camelcase", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_slugified);


  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_7slugify_camelcase(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_6slugify_camelcase, "slugify_camelcase(str obj) -> str\n\nslugify_camelcase.\n\nConverting CamelCase into a spaced version, but don\342\200\231t double-space\nif the string already contains spaces or uppercase letters follow\nexisting spaces.");
static PyMethodDef __pyx_mdef_9datamodel_10converters_7slugify_camelcase = {"slugify_camelcase", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_7slugify_camelcase, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_6slugify_camelcase};
static PyObject *__pyx_pw_9datamodel_10converters_7slugify_camelcase(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("slugify_camelcase (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
  PyObject* values[1] = {0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 164, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 164, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "slugify_camelcase", 0) < (0)) __PYX_ERR(0, 164, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("slugify_camelcase", 1, 1, 1, i); __PYX_ERR(0, 164, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 164, __pyx_L3_error)
    }
    __pyx_v_obj = ((PyObject*)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("slugify_camelcase", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 164, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.slugify_camelcase", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obj), (&PyUnicode_Type), 1, "obj", 1))) __PYX_ERR(0, 164, __pyx_L1_error)
  __pyx_r = __pyx_pf_9datamodel_10converters_6slugify_camelcase(__pyx_self, __pyx_v_obj);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_6slugify_camelcase(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_slugify_camelcase(__pyx_v_obj, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.slugify_camelcase", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_7slugify_camelcase, 0, __pyx_mstate_global->__pyx_n_u_slugify_camelcase, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[8])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_slugify_camelcase, __pyx_t_2) < (0)) __PYX_ERR(0, 164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0165:     """slugify_camelcase.
 0166: 
 0167:     Converting CamelCase into a spaced version, but don’t double-space
 0168:     if the string already contains spaces or uppercase letters follow
 0169:     existing spaces.
 0170:     """
+0171:     if not obj:
  if (__pyx_v_obj == Py_None) __pyx_t_1 = 0;
  else
  {
    Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_obj);
    if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 171, __pyx_L1_error)
    __pyx_t_1 = (__pyx_temp != 0);
  }

  __pyx_t_2 = (!__pyx_t_1);


  if (__pyx_t_2) {
/* … */
  }
+0172:         return obj
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_r = __pyx_v_obj;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 0173: 
+0174:     slugified = [obj[0]]
  __pyx_t_3 = __Pyx_GetItemInt_Unicode(__pyx_v_obj, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(__pyx_t_3 == (Py_UCS4)-1)) __PYX_ERR(0, 174, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyUnicode_FromOrdinal(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);

  __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_4) != (0)) __PYX_ERR(0, 174, __pyx_L1_error);
  __pyx_t_4 = 0;
  __pyx_v_slugified = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;
+0175:     for i in range(1, len(obj)):
  if (unlikely(__pyx_v_obj == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
    __PYX_ERR(0, 175, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_PyUnicode_GET_LENGTH(__pyx_v_obj); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 175, __pyx_L1_error)
  __pyx_t_7 = __pyx_t_6;

  for (__pyx_t_8 = 1; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
    __pyx_v_i = __pyx_t_8;
+0176:         c = obj[i]
    __pyx_t_3 = __Pyx_GetItemInt_Unicode(__pyx_v_obj, __pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(__pyx_t_3 == (Py_UCS4)-1)) __PYX_ERR(0, 176, __pyx_L1_error)
    __pyx_v_c = __pyx_t_3;
 0177:         # Condition: if c is uppercase AND the previous character isn't a space,
 0178:         # insert a space before it.
+0179:         if c.isupper() and not slugified[-1].isspace():
    __pyx_t_1 = __Pyx_Py_UNICODE_ISUPPER(__pyx_v_c); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 179, __pyx_L1_error)
    if (__pyx_t_1) {

    } else {

      __pyx_t_2 = __pyx_t_1;

      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_9 = __Pyx_GetItemInt_List(__pyx_v_slugified, -1L, long, 1, __Pyx_PyLong_From_long, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 179, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_4 = __pyx_t_9;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_10 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_isspace, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 179, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 179, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_11 = (!__pyx_t_1);



    __pyx_t_2 = __pyx_t_11;

    __pyx_L7_bool_binop_done:;
    if (__pyx_t_2) {
/* … */
    }
+0180:             slugified.append(' ')
      __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_slugified, __pyx_mstate_global->__pyx_kp_u__3); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 180, __pyx_L1_error)

+0181:         slugified.append(c)
    __pyx_t_5 = __Pyx_PyUnicode_FromOrdinal(__pyx_v_c); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_slugified, __pyx_t_5); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 181, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  }


+0182:     return ''.join(slugified)
  __pyx_t_5 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__2, __pyx_v_slugified); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = ((PyObject*)__pyx_t_5);
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_5 = 0;
  goto __pyx_L0;
 0183: 
 0184: 
+0185: cpdef datetime.date to_date(object obj):
static PyObject *__pyx_pw_9datamodel_10converters_9to_date(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyDateTime_Date *__pyx_f_9datamodel_10converters_to_date(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyDateTime_Date *__pyx_r = NULL;
  __Pyx_INCREF(__pyx_v_obj);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_AddTraceback("datamodel.converters.to_date", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_9to_date(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_8to_date, "to_date(obj) -> date\n\nto_date.\n\nReturns obj converted to date.");
static PyMethodDef __pyx_mdef_9datamodel_10converters_9to_date = {"to_date", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_9to_date, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_8to_date};
static PyObject *__pyx_pw_9datamodel_10converters_9to_date(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_date (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
  PyObject* values[1] = {0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 185, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 185, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "to_date", 0) < (0)) __PYX_ERR(0, 185, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("to_date", 1, 1, 1, i); __PYX_ERR(0, 185, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 185, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("to_date", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 185, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.to_date", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_8to_date(__pyx_self, __pyx_v_obj);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_8to_date(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = ((PyObject *)__pyx_f_9datamodel_10converters_to_date(__pyx_v_obj, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.to_date", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_9to_date, 0, __pyx_mstate_global->__pyx_n_u_to_date, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[9])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_to_date, __pyx_t_2) < (0)) __PYX_ERR(0, 185, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0186:     """to_date.
 0187: 
 0188:     Returns obj converted to date.
 0189:     """
+0190:     if obj is None:
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {
/* … */
  }
+0191:         return None
    {
      PyDateTime_Date *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = ((PyDateTime_Date *)Py_None); __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF((PyObject *)__pyx_temp);
    }
    goto __pyx_L0;
+0192:     elif obj == _MISSING_TYPE:
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_MISSING_TYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_CompareBoolEq_object_object(__pyx_v_obj, __pyx_t_2, Py_EQ); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {
/* … */
  }
+0193:         return None
    {
      PyDateTime_Date *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = ((PyDateTime_Date *)Py_None); __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF((PyObject *)__pyx_temp);
    }
    goto __pyx_L0;
+0194:     if isinstance(obj, datetime.date):
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_date); 
  if (__pyx_t_1) {
/* … */
  }
+0195:         return obj
    if (!(likely(((__pyx_v_obj) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_date))))) __PYX_ERR(0, 195, __pyx_L1_error)
    {
      PyDateTime_Date *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_r = ((PyDateTime_Date *)__pyx_v_obj);
      }
      __Pyx_XDECREF((PyObject *)__pyx_temp);
    }
    goto __pyx_L0;
+0196:     elif isinstance(obj, (datetime.datetime, datetime.timedelta)):
  __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime); 
  if (!__pyx_t_3) {

  } else {

    __pyx_t_1 = __pyx_t_3;

    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta); 

  __pyx_t_1 = __pyx_t_3;

  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0197:         return obj.date()
    __pyx_t_4 = __pyx_v_obj;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_date, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 197, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_date))))) __PYX_ERR(0, 197, __pyx_L1_error)
    {
      PyDateTime_Date *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = ((PyDateTime_Date *)__pyx_t_2);
      }
      __Pyx_XDECREF((PyObject *)__pyx_temp);
    }
    __pyx_t_2 = 0;
    goto __pyx_L0;
+0198:     if isinstance(obj, (bytes, bytearray)):
  __pyx_t_3 = PyBytes_Check(__pyx_v_obj); 
  if (!__pyx_t_3) {

  } else {

    __pyx_t_1 = __pyx_t_3;

    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_3 = PyByteArray_Check(__pyx_v_obj); 

  __pyx_t_1 = __pyx_t_3;

  __pyx_L8_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0199:         obj = obj.decode("ascii")
    __pyx_t_4 = __pyx_v_obj;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ascii};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 199, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_2);
    __pyx_t_2 = 0;
 0200:     # Handle Unix epoch via Rust's `to_timestamp`
+0201:     if isinstance(obj, (int, float)):
  __pyx_t_3 = PyLong_Check(__pyx_v_obj); 
  if (!__pyx_t_3) {

  } else {

    __pyx_t_1 = __pyx_t_3;

    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_3 = PyFloat_Check(__pyx_v_obj); 

  __pyx_t_1 = __pyx_t_3;

  __pyx_L11_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0202:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L13_error:;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
      __pyx_L15_except_error:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      goto __pyx_L1_error;
      __pyx_L17_try_return:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      goto __pyx_L0;
      __pyx_L14_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    }
+0203:             return rc.to_timestamp(obj).date()
        __pyx_t_10 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_rc); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 203, __pyx_L13_error)
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_to_timestamp); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 203, __pyx_L13_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_12))) {
          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_12);
          assert(__pyx_t_10);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_12);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_12, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_obj};
          __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_12, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 203, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_9);
        }
        __pyx_t_4 = __pyx_t_9;
        __Pyx_INCREF(__pyx_t_4);
        __pyx_t_5 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_date, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_date))))) __PYX_ERR(0, 203, __pyx_L13_error)
        {
          PyDateTime_Date *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = ((PyDateTime_Date *)__pyx_t_2);
          }
          __Pyx_XDECREF((PyObject *)__pyx_temp);
        }
        __pyx_t_2 = 0;
        goto __pyx_L17_try_return;
+0204:         except ValueError:
      __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
      if (__pyx_t_13) {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L14_exception_handled;
      }
      goto __pyx_L15_except_error;
 0205:             pass
 0206:     # using rust todate function
+0207:     try:
  {
    /*try:*/ {
/* … */
    }
    __pyx_L21_error:;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
    __pyx_L23_except_error:;
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
    goto __pyx_L1_error;
    __pyx_L25_try_return:;
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
    goto __pyx_L0;
    __pyx_L22_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
  }
+0208:         return rc.to_date(obj)
      __pyx_t_9 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_rc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 208, __pyx_L21_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_to_date); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 208, __pyx_L21_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_12))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_12);
        assert(__pyx_t_9);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_12);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_12, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_obj};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_12, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 208, __pyx_L21_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_date))))) __PYX_ERR(0, 208, __pyx_L21_error)
      {
        PyDateTime_Date *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = ((PyDateTime_Date *)__pyx_t_2);
        }
        __Pyx_XDECREF((PyObject *)__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L25_try_return;
+0209:     except ValueError:
    __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_13) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L22_exception_handled;
    }
    goto __pyx_L23_except_error;
 0210:         pass
 0211:     # Fallback to Cython-native ciso8601 parsing
+0212:     try:
  {
    /*try:*/ {
/* … */
    }
    __pyx_L29_error:;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
    __pyx_L31_except_error:;
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    goto __pyx_L1_error;
    __pyx_L33_try_return:;
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    goto __pyx_L0;
  }
+0213:         return ciso8601.parse_datetime(obj).date()
      __pyx_t_4 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_ciso8601); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 213, __pyx_L29_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_parse_datetime); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 213, __pyx_L29_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_11))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_11);
        assert(__pyx_t_4);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_obj};
        __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 213, __pyx_L29_error)
        __Pyx_GOTREF(__pyx_t_9);
      }
      __pyx_t_12 = __pyx_t_9;
      __Pyx_INCREF(__pyx_t_12);
      __pyx_t_5 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_12, NULL};
        __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_date, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L29_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_date))))) __PYX_ERR(0, 213, __pyx_L29_error)
      {
        PyDateTime_Date *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = ((PyDateTime_Date *)__pyx_t_2);
        }
        __Pyx_XDECREF((PyObject *)__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L33_try_return;
+0214:     except ValueError:
    __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_13) {
      __Pyx_AddTraceback("datamodel.converters.to_date", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_9, &__pyx_t_12) < 0) __PYX_ERR(0, 214, __pyx_L31_except_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_12);
 0215:         pass
+0216:         raise ValueError(
      __pyx_t_4 = NULL;
+0217:             f"Can't convert invalid data *{obj}* to date"
      __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_v_obj, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 217, __pyx_L31_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_14[0] = __pyx_mstate_global->__pyx_kp_u_Can_t_convert_invalid_data;
      __pyx_t_14[1] = __pyx_t_10;
      __pyx_t_14[2] = __pyx_mstate_global->__pyx_kp_u_to_date_2;
      __pyx_t_15 = 37;
      #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
      __pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14[1]);
      #endif
      __pyx_t_13 = 0;
      #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
      __pyx_t_13 |= __Pyx_PyUnicode_KIND_04(__pyx_t_14[1]);
      #endif
      __pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_14, 3, __pyx_t_15, __pyx_t_13);
      if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 217, __pyx_L31_except_error)
      __Pyx_GOTREF(__pyx_t_16);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_16};
        __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
        if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 216, __pyx_L31_except_error)
        __Pyx_GOTREF(__pyx_t_11);
      }
      __Pyx_Raise(__pyx_t_11, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __PYX_ERR(0, 216, __pyx_L31_except_error)
    }
    goto __pyx_L31_except_error;
 0218:         )
 0219: 
 0220: 
+0221: cpdef datetime.datetime to_datetime(object obj):
static PyObject *__pyx_pw_9datamodel_10converters_11to_datetime(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyDateTime_DateTime *__pyx_f_9datamodel_10converters_to_datetime(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyDateTime_DateTime *__pyx_r = NULL;
  __Pyx_INCREF(__pyx_v_obj);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_AddTraceback("datamodel.converters.to_datetime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_11to_datetime(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_10to_datetime, "to_datetime(obj) -> datetime\n\nto_datetime.\n\nReturns obj converted to datetime.");
static PyMethodDef __pyx_mdef_9datamodel_10converters_11to_datetime = {"to_datetime", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_11to_datetime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_10to_datetime};
static PyObject *__pyx_pw_9datamodel_10converters_11to_datetime(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_datetime (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
  PyObject* values[1] = {0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 221, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 221, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "to_datetime", 0) < (0)) __PYX_ERR(0, 221, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("to_datetime", 1, 1, 1, i); __PYX_ERR(0, 221, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 221, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("to_datetime", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 221, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.to_datetime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_10to_datetime(__pyx_self, __pyx_v_obj);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_10to_datetime(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = ((PyObject *)__pyx_f_9datamodel_10converters_to_datetime(__pyx_v_obj, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.to_datetime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_11to_datetime, 0, __pyx_mstate_global->__pyx_n_u_to_datetime, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[10])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_to_datetime, __pyx_t_2) < (0)) __PYX_ERR(0, 221, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0222:     """to_datetime.
 0223: 
 0224:     Returns obj converted to datetime.
 0225:     """
+0226:     if obj is None:
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {
/* … */
  }
+0227:         return None
    {
      PyDateTime_DateTime *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = ((PyDateTime_DateTime *)Py_None); __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF((PyObject *)__pyx_temp);
    }
    goto __pyx_L0;
+0228:     elif obj == _MISSING_TYPE:
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_MISSING_TYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_CompareBoolEq_object_object(__pyx_v_obj, __pyx_t_2, Py_EQ); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {
/* … */
  }
+0229:         return None
    {
      PyDateTime_DateTime *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = ((PyDateTime_DateTime *)Py_None); __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF((PyObject *)__pyx_temp);
    }
    goto __pyx_L0;
+0230:     if isinstance(obj, datetime.datetime):
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime); 
  if (__pyx_t_1) {
/* … */
  }
+0231:         return obj
    if (!(likely(((__pyx_v_obj) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime))))) __PYX_ERR(0, 231, __pyx_L1_error)
    {
      PyDateTime_DateTime *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_r = ((PyDateTime_DateTime *)__pyx_v_obj);
      }
      __Pyx_XDECREF((PyObject *)__pyx_temp);
    }
    goto __pyx_L0;
+0232:     if isinstance(obj, (bytes, bytearray)):
  __pyx_t_3 = PyBytes_Check(__pyx_v_obj); 
  if (!__pyx_t_3) {

  } else {

    __pyx_t_1 = __pyx_t_3;

    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_3 = PyByteArray_Check(__pyx_v_obj); 

  __pyx_t_1 = __pyx_t_3;

  __pyx_L6_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0233:         obj = obj.decode("ascii")
    __pyx_t_4 = __pyx_v_obj;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ascii};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 233, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_2);
    __pyx_t_2 = 0;
 0234:     # Handle Unix epoch via Rust's `to_timestamp`
+0235:     if isinstance(obj, (int, float)):
  __pyx_t_3 = PyLong_Check(__pyx_v_obj); 
  if (!__pyx_t_3) {

  } else {

    __pyx_t_1 = __pyx_t_3;

    goto __pyx_L9_bool_binop_done;
  }
  __pyx_t_3 = PyFloat_Check(__pyx_v_obj); 

  __pyx_t_1 = __pyx_t_3;

  __pyx_L9_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0236:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L11_error:;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
      __pyx_L13_except_error:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      goto __pyx_L1_error;
      __pyx_L15_try_return:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      goto __pyx_L0;
      __pyx_L12_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    }
+0237:             return rc.to_timestamp(obj)
        __pyx_t_4 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_rc); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 237, __pyx_L11_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_to_timestamp); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 237, __pyx_L11_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_10))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_10);
          assert(__pyx_t_4);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_obj};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 237, __pyx_L11_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime))))) __PYX_ERR(0, 237, __pyx_L11_error)
        {
          PyDateTime_DateTime *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = ((PyDateTime_DateTime *)__pyx_t_2);
          }
          __Pyx_XDECREF((PyObject *)__pyx_temp);
        }
        __pyx_t_2 = 0;
        goto __pyx_L15_try_return;
+0238:         except ValueError:
      __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
      if (__pyx_t_11) {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L12_exception_handled;
      }
      goto __pyx_L13_except_error;
 0239:             pass
+0240:     try:
  {
    /*try:*/ {
/* … */
    }
    __pyx_L19_error:;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
    __pyx_L21_except_error:;
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
    goto __pyx_L1_error;
    __pyx_L23_try_return:;
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
    goto __pyx_L0;
    __pyx_L20_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
  }
+0241:         return ciso8601.parse_datetime(obj)
      __pyx_t_10 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ciso8601); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 241, __pyx_L19_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_parse_datetime); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 241, __pyx_L19_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
        assert(__pyx_t_10);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_obj};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 241, __pyx_L19_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime))))) __PYX_ERR(0, 241, __pyx_L19_error)
      {
        PyDateTime_DateTime *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = ((PyDateTime_DateTime *)__pyx_t_2);
        }
        __Pyx_XDECREF((PyObject *)__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L23_try_return;
+0242:     except ValueError:
    __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_11) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L20_exception_handled;
    }
    goto __pyx_L21_except_error;
 0243:         pass
+0244:     try:
  {
    /*try:*/ {
/* … */
    }
    __pyx_L27_error:;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
    __pyx_L29_except_error:;
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    goto __pyx_L1_error;
    __pyx_L31_try_return:;
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    goto __pyx_L0;
  }
+0245:         return rc.to_datetime(obj)
      __pyx_t_9 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_rc); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 245, __pyx_L27_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_to_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 245, __pyx_L27_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
        assert(__pyx_t_9);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_obj};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 245, __pyx_L27_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime))))) __PYX_ERR(0, 245, __pyx_L27_error)
      {
        PyDateTime_DateTime *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = ((PyDateTime_DateTime *)__pyx_t_2);
        }
        __Pyx_XDECREF((PyObject *)__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L31_try_return;
+0246:     except ValueError:
    __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_11) {
      __Pyx_AddTraceback("datamodel.converters.to_datetime", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_9) < 0) __PYX_ERR(0, 246, __pyx_L29_except_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_9);
+0247:         raise ValueError(
      __pyx_t_12 = NULL;
+0248:             f"Can't convert invalid data *{obj}* to datetime"
      __pyx_t_13 = __Pyx_PyObject_FormatSimple(__pyx_v_obj, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 248, __pyx_L29_except_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_14[0] = __pyx_mstate_global->__pyx_kp_u_Can_t_convert_invalid_data;
      __pyx_t_14[1] = __pyx_t_13;
      __pyx_t_14[2] = __pyx_mstate_global->__pyx_kp_u_to_datetime_2;
      __pyx_t_15 = 41;
      #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
      __pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14[1]);
      #endif
      __pyx_t_11 = 0;
      #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
      __pyx_t_11 |= __Pyx_PyUnicode_KIND_04(__pyx_t_14[1]);
      #endif
      __pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_14, 3, __pyx_t_15, __pyx_t_11);
      if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 248, __pyx_L29_except_error)
      __Pyx_GOTREF(__pyx_t_16);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_16};
        __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 247, __pyx_L29_except_error)
        __Pyx_GOTREF(__pyx_t_10);
      }
      __Pyx_Raise(__pyx_t_10, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __PYX_ERR(0, 247, __pyx_L29_except_error)
    }
    goto __pyx_L29_except_error;
 0249:         )
 0250: 
 0251: 
+0252: cpdef object to_integer(object obj):
static PyObject *__pyx_pw_9datamodel_10converters_13to_integer(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_to_integer(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_INCREF(__pyx_v_obj);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("datamodel.converters.to_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_13to_integer(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_12to_integer, "to_integer(obj)\n\nto_integer.\n\nReturns object converted to integer.");
static PyMethodDef __pyx_mdef_9datamodel_10converters_13to_integer = {"to_integer", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_13to_integer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_12to_integer};
static PyObject *__pyx_pw_9datamodel_10converters_13to_integer(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_integer (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
  PyObject* values[1] = {0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 252, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 252, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "to_integer", 0) < (0)) __PYX_ERR(0, 252, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("to_integer", 1, 1, 1, i); __PYX_ERR(0, 252, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 252, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("to_integer", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 252, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.to_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_12to_integer(__pyx_self, __pyx_v_obj);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_12to_integer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_to_integer(__pyx_v_obj, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.to_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_13to_integer, 0, __pyx_mstate_global->__pyx_n_u_to_integer, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[11])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_to_integer, __pyx_t_2) < (0)) __PYX_ERR(0, 252, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0253:     """to_integer.
 0254: 
 0255:     Returns object converted to integer.
 0256:     """
+0257:     if obj is None:
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {
/* … */
  }
+0258:         return None
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0259:     if isinstance(obj, int):
  __pyx_t_1 = PyLong_Check(__pyx_v_obj); 
  if (__pyx_t_1) {
/* … */
  }
+0260:         return obj
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_r = __pyx_v_obj;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0261:     if isinstance(obj, unicode):
  __pyx_t_1 = PyUnicode_Check(__pyx_v_obj); 
  if (__pyx_t_1) {
/* … */
  }
+0262:         obj = obj.encode("ascii")
    __pyx_t_3 = __pyx_v_obj;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ascii};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 262, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_2);
    __pyx_t_2 = 0;
+0263:     if isinstance(obj, bytes):
  __pyx_t_1 = PyBytes_Check(__pyx_v_obj); 
  if (__pyx_t_1) {
/* … */
  }
+0264:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L7_error:;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
      __pyx_L9_except_error:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L1_error;
      __pyx_L11_try_return:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L0;
    }
+0265:             return int(obj)
        __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 265, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_2);
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_2;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_2 = 0;
        goto __pyx_L11_try_return;
+0266:         except (TypeError, ValueError) as e:
      __pyx_t_8 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), ((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
      if (__pyx_t_8) {
        __Pyx_AddTraceback("datamodel.converters.to_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_9) < 0) __PYX_ERR(0, 266, __pyx_L9_except_error)
        __Pyx_XGOTREF(__pyx_t_2);
        __Pyx_XGOTREF(__pyx_t_3);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_3);
        __pyx_v_e = __pyx_t_3;
        /*try:*/ {
/* … */
        /*finally:*/ {
          __pyx_L18_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
             __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if ( unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __pyx_t_8 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
            }
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
            __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
            __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
            goto __pyx_L9_except_error;
          }
        }
      }
      goto __pyx_L9_except_error;
+0267:             raise ValueError(
          __pyx_t_11 = NULL;
+0268:                 f"Invalid conversion to Integer of {obj}"
          __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v_obj, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 268, __pyx_L18_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_13 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Invalid_conversion_to_Integer_of, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 268, __pyx_L18_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __pyx_t_4 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_13};
            __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 267, __pyx_L18_error)
            __Pyx_GOTREF(__pyx_t_10);
          }
+0269:             ) from e
          __Pyx_Raise(__pyx_t_10, 0, 0, __pyx_v_e);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __PYX_ERR(0, 267, __pyx_L18_error)
        }
+0270:     elif callable(obj):
  __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 270, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
    goto __pyx_L6;
  }
 0271:         # its a function callable returning a value
+0272:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L24_error:;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
      __pyx_L28_try_return:;
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
      goto __pyx_L0;
      __pyx_L25_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
    }
+0273:             return obj()
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_t_2 = __pyx_v_obj; 
        __pyx_t_4 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_2))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
          __pyx_t_4 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
          __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 273, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_9);
        }
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_9;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_9 = 0;
        goto __pyx_L28_try_return;
+0274:         except:
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L25_exception_handled;
      }
 0275:             pass
 0276:     else:
+0277:         try:
  /*else*/ {
    {
      /*try:*/ {
/* … */
      }
      __pyx_L32_error:;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
      __pyx_L34_except_error:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L1_error;
      __pyx_L36_try_return:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L0;
    }
  }
  __pyx_L6:;
+0278:             return int(obj)
        __pyx_t_9 = __Pyx_PyNumber_Int(__pyx_v_obj); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 278, __pyx_L32_error)
        __Pyx_GOTREF(__pyx_t_9);
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_9;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_9 = 0;
        goto __pyx_L36_try_return;
+0279:         except (TypeError, ValueError) as e:
      __pyx_t_14 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), ((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
      if (__pyx_t_14) {
        __Pyx_AddTraceback("datamodel.converters.to_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 279, __pyx_L34_except_error)
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_2);
        __Pyx_XGOTREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __pyx_v_e = __pyx_t_2;
        /*try:*/ {
/* … */
        /*finally:*/ {
          __pyx_L43_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
             __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
            if ( unlikely(__Pyx_GetException(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_16);
            __pyx_t_14 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
            }
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_17, __pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_ErrRestore(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0;
            __pyx_lineno = __pyx_t_14; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_15;
            goto __pyx_L34_except_error;
          }
        }
      }
      goto __pyx_L34_except_error;
+0280:             raise ValueError(
          __pyx_t_13 = NULL;
+0281:                 f"Invalid conversion to Integer of {obj}"
          __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_v_obj, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 281, __pyx_L43_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_12 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Invalid_conversion_to_Integer_of, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 281, __pyx_L43_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __pyx_t_4 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_12};
            __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 280, __pyx_L43_error)
            __Pyx_GOTREF(__pyx_t_10);
          }
+0282:             ) from e
          __Pyx_Raise(__pyx_t_10, 0, 0, __pyx_v_e);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __PYX_ERR(0, 280, __pyx_L43_error)
        }
 0283: 
+0284: cpdef object to_float(object obj):
static PyObject *__pyx_pw_9datamodel_10converters_15to_float(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_to_float(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("datamodel.converters.to_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_15to_float(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_14to_float, "to_float(obj)\n\nto_float.\n\nReturns object converted to float.");
static PyMethodDef __pyx_mdef_9datamodel_10converters_15to_float = {"to_float", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_15to_float, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_14to_float};
static PyObject *__pyx_pw_9datamodel_10converters_15to_float(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_float (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
  PyObject* values[1] = {0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 284, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 284, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "to_float", 0) < (0)) __PYX_ERR(0, 284, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("to_float", 1, 1, 1, i); __PYX_ERR(0, 284, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 284, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("to_float", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 284, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.to_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_14to_float(__pyx_self, __pyx_v_obj);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_14to_float(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_to_float(__pyx_v_obj, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.to_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_15to_float, 0, __pyx_mstate_global->__pyx_n_u_to_float, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[12])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_to_float, __pyx_t_2) < (0)) __PYX_ERR(0, 284, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0285:     """to_float.
 0286: 
 0287:     Returns object converted to float.
 0288:     """
+0289:     if isinstance(obj, (float, Decimal)):
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_Decimal); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyFloat_Check(__pyx_v_obj); 
  if (!__pyx_t_3) {

  } else {

    __pyx_t_2 = __pyx_t_3;

    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_obj, __pyx_t_1); 

  __pyx_t_2 = __pyx_t_3;

  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
/* … */
  }
+0290:         return obj
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_r = __pyx_v_obj;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0291:     elif isinstance(obj, _MISSING_TYPE):
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_MISSING_TYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_IsInstance(__pyx_v_obj, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 291, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
/* … */
  }
+0292:         return None
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0293:     elif callable(obj):
  __pyx_t_2 = __Pyx_PyCallable_Check(__pyx_v_obj); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 293, __pyx_L1_error)
  if (__pyx_t_2) {
/* … */
    goto __pyx_L3;
  }
 0294:         # its a function callable returning a value
+0295:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L6_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
      __pyx_L10_try_return:;
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
      goto __pyx_L0;
      __pyx_L7_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
    }
+0296:             return obj()
        __pyx_t_7 = NULL;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_t_8 = __pyx_v_obj; 
        __pyx_t_9 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_8))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
          assert(__pyx_t_7);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
          __pyx_t_9 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
          __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 296, __pyx_L6_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_1;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_1 = 0;
        goto __pyx_L10_try_return;
+0297:         except:
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L7_exception_handled;
      }
 0298:             pass
 0299:     else:
+0300:         try:
  /*else*/ {
    {
      /*try:*/ {
/* … */
      }
      __pyx_L14_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
      __pyx_L16_except_error:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L18_try_return:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4);
      goto __pyx_L0;
      __pyx_L17_except_return:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4);
      goto __pyx_L0;
    }
  }
  __pyx_L3:;
+0301:             return float(obj)
        __pyx_t_1 = __Pyx_PyNumber_Float(__pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 301, __pyx_L14_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (__Pyx_PyFloat_FromNumber(&__pyx_t_1, NULL, 0) < (0)) __PYX_ERR(0, 301, __pyx_L14_error)
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_1;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_1 = 0;
        goto __pyx_L18_try_return;
+0302:         except (TypeError, ValueError):
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), ((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
      if (__pyx_t_10) {
        __Pyx_ErrRestore(0,0,0);
+0303:             return None
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = Py_None; __Pyx_INCREF(Py_None);
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        goto __pyx_L17_except_return;
      }
      goto __pyx_L16_except_error;
 0304: 
+0305: cpdef object to_decimal(object obj):
static PyObject *__pyx_pw_9datamodel_10converters_17to_decimal(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_to_decimal(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_v_ex = NULL;
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("datamodel.converters.to_decimal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_17to_decimal(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_16to_decimal, "to_decimal(obj)\n\nto_decimal.\n\nReturns a Decimal version of object.");
static PyMethodDef __pyx_mdef_9datamodel_10converters_17to_decimal = {"to_decimal", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_17to_decimal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_16to_decimal};
static PyObject *__pyx_pw_9datamodel_10converters_17to_decimal(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_decimal (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
  PyObject* values[1] = {0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 305, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 305, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "to_decimal", 0) < (0)) __PYX_ERR(0, 305, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("to_decimal", 1, 1, 1, i); __PYX_ERR(0, 305, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 305, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("to_decimal", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 305, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.to_decimal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_16to_decimal(__pyx_self, __pyx_v_obj);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_16to_decimal(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_to_decimal(__pyx_v_obj, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.to_decimal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_17to_decimal, 0, __pyx_mstate_global->__pyx_n_u_to_decimal, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[13])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_to_decimal, __pyx_t_2) < (0)) __PYX_ERR(0, 305, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0306:     """to_decimal.
 0307: 
 0308:     Returns a Decimal version of object.
 0309:     """
+0310:     if obj is None:
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {
/* … */
  }
+0311:         return None
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0312:     if isinstance(obj, Decimal):
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Decimal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_IsInstance(__pyx_v_obj, __pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 312, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {
/* … */
  }
+0313:         return obj
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_r = __pyx_v_obj;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0314:     elif callable(obj):
  __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 314, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
    goto __pyx_L4;
  }
 0315:         # its a function callable returning a value
+0316:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
      __pyx_L9_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_L6_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);
    }
+0317:             return obj()
        __pyx_t_6 = NULL;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_t_7 = __pyx_v_obj; 
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_6);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_2;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_2 = 0;
        goto __pyx_L9_try_return;
+0318:         except:
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L6_exception_handled;
      }
 0319:             pass
 0320:     else:
+0321:         try:
  /*else*/ {
    {
      /*try:*/ {
/* … */
      }
      __pyx_L13_error:;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
      __pyx_L15_except_error:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      goto __pyx_L1_error;
      __pyx_L17_try_return:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      goto __pyx_L0;
      __pyx_L16_except_return:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      goto __pyx_L0;
    }
  }
  __pyx_L4:;
+0322:             return Decimal(obj)
        __pyx_t_7 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_Decimal); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 322, __pyx_L13_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          assert(__pyx_t_7);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_obj};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_2;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_2 = 0;
        goto __pyx_L17_try_return;
+0323:         except InvalidOperation as ex:
      __Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_6, &__pyx_t_7);
      __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_InvalidOperation); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 323, __pyx_L15_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_9);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_ErrRestore(__pyx_t_2, __pyx_t_6, __pyx_t_7);
      __pyx_t_2 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0;
      if (__pyx_t_10) {
        __Pyx_AddTraceback("datamodel.converters.to_decimal", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_2) < 0) __PYX_ERR(0, 323, __pyx_L15_except_error)
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __pyx_v_ex = __pyx_t_6;
        /*try:*/ {
/* … */
        /*finally:*/ {
          __pyx_L24_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
             __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            if ( unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __pyx_t_10 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
            }
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
            __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
            __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
            goto __pyx_L15_except_error;
          }
        }
      }
+0324:             raise ValueError(
          __pyx_t_11 = NULL;
+0325:                 f"Invalid Decimal conversion of {obj}"
          __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v_obj, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 325, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_13 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Invalid_Decimal_conversion_of, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 325, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __pyx_t_8 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_13};
            __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 324, __pyx_L24_error)
            __Pyx_GOTREF(__pyx_t_9);
          }
+0326:             ) from ex
          __Pyx_Raise(__pyx_t_9, 0, 0, __pyx_v_ex);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __PYX_ERR(0, 324, __pyx_L24_error)
        }
+0327:         except (TypeError, ValueError):
      __pyx_t_14 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), ((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
      if (__pyx_t_14) {
        __Pyx_ErrRestore(0,0,0);
+0328:             return None
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = Py_None; __Pyx_INCREF(Py_None);
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        goto __pyx_L16_except_return;
      }
      goto __pyx_L15_except_error;
 0329: 
+0330: TIMEDELTA_RE = re.compile(r"(-)?(\d{1,3}):(\d{1,2}):(\d{1,2})(?:.(\d{1,6}))?")
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_re); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_d_1_3_d_1_2_d_1_2_d_1_6};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TIMEDELTA_RE, __pyx_t_2) < (0)) __PYX_ERR(0, 330, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0331: 
+0332: cdef int _convert_second_fraction(s):
static int __pyx_f_9datamodel_10converters__convert_second_fraction(PyObject *__pyx_v_s) {
  int __pyx_r;
  __Pyx_INCREF(__pyx_v_s);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("datamodel.converters._convert_second_fraction", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_s);

  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0333:     if not s:
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_s); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 333, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);


  if (__pyx_t_2) {
/* … */
  }
+0334:         return 0
    {

      __pyx_r = 0;
    }
    goto __pyx_L0;
 0335:     # Pad zeros to ensure the fraction length in microseconds
+0336:     s = s.ljust(6, "0")
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_mstate_global->__pyx_n_u_ljust); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[0], NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_4);
  __pyx_t_4 = 0;
/* … */
  {
    PyObject* __pyx_temp[2] = {__pyx_mstate_global->__pyx_int_6, __pyx_mstate_global->__pyx_kp_u_0};
    __pyx_mstate_global->__pyx_tuple[0] = __Pyx_PyTuple_FromArray(__pyx_temp, 2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[0])) __PYX_ERR(0, 336, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[0]);
  }
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[0]);
+0337:     return int(s[:6])
  __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_s, 0, 6, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 337, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  {
    __pyx_r = __pyx_t_5;
  }
  goto __pyx_L0;
/* … */
  __pyx_mstate_global->__pyx_slice[0] = PySlice_New(Py_None, __pyx_mstate_global->__pyx_int_6, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[0])) __PYX_ERR(0, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[0]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[0]);
 0338: 
+0339: cpdef object to_timedelta(object obj):
static PyObject *__pyx_pw_9datamodel_10converters_19to_timedelta(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_to_timedelta(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_v_m = NULL;
  PyObject *__pyx_v_groups = NULL;
  PyObject *__pyx_v_negate = NULL;
  PyObject *__pyx_v_hours = NULL;
  PyObject *__pyx_v_minutes = NULL;
  PyObject *__pyx_v_seconds = NULL;
  PyObject *__pyx_v_microseconds = NULL;
  PyObject *__pyx_v_tdelta = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_INCREF(__pyx_v_obj);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("datamodel.converters.to_timedelta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_m);
  __Pyx_XDECREF(__pyx_v_groups);
  __Pyx_XDECREF(__pyx_v_negate);
  __Pyx_XDECREF(__pyx_v_hours);
  __Pyx_XDECREF(__pyx_v_minutes);
  __Pyx_XDECREF(__pyx_v_seconds);
  __Pyx_XDECREF(__pyx_v_microseconds);
  __Pyx_XDECREF(__pyx_v_tdelta);
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_19to_timedelta(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_18to_timedelta, "to_timedelta(obj)");
static PyMethodDef __pyx_mdef_9datamodel_10converters_19to_timedelta = {"to_timedelta", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_19to_timedelta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_18to_timedelta};
static PyObject *__pyx_pw_9datamodel_10converters_19to_timedelta(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_timedelta (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
  PyObject* values[1] = {0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 339, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 339, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "to_timedelta", 0) < (0)) __PYX_ERR(0, 339, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("to_timedelta", 1, 1, 1, i); __PYX_ERR(0, 339, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 339, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("to_timedelta", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 339, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.to_timedelta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_18to_timedelta(__pyx_self, __pyx_v_obj);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_18to_timedelta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_to_timedelta(__pyx_v_obj, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.to_timedelta", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_19to_timedelta, 0, __pyx_mstate_global->__pyx_n_u_to_timedelta, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[14])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_to_timedelta, __pyx_t_2) < (0)) __PYX_ERR(0, 339, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0340: 
+0341:     if obj is None:
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {
/* … */
  }
+0342:         return None
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0343:     if isinstance(obj, datetime.timedelta):
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta); 
  if (__pyx_t_1) {
/* … */
  }
+0344:         return obj
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_r = __pyx_v_obj;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 0345: 
+0346:     if isinstance(obj, (bytes, bytearray)):
  __pyx_t_2 = PyBytes_Check(__pyx_v_obj); 
  if (!__pyx_t_2) {

  } else {

    __pyx_t_1 = __pyx_t_2;

    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_2 = PyByteArray_Check(__pyx_v_obj); 

  __pyx_t_1 = __pyx_t_2;

  __pyx_L6_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0347:         obj = obj.decode("ascii")
    __pyx_t_4 = __pyx_v_obj;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ascii};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 347, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_3);
    __pyx_t_3 = 0;
 0348: 
+0349:     m = TIMEDELTA_RE.match(obj)
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_TIMEDELTA_RE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_match); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
    assert(__pyx_t_4);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_obj};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 349, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_v_m = __pyx_t_3;
  __pyx_t_3 = 0;
+0350:     if not m:
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_m); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 350, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);


  if (__pyx_t_2) {
/* … */
  }
+0351:         return obj
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_r = __pyx_v_obj;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 0352: 
+0353:     try:
  {
    /*try:*/ {
/* … */
    }
    __pyx_L9_error:;
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
    __pyx_L11_except_error:;
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_10);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
    goto __pyx_L1_error;
    __pyx_L13_try_return:;
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_10);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
    goto __pyx_L0;
  }
+0354:         groups = list(m.groups())
      __pyx_t_7 = __pyx_v_m;
      __Pyx_INCREF(__pyx_t_7);
      __pyx_t_5 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
        __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_groups, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 354, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __pyx_t_7 = __Pyx_PySequence_ListKeepNew(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 354, __pyx_L9_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_groups = ((PyObject*)__pyx_t_7);
      __pyx_t_7 = 0;
+0355:         groups[-1] = _convert_second_fraction(groups[-1])
      __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_groups, -1L, long, 1, __Pyx_PyLong_From_long, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 355, __pyx_L9_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_11 = __pyx_f_9datamodel_10converters__convert_second_fraction(__pyx_t_7); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 355, __pyx_L9_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 355, __pyx_L9_error)
      __Pyx_GOTREF(__pyx_t_7);

      if (unlikely((__Pyx_SetItemInt(__pyx_v_groups, -1L, __pyx_t_7, long, 1, __Pyx_PyLong_From_long, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(0, 355, __pyx_L9_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0356:         negate = -1 if groups[0] else 1
      __pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_groups, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L9_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 356, __pyx_L9_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_2) {
        __Pyx_INCREF(__pyx_mstate_global->__pyx_int_neg_1);
        __pyx_t_7 = __pyx_mstate_global->__pyx_int_neg_1;
      } else {
        __Pyx_INCREF(__pyx_mstate_global->__pyx_int_1);
        __pyx_t_7 = __pyx_mstate_global->__pyx_int_1;
      }

      __pyx_v_negate = ((PyObject*)__pyx_t_7);
      __pyx_t_7 = 0;
+0357:         hours, minutes, seconds, microseconds = groups[1:]
      __pyx_t_7 = __Pyx_PyList_GetSlice(__pyx_v_groups, 1, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 357, __pyx_L9_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (1) {
        PyObject* sequence = __pyx_t_7;
        Py_ssize_t size = __Pyx_PyList_GET_SIZE(sequence);
        if (unlikely(size != 4)) {
          if (size > 4) __Pyx_RaiseTooManyValuesError(4);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(0, 357, __pyx_L9_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 357, __pyx_L9_error)
        __Pyx_XGOTREF(__pyx_t_3);
        __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 357, __pyx_L9_error)
        __Pyx_XGOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyList_GET_ITEM_REF(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 357, __pyx_L9_error)
        __Pyx_XGOTREF(__pyx_t_6);
        __pyx_t_12 = __Pyx_PyList_GET_ITEM_REF(sequence, 3, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 357, __pyx_L9_error)
        __Pyx_XGOTREF(__pyx_t_12);
        #else
        {
          Py_ssize_t i;
          PyObject** temps[4] = {&__pyx_t_3,&__pyx_t_4,&__pyx_t_6,&__pyx_t_12};
          for (i=0; i < 4; i++) {
            PyObject* item = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 357, __pyx_L9_error)
            __Pyx_GOTREF(item);
            *(temps[i]) = item;
          }
        }
        #endif
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __pyx_v_hours = __pyx_t_3;
      __pyx_t_3 = 0;
      __pyx_v_minutes = __pyx_t_4;
      __pyx_t_4 = 0;
      __pyx_v_seconds = __pyx_t_6;
      __pyx_t_6 = 0;
      __pyx_v_microseconds = __pyx_t_12;
      __pyx_t_12 = 0;
 0358:         tdelta = (
+0359:                 datetime.timedelta(
      __pyx_t_12 = NULL;
/* … */
      #endif
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[5] = {__pyx_t_12, __pyx_t_6, __pyx_t_4, __pyx_t_3, __pyx_t_13};
        #if CYTHON_VECTORCALL
        __pyx_t_14 = __pyx_mstate_global->__pyx_tuple[1];
        if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 359, __pyx_L9_error)
        __Pyx_INCREF(__pyx_t_14);
        #else
        {
          PyObject *__pyx_temp[4] = {__pyx_mstate_global->__pyx_n_u_hours, __pyx_mstate_global->__pyx_n_u_minutes, __pyx_mstate_global->__pyx_n_u_seconds, __pyx_mstate_global->__pyx_n_u_microseconds};
          __pyx_t_14 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+1, 4);
          if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 359, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_14);
        }
        #endif
        __pyx_t_7 = __Pyx_Object_VectorcallKwds((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        #if CYTHON_VECTORCALL
        #endif
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 359, __pyx_L9_error)
        __Pyx_GOTREF((PyObject *)__pyx_t_7);
      }
/* … */
  {
    PyObject* __pyx_temp[4] = {__pyx_mstate_global->__pyx_n_u_hours, __pyx_mstate_global->__pyx_n_u_minutes, __pyx_mstate_global->__pyx_n_u_seconds, __pyx_mstate_global->__pyx_n_u_microseconds};
    __pyx_mstate_global->__pyx_tuple[1] = __Pyx_PyTuple_FromArray(__pyx_temp, 4); if (unlikely(!__pyx_mstate_global->__pyx_tuple[1])) __PYX_ERR(0, 359, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[1]);
  }
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[1]);
+0360:                     hours=int(hours),
      __pyx_t_6 = __Pyx_PyNumber_Int(__pyx_v_hours); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 360, __pyx_L9_error)
      __Pyx_GOTREF(__pyx_t_6);
+0361:                     minutes=int(minutes),
      __pyx_t_4 = __Pyx_PyNumber_Int(__pyx_v_minutes); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 361, __pyx_L9_error)
      __Pyx_GOTREF(__pyx_t_4);
+0362:                     seconds=int(seconds),
      __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_seconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 362, __pyx_L9_error)
      __Pyx_GOTREF(__pyx_t_3);
+0363:                     microseconds=int(microseconds),
      __pyx_t_13 = __Pyx_PyNumber_Int(__pyx_v_microseconds); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 363, __pyx_L9_error)
      __Pyx_GOTREF(__pyx_t_13);
      #if CYTHON_VECTORCALL
 0364:                 )
+0365:                 * negate
      __pyx_t_14 = PyNumber_Multiply(((PyObject *)__pyx_t_7), __pyx_v_negate); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 365, __pyx_L9_error)
      __Pyx_GOTREF(__pyx_t_14);
      __Pyx_DECREF((PyObject *)__pyx_t_7); __pyx_t_7 = 0;
      __pyx_v_tdelta = __pyx_t_14;
      __pyx_t_14 = 0;
 0366:         )
+0367:         return tdelta
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __Pyx_INCREF(__pyx_v_tdelta);
          __pyx_r = __pyx_v_tdelta;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      goto __pyx_L13_try_return;
+0368:     except ValueError:
    __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_11) {
      __Pyx_AddTraceback("datamodel.converters.to_timedelta", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_14, &__pyx_t_7, &__pyx_t_13) < 0) __PYX_ERR(0, 368, __pyx_L11_except_error)
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_13);
+0369:         raise ValueError(
      __pyx_t_4 = NULL;
+0370:             f"Invalid timedelta Object: {obj}"
      __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_obj, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 370, __pyx_L11_except_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_12 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Invalid_timedelta_Object, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 370, __pyx_L11_except_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_12};
        __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 369, __pyx_L11_except_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(0, 369, __pyx_L11_except_error)
    }
    goto __pyx_L11_except_error;
 0371:         )
 0372: 
+0373: TIME_RE = re.compile(r"(\d{1,2}):(\d{1,2}):(\d{1,2})(?:.(\d{1,6}))?")
  __pyx_t_7 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_re); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_compile); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_d_1_2_d_1_2_d_1_2_d_1_6};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TIME_RE, __pyx_t_2) < (0)) __PYX_ERR(0, 373, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0374: 
+0375: cpdef object to_time(object obj):
static PyObject *__pyx_pw_9datamodel_10converters_21to_time(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_to_time(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_v_m = NULL;
  PyObject *__pyx_v_groups = NULL;
  PyObject *__pyx_v_hours = NULL;
  PyObject *__pyx_v_minutes = NULL;
  PyObject *__pyx_v_seconds = NULL;
  PyObject *__pyx_v_microseconds = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_AddTraceback("datamodel.converters.to_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_m);
  __Pyx_XDECREF(__pyx_v_groups);
  __Pyx_XDECREF(__pyx_v_hours);
  __Pyx_XDECREF(__pyx_v_minutes);
  __Pyx_XDECREF(__pyx_v_seconds);
  __Pyx_XDECREF(__pyx_v_microseconds);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_21to_time(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_20to_time, "to_time(obj)\n\nto_time.\n\nReturns obj converted to datetime.time.");
static PyMethodDef __pyx_mdef_9datamodel_10converters_21to_time = {"to_time", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_21to_time, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_20to_time};
static PyObject *__pyx_pw_9datamodel_10converters_21to_time(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_time (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
  PyObject* values[1] = {0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 375, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 375, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "to_time", 0) < (0)) __PYX_ERR(0, 375, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("to_time", 1, 1, 1, i); __PYX_ERR(0, 375, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 375, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("to_time", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 375, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.to_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_20to_time(__pyx_self, __pyx_v_obj);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_20to_time(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_to_time(__pyx_v_obj, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.to_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_21to_time, 0, __pyx_mstate_global->__pyx_n_u_to_time, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[15])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_to_time, __pyx_t_2) < (0)) __PYX_ERR(0, 375, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0376:     """to_time.
 0377: 
 0378:     Returns obj converted to datetime.time.
 0379:     """
+0380:     if obj is None:
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {
/* … */
  }
+0381:         return None
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0382:     if isinstance(obj, datetime.time):
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_time); 
  if (__pyx_t_1) {
/* … */
  }
+0383:         return obj
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_r = __pyx_v_obj;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0384:     elif callable(obj):
  __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 384, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
    goto __pyx_L4;
  }
 0385:         # its a function callable returning a value
+0386:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
      __pyx_L9_try_return:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L0;
      __pyx_L6_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    }
+0387:             return obj()
        __pyx_t_6 = NULL;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_t_7 = __pyx_v_obj; 
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_6);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
          __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 387, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_5;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_5 = 0;
        goto __pyx_L9_try_return;
+0388:         except:
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L6_exception_handled;
      }
 0389:             pass
 0390:     else:
+0391:         try:
  /*else*/ {
    {
      /*try:*/ {
/* … */
      }
      __pyx_L13_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
      __pyx_L15_except_error:;
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_3, __pyx_t_2);
      goto __pyx_L1_error;
      __pyx_L17_try_return:;
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_3, __pyx_t_2);
      goto __pyx_L0;
      __pyx_L14_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_3, __pyx_t_2);
    }
+0392:             return datetime.time(*map(int, obj.split(':')))
        __pyx_t_7 = NULL;
        __pyx_t_9 = __pyx_v_obj;
        __Pyx_INCREF(__pyx_t_9);
        __pyx_t_8 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u__4};
          __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_split, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 392, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __pyx_t_8 = 1;
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_7, ((PyObject *)(&PyLong_Type)), __pyx_t_6};
          __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_map, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 392, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __pyx_t_6 = __Pyx_PySequence_Tuple(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 392, __pyx_L13_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_mstate_global->__pyx_ptype_7cpython_8datetime_time), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 392, __pyx_L13_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_5;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_5 = 0;
        goto __pyx_L17_try_return;
+0393:         except (ValueError, TypeError):
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), ((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
      if (__pyx_t_10) {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L14_exception_handled;
      }
      goto __pyx_L15_except_error;
 0394:             pass
+0395:         m = TIME_RE.match(obj)
    __pyx_t_6 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_TIME_RE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_match); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_9);
      assert(__pyx_t_6);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_obj};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 395, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __pyx_v_m = __pyx_t_5;
    __pyx_t_5 = 0;
+0396:         if not m:
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_m); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 396, __pyx_L1_error)
    __pyx_t_11 = (!__pyx_t_1);


    if (__pyx_t_11) {
/* … */
    }
+0397:             return obj
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __Pyx_INCREF(__pyx_v_obj);
          __pyx_r = __pyx_v_obj;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      goto __pyx_L0;
+0398:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L22_error:;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
      __pyx_L24_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L26_try_return:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L0;
    }
  }
  __pyx_L4:;
+0399:             groups = list(m.groups())
        __pyx_t_9 = __pyx_v_m;
        __Pyx_INCREF(__pyx_t_9);
        __pyx_t_8 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
          __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_groups, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 399, __pyx_L22_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __pyx_t_9 = __Pyx_PySequence_ListKeepNew(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 399, __pyx_L22_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_v_groups = ((PyObject*)__pyx_t_9);
        __pyx_t_9 = 0;
+0400:             groups[-1] = _convert_second_fraction(groups[-1])
        __pyx_t_9 = __Pyx_GetItemInt_List(__pyx_v_groups, -1L, long, 1, __Pyx_PyLong_From_long, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 400, __pyx_L22_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_10 = __pyx_f_9datamodel_10converters__convert_second_fraction(__pyx_t_9); if (unlikely(__pyx_t_10 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 400, __pyx_L22_error)
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = __Pyx_PyLong_From_int(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 400, __pyx_L22_error)
        __Pyx_GOTREF(__pyx_t_9);

        if (unlikely((__Pyx_SetItemInt(__pyx_v_groups, -1L, __pyx_t_9, long, 1, __Pyx_PyLong_From_long, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(0, 400, __pyx_L22_error)
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+0401:             hours, minutes, seconds, microseconds = groups
        if (1) {
          PyObject* sequence = __pyx_v_groups;
          Py_ssize_t size = __Pyx_PyList_GET_SIZE(sequence);
          if (unlikely(size != 4)) {
            if (size > 4) __Pyx_RaiseTooManyValuesError(4);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(0, 401, __pyx_L22_error)
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_9 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 401, __pyx_L22_error)
          __Pyx_XGOTREF(__pyx_t_9);
          __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 401, __pyx_L22_error)
          __Pyx_XGOTREF(__pyx_t_5);
          __pyx_t_6 = __Pyx_PyList_GET_ITEM_REF(sequence, 2, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 401, __pyx_L22_error)
          __Pyx_XGOTREF(__pyx_t_6);
          __pyx_t_7 = __Pyx_PyList_GET_ITEM_REF(sequence, 3, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 401, __pyx_L22_error)
          __Pyx_XGOTREF(__pyx_t_7);
          #else
          {
            Py_ssize_t i;
            PyObject** temps[4] = {&__pyx_t_9,&__pyx_t_5,&__pyx_t_6,&__pyx_t_7};
            for (i=0; i < 4; i++) {
              PyObject* item = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 401, __pyx_L22_error)
              __Pyx_GOTREF(item);
              *(temps[i]) = item;
            }
          }
          #endif
        }
        __pyx_v_hours = __pyx_t_9;
        __pyx_t_9 = 0;
        __pyx_v_minutes = __pyx_t_5;
        __pyx_t_5 = 0;
        __pyx_v_seconds = __pyx_t_6;
        __pyx_t_6 = 0;
        __pyx_v_microseconds = __pyx_t_7;
        __pyx_t_7 = 0;
+0402:             return datetime.time(
        __pyx_t_6 = NULL;
/* … */
        #endif
        __pyx_t_8 = 1;
        {
          PyObject *__pyx_callargs[5] = {__pyx_t_6, __pyx_t_5, __pyx_t_9, __pyx_t_12, __pyx_t_13};
          #if CYTHON_VECTORCALL
          __pyx_t_14 = __pyx_mstate_global->__pyx_tuple[2];
          if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 402, __pyx_L22_error)
          __Pyx_INCREF(__pyx_t_14);
          #else
          {
            PyObject *__pyx_temp[4] = {__pyx_mstate_global->__pyx_n_u_hour, __pyx_mstate_global->__pyx_n_u_minute, __pyx_mstate_global->__pyx_n_u_second, __pyx_mstate_global->__pyx_n_u_microsecond};
            __pyx_t_14 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+1, 4);
            if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 402, __pyx_L22_error)
            __Pyx_GOTREF(__pyx_t_14);
          }
          #endif
          __pyx_t_7 = __Pyx_Object_VectorcallKwds((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_8datetime_time, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          #if CYTHON_VECTORCALL
          #endif
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 402, __pyx_L22_error)
          __Pyx_GOTREF((PyObject *)__pyx_t_7);
        }
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = ((PyObject *)__pyx_t_7);
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_7 = 0;
        goto __pyx_L26_try_return;
/* … */
  {
    PyObject* __pyx_temp[4] = {__pyx_mstate_global->__pyx_n_u_hour, __pyx_mstate_global->__pyx_n_u_minute, __pyx_mstate_global->__pyx_n_u_second, __pyx_mstate_global->__pyx_n_u_microsecond};
    __pyx_mstate_global->__pyx_tuple[2] = __Pyx_PyTuple_FromArray(__pyx_temp, 4); if (unlikely(!__pyx_mstate_global->__pyx_tuple[2])) __PYX_ERR(0, 402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[2]);
  }
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[2]);
+0403:                 hour=int(hours),
        __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_v_hours); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 403, __pyx_L22_error)
        __Pyx_GOTREF(__pyx_t_5);
+0404:                 minute=int(minutes),
        __pyx_t_9 = __Pyx_PyNumber_Int(__pyx_v_minutes); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 404, __pyx_L22_error)
        __Pyx_GOTREF(__pyx_t_9);
+0405:                 second=int(seconds),
        __pyx_t_12 = __Pyx_PyNumber_Int(__pyx_v_seconds); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 405, __pyx_L22_error)
        __Pyx_GOTREF(__pyx_t_12);
+0406:                 microsecond=int(microseconds),
        __pyx_t_13 = __Pyx_PyNumber_Int(__pyx_v_microseconds); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 406, __pyx_L22_error)
        __Pyx_GOTREF(__pyx_t_13);
        #if CYTHON_VECTORCALL
 0407:             )
+0408:         except (TypeError, ValueError) as e:
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), ((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
      if (__pyx_t_10) {
        __Pyx_AddTraceback("datamodel.converters.to_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_14, &__pyx_t_13) < 0) __PYX_ERR(0, 408, __pyx_L24_except_error)
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_14);
        __Pyx_XGOTREF(__pyx_t_13);
        __Pyx_INCREF(__pyx_t_14);
        __pyx_v_e = __pyx_t_14;
        /*try:*/ {
/* … */
        /*finally:*/ {
          __pyx_L33_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
             __Pyx_ExceptionSwap(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25);
            if ( unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
            __Pyx_XGOTREF(__pyx_t_20);
            __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_t_10 = __pyx_lineno; __pyx_t_18 = __pyx_clineno; __pyx_t_19 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
            }
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_24);
            __Pyx_XGIVEREF(__pyx_t_25);
            __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_ErrRestore(__pyx_t_20, __pyx_t_21, __pyx_t_22);
            __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
            __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_18; __pyx_filename = __pyx_t_19;
            goto __pyx_L24_except_error;
          }
        }
      }
      goto __pyx_L24_except_error;
+0409:             raise ValueError(
          __pyx_t_9 = NULL;
+0410:                 f"Invalid Time/Timestamp Object {obj}: {e}"
          __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_obj, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 410, __pyx_L33_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 410, __pyx_L33_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_15[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_Time_Timestamp_Object;
          __pyx_t_15[1] = __pyx_t_5;
          __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u__5;
          __pyx_t_15[3] = __pyx_t_6;
          __pyx_t_16 = 32;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_16 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15[3]);
          #endif
          __pyx_t_10 = 0;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_15[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_15[3]);
          #endif
          __pyx_t_17 = __Pyx_PyUnicode_Join(__pyx_t_15, 4, __pyx_t_16, __pyx_t_10);
          if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 410, __pyx_L33_error)
          __Pyx_GOTREF(__pyx_t_17);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_8 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_17};
            __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
            if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 409, __pyx_L33_error)
            __Pyx_GOTREF(__pyx_t_12);
          }
          __Pyx_Raise(__pyx_t_12, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __PYX_ERR(0, 409, __pyx_L33_error)
        }
 0411:             )
 0412: 
 0413: 
+0414: cpdef object strtobool(str val):
static PyObject *__pyx_pw_9datamodel_10converters_23strtobool(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_strtobool(PyObject *__pyx_v_val, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_INCREF(__pyx_v_val);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("datamodel.converters.strtobool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_val);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_23strtobool(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_22strtobool, "strtobool(str val)\n\nConvert a string representation of truth to true (1) or false (0).\n\nTrue values are \047y\047, \047yes\047, \047t\047, \047true\047, \047on\047, and \0471\047; false values\nare \047n\047, \047no\047, \047f\047, \047false\047, \047off\047, and \0470\047.  Raises ValueError if\n\047val\047 is anything else.");
static PyMethodDef __pyx_mdef_9datamodel_10converters_23strtobool = {"strtobool", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_23strtobool, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_22strtobool};
static PyObject *__pyx_pw_9datamodel_10converters_23strtobool(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_val = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("strtobool (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_val,0};
  PyObject* values[1] = {0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 414, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 414, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "strtobool", 0) < (0)) __PYX_ERR(0, 414, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("strtobool", 1, 1, 1, i); __PYX_ERR(0, 414, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 414, __pyx_L3_error)
    }
    __pyx_v_val = ((PyObject*)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("strtobool", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 414, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.strtobool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_val), (&PyUnicode_Type), 1, "val", 1))) __PYX_ERR(0, 414, __pyx_L1_error)
  __pyx_r = __pyx_pf_9datamodel_10converters_22strtobool(__pyx_self, __pyx_v_val);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_22strtobool(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_val) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_strtobool(__pyx_v_val, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 414, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.strtobool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_23strtobool, 0, __pyx_mstate_global->__pyx_n_u_strtobool, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[16])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 414, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_strtobool, __pyx_t_2) < (0)) __PYX_ERR(0, 414, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0415:     """Convert a string representation of truth to true (1) or false (0).
 0416: 
 0417:     True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values
 0418:     are 'n', 'no', 'f', 'false', 'off', and '0'.  Raises ValueError if
 0419:     'val' is anything else.
 0420:     """
+0421:     val = val.lower()
  __pyx_t_1 = __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__lower, __pyx_v_val); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1)) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(0, 421, __pyx_L1_error)
  __Pyx_DECREF_SET(__pyx_v_val, ((PyObject*)__pyx_t_1));
  __pyx_t_1 = 0;
+0422:     if val in ('y', 'yes', 't', 'true', 'on', '1', 'T'):
  __Pyx_INCREF(__pyx_v_val);
  __pyx_t_2 = __pyx_v_val;
  __pyx_t_4 = (__Pyx_PyObject_Equals_str_ch121(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_y, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 422, __pyx_L1_error)
  if (!__pyx_t_4) {

  } else {

    __pyx_t_3 = __pyx_t_4;

    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_yes, Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 422, __pyx_L1_error)
  if (!__pyx_t_4) {

  } else {

    __pyx_t_3 = __pyx_t_4;

    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = (__Pyx_PyObject_Equals_str_ch116(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_t, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 422, __pyx_L1_error)
  if (!__pyx_t_4) {

  } else {

    __pyx_t_3 = __pyx_t_4;

    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_true, Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 422, __pyx_L1_error)
  if (!__pyx_t_4) {

  } else {

    __pyx_t_3 = __pyx_t_4;

    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_on, Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 422, __pyx_L1_error)
  if (!__pyx_t_4) {

  } else {

    __pyx_t_3 = __pyx_t_4;

    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = (__Pyx_PyObject_Equals_str_ch49(__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_1, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 422, __pyx_L1_error)
  if (!__pyx_t_4) {

  } else {

    __pyx_t_3 = __pyx_t_4;

    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = (__Pyx_PyObject_Equals_str_ch84(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_T, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 422, __pyx_L1_error)

  __pyx_t_3 = __pyx_t_4;

  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __pyx_t_3;


  if (__pyx_t_4) {
/* … */
  }
+0423:         return True
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(Py_True);
        __pyx_r = Py_True;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0424:     elif val in ('n', 'no', 'f', 'false', 'off', '0', 'none', 'null'):
  __Pyx_INCREF(__pyx_v_val);
  __pyx_t_2 = __pyx_v_val;
  __pyx_t_3 = (__Pyx_PyObject_Equals_str_ch110(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_n, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 424, __pyx_L1_error)
  if (!__pyx_t_3) {

  } else {

    __pyx_t_4 = __pyx_t_3;

    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_no, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 424, __pyx_L1_error)
  if (!__pyx_t_3) {

  } else {

    __pyx_t_4 = __pyx_t_3;

    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyObject_Equals_str_ch102(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_f, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 424, __pyx_L1_error)
  if (!__pyx_t_3) {

  } else {

    __pyx_t_4 = __pyx_t_3;

    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_false, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 424, __pyx_L1_error)
  if (!__pyx_t_3) {

  } else {

    __pyx_t_4 = __pyx_t_3;

    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_off, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 424, __pyx_L1_error)
  if (!__pyx_t_3) {

  } else {

    __pyx_t_4 = __pyx_t_3;

    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PyObject_Equals_str_ch48(__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_0, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 424, __pyx_L1_error)
  if (!__pyx_t_3) {

  } else {

    __pyx_t_4 = __pyx_t_3;

    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_none, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 424, __pyx_L1_error)
  if (!__pyx_t_3) {

  } else {

    __pyx_t_4 = __pyx_t_3;

    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_null, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 424, __pyx_L1_error)

  __pyx_t_4 = __pyx_t_3;

  __pyx_L11_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __pyx_t_4;


  if (likely(__pyx_t_3)) {
/* … */
  }
+0425:         return False
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(Py_False);
        __pyx_r = Py_False;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 0426:     else:
+0427:         raise ValueError(
  /*else*/ {
    __pyx_t_5 = NULL;
+0428:             f"Invalid truth value for **'{val}'**"
    __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_truth_value_for;
    __pyx_t_6[1] = __pyx_v_val;
    __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__6;
    __pyx_t_7 = 30;
    #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
    __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6[1]);
    #endif
    __pyx_t_8 = 0;
    #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
    __pyx_t_8 |= __Pyx_PyUnicode_KIND_04(__pyx_t_6[1]);
    #endif
    __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_7, __pyx_t_8);
    if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 428, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_9};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 427, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 427, __pyx_L1_error)
  }
 0429:         )
 0430: 
+0431: cpdef object to_boolean(object obj):
static PyObject *__pyx_pw_9datamodel_10converters_25to_boolean(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_to_boolean(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_INCREF(__pyx_v_obj);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("datamodel.converters.to_boolean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_25to_boolean(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_24to_boolean, "to_boolean(obj)\n\nto_boolean.\n\nConvert and returns any object value to boolean version.");
static PyMethodDef __pyx_mdef_9datamodel_10converters_25to_boolean = {"to_boolean", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_25to_boolean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_24to_boolean};
static PyObject *__pyx_pw_9datamodel_10converters_25to_boolean(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_boolean (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
  PyObject* values[1] = {0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 431, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 431, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "to_boolean", 0) < (0)) __PYX_ERR(0, 431, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("to_boolean", 1, 1, 1, i); __PYX_ERR(0, 431, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 431, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("to_boolean", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 431, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.to_boolean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_24to_boolean(__pyx_self, __pyx_v_obj);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_24to_boolean(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_to_boolean(__pyx_v_obj, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.to_boolean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_25to_boolean, 0, __pyx_mstate_global->__pyx_n_u_to_boolean, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[17])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_to_boolean, __pyx_t_2) < (0)) __PYX_ERR(0, 431, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0432:     """to_boolean.
 0433: 
 0434:     Convert and returns any object value to boolean version.
 0435:     """
+0436:     if obj is None:
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {
/* … */
  }
+0437:         return None
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0438:     if isinstance(obj, bool):
  __pyx_t_1 = PyBool_Check(__pyx_v_obj); 
  if (__pyx_t_1) {
/* … */
  }
+0439:         return obj
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_r = __pyx_v_obj;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0440:     if isinstance(obj, (bytes, bytearray)):
  __pyx_t_2 = PyBytes_Check(__pyx_v_obj); 
  if (!__pyx_t_2) {

  } else {

    __pyx_t_1 = __pyx_t_2;

    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_2 = PyByteArray_Check(__pyx_v_obj); 

  __pyx_t_1 = __pyx_t_2;

  __pyx_L6_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0441:         obj = obj.decode("ascii")
    __pyx_t_4 = __pyx_v_obj;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ascii};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 441, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_3);
    __pyx_t_3 = 0;
+0442:     if isinstance(obj, str):
  __pyx_t_1 = PyUnicode_Check(__pyx_v_obj); 
  if (__pyx_t_1) {
/* … */
  }
+0443:         return strtobool(obj)
    __pyx_t_3 = __pyx_v_obj;
    __Pyx_INCREF(__pyx_t_3);
    if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(0, 443, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_9datamodel_10converters_strtobool(((PyObject*)__pyx_t_3), 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_4;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_4 = 0;
    goto __pyx_L0;
+0444:     elif callable(obj):
  __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 444, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
    goto __pyx_L8;
  }
 0445:         # its a function callable returning a value
+0446:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L9_error:;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
      __pyx_L13_try_return:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      goto __pyx_L0;
      __pyx_L10_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    }
+0447:             return obj()
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_t_9 = __pyx_v_obj; 
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_9))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
          __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 447, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_4);
        }
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_4;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_4 = 0;
        goto __pyx_L13_try_return;
+0448:         except:
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L10_exception_handled;
      }
 0449:             pass
 0450:     else:
+0451:         return bool(obj)
  /*else*/ {
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_obj); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 451, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);

    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_4;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }
  __pyx_L8:;
 0452: 
+0453: cpdef object to_object(object obj):
static PyObject *__pyx_pw_9datamodel_10converters_27to_object(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_to_object(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("datamodel.converters.to_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_27to_object(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_26to_object, "to_object(obj)");
static PyMethodDef __pyx_mdef_9datamodel_10converters_27to_object = {"to_object", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_27to_object, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_26to_object};
static PyObject *__pyx_pw_9datamodel_10converters_27to_object(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_object (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
  PyObject* values[1] = {0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 453, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 453, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "to_object", 0) < (0)) __PYX_ERR(0, 453, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("to_object", 1, 1, 1, i); __PYX_ERR(0, 453, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 453, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("to_object", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 453, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.to_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_26to_object(__pyx_self, __pyx_v_obj);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_26to_object(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_to_object(__pyx_v_obj, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.to_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_27to_object, 0, __pyx_mstate_global->__pyx_n_u_to_object, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[18])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_to_object, __pyx_t_2) < (0)) __PYX_ERR(0, 453, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0454:     if obj is None:
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {
/* … */
  }
+0455:         return None
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0456:     if isinstance(obj, (list, dict,tuple)):
  __pyx_t_2 = PyList_Check(__pyx_v_obj); 
  if (!__pyx_t_2) {

  } else {

    __pyx_t_1 = __pyx_t_2;

    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = PyDict_Check(__pyx_v_obj); 
  if (!__pyx_t_2) {

  } else {

    __pyx_t_1 = __pyx_t_2;

    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = PyTuple_Check(__pyx_v_obj); 

  __pyx_t_1 = __pyx_t_2;

  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0457:         return obj
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_r = __pyx_v_obj;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0458:     elif callable(obj):
  __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 458, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
    goto __pyx_L4;
  }
 0459:         # its a function callable returning a value
+0460:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L8_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_L12_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_L9_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);
    }
+0461:             return obj()
        __pyx_t_7 = NULL;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_t_8 = __pyx_v_obj; 
        __pyx_t_9 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_8))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
          assert(__pyx_t_7);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
          __pyx_t_9 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
          __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 461, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_6;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_6 = 0;
        goto __pyx_L12_try_return;
+0462:         except:
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L9_exception_handled;
      }
 0463:             pass
+0464:     elif isinstance(obj, str):
  __pyx_t_1 = PyUnicode_Check(__pyx_v_obj); 
  if (likely(__pyx_t_1)) {
/* … */
  }
+0465:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L16_error:;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __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_L18_except_error:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      goto __pyx_L1_error;
      __pyx_L20_try_return:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      goto __pyx_L0;
      __pyx_L19_except_return:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
      goto __pyx_L0;
    }
+0466:             return orjson.loads(obj)
        __pyx_t_8 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_orjson); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 466, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_loads); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 466, __pyx_L16_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_9 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_10))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10);
          assert(__pyx_t_8);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
          __pyx_t_9 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_obj};
          __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 466, __pyx_L16_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_6;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_6 = 0;
        goto __pyx_L20_try_return;
+0467:         except (TypeError, ValueError):
      __pyx_t_11 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), ((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
      if (__pyx_t_11) {
        __Pyx_ErrRestore(0,0,0);
+0468:             return None
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = Py_None; __Pyx_INCREF(Py_None);
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        goto __pyx_L19_except_return;
      }
      goto __pyx_L18_except_error;
 0469:     else:
+0470:         raise ValueError(
  /*else*/ {
    __pyx_t_10 = NULL;
+0471:             f"Can't convert invalid data {obj} to Object"
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_obj, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_12[0] = __pyx_mstate_global->__pyx_kp_u_Can_t_convert_invalid_data_2;
    __pyx_t_12[1] = __pyx_t_8;
    __pyx_t_12[2] = __pyx_mstate_global->__pyx_kp_u_to_Object;
    __pyx_t_13 = 37;
    #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
    __pyx_t_13 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12[1]);
    #endif
    __pyx_t_11 = 0;
    #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
    __pyx_t_11 |= __Pyx_PyUnicode_KIND_04(__pyx_t_12[1]);
    #endif
    __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_12, 3, __pyx_t_13, __pyx_t_11);
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_9 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_7};
      __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 470, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __PYX_ERR(0, 470, __pyx_L1_error)
  }
  __pyx_L4:;
 0472:         )
 0473: 
+0474: cpdef bytes to_bytes(object obj):
static PyObject *__pyx_pw_9datamodel_10converters_29to_bytes(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_to_bytes(PyObject *__pyx_v_obj, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_v_result = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("datamodel.converters.to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_29to_bytes(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_28to_bytes, "to_bytes(obj) -> bytes\n\nConvert the given object to bytes.\n\n- If the object is already bytes, return it directly.\n- If the object is a string, encode it (using UTF-8).\n- If the object is callable, call it and convert its result.\n- Otherwise, attempt to convert the object to bytes.\nIf conversion fails, raise a ValueError.");
static PyMethodDef __pyx_mdef_9datamodel_10converters_29to_bytes = {"to_bytes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_29to_bytes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_28to_bytes};
static PyObject *__pyx_pw_9datamodel_10converters_29to_bytes(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_bytes (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
  PyObject* values[1] = {0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 474, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 474, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "to_bytes", 0) < (0)) __PYX_ERR(0, 474, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("to_bytes", 1, 1, 1, i); __PYX_ERR(0, 474, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 474, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("to_bytes", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 474, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_28to_bytes(__pyx_self, __pyx_v_obj);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_28to_bytes(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_to_bytes(__pyx_v_obj, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_29to_bytes, 0, __pyx_mstate_global->__pyx_n_u_to_bytes, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[19])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_to_bytes, __pyx_t_2) < (0)) __PYX_ERR(0, 474, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0475:     """
 0476:     Convert the given object to bytes.
 0477: 
 0478:     - If the object is already bytes, return it directly.
 0479:     - If the object is a string, encode it (using UTF-8).
 0480:     - If the object is callable, call it and convert its result.
 0481:     - Otherwise, attempt to convert the object to bytes.
 0482:     If conversion fails, raise a ValueError.
 0483:     """
+0484:     if obj is None:
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (unlikely(__pyx_t_1)) {
/* … */
  }
+0485:         raise ValueError("Cannot convert None to bytes")
    __pyx_t_3 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Cannot_convert_None_to_bytes};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 485, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 485, __pyx_L1_error)
 0486: 
 0487:     # 1. If already bytes, return as is.
+0488:     if isinstance(obj, bytes):
  __pyx_t_1 = PyBytes_Check(__pyx_v_obj); 
  if (__pyx_t_1) {
/* … */
  }
+0489:         return obj
    __pyx_t_2 = __pyx_v_obj;
    __Pyx_INCREF(__pyx_t_2);
    if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_2))) __PYX_ERR(0, 489, __pyx_L1_error)
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = ((PyObject*)__pyx_t_2);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_2 = 0;
    goto __pyx_L0;
 0490: 
 0491:     # 2. If it's a string, encode it to bytes.
+0492:     elif isinstance(obj, str):
  __pyx_t_1 = PyUnicode_Check(__pyx_v_obj); 
  if (__pyx_t_1) {
/* … */
  }
+0493:         return obj.encode("utf-8")
    __pyx_t_3 = __pyx_v_obj;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_utf_8};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 493, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_2))) __PYX_ERR(0, 493, __pyx_L1_error)
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = ((PyObject*)__pyx_t_2);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_2 = 0;
    goto __pyx_L0;
 0494: 
 0495:     # 3. If it's callable, attempt to call it and convert its result.
+0496:     elif callable(obj):
  __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 496, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+0497:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
      __pyx_L7_except_error:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L1_error;
      __pyx_L9_try_return:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L0;
    }
+0498:             result = obj()
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_v_obj);
        __pyx_t_8 = __pyx_v_obj; 
        __pyx_t_4 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_8))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
          __pyx_t_4 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 498, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __pyx_v_result = __pyx_t_2;
        __pyx_t_2 = 0;
 0499:             # Recursively convert the result.
+0500:             return to_bytes(result)
        __pyx_t_2 = __pyx_f_9datamodel_10converters_to_bytes(__pyx_v_result, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 500, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_2);
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = ((PyObject*)__pyx_t_2);
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_2 = 0;
        goto __pyx_L9_try_return;
+0501:         except Exception as e:
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("datamodel.converters.to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_8, &__pyx_t_3) < 0) __PYX_ERR(0, 501, __pyx_L7_except_error)
        __Pyx_XGOTREF(__pyx_t_2);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_8);
        __pyx_v_e = __pyx_t_8;
        /*try:*/ {
/* … */
        /*finally:*/ {
          __pyx_L16_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
             __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
            if ( unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_15);
            __Pyx_XGOTREF(__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_17);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __pyx_t_9 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
            }
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
            __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
            __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
            goto __pyx_L7_except_error;
          }
        }
      }
      goto __pyx_L7_except_error;
+0502:             raise ValueError("Failed to convert callable to bytes: %s" % e)
          __pyx_t_11 = NULL;
          __pyx_t_12 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_Failed_to_convert_callable_to_by, __pyx_v_e); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 502, __pyx_L16_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_4 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_12};
            __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 502, __pyx_L16_error)
            __Pyx_GOTREF(__pyx_t_10);
          }
          __Pyx_Raise(__pyx_t_10, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __PYX_ERR(0, 502, __pyx_L16_error)
        }
 0503: 
 0504:     # 4. Try converting the object into bytes using Python's built-in conversion.
+0505:     try:
  {
    /*try:*/ {
/* … */
    }
    __pyx_L22_error:;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
    __pyx_L24_except_error:;
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L26_try_return:;
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
    goto __pyx_L0;
  }
+0506:         return bytes(obj)
      __pyx_t_8 = NULL;
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_obj};
        __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(&PyBytes_Type), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 506, __pyx_L22_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = ((PyObject*)__pyx_t_3);
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_3 = 0;
      goto __pyx_L26_try_return;
+0507:     except Exception as e:
    __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
    if (__pyx_t_13) {
      __Pyx_AddTraceback("datamodel.converters.to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_8, &__pyx_t_2) < 0) __PYX_ERR(0, 507, __pyx_L24_except_error)
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_8);
      __pyx_v_e = __pyx_t_8;
      /*try:*/ {
/* … */
      /*finally:*/ {
        __pyx_L33_error:;
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
           __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_16, &__pyx_t_15);
          if ( unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_20);
          __Pyx_XGOTREF(__pyx_t_19);
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_17);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_15);
          __pyx_t_13 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
          }
          __Pyx_XGIVEREF(__pyx_t_17);
          __Pyx_XGIVEREF(__pyx_t_16);
          __Pyx_XGIVEREF(__pyx_t_15);
          __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_16, __pyx_t_15);
          __Pyx_XGIVEREF(__pyx_t_20);
          __Pyx_XGIVEREF(__pyx_t_19);
          __Pyx_XGIVEREF(__pyx_t_18);
          __Pyx_ErrRestore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
          __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0;
          __pyx_lineno = __pyx_t_13; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_14;
          goto __pyx_L24_except_error;
        }
      }
    }
    goto __pyx_L24_except_error;
+0508:         raise ValueError("Invalid conversion to bytes: %s" % e)
        __pyx_t_12 = NULL;
        __pyx_t_11 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_Invalid_conversion_to_bytes_s, __pyx_v_e); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 508, __pyx_L33_error)
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_4 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_11};
          __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 508, __pyx_L33_error)
          __Pyx_GOTREF(__pyx_t_10);
        }
        __Pyx_Raise(__pyx_t_10, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __PYX_ERR(0, 508, __pyx_L33_error)
      }
 0509: 
+0510: cdef bint is_callable(object value) nogil:
static int __pyx_f_9datamodel_10converters_is_callable(PyObject *__pyx_v_value) {
  int __pyx_r;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  __Pyx_AddTraceback("datamodel.converters.is_callable", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  __pyx_L0:;
  return __pyx_r;
}
 0511:     """
 0512:     Check if `value` is callable by calling Python's callable(...)
 0513:     but reacquire the GIL inside.
 0514:     """
+0515:     with gil:
  {
      PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
      /*try:*/ {
/* … */
      /*finally:*/ {
        __pyx_L3_return: {
          __Pyx_PyGILState_Release(__pyx_gilstate_save);
          goto __pyx_L0;
        }
        __pyx_L4_error: {
          __Pyx_PyGILState_Release(__pyx_gilstate_save);
          goto __pyx_L1_error;
        }
      }
  }
+0516:         return callable(value)
        __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_value); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 516, __pyx_L4_error)
        {
          __pyx_r = __pyx_t_1;
        }
        goto __pyx_L3_return;
      }
 0517: 
 0518: 
 0519: # Encoder List:
 0520: encoders = {
+0521:     str: to_string,
  __pyx_t_2 = __Pyx_PyDict_NewPresized(13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_to_string_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)(&PyUnicode_Type)), __pyx_t_6) < (0)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+0522:     UUID: to_uuid,
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_UUID); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_to_uuid); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_2, __pyx_t_6, __pyx_t_7) < (0)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0523:     pgproto.UUID: to_uuid,
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_pgproto); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_UUID); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_to_uuid); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_2, __pyx_t_6, __pyx_t_7) < (0)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0524:     bool: to_boolean,
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_to_boolean); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)(&PyBool_Type)), __pyx_t_7) < (0)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0525:     int: to_integer,
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_to_integer); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)(&PyLong_Type)), __pyx_t_7) < (0)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0526:     float: to_float,
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_to_float); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)(&PyFloat_Type)), __pyx_t_7) < (0)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0527:     datetime.date: to_date,
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_to_date); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7cpython_8datetime_date), __pyx_t_7) < (0)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0528:     datetime.datetime: to_datetime,
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_to_datetime); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime), __pyx_t_7) < (0)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0529:     datetime.timedelta: to_timedelta,
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_to_timedelta); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta), __pyx_t_7) < (0)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0530:     datetime.time: to_time,
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_to_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7cpython_8datetime_time), __pyx_t_7) < (0)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0531:     Decimal: to_decimal,
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_Decimal); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_to_decimal); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_t_2, __pyx_t_7, __pyx_t_6) < (0)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+0532:     bytes: to_bytes,
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_to_bytes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)(&PyBytes_Type)), __pyx_t_6) < (0)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+0533:     Path: lambda obj: Path(obj) if isinstance(obj, str) else obj
/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_38__pyx_lambda_funcdef_9datamodel_10converters_lambda(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_9datamodel_10converters_38__pyx_lambda_funcdef_9datamodel_10converters_lambda = {"lambda", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_38__pyx_lambda_funcdef_9datamodel_10converters_lambda, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9datamodel_10converters_38__pyx_lambda_funcdef_9datamodel_10converters_lambda(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lambda (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
  PyObject* values[1] = {0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 533, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 533, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "lambda", 0) < (0)) __PYX_ERR(0, 533, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("lambda", 1, 1, 1, i); __PYX_ERR(0, 533, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 533, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lambda", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 533, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.lambda", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_lambda_funcdef_9datamodel_10converters_lambda(__pyx_self, __pyx_v_obj);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_lambda_funcdef_9datamodel_10converters_lambda(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __pyx_t_2 = PyUnicode_Check(__pyx_v_obj); 
  if (__pyx_t_2) {
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Path); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_obj};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 533, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __Pyx_INCREF(__pyx_v_obj);
    __pyx_t_1 = __pyx_v_obj;
  }

  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("datamodel.converters.lambda", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_Path); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_38__pyx_lambda_funcdef_9datamodel_10converters_lambda, 0, __pyx_mstate_global->__pyx_n_u_lambda, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[20])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7);
  #endif
  if (PyDict_SetItem(__pyx_t_2, __pyx_t_6, __pyx_t_7) < (0)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_encoders, __pyx_t_2) < (0)) __PYX_ERR(0, 520, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0534: }
 0535: 
 0536: 
 0537: # Maps a type to a conversion callable
+0538: cdef dict TYPE_PARSERS = {}
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_9datamodel_10converters_TYPE_PARSERS);
  __Pyx_DECREF_SET(__pyx_v_9datamodel_10converters_TYPE_PARSERS, ((PyObject*)__pyx_t_2));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
 0539: 
 0540: 
+0541: cpdef object register_parser(object _type, object parser_func):
static PyObject *__pyx_pw_9datamodel_10converters_31register_parser(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_register_parser(PyObject *__pyx_v__type, PyObject *__pyx_v_parser_func, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("datamodel.converters.register_parser", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_31register_parser(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_30register_parser, "register_parser(_type, parser_func)\n\nregister_parser.\n\nRegister a new Parser function for a given type.\n\nParameters:\n_type (type): The type for which the parser function is registered.\nparser_func (function): The parser function to convert the given type.");
static PyMethodDef __pyx_mdef_9datamodel_10converters_31register_parser = {"register_parser", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_31register_parser, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_30register_parser};
static PyObject *__pyx_pw_9datamodel_10converters_31register_parser(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v__type = 0;
  PyObject *__pyx_v_parser_func = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("register_parser (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_type,&__pyx_mstate_global->__pyx_n_u_parser_func,0};
  PyObject* values[2] = {0,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 541, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "register_parser", 0) < (0)) __PYX_ERR(0, 541, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("register_parser", 1, 2, 2, i); __PYX_ERR(0, 541, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 541, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 541, __pyx_L3_error)
    }
    __pyx_v__type = values[0];
    __pyx_v_parser_func = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("register_parser", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 541, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.register_parser", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_30register_parser(__pyx_self, __pyx_v__type, __pyx_v_parser_func);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_30register_parser(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v__type, PyObject *__pyx_v_parser_func) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_register_parser(__pyx_v__type, __pyx_v_parser_func, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.register_parser", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_31register_parser, 0, __pyx_mstate_global->__pyx_n_u_register_parser, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[21])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_register_parser, __pyx_t_2) < (0)) __PYX_ERR(0, 541, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0542:     """register_parser.
 0543: 
 0544:     Register a new Parser function for a given type.
 0545: 
 0546:     Parameters:
 0547:     _type (type): The type for which the parser function is registered.
 0548:     parser_func (function): The parser function to convert the given type.
 0549:     """
+0550:     TYPE_PARSERS[_type] = parser_func
  if (unlikely(__pyx_v_9datamodel_10converters_TYPE_PARSERS == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
    __PYX_ERR(0, 550, __pyx_L1_error)
  }
  if (unlikely((PyDict_SetItem(__pyx_v_9datamodel_10converters_TYPE_PARSERS, __pyx_v__type, __pyx_v_parser_func) < 0))) __PYX_ERR(0, 550, __pyx_L1_error)
 0551: 
 0552: 
 0553: ## Parsing Functions
+0554: cdef object _parse_set_type(
static PyObject *__pyx_f_9datamodel_10converters__parse_set_type(PyObject *__pyx_v_field, CYTHON_UNUSED PyObject *__pyx_v_T, PyObject *__pyx_v_data, PyObject *__pyx_v_encoder, PyObject *__pyx_v_args, struct __pyx_opt_args_9datamodel_10converters__parse_set_type *__pyx_optional_args) {
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_XDECREF(__pyx_t_20);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_XDECREF(__pyx_t_31);
  __Pyx_AddTraceback("datamodel.converters._parse_set_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_arg_type);
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_converter);
  __Pyx_XDECREF(__pyx_v_inner_type);

  __Pyx_XDECREF(__pyx_v_d);
  __Pyx_XDECREF(__pyx_v_inner_element_type);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XDECREF(__pyx_v_element);
  __Pyx_XDECREF(__pyx_v_converted);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XDECREF(__pyx_v_processed_item);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_9datamodel_10converters__parse_set_type {
  int __pyx_n;
  PyObject *_parent;
};
 0555:     object field,
 0556:     object T,
 0557:     object data,
 0558:     object encoder,
 0559:     object args,
+0560:     object _parent = None
  PyObject *__pyx_v__parent = ((PyObject *)Py_None);
  PyObject *__pyx_v_arg_type = 0;
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_converter = 0;
  PyObject *__pyx_v_inner_type = 0;
  int __pyx_v_is_typing_set;
  PyObject *__pyx_v_d = NULL;
  PyObject *__pyx_v_inner_element_type = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_v_element = NULL;
  PyObject *__pyx_v_converted = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_v_processed_item = NULL;
  PyObject *__pyx_r = NULL;
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v__parent = __pyx_optional_args->_parent;
    }
  }
  __Pyx_INCREF(__pyx_v_data);
 0561: ):
 0562:     """
 0563:     Parse a set of items to a typing type.
 0564:     """
+0565:     cdef object arg_type = args[0] if args else Any
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_args); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 565, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Any); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }

  __pyx_v_arg_type = __pyx_t_1;
  __pyx_t_1 = 0;
+0566:     cdef set result = set()
  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_result = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+0567:     cdef tuple key = (arg_type, field.name)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_arg_type);
  __Pyx_GIVEREF(__pyx_v_arg_type);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg_type) != (0)) __PYX_ERR(0, 567, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(0, 567, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_v_key = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
+0568:     cdef object converter = TYPE_PARSERS.get(key) or TYPE_PARSERS.get(arg_type)
  if (unlikely(__pyx_v_9datamodel_10converters_TYPE_PARSERS == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
    __PYX_ERR(0, 568, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_9datamodel_10converters_TYPE_PARSERS, __pyx_v_key, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 568, __pyx_L1_error)
  if (!__pyx_t_2) {
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_3 = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L3_bool_binop_done;
  }
  if (unlikely(__pyx_v_9datamodel_10converters_TYPE_PARSERS == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
    __PYX_ERR(0, 568, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_9datamodel_10converters_TYPE_PARSERS, __pyx_v_arg_type, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_L3_bool_binop_done:;
  __pyx_v_converter = __pyx_t_3;
  __pyx_t_3 = 0;
+0569:     cdef object inner_type = field._inner_type if hasattr(field, '_inner_type') else arg_type
  __pyx_t_2 = __Pyx_HasAttr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 569, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 569, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __pyx_t_1;
    __pyx_t_1 = 0;
  } else {
    __Pyx_INCREF(__pyx_v_arg_type);
    __pyx_t_3 = __pyx_v_arg_type;
  }

  __pyx_v_inner_type = __pyx_t_3;
  __pyx_t_3 = 0;
+0570:     cdef bint is_typing_set = hasattr(inner_type, '__origin__') and inner_type.__origin__ is set
  __pyx_t_4 = __Pyx_HasAttr(__pyx_v_inner_type, __pyx_mstate_global->__pyx_n_u_origin); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 570, __pyx_L1_error)
  if (__pyx_t_4) {

  } else {

    __pyx_t_2 = __pyx_t_4;

    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_inner_type, __pyx_mstate_global->__pyx_n_u_origin); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = (__pyx_t_3 == ((PyObject *)(&PySet_Type)));
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_t_2 = __pyx_t_4;

  __pyx_L5_bool_binop_done:;
  __pyx_v_is_typing_set = __pyx_t_2;
 0571: 
+0572:     if data is None:
  __pyx_t_2 = (__pyx_v_data == Py_None);
  if (__pyx_t_2) {
/* … */
  }
+0573:         return set()   # short-circuit
    __pyx_t_3 = PySet_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_3;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_3 = 0;
    goto __pyx_L0;
 0574: 
 0575:     # If data is not already a collection, put it in a list for processing
+0576:     if not isinstance(data, (list, tuple, set)):
  __pyx_t_4 = PyList_Check(__pyx_v_data); 
  if (!__pyx_t_4) {

  } else {

    __pyx_t_2 = __pyx_t_4;

    goto __pyx_L9_bool_binop_done;
  }
  __pyx_t_4 = PyTuple_Check(__pyx_v_data); 
  if (!__pyx_t_4) {

  } else {

    __pyx_t_2 = __pyx_t_4;

    goto __pyx_L9_bool_binop_done;
  }
  __pyx_t_4 = PySet_Check(__pyx_v_data); 

  __pyx_t_2 = __pyx_t_4;

  __pyx_L9_bool_binop_done:;
  __pyx_t_4 = (!__pyx_t_2);


  if (__pyx_t_4) {
/* … */
  }
+0577:         data = [data]
    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_data);
    __Pyx_GIVEREF(__pyx_v_data);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_data) != (0)) __PYX_ERR(0, 577, __pyx_L1_error);
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3);
    __pyx_t_3 = 0;
 0578: 
 0579:     # If it's a dataclass
+0580:     if is_dc(inner_type):
  __pyx_t_4 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_inner_type); if (unlikely(__pyx_t_4 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 580, __pyx_L1_error)
  if (__pyx_t_4) {
/* … */
  }
+0581:         for d in data:
    if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
      __pyx_t_3 = __pyx_v_data; __Pyx_INCREF(__pyx_t_3);
      __pyx_t_5 = 0;
      __pyx_t_6 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 581, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 581, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_6)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 581, __pyx_L1_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_5, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_5;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 581, __pyx_L1_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5));
          #else
          __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_5);
          #endif
          ++__pyx_t_5;
        }
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error)
      } else {
        __pyx_t_1 = __pyx_t_6(__pyx_t_3);
        if (unlikely(!__pyx_t_1)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 581, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_d, __pyx_t_1);
      __pyx_t_1 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0582:             if is_dc(d):
      __pyx_t_4 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_d); if (unlikely(__pyx_t_4 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 582, __pyx_L1_error)
      if (__pyx_t_4) {
/* … */
        goto __pyx_L15;
      }
+0583:                 result.add(d)
        __pyx_t_7 = PySet_Add(__pyx_v_result, __pyx_v_d); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 583, __pyx_L1_error)

+0584:             elif converter:
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_converter); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 584, __pyx_L1_error)
      if (__pyx_t_4) {
/* … */
        goto __pyx_L15;
      }
+0585:                 result.add(
        __pyx_t_7 = PySet_Add(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 585, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

+0586:                     converter(field.name, d, inner_type, _parent)
        __pyx_t_8 = NULL;
        __Pyx_INCREF(__pyx_v_converter);
        __pyx_t_9 = __pyx_v_converter; 
        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 586, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_11 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_9))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
          assert(__pyx_t_8);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
          __pyx_t_11 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[5] = {__pyx_t_8, __pyx_t_10, __pyx_v_d, __pyx_v_inner_type, __pyx_v__parent};
          __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_11, (5-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
 0587:                 )
+0588:             elif isinstance(d, dict):
      __pyx_t_4 = PyDict_Check(__pyx_v_d); 
      if (__pyx_t_4) {
/* … */
        goto __pyx_L15;
      }
+0589:                 result.add(inner_type(**d))
        if (unlikely(__pyx_v_d == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
          __PYX_ERR(0, 589, __pyx_L1_error)
        }
        if (likely(PyDict_CheckExact(__pyx_v_d))) {
          __pyx_t_1 = PyDict_Copy(__pyx_v_d); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
        } else {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_d); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
        __pyx_t_9 = __Pyx_PyObject_Call(__pyx_v_inner_type, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 589, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_7 = PySet_Add(__pyx_v_result, __pyx_t_9); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 589, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

+0590:             elif isinstance(d, (list, tuple)):
      __pyx_t_2 = PyList_Check(__pyx_v_d); 
      if (!__pyx_t_2) {

      } else {

        __pyx_t_4 = __pyx_t_2;

        goto __pyx_L16_bool_binop_done;
      }
      __pyx_t_2 = PyTuple_Check(__pyx_v_d); 

      __pyx_t_4 = __pyx_t_2;

      __pyx_L16_bool_binop_done:;
      if (__pyx_t_4) {
/* … */
        goto __pyx_L15;
      }
+0591:                 result.add(inner_type(*d))
        __pyx_t_9 = __Pyx_PySequence_Tuple(__pyx_v_d); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 591, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_inner_type, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_7 = PySet_Add(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 591, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

 0592:             else:
+0593:                 result.add(inner_type(d))
      /*else*/ {
        __pyx_t_9 = NULL;
        __Pyx_INCREF(__pyx_v_inner_type);
        __pyx_t_10 = __pyx_v_inner_type; 
        __pyx_t_11 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_10))) {
          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
          assert(__pyx_t_9);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
          __pyx_t_11 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_d};
          __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
        __pyx_t_7 = PySet_Add(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 593, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      }
      __pyx_L15:;
+0594:         return result
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_result);
        __pyx_r = __pyx_v_result;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0595:     elif is_typing_set:
  if (__pyx_v_is_typing_set) {
/* … */
    goto __pyx_L12;
  }
 0596:         # If we're dealing with typing.Set[str] or similar
+0597:         inner_element_type = get_args(inner_type)[0] if get_args(inner_type) else Any
    __pyx_t_10 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_get_args); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_11 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
      assert(__pyx_t_10);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_10);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
      __pyx_t_11 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_inner_type};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 597, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_4) {
      __pyx_t_9 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_get_args); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 597, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
        assert(__pyx_t_9);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
        __pyx_t_11 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_inner_type};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 597, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = __pyx_t_10;
      __pyx_t_10 = 0;
    } else {
      __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_Any); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 597, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_3 = __pyx_t_10;
      __pyx_t_10 = 0;
    }

    __pyx_v_inner_element_type = __pyx_t_3;
    __pyx_t_3 = 0;
 0598:         # If the inner type is a set, we need to process it differently
+0599:         try:
    {
      /*try:*/ {
/* … */
      }
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      goto __pyx_L24_try_end;
      __pyx_L19_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
      __pyx_L21_except_error:;
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
      goto __pyx_L1_error;
      __pyx_L24_try_end:;
    }
+0600:             for item in data:
        if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
          __pyx_t_3 = __pyx_v_data; __Pyx_INCREF(__pyx_t_3);
          __pyx_t_5 = 0;
          __pyx_t_6 = NULL;
        } else {
          __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 600, __pyx_L19_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 600, __pyx_L19_error)
        }
        for (;;) {
          if (likely(!__pyx_t_6)) {
            if (likely(PyList_CheckExact(__pyx_t_3))) {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
                #if !CYTHON_ASSUME_SAFE_SIZE
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 600, __pyx_L19_error)
                #endif
                if (__pyx_t_5 >= __pyx_temp) break;
              }
              __pyx_t_10 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_5, __Pyx_ReferenceSharing_OwnStrongReference);
              ++__pyx_t_5;
            } else {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
                #if !CYTHON_ASSUME_SAFE_SIZE
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 600, __pyx_L19_error)
                #endif
                if (__pyx_t_5 >= __pyx_temp) break;
              }
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_10 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5));
              #else
              __pyx_t_10 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_5);
              #endif
              ++__pyx_t_5;
            }
            if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 600, __pyx_L19_error)
          } else {
            __pyx_t_10 = __pyx_t_6(__pyx_t_3);
            if (unlikely(!__pyx_t_10)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 600, __pyx_L19_error)
                PyErr_Clear();
              }
              break;
            }
          }
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_10);
          __pyx_t_10 = 0;
/* … */
        }
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0601:                 if isinstance(item, str):
          __pyx_t_4 = PyUnicode_Check(__pyx_v_item); 
          if (__pyx_t_4) {
/* … */
            goto __pyx_L27;
          }
 0602:                     # String items are individual elements
+0603:                     result.add(item)
            __pyx_t_7 = PySet_Add(__pyx_v_result, __pyx_v_item); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 603, __pyx_L19_error)

+0604:                 elif isinstance(item, (list, tuple, set)):
          __pyx_t_2 = PyList_Check(__pyx_v_item); 
          if (!__pyx_t_2) {

          } else {

            __pyx_t_4 = __pyx_t_2;

            goto __pyx_L28_bool_binop_done;
          }
          __pyx_t_2 = PyTuple_Check(__pyx_v_item); 
          if (!__pyx_t_2) {

          } else {

            __pyx_t_4 = __pyx_t_2;

            goto __pyx_L28_bool_binop_done;
          }
          __pyx_t_2 = PySet_Check(__pyx_v_item); 

          __pyx_t_4 = __pyx_t_2;

          __pyx_L28_bool_binop_done:;
          if (__pyx_t_4) {
/* … */
            goto __pyx_L27;
          }
 0605:                     # Process each element in collections
+0606:                     for element in item:
            if (likely(PyList_CheckExact(__pyx_v_item)) || PyTuple_CheckExact(__pyx_v_item)) {
              __pyx_t_10 = __pyx_v_item; __Pyx_INCREF(__pyx_t_10);
              __pyx_t_15 = 0;
              __pyx_t_16 = NULL;
            } else {
              __pyx_t_15 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_v_item); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 606, __pyx_L19_error)
              __Pyx_GOTREF(__pyx_t_10);
              __pyx_t_16 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_10); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 606, __pyx_L19_error)
            }
            for (;;) {
              if (likely(!__pyx_t_16)) {
                if (likely(PyList_CheckExact(__pyx_t_10))) {
                  {
                    Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_10);
                    #if !CYTHON_ASSUME_SAFE_SIZE
                    if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 606, __pyx_L19_error)
                    #endif
                    if (__pyx_t_15 >= __pyx_temp) break;
                  }
                  __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_10, __pyx_t_15, __Pyx_ReferenceSharing_OwnStrongReference);
                  ++__pyx_t_15;
                } else {
                  {
                    Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_10);
                    #if !CYTHON_ASSUME_SAFE_SIZE
                    if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 606, __pyx_L19_error)
                    #endif
                    if (__pyx_t_15 >= __pyx_temp) break;
                  }
                  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                  __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_15));
                  #else
                  __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_10, __pyx_t_15);
                  #endif
                  ++__pyx_t_15;
                }
                if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 606, __pyx_L19_error)
              } else {
                __pyx_t_1 = __pyx_t_16(__pyx_t_10);
                if (unlikely(!__pyx_t_1)) {
                  PyObject* exc_type = PyErr_Occurred();
                  if (exc_type) {
                    if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 606, __pyx_L19_error)
                    PyErr_Clear();
                  }
                  break;
                }
              }
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_XDECREF_SET(__pyx_v_element, __pyx_t_1);
              __pyx_t_1 = 0;
/* … */
            }
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 0607:                         # Convert the element to the inner type if needed
+0608:                         if inner_element_type in encoders and not isinstance(element, inner_element_type):
              __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_encoders); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L19_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_inner_element_type, __pyx_t_1, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 608, __pyx_L19_error)
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              if (__pyx_t_2) {

              } else {

                __pyx_t_4 = __pyx_t_2;

                goto __pyx_L34_bool_binop_done;
              }
              __pyx_t_2 = PyObject_IsInstance(__pyx_v_element, __pyx_v_inner_element_type); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 608, __pyx_L19_error)
              __pyx_t_17 = (!__pyx_t_2);



              __pyx_t_4 = __pyx_t_17;

              __pyx_L34_bool_binop_done:;
              if (__pyx_t_4) {
/* … */
                goto __pyx_L33;
              }
+0609:                             converted = encoders[inner_element_type](element)
                __pyx_t_9 = NULL;
                __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_encoders); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 609, __pyx_L19_error)
                __Pyx_GOTREF(__pyx_t_8);
                __pyx_t_18 = __Pyx_PyObject_GetItem(__pyx_t_8, __pyx_v_inner_element_type); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 609, __pyx_L19_error)
                __Pyx_GOTREF(__pyx_t_18);
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                __pyx_t_11 = 1;
                #if CYTHON_UNPACK_METHODS
                if (unlikely(PyMethod_Check(__pyx_t_18))) {
                  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_18);
                  assert(__pyx_t_9);
                  PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_18);
                  __Pyx_INCREF(__pyx_t_9);
                  __Pyx_INCREF(__pyx__function);
                  __Pyx_DECREF_SET(__pyx_t_18, __pyx__function);
                  __pyx_t_11 = 0;
                }
                #endif
                {
                  PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_element};
                  __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_18, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
                  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
                  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 609, __pyx_L19_error)
                  __Pyx_GOTREF(__pyx_t_1);
                }
                __Pyx_XDECREF_SET(__pyx_v_converted, __pyx_t_1);
                __pyx_t_1 = 0;
+0610:                             result.add(converted)
                __pyx_t_7 = PySet_Add(__pyx_v_result, __pyx_v_converted); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 610, __pyx_L19_error)

 0611:                         else:
+0612:                             result.add(element)
              /*else*/ {
                __pyx_t_7 = PySet_Add(__pyx_v_result, __pyx_v_element); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 612, __pyx_L19_error)

              }
              __pyx_L33:;
 0613:                 else:
 0614:                     # Single non-string item
+0615:                     result.add(item)
          /*else*/ {
            __pyx_t_7 = PySet_Add(__pyx_v_result, __pyx_v_item); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 615, __pyx_L19_error)

          }
          __pyx_L27:;
+0616:         except Exception as e:
      __pyx_t_19 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
      if (__pyx_t_19) {
        __Pyx_AddTraceback("datamodel.converters._parse_set_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_10, &__pyx_t_1) < 0) __PYX_ERR(0, 616, __pyx_L21_except_error)
        __Pyx_XGOTREF(__pyx_t_3);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_10);
        __pyx_v_e = __pyx_t_10;
        /*try:*/ {
/* … */
        /*finally:*/ {
          __pyx_L43_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0;
            __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
            __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
            __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
             __Pyx_ExceptionSwap(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30);
            if ( unlikely(__Pyx_GetException(&__pyx_t_25, &__pyx_t_26, &__pyx_t_27) < 0)) __Pyx_ErrFetch(&__pyx_t_25, &__pyx_t_26, &__pyx_t_27);
            __Pyx_XGOTREF(__pyx_t_25);
            __Pyx_XGOTREF(__pyx_t_26);
            __Pyx_XGOTREF(__pyx_t_27);
            __Pyx_XGOTREF(__pyx_t_28);
            __Pyx_XGOTREF(__pyx_t_29);
            __Pyx_XGOTREF(__pyx_t_30);
            __pyx_t_19 = __pyx_lineno; __pyx_t_23 = __pyx_clineno; __pyx_t_24 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
            }
            __Pyx_XGIVEREF(__pyx_t_28);
            __Pyx_XGIVEREF(__pyx_t_29);
            __Pyx_XGIVEREF(__pyx_t_30);
            __Pyx_ExceptionReset(__pyx_t_28, __pyx_t_29, __pyx_t_30);
            __Pyx_XGIVEREF(__pyx_t_25);
            __Pyx_XGIVEREF(__pyx_t_26);
            __Pyx_XGIVEREF(__pyx_t_27);
            __Pyx_ErrRestore(__pyx_t_25, __pyx_t_26, __pyx_t_27);
            __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0;
            __pyx_lineno = __pyx_t_19; __pyx_clineno = __pyx_t_23; __pyx_filename = __pyx_t_24;
            goto __pyx_L21_except_error;
          }
        }
      }
      goto __pyx_L21_except_error;
+0617:             raise ValueError(
          __pyx_t_9 = NULL;
+0618:                 f"Error parsing set item of {inner_type}: {e}"
          __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_inner_type, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 618, __pyx_L43_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_20 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 618, __pyx_L43_error)
          __Pyx_GOTREF(__pyx_t_20);
          __pyx_t_21[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_set_item_of;
          __pyx_t_21[1] = __pyx_t_8;
          __pyx_t_21[2] = __pyx_mstate_global->__pyx_kp_u__5;
          __pyx_t_21[3] = __pyx_t_20;
          __pyx_t_5 = 28;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_21[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_21[3]);
          #endif
          __pyx_t_19 = 0;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_19 |= __Pyx_PyUnicode_KIND_04(__pyx_t_21[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_21[3]);
          #endif
          __pyx_t_22 = __Pyx_PyUnicode_Join(__pyx_t_21, 4, __pyx_t_5, __pyx_t_19);
          if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 618, __pyx_L43_error)
          __Pyx_GOTREF(__pyx_t_22);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
          __pyx_t_11 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_22};
            __pyx_t_18 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
            if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 617, __pyx_L43_error)
            __Pyx_GOTREF(__pyx_t_18);
          }
+0619:             ) from e
          __Pyx_Raise(__pyx_t_18, 0, 0, __pyx_v_e);
          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
          __PYX_ERR(0, 617, __pyx_L43_error)
        }
+0620:     elif converter:
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_converter); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 620, __pyx_L1_error)
  if (__pyx_t_4) {
/* … */
    goto __pyx_L12;
  }
+0621:         for item in data:
    if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
      __pyx_t_1 = __pyx_v_data; __Pyx_INCREF(__pyx_t_1);
      __pyx_t_5 = 0;
      __pyx_t_6 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 621, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 621, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_6)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 621, __pyx_L1_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          __pyx_t_10 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_5, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_5;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 621, __pyx_L1_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_10 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5));
          #else
          __pyx_t_10 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_5);
          #endif
          ++__pyx_t_5;
        }
        if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 621, __pyx_L1_error)
      } else {
        __pyx_t_10 = __pyx_t_6(__pyx_t_1);
        if (unlikely(!__pyx_t_10)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 621, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_10);
      __pyx_t_10 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0622:             result.add(
      __pyx_t_7 = PySet_Add(__pyx_v_result, __pyx_t_10); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 622, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

+0623:                 converter(field.name, item, inner_type, _parent)
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_converter);
      __pyx_t_18 = __pyx_v_converter; 
      __pyx_t_22 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 623, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_22);
      __pyx_t_11 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_18))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_18);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_18);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_18, __pyx__function);
        __pyx_t_11 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[5] = {__pyx_t_3, __pyx_t_22, __pyx_v_item, __pyx_v_inner_type, __pyx_v__parent};
        __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_18, __pyx_callargs+__pyx_t_11, (5-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 623, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
      }
 0624:             )
+0625:     elif is_primitive(inner_type):
  __pyx_t_10 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_is_primitive); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __pyx_t_11 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_18))) {
    __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_18);
    assert(__pyx_t_10);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_18);
    __Pyx_INCREF(__pyx_t_10);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_18, __pyx__function);
    __pyx_t_11 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_inner_type};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_18, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 625, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {
/* … */
    goto __pyx_L12;
  }
 0626:         # Process each item with appropriate converters
+0627:         for item in data:
    if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
      __pyx_t_1 = __pyx_v_data; __Pyx_INCREF(__pyx_t_1);
      __pyx_t_5 = 0;
      __pyx_t_6 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 627, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 627, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_6)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 627, __pyx_L1_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          __pyx_t_18 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_5, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_5;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 627, __pyx_L1_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_18 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5));
          #else
          __pyx_t_18 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_5);
          #endif
          ++__pyx_t_5;
        }
        if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 627, __pyx_L1_error)
      } else {
        __pyx_t_18 = __pyx_t_6(__pyx_t_1);
        if (unlikely(!__pyx_t_18)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 627, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_18);
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_18);
      __pyx_t_18 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0628:             try:
      {
        /*try:*/ {
/* … */
        }
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        goto __pyx_L61_try_end;
        __pyx_L54_error:;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
        __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
        __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
        __pyx_L56_except_error:;
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
        goto __pyx_L1_error;
        __pyx_L61_try_end:;
      }
 0629:                 # If a specific encoder exists for this type, use it
+0630:                 if encoder:
          __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_encoder); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 630, __pyx_L54_error)
          if (__pyx_t_4) {
/* … */
            goto __pyx_L62;
          }
+0631:                     processed_item = encoder(item)
            __pyx_t_10 = NULL;
            __Pyx_INCREF(__pyx_v_encoder);
            __pyx_t_22 = __pyx_v_encoder; 
            __pyx_t_11 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_22))) {
              __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_22);
              assert(__pyx_t_10);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_22);
              __Pyx_INCREF(__pyx_t_10);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_22, __pyx__function);
              __pyx_t_11 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_item};
              __pyx_t_18 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_22, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
              __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
              if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 631, __pyx_L54_error)
              __Pyx_GOTREF(__pyx_t_18);
            }
            __Pyx_XDECREF_SET(__pyx_v_processed_item, __pyx_t_18);
            __pyx_t_18 = 0;
 0632:                 else:
 0633:                     # Otherwise try to use builtin converters
+0634:                     processed_item = _parse_builtin_type(field, inner_type, item, None)
          /*else*/ {
            __pyx_t_18 = __pyx_f_9datamodel_10converters__parse_builtin_type(__pyx_v_field, __pyx_v_inner_type, __pyx_v_item, Py_None); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 634, __pyx_L54_error)
            __Pyx_GOTREF(__pyx_t_18);
            __Pyx_XDECREF_SET(__pyx_v_processed_item, __pyx_t_18);
            __pyx_t_18 = 0;
          }
          __pyx_L62:;
+0635:                 result.add(processed_item)
          __pyx_t_7 = PySet_Add(__pyx_v_result, __pyx_v_processed_item); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 635, __pyx_L54_error)

+0636:             except Exception as e:
        __pyx_t_23 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
        if (__pyx_t_23) {
          __Pyx_AddTraceback("datamodel.converters._parse_set_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_18, &__pyx_t_22, &__pyx_t_10) < 0) __PYX_ERR(0, 636, __pyx_L56_except_error)
          __Pyx_XGOTREF(__pyx_t_18);
          __Pyx_XGOTREF(__pyx_t_22);
          __Pyx_XGOTREF(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_22);
          __pyx_v_e = __pyx_t_22;
          /*try:*/ {
/* … */
          /*finally:*/ {
            __pyx_L68_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __Pyx_PyThreadState_assign
              __pyx_t_30 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0;
              __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
              __Pyx_XDECREF(__pyx_t_31); __pyx_t_31 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
               __Pyx_ExceptionSwap(&__pyx_t_27, &__pyx_t_26, &__pyx_t_25);
              if ( unlikely(__Pyx_GetException(&__pyx_t_30, &__pyx_t_29, &__pyx_t_28) < 0)) __Pyx_ErrFetch(&__pyx_t_30, &__pyx_t_29, &__pyx_t_28);
              __Pyx_XGOTREF(__pyx_t_30);
              __Pyx_XGOTREF(__pyx_t_29);
              __Pyx_XGOTREF(__pyx_t_28);
              __Pyx_XGOTREF(__pyx_t_27);
              __Pyx_XGOTREF(__pyx_t_26);
              __Pyx_XGOTREF(__pyx_t_25);
              __pyx_t_23 = __pyx_lineno; __pyx_t_19 = __pyx_clineno; __pyx_t_24 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
              }
              __Pyx_XGIVEREF(__pyx_t_27);
              __Pyx_XGIVEREF(__pyx_t_26);
              __Pyx_XGIVEREF(__pyx_t_25);
              __Pyx_ExceptionReset(__pyx_t_27, __pyx_t_26, __pyx_t_25);
              __Pyx_XGIVEREF(__pyx_t_30);
              __Pyx_XGIVEREF(__pyx_t_29);
              __Pyx_XGIVEREF(__pyx_t_28);
              __Pyx_ErrRestore(__pyx_t_30, __pyx_t_29, __pyx_t_28);
              __pyx_t_30 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0;
              __pyx_lineno = __pyx_t_23; __pyx_clineno = __pyx_t_19; __pyx_filename = __pyx_t_24;
              goto __pyx_L56_except_error;
            }
          }
        }
        goto __pyx_L56_except_error;
+0637:                 raise ValueError(
            __pyx_t_9 = NULL;
+0638:                     f"Error parsing set item of {inner_type}: {e}"
            __pyx_t_20 = __Pyx_PyObject_FormatSimple(__pyx_v_inner_type, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 638, __pyx_L68_error)
            __Pyx_GOTREF(__pyx_t_20);
            __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 638, __pyx_L68_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_21[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_set_item_of;
            __pyx_t_21[1] = __pyx_t_20;
            __pyx_t_21[2] = __pyx_mstate_global->__pyx_kp_u__5;
            __pyx_t_21[3] = __pyx_t_8;
            __pyx_t_15 = 28;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_21[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_21[3]);
            #endif
            __pyx_t_23 = 0;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_23 |= __Pyx_PyUnicode_KIND_04(__pyx_t_21[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_21[3]);
            #endif
            __pyx_t_31 = __Pyx_PyUnicode_Join(__pyx_t_21, 4, __pyx_t_15, __pyx_t_23);
            if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 638, __pyx_L68_error)
            __Pyx_GOTREF(__pyx_t_31);
            __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_11 = 1;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_31};
              __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
              __Pyx_DECREF(__pyx_t_31); __pyx_t_31 = 0;
              if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 637, __pyx_L68_error)
              __Pyx_GOTREF(__pyx_t_3);
            }
+0639:                 ) from e
            __Pyx_Raise(__pyx_t_3, 0, 0, __pyx_v_e);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __PYX_ERR(0, 637, __pyx_L68_error)
          }
 0640:     else:
+0641:         for item in data:
  /*else*/ {
    if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
      __pyx_t_1 = __pyx_v_data; __Pyx_INCREF(__pyx_t_1);
      __pyx_t_5 = 0;
      __pyx_t_6 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 641, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_6)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 641, __pyx_L1_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          __pyx_t_10 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_5, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_5;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 641, __pyx_L1_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_10 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5));
          #else
          __pyx_t_10 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_5);
          #endif
          ++__pyx_t_5;
        }
        if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 641, __pyx_L1_error)
      } else {
        __pyx_t_10 = __pyx_t_6(__pyx_t_1);
        if (unlikely(!__pyx_t_10)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 641, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_10);
      __pyx_t_10 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L12:;
+0642:             result.add(
      __pyx_t_7 = PySet_Add(__pyx_v_result, __pyx_t_10); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 642, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

+0643:                 _parse_typing(field, T=inner_type, data=item, encoder=encoder, as_objects=False)
      __pyx_t_32.__pyx_n = 2;
      __pyx_t_32.encoder = __pyx_v_encoder;
      __pyx_t_32.as_objects = Py_False;
      __pyx_t_10 = __pyx_f_9datamodel_10converters__parse_typing(__pyx_v_field, __pyx_v_inner_type, __pyx_v_item, &__pyx_t_32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 643, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
 0644:             )
+0645:     return result
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __Pyx_INCREF(__pyx_v_result);
      __pyx_r = __pyx_v_result;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  goto __pyx_L0;
 0646: 
+0647: cdef object _parse_dict_type(
static PyObject *__pyx_f_9datamodel_10converters__parse_dict_type(PyObject *__pyx_v_field, CYTHON_UNUSED PyObject *__pyx_v_T, PyObject *__pyx_v_data, PyObject *__pyx_v_encoder, PyObject *__pyx_v_args) {
  PyObject *__pyx_v_key_type = 0;
  PyObject *__pyx_v_val_type = 0;
  PyObject *__pyx_v_new_dict = 0;
  PyObject *__pyx_v_val_origin = 0;
  PyObject *__pyx_v_val_args = 0;
  PyObject *__pyx_v_k = NULL;
  PyObject *__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_AddTraceback("datamodel.converters._parse_dict_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key_type);
  __Pyx_XDECREF(__pyx_v_val_type);
  __Pyx_XDECREF(__pyx_v_new_dict);
  __Pyx_XDECREF(__pyx_v_val_origin);
  __Pyx_XDECREF(__pyx_v_val_args);
  __Pyx_XDECREF(__pyx_v_k);
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0648:     object field,
 0649:     object T,
 0650:     object data,
 0651:     object encoder,
 0652:     object args
 0653: ):
+0654:     cdef object key_type = args[0]  # First arg is key type
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key_type = __pyx_t_1;
  __pyx_t_1 = 0;
+0655:     cdef object val_type = args[1]  # Second arg is value type
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_args, 1, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_val_type = __pyx_t_1;
  __pyx_t_1 = 0;
+0656:     cdef dict new_dict = {}
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_new_dict = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 0657:     cdef object val_origin, val_args
 0658: 
 0659:     # Check if we have type args (Dict[K, V])
+0660:     if not args or len(args) < 2:
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_args); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 660, __pyx_L1_error)
  __pyx_t_4 = (!__pyx_t_3);


  if (!__pyx_t_4) {

  } else {

    __pyx_t_2 = __pyx_t_4;

    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = PyObject_Length(__pyx_v_args); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 660, __pyx_L1_error)
  __pyx_t_4 = (__pyx_t_5 < 2);



  __pyx_t_2 = __pyx_t_4;

  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
+0661:         return data  # If no type arguments, return as is
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_data);
        __pyx_r = __pyx_v_data;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 0662: 
 0663:     # Get origin and args of value type to check if it's a nested Dict
+0664:     val_origin = get_origin(val_type)
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_get_origin); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
    assert(__pyx_t_6);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
    __pyx_t_8 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_val_type};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 664, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_val_origin = __pyx_t_1;
  __pyx_t_1 = 0;
+0665:     val_args = get_args(val_type)
  __pyx_t_7 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_get_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 665, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    assert(__pyx_t_7);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
    __Pyx_INCREF(__pyx_t_7);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
    __pyx_t_8 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_val_type};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 665, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_val_args = __pyx_t_1;
  __pyx_t_1 = 0;
 0666: 
 0667:     # Process each key-value pair
+0668:     for k, v in data.items():
  __pyx_t_5 = 0;
  if (unlikely(__pyx_v_data == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "items");
    __PYX_ERR(0, 668, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_dict_iterator(__pyx_v_data, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_9), (&__pyx_t_10)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 668, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_6;
  __pyx_t_6 = 0;
  while (1) {
    __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_9, &__pyx_t_5, &__pyx_t_6, &__pyx_t_7, NULL, __pyx_t_10);
    if (unlikely(__pyx_t_11 == 0)) break;
    if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 668, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_7);
    __pyx_t_7 = 0;
 0669:         # Convert the key if needed
+0670:         if key_type == str and not isinstance(k, str):
    __pyx_t_4 = __Pyx_PyObject_RichCompareBool(__pyx_v_key_type, ((PyObject *)(&PyUnicode_Type)), Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 670, __pyx_L1_error)
    if (__pyx_t_4) {

    } else {

      __pyx_t_2 = __pyx_t_4;

      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_4 = PyUnicode_Check(__pyx_v_k); 
    __pyx_t_3 = (!__pyx_t_4);



    __pyx_t_2 = __pyx_t_3;

    __pyx_L9_bool_binop_done:;
    if (__pyx_t_2) {
/* … */
      goto __pyx_L8;
    }
+0671:             k = str(k)
      __pyx_t_7 = __Pyx_PyObject_Unicode(__pyx_v_k); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 671, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_7);
      __pyx_t_7 = 0;
+0672:         elif key_type == int and isinstance(k, str):
    __pyx_t_3 = __Pyx_PyObject_RichCompareBool(__pyx_v_key_type, ((PyObject *)(&PyLong_Type)), Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 672, __pyx_L1_error)
    if (__pyx_t_3) {

    } else {

      __pyx_t_2 = __pyx_t_3;

      goto __pyx_L11_bool_binop_done;
    }
    __pyx_t_3 = PyUnicode_Check(__pyx_v_k); 

    __pyx_t_2 = __pyx_t_3;

    __pyx_L11_bool_binop_done:;
    if (__pyx_t_2) {
/* … */
    }
    __pyx_L8:;
+0673:             try:
      {
        /*try:*/ {
/* … */
        }
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        goto __pyx_L20_try_end;
        __pyx_L13_error:;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
        __pyx_L15_except_error:;
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
        goto __pyx_L1_error;
        __pyx_L14_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
        __pyx_L20_try_end:;
      }
+0674:                 k = int(k)
          __pyx_t_7 = __Pyx_PyNumber_Int(__pyx_v_k); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 674, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_7);
          __pyx_t_7 = 0;
+0675:             except (ValueError, TypeError):
        __pyx_t_11 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), ((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
        if (__pyx_t_11) {
          __Pyx_ErrRestore(0,0,0);
          goto __pyx_L14_exception_handled;
        }
        goto __pyx_L15_except_error;
 0676:                 pass
 0677: 
 0678:         # If value type is a nested Dict
+0679:         if val_origin is dict and val_args:
    __pyx_t_3 = (__pyx_v_val_origin == ((PyObject *)(&PyDict_Type)));
    if (__pyx_t_3) {

    } else {

      __pyx_t_2 = __pyx_t_3;

      goto __pyx_L24_bool_binop_done;
    }
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_val_args); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 679, __pyx_L1_error)

    __pyx_t_2 = __pyx_t_3;

    __pyx_L24_bool_binop_done:;
    if (__pyx_t_2) {
/* … */
      goto __pyx_L23;
    }
+0680:             if isinstance(v, dict):
      __pyx_t_2 = PyDict_Check(__pyx_v_v); 
      if (__pyx_t_2) {
/* … */
        goto __pyx_L26;
      }
 0681:                 # Recursively process nested dict
+0682:                 new_dict[k] = _parse_dict_type(field, val_type, v, encoder, val_args)
        __pyx_t_7 = __pyx_f_9datamodel_10converters__parse_dict_type(__pyx_v_field, __pyx_v_val_type, __pyx_v_v, __pyx_v_encoder, __pyx_v_val_args); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 682, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (unlikely((PyDict_SetItem(__pyx_v_new_dict, __pyx_v_k, __pyx_t_7) < 0))) __PYX_ERR(0, 682, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 0683:             else:
 0684:                 # Not a dict but should be - create empty dict
+0685:                 new_dict[k] = {}
      /*else*/ {
        __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 685, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (unlikely((PyDict_SetItem(__pyx_v_new_dict, __pyx_v_k, __pyx_t_7) < 0))) __PYX_ERR(0, 685, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __pyx_L26:;
 0686:         # If value type is a primitive type
+0687:         elif is_primitive(val_type):
    __pyx_t_6 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_is_primitive); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 687, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_15))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_15);
      assert(__pyx_t_6);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_15, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_val_type};
      __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 687, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
    }
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 687, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (__pyx_t_2) {
/* … */
      goto __pyx_L23;
    }
+0688:             if val_type == int and isinstance(v, str):
      __pyx_t_3 = __Pyx_PyObject_RichCompareBool(__pyx_v_val_type, ((PyObject *)(&PyLong_Type)), Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 688, __pyx_L1_error)
      if (__pyx_t_3) {

      } else {

        __pyx_t_2 = __pyx_t_3;

        goto __pyx_L28_bool_binop_done;
      }
      __pyx_t_3 = PyUnicode_Check(__pyx_v_v); 

      __pyx_t_2 = __pyx_t_3;

      __pyx_L28_bool_binop_done:;
      if (__pyx_t_2) {
/* … */
        goto __pyx_L27;
      }
+0689:                 try:
        {
          /*try:*/ {
/* … */
          }
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          goto __pyx_L37_try_end;
          __pyx_L30_error:;
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
          __pyx_L32_except_error:;
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
          goto __pyx_L1_error;
          __pyx_L31_exception_handled:;
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
          __pyx_L37_try_end:;
        }
+0690:                     new_dict[k] = int(v)
            __pyx_t_7 = __Pyx_PyNumber_Int(__pyx_v_v); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 690, __pyx_L30_error)
            __Pyx_GOTREF(__pyx_t_7);
            if (unlikely((PyDict_SetItem(__pyx_v_new_dict, __pyx_v_k, __pyx_t_7) < 0))) __PYX_ERR(0, 690, __pyx_L30_error)
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0691:                 except (ValueError, TypeError):
          __pyx_t_11 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), ((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
          if (__pyx_t_11) {
            __Pyx_AddTraceback("datamodel.converters._parse_dict_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_15, &__pyx_t_6) < 0) __PYX_ERR(0, 691, __pyx_L32_except_error)
            __Pyx_XGOTREF(__pyx_t_7);
            __Pyx_XGOTREF(__pyx_t_15);
            __Pyx_XGOTREF(__pyx_t_6);
+0692:                     new_dict[k] = v
            if (unlikely((PyDict_SetItem(__pyx_v_new_dict, __pyx_v_k, __pyx_v_v) < 0))) __PYX_ERR(0, 692, __pyx_L32_except_error)
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            goto __pyx_L31_exception_handled;
          }
          goto __pyx_L32_except_error;
+0693:             elif val_type == float and isinstance(v, str):
      __pyx_t_3 = __Pyx_PyObject_RichCompareBool(__pyx_v_val_type, ((PyObject *)(&PyFloat_Type)), Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 693, __pyx_L1_error)
      if (__pyx_t_3) {

      } else {

        __pyx_t_2 = __pyx_t_3;

        goto __pyx_L40_bool_binop_done;
      }
      __pyx_t_3 = PyUnicode_Check(__pyx_v_v); 

      __pyx_t_2 = __pyx_t_3;

      __pyx_L40_bool_binop_done:;
      if (__pyx_t_2) {
/* … */
        goto __pyx_L27;
      }
+0694:                 try:
        {
          /*try:*/ {
/* … */
          }
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          goto __pyx_L49_try_end;
          __pyx_L42_error:;
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
          __pyx_L44_except_error:;
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          goto __pyx_L1_error;
          __pyx_L43_exception_handled:;
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          __pyx_L49_try_end:;
        }
+0695:                     new_dict[k] = float(v)
            __pyx_t_6 = __Pyx_PyNumber_Float(__pyx_v_v); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 695, __pyx_L42_error)
            __Pyx_GOTREF(__pyx_t_6);
            if (__Pyx_PyFloat_FromNumber(&__pyx_t_6, NULL, 0) < (0)) __PYX_ERR(0, 695, __pyx_L42_error)
            if (unlikely((PyDict_SetItem(__pyx_v_new_dict, __pyx_v_k, __pyx_t_6) < 0))) __PYX_ERR(0, 695, __pyx_L42_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+0696:                 except (ValueError, TypeError):
          __pyx_t_11 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), ((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
          if (__pyx_t_11) {
            __Pyx_AddTraceback("datamodel.converters._parse_dict_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_15, &__pyx_t_7) < 0) __PYX_ERR(0, 696, __pyx_L44_except_error)
            __Pyx_XGOTREF(__pyx_t_6);
            __Pyx_XGOTREF(__pyx_t_15);
            __Pyx_XGOTREF(__pyx_t_7);
+0697:                     new_dict[k] = v
            if (unlikely((PyDict_SetItem(__pyx_v_new_dict, __pyx_v_k, __pyx_v_v) < 0))) __PYX_ERR(0, 697, __pyx_L44_except_error)
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            goto __pyx_L43_exception_handled;
          }
          goto __pyx_L44_except_error;
+0698:             elif val_type == bool and isinstance(v, str):
      __pyx_t_3 = __Pyx_PyObject_RichCompareBool(__pyx_v_val_type, ((PyObject *)(&PyBool_Type)), Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 698, __pyx_L1_error)
      if (__pyx_t_3) {

      } else {

        __pyx_t_2 = __pyx_t_3;

        goto __pyx_L52_bool_binop_done;
      }
      __pyx_t_3 = PyUnicode_Check(__pyx_v_v); 

      __pyx_t_2 = __pyx_t_3;

      __pyx_L52_bool_binop_done:;
      if (__pyx_t_2) {
/* … */
        goto __pyx_L27;
      }
+0699:                 try:
        {
          /*try:*/ {
/* … */
          }
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          goto __pyx_L61_try_end;
          __pyx_L54_error:;
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
          __pyx_L56_except_error:;
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
          goto __pyx_L1_error;
          __pyx_L55_exception_handled:;
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
          __pyx_L61_try_end:;
        }
+0700:                     new_dict[k] = to_boolean(v)
            __pyx_t_7 = __pyx_f_9datamodel_10converters_to_boolean(__pyx_v_v, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 700, __pyx_L54_error)
            __Pyx_GOTREF(__pyx_t_7);
            if (unlikely((PyDict_SetItem(__pyx_v_new_dict, __pyx_v_k, __pyx_t_7) < 0))) __PYX_ERR(0, 700, __pyx_L54_error)
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0701:                 except (ValueError, TypeError):
          __pyx_t_11 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), ((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
          if (__pyx_t_11) {
            __Pyx_AddTraceback("datamodel.converters._parse_dict_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_15, &__pyx_t_6) < 0) __PYX_ERR(0, 701, __pyx_L56_except_error)
            __Pyx_XGOTREF(__pyx_t_7);
            __Pyx_XGOTREF(__pyx_t_15);
            __Pyx_XGOTREF(__pyx_t_6);
+0702:                     new_dict[k] = v
            if (unlikely((PyDict_SetItem(__pyx_v_new_dict, __pyx_v_k, __pyx_v_v) < 0))) __PYX_ERR(0, 702, __pyx_L56_except_error)
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            goto __pyx_L55_exception_handled;
          }
          goto __pyx_L56_except_error;
+0703:             elif val_type in encoders:
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_encoders); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 703, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_val_type, __pyx_t_6, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 703, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (__pyx_t_2) {
/* … */
        goto __pyx_L27;
      }
+0704:                 try:
        {
          /*try:*/ {
/* … */
          }
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          goto __pyx_L71_try_end;
          __pyx_L64_error:;
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
          __pyx_L66_except_error:;
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          goto __pyx_L1_error;
          __pyx_L65_exception_handled:;
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          __pyx_L71_try_end:;
        }
+0705:                     new_dict[k] = encoders[val_type](v)
            __pyx_t_15 = NULL;
            __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_encoders); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 705, __pyx_L64_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_16 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_v_val_type); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 705, __pyx_L64_error)
            __Pyx_GOTREF(__pyx_t_16);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_8 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_16))) {
              __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_16);
              assert(__pyx_t_15);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_16);
              __Pyx_INCREF(__pyx_t_15);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_16, __pyx__function);
              __pyx_t_8 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_v_v};
              __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_16, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
              if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 705, __pyx_L64_error)
              __Pyx_GOTREF(__pyx_t_6);
            }
            if (unlikely((PyDict_SetItem(__pyx_v_new_dict, __pyx_v_k, __pyx_t_6) < 0))) __PYX_ERR(0, 705, __pyx_L64_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+0706:                 except (ValueError, TypeError):
          __pyx_t_11 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), ((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
          if (__pyx_t_11) {
            __Pyx_AddTraceback("datamodel.converters._parse_dict_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_16, &__pyx_t_15) < 0) __PYX_ERR(0, 706, __pyx_L66_except_error)
            __Pyx_XGOTREF(__pyx_t_6);
            __Pyx_XGOTREF(__pyx_t_16);
            __Pyx_XGOTREF(__pyx_t_15);
+0707:                     new_dict[k] = v
            if (unlikely((PyDict_SetItem(__pyx_v_new_dict, __pyx_v_k, __pyx_v_v) < 0))) __PYX_ERR(0, 707, __pyx_L66_except_error)
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
            goto __pyx_L65_exception_handled;
          }
          goto __pyx_L66_except_error;
 0708:             else:
+0709:                 new_dict[k] = v
      /*else*/ {
        if (unlikely((PyDict_SetItem(__pyx_v_new_dict, __pyx_v_k, __pyx_v_v) < 0))) __PYX_ERR(0, 709, __pyx_L1_error)
      }
      __pyx_L27:;
 0710:         # Other non-primitive types
 0711:         else:
+0712:             new_dict[k] = _parse_typing(field, val_type, v, encoder, False)
    /*else*/ {
      __pyx_t_17.__pyx_n = 2;
      __pyx_t_17.encoder = __pyx_v_encoder;
      __pyx_t_17.as_objects = Py_False;
      __pyx_t_15 = __pyx_f_9datamodel_10converters__parse_typing(__pyx_v_field, __pyx_v_val_type, __pyx_v_v, &__pyx_t_17); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 712, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      if (unlikely((PyDict_SetItem(__pyx_v_new_dict, __pyx_v_k, __pyx_t_15) < 0))) __PYX_ERR(0, 712, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    }
    __pyx_L23:;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0713: 
+0714:     return new_dict
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __Pyx_INCREF(__pyx_v_new_dict);
      __pyx_r = __pyx_v_new_dict;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  goto __pyx_L0;
 0715: 
+0716: cdef object _parse_list_type(
static PyObject *__pyx_f_9datamodel_10converters__parse_list_type(PyObject *__pyx_v_field, PyObject *__pyx_v_T, PyObject *__pyx_v_data, PyObject *__pyx_v_encoder, PyObject *__pyx_v_args, struct __pyx_opt_args_9datamodel_10converters__parse_list_type *__pyx_optional_args) {
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_XDECREF(__pyx_t_19);
  __Pyx_XDECREF(__pyx_t_20);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_34);
  __Pyx_AddTraceback("datamodel.converters._parse_list_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_arg_type);
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_converter);
  __Pyx_XDECREF(__pyx_v_inner_type);

  __Pyx_XDECREF(__pyx_v_origin);
  __Pyx_XDECREF(__pyx_v_type_args);
  __Pyx_XDECREF(__pyx_v_d);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9datamodel_10converters_17_parse_tuple_type_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
/* … */
struct __pyx_opt_args_9datamodel_10converters__parse_list_type {
  int __pyx_n;
  PyObject *_parent;
};
 0717:     object field,
 0718:     object T,
 0719:     object data,
 0720:     object encoder,
 0721:     object args,
+0722:     object _parent = None
  PyObject *__pyx_v__parent = ((PyObject *)Py_None);
  PyObject *__pyx_v_arg_type = 0;
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_converter = 0;
  PyObject *__pyx_v_inner_type = 0;
  CYTHON_UNUSED int __pyx_v_is_optional;
  PyObject *__pyx_v_origin = 0;
  PyObject *__pyx_v_type_args = 0;
  PyObject *__pyx_v_d = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_r = NULL;
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v__parent = __pyx_optional_args->_parent;
    }
  }
  __Pyx_INCREF(__pyx_v_data);
 0723: ):
 0724:     """
 0725:     Parse a list of items to a typing type.
 0726:     """
+0727:     cdef object arg_type = args[0]
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 727, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_arg_type = __pyx_t_1;
  __pyx_t_1 = 0;
+0728:     cdef list result = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 728, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_result = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+0729:     cdef tuple key = (arg_type, field.name)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_arg_type);
  __Pyx_GIVEREF(__pyx_v_arg_type);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_arg_type) != (0)) __PYX_ERR(0, 729, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1) != (0)) __PYX_ERR(0, 729, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_v_key = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
 0730:     cdef object converter
+0731:     cdef object inner_type = field._inner_type or arg_type
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 731, __pyx_L1_error)
  if (!__pyx_t_3) {
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L3_bool_binop_done;
  }
  __Pyx_INCREF(__pyx_v_arg_type);
  __pyx_t_2 = __pyx_v_arg_type;
  __pyx_L3_bool_binop_done:;
  __pyx_v_inner_type = __pyx_t_2;
  __pyx_t_2 = 0;
+0732:     cdef bint is_optional = False
  __pyx_v_is_optional = 0;
+0733:     cdef object origin = field._inner_origin or get_origin(T)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_origin); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 733, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 733, __pyx_L1_error)
  if (!__pyx_t_3) {
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_get_origin); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 733, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_4);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_T};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 733, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_L5_bool_binop_done:;
  __pyx_v_origin = __pyx_t_2;
  __pyx_t_2 = 0;
+0734:     cdef tuple type_args = field._typing_args or get_args(T)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_typing_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 734, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 734, __pyx_L1_error)
  if (!__pyx_t_3) {
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __pyx_t_5 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_5);
    if (!(likely(PyTuple_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_5))) __PYX_ERR(0, 734, __pyx_L1_error)
    __pyx_t_2 = __pyx_t_5;
    __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_get_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 734, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_T};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 734, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_4 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_4);
  if (!(likely(PyTuple_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_4))) __PYX_ERR(0, 734, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_4;
  __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_L7_bool_binop_done:;
  __pyx_v_type_args = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
 0735: 
 0736:     # Debug information if needed
 0737:     # print(f"_parse_list_type: field={field.name}, T={T}, data={data}, args={args}")
 0738: 
+0739:     if data is None:
  __pyx_t_3 = (__pyx_v_data == Py_None);
  if (__pyx_t_3) {
/* … */
  }
+0740:         return []   # short-circuit
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 740, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_2;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_2 = 0;
    goto __pyx_L0;
 0741: 
 0742:     # Compute the Inner Type:
+0743:     if hasattr(field, '_inner_type') and field._inner_type is not None:
  __pyx_t_7 = __Pyx_HasAttr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 743, __pyx_L1_error)
  if (__pyx_t_7) {

  } else {

    __pyx_t_3 = __pyx_t_7;

    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 743, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = (__pyx_t_2 != Py_None);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  __pyx_t_3 = __pyx_t_7;

  __pyx_L11_bool_binop_done:;
  if (__pyx_t_3) {
/* … */
    goto __pyx_L10;
  }
+0744:         inner_type = field._inner_type
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 744, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_inner_type, __pyx_t_2);
    __pyx_t_2 = 0;
 0745:     # Then try to get it from the type's args
+0746:     elif type_args and len(type_args) > 0:
  if (__pyx_v_type_args == Py_None) __pyx_t_7 = 0;
  else
  {
    Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_v_type_args);
    if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 746, __pyx_L1_error)
    __pyx_t_7 = (__pyx_temp != 0);
  }

  if (__pyx_t_7) {

  } else {

    __pyx_t_3 = __pyx_t_7;

    goto __pyx_L13_bool_binop_done;
  }
  if (unlikely(__pyx_v_type_args == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
    __PYX_ERR(0, 746, __pyx_L1_error)
  }
  __pyx_t_8 = __Pyx_PyTuple_GET_SIZE(__pyx_v_type_args); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 746, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_8 > 0);



  __pyx_t_3 = __pyx_t_7;

  __pyx_L13_bool_binop_done:;
  if (__pyx_t_3) {
/* … */
    goto __pyx_L10;
  }
+0747:         inner_type = type_args[0]
    if (unlikely(__pyx_v_type_args == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
      __PYX_ERR(0, 747, __pyx_L1_error)
    }
    __pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_type_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 747, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_inner_type, __pyx_t_2);
    __pyx_t_2 = 0;
 0748:     # Finally try to get it from args parameter
+0749:     elif args and isinstance(args, (list, tuple)) and len(args) > 0:
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_args); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 749, __pyx_L1_error)
  if (__pyx_t_7) {

  } else {

    __pyx_t_3 = __pyx_t_7;

    goto __pyx_L15_bool_binop_done;
  }
  __pyx_t_9 = PyList_Check(__pyx_v_args); 
  if (!__pyx_t_9) {

  } else {

    __pyx_t_7 = __pyx_t_9;

    goto __pyx_L18_bool_binop_done;
  }
  __pyx_t_9 = PyTuple_Check(__pyx_v_args); 

  __pyx_t_7 = __pyx_t_9;

  __pyx_L18_bool_binop_done:;
  if (__pyx_t_7) {

  } else {

    __pyx_t_3 = __pyx_t_7;

    goto __pyx_L15_bool_binop_done;
  }
  __pyx_t_8 = PyObject_Length(__pyx_v_args); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 749, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_8 > 0);



  __pyx_t_3 = __pyx_t_7;

  __pyx_L15_bool_binop_done:;
  if (__pyx_t_3) {
/* … */
    goto __pyx_L10;
  }
+0750:         if hasattr(args[0], '__origin__') and args[0].__origin__ is list and hasattr(args[0], '__args__'):
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_HasAttr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_origin); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 750, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_7) {

    } else {

      __pyx_t_3 = __pyx_t_7;

      goto __pyx_L21_bool_binop_done;
    }
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_origin); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_7 = (__pyx_t_1 == ((PyObject *)(&PyList_Type)));
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_7) {

    } else {

      __pyx_t_3 = __pyx_t_7;

      goto __pyx_L21_bool_binop_done;
    }
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_HasAttr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_args); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 750, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    __pyx_t_3 = __pyx_t_7;

    __pyx_L21_bool_binop_done:;
    if (__pyx_t_3) {
/* … */
      goto __pyx_L20;
    }
 0751:             # This is typing.List[T]
+0752:             arg_type = args[0]
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 752, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF_SET(__pyx_v_arg_type, __pyx_t_1);
      __pyx_t_1 = 0;
+0753:             inner_type = arg_type.__args__[0] if arg_type.__args__ else Any
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_type, __pyx_mstate_global->__pyx_n_u_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 753, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 753, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_3) {
        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_type, __pyx_mstate_global->__pyx_n_u_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 753, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 753, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_1 = __pyx_t_4;
        __pyx_t_4 = 0;
      } else {
        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Any); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 753, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = __pyx_t_4;
        __pyx_t_4 = 0;
      }

      __Pyx_DECREF_SET(__pyx_v_inner_type, __pyx_t_1);
      __pyx_t_1 = 0;
 0754:         else:
+0755:             inner_type = args[0]
    /*else*/ {
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 755, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF_SET(__pyx_v_inner_type, __pyx_t_1);
      __pyx_t_1 = 0;
    }
    __pyx_L20:;
 0756:     else:
+0757:         inner_type = Any
  /*else*/ {
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_Any); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 757, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_inner_type, __pyx_t_1);
    __pyx_t_1 = 0;
  }
  __pyx_L10:;
 0758: 
+0759:     if not isinstance(data, (list, tuple)):
  __pyx_t_7 = PyList_Check(__pyx_v_data); 
  if (!__pyx_t_7) {

  } else {

    __pyx_t_3 = __pyx_t_7;

    goto __pyx_L25_bool_binop_done;
  }
  __pyx_t_7 = PyTuple_Check(__pyx_v_data); 

  __pyx_t_3 = __pyx_t_7;

  __pyx_L25_bool_binop_done:;
  __pyx_t_7 = (!__pyx_t_3);


  if (__pyx_t_7) {
/* … */
  }
+0760:         data = [data]
    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_data);
    __Pyx_GIVEREF(__pyx_v_data);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_data) != (0)) __PYX_ERR(0, 760, __pyx_L1_error);
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_1);
    __pyx_t_1 = 0;
 0761: 
 0762:     # Get the converter if available
+0763:     key = (inner_type, field.name)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_inner_type);
  __Pyx_GIVEREF(__pyx_v_inner_type);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_inner_type) != (0)) __PYX_ERR(0, 763, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1) != (0)) __PYX_ERR(0, 763, __pyx_L1_error);
  __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_key, ((PyObject*)__pyx_t_4));
  __pyx_t_4 = 0;
+0764:     converter = TYPE_PARSERS.get(key) or TYPE_PARSERS.get(arg_type)
  if (unlikely(__pyx_v_9datamodel_10converters_TYPE_PARSERS == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
    __PYX_ERR(0, 764, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_9datamodel_10converters_TYPE_PARSERS, __pyx_v_key, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 764, __pyx_L1_error)
  if (!__pyx_t_7) {
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_4 = __pyx_t_1;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L27_bool_binop_done;
  }
  if (unlikely(__pyx_v_9datamodel_10converters_TYPE_PARSERS == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
    __PYX_ERR(0, 764, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_9datamodel_10converters_TYPE_PARSERS, __pyx_v_arg_type, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_4 = __pyx_t_1;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_L27_bool_binop_done:;
  __pyx_v_converter = __pyx_t_4;
  __pyx_t_4 = 0;
 0765: 
 0766:     # If it's a dataclass
+0767:     if is_dc(inner_type):
  __pyx_t_7 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_inner_type); if (unlikely(__pyx_t_7 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 767, __pyx_L1_error)
  if (__pyx_t_7) {
/* … */
  }
+0768:         for d in data:
    if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
      __pyx_t_4 = __pyx_v_data; __Pyx_INCREF(__pyx_t_4);
      __pyx_t_8 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 768, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 768, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_4))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 768, __pyx_L1_error)
            #endif
            if (__pyx_t_8 >= __pyx_temp) break;
          }
          __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_4, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_8;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 768, __pyx_L1_error)
            #endif
            if (__pyx_t_8 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8));
          #else
          __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8);
          #endif
          ++__pyx_t_8;
        }
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 768, __pyx_L1_error)
      } else {
        __pyx_t_1 = __pyx_t_10(__pyx_t_4);
        if (unlikely(!__pyx_t_1)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 768, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_d, __pyx_t_1);
      __pyx_t_1 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0769:             try:
      {
        /*try:*/ {
/* … */
        }
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        goto __pyx_L39_try_end;
        __pyx_L32_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
        __pyx_L34_except_error:;
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
        goto __pyx_L1_error;
        __pyx_L39_try_end:;
      }
+0770:                 if is_dc(d):
          __pyx_t_7 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_d); if (unlikely(__pyx_t_7 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 770, __pyx_L32_error)
          if (__pyx_t_7) {
/* … */
            goto __pyx_L40;
          }
+0771:                     result.append(d)
            __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_d); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 771, __pyx_L32_error)

+0772:                 elif converter:
          __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_converter); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 772, __pyx_L32_error)
          if (__pyx_t_7) {
/* … */
            goto __pyx_L40;
          }
+0773:                     result.append(
            __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 773, __pyx_L32_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

+0774:                         converter(field.name, d, inner_type, _parent)
            __pyx_t_2 = NULL;
            __Pyx_INCREF(__pyx_v_converter);
            __pyx_t_5 = __pyx_v_converter; 
            __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 774, __pyx_L32_error)
            __Pyx_GOTREF(__pyx_t_15);
            __pyx_t_6 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_5))) {
              __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
              assert(__pyx_t_2);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_2);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
              __pyx_t_6 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[5] = {__pyx_t_2, __pyx_t_15, __pyx_v_d, __pyx_v_inner_type, __pyx_v__parent};
              __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (5-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
              __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 774, __pyx_L32_error)
              __Pyx_GOTREF(__pyx_t_1);
            }
 0775:                     )
+0776:                 elif isinstance(d, dict):
          __pyx_t_7 = PyDict_Check(__pyx_v_d); 
          if (__pyx_t_7) {
/* … */
            goto __pyx_L40;
          }
+0777:                     result.append(inner_type(**d))
            if (unlikely(__pyx_v_d == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
              __PYX_ERR(0, 777, __pyx_L32_error)
            }
            if (likely(PyDict_CheckExact(__pyx_v_d))) {
              __pyx_t_1 = PyDict_Copy(__pyx_v_d); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 777, __pyx_L32_error)
              __Pyx_GOTREF(__pyx_t_1);
            } else {
              __pyx_t_1 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_d); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 777, __pyx_L32_error)
              __Pyx_GOTREF(__pyx_t_1);
            }
            __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_inner_type, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 777, __pyx_L32_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_5); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 777, __pyx_L32_error)
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

+0778:                 elif isinstance(d, (list, tuple)):
          __pyx_t_3 = PyList_Check(__pyx_v_d); 
          if (!__pyx_t_3) {

          } else {

            __pyx_t_7 = __pyx_t_3;

            goto __pyx_L41_bool_binop_done;
          }
          __pyx_t_3 = PyTuple_Check(__pyx_v_d); 

          __pyx_t_7 = __pyx_t_3;

          __pyx_L41_bool_binop_done:;
          if (__pyx_t_7) {
/* … */
            goto __pyx_L40;
          }
+0779:                     result.append(inner_type(*d))
            __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_v_d); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 779, __pyx_L32_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_inner_type, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 779, __pyx_L32_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 779, __pyx_L32_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

 0780:                 else:
+0781:                     result.append(inner_type(d))
          /*else*/ {
            __pyx_t_5 = NULL;
            __Pyx_INCREF(__pyx_v_inner_type);
            __pyx_t_15 = __pyx_v_inner_type; 
            __pyx_t_6 = 1;
            #if CYTHON_UNPACK_METHODS
            if (likely(PyMethod_Check(__pyx_t_15))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_15);
              assert(__pyx_t_5);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_15, __pyx__function);
              __pyx_t_6 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_d};
              __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
              if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 781, __pyx_L32_error)
              __Pyx_GOTREF(__pyx_t_1);
            }
            __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 781, __pyx_L32_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

          }
          __pyx_L40:;
+0782:             except Exception as e:
        __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
        if (__pyx_t_16) {
          __Pyx_AddTraceback("datamodel.converters._parse_list_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_15, &__pyx_t_5) < 0) __PYX_ERR(0, 782, __pyx_L34_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_15);
          __pyx_v_e = __pyx_t_15;
          /*try:*/ {
/* … */
          /*finally:*/ {
            __pyx_L48_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __Pyx_PyThreadState_assign
              __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0; __pyx_t_31 = 0;
              __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
              __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
              __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
              __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
              __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
               __Pyx_ExceptionSwap(&__pyx_t_29, &__pyx_t_30, &__pyx_t_31);
              if ( unlikely(__Pyx_GetException(&__pyx_t_26, &__pyx_t_27, &__pyx_t_28) < 0)) __Pyx_ErrFetch(&__pyx_t_26, &__pyx_t_27, &__pyx_t_28);
              __Pyx_XGOTREF(__pyx_t_26);
              __Pyx_XGOTREF(__pyx_t_27);
              __Pyx_XGOTREF(__pyx_t_28);
              __Pyx_XGOTREF(__pyx_t_29);
              __Pyx_XGOTREF(__pyx_t_30);
              __Pyx_XGOTREF(__pyx_t_31);
              __pyx_t_16 = __pyx_lineno; __pyx_t_24 = __pyx_clineno; __pyx_t_25 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
              }
              __Pyx_XGIVEREF(__pyx_t_29);
              __Pyx_XGIVEREF(__pyx_t_30);
              __Pyx_XGIVEREF(__pyx_t_31);
              __Pyx_ExceptionReset(__pyx_t_29, __pyx_t_30, __pyx_t_31);
              __Pyx_XGIVEREF(__pyx_t_26);
              __Pyx_XGIVEREF(__pyx_t_27);
              __Pyx_XGIVEREF(__pyx_t_28);
              __Pyx_ErrRestore(__pyx_t_26, __pyx_t_27, __pyx_t_28);
              __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0; __pyx_t_31 = 0;
              __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_24; __pyx_filename = __pyx_t_25;
              goto __pyx_L34_except_error;
            }
          }
        }
        goto __pyx_L34_except_error;
 0783:                 # Propagate the error with more context
+0784:                 raise ValueError(
            __pyx_t_17 = NULL;
+0785:                     f"Error creating {inner_type.__name__} from {d}: {e}"
            __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_v_inner_type, __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 785, __pyx_L48_error)
            __Pyx_GOTREF(__pyx_t_18);
            __pyx_t_19 = __Pyx_PyObject_FormatSimple(__pyx_t_18, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 785, __pyx_L48_error)
            __Pyx_GOTREF(__pyx_t_19);
            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
            __pyx_t_18 = __Pyx_PyObject_FormatSimple(__pyx_v_d, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 785, __pyx_L48_error)
            __Pyx_GOTREF(__pyx_t_18);
            __pyx_t_20 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 785, __pyx_L48_error)
            __Pyx_GOTREF(__pyx_t_20);
            __pyx_t_21[0] = __pyx_mstate_global->__pyx_kp_u_Error_creating;
            __pyx_t_21[1] = __pyx_t_19;
            __pyx_t_21[2] = __pyx_mstate_global->__pyx_kp_u_from;
            __pyx_t_21[3] = __pyx_t_18;
            __pyx_t_21[4] = __pyx_mstate_global->__pyx_kp_u__5;
            __pyx_t_21[5] = __pyx_t_20;
            __pyx_t_22 = 23;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_22 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_21[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_21[3]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_21[5]);
            #endif
            __pyx_t_16 = 0;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_16 |= __Pyx_PyUnicode_KIND_04(__pyx_t_21[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_21[3]) | __Pyx_PyUnicode_KIND_04(__pyx_t_21[5]);
            #endif
            __pyx_t_23 = __Pyx_PyUnicode_Join(__pyx_t_21, 6, __pyx_t_22, __pyx_t_16);
            if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 785, __pyx_L48_error)
            __Pyx_GOTREF(__pyx_t_23);
            __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
            __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
            __pyx_t_6 = 1;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_17, __pyx_t_23};
              __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
              __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
              if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 784, __pyx_L48_error)
              __Pyx_GOTREF(__pyx_t_2);
            }
+0786:                 ) from e
            __Pyx_Raise(__pyx_t_2, 0, 0, __pyx_v_e);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __PYX_ERR(0, 784, __pyx_L48_error)
          }
+0787:         return result
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_result);
        __pyx_r = __pyx_v_result;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0788:     elif is_typing(inner_type):
  __pyx_t_7 = __pyx_f_9datamodel_10converters_is_typing(__pyx_v_inner_type); if (unlikely(__pyx_t_7 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 788, __pyx_L1_error)
  if (__pyx_t_7) {
/* … */
    goto __pyx_L29;
  }
+0789:         if isinstance(data, list):
    __pyx_t_7 = PyList_Check(__pyx_v_data); 
    if (__pyx_t_7) {
/* … */
    }
+0790:             result = _parse_list_typing(
      __pyx_t_32.__pyx_n = 1;
      __pyx_t_32.as_objects = Py_None;
      __pyx_t_4 = __pyx_f_9datamodel_10converters__parse_list_typing(__pyx_v_field, __pyx_v_type_args, __pyx_v_data, __pyx_v_encoder, __pyx_v_origin, __pyx_v_args, &__pyx_t_32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 790, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (!(likely(PyList_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_4))) __PYX_ERR(0, 790, __pyx_L1_error)
      __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_4));
      __pyx_t_4 = 0;
 0791:                 field,
 0792:                 type_args,
 0793:                 data,
 0794:                 encoder,
 0795:                 origin,
 0796:                 args,
 0797:                 None
 0798:             )
+0799:     elif converter:
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_converter); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 799, __pyx_L1_error)
  if (__pyx_t_7) {
/* … */
    goto __pyx_L29;
  }
+0800:         for item in data:
    if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
      __pyx_t_4 = __pyx_v_data; __Pyx_INCREF(__pyx_t_4);
      __pyx_t_8 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 800, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 800, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_4))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 800, __pyx_L1_error)
            #endif
            if (__pyx_t_8 >= __pyx_temp) break;
          }
          __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_4, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_8;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 800, __pyx_L1_error)
            #endif
            if (__pyx_t_8 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_5 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8));
          #else
          __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8);
          #endif
          ++__pyx_t_8;
        }
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 800, __pyx_L1_error)
      } else {
        __pyx_t_5 = __pyx_t_10(__pyx_t_4);
        if (unlikely(!__pyx_t_5)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 800, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_5);
      __pyx_t_5 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0801:             result.append(
      __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_5); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 801, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

+0802:                 converter(field.name, item, inner_type, _parent)
      __pyx_t_15 = NULL;
      __Pyx_INCREF(__pyx_v_converter);
      __pyx_t_1 = __pyx_v_converter; 
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 802, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_6 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_1);
        assert(__pyx_t_15);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_15);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
        __pyx_t_6 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[5] = {__pyx_t_15, __pyx_t_2, __pyx_v_item, __pyx_v_inner_type, __pyx_v__parent};
        __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_6, (5-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 802, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
 0803:             )
+0804:     elif is_primitive(inner_type):
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_is_primitive); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 804, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_inner_type};
    __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 804, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 804, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_7) {
/* … */
    goto __pyx_L29;
  }
+0805:             try:
    {
      /*try:*/ {
/* … */
      }
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      goto __pyx_L64_try_end;
      __pyx_L59_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
      __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
      __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
      __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
      __pyx_L61_except_error:;
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
      goto __pyx_L1_error;
      __pyx_L60_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
      __pyx_L64_try_end:;
    }
+0806:                 for item in data:
        if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
          __pyx_t_4 = __pyx_v_data; __Pyx_INCREF(__pyx_t_4);
          __pyx_t_8 = 0;
          __pyx_t_10 = NULL;
        } else {
          __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 806, __pyx_L59_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 806, __pyx_L59_error)
        }
        for (;;) {
          if (likely(!__pyx_t_10)) {
            if (likely(PyList_CheckExact(__pyx_t_4))) {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
                #if !CYTHON_ASSUME_SAFE_SIZE
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 806, __pyx_L59_error)
                #endif
                if (__pyx_t_8 >= __pyx_temp) break;
              }
              __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_4, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
              ++__pyx_t_8;
            } else {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
                #if !CYTHON_ASSUME_SAFE_SIZE
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 806, __pyx_L59_error)
                #endif
                if (__pyx_t_8 >= __pyx_temp) break;
              }
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8));
              #else
              __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_8);
              #endif
              ++__pyx_t_8;
            }
            if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 806, __pyx_L59_error)
          } else {
            __pyx_t_1 = __pyx_t_10(__pyx_t_4);
            if (unlikely(!__pyx_t_1)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 806, __pyx_L59_error)
                PyErr_Clear();
              }
              break;
            }
          }
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_1);
          __pyx_t_1 = 0;
/* … */
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0807:                     if encoder:
          __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_encoder); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 807, __pyx_L59_error)
          if (__pyx_t_7) {
/* … */
          }
+0808:                         result.append(encoder(item))
            __pyx_t_5 = NULL;
            __Pyx_INCREF(__pyx_v_encoder);
            __pyx_t_2 = __pyx_v_encoder; 
            __pyx_t_6 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_2))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
              assert(__pyx_t_5);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
              __pyx_t_6 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_item};
              __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
              if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 808, __pyx_L59_error)
              __Pyx_GOTREF(__pyx_t_1);
            }
            __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 808, __pyx_L59_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

+0809:                     if inner_type == int and isinstance(item, str):
          __pyx_t_3 = __Pyx_PyObject_RichCompareBool(__pyx_v_inner_type, ((PyObject *)(&PyLong_Type)), Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 809, __pyx_L59_error)
          if (__pyx_t_3) {

          } else {

            __pyx_t_7 = __pyx_t_3;

            goto __pyx_L69_bool_binop_done;
          }
          __pyx_t_3 = PyUnicode_Check(__pyx_v_item); 

          __pyx_t_7 = __pyx_t_3;

          __pyx_L69_bool_binop_done:;
          if (__pyx_t_7) {
/* … */
            goto __pyx_L68;
          }
+0810:                         result.append(int(item))
            __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_item); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 810, __pyx_L59_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 810, __pyx_L59_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

+0811:                     elif inner_type == float and isinstance(item, str):
          __pyx_t_3 = __Pyx_PyObject_RichCompareBool(__pyx_v_inner_type, ((PyObject *)(&PyFloat_Type)), Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 811, __pyx_L59_error)
          if (__pyx_t_3) {

          } else {

            __pyx_t_7 = __pyx_t_3;

            goto __pyx_L71_bool_binop_done;
          }
          __pyx_t_3 = PyUnicode_Check(__pyx_v_item); 

          __pyx_t_7 = __pyx_t_3;

          __pyx_L71_bool_binop_done:;
          if (__pyx_t_7) {
/* … */
            goto __pyx_L68;
          }
+0812:                         result.append(float(item))
            __pyx_t_1 = __Pyx_PyNumber_Float(__pyx_v_item); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 812, __pyx_L59_error)
            __Pyx_GOTREF(__pyx_t_1);
            if (__Pyx_PyFloat_FromNumber(&__pyx_t_1, NULL, 0) < (0)) __PYX_ERR(0, 812, __pyx_L59_error)
            __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 812, __pyx_L59_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

 0813:                     else:
+0814:                         if inner_type in encoders:
          /*else*/ {
            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_encoders); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 814, __pyx_L59_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_v_inner_type, __pyx_t_1, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 814, __pyx_L59_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            if (__pyx_t_7) {
/* … */
              goto __pyx_L73;
            }
+0815:                             result.append(encoders[inner_type](item))
              __pyx_t_2 = NULL;
              __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_encoders); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 815, __pyx_L59_error)
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_15 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_v_inner_type); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 815, __pyx_L59_error)
              __Pyx_GOTREF(__pyx_t_15);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_6 = 1;
              #if CYTHON_UNPACK_METHODS
              if (unlikely(PyMethod_Check(__pyx_t_15))) {
                __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_15);
                assert(__pyx_t_2);
                PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15);
                __Pyx_INCREF(__pyx_t_2);
                __Pyx_INCREF(__pyx__function);
                __Pyx_DECREF_SET(__pyx_t_15, __pyx__function);
                __pyx_t_6 = 0;
              }
              #endif
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_item};
                __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 815, __pyx_L59_error)
                __Pyx_GOTREF(__pyx_t_1);
              }
              __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 815, __pyx_L59_error)
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

 0816:                         else:
+0817:                             result.append(
            /*else*/ {
/* … */
              __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 817, __pyx_L59_error)
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

            }
            __pyx_L73:;
          }
          __pyx_L68:;
+0818:                                 _parse_builtin_type(field, inner_type, item, None)
              __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_builtin_type(__pyx_v_field, __pyx_v_inner_type, __pyx_v_item, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 818, __pyx_L59_error)
              __Pyx_GOTREF(__pyx_t_1);
 0819:                             )
+0820:             except Exception as e:
      __pyx_t_24 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
      if (__pyx_t_24) {
        __Pyx_AddTraceback("datamodel.converters._parse_list_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_15) < 0) __PYX_ERR(0, 820, __pyx_L61_except_error)
        __Pyx_XGOTREF(__pyx_t_4);
        __Pyx_XGOTREF(__pyx_t_1);
        __Pyx_XGOTREF(__pyx_t_15);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_v_e = __pyx_t_1;
        /*try:*/ {
/* … */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
            goto __pyx_L81;
          }
          __pyx_L80_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_29 = 0; __pyx_t_30 = 0; __pyx_t_31 = 0; __pyx_t_37 = 0; __pyx_t_36 = 0; __pyx_t_35 = 0;
            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
            __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
            __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
            __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
            __Pyx_XDECREF(__pyx_t_34); __pyx_t_34 = 0;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
             __Pyx_ExceptionSwap(&__pyx_t_37, &__pyx_t_36, &__pyx_t_35);
            if ( unlikely(__Pyx_GetException(&__pyx_t_29, &__pyx_t_30, &__pyx_t_31) < 0)) __Pyx_ErrFetch(&__pyx_t_29, &__pyx_t_30, &__pyx_t_31);
            __Pyx_XGOTREF(__pyx_t_29);
            __Pyx_XGOTREF(__pyx_t_30);
            __Pyx_XGOTREF(__pyx_t_31);
            __Pyx_XGOTREF(__pyx_t_37);
            __Pyx_XGOTREF(__pyx_t_36);
            __Pyx_XGOTREF(__pyx_t_35);
            __pyx_t_16 = __pyx_lineno; __pyx_t_24 = __pyx_clineno; __pyx_t_25 = __pyx_filename;
            {
              __Pyx_XDECREF(__pyx_v_e); __pyx_v_e = 0;
            }
            __Pyx_XGIVEREF(__pyx_t_37);
            __Pyx_XGIVEREF(__pyx_t_36);
            __Pyx_XGIVEREF(__pyx_t_35);
            __Pyx_ExceptionReset(__pyx_t_37, __pyx_t_36, __pyx_t_35);
            __Pyx_XGIVEREF(__pyx_t_29);
            __Pyx_XGIVEREF(__pyx_t_30);
            __Pyx_XGIVEREF(__pyx_t_31);
            __Pyx_ErrRestore(__pyx_t_29, __pyx_t_30, __pyx_t_31);
            __pyx_t_29 = 0; __pyx_t_30 = 0; __pyx_t_31 = 0; __pyx_t_37 = 0; __pyx_t_36 = 0; __pyx_t_35 = 0;
            __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_24; __pyx_filename = __pyx_t_25;
            goto __pyx_L61_except_error;
          }
          __pyx_L81:;
        }
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        goto __pyx_L60_exception_handled;
      }
      goto __pyx_L61_except_error;
+0821:                 try:
          {
            /*try:*/ {
/* … */
            }
            __Pyx_XDECREF(__pyx_t_31); __pyx_t_31 = 0;
            __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
            __Pyx_XDECREF(__pyx_t_29); __pyx_t_29 = 0;
            goto __pyx_L89_try_end;
            __pyx_L82_error:;
            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
            __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
            __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
            __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
            __pyx_L84_except_error:;
            __Pyx_XGIVEREF(__pyx_t_31);
            __Pyx_XGIVEREF(__pyx_t_30);
            __Pyx_XGIVEREF(__pyx_t_29);
            __Pyx_ExceptionReset(__pyx_t_31, __pyx_t_30, __pyx_t_29);
            goto __pyx_L80_error;
            __pyx_L89_try_end:;
          }
        }
+0822:                     result = rc.to_list(inner_type, data)
              __pyx_t_5 = NULL;
              __Pyx_GetModuleGlobalName(__pyx_t_23, __pyx_mstate_global->__pyx_n_u_rc); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 822, __pyx_L82_error)
              __Pyx_GOTREF(__pyx_t_23);
              __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_23, __pyx_mstate_global->__pyx_n_u_to_list); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 822, __pyx_L82_error)
              __Pyx_GOTREF(__pyx_t_17);
              __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
              __pyx_t_6 = 1;
              #if CYTHON_UNPACK_METHODS
              if (unlikely(PyMethod_Check(__pyx_t_17))) {
                __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_17);
                assert(__pyx_t_5);
                PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_17);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(__pyx__function);
                __Pyx_DECREF_SET(__pyx_t_17, __pyx__function);
                __pyx_t_6 = 0;
              }
              #endif
              {
                PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_inner_type, __pyx_v_data};
                __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_17, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
                __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
                if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 822, __pyx_L82_error)
                __Pyx_GOTREF(__pyx_t_2);
              }
              if (!(likely(PyList_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_2))) __PYX_ERR(0, 822, __pyx_L82_error)
              __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_2));
              __pyx_t_2 = 0;
 0823:                     # return data
+0824:                 except Exception as e:
            __pyx_t_24 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
            if (__pyx_t_24) {
              __Pyx_AddTraceback("datamodel.converters._parse_list_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_17, &__pyx_t_5) < 0) __PYX_ERR(0, 824, __pyx_L84_except_error)
              __Pyx_XGOTREF(__pyx_t_2);
              __Pyx_XGOTREF(__pyx_t_17);
              __Pyx_XGOTREF(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_17);
              __Pyx_DECREF_SET(__pyx_v_e, __pyx_t_17);
              /*try:*/ {
/* … */
              /*finally:*/ {
                __pyx_L95_error:;
                /*exception exit:*/{
                  __Pyx_PyThreadState_declare
                  __Pyx_PyThreadState_assign
                  __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_35 = 0; __pyx_t_36 = 0; __pyx_t_37 = 0;
                  __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
                  __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
                  __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
                  __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
                  __Pyx_XDECREF(__pyx_t_34); __pyx_t_34 = 0;
                   __Pyx_ExceptionSwap(&__pyx_t_35, &__pyx_t_36, &__pyx_t_37);
                  if ( unlikely(__Pyx_GetException(&__pyx_t_28, &__pyx_t_27, &__pyx_t_26) < 0)) __Pyx_ErrFetch(&__pyx_t_28, &__pyx_t_27, &__pyx_t_26);
                  __Pyx_XGOTREF(__pyx_t_28);
                  __Pyx_XGOTREF(__pyx_t_27);
                  __Pyx_XGOTREF(__pyx_t_26);
                  __Pyx_XGOTREF(__pyx_t_35);
                  __Pyx_XGOTREF(__pyx_t_36);
                  __Pyx_XGOTREF(__pyx_t_37);
                  __pyx_t_24 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_25 = __pyx_filename;
                  {
                    __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
                  }
                  __Pyx_XGIVEREF(__pyx_t_35);
                  __Pyx_XGIVEREF(__pyx_t_36);
                  __Pyx_XGIVEREF(__pyx_t_37);
                  __Pyx_ExceptionReset(__pyx_t_35, __pyx_t_36, __pyx_t_37);
                  __Pyx_XGIVEREF(__pyx_t_28);
                  __Pyx_XGIVEREF(__pyx_t_27);
                  __Pyx_XGIVEREF(__pyx_t_26);
                  __Pyx_ErrRestore(__pyx_t_28, __pyx_t_27, __pyx_t_26);
                  __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_35 = 0; __pyx_t_36 = 0; __pyx_t_37 = 0;
                  __pyx_lineno = __pyx_t_24; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_25;
                  goto __pyx_L84_except_error;
                }
              }
            }
            goto __pyx_L84_except_error;
+0825:                     raise ValueError(
                __pyx_t_20 = NULL;
+0826:                         f"Error parsing list of {inner_type}: {e}"
                __pyx_t_18 = __Pyx_PyObject_FormatSimple(__pyx_v_inner_type, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 826, __pyx_L95_error)
                __Pyx_GOTREF(__pyx_t_18);
                __pyx_t_19 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 826, __pyx_L95_error)
                __Pyx_GOTREF(__pyx_t_19);
                __pyx_t_33[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_list_of;
                __pyx_t_33[1] = __pyx_t_18;
                __pyx_t_33[2] = __pyx_mstate_global->__pyx_kp_u__5;
                __pyx_t_33[3] = __pyx_t_19;
                __pyx_t_8 = 24;
                #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                __pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_33[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_33[3]);
                #endif
                __pyx_t_24 = 0;
                #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                __pyx_t_24 |= __Pyx_PyUnicode_KIND_04(__pyx_t_33[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_33[3]);
                #endif
                __pyx_t_34 = __Pyx_PyUnicode_Join(__pyx_t_33, 4, __pyx_t_8, __pyx_t_24);
                if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 826, __pyx_L95_error)
                __Pyx_GOTREF(__pyx_t_34);
                __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
                __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
                __pyx_t_6 = 1;
                {
                  PyObject *__pyx_callargs[2] = {__pyx_t_20, __pyx_t_34};
                  __pyx_t_23 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                  __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
                  __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0;
                  if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 825, __pyx_L95_error)
                  __Pyx_GOTREF(__pyx_t_23);
                }
+0827:                     ) from e
                __Pyx_Raise(__pyx_t_23, 0, 0, __pyx_v_e);
                __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
                __PYX_ERR(0, 825, __pyx_L95_error)
              }
+0828:     elif inner_type is Any:
  __Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_Any); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __pyx_t_7 = (__pyx_v_inner_type == __pyx_t_15);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  if (__pyx_t_7) {
/* … */
  }
 0829:         # If no type is specified, return the list as-is
+0830:         return data
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_data);
        __pyx_r = __pyx_v_data;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 0831:     else:
 0832:         # Default: process each item with _parse_typing
+0833:         for item in data:
  /*else*/ {
    if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
      __pyx_t_15 = __pyx_v_data; __Pyx_INCREF(__pyx_t_15);
      __pyx_t_8 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_8 = -1; __pyx_t_15 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 833, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_15); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 833, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_15))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_15);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 833, __pyx_L1_error)
            #endif
            if (__pyx_t_8 >= __pyx_temp) break;
          }
          __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_15, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_8;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_15);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 833, __pyx_L1_error)
            #endif
            if (__pyx_t_8 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_15, __pyx_t_8));
          #else
          __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_15, __pyx_t_8);
          #endif
          ++__pyx_t_8;
        }
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 833, __pyx_L1_error)
      } else {
        __pyx_t_1 = __pyx_t_10(__pyx_t_15);
        if (unlikely(!__pyx_t_1)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 833, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_1);
      __pyx_t_1 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  }
  __pyx_L29:;
+0834:             result.append(
      __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 834, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

+0835:                 _parse_typing(field, T=inner_type, data=item, encoder=encoder, as_objects=False)
      __pyx_t_38.__pyx_n = 2;
      __pyx_t_38.encoder = __pyx_v_encoder;
      __pyx_t_38.as_objects = Py_False;
      __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_typing(__pyx_v_field, __pyx_v_inner_type, __pyx_v_item, &__pyx_t_38); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 835, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
 0836:             )
+0837:     return result
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __Pyx_INCREF(__pyx_v_result);
      __pyx_r = __pyx_v_result;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  goto __pyx_L0;
 0838: 
+0839: cdef object _parse_tuple_type(
static PyObject *__pyx_f_9datamodel_10converters__parse_tuple_type(PyObject *__pyx_v_field, CYTHON_UNUSED PyObject *__pyx_v_T, PyObject *__pyx_v_data, PyObject *__pyx_v_encoder, PyObject *__pyx_v_args) {
  struct __pyx_obj_9datamodel_10converters___pyx_scope_struct____pyx_f_9datamodel_10converters__parse_tuple_type *__pyx_cur_scope;
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_v_converted_elements = NULL;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_item_type = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_gb_9datamodel_10converters_17_parse_tuple_type_2generator = 0;
  PyObject *__pyx_r = NULL;
  __pyx_cur_scope = (struct __pyx_obj_9datamodel_10converters___pyx_scope_struct____pyx_f_9datamodel_10converters__parse_tuple_type *)__pyx_tp_new_9datamodel_10converters___pyx_scope_struct____pyx_f_9datamodel_10converters__parse_tuple_type(__pyx_mstate_global->__pyx_ptype_9datamodel_10converters___pyx_scope_struct____pyx_f_9datamodel_10converters__parse_tuple_type, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_9datamodel_10converters___pyx_scope_struct____pyx_f_9datamodel_10converters__parse_tuple_type *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 839, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_field = __pyx_v_field;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_field);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_field);
  __pyx_cur_scope->__pyx_v_encoder = __pyx_v_encoder;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_encoder);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_encoder);
  __Pyx_INCREF(__pyx_v_data);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_21);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_XDECREF(__pyx_t_24);
  __Pyx_XDECREF(__pyx_t_25);
  __Pyx_AddTraceback("datamodel.converters._parse_tuple_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_converted_elements);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_item_type);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XDECREF(__pyx_gb_9datamodel_10converters_17_parse_tuple_type_2generator);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_obj_9datamodel_10converters___pyx_scope_struct____pyx_f_9datamodel_10converters__parse_tuple_type {
  PyObject_HEAD
  PyObject *__pyx_v_element_type;
  PyObject *__pyx_v_encoder;
  PyObject *__pyx_v_field;
};

 0840:     object field,
 0841:     object T,
 0842:     object data,
 0843:     object encoder,
 0844:     object args
 0845: ):
 0846:     """
 0847:     Parse a tuple of items to their respective types.
 0848:     Handles both heterogeneous tuples (Tuple[T1, T2, ...]) and
 0849:     homogeneous tuples (Tuple[T, ...])
 0850:     """
+0851:     cdef tuple result = ()
  __Pyx_INCREF(__pyx_mstate_global->__pyx_empty_tuple);
  __pyx_v_result = __pyx_mstate_global->__pyx_empty_tuple;
 0852: 
 0853:     # Handle empty data
+0854:     if data is None:
  __pyx_t_1 = (__pyx_v_data == Py_None);
  if (__pyx_t_1) {
/* … */
  }
+0855:         return None
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 0856: 
 0857:     # Ensure data is in tuple form
+0858:     if not isinstance(data, (list, tuple)):
  __pyx_t_2 = PyList_Check(__pyx_v_data); 
  if (!__pyx_t_2) {

  } else {

    __pyx_t_1 = __pyx_t_2;

    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = PyTuple_Check(__pyx_v_data); 

  __pyx_t_1 = __pyx_t_2;

  __pyx_L5_bool_binop_done:;
  __pyx_t_2 = (!__pyx_t_1);


  if (__pyx_t_2) {
/* … */
  }
+0859:         data = (data,)
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 859, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_data);
    __Pyx_GIVEREF(__pyx_v_data);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_data) != (0)) __PYX_ERR(0, 859, __pyx_L1_error);
    __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3);
    __pyx_t_3 = 0;
 0860: 
 0861:     # Check for homogeneous tuple with ellipsis: Tuple[T, ...]
+0862:     if len(args) == 2 and args[1] is Ellipsis:
  __pyx_t_4 = PyObject_Length(__pyx_v_args); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 862, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_4 == 2);


  if (__pyx_t_1) {

  } else {

    __pyx_t_2 = __pyx_t_1;

    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_args, 1, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = (__pyx_t_3 == __pyx_builtin_Ellipsis);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_t_2 = __pyx_t_1;

  __pyx_L8_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
    goto __pyx_L7;
  }
 0863:         # All elements should be of type args[0]
+0864:         element_type = args[0]
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 864, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_cur_scope->__pyx_v_element_type = __pyx_t_3;
    __pyx_t_3 = 0;
+0865:         result = tuple(
    __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 865, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;
+0866:             _parse_builtin_type(field, element_type, item, encoder)
static PyObject *__pyx_pf_9datamodel_10converters_17_parse_tuple_type_genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_1_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __pyx_cur_scope = (struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_1_genexpr *)__pyx_tp_new_9datamodel_10converters___pyx_scope_struct_1_genexpr(__pyx_mstate_global->__pyx_ptype_9datamodel_10converters___pyx_scope_struct_1_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_1_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 866, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_9datamodel_10converters___pyx_scope_struct____pyx_f_9datamodel_10converters__parse_tuple_type *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9datamodel_10converters_17_parse_tuple_type_2generator, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_parse_tuple_type_locals_genexpr, __pyx_mstate_global->__pyx_n_u_datamodel_converters); if (unlikely(!gen)) __PYX_ERR(0, 866, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("datamodel.converters._parse_tuple_type.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_9datamodel_10converters_17_parse_tuple_type_2generator(__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 != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 866, __pyx_L1_error)
  }
/* … */
      if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_field)) { __Pyx_RaiseClosureNameError("field"); __PYX_ERR(0, 866, __pyx_L1_error) }
      __pyx_t_5 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_field;
      __Pyx_INCREF(__pyx_t_5);
      if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_element_type)) { __Pyx_RaiseClosureNameError("element_type"); __PYX_ERR(0, 866, __pyx_L1_error) }
      __pyx_t_7 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_element_type;
      __Pyx_INCREF(__pyx_t_7);
      if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_encoder)) { __Pyx_RaiseClosureNameError("encoder"); __PYX_ERR(0, 866, __pyx_L1_error) }
      __pyx_t_6 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_encoder;
      __Pyx_INCREF(__pyx_t_6);
      __pyx_t_10 = __pyx_f_9datamodel_10converters__parse_builtin_type(__pyx_t_5, __pyx_t_7, __pyx_cur_scope->__pyx_v_item, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 866, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_4 = __pyx_t_10;
      __pyx_t_10 = 0;
    } else {
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_10);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #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_3 = __pyx_pf_9datamodel_10converters_17_parse_tuple_type_genexpr(((PyObject*)__pyx_cur_scope), __pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 866, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
/* … */
struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_1_genexpr {
  PyObject_HEAD
  struct __pyx_obj_9datamodel_10converters___pyx_scope_struct____pyx_f_9datamodel_10converters__parse_tuple_type *__pyx_outer_scope;
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_item;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};

+0867:             if is_primitive(element_type) else
    __pyx_t_6 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_is_primitive); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 867, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_element_type)) { __Pyx_RaiseClosureNameError("element_type"); __PYX_ERR(0, 867, __pyx_L1_error) }
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      assert(__pyx_t_6);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_element_type};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 867, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 867, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_9) {
+0868:             _parse_type(field, element_type, item, encoder, False)
      if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_field)) { __Pyx_RaiseClosureNameError("field"); __PYX_ERR(0, 868, __pyx_L1_error) }
      __pyx_t_10 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_field;
      __Pyx_INCREF(__pyx_t_10);
      if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_element_type)) { __Pyx_RaiseClosureNameError("element_type"); __PYX_ERR(0, 868, __pyx_L1_error) }
      __pyx_t_6 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_element_type;
      __Pyx_INCREF(__pyx_t_6);
      if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_encoder)) { __Pyx_RaiseClosureNameError("encoder"); __PYX_ERR(0, 868, __pyx_L1_error) }
      __pyx_t_7 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_encoder;
      __Pyx_INCREF(__pyx_t_7);
      __pyx_t_11.__pyx_n = 2;
      __pyx_t_11.encoder = __pyx_t_7;
      __pyx_t_11.as_objects = Py_False;
      __pyx_t_5 = __pyx_f_9datamodel_10converters__parse_type(__pyx_t_10, __pyx_t_6, __pyx_cur_scope->__pyx_v_item, &__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 868, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_4 = __pyx_t_5;
      __pyx_t_5 = 0;
    }

    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 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_cur_scope->__pyx_t_2 = __pyx_t_3;
    __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;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 866, __pyx_L1_error)
+0869:             for item in data
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 869, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 869, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 869, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 869, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 869, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 869, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 869, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_item);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_item, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
 0870:         )
 0871:     # Handle heterogeneous tuple: Tuple[T1, T2, ...]
+0872:     elif len(args) > 0:
  __pyx_t_4 = PyObject_Length(__pyx_v_args); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 872, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_4 > 0);


  if (__pyx_t_2) {
/* … */
    goto __pyx_L7;
  }
 0873:         # Validate tuple length
+0874:         if len(data) != len(args):
    __pyx_t_4 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 874, __pyx_L1_error)
    __pyx_t_6 = PyObject_Length(__pyx_v_args); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 874, __pyx_L1_error)
    __pyx_t_2 = (__pyx_t_4 != __pyx_t_6);



    if (unlikely(__pyx_t_2)) {
/* … */
    }
+0875:             raise ValueError(
      __pyx_t_3 = NULL;
+0876:                 f"Tuple length mismatch for {field.name}: expected {len(args)}, got {len(data)}"
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 876, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_t_7, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 876, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_6 = PyObject_Length(__pyx_v_args); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 876, __pyx_L1_error)
      __pyx_t_7 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_6, 0, ' ', 'd'); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 876, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);

      __pyx_t_6 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 876, __pyx_L1_error)
      __pyx_t_9 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_6, 0, ' ', 'd'); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 876, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);

      __pyx_t_10[0] = __pyx_mstate_global->__pyx_kp_u_Tuple_length_mismatch_for;
      __pyx_t_10[1] = __pyx_t_8;
      __pyx_t_10[2] = __pyx_mstate_global->__pyx_kp_u_expected;
      __pyx_t_10[3] = __pyx_t_7;
      __pyx_t_10[4] = __pyx_mstate_global->__pyx_kp_u_got;
      __pyx_t_10[5] = __pyx_t_9;
      __pyx_t_6 = 43;
      #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
      __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10[3]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10[5]);
      #endif
      __pyx_t_11 = 0;
      #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
      __pyx_t_11 |= __Pyx_PyUnicode_KIND_04(__pyx_t_10[1]);
      #endif
      __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_10, 6, __pyx_t_6, __pyx_t_11);
      if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 876, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_13 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_12};
        __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 875, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(0, 875, __pyx_L1_error)
 0877:             )
 0878: 
 0879:         # Convert each element according to its type
+0880:         converted_elements = []
    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 880, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_v_converted_elements = ((PyObject*)__pyx_t_5);
    __pyx_t_5 = 0;
+0881:         for i, (item_type, item) in enumerate(zip(args, data)):
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
    __pyx_t_5 = __pyx_mstate_global->__pyx_int_0;
    __pyx_t_3 = NULL;
    __pyx_t_13 = 1;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_args, __pyx_v_data};
      __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_zip, __pyx_callargs+__pyx_t_13, (3-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 881, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
    }
    if (likely(PyList_CheckExact(__pyx_t_12)) || PyTuple_CheckExact(__pyx_t_12)) {
      __pyx_t_3 = __pyx_t_12; __Pyx_INCREF(__pyx_t_3);
      __pyx_t_6 = 0;
      __pyx_t_14 = NULL;
    } else {
      __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 881, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_14 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 881, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    for (;;) {
      if (likely(!__pyx_t_14)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 881, __pyx_L1_error)
            #endif
            if (__pyx_t_6 >= __pyx_temp) break;
          }
          __pyx_t_12 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_6;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 881, __pyx_L1_error)
            #endif
            if (__pyx_t_6 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_12 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6));
          #else
          __pyx_t_12 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_6);
          #endif
          ++__pyx_t_6;
        }
        if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 881, __pyx_L1_error)
      } else {
        __pyx_t_12 = __pyx_t_14(__pyx_t_3);
        if (unlikely(!__pyx_t_12)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 881, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_12);
      if ((likely(PyTuple_CheckExact(__pyx_t_12))) || (PyList_CheckExact(__pyx_t_12))) {
        PyObject* sequence = __pyx_t_12;
        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, 881, __pyx_L1_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0);
          __Pyx_INCREF(__pyx_t_9);
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1);
          __Pyx_INCREF(__pyx_t_7);
        } else {
          __pyx_t_9 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 881, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_9);
          __pyx_t_7 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 881, __pyx_L1_error)
          __Pyx_XGOTREF(__pyx_t_7);
        }
        #else
        __pyx_t_9 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 881, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_7 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 881, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 881, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_t_15 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8);
        index = 0; __pyx_t_9 = __pyx_t_15(__pyx_t_8); if (unlikely(!__pyx_t_9)) goto __pyx_L13_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_9);
        index = 1; __pyx_t_7 = __pyx_t_15(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L13_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_8), 2) < (0)) __PYX_ERR(0, 881, __pyx_L1_error)
        __pyx_t_15 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L14_unpacking_done;
        __pyx_L13_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_15 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(0, 881, __pyx_L1_error)
        __pyx_L14_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_item_type, __pyx_t_9);
      __pyx_t_9 = 0;
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_7);
      __pyx_t_7 = 0;
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
      __pyx_t_12 = __Pyx_PyLong_AddObjC(__pyx_t_5, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 881, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_5);
      __pyx_t_5 = __pyx_t_12;
      __pyx_t_12 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0882:             try:
      {
        /*try:*/ {
/* … */
        }
        __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;
        goto __pyx_L22_try_end;
        __pyx_L15_error:;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 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_L17_except_error:;
        __Pyx_XGIVEREF(__pyx_t_16);
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
        goto __pyx_L1_error;
        __pyx_L22_try_end:;
      }
+0883:                 if is_primitive(item_type):
          __pyx_t_7 = NULL;
          __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_is_primitive); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 883, __pyx_L15_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_13 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_9))) {
            __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_9);
            assert(__pyx_t_7);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
            __pyx_t_13 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_item_type};
            __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 883, __pyx_L15_error)
            __Pyx_GOTREF(__pyx_t_12);
          }
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 883, __pyx_L15_error)
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (__pyx_t_2) {
/* … */
            goto __pyx_L23;
          }
+0884:                     converted_elements.append(_parse_builtin_type(field, item_type, item, encoder))
            __pyx_t_12 = __pyx_cur_scope->__pyx_v_field;
            __Pyx_INCREF(__pyx_t_12);
            __pyx_t_9 = __pyx_cur_scope->__pyx_v_encoder;
            __Pyx_INCREF(__pyx_t_9);
            __pyx_t_7 = __pyx_f_9datamodel_10converters__parse_builtin_type(__pyx_t_12, __pyx_v_item_type, __pyx_v_item, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 884, __pyx_L15_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            __pyx_t_19 = __Pyx_PyList_Append(__pyx_v_converted_elements, __pyx_t_7); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 884, __pyx_L15_error)
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

 0885:                 else:
+0886:                     converted_elements.append(_parse_type(field, item_type, item, encoder, False))
          /*else*/ {
            __pyx_t_7 = __pyx_cur_scope->__pyx_v_field;
            __Pyx_INCREF(__pyx_t_7);
            __pyx_t_9 = __pyx_cur_scope->__pyx_v_encoder;
            __Pyx_INCREF(__pyx_t_9);
            __pyx_t_20.__pyx_n = 2;
            __pyx_t_20.encoder = __pyx_t_9;
            __pyx_t_20.as_objects = Py_False;
            __pyx_t_12 = __pyx_f_9datamodel_10converters__parse_type(__pyx_t_7, __pyx_v_item_type, __pyx_v_item, &__pyx_t_20); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 886, __pyx_L15_error)
            __Pyx_GOTREF(__pyx_t_12);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            __pyx_t_19 = __Pyx_PyList_Append(__pyx_v_converted_elements, __pyx_t_12); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 886, __pyx_L15_error)
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

          }
          __pyx_L23:;
+0887:             except Exception as e:
        __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
        if (__pyx_t_11) {
          __Pyx_AddTraceback("datamodel.converters._parse_tuple_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_9, &__pyx_t_7) < 0) __PYX_ERR(0, 887, __pyx_L17_except_error)
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_9);
          __pyx_v_e = __pyx_t_9;
          /*try:*/ {
/* … */
          /*finally:*/ {
            __pyx_L29_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __Pyx_PyThreadState_assign
              __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0; __pyx_t_31 = 0; __pyx_t_32 = 0; __pyx_t_33 = 0;
              __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
              __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
              __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
              __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
              __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
               __Pyx_ExceptionSwap(&__pyx_t_31, &__pyx_t_32, &__pyx_t_33);
              if ( unlikely(__Pyx_GetException(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30) < 0)) __Pyx_ErrFetch(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30);
              __Pyx_XGOTREF(__pyx_t_28);
              __Pyx_XGOTREF(__pyx_t_29);
              __Pyx_XGOTREF(__pyx_t_30);
              __Pyx_XGOTREF(__pyx_t_31);
              __Pyx_XGOTREF(__pyx_t_32);
              __Pyx_XGOTREF(__pyx_t_33);
              __pyx_t_11 = __pyx_lineno; __pyx_t_26 = __pyx_clineno; __pyx_t_27 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
              }
              __Pyx_XGIVEREF(__pyx_t_31);
              __Pyx_XGIVEREF(__pyx_t_32);
              __Pyx_XGIVEREF(__pyx_t_33);
              __Pyx_ExceptionReset(__pyx_t_31, __pyx_t_32, __pyx_t_33);
              __Pyx_XGIVEREF(__pyx_t_28);
              __Pyx_XGIVEREF(__pyx_t_29);
              __Pyx_XGIVEREF(__pyx_t_30);
              __Pyx_ErrRestore(__pyx_t_28, __pyx_t_29, __pyx_t_30);
              __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0; __pyx_t_31 = 0; __pyx_t_32 = 0; __pyx_t_33 = 0;
              __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_26; __pyx_filename = __pyx_t_27;
              goto __pyx_L17_except_error;
            }
          }
        }
        goto __pyx_L17_except_error;
+0888:                 raise ValueError(
            __pyx_t_21 = NULL;
+0889:                     f"Error parsing tuple element {i} of {field.name}: {e}"
            __pyx_t_22 = __Pyx_PyObject_FormatSimple(__pyx_v_i, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 889, __pyx_L29_error)
            __Pyx_GOTREF(__pyx_t_22);
            __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 889, __pyx_L29_error)
            __Pyx_GOTREF(__pyx_t_23);
            __pyx_t_24 = __Pyx_PyObject_FormatSimple(__pyx_t_23, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 889, __pyx_L29_error)
            __Pyx_GOTREF(__pyx_t_24);
            __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
            __pyx_t_23 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 889, __pyx_L29_error)
            __Pyx_GOTREF(__pyx_t_23);
            __pyx_t_10[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_tuple_element;
            __pyx_t_10[1] = __pyx_t_22;
            __pyx_t_10[2] = __pyx_mstate_global->__pyx_kp_u_of;
            __pyx_t_10[3] = __pyx_t_24;
            __pyx_t_10[4] = __pyx_mstate_global->__pyx_kp_u__5;
            __pyx_t_10[5] = __pyx_t_23;
            __pyx_t_4 = 34;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10[3]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10[5]);
            #endif
            __pyx_t_11 = 0;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_11 |= __Pyx_PyUnicode_KIND_04(__pyx_t_10[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_10[3]) | __Pyx_PyUnicode_KIND_04(__pyx_t_10[5]);
            #endif
            __pyx_t_25 = __Pyx_PyUnicode_Join(__pyx_t_10, 6, __pyx_t_4, __pyx_t_11);
            if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 889, __pyx_L29_error)
            __Pyx_GOTREF(__pyx_t_25);
            __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
            __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
            __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
            __pyx_t_13 = 1;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_21, __pyx_t_25};
              __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
              __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
              if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 888, __pyx_L29_error)
              __Pyx_GOTREF(__pyx_t_8);
            }
            __Pyx_Raise(__pyx_t_8, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __PYX_ERR(0, 888, __pyx_L29_error)
          }
 0890:                 )
 0891: 
+0892:         result = tuple(converted_elements)
    __pyx_t_5 = PyList_AsTuple(__pyx_v_converted_elements); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 892, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;
 0893:     else:
 0894:         # No type args, just return the tuple
+0895:         result = tuple(data)
  /*else*/ {
    __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_v_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 895, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;
  }
  __pyx_L7:;
 0896: 
+0897:     return result
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __Pyx_INCREF(__pyx_v_result);
      __pyx_r = __pyx_v_result;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  goto __pyx_L0;
 0898: 
+0899: cdef object _parse_dataclass_type(object T, object data):
static PyObject *__pyx_f_9datamodel_10converters__parse_dataclass_type(PyObject *__pyx_v_T, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("datamodel.converters._parse_dataclass_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0900:     if isinstance(data, dict):
  __pyx_t_1 = PyDict_Check(__pyx_v_data); 
  if (__pyx_t_1) {
/* … */
  }
+0901:         return T(**data)
    if (unlikely(__pyx_v_data == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
      __PYX_ERR(0, 901, __pyx_L1_error)
    }
    if (likely(PyDict_CheckExact(__pyx_v_data))) {
      __pyx_t_2 = PyDict_Copy(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 901, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 901, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_T, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 901, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_3;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_3 = 0;
    goto __pyx_L0;
+0902:     elif isinstance(data, (list, tuple)):
  __pyx_t_4 = PyList_Check(__pyx_v_data); 
  if (!__pyx_t_4) {

  } else {

    __pyx_t_1 = __pyx_t_4;

    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = PyTuple_Check(__pyx_v_data); 

  __pyx_t_1 = __pyx_t_4;

  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0903:         return T(*data)
    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 903, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_T, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 903, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_2;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_2 = 0;
    goto __pyx_L0;
 0904:     else:
+0905:         return T(data)
  /*else*/ {
    __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_v_T);
    __pyx_t_5 = __pyx_v_T; 
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_data};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 905, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_2;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }
 0906: 
+0907: cdef object _parse_builtin_type(object field, object T, object data, object encoder):
static PyObject *__pyx_f_9datamodel_10converters__parse_builtin_type(PyObject *__pyx_v_field, PyObject *__pyx_v_T, PyObject *__pyx_v_data, PyObject *__pyx_v_encoder) {
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_INCREF(__pyx_v_data);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_AddTraceback("datamodel.converters._parse_builtin_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0908:     if encoder is not None:
  __pyx_t_1 = (__pyx_v_encoder != Py_None);
  if (__pyx_t_1) {
/* … */
  }
+0909:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L8_try_return:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L0;
    }
+0910:             return encoder(data)
        __pyx_t_6 = NULL;
        __Pyx_INCREF(__pyx_v_encoder);
        __pyx_t_7 = __pyx_v_encoder; 
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_6);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_data};
          __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 910, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_5;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_5 = 0;
        goto __pyx_L8_try_return;
+0911:         except ValueError as e:
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("datamodel.converters._parse_builtin_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_6) < 0) __PYX_ERR(0, 911, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __pyx_v_e = ((PyObject*)__pyx_t_7);
        /*try:*/ {
/* … */
        /*finally:*/ {
          __pyx_L15_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
             __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24);
            if ( unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_22);
            __Pyx_XGOTREF(__pyx_t_23);
            __Pyx_XGOTREF(__pyx_t_24);
            __pyx_t_9 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
            }
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_24);
            __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
            __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18;
            goto __pyx_L6_except_error;
          }
        }
      }
      goto __pyx_L6_except_error;
+0912:             raise ValueError(f"Error parsing type {T}, {e}")
          __pyx_t_11 = NULL;
          __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v_T, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 912, __pyx_L15_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_13 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 912, __pyx_L15_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_14[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_type;
          __pyx_t_14[1] = __pyx_t_12;
          __pyx_t_14[2] = __pyx_mstate_global->__pyx_kp_u__7;
          __pyx_t_14[3] = __pyx_t_13;
          __pyx_t_15 = 21;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14[3]);
          #endif
          __pyx_t_9 = 0;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_9 |= __Pyx_PyUnicode_KIND_04(__pyx_t_14[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_14[3]);
          #endif
          __pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_14, 4, __pyx_t_15, __pyx_t_9);
          if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 912, __pyx_L15_error)
          __Pyx_GOTREF(__pyx_t_16);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __pyx_t_8 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_16};
            __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 912, __pyx_L15_error)
            __Pyx_GOTREF(__pyx_t_10);
          }
          __Pyx_Raise(__pyx_t_10, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __PYX_ERR(0, 912, __pyx_L15_error)
        }
+0913:     if T == str:
  __pyx_t_1 = __Pyx_PyObject_RichCompareBool(__pyx_v_T, ((PyObject *)(&PyUnicode_Type)), Py_EQ); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 913, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+0914:         return to_string(data)
    __pyx_t_6 = __pyx_f_9datamodel_10converters_to_string(__pyx_v_data, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_6;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_6 = 0;
    goto __pyx_L0;
+0915:     if T == int:
  __pyx_t_1 = __Pyx_PyObject_RichCompareBool(__pyx_v_T, ((PyObject *)(&PyLong_Type)), Py_EQ); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 915, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+0916:         return to_integer(data)
    __pyx_t_6 = __pyx_f_9datamodel_10converters_to_integer(__pyx_v_data, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_6;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_6 = 0;
    goto __pyx_L0;
+0917:     if T == float:
  __pyx_t_1 = __Pyx_PyObject_RichCompareBool(__pyx_v_T, ((PyObject *)(&PyFloat_Type)), Py_EQ); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 917, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+0918:         return to_float(data)
    __pyx_t_6 = __pyx_f_9datamodel_10converters_to_float(__pyx_v_data, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 918, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_6;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_6 = 0;
    goto __pyx_L0;
+0919:     if T == datetime.date:
  __pyx_t_1 = __Pyx_PyObject_RichCompareBool(__pyx_v_T, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7cpython_8datetime_date), Py_EQ); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 919, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+0920:         return to_date(data)
    __pyx_t_6 = ((PyObject *)__pyx_f_9datamodel_10converters_to_date(__pyx_v_data, 0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 920, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_6;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_6 = 0;
    goto __pyx_L0;
+0921:     if T == datetime.datetime:
  __pyx_t_1 = __Pyx_PyObject_RichCompareBool(__pyx_v_T, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime), Py_EQ); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 921, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+0922:         return to_datetime(data)
    __pyx_t_6 = ((PyObject *)__pyx_f_9datamodel_10converters_to_datetime(__pyx_v_data, 0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 922, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_6;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_6 = 0;
    goto __pyx_L0;
+0923:     if T == UUID:
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_UUID); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 923, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyObject_CompareBoolEq_object_object(__pyx_v_T, __pyx_t_6, Py_EQ); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 923, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (__pyx_t_1) {
/* … */
  }
+0924:         return to_uuid(data)
    __pyx_t_6 = __pyx_f_9datamodel_10converters_to_uuid(__pyx_v_data, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 924, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_6;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_6 = 0;
    goto __pyx_L0;
+0925:     elif is_dc(T):
  __pyx_t_1 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_T); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 925, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+0926:         return _parse_dataclass_type(T, data)
    __pyx_t_6 = __pyx_f_9datamodel_10converters__parse_dataclass_type(__pyx_v_T, __pyx_v_data); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 926, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_6;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_6 = 0;
    goto __pyx_L0;
+0927:     elif T == Path:
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_Path); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyObject_CompareBoolEq_object_object(__pyx_v_T, __pyx_t_6, Py_EQ); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (__pyx_t_1) {
/* … */
  }
+0928:         if isinstance(data, str):
    __pyx_t_1 = PyUnicode_Check(__pyx_v_data); 
    if (__pyx_t_1) {
/* … */
    }
+0929:             return Path(data)
      __pyx_t_7 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Path); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 929, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_8 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
        assert(__pyx_t_7);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
        __pyx_t_8 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_data};
        __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 929, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = __pyx_t_6;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_6 = 0;
      goto __pyx_L0;
+0930:         elif isinstance(data, Path):
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_Path); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 930, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyObject_IsInstance(__pyx_v_data, __pyx_t_6); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 930, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_1) {
/* … */
    }
+0931:             return data
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __Pyx_INCREF(__pyx_v_data);
          __pyx_r = __pyx_v_data;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      goto __pyx_L0;
 0932:         else:
+0933:             try:
    /*else*/ {
      {
        /*try:*/ {
/* … */
        }
        __pyx_L28_error:;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
        __pyx_L30_except_error:;
        __Pyx_XGIVEREF(__pyx_t_4);
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_XGIVEREF(__pyx_t_2);
        __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_3, __pyx_t_2);
        goto __pyx_L1_error;
        __pyx_L32_try_return:;
        __Pyx_XGIVEREF(__pyx_t_4);
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_XGIVEREF(__pyx_t_2);
        __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_3, __pyx_t_2);
        goto __pyx_L0;
      }
    }
+0934:                 return Path(str(data))
          __pyx_t_5 = NULL;
          __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_Path); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 934, __pyx_L28_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_10 = __Pyx_PyObject_Unicode(__pyx_v_data); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 934, __pyx_L28_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_8 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
            assert(__pyx_t_5);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
            __pyx_t_8 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_10};
            __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 934, __pyx_L28_error)
            __Pyx_GOTREF(__pyx_t_6);
          }
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_6;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_6 = 0;
          goto __pyx_L32_try_return;
+0935:             except:
        /*except:*/ {
          __Pyx_AddTraceback("datamodel.converters._parse_builtin_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_10) < 0) __PYX_ERR(0, 935, __pyx_L30_except_error)
          __Pyx_XGOTREF(__pyx_t_6);
          __Pyx_XGOTREF(__pyx_t_7);
          __Pyx_XGOTREF(__pyx_t_10);
+0936:                 raise ValueError(f"Cannot convert {data} to Path")
          __pyx_t_16 = NULL;
          __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_v_data, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 936, __pyx_L30_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_25[0] = __pyx_mstate_global->__pyx_kp_u_Cannot_convert;
          __pyx_t_25[1] = __pyx_t_11;
          __pyx_t_25[2] = __pyx_mstate_global->__pyx_kp_u_to_Path;
          __pyx_t_15 = 23;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_25[1]);
          #endif
          __pyx_t_17 = 0;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_17 |= __Pyx_PyUnicode_KIND_04(__pyx_t_25[1]);
          #endif
          __pyx_t_13 = __Pyx_PyUnicode_Join(__pyx_t_25, 3, __pyx_t_15, __pyx_t_17);
          if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 936, __pyx_L30_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __pyx_t_8 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_16, __pyx_t_13};
            __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 936, __pyx_L30_except_error)
            __Pyx_GOTREF(__pyx_t_5);
          }
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(0, 936, __pyx_L30_except_error)
        }
+0937:     elif T == dict:
  __pyx_t_1 = __Pyx_PyObject_RichCompareBool(__pyx_v_T, ((PyObject *)(&PyDict_Type)), Py_EQ); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 937, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+0938:         if not isinstance(data, dict):
    __pyx_t_1 = PyDict_Check(__pyx_v_data); 
    __pyx_t_26 = (!__pyx_t_1);


    if (unlikely(__pyx_t_26)) {
/* … */
    }
+0939:             raise ValueError(
      __pyx_t_7 = NULL;
+0940:                 f"Expected dict, got {type(data).__name__}"
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_data)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 940, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 940, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Expected_dict_got, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 940, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_8 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_6};
        __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 939, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
      }
      __Pyx_Raise(__pyx_t_10, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __PYX_ERR(0, 939, __pyx_L1_error)
 0941:             )
+0942:         return data
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_data);
        __pyx_r = __pyx_v_data;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+0943:     elif T == list:
  __pyx_t_26 = __Pyx_PyObject_RichCompareBool(__pyx_v_T, ((PyObject *)(&PyList_Type)), Py_EQ); if (unlikely((__pyx_t_26 < 0))) __PYX_ERR(0, 943, __pyx_L1_error)
  if (__pyx_t_26) {
/* … */
  }
+0944:         if not isinstance(data, (list, tuple)):
    __pyx_t_1 = PyList_Check(__pyx_v_data); 
    if (!__pyx_t_1) {

    } else {

      __pyx_t_26 = __pyx_t_1;

      goto __pyx_L38_bool_binop_done;
    }
    __pyx_t_1 = PyTuple_Check(__pyx_v_data); 

    __pyx_t_26 = __pyx_t_1;

    __pyx_L38_bool_binop_done:;
    __pyx_t_1 = (!__pyx_t_26);


    if (__pyx_t_1) {
/* … */
    }
+0945:             data = [data]
      __pyx_t_10 = PyList_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 945, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 0, __pyx_v_data) != (0)) __PYX_ERR(0, 945, __pyx_L1_error);
      __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_10);
      __pyx_t_10 = 0;
+0946:         return data
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_data);
        __pyx_r = __pyx_v_data;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 0947:     else:
 0948:         # Try encoders dict:
+0949:         try:
  /*else*/ {
    {
      /*try:*/ {
/* … */
      }
      __pyx_L40_error:;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
      __pyx_L42_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L44_try_return:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L0;
      __pyx_L43_except_return:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L0;
    }
  }
+0950:             if field._encoder_fn is None:
        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_encoder_fn); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 950, __pyx_L40_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_1 = (__pyx_t_10 == Py_None);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (__pyx_t_1) {
/* … */
        }
+0951:                 field._encoder_fn = encoders[T]
          __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_encoders); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 951, __pyx_L40_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_v_T); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 951, __pyx_L40_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__Pyx_PyObject_SetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_encoder_fn, __pyx_t_6) < (0)) __PYX_ERR(0, 951, __pyx_L40_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+0952:             return field._encoder_fn(data)
        __pyx_t_10 = __pyx_v_field;
        __Pyx_INCREF(__pyx_t_10);
        __pyx_t_8 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_data};
          __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encoder_fn, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 952, __pyx_L40_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_6;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_6 = 0;
        goto __pyx_L44_try_return;
+0953:         except KeyError:
      __pyx_t_17 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
      if (__pyx_t_17) {
        __Pyx_AddTraceback("datamodel.converters._parse_builtin_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_7) < 0) __PYX_ERR(0, 953, __pyx_L42_except_error)
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_7);
 0954:             # attempt direct construction:
+0955:             if isinstance(T, type):
        __pyx_t_1 = PyType_Check(__pyx_v_T); 
        if (__pyx_t_1) {
/* … */
        }
+0956:                 try:
          {
            /*try:*/ {
/* … */
            }
            __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
            __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
            __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
            goto __pyx_L57_try_end;
            __pyx_L50_error:;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
            __pyx_L52_except_error:;
            __Pyx_XGIVEREF(__pyx_t_24);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_23, __pyx_t_22);
            goto __pyx_L42_except_error;
            __pyx_L54_try_return:;
            __Pyx_XGIVEREF(__pyx_t_24);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_23, __pyx_t_22);
            goto __pyx_L43_except_return;
            __pyx_L51_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_24);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_23, __pyx_t_22);
            __pyx_L57_try_end:;
          }
+0957:                     if isinstance(data, dict):
              __pyx_t_1 = PyDict_Check(__pyx_v_data); 
              if (__pyx_t_1) {
/* … */
              }
+0958:                         return T(**data)
                if (unlikely(__pyx_v_data == Py_None)) {
                  PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
                  __PYX_ERR(0, 958, __pyx_L50_error)
                }
                if (likely(PyDict_CheckExact(__pyx_v_data))) {
                  __pyx_t_5 = PyDict_Copy(__pyx_v_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 958, __pyx_L50_error)
                  __Pyx_GOTREF(__pyx_t_5);
                } else {
                  __pyx_t_5 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 958, __pyx_L50_error)
                  __Pyx_GOTREF(__pyx_t_5);
                }
                __pyx_t_13 = __Pyx_PyObject_Call(__pyx_v_T, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 958, __pyx_L50_error)
                __Pyx_GOTREF(__pyx_t_13);
                __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                {
                  PyObject *__pyx_temp;
                  {
                    __pyx_temp = __pyx_r;
                    __pyx_r = __pyx_t_13;
                  }
                  __Pyx_XDECREF(__pyx_temp);
                }
                __pyx_t_13 = 0;
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
                __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
                goto __pyx_L54_try_return;
+0959:                     elif isinstance(data, (list, tuple)):
              __pyx_t_26 = PyList_Check(__pyx_v_data); 
              if (!__pyx_t_26) {

              } else {

                __pyx_t_1 = __pyx_t_26;

                goto __pyx_L59_bool_binop_done;
              }
              __pyx_t_26 = PyTuple_Check(__pyx_v_data); 

              __pyx_t_1 = __pyx_t_26;

              __pyx_L59_bool_binop_done:;
              if (__pyx_t_1) {
/* … */
              }
+0960:                         return T(*data)
                __pyx_t_13 = __Pyx_PySequence_Tuple(__pyx_v_data); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 960, __pyx_L50_error)
                __Pyx_GOTREF(__pyx_t_13);
                __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_T, __pyx_t_13, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 960, __pyx_L50_error)
                __Pyx_GOTREF(__pyx_t_5);
                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
                {
                  PyObject *__pyx_temp;
                  {
                    __pyx_temp = __pyx_r;
                    __pyx_r = __pyx_t_5;
                  }
                  __Pyx_XDECREF(__pyx_temp);
                }
                __pyx_t_5 = 0;
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
                __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
                goto __pyx_L54_try_return;
+0961:                     elif isinstance(data, str):
              __pyx_t_1 = PyUnicode_Check(__pyx_v_data); 
              if (__pyx_t_1) {
/* … */
              }
+0962:                         return T(data)
                __pyx_t_13 = NULL;
                __Pyx_INCREF(__pyx_v_T);
                __pyx_t_16 = __pyx_v_T; 
                __pyx_t_8 = 1;
                #if CYTHON_UNPACK_METHODS
                if (unlikely(PyMethod_Check(__pyx_t_16))) {
                  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_16);
                  assert(__pyx_t_13);
                  PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_16);
                  __Pyx_INCREF(__pyx_t_13);
                  __Pyx_INCREF(__pyx__function);
                  __Pyx_DECREF_SET(__pyx_t_16, __pyx__function);
                  __pyx_t_8 = 0;
                }
                #endif
                {
                  PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_v_data};
                  __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_16, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
                  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
                  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 962, __pyx_L50_error)
                  __Pyx_GOTREF(__pyx_t_5);
                }
                {
                  PyObject *__pyx_temp;
                  {
                    __pyx_temp = __pyx_r;
                    __pyx_r = __pyx_t_5;
                  }
                  __Pyx_XDECREF(__pyx_temp);
                }
                __pyx_t_5 = 0;
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
                __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
                goto __pyx_L54_try_return;
+0963:                 except (TypeError, ValueError):
            __pyx_t_17 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), ((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
            if (__pyx_t_17) {
              __Pyx_ErrRestore(0,0,0);
              goto __pyx_L51_exception_handled;
            }
            goto __pyx_L52_except_error;
 0964:                     pass
+0965:             return data
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __Pyx_INCREF(__pyx_v_data);
            __pyx_r = __pyx_v_data;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L43_except_return;
      }
+0966:         except (TypeError) as e:
      __pyx_t_17 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
      if (__pyx_t_17) {
        __Pyx_AddTraceback("datamodel.converters._parse_builtin_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_10, &__pyx_t_6) < 0) __PYX_ERR(0, 966, __pyx_L42_except_error)
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __pyx_v_e = ((PyObject*)__pyx_t_10);
        /*try:*/ {
/* … */
        /*finally:*/ {
          __pyx_L68_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
             __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
            if ( unlikely(__Pyx_GetException(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24) < 0)) __Pyx_ErrFetch(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24);
            __Pyx_XGOTREF(__pyx_t_22);
            __Pyx_XGOTREF(__pyx_t_23);
            __Pyx_XGOTREF(__pyx_t_24);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_19);
            __pyx_t_17 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
            }
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_20, __pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_24);
            __Pyx_ErrRestore(__pyx_t_22, __pyx_t_23, __pyx_t_24);
            __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0;
            __pyx_lineno = __pyx_t_17; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_18;
            goto __pyx_L42_except_error;
          }
        }
      }
+0967:             raise TypeError(f"Error type {T}: {e}") from e
          __pyx_t_16 = NULL;
          __pyx_t_13 = __Pyx_PyObject_FormatSimple(__pyx_v_T, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 967, __pyx_L68_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 967, __pyx_L68_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_14[0] = __pyx_mstate_global->__pyx_kp_u_Error_type;
          __pyx_t_14[1] = __pyx_t_13;
          __pyx_t_14[2] = __pyx_mstate_global->__pyx_kp_u__5;
          __pyx_t_14[3] = __pyx_t_11;
          __pyx_t_15 = 13;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14[3]);
          #endif
          __pyx_t_17 = 0;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_17 |= __Pyx_PyUnicode_KIND_04(__pyx_t_14[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_14[3]);
          #endif
          __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_14, 4, __pyx_t_15, __pyx_t_17);
          if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 967, __pyx_L68_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __pyx_t_8 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_16, __pyx_t_12};
            __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 967, __pyx_L68_error)
            __Pyx_GOTREF(__pyx_t_5);
          }
          __Pyx_Raise(__pyx_t_5, 0, 0, __pyx_v_e);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(0, 967, __pyx_L68_error)
        }
+0968:         except (ValueError) as e:
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("datamodel.converters._parse_builtin_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_7) < 0) __PYX_ERR(0, 968, __pyx_L42_except_error)
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_10);
        __pyx_v_e = ((PyObject*)__pyx_t_10);
        /*try:*/ {
/* … */
        /*finally:*/ {
          __pyx_L79_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
             __Pyx_ExceptionSwap(&__pyx_t_24, &__pyx_t_23, &__pyx_t_22);
            if ( unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_21);
            __Pyx_XGOTREF(__pyx_t_24);
            __Pyx_XGOTREF(__pyx_t_23);
            __Pyx_XGOTREF(__pyx_t_22);
            __pyx_t_9 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
            }
            __Pyx_XGIVEREF(__pyx_t_24);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_ExceptionReset(__pyx_t_24, __pyx_t_23, __pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
            __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0;
            __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18;
            goto __pyx_L42_except_error;
          }
        }
      }
      goto __pyx_L42_except_error;
+0969:             raise ValueError(
          __pyx_t_12 = NULL;
+0970:                 f"Error parsing type {T}: {e}"
          __pyx_t_16 = __Pyx_PyObject_FormatSimple(__pyx_v_T, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 970, __pyx_L79_error)
          __Pyx_GOTREF(__pyx_t_16);
          __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 970, __pyx_L79_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_14[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_type;
          __pyx_t_14[1] = __pyx_t_16;
          __pyx_t_14[2] = __pyx_mstate_global->__pyx_kp_u__5;
          __pyx_t_14[3] = __pyx_t_11;
          __pyx_t_15 = 21;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14[3]);
          #endif
          __pyx_t_9 = 0;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_9 |= __Pyx_PyUnicode_KIND_04(__pyx_t_14[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_14[3]);
          #endif
          __pyx_t_13 = __Pyx_PyUnicode_Join(__pyx_t_14, 4, __pyx_t_15, __pyx_t_9);
          if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 970, __pyx_L79_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __pyx_t_8 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_13};
            __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 969, __pyx_L79_error)
            __Pyx_GOTREF(__pyx_t_5);
          }
+0971:             ) from e
          __Pyx_Raise(__pyx_t_5, 0, 0, __pyx_v_e);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(0, 969, __pyx_L79_error)
        }
 0972: 
+0973: cpdef object parse_basic(object T, object data, object encoder = None):
static PyObject *__pyx_pw_9datamodel_10converters_33parse_basic(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_parse_basic(PyObject *__pyx_v_T, PyObject *__pyx_v_data, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9datamodel_10converters_parse_basic *__pyx_optional_args) {
  PyObject *__pyx_v_encoder = ((PyObject *)Py_None);
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_encoder = __pyx_optional_args->encoder;
    }
  }
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_AddTraceback("datamodel.converters.parse_basic", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_33parse_basic(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_32parse_basic, "parse_basic(T, data, encoder=None)\n\nparse_basic.\n\nParse a value to primitive types as str or int.\n--- (int, float, str, bool, bytes)");
static PyMethodDef __pyx_mdef_9datamodel_10converters_33parse_basic = {"parse_basic", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_33parse_basic, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_32parse_basic};
static PyObject *__pyx_pw_9datamodel_10converters_33parse_basic(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_T = 0;
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_encoder = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse_basic (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_T,&__pyx_mstate_global->__pyx_n_u_data,&__pyx_mstate_global->__pyx_n_u_encoder,0};
  PyObject* values[3] = {0,0,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 973, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 973, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 973, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 973, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "parse_basic", 0) < (0)) __PYX_ERR(0, 973, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("parse_basic", 0, 2, 3, i); __PYX_ERR(0, 973, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 973, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 973, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 973, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_T = values[0];
    __pyx_v_data = values[1];
    __pyx_v_encoder = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("parse_basic", 0, 2, 3, __pyx_nargs); __PYX_ERR(0, 973, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.parse_basic", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_32parse_basic(__pyx_self, __pyx_v_T, __pyx_v_data, __pyx_v_encoder);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_32parse_basic(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_T, PyObject *__pyx_v_data, PyObject *__pyx_v_encoder) {
  PyObject *__pyx_r = NULL;
  __pyx_t_2.__pyx_n = 1;
  __pyx_t_2.encoder = __pyx_v_encoder;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_parse_basic(__pyx_v_T, __pyx_v_data, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 973, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.parse_basic", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9datamodel_10converters_18_parse_typing_type_2generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_33parse_basic, 0, __pyx_mstate_global->__pyx_n_u_parse_basic, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[22])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 973, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[6]);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_parse_basic, __pyx_t_2) < (0)) __PYX_ERR(0, 973, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
struct __pyx_opt_args_9datamodel_10converters_parse_basic {
  int __pyx_n;
  PyObject *encoder;
};
 0974:     """parse_basic.
 0975: 
 0976:     Parse a value to primitive types as str or int.
 0977:     --- (int, float, str, bool, bytes)
 0978:     """
+0979:     if T == str:
  __pyx_t_1 = __Pyx_PyObject_RichCompareBool(__pyx_v_T, ((PyObject *)(&PyUnicode_Type)), Py_EQ); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 979, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+0980:         if isinstance(data, str):
    __pyx_t_1 = PyUnicode_Check(__pyx_v_data); 
    if (__pyx_t_1) {
/* … */
    }
+0981:             return data
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __Pyx_INCREF(__pyx_v_data);
          __pyx_r = __pyx_v_data;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      goto __pyx_L0;
+0982:         elif data is not None:
    __pyx_t_1 = (__pyx_v_data != Py_None);
    if (__pyx_t_1) {
/* … */
    }
+0983:             return str(data)
      __pyx_t_2 = __Pyx_PyObject_Unicode(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 983, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = __pyx_t_2;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L0;
+0984:     if T == int:
  __pyx_t_1 = __Pyx_PyObject_RichCompareBool(__pyx_v_T, ((PyObject *)(&PyLong_Type)), Py_EQ); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 984, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+0985:         if isinstance(data, int):
    __pyx_t_1 = PyLong_Check(__pyx_v_data); 
    if (__pyx_t_1) {
/* … */
    }
+0986:             return data
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __Pyx_INCREF(__pyx_v_data);
          __pyx_r = __pyx_v_data;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      goto __pyx_L0;
+0987:         elif data is not None:
    __pyx_t_1 = (__pyx_v_data != Py_None);
    if (__pyx_t_1) {
/* … */
    }
+0988:             return int(data)
      __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 988, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = __pyx_t_2;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L0;
+0989:     if T == bytes:
  __pyx_t_1 = __Pyx_PyObject_RichCompareBool(__pyx_v_T, ((PyObject *)(&PyBytes_Type)), Py_EQ); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 989, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+0990:         if data is not None:
    __pyx_t_1 = (__pyx_v_data != Py_None);
    if (__pyx_t_1) {
/* … */
    }
+0991:             return bytes(data)
      __pyx_t_3 = NULL;
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_data};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(&PyBytes_Type), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 991, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = __pyx_t_2;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L0;
+0992:     if T == UUID or T == pgproto.UUID:
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_UUID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyObject_CompareBoolEq_object_object(__pyx_v_T, __pyx_t_2, Py_EQ); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 992, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!__pyx_t_5) {

  } else {

    __pyx_t_1 = __pyx_t_5;

    goto __pyx_L10_bool_binop_done;
  }
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_pgproto); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_UUID); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 992, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyObject_CompareBoolEq_object_object(__pyx_v_T, __pyx_t_3, Py_EQ); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 992, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  __pyx_t_1 = __pyx_t_5;

  __pyx_L10_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+0993:         return to_uuid(data)
    __pyx_t_3 = __pyx_f_9datamodel_10converters_to_uuid(__pyx_v_data, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 993, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_3;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_3 = 0;
    goto __pyx_L0;
+0994:     if T == bool:
  __pyx_t_1 = __Pyx_PyObject_RichCompareBool(__pyx_v_T, ((PyObject *)(&PyBool_Type)), Py_EQ); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 994, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+0995:         if isinstance(data, bool):
    __pyx_t_1 = PyBool_Check(__pyx_v_data); 
    if (__pyx_t_1) {
/* … */
    }
+0996:             return data
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __Pyx_INCREF(__pyx_v_data);
          __pyx_r = __pyx_v_data;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      goto __pyx_L0;
 0997:     # function encoder:
+0998:     if encoder:
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_encoder); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 998, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+0999:         if is_callable(encoder):
    __pyx_t_1 = __pyx_f_9datamodel_10converters_is_callable(__pyx_v_encoder); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 999, __pyx_L1_error)
    if (__pyx_t_1) {
/* … */
    }
 1000:             # using a function encoder:
+1001:             try:
      {
        /*try:*/ {
/* … */
        }
        __pyx_L16_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
        __pyx_L18_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L20_try_return:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L0;
        __pyx_L19_except_return:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L0;
      }
+1002:                 return encoder(data)
          __pyx_t_2 = NULL;
          __Pyx_INCREF(__pyx_v_encoder);
          __pyx_t_9 = __pyx_v_encoder; 
          __pyx_t_4 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_9))) {
            __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9);
            assert(__pyx_t_2);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
            __Pyx_INCREF(__pyx_t_2);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
            __pyx_t_4 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_data};
            __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1002, __pyx_L16_error)
            __Pyx_GOTREF(__pyx_t_3);
          }
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_3;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_3 = 0;
          goto __pyx_L20_try_return;
+1003:             except TypeError as e:
        __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
        if (__pyx_t_10) {
          __Pyx_AddTraceback("datamodel.converters.parse_basic", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_9, &__pyx_t_2) < 0) __PYX_ERR(0, 1003, __pyx_L18_except_error)
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_9);
          __pyx_v_e = ((PyObject*)__pyx_t_9);
          /*try:*/ {
/* … */
          /*finally:*/ {
            __pyx_L27_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __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_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
              __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
              __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
              __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
               __Pyx_ExceptionSwap(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26);
              if ( 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_10 = __pyx_lineno; __pyx_t_19 = __pyx_clineno; __pyx_t_20 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
              }
              __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_10; __pyx_clineno = __pyx_t_19; __pyx_filename = __pyx_t_20;
              goto __pyx_L18_except_error;
            }
          }
        }
+1004:                 raise TypeError(
            __pyx_t_12 = NULL;
+1005:                     f"Type Error for Encoder {encoder!s} for type {T}: {e}"
            __pyx_t_13 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_encoder), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1005, __pyx_L27_error)
            __Pyx_GOTREF(__pyx_t_13);
            __pyx_t_14 = __Pyx_PyObject_FormatSimple(__pyx_v_T, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1005, __pyx_L27_error)
            __Pyx_GOTREF(__pyx_t_14);
            __pyx_t_15 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1005, __pyx_L27_error)
            __Pyx_GOTREF(__pyx_t_15);
            __pyx_t_16[0] = __pyx_mstate_global->__pyx_kp_u_Type_Error_for_Encoder;
            __pyx_t_16[1] = __pyx_t_13;
            __pyx_t_16[2] = __pyx_mstate_global->__pyx_kp_u_for_type;
            __pyx_t_16[3] = __pyx_t_14;
            __pyx_t_16[4] = __pyx_mstate_global->__pyx_kp_u__5;
            __pyx_t_16[5] = __pyx_t_15;
            __pyx_t_17 = 35;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_17 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16[3]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16[5]);
            #endif
            __pyx_t_10 = 0;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_16[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_16[3]) | __Pyx_PyUnicode_KIND_04(__pyx_t_16[5]);
            #endif
            __pyx_t_18 = __Pyx_PyUnicode_Join(__pyx_t_16, 6, __pyx_t_17, __pyx_t_10);
            if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1005, __pyx_L27_error)
            __Pyx_GOTREF(__pyx_t_18);
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
            __pyx_t_4 = 1;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_18};
              __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
              __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1004, __pyx_L27_error)
              __Pyx_GOTREF(__pyx_t_11);
            }
+1006:                 ) from e
            __Pyx_Raise(__pyx_t_11, 0, 0, __pyx_v_e);
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __PYX_ERR(0, 1004, __pyx_L27_error)
          }
+1007:             except ValueError as e:
        __pyx_t_19 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
        if (__pyx_t_19) {
          __Pyx_AddTraceback("datamodel.converters.parse_basic", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_9, &__pyx_t_3) < 0) __PYX_ERR(0, 1007, __pyx_L18_except_error)
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_9);
          __pyx_v_e = ((PyObject*)__pyx_t_9);
          /*try:*/ {
/* … */
          /*finally:*/ {
            __pyx_L38_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __Pyx_PyThreadState_assign
              __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
              __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
              __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
              __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
               __Pyx_ExceptionSwap(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
              if ( unlikely(__Pyx_GetException(&__pyx_t_26, &__pyx_t_25, &__pyx_t_24) < 0)) __Pyx_ErrFetch(&__pyx_t_26, &__pyx_t_25, &__pyx_t_24);
              __Pyx_XGOTREF(__pyx_t_26);
              __Pyx_XGOTREF(__pyx_t_25);
              __Pyx_XGOTREF(__pyx_t_24);
              __Pyx_XGOTREF(__pyx_t_23);
              __Pyx_XGOTREF(__pyx_t_22);
              __Pyx_XGOTREF(__pyx_t_21);
              __pyx_t_19 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_20 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
              }
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_26);
              __Pyx_XGIVEREF(__pyx_t_25);
              __Pyx_XGIVEREF(__pyx_t_24);
              __Pyx_ErrRestore(__pyx_t_26, __pyx_t_25, __pyx_t_24);
              __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0;
              __pyx_lineno = __pyx_t_19; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_20;
              goto __pyx_L18_except_error;
            }
          }
        }
+1008:                 raise ValueError(
            __pyx_t_18 = NULL;
+1009:                     f"Error parsing type {T}, {e}"
            __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v_T, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1009, __pyx_L38_error)
            __Pyx_GOTREF(__pyx_t_12);
            __pyx_t_15 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1009, __pyx_L38_error)
            __Pyx_GOTREF(__pyx_t_15);
            __pyx_t_27[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_type;
            __pyx_t_27[1] = __pyx_t_12;
            __pyx_t_27[2] = __pyx_mstate_global->__pyx_kp_u__7;
            __pyx_t_27[3] = __pyx_t_15;
            __pyx_t_17 = 21;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_17 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_27[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_27[3]);
            #endif
            __pyx_t_19 = 0;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_19 |= __Pyx_PyUnicode_KIND_04(__pyx_t_27[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_27[3]);
            #endif
            __pyx_t_14 = __Pyx_PyUnicode_Join(__pyx_t_27, 4, __pyx_t_17, __pyx_t_19);
            if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1009, __pyx_L38_error)
            __Pyx_GOTREF(__pyx_t_14);
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
            __pyx_t_4 = 1;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_18, __pyx_t_14};
              __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
              __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1008, __pyx_L38_error)
              __Pyx_GOTREF(__pyx_t_11);
            }
            __Pyx_Raise(__pyx_t_11, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __PYX_ERR(0, 1008, __pyx_L38_error)
          }
 1010:                 )
+1011:             except AttributeError as e:
        __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_AttributeError))));
        if (__pyx_t_10) {
          __Pyx_AddTraceback("datamodel.converters.parse_basic", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_9, &__pyx_t_2) < 0) __PYX_ERR(0, 1011, __pyx_L18_except_error)
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_9);
          __pyx_v_e = ((PyObject*)__pyx_t_9);
          /*try:*/ {
/* … */
          /*finally:*/ {
            __pyx_L49_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __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_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
              __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
              __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
              __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
               __Pyx_ExceptionSwap(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26);
              if ( 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_10 = __pyx_lineno; __pyx_t_19 = __pyx_clineno; __pyx_t_20 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
              }
              __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_10; __pyx_clineno = __pyx_t_19; __pyx_filename = __pyx_t_20;
              goto __pyx_L18_except_error;
            }
            __pyx_L48_return: {
              __pyx_t_26 = __pyx_r;
              __pyx_r = 0;
              __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
              __pyx_r = __pyx_t_26;
              __pyx_t_26 = 0;
              goto __pyx_L19_except_return;
            }
          }
        }
        goto __pyx_L18_except_error;
+1012:                 if data is None:
            __pyx_t_1 = (__pyx_v_data == Py_None);
            if (__pyx_t_1) {
/* … */
            }
+1013:                     return None
              {
                PyObject *__pyx_temp;
                {
                  __pyx_temp = __pyx_r;
                  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
                }
                __Pyx_XDECREF(__pyx_temp);
              }
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
              goto __pyx_L48_return;
+1014:                 raise AttributeError(
            __pyx_t_14 = NULL;
+1015:                     f"Attribute Error for Encoder {encoder!s} for type {T}: {e}"
            __pyx_t_18 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Str(__pyx_v_encoder), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1015, __pyx_L49_error)
            __Pyx_GOTREF(__pyx_t_18);
            __pyx_t_15 = __Pyx_PyObject_FormatSimple(__pyx_v_T, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1015, __pyx_L49_error)
            __Pyx_GOTREF(__pyx_t_15);
            __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1015, __pyx_L49_error)
            __Pyx_GOTREF(__pyx_t_12);
            __pyx_t_16[0] = __pyx_mstate_global->__pyx_kp_u_Attribute_Error_for_Encoder;
            __pyx_t_16[1] = __pyx_t_18;
            __pyx_t_16[2] = __pyx_mstate_global->__pyx_kp_u_for_type;
            __pyx_t_16[3] = __pyx_t_15;
            __pyx_t_16[4] = __pyx_mstate_global->__pyx_kp_u__5;
            __pyx_t_16[5] = __pyx_t_12;
            __pyx_t_17 = 40;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_17 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16[3]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16[5]);
            #endif
            __pyx_t_10 = 0;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_16[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_16[3]) | __Pyx_PyUnicode_KIND_04(__pyx_t_16[5]);
            #endif
            __pyx_t_13 = __Pyx_PyUnicode_Join(__pyx_t_16, 6, __pyx_t_17, __pyx_t_10);
            if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1015, __pyx_L49_error)
            __Pyx_GOTREF(__pyx_t_13);
            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            __pyx_t_4 = 1;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_t_13};
              __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_AttributeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1014, __pyx_L49_error)
              __Pyx_GOTREF(__pyx_t_11);
            }
+1016:                 ) from e
            __Pyx_Raise(__pyx_t_11, 0, 0, __pyx_v_e);
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __PYX_ERR(0, 1014, __pyx_L49_error)
          }
 1017:     # Using the encoders for basic types:
+1018:     try:
  {
    /*try:*/ {
/* … */
    }
    __pyx_L56_error:;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
    __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
    __pyx_L58_except_error:;
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
    goto __pyx_L1_error;
    __pyx_L60_try_return:;
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
    goto __pyx_L0;
    __pyx_L57_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
  }
+1019:         return encoders[T](data)
      __pyx_t_9 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_encoders); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1019, __pyx_L56_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_v_T); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1019, __pyx_L56_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_11))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11);
        assert(__pyx_t_9);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_data};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1019, __pyx_L56_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = __pyx_t_2;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L60_try_return;
+1020:     except KeyError:
    __pyx_t_19 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
    if (__pyx_t_19) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L57_exception_handled;
    }
 1021:         pass
+1022:     except TypeError as e:
    __pyx_t_19 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
    if (__pyx_t_19) {
      __Pyx_AddTraceback("datamodel.converters.parse_basic", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_11, &__pyx_t_9) < 0) __PYX_ERR(0, 1022, __pyx_L58_except_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_11);
      __pyx_v_e = ((PyObject*)__pyx_t_11);
      /*try:*/ {
/* … */
      /*finally:*/ {
        __pyx_L69_error:;
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
           __Pyx_ExceptionSwap(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
          if ( unlikely(__Pyx_GetException(&__pyx_t_26, &__pyx_t_25, &__pyx_t_24) < 0)) __Pyx_ErrFetch(&__pyx_t_26, &__pyx_t_25, &__pyx_t_24);
          __Pyx_XGOTREF(__pyx_t_26);
          __Pyx_XGOTREF(__pyx_t_25);
          __Pyx_XGOTREF(__pyx_t_24);
          __Pyx_XGOTREF(__pyx_t_23);
          __Pyx_XGOTREF(__pyx_t_22);
          __Pyx_XGOTREF(__pyx_t_21);
          __pyx_t_19 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_20 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
          }
          __Pyx_XGIVEREF(__pyx_t_23);
          __Pyx_XGIVEREF(__pyx_t_22);
          __Pyx_XGIVEREF(__pyx_t_21);
          __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
          __Pyx_XGIVEREF(__pyx_t_26);
          __Pyx_XGIVEREF(__pyx_t_25);
          __Pyx_XGIVEREF(__pyx_t_24);
          __Pyx_ErrRestore(__pyx_t_26, __pyx_t_25, __pyx_t_24);
          __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0;
          __pyx_lineno = __pyx_t_19; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_20;
          goto __pyx_L58_except_error;
        }
      }
    }
+1023:         raise TypeError(f"Error type {T}: {e}") from e
        __pyx_t_13 = NULL;
        __pyx_t_14 = __Pyx_PyObject_FormatSimple(__pyx_v_T, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1023, __pyx_L69_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1023, __pyx_L69_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_27[0] = __pyx_mstate_global->__pyx_kp_u_Error_type;
        __pyx_t_27[1] = __pyx_t_14;
        __pyx_t_27[2] = __pyx_mstate_global->__pyx_kp_u__5;
        __pyx_t_27[3] = __pyx_t_12;
        __pyx_t_17 = 13;
        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
        __pyx_t_17 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_27[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_27[3]);
        #endif
        __pyx_t_19 = 0;
        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
        __pyx_t_19 |= __Pyx_PyUnicode_KIND_04(__pyx_t_27[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_27[3]);
        #endif
        __pyx_t_15 = __Pyx_PyUnicode_Join(__pyx_t_27, 4, __pyx_t_17, __pyx_t_19);
        if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1023, __pyx_L69_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_t_4 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_15};
          __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1023, __pyx_L69_error)
          __Pyx_GOTREF(__pyx_t_3);
        }
        __Pyx_Raise(__pyx_t_3, 0, 0, __pyx_v_e);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(0, 1023, __pyx_L69_error)
      }
+1024:     except ValueError as e:
    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_10) {
      __Pyx_AddTraceback("datamodel.converters.parse_basic", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_11, &__pyx_t_2) < 0) __PYX_ERR(0, 1024, __pyx_L58_except_error)
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_11);
      __pyx_v_e = ((PyObject*)__pyx_t_11);
      /*try:*/ {
/* … */
      /*finally:*/ {
        __pyx_L80_error:;
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __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_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
           __Pyx_ExceptionSwap(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26);
          if ( 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_10 = __pyx_lineno; __pyx_t_19 = __pyx_clineno; __pyx_t_20 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
          }
          __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_10; __pyx_clineno = __pyx_t_19; __pyx_filename = __pyx_t_20;
          goto __pyx_L58_except_error;
        }
      }
    }
    goto __pyx_L58_except_error;
+1025:         raise ValueError(
        __pyx_t_15 = NULL;
+1026:             f"Error parsing type {T}: {e}"
        __pyx_t_13 = __Pyx_PyObject_FormatSimple(__pyx_v_T, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1026, __pyx_L80_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1026, __pyx_L80_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_27[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_type;
        __pyx_t_27[1] = __pyx_t_13;
        __pyx_t_27[2] = __pyx_mstate_global->__pyx_kp_u__5;
        __pyx_t_27[3] = __pyx_t_12;
        __pyx_t_17 = 21;
        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
        __pyx_t_17 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_27[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_27[3]);
        #endif
        __pyx_t_10 = 0;
        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
        __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_27[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_27[3]);
        #endif
        __pyx_t_14 = __Pyx_PyUnicode_Join(__pyx_t_27, 4, __pyx_t_17, __pyx_t_10);
        if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1026, __pyx_L80_error)
        __Pyx_GOTREF(__pyx_t_14);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_t_4 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_t_14};
          __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1025, __pyx_L80_error)
          __Pyx_GOTREF(__pyx_t_3);
        }
+1027:         ) from e
        __Pyx_Raise(__pyx_t_3, 0, 0, __pyx_v_e);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(0, 1025, __pyx_L80_error)
      }
 1028: 
 1029: 
+1030: cdef object _parse_typing_type(
static PyObject *__pyx_f_9datamodel_10converters__parse_typing_type(PyObject *__pyx_v_field, PyObject *__pyx_v_T, PyObject *__pyx_v_name, PyObject *__pyx_v_data, PyObject *__pyx_v_encoder, PyObject *__pyx_v_origin, PyObject *__pyx_v_args, struct __pyx_opt_args_9datamodel_10converters__parse_typing_type *__pyx_optional_args) {
  struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_2___pyx_f_9datamodel_10converters__parse_typing_type *__pyx_cur_scope;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("datamodel.converters._parse_typing_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_error);
  __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_k);
  __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_v);
  __Pyx_XDECREF(__pyx_gb_9datamodel_10converters_18_parse_typing_type_2generator1);
  __Pyx_XDECREF(__pyx_gb_9datamodel_10converters_18_parse_typing_type_5generator2);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_9datamodel_10converters__parse_typing_type {
  int __pyx_n;
  PyObject *as_objects;
};
/* … */
struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_2___pyx_f_9datamodel_10converters__parse_typing_type {
  PyObject_HEAD
  PyObject *__pyx_v_encoder;
  PyObject *__pyx_v_field;
  PyObject *__pyx_v_type_args;
};

 1031:     object field,
 1032:     object T,
 1033:     object name,
 1034:     object data,
 1035:     object encoder,
 1036:     object origin,
 1037:     object args,
+1038:     object as_objects=False
  PyObject *__pyx_v_as_objects = ((PyObject *)Py_False);
  PyObject *__pyx_v_error = NULL;
  PyObject *__pyx_8genexpr1__pyx_v_k = NULL;
  PyObject *__pyx_8genexpr1__pyx_v_v = NULL;
  PyObject *__pyx_gb_9datamodel_10converters_18_parse_typing_type_2generator1 = 0;
  PyObject *__pyx_gb_9datamodel_10converters_18_parse_typing_type_5generator2 = 0;
  PyObject *__pyx_r = NULL;
  __pyx_cur_scope = (struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_2___pyx_f_9datamodel_10converters__parse_typing_type *)__pyx_tp_new_9datamodel_10converters___pyx_scope_struct_2___pyx_f_9datamodel_10converters__parse_typing_type(__pyx_mstate_global->__pyx_ptype_9datamodel_10converters___pyx_scope_struct_2___pyx_f_9datamodel_10converters__parse_typing_type, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_2___pyx_f_9datamodel_10converters__parse_typing_type *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 1030, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_as_objects = __pyx_optional_args->as_objects;
    }
  }
  __pyx_cur_scope->__pyx_v_field = __pyx_v_field;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_field);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_field);
  __pyx_cur_scope->__pyx_v_encoder = __pyx_v_encoder;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_encoder);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_encoder);
  __Pyx_INCREF(__pyx_v_data);
 1039: ):
 1040:     """
 1041:     Handle field_type='typing' scenario.
 1042:     """
+1043:     cdef tuple type_args = getattr(T, '__args__', ())
  __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_T, __pyx_mstate_global->__pyx_n_u_args, __pyx_mstate_global->__pyx_empty_tuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1043, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(0, 1043, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_type_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 1044: 
+1045:     if field.origin in {dict, Mapping} or name in {'Dict', 'Mapping'}:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_field, __pyx_mstate_global->__pyx_n_u_origin_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1045, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_RichCompareBool(__pyx_t_1, ((PyObject *)(&PyDict_Type)), Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1045, __pyx_L1_error)
  if (!__pyx_t_4) {

  } else {

    __pyx_t_3 = __pyx_t_4;

    goto __pyx_L6_bool_binop_done;
  }
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Mapping); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1045, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_CompareBoolEq_object_object(__pyx_t_1, __pyx_t_5, Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1045, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  __pyx_t_3 = __pyx_t_4;

  __pyx_L6_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __pyx_t_3;


  if (!__pyx_t_4) {

  } else {

    __pyx_t_2 = __pyx_t_4;

    goto __pyx_L4_bool_binop_done;
  }
  __Pyx_INCREF(__pyx_v_name);
  __pyx_t_1 = __pyx_v_name;
  __pyx_t_3 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_Dict, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1045, __pyx_L1_error)
  if (!__pyx_t_3) {

  } else {

    __pyx_t_4 = __pyx_t_3;

    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_Mapping, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1045, __pyx_L1_error)

  __pyx_t_4 = __pyx_t_3;

  __pyx_L8_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __pyx_t_4;



  __pyx_t_2 = __pyx_t_3;

  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
+1046:         if isinstance(data, dict):
    __pyx_t_2 = PyDict_Check(__pyx_v_data); 
    if (likely(__pyx_t_2)) {
/* … */
    }
+1047:             if type_args:
      if (__pyx_cur_scope->__pyx_v_type_args == Py_None) __pyx_t_2 = 0;
      else
      {
        Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_cur_scope->__pyx_v_type_args);
        if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 1047, __pyx_L1_error)
        __pyx_t_2 = (__pyx_temp != 0);
      }

      if (__pyx_t_2) {
/* … */
      }
 1048:                 # e.g. Dict[K, V]
+1049:                 return {k: _parse_type(field, type_args[1], v, None, False) for k, v in data.items()}
        { /* enter inner scope */
          __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1049, __pyx_L14_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_6 = 0;
          if (unlikely(__pyx_v_data == Py_None)) {
            PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "items");
            __PYX_ERR(0, 1049, __pyx_L14_error)
          }
          __pyx_t_9 = __Pyx_dict_iterator(__pyx_v_data, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1049, __pyx_L14_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_XDECREF(__pyx_t_5);
          __pyx_t_5 = __pyx_t_9;
          __pyx_t_9 = 0;
          while (1) {
            __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_7, &__pyx_t_6, &__pyx_t_9, &__pyx_t_10, NULL, __pyx_t_8);
            if (unlikely(__pyx_t_11 == 0)) break;
            if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 1049, __pyx_L14_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v_k, __pyx_t_9);
            __pyx_t_9 = 0;
            __Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v_v, __pyx_t_10);
            __pyx_t_10 = 0;
            __pyx_t_10 = __pyx_cur_scope->__pyx_v_field;
            __Pyx_INCREF(__pyx_t_10);
            if (unlikely(__pyx_cur_scope->__pyx_v_type_args == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
              __PYX_ERR(0, 1049, __pyx_L14_error)
            }
            __pyx_t_9 = __Pyx_GetItemInt_Tuple(__pyx_cur_scope->__pyx_v_type_args, 1, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1049, __pyx_L14_error)
            __Pyx_GOTREF(__pyx_t_9);
            __pyx_t_13.__pyx_n = 2;
            __pyx_t_13.encoder = Py_None;
            __pyx_t_13.as_objects = Py_False;
            __pyx_t_12 = __pyx_f_9datamodel_10converters__parse_type(__pyx_t_10, __pyx_t_9, __pyx_8genexpr1__pyx_v_v, &__pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1049, __pyx_L14_error)
            __Pyx_GOTREF(__pyx_t_12);
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            if (unlikely(PyDict_SetItem(__pyx_t_1, __pyx_8genexpr1__pyx_v_k, __pyx_t_12))) __PYX_ERR(0, 1049, __pyx_L14_error)
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_k); __pyx_8genexpr1__pyx_v_k = 0;
          __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_v); __pyx_8genexpr1__pyx_v_v = 0;
          goto __pyx_L17_exit_scope;
          __pyx_L14_error:;
          __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_k); __pyx_8genexpr1__pyx_v_k = 0;
          __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_v); __pyx_8genexpr1__pyx_v_v = 0;
          goto __pyx_L1_error;
          __pyx_L17_exit_scope:;
        } /* exit inner scope */
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_1;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_1 = 0;
        goto __pyx_L0;
+1050:             return data
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __Pyx_INCREF(__pyx_v_data);
          __pyx_r = __pyx_v_data;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      goto __pyx_L0;
 1051:         else:
+1052:             raise TypeError(f"Expected dict, got {type(data).__name__}")
    /*else*/ {
      __pyx_t_5 = NULL;
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_data)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1052, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_12, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1052, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Expected_dict_got, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1052, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_14 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_12};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_14, (2-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1052, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 1052, __pyx_L1_error)
    }
 1053: 
+1054:     if field.origin is tuple or name == 'Tuple' or field.origin == tuple:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_field, __pyx_mstate_global->__pyx_n_u_origin_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = (__pyx_t_1 == ((PyObject *)(&PyTuple_Type)));
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!__pyx_t_3) {

  } else {

    __pyx_t_2 = __pyx_t_3;

    goto __pyx_L19_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_Tuple, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1054, __pyx_L1_error)
  if (!__pyx_t_3) {

  } else {

    __pyx_t_2 = __pyx_t_3;

    goto __pyx_L19_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_field, __pyx_mstate_global->__pyx_n_u_origin_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_RichCompareBool(__pyx_t_1, ((PyObject *)(&PyTuple_Type)), Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1054, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  __pyx_t_2 = __pyx_t_3;

  __pyx_L19_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
+1055:         if isinstance(data, (list, tuple)):
    __pyx_t_3 = PyList_Check(__pyx_v_data); 
    if (!__pyx_t_3) {

    } else {

      __pyx_t_2 = __pyx_t_3;

      goto __pyx_L23_bool_binop_done;
    }
    __pyx_t_3 = PyTuple_Check(__pyx_v_data); 

    __pyx_t_2 = __pyx_t_3;

    __pyx_L23_bool_binop_done:;
    if (__pyx_t_2) {
/* … */
    }
+1056:             if len(type_args) == 2 and type_args[1] is Ellipsis:
      __pyx_t_1 = __pyx_cur_scope->__pyx_v_type_args;
      __Pyx_INCREF(__pyx_t_1);
      if (unlikely(__pyx_t_1 == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
        __PYX_ERR(0, 1056, __pyx_L1_error)
      }
      __pyx_t_7 = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1056, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = (__pyx_t_7 == 2);


      if (__pyx_t_3) {

      } else {

        __pyx_t_2 = __pyx_t_3;

        goto __pyx_L26_bool_binop_done;
      }
      if (unlikely(__pyx_cur_scope->__pyx_v_type_args == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
        __PYX_ERR(0, 1056, __pyx_L1_error)
      }
      __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_cur_scope->__pyx_v_type_args, 1, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1056, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = (__pyx_t_1 == __pyx_builtin_Ellipsis);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      __pyx_t_2 = __pyx_t_3;

      __pyx_L26_bool_binop_done:;
      if (__pyx_t_2) {
/* … */
      }
 1057:                 # Homogeneous tuple: e.g. Tuple[float, ...]
+1058:                 return tuple(
        __pyx_t_12 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1058, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_12;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_12 = 0;
        goto __pyx_L0;
+1059:                     _parse_type(field, type_args[0], datum, None, False)
static PyObject *__pyx_pf_9datamodel_10converters_18_parse_typing_type_genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_3_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __pyx_cur_scope = (struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_3_genexpr *)__pyx_tp_new_9datamodel_10converters___pyx_scope_struct_3_genexpr(__pyx_mstate_global->__pyx_ptype_9datamodel_10converters___pyx_scope_struct_3_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_3_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 1059, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_2___pyx_f_9datamodel_10converters__parse_typing_type *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9datamodel_10converters_18_parse_typing_type_2generator1, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_parse_typing_type_locals_genexp, __pyx_mstate_global->__pyx_n_u_datamodel_converters); if (unlikely(!gen)) __PYX_ERR(0, 1059, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("datamodel.converters._parse_typing_type.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_9datamodel_10converters_18_parse_typing_type_2generator1(__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 != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 1059, __pyx_L1_error)
  }
/* … */
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_field)) { __Pyx_RaiseClosureNameError("field"); __PYX_ERR(0, 1059, __pyx_L1_error) }
    __pyx_t_4 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_field;
    __Pyx_INCREF(__pyx_t_4);
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_type_args)) { __Pyx_RaiseClosureNameError("type_args"); __PYX_ERR(0, 1059, __pyx_L1_error) }
    if (unlikely(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_type_args == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
      __PYX_ERR(0, 1059, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_type_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1059, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7.__pyx_n = 2;
    __pyx_t_7.encoder = Py_None;
    __pyx_t_7.as_objects = Py_False;
    __pyx_t_6 = __pyx_f_9datamodel_10converters__parse_type(__pyx_t_4, __pyx_t_5, __pyx_cur_scope->__pyx_v_datum, &__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1059, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 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_cur_scope->__pyx_t_2 = __pyx_t_3;
    __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;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1059, __pyx_L1_error)
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #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_9datamodel_10converters_18_parse_typing_type_5generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
/* … */
        __pyx_t_1 = __pyx_pf_9datamodel_10converters_18_parse_typing_type_genexpr(((PyObject*)__pyx_cur_scope), __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1059, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
/* … */
struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_3_genexpr {
  PyObject_HEAD
  struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_2___pyx_f_9datamodel_10converters__parse_typing_type *__pyx_outer_scope;
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_datum;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};

+1060:                     for datum in data
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 1060, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1060, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1060, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1060, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1060, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1060, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1060, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_datum);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_datum, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
 1061:                 )
+1062:             elif len(data) == len(type_args):
      __pyx_t_7 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1062, __pyx_L1_error)
      __pyx_t_12 = __pyx_cur_scope->__pyx_v_type_args;
      __Pyx_INCREF(__pyx_t_12);
      if (unlikely(__pyx_t_12 == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
        __PYX_ERR(0, 1062, __pyx_L1_error)
      }
      __pyx_t_6 = __Pyx_PyTuple_GET_SIZE(__pyx_t_12); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1062, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_2 = (__pyx_t_7 == __pyx_t_6);



      if (__pyx_t_2) {
/* … */
      }
 1063:                 # Heterogeneous tuple: Convert each element to its corresponding type
+1064:                 return tuple(
        __pyx_t_12 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1064, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_12;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_12 = 0;
        goto __pyx_L0;
+1065:                     _parse_type(field, typ, datum, encoder, False)
static PyObject *__pyx_pf_9datamodel_10converters_18_parse_typing_type_3genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_4_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __pyx_cur_scope = (struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_4_genexpr *)__pyx_tp_new_9datamodel_10converters___pyx_scope_struct_4_genexpr(__pyx_mstate_global->__pyx_ptype_9datamodel_10converters___pyx_scope_struct_4_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_4_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 1065, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_2___pyx_f_9datamodel_10converters__parse_typing_type *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9datamodel_10converters_18_parse_typing_type_5generator2, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_parse_typing_type_locals_genexp, __pyx_mstate_global->__pyx_n_u_datamodel_converters); if (unlikely(!gen)) __PYX_ERR(0, 1065, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("datamodel.converters._parse_typing_type.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_9datamodel_10converters_18_parse_typing_type_5generator2(__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 != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 1065, __pyx_L1_error)
  }
/* … */
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_field)) { __Pyx_RaiseClosureNameError("field"); __PYX_ERR(0, 1065, __pyx_L1_error) }
    __pyx_t_4 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_field;
    __Pyx_INCREF(__pyx_t_4);
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_encoder)) { __Pyx_RaiseClosureNameError("encoder"); __PYX_ERR(0, 1065, __pyx_L1_error) }
    __pyx_t_6 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_encoder;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_9.__pyx_n = 2;
    __pyx_t_9.encoder = __pyx_t_6;
    __pyx_t_9.as_objects = Py_False;
    __pyx_t_5 = __pyx_f_9datamodel_10converters__parse_type(__pyx_t_4, __pyx_cur_scope->__pyx_v_typ, __pyx_cur_scope->__pyx_v_datum, &__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1065, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 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_cur_scope->__pyx_t_2 = __pyx_t_3;
    __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_L8_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;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1065, __pyx_L1_error)
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #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_1 = __pyx_pf_9datamodel_10converters_18_parse_typing_type_3genexpr(((PyObject*)__pyx_cur_scope), __pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1065, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_4_genexpr {
  PyObject_HEAD
  struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_2___pyx_f_9datamodel_10converters__parse_typing_type *__pyx_outer_scope;
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_datum;
  PyObject *__pyx_v_typ;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};

+1066:                     for typ, datum in zip(type_args, data)
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 1066, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1066, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1066, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1066, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1066, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1066, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1066, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      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, 1066, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);
        __Pyx_INCREF(__pyx_t_5);
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1);
        __Pyx_INCREF(__pyx_t_6);
      } else {
        __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1066, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference);
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1066, __pyx_L1_error)
        __Pyx_XGOTREF(__pyx_t_6);
      }
      #else
      __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1066, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1066, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1066, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_8 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_7);
      index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < (0)) __PYX_ERR(0, 1066, __pyx_L1_error)
      __pyx_t_8 = NULL;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 1066, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_typ);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_typ, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_datum);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_datum, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_6 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
/* … */
        __pyx_t_1 = NULL;
        __pyx_t_14 = 1;
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_cur_scope->__pyx_v_type_args, __pyx_v_data};
          __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_zip, __pyx_callargs+__pyx_t_14, (3-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1066, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_12);
        }
 1067:                 )
+1068:             elif len(type_args) > 0:
      __pyx_t_12 = __pyx_cur_scope->__pyx_v_type_args;
      __Pyx_INCREF(__pyx_t_12);
      if (unlikely(__pyx_t_12 == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
        __PYX_ERR(0, 1068, __pyx_L1_error)
      }
      __pyx_t_6 = __Pyx_PyTuple_GET_SIZE(__pyx_t_12); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1068, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_2 = (__pyx_t_6 > 0);


      if (unlikely(__pyx_t_2)) {
/* … */
      }
 1069:                 # Length mismatch but we have type arguments - try to convert what we can
+1070:                 error = f"Tuple length mismatch for {field.name}: expected {len(type_args)}, got {len(data)}"
        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1070, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_t_12, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1070, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_t_12 = __pyx_cur_scope->__pyx_v_type_args;
        __Pyx_INCREF(__pyx_t_12);
        if (unlikely(__pyx_t_12 == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
          __PYX_ERR(0, 1070, __pyx_L1_error)
        }
        __pyx_t_6 = __Pyx_PyTuple_GET_SIZE(__pyx_t_12); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1070, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_t_12 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_6, 0, ' ', 'd'); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1070, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);

        __pyx_t_6 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1070, __pyx_L1_error)
        __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_6, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1070, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);

        __pyx_t_15[0] = __pyx_mstate_global->__pyx_kp_u_Tuple_length_mismatch_for;
        __pyx_t_15[1] = __pyx_t_1;
        __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u_expected;
        __pyx_t_15[3] = __pyx_t_12;
        __pyx_t_15[4] = __pyx_mstate_global->__pyx_kp_u_got;
        __pyx_t_15[5] = __pyx_t_5;
        __pyx_t_6 = 43;
        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
        __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15[3]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15[5]);
        #endif
        __pyx_t_8 = 0;
        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
        __pyx_t_8 |= __Pyx_PyUnicode_KIND_04(__pyx_t_15[1]);
        #endif
        __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_15, 6, __pyx_t_6, __pyx_t_8);
        if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1070, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_v_error = ((PyObject*)__pyx_t_9);
        __pyx_t_9 = 0;
+1071:                 raise ValueError(error)
        __pyx_t_5 = NULL;
        __pyx_t_14 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_error};
          __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_14, (2-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1071, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
        }
        __Pyx_Raise(__pyx_t_9, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __PYX_ERR(0, 1071, __pyx_L1_error)
 1072:         # If we can't process it, just return as-is
+1073:         return tuple(data) if not isinstance(data, tuple) else data
    __pyx_t_2 = PyTuple_Check(__pyx_v_data); 
    __pyx_t_3 = (!__pyx_t_2);


    if (__pyx_t_3) {
      __pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_v_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1073, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_9 = __pyx_t_5;
      __pyx_t_5 = 0;
    } else {
      __Pyx_INCREF(__pyx_v_data);
      __pyx_t_9 = __pyx_v_data;
    }

    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_9;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_9 = 0;
    goto __pyx_L0;
 1074: 
+1075:     if name in {'List', 'Sequence'} or field.origin in {list, Sequence}:
  __Pyx_INCREF(__pyx_v_name);
  __pyx_t_9 = __pyx_v_name;
  __pyx_t_4 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_List, Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1075, __pyx_L1_error)
  if (!__pyx_t_4) {

  } else {

    __pyx_t_2 = __pyx_t_4;

    goto __pyx_L31_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_Sequence, Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1075, __pyx_L1_error)

  __pyx_t_2 = __pyx_t_4;

  __pyx_L31_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_4 = __pyx_t_2;


  if (!__pyx_t_4) {

  } else {

    __pyx_t_3 = __pyx_t_4;

    goto __pyx_L29_bool_binop_done;
  }
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_field, __pyx_mstate_global->__pyx_n_u_origin_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_2 = __Pyx_PyObject_RichCompareBool(__pyx_t_9, ((PyObject *)(&PyList_Type)), Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1075, __pyx_L1_error)
  if (!__pyx_t_2) {

  } else {

    __pyx_t_4 = __pyx_t_2;

    goto __pyx_L33_bool_binop_done;
  }
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Sequence); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyObject_CompareBoolEq_object_object(__pyx_t_9, __pyx_t_5, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1075, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  __pyx_t_4 = __pyx_t_2;

  __pyx_L33_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_2 = __pyx_t_4;



  __pyx_t_3 = __pyx_t_2;

  __pyx_L29_bool_binop_done:;
  if (__pyx_t_3) {
/* … */
  }
+1076:         if not isinstance(data, (list, tuple)):
    __pyx_t_2 = PyList_Check(__pyx_v_data); 
    if (!__pyx_t_2) {

    } else {

      __pyx_t_3 = __pyx_t_2;

      goto __pyx_L36_bool_binop_done;
    }
    __pyx_t_2 = PyTuple_Check(__pyx_v_data); 

    __pyx_t_3 = __pyx_t_2;

    __pyx_L36_bool_binop_done:;
    __pyx_t_2 = (!__pyx_t_3);


    if (__pyx_t_2) {
/* … */
    }
+1077:             data = [data]
      __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1077, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_v_data);
      __Pyx_GIVEREF(__pyx_v_data);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_9, 0, __pyx_v_data) != (0)) __PYX_ERR(0, 1077, __pyx_L1_error);
      __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_9);
      __pyx_t_9 = 0;
+1078:         return _parse_list_typing(
    __pyx_t_16.__pyx_n = 1;
    __pyx_t_16.as_objects = __pyx_v_as_objects;
    __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_list_typing(__pyx_t_9, ((PyObject*)__pyx_t_5), __pyx_v_data, __pyx_t_12, __pyx_v_origin, __pyx_v_args, &__pyx_t_16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1078, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_1;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_1 = 0;
    goto __pyx_L0;
+1079:             field,
    __pyx_t_9 = __pyx_cur_scope->__pyx_v_field;
    __Pyx_INCREF(__pyx_t_9);
+1080:             type_args,
    __pyx_t_5 = __pyx_cur_scope->__pyx_v_type_args;
    __Pyx_INCREF(__pyx_t_5);
 1081:             data,
+1082:             encoder,
    __pyx_t_12 = __pyx_cur_scope->__pyx_v_encoder;
    __Pyx_INCREF(__pyx_t_12);
 1083:             origin,
 1084:             args,
 1085:             as_objects=as_objects
 1086:         )
 1087: 
 1088:     # handle None, Optional, Union:
+1089:     if name is None or name in ('Optional', 'Union'):
  __pyx_t_3 = (__pyx_v_name == Py_None);
  if (!__pyx_t_3) {

  } else {

    __pyx_t_2 = __pyx_t_3;

    goto __pyx_L39_bool_binop_done;
  }
  __Pyx_INCREF(__pyx_v_name);
  __pyx_t_1 = __pyx_v_name;
  __pyx_t_4 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_Optional, Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1089, __pyx_L1_error)
  if (!__pyx_t_4) {

  } else {

    __pyx_t_3 = __pyx_t_4;

    goto __pyx_L41_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_Union, Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1089, __pyx_L1_error)

  __pyx_t_3 = __pyx_t_4;

  __pyx_L41_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __pyx_t_3;



  __pyx_t_2 = __pyx_t_4;

  __pyx_L39_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
+1090:         return _parse_optional_union(field, T, data, encoder, origin, args)
    __pyx_t_1 = __pyx_cur_scope->__pyx_v_field;
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_12 = __pyx_cur_scope->__pyx_v_encoder;
    __Pyx_INCREF(__pyx_t_12);
    __pyx_t_5 = __pyx_f_9datamodel_10converters__parse_optional_union(__pyx_t_1, __pyx_v_T, __pyx_v_data, __pyx_t_12, __pyx_v_origin, __pyx_v_args); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_5;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_5 = 0;
    goto __pyx_L0;
 1091: 
+1092:     return data
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __Pyx_INCREF(__pyx_v_data);
      __pyx_r = __pyx_v_data;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  goto __pyx_L0;
 1093: 
+1094: cdef object _parse_list_typing(
static PyObject *__pyx_f_9datamodel_10converters__parse_list_typing(PyObject *__pyx_v_field, PyObject *__pyx_v_type_args, PyObject *__pyx_v_data, PyObject *__pyx_v_encoder, CYTHON_UNUSED PyObject *__pyx_v_origin, CYTHON_UNUSED PyObject *__pyx_v_args, struct __pyx_opt_args_9datamodel_10converters__parse_list_typing *__pyx_optional_args) {
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_v_processed_sublist = 0;
  CYTHON_UNUSED PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_arg_type = 0;
  PyObject *__pyx_v_arg_module = 0;
  int __pyx_v_is_nested_typing;
  PyObject *__pyx_v_subT = NULL;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_v_inner_type = NULL;
  PyObject *__pyx_v_sublist = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_v_processed_item = NULL;
  PyObject *__pyx_v_d = NULL;
  PyObject *__pyx_v_a = NULL;
  PyObject *__pyx_r = NULL;
  if (__pyx_optional_args) {
  }
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("datamodel.converters._parse_list_typing", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_processed_sublist);
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XDECREF(__pyx_v_arg_type);
  __Pyx_XDECREF(__pyx_v_arg_module);

  __Pyx_XDECREF(__pyx_v_subT);
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XDECREF(__pyx_v_inner_type);
  __Pyx_XDECREF(__pyx_v_sublist);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XDECREF(__pyx_v_processed_item);
  __Pyx_XDECREF(__pyx_v_d);
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_9datamodel_10converters__parse_list_typing {
  int __pyx_n;
  PyObject *as_objects;
  PyObject *typeinfo;
};
 1095:     object field,
 1096:     tuple type_args,
 1097:     object data,
 1098:     object encoder,
 1099:     object origin,
 1100:     object args,
 1101:     object as_objects=False,
 1102:     dict typeinfo=None
 1103: ):
 1104:     """
 1105:     Handle List[T] logic, trying to reduce overhead from repeated lookups.
 1106:     """
+1107:     cdef list result = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_result = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+1108:     cdef list processed_sublist = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_processed_sublist = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+1109:     cdef list out = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_out = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+1110:     cdef object arg_type = type_args[0] if type_args else None
  if (__pyx_v_type_args == Py_None) __pyx_t_2 = 0;
  else
  {
    Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_v_type_args);
    if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 1110, __pyx_L1_error)
    __pyx_t_2 = (__pyx_temp != 0);
  }

  if (__pyx_t_2) {
    if (unlikely(__pyx_v_type_args == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
      __PYX_ERR(0, 1110, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_type_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_1 = Py_None;
  }

  __pyx_v_arg_type = __pyx_t_1;
  __pyx_t_1 = 0;
+1111:     cdef object arg_module = getattr(arg_type, '__module__', None)
  __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_arg_type, __pyx_mstate_global->__pyx_n_u_module, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_arg_module = __pyx_t_1;
  __pyx_t_1 = 0;
+1112:     cdef bint is_nested_typing = (arg_module == 'typing')
  __pyx_t_1 = __Pyx_PyObject_CompareEq_object_str(__pyx_v_arg_module, __pyx_mstate_global->__pyx_n_u_typing, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1112, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1112, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_is_nested_typing = __pyx_t_2;
 1113: 
 1114:     # If no type args, we can't proceed with further logic
+1115:     if not type_args:
  if (__pyx_v_type_args == Py_None) __pyx_t_2 = 0;
  else
  {
    Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_v_type_args);
    if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 1115, __pyx_L1_error)
    __pyx_t_2 = (__pyx_temp != 0);
  }

  __pyx_t_4 = (!__pyx_t_2);


  if (__pyx_t_4) {
/* … */
  }
+1116:         return data
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_data);
        __pyx_r = __pyx_v_data;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 1117: 
+1118:     if is_nested_typing:
  if (__pyx_v_is_nested_typing) {
/* … */
  }
 1119:         # nested typing: e.g. List[List[Foo]] or List[Optional[Foo]] etc.
+1120:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
      __pyx_L7_except_error:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L1_error;
      __pyx_L9_try_return:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L0;
      __pyx_L8_except_return:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L0;
    }
+1121:             subT = arg_type.__args__[0]
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_type, __pyx_mstate_global->__pyx_n_u_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1121, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1121, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_subT = __pyx_t_3;
        __pyx_t_3 = 0;
+1122:             if is_dc(subT):
        __pyx_t_4 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_subT); if (unlikely(__pyx_t_4 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1122, __pyx_L5_error)
        if (__pyx_t_4) {
/* … */
        }
+1123:                 for x in data:
          if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
            __pyx_t_3 = __pyx_v_data; __Pyx_INCREF(__pyx_t_3);
            __pyx_t_8 = 0;
            __pyx_t_9 = NULL;
          } else {
            __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1123, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1123, __pyx_L5_error)
          }
          for (;;) {
            if (likely(!__pyx_t_9)) {
              if (likely(PyList_CheckExact(__pyx_t_3))) {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1123, __pyx_L5_error)
                  #endif
                  if (__pyx_t_8 >= __pyx_temp) break;
                }
                __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
                ++__pyx_t_8;
              } else {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1123, __pyx_L5_error)
                  #endif
                  if (__pyx_t_8 >= __pyx_temp) break;
                }
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8));
                #else
                __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_8);
                #endif
                ++__pyx_t_8;
              }
              if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1123, __pyx_L5_error)
            } else {
              __pyx_t_1 = __pyx_t_9(__pyx_t_3);
              if (unlikely(!__pyx_t_1)) {
                PyObject* exc_type = PyErr_Occurred();
                if (exc_type) {
                  if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1123, __pyx_L5_error)
                  PyErr_Clear();
                }
                break;
              }
            }
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_1);
            __pyx_t_1 = 0;
/* … */
          }
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1124:                     result.append(_instantiate_dataclass(subT, x))
            __pyx_t_1 = __pyx_f_9datamodel_10converters__instantiate_dataclass(__pyx_v_subT, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1124, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1124, __pyx_L5_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

+1125:                 return result
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __Pyx_INCREF(__pyx_v_result);
              __pyx_r = __pyx_v_result;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          goto __pyx_L9_try_return;
+1126:             elif field._inner_origin is list:
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_origin); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1126, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = (__pyx_t_3 == ((PyObject *)(&PyList_Type)));
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (__pyx_t_4) {
/* … */
        }
+1127:                 inner_type = subT
          __Pyx_INCREF(__pyx_v_subT);
          __pyx_v_inner_type = __pyx_v_subT;
+1128:                 for sublist in data:
          if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
            __pyx_t_3 = __pyx_v_data; __Pyx_INCREF(__pyx_t_3);
            __pyx_t_8 = 0;
            __pyx_t_9 = NULL;
          } else {
            __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1128, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1128, __pyx_L5_error)
          }
          for (;;) {
            if (likely(!__pyx_t_9)) {
              if (likely(PyList_CheckExact(__pyx_t_3))) {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1128, __pyx_L5_error)
                  #endif
                  if (__pyx_t_8 >= __pyx_temp) break;
                }
                __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
                ++__pyx_t_8;
              } else {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1128, __pyx_L5_error)
                  #endif
                  if (__pyx_t_8 >= __pyx_temp) break;
                }
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8));
                #else
                __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_8);
                #endif
                ++__pyx_t_8;
              }
              if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1128, __pyx_L5_error)
            } else {
              __pyx_t_1 = __pyx_t_9(__pyx_t_3);
              if (unlikely(!__pyx_t_1)) {
                PyObject* exc_type = PyErr_Occurred();
                if (exc_type) {
                  if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1128, __pyx_L5_error)
                  PyErr_Clear();
                }
                break;
              }
            }
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_XDECREF_SET(__pyx_v_sublist, __pyx_t_1);
            __pyx_t_1 = 0;
/* … */
          }
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1129:                     if not isinstance(sublist, (list, tuple)):
            __pyx_t_2 = PyList_Check(__pyx_v_sublist); 
            if (!__pyx_t_2) {

            } else {

              __pyx_t_4 = __pyx_t_2;

              goto __pyx_L18_bool_binop_done;
            }
            __pyx_t_2 = PyTuple_Check(__pyx_v_sublist); 

            __pyx_t_4 = __pyx_t_2;

            __pyx_L18_bool_binop_done:;
            __pyx_t_2 = (!__pyx_t_4);


            if (__pyx_t_2) {
/* … */
            }
 1130:                         # Convert single items to lists if needed
+1131:                         sublist = [sublist]
              __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1131, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_INCREF(__pyx_v_sublist);
              __Pyx_GIVEREF(__pyx_v_sublist);
              if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_sublist) != (0)) __PYX_ERR(0, 1131, __pyx_L5_error);
              __Pyx_DECREF_SET(__pyx_v_sublist, __pyx_t_1);
              __pyx_t_1 = 0;
+1132:                     processed_sublist = []
            __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1132, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF_SET(__pyx_v_processed_sublist, ((PyObject*)__pyx_t_1));
            __pyx_t_1 = 0;
+1133:                     for item in sublist:
            if (likely(PyList_CheckExact(__pyx_v_sublist)) || PyTuple_CheckExact(__pyx_v_sublist)) {
              __pyx_t_1 = __pyx_v_sublist; __Pyx_INCREF(__pyx_t_1);
              __pyx_t_11 = 0;
              __pyx_t_12 = NULL;
            } else {
              __pyx_t_11 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_sublist); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1133, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_12 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1133, __pyx_L5_error)
            }
            for (;;) {
              if (likely(!__pyx_t_12)) {
                if (likely(PyList_CheckExact(__pyx_t_1))) {
                  {
                    Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
                    #if !CYTHON_ASSUME_SAFE_SIZE
                    if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1133, __pyx_L5_error)
                    #endif
                    if (__pyx_t_11 >= __pyx_temp) break;
                  }
                  __pyx_t_13 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_11, __Pyx_ReferenceSharing_OwnStrongReference);
                  ++__pyx_t_11;
                } else {
                  {
                    Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
                    #if !CYTHON_ASSUME_SAFE_SIZE
                    if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1133, __pyx_L5_error)
                    #endif
                    if (__pyx_t_11 >= __pyx_temp) break;
                  }
                  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                  __pyx_t_13 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_11));
                  #else
                  __pyx_t_13 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_11);
                  #endif
                  ++__pyx_t_11;
                }
                if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1133, __pyx_L5_error)
              } else {
                __pyx_t_13 = __pyx_t_12(__pyx_t_1);
                if (unlikely(!__pyx_t_13)) {
                  PyObject* exc_type = PyErr_Occurred();
                  if (exc_type) {
                    if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1133, __pyx_L5_error)
                    PyErr_Clear();
                  }
                  break;
                }
              }
              __Pyx_GOTREF(__pyx_t_13);
              __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_13);
              __pyx_t_13 = 0;
/* … */
            }
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 1134:                         # Convert each item to the expected inner type
+1135:                         if is_primitive(inner_type):
              __pyx_t_14 = NULL;
              __Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_is_primitive); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1135, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_15);
              __pyx_t_16 = 1;
              #if CYTHON_UNPACK_METHODS
              if (unlikely(PyMethod_Check(__pyx_t_15))) {
                __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_15);
                assert(__pyx_t_14);
                PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15);
                __Pyx_INCREF(__pyx_t_14);
                __Pyx_INCREF(__pyx__function);
                __Pyx_DECREF_SET(__pyx_t_15, __pyx__function);
                __pyx_t_16 = 0;
              }
              #endif
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_v_inner_type};
                __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_16, (2-__pyx_t_16) | (__pyx_t_16*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1135, __pyx_L5_error)
                __Pyx_GOTREF(__pyx_t_13);
              }
              __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1135, __pyx_L5_error)
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              if (__pyx_t_2) {
/* … */
                goto __pyx_L22;
              }
+1136:                             if inner_type == int and isinstance(item, str):
                __pyx_t_4 = __Pyx_PyObject_RichCompareBool(__pyx_v_inner_type, ((PyObject *)(&PyLong_Type)), Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1136, __pyx_L5_error)
                if (__pyx_t_4) {

                } else {

                  __pyx_t_2 = __pyx_t_4;

                  goto __pyx_L24_bool_binop_done;
                }
                __pyx_t_4 = PyUnicode_Check(__pyx_v_item); 

                __pyx_t_2 = __pyx_t_4;

                __pyx_L24_bool_binop_done:;
                if (__pyx_t_2) {
/* … */
                  goto __pyx_L23;
                }
+1137:                                 processed_sublist.append(int(item))
                  __pyx_t_13 = __Pyx_PyNumber_Int(__pyx_v_item); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1137, __pyx_L5_error)
                  __Pyx_GOTREF(__pyx_t_13);
                  __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_processed_sublist, __pyx_t_13); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1137, __pyx_L5_error)
                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

+1138:                             elif inner_type == float and isinstance(item, str):
                __pyx_t_4 = __Pyx_PyObject_RichCompareBool(__pyx_v_inner_type, ((PyObject *)(&PyFloat_Type)), Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1138, __pyx_L5_error)
                if (__pyx_t_4) {

                } else {

                  __pyx_t_2 = __pyx_t_4;

                  goto __pyx_L26_bool_binop_done;
                }
                __pyx_t_4 = PyUnicode_Check(__pyx_v_item); 

                __pyx_t_2 = __pyx_t_4;

                __pyx_L26_bool_binop_done:;
                if (__pyx_t_2) {
/* … */
                  goto __pyx_L23;
                }
+1139:                                 processed_sublist.append(float(item))
                  __pyx_t_13 = __Pyx_PyNumber_Float(__pyx_v_item); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1139, __pyx_L5_error)
                  __Pyx_GOTREF(__pyx_t_13);
                  if (__Pyx_PyFloat_FromNumber(&__pyx_t_13, NULL, 0) < (0)) __PYX_ERR(0, 1139, __pyx_L5_error)
                  __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_processed_sublist, __pyx_t_13); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1139, __pyx_L5_error)
                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

 1140:                             else:
+1141:                                 processed_sublist.append(item)
                /*else*/ {
                  __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_processed_sublist, __pyx_v_item); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1141, __pyx_L5_error)

                }
                __pyx_L23:;
 1142:                         else:
+1143:                             processed_sublist.append(_parse_type(field, inner_type, item, encoder, False))
              /*else*/ {
                __pyx_t_17.__pyx_n = 2;
                __pyx_t_17.encoder = __pyx_v_encoder;
                __pyx_t_17.as_objects = Py_False;
                __pyx_t_13 = __pyx_f_9datamodel_10converters__parse_type(__pyx_v_field, __pyx_v_inner_type, __pyx_v_item, &__pyx_t_17); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1143, __pyx_L5_error)
                __Pyx_GOTREF(__pyx_t_13);
                __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_processed_sublist, __pyx_t_13); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1143, __pyx_L5_error)
                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

              }
              __pyx_L22:;
+1144:                     result.append(processed_sublist)
            __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_processed_sublist); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1144, __pyx_L5_error)

+1145:                 return result
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __Pyx_INCREF(__pyx_v_result);
              __pyx_r = __pyx_v_result;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          goto __pyx_L9_try_return;
 1146:             # Handle List[Optional[T]] or List[Union[...]]
+1147:             elif is_union(field._inner_origin):
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_origin); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1147, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_2 = __pyx_f_9datamodel_10converters_is_union(__pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1147, __pyx_L5_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (__pyx_t_2) {
/* … */
        }
+1148:                 for item in data:
          if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
            __pyx_t_3 = __pyx_v_data; __Pyx_INCREF(__pyx_t_3);
            __pyx_t_8 = 0;
            __pyx_t_9 = NULL;
          } else {
            __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1148, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1148, __pyx_L5_error)
          }
          for (;;) {
            if (likely(!__pyx_t_9)) {
              if (likely(PyList_CheckExact(__pyx_t_3))) {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1148, __pyx_L5_error)
                  #endif
                  if (__pyx_t_8 >= __pyx_temp) break;
                }
                __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
                ++__pyx_t_8;
              } else {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1148, __pyx_L5_error)
                  #endif
                  if (__pyx_t_8 >= __pyx_temp) break;
                }
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8));
                #else
                __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_8);
                #endif
                ++__pyx_t_8;
              }
              if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1148, __pyx_L5_error)
            } else {
              __pyx_t_1 = __pyx_t_9(__pyx_t_3);
              if (unlikely(!__pyx_t_1)) {
                PyObject* exc_type = PyErr_Occurred();
                if (exc_type) {
                  if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1148, __pyx_L5_error)
                  PyErr_Clear();
                }
                break;
              }
            }
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_1);
            __pyx_t_1 = 0;
/* … */
          }
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1149:                     processed_item = _parse_typing(field, arg_type, item, encoder, False)
            __pyx_t_18.__pyx_n = 2;
            __pyx_t_18.encoder = __pyx_v_encoder;
            __pyx_t_18.as_objects = Py_False;
            __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_typing(__pyx_v_field, __pyx_v_arg_type, __pyx_v_item, &__pyx_t_18); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1149, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_XDECREF_SET(__pyx_v_processed_item, __pyx_t_1);
            __pyx_t_1 = 0;
+1150:                     result.append(processed_item)
            __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_processed_item); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1150, __pyx_L5_error)

+1151:                 return result
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __Pyx_INCREF(__pyx_v_result);
              __pyx_r = __pyx_v_result;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          goto __pyx_L9_try_return;
 1152:             else:
 1153:                 # fallback
+1154:                 return data
        /*else*/ {
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __Pyx_INCREF(__pyx_v_data);
              __pyx_r = __pyx_v_data;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          goto __pyx_L9_try_return;
        }
+1155:         except AttributeError:
      __pyx_t_19 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_AttributeError))));
      if (__pyx_t_19) {
        __Pyx_ErrRestore(0,0,0);
+1156:             return data
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __Pyx_INCREF(__pyx_v_data);
            __pyx_r = __pyx_v_data;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        goto __pyx_L8_except_return;
      }
      goto __pyx_L7_except_error;
+1157:     elif arg_type is not None and is_dc(arg_type):
  __pyx_t_4 = (__pyx_v_arg_type != Py_None);
  if (__pyx_t_4) {

  } else {

    __pyx_t_2 = __pyx_t_4;

    goto __pyx_L35_bool_binop_done;
  }
  __pyx_t_4 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_arg_type); if (unlikely(__pyx_t_4 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1157, __pyx_L1_error)

  __pyx_t_2 = __pyx_t_4;

  __pyx_L35_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
 1158:         # build list of dataclasses
+1159:         for d in data:
    if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
      __pyx_t_3 = __pyx_v_data; __Pyx_INCREF(__pyx_t_3);
      __pyx_t_8 = 0;
      __pyx_t_9 = NULL;
    } else {
      __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1159, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1159, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_9)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1159, __pyx_L1_error)
            #endif
            if (__pyx_t_8 >= __pyx_temp) break;
          }
          __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_8;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1159, __pyx_L1_error)
            #endif
            if (__pyx_t_8 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8));
          #else
          __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_8);
          #endif
          ++__pyx_t_8;
        }
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1159, __pyx_L1_error)
      } else {
        __pyx_t_1 = __pyx_t_9(__pyx_t_3);
        if (unlikely(!__pyx_t_1)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1159, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_d, __pyx_t_1);
      __pyx_t_1 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1160:             result.append(_instantiate_dataclass(arg_type, d))
      __pyx_t_1 = __pyx_f_9datamodel_10converters__instantiate_dataclass(__pyx_v_arg_type, __pyx_v_d); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1160, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1160, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

+1161:         return result
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_result);
        __pyx_r = __pyx_v_result;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+1162:     elif is_primitive(arg_type):
  __pyx_t_1 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_is_primitive); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_16 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_13))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_13);
    assert(__pyx_t_1);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_13);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_13, __pyx__function);
    __pyx_t_16 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_arg_type};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_13, __pyx_callargs+__pyx_t_16, (2-__pyx_t_16) | (__pyx_t_16*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1162, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_2) {
/* … */
  }
 1163:         # For simple primitive types, don't create nested lists
+1164:         result = []
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1164, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 0;
+1165:         for item in data:
    if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
      __pyx_t_3 = __pyx_v_data; __Pyx_INCREF(__pyx_t_3);
      __pyx_t_8 = 0;
      __pyx_t_9 = NULL;
    } else {
      __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1165, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1165, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_9)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1165, __pyx_L1_error)
            #endif
            if (__pyx_t_8 >= __pyx_temp) break;
          }
          __pyx_t_13 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_8;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1165, __pyx_L1_error)
            #endif
            if (__pyx_t_8 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_13 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8));
          #else
          __pyx_t_13 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_8);
          #endif
          ++__pyx_t_8;
        }
        if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1165, __pyx_L1_error)
      } else {
        __pyx_t_13 = __pyx_t_9(__pyx_t_3);
        if (unlikely(!__pyx_t_13)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1165, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_13);
      __pyx_t_13 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 1166:             # Convert the item to the expected type
+1167:             if arg_type == int and isinstance(item, str):
      __pyx_t_4 = __Pyx_PyObject_RichCompareBool(__pyx_v_arg_type, ((PyObject *)(&PyLong_Type)), Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1167, __pyx_L1_error)
      if (__pyx_t_4) {

      } else {

        __pyx_t_2 = __pyx_t_4;

        goto __pyx_L43_bool_binop_done;
      }
      __pyx_t_4 = PyUnicode_Check(__pyx_v_item); 

      __pyx_t_2 = __pyx_t_4;

      __pyx_L43_bool_binop_done:;
      if (__pyx_t_2) {
/* … */
        goto __pyx_L42;
      }
+1168:                 result.append(int(item))
        __pyx_t_13 = __Pyx_PyNumber_Int(__pyx_v_item); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1168, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_13); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1168, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

+1169:             elif arg_type == float and isinstance(item, str):
      __pyx_t_4 = __Pyx_PyObject_RichCompareBool(__pyx_v_arg_type, ((PyObject *)(&PyFloat_Type)), Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1169, __pyx_L1_error)
      if (__pyx_t_4) {

      } else {

        __pyx_t_2 = __pyx_t_4;

        goto __pyx_L45_bool_binop_done;
      }
      __pyx_t_4 = PyUnicode_Check(__pyx_v_item); 

      __pyx_t_2 = __pyx_t_4;

      __pyx_L45_bool_binop_done:;
      if (__pyx_t_2) {
/* … */
        goto __pyx_L42;
      }
+1170:                 result.append(float(item))
        __pyx_t_13 = __Pyx_PyNumber_Float(__pyx_v_item); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1170, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        if (__Pyx_PyFloat_FromNumber(&__pyx_t_13, NULL, 0) < (0)) __PYX_ERR(0, 1170, __pyx_L1_error)
        __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_13); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1170, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

+1171:             elif arg_type == str:
      __pyx_t_2 = __Pyx_PyObject_RichCompareBool(__pyx_v_arg_type, ((PyObject *)(&PyUnicode_Type)), Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1171, __pyx_L1_error)
      if (__pyx_t_2) {
/* … */
        goto __pyx_L42;
      }
+1172:                 result.append(str(item))
        __pyx_t_13 = __Pyx_PyObject_Unicode(__pyx_v_item); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1172, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_13); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1172, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

+1173:             elif arg_type == bool:
      __pyx_t_2 = __Pyx_PyObject_RichCompareBool(__pyx_v_arg_type, ((PyObject *)(&PyBool_Type)), Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1173, __pyx_L1_error)
      if (__pyx_t_2) {
/* … */
        goto __pyx_L42;
      }
+1174:                 result.append(to_boolean(item))
        __pyx_t_13 = __pyx_f_9datamodel_10converters_to_boolean(__pyx_v_item, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_13); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1174, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

 1175:             else:
+1176:                 result.append(item)
      /*else*/ {
        __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_item); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1176, __pyx_L1_error)

      }
      __pyx_L42:;
+1177:         return result
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_result);
        __pyx_r = __pyx_v_result;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 1178:     else:
+1179:         for item in data:
  /*else*/ {
    if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
      __pyx_t_3 = __pyx_v_data; __Pyx_INCREF(__pyx_t_3);
      __pyx_t_8 = 0;
      __pyx_t_9 = NULL;
    } else {
      __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1179, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1179, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_9)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1179, __pyx_L1_error)
            #endif
            if (__pyx_t_8 >= __pyx_temp) break;
          }
          __pyx_t_13 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_8;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1179, __pyx_L1_error)
            #endif
            if (__pyx_t_8 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_13 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8));
          #else
          __pyx_t_13 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_8);
          #endif
          ++__pyx_t_8;
        }
        if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1179, __pyx_L1_error)
      } else {
        __pyx_t_13 = __pyx_t_9(__pyx_t_3);
        if (unlikely(!__pyx_t_13)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1179, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_13);
      __pyx_t_13 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
+1180:             if type(item) is arg_type:
      __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_v_item)) == __pyx_v_arg_type);
      if (__pyx_t_2) {
/* … */
        goto __pyx_L50;
      }
+1181:                 result.append(item)
        __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_item); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1181, __pyx_L1_error)

 1182:             else:
 1183:                 # Convert the item to the expected type
+1184:                 a = _parse_type(field, arg_type, item, encoder, False)
      /*else*/ {
        __pyx_t_17.__pyx_n = 2;
        __pyx_t_17.encoder = __pyx_v_encoder;
        __pyx_t_17.as_objects = Py_False;
        __pyx_t_13 = __pyx_f_9datamodel_10converters__parse_type(__pyx_v_field, __pyx_v_arg_type, __pyx_v_item, &__pyx_t_17); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1184, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_13);
        __pyx_t_13 = 0;
+1185:                 result.append(a)
        __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_a); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1185, __pyx_L1_error)

      }
      __pyx_L50:;
+1186:     return result
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __Pyx_INCREF(__pyx_v_result);
      __pyx_r = __pyx_v_result;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  goto __pyx_L0;
 1187: 
+1188: cdef object _instantiate_dataclass(object cls, object val):
static PyObject *__pyx_f_9datamodel_10converters__instantiate_dataclass(PyObject *__pyx_v_cls, PyObject *__pyx_v_val) {
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("datamodel.converters._instantiate_dataclass", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9datamodel_10converters_21_parse_optional_union_2generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
 1189:     """
 1190:     Helper for instantiating a dataclass.
 1191:     """
+1192:     if is_dc(val):
  __pyx_t_1 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_val); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1192, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+1193:         return val
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_val);
        __pyx_r = __pyx_v_val;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+1194:     if isinstance(val, dict):
  __pyx_t_1 = PyDict_Check(__pyx_v_val); 
  if (__pyx_t_1) {
/* … */
  }
+1195:         return cls(**val)
    if (unlikely(__pyx_v_val == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
      __PYX_ERR(0, 1195, __pyx_L1_error)
    }
    if (likely(PyDict_CheckExact(__pyx_v_val))) {
      __pyx_t_2 = PyDict_Copy(__pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1195, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_val); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1195, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_cls, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_3;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_3 = 0;
    goto __pyx_L0;
+1196:     elif isinstance(val, (list, tuple)):
  __pyx_t_4 = PyList_Check(__pyx_v_val); 
  if (!__pyx_t_4) {

  } else {

    __pyx_t_1 = __pyx_t_4;

    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_4 = PyTuple_Check(__pyx_v_val); 

  __pyx_t_1 = __pyx_t_4;

  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+1197:         return cls(*val)
    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_val); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_cls, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_2;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_2 = 0;
    goto __pyx_L0;
 1198:     else:
+1199:         return cls(val)
  /*else*/ {
    __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_v_cls);
    __pyx_t_5 = __pyx_v_cls; 
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_val};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1199, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_2;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }
 1200: 
+1201: cdef object _parse_optional_union(
static PyObject *__pyx_f_9datamodel_10converters__parse_optional_union(PyObject *__pyx_v_field, PyObject *__pyx_v_T, PyObject *__pyx_v_data, PyObject *__pyx_v_encoder, PyObject *__pyx_v_origin, PyObject *__pyx_v_args) {
  PyObject *__pyx_v_non_none_arg = 0;
  PyObject *__pyx_v_t = 0;
  int __pyx_v_matched;
  PyObject *__pyx_v_non_none_origin = NULL;
  PyObject *__pyx_gb_9datamodel_10converters_21_parse_optional_union_2generator3 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_INCREF(__pyx_v_args);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_AddTraceback("datamodel.converters._parse_optional_union", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_non_none_arg);
  __Pyx_XDECREF(__pyx_v_t);

  __Pyx_XDECREF(__pyx_v_non_none_origin);
  __Pyx_XDECREF(__pyx_gb_9datamodel_10converters_21_parse_optional_union_2generator3);
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_9datamodel_10converters_17_parse_union_type_2generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
 1202:     object field,
 1203:     object T,
 1204:     object data,
 1205:     object encoder,
 1206:     object origin,
 1207:     object args
 1208: ):
 1209:     """
 1210:     Handle Optional or Union logic.
 1211:     """
 1212:     cdef object non_none_arg
+1213:     cdef object t = args[0] if args else None
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_args); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1213, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_1 = Py_None;
  }

  __pyx_v_t = __pyx_t_1;
  __pyx_t_1 = 0;
+1214:     cdef bint matched = False
  __pyx_v_matched = 0;
 1215: 
 1216:     # Safety check to avoid null pointer dereference
+1217:     if args is None or len(args) == 0:
  __pyx_t_4 = (__pyx_v_args == Py_None);
  if (!__pyx_t_4) {

  } else {

    __pyx_t_2 = __pyx_t_4;

    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = PyObject_Length(__pyx_v_args); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1217, __pyx_L1_error)
  __pyx_t_4 = (__pyx_t_5 == 0);



  __pyx_t_2 = __pyx_t_4;

  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
+1218:         return data
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_data);
        __pyx_r = __pyx_v_data;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 1219: 
 1220:     # Early exit for None values in Optional types
+1221:     if data is None and type(None) in args:
  __pyx_t_4 = (__pyx_v_data == Py_None);
  if (__pyx_t_4) {

  } else {

    __pyx_t_2 = __pyx_t_4;

    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_4 = (__Pyx_PySequence_ContainsTF(((PyObject *)Py_TYPE(Py_None)), __pyx_v_args, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1221, __pyx_L1_error)

  __pyx_t_2 = __pyx_t_4;

  __pyx_L7_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
+1222:         return None
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 1223: 
+1224:     for t in args:
  if (likely(PyList_CheckExact(__pyx_v_args)) || PyTuple_CheckExact(__pyx_v_args)) {
    __pyx_t_1 = __pyx_v_args; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1224, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1224, __pyx_L1_error)
          #endif
          if (__pyx_t_5 >= __pyx_temp) break;
        }
        __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_5, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_5;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1224, __pyx_L1_error)
          #endif
          if (__pyx_t_5 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5));
        #else
        __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_5);
        #endif
        ++__pyx_t_5;
      }
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1224, __pyx_L1_error)
    } else {
      __pyx_t_3 = __pyx_t_6(__pyx_t_1);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1224, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_t, __pyx_t_3);
    __pyx_t_3 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1225:         if t is not type(None) and PyObject_IsInstance(data, t):
    __pyx_t_4 = (__pyx_v_t != ((PyObject *)Py_TYPE(Py_None)));
    if (__pyx_t_4) {

    } else {

      __pyx_t_2 = __pyx_t_4;

      goto __pyx_L12_bool_binop_done;
    }
    __pyx_t_4 = PyObject_IsInstance(__pyx_v_data, __pyx_v_t); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1225, __pyx_L1_error)

    __pyx_t_2 = __pyx_t_4;

    __pyx_L12_bool_binop_done:;
    if (__pyx_t_2) {
/* … */
    }
 1226:             # For container types, we still need to process their contents
+1227:             if t in (list, dict, set, tuple) or get_origin(t) in (list, dict, set, tuple):
      __Pyx_INCREF(__pyx_v_t);
      __pyx_t_3 = __pyx_v_t;
      __pyx_t_7 = __Pyx_PyObject_RichCompareBool(__pyx_t_3, ((PyObject *)(&PyList_Type)), Py_EQ); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1227, __pyx_L1_error)
      if (!__pyx_t_7) {

      } else {

        __pyx_t_4 = __pyx_t_7;

        goto __pyx_L17_bool_binop_done;
      }
      __pyx_t_7 = __Pyx_PyObject_RichCompareBool(__pyx_t_3, ((PyObject *)(&PyDict_Type)), Py_EQ); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1227, __pyx_L1_error)
      if (!__pyx_t_7) {

      } else {

        __pyx_t_4 = __pyx_t_7;

        goto __pyx_L17_bool_binop_done;
      }
      __pyx_t_7 = __Pyx_PyObject_RichCompareBool(__pyx_t_3, ((PyObject *)(&PySet_Type)), Py_EQ); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1227, __pyx_L1_error)
      if (!__pyx_t_7) {

      } else {

        __pyx_t_4 = __pyx_t_7;

        goto __pyx_L17_bool_binop_done;
      }
      __pyx_t_7 = __Pyx_PyObject_RichCompareBool(__pyx_t_3, ((PyObject *)(&PyTuple_Type)), Py_EQ); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1227, __pyx_L1_error)

      __pyx_t_4 = __pyx_t_7;

      __pyx_L17_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_7 = __pyx_t_4;


      if (!__pyx_t_7) {

      } else {

        __pyx_t_2 = __pyx_t_7;

        goto __pyx_L15_bool_binop_done;
      }
      __pyx_t_8 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_get_origin); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
        assert(__pyx_t_8);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
        __pyx_t_10 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_t};
        __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1227, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __pyx_t_4 = __Pyx_PyObject_RichCompareBool(__pyx_t_3, ((PyObject *)(&PyList_Type)), Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1227, __pyx_L1_error)
      if (!__pyx_t_4) {

      } else {

        __pyx_t_7 = __pyx_t_4;

        goto __pyx_L21_bool_binop_done;
      }
      __pyx_t_4 = __Pyx_PyObject_RichCompareBool(__pyx_t_3, ((PyObject *)(&PyDict_Type)), Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1227, __pyx_L1_error)
      if (!__pyx_t_4) {

      } else {

        __pyx_t_7 = __pyx_t_4;

        goto __pyx_L21_bool_binop_done;
      }
      __pyx_t_4 = __Pyx_PyObject_RichCompareBool(__pyx_t_3, ((PyObject *)(&PySet_Type)), Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1227, __pyx_L1_error)
      if (!__pyx_t_4) {

      } else {

        __pyx_t_7 = __pyx_t_4;

        goto __pyx_L21_bool_binop_done;
      }
      __pyx_t_4 = __Pyx_PyObject_RichCompareBool(__pyx_t_3, ((PyObject *)(&PyTuple_Type)), Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1227, __pyx_L1_error)

      __pyx_t_7 = __pyx_t_4;

      __pyx_L21_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = __pyx_t_7;



      __pyx_t_2 = __pyx_t_4;

      __pyx_L15_bool_binop_done:;
      if (__pyx_t_2) {

        goto __pyx_L14;
      }
 1228:                 # Continue to process contents
 1229:                 pass
 1230:             else:
+1231:                 return data
      /*else*/ {
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __Pyx_INCREF(__pyx_v_data);
            __pyx_r = __pyx_v_data;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      __pyx_L14:;
 1232: 
 1233:     # e.g. Optional[T] is Union[T, NoneType]
+1234:     if is_union(origin) and type(None) in args:
  __pyx_t_4 = __pyx_f_9datamodel_10converters_is_union(__pyx_v_origin); if (unlikely(__pyx_t_4 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1234, __pyx_L1_error)
  if (__pyx_t_4) {

  } else {

    __pyx_t_2 = __pyx_t_4;

    goto __pyx_L27_bool_binop_done;
  }
  __pyx_t_4 = (__Pyx_PySequence_ContainsTF(((PyObject *)Py_TYPE(Py_None)), __pyx_v_args, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1234, __pyx_L1_error)

  __pyx_t_2 = __pyx_t_4;

  __pyx_L27_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
 1235:         # Pick the non-None type (assumes only two types in the Union)
+1236:         non_none_arg = args[0] if args[1] is type(None) else args[1]
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_args, 1, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = (__pyx_t_3 == ((PyObject *)Py_TYPE(Py_None)));
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_2) {
      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1236, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = __pyx_t_3;
      __pyx_t_3 = 0;
    } else {
      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_args, 1, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1236, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = __pyx_t_3;
      __pyx_t_3 = 0;
    }

    __pyx_v_non_none_arg = __pyx_t_1;
    __pyx_t_1 = 0;
+1237:         if non_none_arg is None:
    __pyx_t_2 = (__pyx_v_non_none_arg == Py_None);
    if (__pyx_t_2) {
/* … */
    }
 1238:             # If only None type is in the Union, return None
+1239:             return None
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = Py_None; __Pyx_INCREF(Py_None);
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      goto __pyx_L0;
+1240:         non_none_origin = get_origin(non_none_arg)
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_get_origin); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
      __pyx_t_10 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_non_none_arg};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1240, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_v_non_none_origin = __pyx_t_1;
    __pyx_t_1 = 0;
+1241:         if non_none_origin is list:
    __pyx_t_2 = (__pyx_v_non_none_origin == ((PyObject *)(&PyList_Type)));
    if (__pyx_t_2) {
/* … */
    }
 1242:             # Distinguish between typing.List and list
+1243:             if hasattr(non_none_arg, '__module__') and non_none_arg.__module__ == 'typing':
      __pyx_t_4 = __Pyx_HasAttr(__pyx_v_non_none_arg, __pyx_mstate_global->__pyx_n_u_module); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1243, __pyx_L1_error)
      if (__pyx_t_4) {

      } else {

        __pyx_t_2 = __pyx_t_4;

        goto __pyx_L32_bool_binop_done;
      }
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_non_none_arg, __pyx_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1243, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_typing, Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1243, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      __pyx_t_2 = __pyx_t_4;

      __pyx_L32_bool_binop_done:;
      if (__pyx_t_2) {
/* … */
      }
 1244:                 # It's typing.List - use _parse_list_typing
+1245:                 return _parse_list_typing(
        __pyx_t_11.__pyx_n = 1;
        __pyx_t_11.as_objects = Py_None;
        __pyx_t_8 = __pyx_f_9datamodel_10converters__parse_list_typing(__pyx_v_field, ((PyObject*)__pyx_t_1), __pyx_v_data, __pyx_v_encoder, __pyx_v_non_none_origin, __pyx_t_3, &__pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1245, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_8;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_8 = 0;
        goto __pyx_L0;
 1246:                     field,
+1247:                     get_args(non_none_arg),
        __pyx_t_9 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_get_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1247, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_10 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
          assert(__pyx_t_9);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
          __pyx_t_10 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_non_none_arg};
          __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1247, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
        if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(0, 1247, __pyx_L1_error)
 1248:                     data,
 1249:                     encoder,
 1250:                     non_none_origin,
+1251:                     get_args(non_none_arg),
        __pyx_t_9 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_get_args); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1251, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_10 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_8))) {
          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
          assert(__pyx_t_9);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
          __pyx_t_10 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_non_none_arg};
          __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1251, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
        }
 1252:                     None
 1253:                 )
 1254:             else:
 1255:                 # It's a plain list - use _parse_list_type
+1256:                 return _parse_list_type(
      /*else*/ {
/* … */
        __pyx_t_12.__pyx_n = 1;
        __pyx_t_12._parent = Py_None;
        __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_list_type(__pyx_v_field, __pyx_v_non_none_arg, __pyx_v_data, __pyx_v_encoder, __pyx_t_8, &__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1256, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_1;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_1 = 0;
        goto __pyx_L0;
      }
 1257:                     field,
 1258:                     non_none_arg,
 1259:                     data,
 1260:                     encoder,
+1261:                     get_args(non_none_arg),
        __pyx_t_3 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_get_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1261, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_10 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
          __pyx_t_10 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_non_none_arg};
          __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1261, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
        }
 1262:                     None
 1263:                 )
 1264:         else:
+1265:             return _parse_type(
    /*else*/ {
/* … */
      __pyx_t_13.__pyx_n = 2;
      __pyx_t_13.encoder = __pyx_v_encoder;
      __pyx_t_13.as_objects = Py_False;
      __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_type(__pyx_v_field, __pyx_v_non_none_arg, __pyx_v_data, &__pyx_t_13); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1265, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = __pyx_t_1;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_1 = 0;
      goto __pyx_L0;
    }
 1266:                 field,
 1267:                 T=non_none_arg,
 1268:                 data=data,
 1269:                 encoder=encoder,
 1270:                 as_objects=False
 1271:             )
 1272:     # Remove None from args.
+1273:     args = tuple(t for t in args if t is not type(None))
static PyObject *__pyx_pf_9datamodel_10converters_21_parse_optional_union_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_5_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __pyx_cur_scope = (struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_5_genexpr *)__pyx_tp_new_9datamodel_10converters___pyx_scope_struct_5_genexpr(__pyx_mstate_global->__pyx_ptype_9datamodel_10converters___pyx_scope_struct_5_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_5_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 1273, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9datamodel_10converters_21_parse_optional_union_2generator3, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[3]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_parse_optional_union_locals_gen, __pyx_mstate_global->__pyx_n_u_datamodel_converters); if (unlikely(!gen)) __PYX_ERR(0, 1273, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("datamodel.converters._parse_optional_union.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_9datamodel_10converters_21_parse_optional_union_2generator3(__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 != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 1273, __pyx_L1_error)
  }
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 1273, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1273, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1273, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1273, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1273, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1273, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_t);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_t, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_5 = (__pyx_cur_scope->__pyx_v_t != ((PyObject *)Py_TYPE(Py_None)));
    if (__pyx_t_5) {

      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_t);
      __pyx_r = __pyx_cur_scope->__pyx_v_t;
      __Pyx_XGIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;

      __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;

      __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
      __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_L7_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;
      __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1273, __pyx_L1_error)
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #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_1 = __pyx_pf_9datamodel_10converters_21_parse_optional_union_genexpr(NULL, __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_args, __pyx_t_8);
  __pyx_t_8 = 0;
/* … */
struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_5_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_t;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};

 1274:     # If there are no non-None types left, simply return data.
+1275:     if not args:
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_args); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1275, __pyx_L1_error)
  __pyx_t_4 = (!__pyx_t_2);


  if (__pyx_t_4) {
/* … */
  }
+1276:         return data
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_data);
        __pyx_r = __pyx_v_data;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 1277: 
+1278:     for t in args:
  if (likely(PyList_CheckExact(__pyx_v_args)) || PyTuple_CheckExact(__pyx_v_args)) {
    __pyx_t_8 = __pyx_v_args; __Pyx_INCREF(__pyx_t_8);
    __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_v_args); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1278, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_8))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1278, __pyx_L1_error)
          #endif
          if (__pyx_t_5 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_8, __pyx_t_5, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_5;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1278, __pyx_L1_error)
          #endif
          if (__pyx_t_5 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_5));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_8, __pyx_t_5);
        #endif
        ++__pyx_t_5;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1278, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_6(__pyx_t_8);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1278, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_t, __pyx_t_1);
    __pyx_t_1 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  goto __pyx_L38_for_end;
  __pyx_L36_break:;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  goto __pyx_L38_for_end;
  __pyx_L38_for_end:;
+1279:         if isinstance(data, t):
    __pyx_t_4 = PyObject_IsInstance(__pyx_v_data, __pyx_v_t); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1279, __pyx_L1_error)
    if (__pyx_t_4) {
/* … */
    }
+1280:             matched = True
      __pyx_v_matched = 1;
+1281:             break
      goto __pyx_L36_break;
+1282:     if not matched:
  __pyx_t_4 = (!__pyx_v_matched);

  if (unlikely(__pyx_t_4)) {
/* … */
  }
+1283:         raise ValueError(
    __pyx_t_1 = NULL;
+1284:             f"Invalid type for *{field.name}* with {type(data)}, expected {T}"
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_data)), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_14 = __Pyx_PyObject_FormatSimple(__pyx_v_T, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    __pyx_t_15[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_type_for;
    __pyx_t_15[1] = __pyx_t_9;
    __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u_with;
    __pyx_t_15[3] = __pyx_t_3;
    __pyx_t_15[4] = __pyx_mstate_global->__pyx_kp_u_expected_2;
    __pyx_t_15[5] = __pyx_t_14;
    __pyx_t_5 = 36;
    #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
    __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15[3]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15[5]);
    #endif
    __pyx_t_16 = 0;
    #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
    __pyx_t_16 |= __Pyx_PyUnicode_KIND_04(__pyx_t_15[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_15[3]) | __Pyx_PyUnicode_KIND_04(__pyx_t_15[5]);
    #endif
    __pyx_t_17 = __Pyx_PyUnicode_Join(__pyx_t_15, 6, __pyx_t_5, __pyx_t_16);
    if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __pyx_t_10 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_17};
      __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1283, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
    }
    __Pyx_Raise(__pyx_t_8, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __PYX_ERR(0, 1283, __pyx_L1_error)
 1285:         )
+1286:     try:
  {
    /*try:*/ {
/* … */
    }
    __pyx_L40_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
    __pyx_L42_except_error:;
    __Pyx_XGIVEREF(__pyx_t_18);
    __Pyx_XGIVEREF(__pyx_t_19);
    __Pyx_XGIVEREF(__pyx_t_20);
    __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
    goto __pyx_L1_error;
    __pyx_L44_try_return:;
    __Pyx_XGIVEREF(__pyx_t_18);
    __Pyx_XGIVEREF(__pyx_t_19);
    __Pyx_XGIVEREF(__pyx_t_20);
    __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
    goto __pyx_L0;
    __pyx_L41_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_18);
    __Pyx_XGIVEREF(__pyx_t_19);
    __Pyx_XGIVEREF(__pyx_t_20);
    __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
  }
+1287:         if is_dc(t):
      __pyx_t_4 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_t); if (unlikely(__pyx_t_4 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1287, __pyx_L40_error)
      if (__pyx_t_4) {
/* … */
      }
+1288:             if isinstance(data, dict):
        __pyx_t_4 = PyDict_Check(__pyx_v_data); 
        if (__pyx_t_4) {
/* … */
        }
+1289:                 return t(**data)
          if (unlikely(__pyx_v_data == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
            __PYX_ERR(0, 1289, __pyx_L40_error)
          }
          if (likely(PyDict_CheckExact(__pyx_v_data))) {
            __pyx_t_8 = PyDict_Copy(__pyx_v_data); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1289, __pyx_L40_error)
            __Pyx_GOTREF(__pyx_t_8);
          } else {
            __pyx_t_8 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_data); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1289, __pyx_L40_error)
            __Pyx_GOTREF(__pyx_t_8);
          }
          __pyx_t_17 = __Pyx_PyObject_Call(__pyx_v_t, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_8); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1289, __pyx_L40_error)
          __Pyx_GOTREF(__pyx_t_17);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_17;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_17 = 0;
          goto __pyx_L44_try_return;
+1290:             elif isinstance(data, (list, tuple)):
        __pyx_t_2 = PyList_Check(__pyx_v_data); 
        if (!__pyx_t_2) {

        } else {

          __pyx_t_4 = __pyx_t_2;

          goto __pyx_L48_bool_binop_done;
        }
        __pyx_t_2 = PyTuple_Check(__pyx_v_data); 

        __pyx_t_4 = __pyx_t_2;

        __pyx_L48_bool_binop_done:;
        if (__pyx_t_4) {
/* … */
        }
+1291:                 return t(*data)
          __pyx_t_17 = __Pyx_PySequence_Tuple(__pyx_v_data); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1291, __pyx_L40_error)
          __Pyx_GOTREF(__pyx_t_17);
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_v_t, __pyx_t_17, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1291, __pyx_L40_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_8;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_8 = 0;
          goto __pyx_L44_try_return;
 1292:             else:
+1293:                 try:
        /*else*/ {
          {
            /*try:*/ {
/* … */
            }
            __pyx_L50_error:;
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
            __pyx_L52_except_error:;
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
            goto __pyx_L40_error;
            __pyx_L54_try_return:;
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
            goto __pyx_L44_try_return;
            __pyx_L53_except_return:;
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
            goto __pyx_L44_try_return;
          }
        }
+1294:                     return t(data)
              __pyx_t_17 = NULL;
              __Pyx_INCREF(__pyx_v_t);
              __pyx_t_1 = __pyx_v_t; 
              __pyx_t_10 = 1;
              #if CYTHON_UNPACK_METHODS
              if (unlikely(PyMethod_Check(__pyx_t_1))) {
                __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_1);
                assert(__pyx_t_17);
                PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_17);
                __Pyx_INCREF(__pyx__function);
                __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
                __pyx_t_10 = 0;
              }
              #endif
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_17, __pyx_v_data};
                __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1294, __pyx_L50_error)
                __Pyx_GOTREF(__pyx_t_8);
              }
              {
                PyObject *__pyx_temp;
                {
                  __pyx_temp = __pyx_r;
                  __pyx_r = __pyx_t_8;
                }
                __Pyx_XDECREF(__pyx_temp);
              }
              __pyx_t_8 = 0;
              goto __pyx_L54_try_return;
+1295:                 except Exception:
            __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
            if (__pyx_t_16) {
              __Pyx_ErrRestore(0,0,0);
+1296:                     return data
              {
                PyObject *__pyx_temp;
                {
                  __pyx_temp = __pyx_r;
                  __Pyx_INCREF(__pyx_v_data);
                  __pyx_r = __pyx_v_data;
                }
                __Pyx_XDECREF(__pyx_temp);
              }
              goto __pyx_L53_except_return;
            }
            goto __pyx_L52_except_error;
+1297:         elif callable(t):
      __pyx_t_4 = __Pyx_PyCallable_Check(__pyx_v_t); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1297, __pyx_L40_error)
      if (__pyx_t_4) {
/* … */
      }
+1298:             return data
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __Pyx_INCREF(__pyx_v_data);
            __pyx_r = __pyx_v_data;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        goto __pyx_L44_try_return;
+1299:         return data
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __Pyx_INCREF(__pyx_v_data);
          __pyx_r = __pyx_v_data;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      goto __pyx_L44_try_return;
+1300:     except KeyError:
    __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
    if (__pyx_t_16) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L41_exception_handled;
    }
    goto __pyx_L42_except_error;
 1301:         pass
+1302:     return data
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __Pyx_INCREF(__pyx_v_data);
      __pyx_r = __pyx_v_data;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  goto __pyx_L0;
 1303: 
+1304: cdef object _parse_union_type(
static PyObject *__pyx_f_9datamodel_10converters__parse_union_type(PyObject *__pyx_v_field, PyObject *__pyx_v_T, PyObject *__pyx_v_name, PyObject *__pyx_v_data, PyObject *__pyx_v_encoder, PyObject *__pyx_v_origin, PyObject *__pyx_v_targs) {
  PyObject *__pyx_v_field_name = 0;
  CYTHON_UNUSED PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_non_none_arg = 0;
  CYTHON_UNUSED PyObject *__pyx_v_inner_targs = 0;
  int __pyx_v_is_typing;
  CYTHON_UNUSED int __pyx_v_has_list_type;
  PyObject *__pyx_v_errors = 0;
  PyObject *__pyx_v_arg = NULL;
  PyObject *__pyx_v_arg_type = NULL;
  PyObject *__pyx_v_subtype_origin = NULL;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_v_error_msg = NULL;
  PyObject *__pyx_gb_9datamodel_10converters_17_parse_union_type_2generator4 = 0;
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_19);
  __Pyx_XDECREF(__pyx_t_30);
  __Pyx_AddTraceback("datamodel.converters._parse_union_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_field_name);
  __Pyx_XDECREF(__pyx_v_error);
  __Pyx_XDECREF(__pyx_v_non_none_arg);
  __Pyx_XDECREF(__pyx_v_inner_targs);


  __Pyx_XDECREF(__pyx_v_errors);
  __Pyx_XDECREF(__pyx_v_arg);
  __Pyx_XDECREF(__pyx_v_arg_type);
  __Pyx_XDECREF(__pyx_v_subtype_origin);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XDECREF(__pyx_v_error_msg);
  __Pyx_XDECREF(__pyx_gb_9datamodel_10converters_17_parse_union_type_2generator4);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1305:     object field,
 1306:     object T,
 1307:     object name,
 1308:     object data,
 1309:     object encoder,
 1310:     object origin,
 1311:     object targs
 1312: ):
 1313:     """
 1314:     Attempt each type in the Union until one parses successfully
 1315:     or raise an error if all fail.
 1316:     If T is Optional[...] (i.e. a Union with NoneType), unwrap it.
 1317:     """
+1318:     cdef str field_name = field.name
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(0, 1318, __pyx_L1_error)
  __pyx_v_field_name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+1319:     cdef str error = None
  __Pyx_INCREF(Py_None);
  __pyx_v_error = ((PyObject*)Py_None);
+1320:     cdef object non_none_arg = None
  __Pyx_INCREF(Py_None);
  __pyx_v_non_none_arg = Py_None;
+1321:     cdef tuple inner_targs = None
  __Pyx_INCREF(Py_None);
  __pyx_v_inner_targs = ((PyObject*)Py_None);
+1322:     cdef bint is_typing = False
  __pyx_v_is_typing = 0;
+1323:     cdef bint has_list_type = False
  __pyx_v_has_list_type = 0;
+1324:     cdef list errors = []  # Collect all errors to report if all types fail
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_errors = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 1325: 
 1326: 
 1327:     # First, check for None in Optional types
+1328:     if type(None) in targs and data is None:
  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(((PyObject *)Py_TYPE(Py_None)), __pyx_v_targs, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1328, __pyx_L1_error)
  if (__pyx_t_3) {

  } else {

    __pyx_t_2 = __pyx_t_3;

    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_data == Py_None);

  __pyx_t_2 = __pyx_t_3;

  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
+1329:         return None
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 1330: 
 1331:     # If the union includes NoneType, unwrap it and use only the non-None type.
+1332:     if is_union(origin) and type(None) in targs:
  __pyx_t_3 = __pyx_f_9datamodel_10converters_is_union(__pyx_v_origin); if (unlikely(__pyx_t_3 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1332, __pyx_L1_error)
  if (__pyx_t_3) {

  } else {

    __pyx_t_2 = __pyx_t_3;

    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(((PyObject *)Py_TYPE(Py_None)), __pyx_v_targs, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1332, __pyx_L1_error)

  __pyx_t_2 = __pyx_t_3;

  __pyx_L7_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
+1333:         for arg in targs:
    if (likely(PyList_CheckExact(__pyx_v_targs)) || PyTuple_CheckExact(__pyx_v_targs)) {
      __pyx_t_1 = __pyx_v_targs; __Pyx_INCREF(__pyx_t_1);
      __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_targs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1333, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1333, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_5)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1333, __pyx_L1_error)
            #endif
            if (__pyx_t_4 >= __pyx_temp) break;
          }
          __pyx_t_6 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference);
          ++__pyx_t_4;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1333, __pyx_L1_error)
            #endif
            if (__pyx_t_4 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4));
          #else
          __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_4);
          #endif
          ++__pyx_t_4;
        }
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1333, __pyx_L1_error)
      } else {
        __pyx_t_6 = __pyx_t_5(__pyx_t_1);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1333, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_XDECREF_SET(__pyx_v_arg, __pyx_t_6);
      __pyx_t_6 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L12_for_end;
    __pyx_L10_break:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L12_for_end;
    __pyx_L12_for_end:;
+1334:             if arg is not type(None):
      __pyx_t_2 = (__pyx_v_arg != ((PyObject *)Py_TYPE(Py_None)));
      if (__pyx_t_2) {
/* … */
      }
+1335:                 non_none_arg = arg
        __Pyx_INCREF(__pyx_v_arg);
        __Pyx_DECREF_SET(__pyx_v_non_none_arg, __pyx_v_arg);
+1336:                 break
        goto __pyx_L10_break;
+1337:         is_typing = hasattr(non_none_arg, '__module__') and non_none_arg.__module__ == 'typing'
    __pyx_t_3 = __Pyx_HasAttr(__pyx_v_non_none_arg, __pyx_mstate_global->__pyx_n_u_module); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1337, __pyx_L1_error)
    if (__pyx_t_3) {

    } else {

      __pyx_t_2 = __pyx_t_3;

      goto __pyx_L13_bool_binop_done;
    }
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_non_none_arg, __pyx_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1337, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_typing, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1337, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    __pyx_t_2 = __pyx_t_3;

    __pyx_L13_bool_binop_done:;
    __pyx_v_is_typing = __pyx_t_2;
 1338: 
+1339:         if non_none_arg is not None and is_typing is True:
    __pyx_t_3 = (__pyx_v_non_none_arg != Py_None);
    if (__pyx_t_3) {

    } else {

      __pyx_t_2 = __pyx_t_3;

      goto __pyx_L16_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_is_typing == 1);


    __pyx_t_2 = __pyx_t_3;

    __pyx_L16_bool_binop_done:;
    if (__pyx_t_2) {
/* … */
    }
 1340:             # Invoke the parse_typing_type
+1341:             field.args = get_args(non_none_arg)
      __pyx_t_6 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_get_args); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1341, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
        assert(__pyx_t_6);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
        __pyx_t_8 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_non_none_arg};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1341, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_args_2, __pyx_t_1) < (0)) __PYX_ERR(0, 1341, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1342:             field.origin = get_origin(non_none_arg)
      __pyx_t_7 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_get_origin); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1342, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
        assert(__pyx_t_7);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
        __pyx_t_8 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_non_none_arg};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1342, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_origin_2, __pyx_t_1) < (0)) __PYX_ERR(0, 1342, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1343:             if isinstance(data, list):
      __pyx_t_2 = PyList_Check(__pyx_v_data); 
      if (__pyx_t_2) {
/* … */
      }
+1344:                 return _parse_typing(
        __pyx_t_9.__pyx_n = 2;
        __pyx_t_9.encoder = __pyx_v_encoder;
        __pyx_t_9.as_objects = Py_False;
        __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_typing(__pyx_v_field, __pyx_v_non_none_arg, __pyx_v_data, &__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1344, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_1;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_1 = 0;
        goto __pyx_L0;
 1345:                     field,
 1346:                     non_none_arg,
 1347:                     data,
 1348:                     encoder,
 1349:                     False
 1350:                 )
 1351: 
 1352:     # First check for dataclasses in the union
+1353:     for arg_type in targs:
  if (likely(PyList_CheckExact(__pyx_v_targs)) || PyTuple_CheckExact(__pyx_v_targs)) {
    __pyx_t_1 = __pyx_v_targs; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_targs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1353, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1353, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1353, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_6 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_4;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1353, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4));
        #else
        __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1353, __pyx_L1_error)
    } else {
      __pyx_t_6 = __pyx_t_5(__pyx_t_1);
      if (unlikely(!__pyx_t_6)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1353, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_arg_type, __pyx_t_6);
    __pyx_t_6 = 0;
/* … */
    __pyx_L19_continue:;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1354:         subtype_origin = field._inner_origin or get_origin(arg_type)
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_origin); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1354, __pyx_L1_error)
    if (!__pyx_t_2) {
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else {
      __Pyx_INCREF(__pyx_t_7);
      __pyx_t_6 = __pyx_t_7;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L21_bool_binop_done;
    }
    __pyx_t_10 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_get_origin); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_11))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
      assert(__pyx_t_10);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
      __Pyx_INCREF(__pyx_t_10);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_arg_type};
      __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1354, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
    }
    __Pyx_INCREF(__pyx_t_7);
    __pyx_t_6 = __pyx_t_7;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_L21_bool_binop_done:;
    __Pyx_XDECREF_SET(__pyx_v_subtype_origin, __pyx_t_6);
    __pyx_t_6 = 0;
+1355:         if is_dc(arg_type):
    __pyx_t_2 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_arg_type); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1355, __pyx_L1_error)
    if (__pyx_t_2) {
/* … */
    }
+1356:             if isinstance(data, dict):
      __pyx_t_2 = PyDict_Check(__pyx_v_data); 
      if (__pyx_t_2) {
/* … */
      }
+1357:                 try:
        {
          /*try:*/ {
/* … */
          }
          __pyx_L25_error:;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
          __pyx_L27_except_error:;
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          goto __pyx_L1_error;
          __pyx_L31_try_continue:;
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          goto __pyx_L19_continue;
          __pyx_L29_try_return:;
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          goto __pyx_L0;
        }
+1358:                     return arg_type(**data)
            if (unlikely(__pyx_v_data == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
              __PYX_ERR(0, 1358, __pyx_L25_error)
            }
            if (likely(PyDict_CheckExact(__pyx_v_data))) {
              __pyx_t_6 = PyDict_Copy(__pyx_v_data); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1358, __pyx_L25_error)
              __Pyx_GOTREF(__pyx_t_6);
            } else {
              __pyx_t_6 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_data); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1358, __pyx_L25_error)
              __Pyx_GOTREF(__pyx_t_6);
            }
            __pyx_t_7 = __Pyx_PyObject_Call(__pyx_v_arg_type, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1358, __pyx_L25_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            {
              PyObject *__pyx_temp;
              {
                __pyx_temp = __pyx_r;
                __pyx_r = __pyx_t_7;
              }
              __Pyx_XDECREF(__pyx_temp);
            }
            __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            goto __pyx_L29_try_return;
+1359:                 except Exception as exc:
          __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
          if (__pyx_t_15) {
            __Pyx_AddTraceback("datamodel.converters._parse_union_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_11) < 0) __PYX_ERR(0, 1359, __pyx_L27_except_error)
            __Pyx_XGOTREF(__pyx_t_7);
            __Pyx_XGOTREF(__pyx_t_6);
            __Pyx_XGOTREF(__pyx_t_11);
            __Pyx_INCREF(__pyx_t_6);
            __pyx_v_exc = __pyx_t_6;
            /*try:*/ {
/* … */
            /*finally:*/ {
              __pyx_L38_error:;
              /*exception exit:*/{
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
                 __Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_27, &__pyx_t_28);
                if ( unlikely(__Pyx_GetException(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25) < 0)) __Pyx_ErrFetch(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25);
                __Pyx_XGOTREF(__pyx_t_23);
                __Pyx_XGOTREF(__pyx_t_24);
                __Pyx_XGOTREF(__pyx_t_25);
                __Pyx_XGOTREF(__pyx_t_26);
                __Pyx_XGOTREF(__pyx_t_27);
                __Pyx_XGOTREF(__pyx_t_28);
                __pyx_t_15 = __pyx_lineno; __pyx_t_21 = __pyx_clineno; __pyx_t_22 = __pyx_filename;
                {
                  __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                }
                __Pyx_XGIVEREF(__pyx_t_26);
                __Pyx_XGIVEREF(__pyx_t_27);
                __Pyx_XGIVEREF(__pyx_t_28);
                __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_27, __pyx_t_28);
                __Pyx_XGIVEREF(__pyx_t_23);
                __Pyx_XGIVEREF(__pyx_t_24);
                __Pyx_XGIVEREF(__pyx_t_25);
                __Pyx_ErrRestore(__pyx_t_23, __pyx_t_24, __pyx_t_25);
                __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
                __pyx_lineno = __pyx_t_15; __pyx_clineno = __pyx_t_21; __pyx_filename = __pyx_t_22;
                goto __pyx_L27_except_error;
              }
              __pyx_L35_continue: {
                __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                goto __pyx_L33_except_continue;
              }
            }
            __pyx_L33_except_continue:;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            goto __pyx_L31_try_continue;
          }
          goto __pyx_L27_except_error;
+1360:                     errors.append(f"Failed to create dataclass {arg_type.__name__} from dict: {exc}")
              __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_type, __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1360, __pyx_L38_error)
              __Pyx_GOTREF(__pyx_t_10);
              __pyx_t_16 = __Pyx_PyObject_FormatSimple(__pyx_t_10, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1360, __pyx_L38_error)
              __Pyx_GOTREF(__pyx_t_16);
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_v_exc, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1360, __pyx_L38_error)
              __Pyx_GOTREF(__pyx_t_10);
              __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_Failed_to_create_dataclass;
              __pyx_t_17[1] = __pyx_t_16;
              __pyx_t_17[2] = __pyx_mstate_global->__pyx_kp_u_from_dict;
              __pyx_t_17[3] = __pyx_t_10;
              __pyx_t_18 = 39;
              #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
              __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[3]);
              #endif
              __pyx_t_15 = 0;
              #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
              __pyx_t_15 |= __Pyx_PyUnicode_KIND_04(__pyx_t_17[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_17[3]);
              #endif
              __pyx_t_19 = __Pyx_PyUnicode_Join(__pyx_t_17, 4, __pyx_t_18, __pyx_t_15);
              if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1360, __pyx_L38_error)
              __Pyx_GOTREF(__pyx_t_19);
              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_errors, __pyx_t_19); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 1360, __pyx_L38_error)
              __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;

+1361:                     continue
              goto __pyx_L35_continue;
            }
+1362:             elif isinstance(data, arg_type):
      __pyx_t_2 = PyObject_IsInstance(__pyx_v_data, __pyx_v_arg_type); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1362, __pyx_L1_error)
      if (__pyx_t_2) {
/* … */
      }
+1363:                 return data
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __Pyx_INCREF(__pyx_v_data);
            __pyx_r = __pyx_v_data;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
 1364:             else:
 1365:                 # For string inputs, don't accept them as dataclasses
+1366:                 if isinstance(data, (str, int, float, bool)):
      /*else*/ {
        __pyx_t_3 = PyUnicode_Check(__pyx_v_data); 
        if (!__pyx_t_3) {

        } else {

          __pyx_t_2 = __pyx_t_3;

          goto __pyx_L45_bool_binop_done;
        }
        __pyx_t_3 = PyLong_Check(__pyx_v_data); 
        if (!__pyx_t_3) {

        } else {

          __pyx_t_2 = __pyx_t_3;

          goto __pyx_L45_bool_binop_done;
        }
        __pyx_t_3 = PyFloat_Check(__pyx_v_data); 
        if (!__pyx_t_3) {

        } else {

          __pyx_t_2 = __pyx_t_3;

          goto __pyx_L45_bool_binop_done;
        }
        __pyx_t_3 = PyBool_Check(__pyx_v_data); 

        __pyx_t_2 = __pyx_t_3;

        __pyx_L45_bool_binop_done:;
        if (__pyx_t_2) {
/* … */
        }
+1367:                     errors.append(f"Cannot convert {type(data).__name__} to {arg_type.__name__}")
          __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_data)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1367, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1367, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_type, __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1367, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1367, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_Cannot_convert;
          __pyx_t_17[1] = __pyx_t_6;
          __pyx_t_17[2] = __pyx_mstate_global->__pyx_kp_u_to;
          __pyx_t_17[3] = __pyx_t_7;
          __pyx_t_18 = 19;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[3]);
          #endif
          __pyx_t_21 = 0;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_21 |= __Pyx_PyUnicode_KIND_04(__pyx_t_17[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_17[3]);
          #endif
          __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_17, 4, __pyx_t_18, __pyx_t_21);
          if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1367, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_errors, __pyx_t_11); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 1367, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

+1368:                     continue
          goto __pyx_L19_continue;
+1369:                 try:
        {
          /*try:*/ {
/* … */
          }
          __pyx_L49_error:;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
          __pyx_L51_except_error:;
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
          goto __pyx_L1_error;
          __pyx_L55_try_continue:;
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
          goto __pyx_L19_continue;
          __pyx_L53_try_return:;
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
          goto __pyx_L0;
        }
      }
+1370:                     return arg_type(data)
            __pyx_t_7 = NULL;
            __Pyx_INCREF(__pyx_v_arg_type);
            __pyx_t_6 = __pyx_v_arg_type; 
            __pyx_t_8 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_6))) {
              __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
              assert(__pyx_t_7);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_7);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
              __pyx_t_8 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_data};
              __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1370, __pyx_L49_error)
              __Pyx_GOTREF(__pyx_t_11);
            }
            {
              PyObject *__pyx_temp;
              {
                __pyx_temp = __pyx_r;
                __pyx_r = __pyx_t_11;
              }
              __Pyx_XDECREF(__pyx_temp);
            }
            __pyx_t_11 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            goto __pyx_L53_try_return;
+1371:                 except Exception as exc:
          __pyx_t_21 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
          if (__pyx_t_21) {
            __Pyx_AddTraceback("datamodel.converters._parse_union_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 1371, __pyx_L51_except_error)
            __Pyx_XGOTREF(__pyx_t_11);
            __Pyx_XGOTREF(__pyx_t_6);
            __Pyx_XGOTREF(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_6);
            __pyx_v_exc = __pyx_t_6;
            /*try:*/ {
/* … */
            /*finally:*/ {
              __pyx_L62_error:;
              /*exception exit:*/{
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0;
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
                __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
                 __Pyx_ExceptionSwap(&__pyx_t_25, &__pyx_t_24, &__pyx_t_23);
                if ( unlikely(__Pyx_GetException(&__pyx_t_28, &__pyx_t_27, &__pyx_t_26) < 0)) __Pyx_ErrFetch(&__pyx_t_28, &__pyx_t_27, &__pyx_t_26);
                __Pyx_XGOTREF(__pyx_t_28);
                __Pyx_XGOTREF(__pyx_t_27);
                __Pyx_XGOTREF(__pyx_t_26);
                __Pyx_XGOTREF(__pyx_t_25);
                __Pyx_XGOTREF(__pyx_t_24);
                __Pyx_XGOTREF(__pyx_t_23);
                __pyx_t_21 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_22 = __pyx_filename;
                {
                  __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                }
                __Pyx_XGIVEREF(__pyx_t_25);
                __Pyx_XGIVEREF(__pyx_t_24);
                __Pyx_XGIVEREF(__pyx_t_23);
                __Pyx_ExceptionReset(__pyx_t_25, __pyx_t_24, __pyx_t_23);
                __Pyx_XGIVEREF(__pyx_t_28);
                __Pyx_XGIVEREF(__pyx_t_27);
                __Pyx_XGIVEREF(__pyx_t_26);
                __Pyx_ErrRestore(__pyx_t_28, __pyx_t_27, __pyx_t_26);
                __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0;
                __pyx_lineno = __pyx_t_21; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_22;
                goto __pyx_L51_except_error;
              }
              __pyx_L59_continue: {
                __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                goto __pyx_L57_except_continue;
              }
            }
            __pyx_L57_except_continue:;
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            goto __pyx_L55_try_continue;
          }
          goto __pyx_L51_except_error;
+1372:                     errors.append(f"Failed to create {arg_type.__name__} from {type(data).__name__}: {exc}")
              __pyx_t_19 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_type, __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1372, __pyx_L62_error)
              __Pyx_GOTREF(__pyx_t_19);
              __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_t_19, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1372, __pyx_L62_error)
              __Pyx_GOTREF(__pyx_t_10);
              __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
              __pyx_t_19 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_data)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1372, __pyx_L62_error)
              __Pyx_GOTREF(__pyx_t_19);
              __pyx_t_16 = __Pyx_PyObject_FormatSimple(__pyx_t_19, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1372, __pyx_L62_error)
              __Pyx_GOTREF(__pyx_t_16);
              __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
              __pyx_t_19 = __Pyx_PyObject_FormatSimple(__pyx_v_exc, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1372, __pyx_L62_error)
              __Pyx_GOTREF(__pyx_t_19);
              __pyx_t_29[0] = __pyx_mstate_global->__pyx_kp_u_Failed_to_create;
              __pyx_t_29[1] = __pyx_t_10;
              __pyx_t_29[2] = __pyx_mstate_global->__pyx_kp_u_from;
              __pyx_t_29[3] = __pyx_t_16;
              __pyx_t_29[4] = __pyx_mstate_global->__pyx_kp_u__5;
              __pyx_t_29[5] = __pyx_t_19;
              __pyx_t_18 = 25;
              #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
              __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_29[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_29[3]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_29[5]);
              #endif
              __pyx_t_21 = 0;
              #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
              __pyx_t_21 |= __Pyx_PyUnicode_KIND_04(__pyx_t_29[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_29[3]) | __Pyx_PyUnicode_KIND_04(__pyx_t_29[5]);
              #endif
              __pyx_t_30 = __Pyx_PyUnicode_Join(__pyx_t_29, 6, __pyx_t_18, __pyx_t_21);
              if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 1372, __pyx_L62_error)
              __Pyx_GOTREF(__pyx_t_30);
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
              __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
              __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_errors, __pyx_t_30); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 1372, __pyx_L62_error)
              __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;

+1373:                     continue
              goto __pyx_L59_continue;
            }
 1374:         else:
+1375:             if is_primitive(arg_type):
    /*else*/ {
      __pyx_t_6 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_is_primitive); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1375, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_8 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_11))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
        assert(__pyx_t_6);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
        __pyx_t_8 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_arg_type};
        __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1375, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      }
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1375, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (__pyx_t_2) {
/* … */
      }
+1376:                 if isinstance(data, arg_type):
        __pyx_t_2 = PyObject_IsInstance(__pyx_v_data, __pyx_v_arg_type); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1376, __pyx_L1_error)
        if (__pyx_t_2) {
/* … */
        }
+1377:                     return data
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __Pyx_INCREF(__pyx_v_data);
              __pyx_r = __pyx_v_data;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L0;
+1378:                 continue
        goto __pyx_L19_continue;
+1379:             elif subtype_origin is list or subtype_origin is tuple:
      __pyx_t_3 = (__pyx_v_subtype_origin == ((PyObject *)(&PyList_Type)));
      if (!__pyx_t_3) {

      } else {

        __pyx_t_2 = __pyx_t_3;

        goto __pyx_L70_bool_binop_done;
      }
      __pyx_t_3 = (__pyx_v_subtype_origin == ((PyObject *)(&PyTuple_Type)));

      __pyx_t_2 = __pyx_t_3;

      __pyx_L70_bool_binop_done:;
      if (__pyx_t_2) {
/* … */
      }
+1380:                 if isinstance(data, list):
        __pyx_t_2 = PyList_Check(__pyx_v_data); 
        if (__pyx_t_2) {
/* … */
        }
+1381:                     try:
          {
            /*try:*/ {
/* … */
            }
            __pyx_L73_error:;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
            __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
            __pyx_L75_except_error:;
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
            goto __pyx_L1_error;
            __pyx_L79_try_continue:;
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
            goto __pyx_L19_continue;
            __pyx_L77_try_return:;
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
            goto __pyx_L0;
          }
+1382:                         return _parse_list_type(field, arg_type, data, encoder, targs)
              __pyx_t_7 = __pyx_f_9datamodel_10converters__parse_list_type(__pyx_v_field, __pyx_v_arg_type, __pyx_v_data, __pyx_v_encoder, __pyx_v_targs, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1382, __pyx_L73_error)
              __Pyx_GOTREF(__pyx_t_7);
              {
                PyObject *__pyx_temp;
                {
                  __pyx_temp = __pyx_r;
                  __pyx_r = __pyx_t_7;
                }
                __Pyx_XDECREF(__pyx_temp);
              }
              __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              goto __pyx_L77_try_return;
+1383:                     except ValueError as exc:
            __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
            if (__pyx_t_15) {
              __Pyx_AddTraceback("datamodel.converters._parse_union_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_11, &__pyx_t_6) < 0) __PYX_ERR(0, 1383, __pyx_L75_except_error)
              __Pyx_XGOTREF(__pyx_t_7);
              __Pyx_XGOTREF(__pyx_t_11);
              __Pyx_XGOTREF(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_11);
              __pyx_v_exc = ((PyObject*)__pyx_t_11);
              /*try:*/ {
/* … */
              /*finally:*/ {
                __pyx_L86_error:;
                /*exception exit:*/{
                  __Pyx_PyThreadState_declare
                  __Pyx_PyThreadState_assign
                  __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
                  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                  __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
                  __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
                   __Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_27, &__pyx_t_28);
                  if ( unlikely(__Pyx_GetException(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25) < 0)) __Pyx_ErrFetch(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25);
                  __Pyx_XGOTREF(__pyx_t_23);
                  __Pyx_XGOTREF(__pyx_t_24);
                  __Pyx_XGOTREF(__pyx_t_25);
                  __Pyx_XGOTREF(__pyx_t_26);
                  __Pyx_XGOTREF(__pyx_t_27);
                  __Pyx_XGOTREF(__pyx_t_28);
                  __pyx_t_15 = __pyx_lineno; __pyx_t_21 = __pyx_clineno; __pyx_t_22 = __pyx_filename;
                  {
                    __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                  }
                  __Pyx_XGIVEREF(__pyx_t_26);
                  __Pyx_XGIVEREF(__pyx_t_27);
                  __Pyx_XGIVEREF(__pyx_t_28);
                  __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_27, __pyx_t_28);
                  __Pyx_XGIVEREF(__pyx_t_23);
                  __Pyx_XGIVEREF(__pyx_t_24);
                  __Pyx_XGIVEREF(__pyx_t_25);
                  __Pyx_ErrRestore(__pyx_t_23, __pyx_t_24, __pyx_t_25);
                  __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
                  __pyx_lineno = __pyx_t_15; __pyx_clineno = __pyx_t_21; __pyx_filename = __pyx_t_22;
                  goto __pyx_L75_except_error;
                }
                __pyx_L83_continue: {
                  __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                  goto __pyx_L81_except_continue;
                }
              }
              __pyx_L81_except_continue:;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
              goto __pyx_L79_try_continue;
            }
            goto __pyx_L75_except_error;
+1384:                         errors.append(str(exc))
                __pyx_t_30 = __Pyx_PyObject_Unicode(__pyx_v_exc); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 1384, __pyx_L86_error)
                __Pyx_GOTREF(__pyx_t_30);
                __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_errors, __pyx_t_30); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 1384, __pyx_L86_error)
                __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;

+1385:                         continue
                goto __pyx_L83_continue;
              }
 1386:                 else:
+1387:                     errors.append(f"Invalid type for {field_name}: Expected a list, got {type(data).__name__}")
        /*else*/ {
          __pyx_t_6 = __Pyx_PyUnicode_Unicode(__pyx_v_field_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1387, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_data)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1387, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1387, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_type_for_2;
          __pyx_t_17[1] = __pyx_t_6;
          __pyx_t_17[2] = __pyx_mstate_global->__pyx_kp_u_Expected_a_list_got;
          __pyx_t_17[3] = __pyx_t_7;
          __pyx_t_18 = 40;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[3]);
          #endif
          __pyx_t_21 = 0;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_21 |= __Pyx_PyUnicode_KIND_04(__pyx_t_17[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_17[3]);
          #endif
          __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_17, 4, __pyx_t_18, __pyx_t_21);
          if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1387, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_errors, __pyx_t_11); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 1387, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

+1388:                     continue
          goto __pyx_L19_continue;
        }
+1389:             elif subtype_origin is set:
      __pyx_t_2 = (__pyx_v_subtype_origin == ((PyObject *)(&PySet_Type)));
      if (__pyx_t_2) {
/* … */
      }
+1390:                 if isinstance(data, (list, tuple)):
        __pyx_t_3 = PyList_Check(__pyx_v_data); 
        if (!__pyx_t_3) {

        } else {

          __pyx_t_2 = __pyx_t_3;

          goto __pyx_L93_bool_binop_done;
        }
        __pyx_t_3 = PyTuple_Check(__pyx_v_data); 

        __pyx_t_2 = __pyx_t_3;

        __pyx_L93_bool_binop_done:;
        if (__pyx_t_2) {
/* … */
        }
+1391:                     return set(data)
          __pyx_t_11 = PySet_New(__pyx_v_data); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1391, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_11;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_11 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L0;
+1392:                 elif isinstance(data, set):
        __pyx_t_2 = PySet_Check(__pyx_v_data); 
        if (__pyx_t_2) {
/* … */
        }
+1393:                     return data
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __Pyx_INCREF(__pyx_v_data);
              __pyx_r = __pyx_v_data;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L0;
 1394:                 else:
+1395:                     try:
        /*else*/ {
          {
            /*try:*/ {
/* … */
            }
            __pyx_L95_error:;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
            __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
            __pyx_L97_except_error:;
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
            goto __pyx_L1_error;
            __pyx_L101_try_continue:;
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
            goto __pyx_L19_continue;
            __pyx_L99_try_return:;
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
            goto __pyx_L0;
          }
        }
+1396:                         return _parse_set_type(field, T, data, encoder, targs, None)
              __pyx_t_31.__pyx_n = 1;
              __pyx_t_31._parent = Py_None;
              __pyx_t_11 = __pyx_f_9datamodel_10converters__parse_set_type(__pyx_v_field, __pyx_v_T, __pyx_v_data, __pyx_v_encoder, __pyx_v_targs, &__pyx_t_31); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1396, __pyx_L95_error)
              __Pyx_GOTREF(__pyx_t_11);
              {
                PyObject *__pyx_temp;
                {
                  __pyx_temp = __pyx_r;
                  __pyx_r = __pyx_t_11;
                }
                __Pyx_XDECREF(__pyx_temp);
              }
              __pyx_t_11 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              goto __pyx_L99_try_return;
+1397:                     except Exception as exc:
            __pyx_t_21 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
            if (__pyx_t_21) {
              __Pyx_AddTraceback("datamodel.converters._parse_union_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_7, &__pyx_t_6) < 0) __PYX_ERR(0, 1397, __pyx_L97_except_error)
              __Pyx_XGOTREF(__pyx_t_11);
              __Pyx_XGOTREF(__pyx_t_7);
              __Pyx_XGOTREF(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_7);
              __pyx_v_exc = __pyx_t_7;
              /*try:*/ {
/* … */
              /*finally:*/ {
                __pyx_L108_error:;
                /*exception exit:*/{
                  __Pyx_PyThreadState_declare
                  __Pyx_PyThreadState_assign
                  __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0;
                  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                  __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
                  __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
                   __Pyx_ExceptionSwap(&__pyx_t_25, &__pyx_t_24, &__pyx_t_23);
                  if ( unlikely(__Pyx_GetException(&__pyx_t_28, &__pyx_t_27, &__pyx_t_26) < 0)) __Pyx_ErrFetch(&__pyx_t_28, &__pyx_t_27, &__pyx_t_26);
                  __Pyx_XGOTREF(__pyx_t_28);
                  __Pyx_XGOTREF(__pyx_t_27);
                  __Pyx_XGOTREF(__pyx_t_26);
                  __Pyx_XGOTREF(__pyx_t_25);
                  __Pyx_XGOTREF(__pyx_t_24);
                  __Pyx_XGOTREF(__pyx_t_23);
                  __pyx_t_21 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_22 = __pyx_filename;
                  {
                    __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                  }
                  __Pyx_XGIVEREF(__pyx_t_25);
                  __Pyx_XGIVEREF(__pyx_t_24);
                  __Pyx_XGIVEREF(__pyx_t_23);
                  __Pyx_ExceptionReset(__pyx_t_25, __pyx_t_24, __pyx_t_23);
                  __Pyx_XGIVEREF(__pyx_t_28);
                  __Pyx_XGIVEREF(__pyx_t_27);
                  __Pyx_XGIVEREF(__pyx_t_26);
                  __Pyx_ErrRestore(__pyx_t_28, __pyx_t_27, __pyx_t_26);
                  __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0;
                  __pyx_lineno = __pyx_t_21; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_22;
                  goto __pyx_L97_except_error;
                }
                __pyx_L105_continue: {
                  __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                  goto __pyx_L103_except_continue;
                }
              }
              __pyx_L103_except_continue:;
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
              goto __pyx_L101_try_continue;
            }
            goto __pyx_L97_except_error;
+1398:                         errors.append(f"Invalid type for {field_name}: Expected a set, got {type(data).__name__}")
                __pyx_t_30 = __Pyx_PyUnicode_Unicode(__pyx_v_field_name); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 1398, __pyx_L108_error)
                __Pyx_GOTREF(__pyx_t_30);
                __pyx_t_19 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_data)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1398, __pyx_L108_error)
                __Pyx_GOTREF(__pyx_t_19);
                __pyx_t_16 = __Pyx_PyObject_FormatSimple(__pyx_t_19, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1398, __pyx_L108_error)
                __Pyx_GOTREF(__pyx_t_16);
                __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
                __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_type_for_2;
                __pyx_t_17[1] = __pyx_t_30;
                __pyx_t_17[2] = __pyx_mstate_global->__pyx_kp_u_Expected_a_set_got;
                __pyx_t_17[3] = __pyx_t_16;
                __pyx_t_18 = 39;
                #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[3]);
                #endif
                __pyx_t_21 = 0;
                #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                __pyx_t_21 |= __Pyx_PyUnicode_KIND_04(__pyx_t_17[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_17[3]);
                #endif
                __pyx_t_19 = __Pyx_PyUnicode_Join(__pyx_t_17, 4, __pyx_t_18, __pyx_t_21);
                if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1398, __pyx_L108_error)
                __Pyx_GOTREF(__pyx_t_19);
                __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;
                __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
                __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_errors, __pyx_t_19); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 1398, __pyx_L108_error)
                __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;

+1399:                         continue
                goto __pyx_L105_continue;
              }
+1400:             elif subtype_origin is frozenset:
      __pyx_t_2 = (__pyx_v_subtype_origin == ((PyObject *)(&PyFrozenSet_Type)));
      if (__pyx_t_2) {
/* … */
      }
+1401:                 if isinstance(data, (list, tuple)):
        __pyx_t_3 = PyList_Check(__pyx_v_data); 
        if (!__pyx_t_3) {

        } else {

          __pyx_t_2 = __pyx_t_3;

          goto __pyx_L115_bool_binop_done;
        }
        __pyx_t_3 = PyTuple_Check(__pyx_v_data); 

        __pyx_t_2 = __pyx_t_3;

        __pyx_L115_bool_binop_done:;
        if (__pyx_t_2) {
/* … */
        }
+1402:                     return frozenset(data)
          __pyx_t_6 = __Pyx_PyFrozenSet_New(__pyx_v_data); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1402, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_6;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L0;
+1403:                 elif isinstance(data, frozenset):
        __pyx_t_2 = PyFrozenSet_Check(__pyx_v_data); 
        if (__pyx_t_2) {
/* … */
        }
+1404:                     return data
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __Pyx_INCREF(__pyx_v_data);
              __pyx_r = __pyx_v_data;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L0;
 1405:                 else:
+1406:                     errors.append(f"Invalid type for {field_name}: Expected a frozenset, got {type(data).__name__}")
        /*else*/ {
          __pyx_t_6 = __Pyx_PyUnicode_Unicode(__pyx_v_field_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1406, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_data)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1406, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_t_7, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1406, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_type_for_2;
          __pyx_t_17[1] = __pyx_t_6;
          __pyx_t_17[2] = __pyx_mstate_global->__pyx_kp_u_Expected_a_frozenset_got;
          __pyx_t_17[3] = __pyx_t_11;
          __pyx_t_18 = 45;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[3]);
          #endif
          __pyx_t_15 = 0;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_15 |= __Pyx_PyUnicode_KIND_04(__pyx_t_17[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_17[3]);
          #endif
          __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_17, 4, __pyx_t_18, __pyx_t_15);
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1406, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_errors, __pyx_t_7); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 1406, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

+1407:                     continue
          goto __pyx_L19_continue;
        }
+1408:             elif subtype_origin is list and field._inner_is_dc == True and isinstance(data, list):
      __pyx_t_3 = (__pyx_v_subtype_origin == ((PyObject *)(&PyList_Type)));
      if (__pyx_t_3) {

      } else {

        __pyx_t_2 = __pyx_t_3;

        goto __pyx_L117_bool_binop_done;
      }
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_is_dc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1408, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_3 = __Pyx_PyObject_RichCompareBool(__pyx_t_7, Py_True, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1408, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (__pyx_t_3) {

      } else {

        __pyx_t_2 = __pyx_t_3;

        goto __pyx_L117_bool_binop_done;
      }
      __pyx_t_3 = PyList_Check(__pyx_v_data); 

      __pyx_t_2 = __pyx_t_3;

      __pyx_L117_bool_binop_done:;
      if (__pyx_t_2) {
/* … */
      }
+1409:                 return _handle_list_of_dataclasses(field, field_name, data, T, None)
        __pyx_t_32.__pyx_n = 1;
        __pyx_t_32.parent = Py_None;
        __pyx_t_7 = __pyx_f_9datamodel_10converters__handle_list_of_dataclasses(__pyx_v_field, __pyx_v_field_name, __pyx_v_data, __pyx_v_T, &__pyx_t_32); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1409, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_7;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
+1410:             elif subtype_origin is dict:
      __pyx_t_2 = (__pyx_v_subtype_origin == ((PyObject *)(&PyDict_Type)));
      if (__pyx_t_2) {
/* … */
      }
+1411:                 if isinstance(data, dict):
        __pyx_t_2 = PyDict_Check(__pyx_v_data); 
        if (__pyx_t_2) {
/* … */
        }
+1412:                     return _parse_dict_type(field, arg_type, data, encoder, targs)
          __pyx_t_7 = __pyx_f_9datamodel_10converters__parse_dict_type(__pyx_v_field, __pyx_v_arg_type, __pyx_v_data, __pyx_v_encoder, __pyx_v_targs); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1412, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_7;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L0;
 1413:                 else:
+1414:                     errors.append(
        /*else*/ {
/* … */
          __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_errors, __pyx_t_11); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 1414, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

+1415:                         f"Invalid type for {field_name} Expected a dict, got {type(data).__name__}"
          __pyx_t_7 = __Pyx_PyUnicode_Unicode(__pyx_v_field_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1415, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_data)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1415, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1415, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_type_for_2;
          __pyx_t_17[1] = __pyx_t_7;
          __pyx_t_17[2] = __pyx_mstate_global->__pyx_kp_u_Expected_a_dict_got;
          __pyx_t_17[3] = __pyx_t_6;
          __pyx_t_18 = 39;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[3]);
          #endif
          __pyx_t_15 = 0;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_15 |= __Pyx_PyUnicode_KIND_04(__pyx_t_17[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_17[3]);
          #endif
          __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_17, 4, __pyx_t_18, __pyx_t_15);
          if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1415, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 1416:                     )
+1417:                     continue
          goto __pyx_L19_continue;
        }
+1418:             elif arg_type is list:
      __pyx_t_2 = (__pyx_v_arg_type == ((PyObject *)(&PyList_Type)));
      if (__pyx_t_2) {
/* … */
        goto __pyx_L68;
      }
+1419:                 if isinstance(data, list):
        __pyx_t_2 = PyList_Check(__pyx_v_data); 
        if (__pyx_t_2) {
/* … */
          goto __pyx_L121;
        }
+1420:                     if arg_type is str:
          __pyx_t_2 = (__pyx_v_arg_type == ((PyObject *)(&PyUnicode_Type)));
          if (__pyx_t_2) {
/* … */
            goto __pyx_L122;
          }
 1421:                         # Ensure all elements in the list are strings
+1422:                         if all(isinstance(item, str) for item in data):
static PyObject *__pyx_pf_9datamodel_10converters_17_parse_union_type_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_6_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __pyx_cur_scope = (struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_6_genexpr *)__pyx_tp_new_9datamodel_10converters___pyx_scope_struct_6_genexpr(__pyx_mstate_global->__pyx_ptype_9datamodel_10converters___pyx_scope_struct_6_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_9datamodel_10converters___pyx_scope_struct_6_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 1422, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_9datamodel_10converters_17_parse_union_type_2generator4, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_parse_union_type_locals_genexpr, __pyx_mstate_global->__pyx_n_u_datamodel_converters); if (unlikely(!gen)) __PYX_ERR(0, 1422, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("datamodel.converters._parse_union_type.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_9datamodel_10converters_17_parse_union_type_2generator4(__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, 1422, __pyx_L1_error)
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 1422, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1422, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1422, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1422, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1422, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1422, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_item);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_item, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_5 = PyUnicode_Check(__pyx_cur_scope->__pyx_v_item); 
    __pyx_t_6 = (!__pyx_t_5);


    if (__pyx_t_6) {

      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __Pyx_INCREF(Py_False);
          __pyx_r = Py_False;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /*else*/ {
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(Py_True);
        __pyx_r = Py_True;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #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_11 = __pyx_pf_9datamodel_10converters_17_parse_union_type_genexpr(NULL, __pyx_v_data); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1422, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_11);
            __pyx_t_6 = __Pyx_Generator_GetInlinedResult(__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1422, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1422, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (__pyx_t_2) {
/* … */
            }
+1423:                             return data
              {
                PyObject *__pyx_temp;
                {
                  __pyx_temp = __pyx_r;
                  __Pyx_INCREF(__pyx_v_data);
                  __pyx_r = __pyx_v_data;
                }
                __Pyx_XDECREF(__pyx_temp);
              }
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              goto __pyx_L0;
 1424:                     else:
+1425:                         return _parse_list_type(field, arg_type, data, encoder, targs)
          /*else*/ {
            __pyx_t_6 = __pyx_f_9datamodel_10converters__parse_list_type(__pyx_v_field, __pyx_v_arg_type, __pyx_v_data, __pyx_v_encoder, __pyx_v_targs, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1425, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            {
              PyObject *__pyx_temp;
              {
                __pyx_temp = __pyx_r;
                __pyx_r = __pyx_t_6;
              }
              __Pyx_XDECREF(__pyx_temp);
            }
            __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            goto __pyx_L0;
          }
          __pyx_L122:;
 1426:                 else:
+1427:                     errors.append(
        /*else*/ {
/* … */
          __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_errors, __pyx_t_11); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 1427, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

+1428:                         f"Invalid type for {field_name}: Expected a list, got {type(data).__name__}"
          __pyx_t_6 = __Pyx_PyUnicode_Unicode(__pyx_v_field_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1428, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_data)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1428, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1428, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_type_for_2;
          __pyx_t_17[1] = __pyx_t_6;
          __pyx_t_17[2] = __pyx_mstate_global->__pyx_kp_u_Expected_a_list_got;
          __pyx_t_17[3] = __pyx_t_7;
          __pyx_t_18 = 40;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[3]);
          #endif
          __pyx_t_15 = 0;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_15 |= __Pyx_PyUnicode_KIND_04(__pyx_t_17[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_17[3]);
          #endif
          __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_17, 4, __pyx_t_18, __pyx_t_15);
          if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1428, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 1429:                     )
+1430:                     continue
          goto __pyx_L19_continue;
        }
        __pyx_L121:;
+1431:             elif arg_type is dict:
      __pyx_t_2 = (__pyx_v_arg_type == ((PyObject *)(&PyDict_Type)));
      if (__pyx_t_2) {
/* … */
      }
+1432:                 if isinstance(data, dict):
        __pyx_t_2 = PyDict_Check(__pyx_v_data); 
        if (__pyx_t_2) {
/* … */
        }
+1433:                     return _parse_dict_type(field, arg_type, data, encoder, targs)
          __pyx_t_11 = __pyx_f_9datamodel_10converters__parse_dict_type(__pyx_v_field, __pyx_v_arg_type, __pyx_v_data, __pyx_v_encoder, __pyx_v_targs); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1433, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_11;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_11 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L0;
 1434:                 else:
+1435:                     errors.append(
        /*else*/ {
/* … */
          __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_errors, __pyx_t_7); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 1435, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

+1436:                         f"Invalid type for {field_name} Expected a dict, got {type(data).__name__}"
          __pyx_t_11 = __Pyx_PyUnicode_Unicode(__pyx_v_field_name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1436, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_data)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1436, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_7, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1436, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_type_for_2;
          __pyx_t_17[1] = __pyx_t_11;
          __pyx_t_17[2] = __pyx_mstate_global->__pyx_kp_u_Expected_a_dict_got;
          __pyx_t_17[3] = __pyx_t_6;
          __pyx_t_18 = 39;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[3]);
          #endif
          __pyx_t_15 = 0;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_15 |= __Pyx_PyUnicode_KIND_04(__pyx_t_17[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_17[3]);
          #endif
          __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_17, 4, __pyx_t_18, __pyx_t_15);
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1436, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 1437:                     )
+1438:                     continue
          goto __pyx_L19_continue;
        }
+1439:             elif subtype_origin is None:
      __pyx_t_2 = (__pyx_v_subtype_origin == Py_None);
      if (__pyx_t_2) {
/* … */
      }
+1440:                 try:
        {
          /*try:*/ {
/* … */
          }
          __pyx_L125_error:;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
          __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
          __pyx_L127_except_error:;
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          goto __pyx_L1_error;
          __pyx_L131_try_continue:;
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          goto __pyx_L19_continue;
          __pyx_L129_try_return:;
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          goto __pyx_L0;
        }
+1441:                     if is_dc(arg_type):
            __pyx_t_2 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_arg_type); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1441, __pyx_L125_error)
            if (__pyx_t_2) {
/* … */
            }
+1442:                         return _handle_dataclass_type(field, name, data, arg_type, False, None)
              __pyx_t_7 = __pyx_v_name;
              __Pyx_INCREF(__pyx_t_7);
              if (!(likely(PyUnicode_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_7))) __PYX_ERR(0, 1442, __pyx_L125_error)
              __pyx_t_33.__pyx_n = 2;
              __pyx_t_33.as_objects = Py_False;
              __pyx_t_33.parent = Py_None;
              __pyx_t_6 = __pyx_f_9datamodel_10converters__handle_dataclass_type(__pyx_v_field, ((PyObject*)__pyx_t_7), __pyx_v_data, __pyx_v_arg_type, &__pyx_t_33); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1442, __pyx_L125_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              {
                PyObject *__pyx_temp;
                {
                  __pyx_temp = __pyx_r;
                  __pyx_r = __pyx_t_6;
                }
                __Pyx_XDECREF(__pyx_temp);
              }
              __pyx_t_6 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              goto __pyx_L129_try_return;
+1443:                     elif arg_type in encoders:
            __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_encoders); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1443, __pyx_L125_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_arg_type, __pyx_t_6, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1443, __pyx_L125_error)
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (__pyx_t_2) {
/* … */
            }
+1444:                         return _parse_builtin_type(field, arg_type, data, encoder)
              __pyx_t_6 = __pyx_f_9datamodel_10converters__parse_builtin_type(__pyx_v_field, __pyx_v_arg_type, __pyx_v_data, __pyx_v_encoder); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1444, __pyx_L125_error)
              __Pyx_GOTREF(__pyx_t_6);
              {
                PyObject *__pyx_temp;
                {
                  __pyx_temp = __pyx_r;
                  __pyx_r = __pyx_t_6;
                }
                __Pyx_XDECREF(__pyx_temp);
              }
              __pyx_t_6 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              goto __pyx_L129_try_return;
+1445:                     elif isinstance(data, arg_type):
            __pyx_t_2 = PyObject_IsInstance(__pyx_v_data, __pyx_v_arg_type); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1445, __pyx_L125_error)
            if (__pyx_t_2) {
/* … */
            }
+1446:                         return data
              {
                PyObject *__pyx_temp;
                {
                  __pyx_temp = __pyx_r;
                  __Pyx_INCREF(__pyx_v_data);
                  __pyx_r = __pyx_v_data;
                }
                __Pyx_XDECREF(__pyx_temp);
              }
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              goto __pyx_L129_try_return;
 1447:                     else:
 1448:                         # Not matching => record an error
+1449:                         errors.append(
            /*else*/ {
/* … */
              __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_errors, __pyx_t_19); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 1449, __pyx_L125_error)
              __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;

+1450:                             f"Invalid type for {field_name}, Data {data!r} is not an instance of {arg_type}"
              __pyx_t_6 = __Pyx_PyUnicode_Unicode(__pyx_v_field_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1450, __pyx_L125_error)
              __Pyx_GOTREF(__pyx_t_6);
              __pyx_t_7 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_data), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1450, __pyx_L125_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_v_arg_type, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1450, __pyx_L125_error)
              __Pyx_GOTREF(__pyx_t_11);
              __pyx_t_29[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_type_for_2;
              __pyx_t_29[1] = __pyx_t_6;
              __pyx_t_29[2] = __pyx_mstate_global->__pyx_kp_u_Data;
              __pyx_t_29[3] = __pyx_t_7;
              __pyx_t_29[4] = __pyx_mstate_global->__pyx_kp_u_is_not_an_instance_of;
              __pyx_t_29[5] = __pyx_t_11;
              __pyx_t_18 = 47;
              #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
              __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_29[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_29[3]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_29[5]);
              #endif
              __pyx_t_15 = 0;
              #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
              __pyx_t_15 |= __Pyx_PyUnicode_KIND_04(__pyx_t_29[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_29[3]) | __Pyx_PyUnicode_KIND_04(__pyx_t_29[5]);
              #endif
              __pyx_t_19 = __Pyx_PyUnicode_Join(__pyx_t_29, 6, __pyx_t_18, __pyx_t_15);
              if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1450, __pyx_L125_error)
              __Pyx_GOTREF(__pyx_t_19);
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 1451:                         )
+1452:                         continue
              goto __pyx_L131_try_continue;
            }
+1453:                 except ValueError as exc:
          __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
          if (__pyx_t_15) {
            __Pyx_AddTraceback("datamodel.converters._parse_union_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_19, &__pyx_t_11, &__pyx_t_7) < 0) __PYX_ERR(0, 1453, __pyx_L127_except_error)
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_11);
            __Pyx_XGOTREF(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_11);
            __pyx_v_exc = ((PyObject*)__pyx_t_11);
            /*try:*/ {
/* … */
            /*finally:*/ {
              __pyx_L139_error:;
              /*exception exit:*/{
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
                __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
                 __Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_27, &__pyx_t_28);
                if ( unlikely(__Pyx_GetException(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25) < 0)) __Pyx_ErrFetch(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25);
                __Pyx_XGOTREF(__pyx_t_23);
                __Pyx_XGOTREF(__pyx_t_24);
                __Pyx_XGOTREF(__pyx_t_25);
                __Pyx_XGOTREF(__pyx_t_26);
                __Pyx_XGOTREF(__pyx_t_27);
                __Pyx_XGOTREF(__pyx_t_28);
                __pyx_t_15 = __pyx_lineno; __pyx_t_21 = __pyx_clineno; __pyx_t_22 = __pyx_filename;
                {
                  __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                }
                __Pyx_XGIVEREF(__pyx_t_26);
                __Pyx_XGIVEREF(__pyx_t_27);
                __Pyx_XGIVEREF(__pyx_t_28);
                __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_27, __pyx_t_28);
                __Pyx_XGIVEREF(__pyx_t_23);
                __Pyx_XGIVEREF(__pyx_t_24);
                __Pyx_XGIVEREF(__pyx_t_25);
                __Pyx_ErrRestore(__pyx_t_23, __pyx_t_24, __pyx_t_25);
                __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
                __pyx_lineno = __pyx_t_15; __pyx_clineno = __pyx_t_21; __pyx_filename = __pyx_t_22;
                goto __pyx_L127_except_error;
              }
              __pyx_L136_continue: {
                __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                goto __pyx_L134_except_continue;
              }
            }
            __pyx_L134_except_continue:;
            __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            goto __pyx_L131_try_continue;
          }
          goto __pyx_L127_except_error;
+1454:                     errors.append(f"{field.name}: {exc}")
              __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1454, __pyx_L139_error)
              __Pyx_GOTREF(__pyx_t_6);
              __pyx_t_16 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1454, __pyx_L139_error)
              __Pyx_GOTREF(__pyx_t_16);
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_exc, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1454, __pyx_L139_error)
              __Pyx_GOTREF(__pyx_t_6);
              __pyx_t_34[0] = __pyx_t_16;
              __pyx_t_34[1] = __pyx_mstate_global->__pyx_kp_u__5;
              __pyx_t_34[2] = __pyx_t_6;
              __pyx_t_18 = 2;
              #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
              __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_34[0]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_34[2]);
              #endif
              __pyx_t_15 = 0;
              #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
              __pyx_t_15 |= __Pyx_PyUnicode_KIND_04(__pyx_t_34[0]) | __Pyx_PyUnicode_KIND_04(__pyx_t_34[2]);
              #endif
              __pyx_t_30 = __Pyx_PyUnicode_Join(__pyx_t_34, 3, __pyx_t_18, __pyx_t_15);
              if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 1454, __pyx_L139_error)
              __Pyx_GOTREF(__pyx_t_30);
              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_errors, __pyx_t_30); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 1454, __pyx_L139_error)
              __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;

+1455:                     continue
              goto __pyx_L136_continue;
            }
 1456:             else:
+1457:                 try:
      /*else*/ {
        {
          /*try:*/ {
/* … */
          }
          __pyx_L145_error:;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
          __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
          __pyx_L147_except_error:;
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
          goto __pyx_L1_error;
          __pyx_L151_try_continue:;
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
          goto __pyx_L19_continue;
          __pyx_L149_try_return:;
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
          goto __pyx_L0;
        }
      }
      __pyx_L68:;
    }
 1458:                     # fallback to builtin parse
+1459:                     return _parse_typing(
            __pyx_t_9.__pyx_n = 2;
            __pyx_t_9.encoder = __pyx_v_encoder;
            __pyx_t_9.as_objects = Py_False;
            __pyx_t_7 = __pyx_f_9datamodel_10converters__parse_typing(__pyx_v_field, __pyx_v_arg_type, __pyx_v_data, &__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1459, __pyx_L145_error)
            __Pyx_GOTREF(__pyx_t_7);
            {
              PyObject *__pyx_temp;
              {
                __pyx_temp = __pyx_r;
                __pyx_r = __pyx_t_7;
              }
              __Pyx_XDECREF(__pyx_temp);
            }
            __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            goto __pyx_L149_try_return;
 1460:                         field,
 1461:                         arg_type,
 1462:                         data,
 1463:                         encoder,
 1464:                         False
 1465:                     )
+1466:                 except ValueError as exc:
          __pyx_t_21 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
          if (__pyx_t_21) {
            __Pyx_AddTraceback("datamodel.converters._parse_union_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_11, &__pyx_t_19) < 0) __PYX_ERR(0, 1466, __pyx_L147_except_error)
            __Pyx_XGOTREF(__pyx_t_7);
            __Pyx_XGOTREF(__pyx_t_11);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_INCREF(__pyx_t_11);
            __pyx_v_exc = ((PyObject*)__pyx_t_11);
            /*try:*/ {
/* … */
            /*finally:*/ {
              __pyx_L158_error:;
              /*exception exit:*/{
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0;
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
                __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
                 __Pyx_ExceptionSwap(&__pyx_t_25, &__pyx_t_24, &__pyx_t_23);
                if ( unlikely(__Pyx_GetException(&__pyx_t_28, &__pyx_t_27, &__pyx_t_26) < 0)) __Pyx_ErrFetch(&__pyx_t_28, &__pyx_t_27, &__pyx_t_26);
                __Pyx_XGOTREF(__pyx_t_28);
                __Pyx_XGOTREF(__pyx_t_27);
                __Pyx_XGOTREF(__pyx_t_26);
                __Pyx_XGOTREF(__pyx_t_25);
                __Pyx_XGOTREF(__pyx_t_24);
                __Pyx_XGOTREF(__pyx_t_23);
                __pyx_t_21 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_22 = __pyx_filename;
                {
                  __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                }
                __Pyx_XGIVEREF(__pyx_t_25);
                __Pyx_XGIVEREF(__pyx_t_24);
                __Pyx_XGIVEREF(__pyx_t_23);
                __Pyx_ExceptionReset(__pyx_t_25, __pyx_t_24, __pyx_t_23);
                __Pyx_XGIVEREF(__pyx_t_28);
                __Pyx_XGIVEREF(__pyx_t_27);
                __Pyx_XGIVEREF(__pyx_t_26);
                __Pyx_ErrRestore(__pyx_t_28, __pyx_t_27, __pyx_t_26);
                __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0;
                __pyx_lineno = __pyx_t_21; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_22;
                goto __pyx_L147_except_error;
              }
              __pyx_L155_continue: {
                __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                goto __pyx_L153_except_continue;
              }
            }
            __pyx_L153_except_continue:;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
            goto __pyx_L151_try_continue;
          }
+1467:                     errors.append(f"{field.name}: {exc}")
              __pyx_t_30 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 1467, __pyx_L158_error)
              __Pyx_GOTREF(__pyx_t_30);
              __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_30, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1467, __pyx_L158_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;
              __pyx_t_30 = __Pyx_PyObject_FormatSimple(__pyx_v_exc, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 1467, __pyx_L158_error)
              __Pyx_GOTREF(__pyx_t_30);
              __pyx_t_34[0] = __pyx_t_6;
              __pyx_t_34[1] = __pyx_mstate_global->__pyx_kp_u__5;
              __pyx_t_34[2] = __pyx_t_30;
              __pyx_t_18 = 2;
              #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
              __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_34[0]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_34[2]);
              #endif
              __pyx_t_21 = 0;
              #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
              __pyx_t_21 |= __Pyx_PyUnicode_KIND_04(__pyx_t_34[0]) | __Pyx_PyUnicode_KIND_04(__pyx_t_34[2]);
              #endif
              __pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_34, 3, __pyx_t_18, __pyx_t_21);
              if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1467, __pyx_L158_error)
              __Pyx_GOTREF(__pyx_t_16);
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;
              __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_errors, __pyx_t_16); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 1467, __pyx_L158_error)
              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;

+1468:                     continue
              goto __pyx_L155_continue;
            }
+1469:                 except Exception as exc:
          __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
          if (__pyx_t_15) {
            __Pyx_AddTraceback("datamodel.converters._parse_union_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_19, &__pyx_t_11, &__pyx_t_7) < 0) __PYX_ERR(0, 1469, __pyx_L147_except_error)
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_11);
            __Pyx_XGOTREF(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_11);
            __pyx_v_exc = __pyx_t_11;
            /*try:*/ {
/* … */
            /*finally:*/ {
              __pyx_L169_error:;
              /*exception exit:*/{
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
                __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
                 __Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_27, &__pyx_t_28);
                if ( unlikely(__Pyx_GetException(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25) < 0)) __Pyx_ErrFetch(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25);
                __Pyx_XGOTREF(__pyx_t_23);
                __Pyx_XGOTREF(__pyx_t_24);
                __Pyx_XGOTREF(__pyx_t_25);
                __Pyx_XGOTREF(__pyx_t_26);
                __Pyx_XGOTREF(__pyx_t_27);
                __Pyx_XGOTREF(__pyx_t_28);
                __pyx_t_15 = __pyx_lineno; __pyx_t_21 = __pyx_clineno; __pyx_t_22 = __pyx_filename;
                {
                  __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                }
                __Pyx_XGIVEREF(__pyx_t_26);
                __Pyx_XGIVEREF(__pyx_t_27);
                __Pyx_XGIVEREF(__pyx_t_28);
                __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_27, __pyx_t_28);
                __Pyx_XGIVEREF(__pyx_t_23);
                __Pyx_XGIVEREF(__pyx_t_24);
                __Pyx_XGIVEREF(__pyx_t_25);
                __Pyx_ErrRestore(__pyx_t_23, __pyx_t_24, __pyx_t_25);
                __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
                __pyx_lineno = __pyx_t_15; __pyx_clineno = __pyx_t_21; __pyx_filename = __pyx_t_22;
                goto __pyx_L147_except_error;
              }
              __pyx_L166_continue: {
                __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                goto __pyx_L164_except_continue;
              }
            }
            __pyx_L164_except_continue:;
            __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            goto __pyx_L151_try_continue;
          }
          goto __pyx_L147_except_error;
+1470:                     errors.append(f"Parse Error on {field.name}, {arg_type}: {exc}")
              __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1470, __pyx_L169_error)
              __Pyx_GOTREF(__pyx_t_16);
              __pyx_t_30 = __Pyx_PyObject_FormatSimple(__pyx_t_16, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 1470, __pyx_L169_error)
              __Pyx_GOTREF(__pyx_t_30);
              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
              __pyx_t_16 = __Pyx_PyObject_FormatSimple(__pyx_v_arg_type, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1470, __pyx_L169_error)
              __Pyx_GOTREF(__pyx_t_16);
              __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_exc, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1470, __pyx_L169_error)
              __Pyx_GOTREF(__pyx_t_6);
              __pyx_t_29[0] = __pyx_mstate_global->__pyx_kp_u_Parse_Error_on;
              __pyx_t_29[1] = __pyx_t_30;
              __pyx_t_29[2] = __pyx_mstate_global->__pyx_kp_u__7;
              __pyx_t_29[3] = __pyx_t_16;
              __pyx_t_29[4] = __pyx_mstate_global->__pyx_kp_u__5;
              __pyx_t_29[5] = __pyx_t_6;
              __pyx_t_18 = 19;
              #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
              __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_29[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_29[3]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_29[5]);
              #endif
              __pyx_t_15 = 0;
              #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
              __pyx_t_15 |= __Pyx_PyUnicode_KIND_04(__pyx_t_29[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_29[3]) | __Pyx_PyUnicode_KIND_04(__pyx_t_29[5]);
              #endif
              __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_29, 6, __pyx_t_18, __pyx_t_15);
              if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1470, __pyx_L169_error)
              __Pyx_GOTREF(__pyx_t_10);
              __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;
              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_20 = __Pyx_PyList_Append(__pyx_v_errors, __pyx_t_10); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(0, 1470, __pyx_L169_error)
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

+1471:                     continue
              goto __pyx_L166_continue;
            }
 1472: 
 1473:     # If we get here, all union attempts failed
+1474:     if errors:
  {
    Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_v_errors);
    if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 1474, __pyx_L1_error)
    __pyx_t_2 = (__pyx_temp != 0);
  }

  if (unlikely(__pyx_t_2)) {
/* … */
  }
+1475:         error_msg = f"All Union types failed for {field_name}. Errors: " + "; ".join(errors)
    __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_v_field_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_34[0] = __pyx_mstate_global->__pyx_kp_u_All_Union_types_failed_for;
    __pyx_t_34[1] = __pyx_t_1;
    __pyx_t_34[2] = __pyx_mstate_global->__pyx_kp_u_Errors;
    __pyx_t_4 = 37;
    #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
    __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_34[1]);
    #endif
    __pyx_t_21 = 0;
    #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
    __pyx_t_21 |= __Pyx_PyUnicode_KIND_04(__pyx_t_34[1]);
    #endif
    __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_34, 3, __pyx_t_4, __pyx_t_21);
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__8, __pyx_v_errors); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_11 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_error_msg = ((PyObject*)__pyx_t_11);
    __pyx_t_11 = 0;
+1476:         raise ValueError(error_msg)
    __pyx_t_1 = NULL;
    __pyx_t_8 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_error_msg};
      __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1476, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
    }
    __Pyx_Raise(__pyx_t_11, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __PYX_ERR(0, 1476, __pyx_L1_error)
 1477:     else:
+1478:         raise ValueError(
  /*else*/ {
    __pyx_t_1 = NULL;
+1479:             f"Invalid type for {field_name} with data={data}, no matching type found"
    __pyx_t_7 = __Pyx_PyUnicode_Unicode(__pyx_v_field_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1479, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_19 = __Pyx_PyObject_FormatSimple(__pyx_v_data, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1479, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_19);
    __pyx_t_35[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_type_for_2;
    __pyx_t_35[1] = __pyx_t_7;
    __pyx_t_35[2] = __pyx_mstate_global->__pyx_kp_u_with_data;
    __pyx_t_35[3] = __pyx_t_19;
    __pyx_t_35[4] = __pyx_mstate_global->__pyx_kp_u_no_matching_type_found;
    __pyx_t_4 = 52;
    #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
    __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_35[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_35[3]);
    #endif
    __pyx_t_21 = 0;
    #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
    __pyx_t_21 |= __Pyx_PyUnicode_KIND_04(__pyx_t_35[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_35[3]);
    #endif
    __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_35, 5, __pyx_t_4, __pyx_t_21);
    if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1479, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
    __pyx_t_8 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_10};
      __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1478, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
    }
    __Pyx_Raise(__pyx_t_11, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __PYX_ERR(0, 1478, __pyx_L1_error)
  }
 1480:         )
 1481: 
+1482: cdef object _parse_type(
static PyObject *__pyx_f_9datamodel_10converters__parse_type(PyObject *__pyx_v_field, PyObject *__pyx_v_T, PyObject *__pyx_v_data, struct __pyx_opt_args_9datamodel_10converters__parse_type *__pyx_optional_args) {
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("datamodel.converters._parse_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_origin);
  __Pyx_XDECREF(__pyx_v_targs);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_sub);
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_isdc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_9datamodel_10converters__parse_type {
  int __pyx_n;
  PyObject *encoder;
  PyObject *as_objects;
};
 1483:     object field,
 1484:     object T,
 1485:     object data,
+1486:     object encoder=None,
  PyObject *__pyx_v_encoder = ((PyObject *)Py_None);
+1487:     object as_objects=False,
  PyObject *__pyx_v_as_objects = ((PyObject *)Py_False);
  PyObject *__pyx_v_origin = 0;
  PyObject *__pyx_v_targs = 0;
  PyObject *__pyx_v_name = 0;
  CYTHON_UNUSED PyObject *__pyx_v_sub = 0;
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_v_isdc = 0;
  PyObject *__pyx_r = NULL;
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_encoder = __pyx_optional_args->encoder;
      if (__pyx_optional_args->__pyx_n > 1) {
        __pyx_v_as_objects = __pyx_optional_args->as_objects;
      }
    }
  }
 1488: ):
 1489:     """
 1490:     Parse a value to a typing type.
 1491:     """
 1492:     # local cdef variables:
+1493:     cdef object origin = get_origin(T)
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_get_origin); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1493, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_T};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1493, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_origin = __pyx_t_1;
  __pyx_t_1 = 0;
+1494:     cdef object targs = get_args(T)
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_get_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_T};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1494, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_targs = __pyx_t_1;
  __pyx_t_1 = 0;
+1495:     cdef object name = getattr(T, '_name', None)  # T._name or None if not present
  __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_T, __pyx_mstate_global->__pyx_n_u_name_3, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_name = __pyx_t_1;
  __pyx_t_1 = 0;
+1496:     cdef object sub = None     # for subtypes, local cache
  __Pyx_INCREF(Py_None);
  __pyx_v_sub = Py_None;
+1497:     cdef object result = None
  __Pyx_INCREF(Py_None);
  __pyx_v_result = Py_None;
+1498:     cdef object isdc = is_dc(T)
  __pyx_t_5 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_T); if (unlikely(__pyx_t_5 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1498, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  __pyx_v_isdc = __pyx_t_1;
  __pyx_t_1 = 0;
 1499: 
+1500:     if data is None:
  __pyx_t_5 = (__pyx_v_data == Py_None);
  if (__pyx_t_5) {
/* … */
  }
+1501:         return None
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 1502: 
+1503:     if isdc:
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_isdc); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 1503, __pyx_L1_error)
  if (__pyx_t_5) {
/* … */
  }
+1504:         return _handle_dataclass_type(None, name, data, T, as_objects, None)
    __pyx_t_1 = __pyx_v_name;
    __Pyx_INCREF(__pyx_t_1);
    if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(0, 1504, __pyx_L1_error)
    __pyx_t_6.__pyx_n = 2;
    __pyx_t_6.as_objects = __pyx_v_as_objects;
    __pyx_t_6.parent = Py_None;
    __pyx_t_2 = __pyx_f_9datamodel_10converters__handle_dataclass_type(Py_None, ((PyObject*)__pyx_t_1), __pyx_v_data, __pyx_v_T, &__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1504, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_2;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_2 = 0;
    goto __pyx_L0;
 1505:     # Field type shortcuts
+1506:     elif origin is dict and isinstance(data, dict):
  __pyx_t_7 = (__pyx_v_origin == ((PyObject *)(&PyDict_Type)));
  if (__pyx_t_7) {

  } else {

    __pyx_t_5 = __pyx_t_7;

    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_7 = PyDict_Check(__pyx_v_data); 

  __pyx_t_5 = __pyx_t_7;

  __pyx_L5_bool_binop_done:;
  if (__pyx_t_5) {
/* … */
  }
+1507:         return _parse_dict_type(field, T, data, encoder, targs)
    __pyx_t_2 = __pyx_f_9datamodel_10converters__parse_dict_type(__pyx_v_field, __pyx_v_T, __pyx_v_data, __pyx_v_encoder, __pyx_v_targs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1507, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_2;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_2 = 0;
    goto __pyx_L0;
+1508:     elif origin is list:
  __pyx_t_5 = (__pyx_v_origin == ((PyObject *)(&PyList_Type)));
  if (__pyx_t_5) {
/* … */
  }
+1509:         return _parse_list_type(field, T, data, encoder, targs)
    __pyx_t_2 = __pyx_f_9datamodel_10converters__parse_list_type(__pyx_v_field, __pyx_v_T, __pyx_v_data, __pyx_v_encoder, __pyx_v_targs, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_2;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_2 = 0;
    goto __pyx_L0;
+1510:     elif origin is tuple:
  __pyx_t_5 = (__pyx_v_origin == ((PyObject *)(&PyTuple_Type)));
  if (__pyx_t_5) {
/* … */
  }
+1511:         return _parse_tuple_type(field, T, data, encoder, targs)
    __pyx_t_2 = __pyx_f_9datamodel_10converters__parse_tuple_type(__pyx_v_field, __pyx_v_T, __pyx_v_data, __pyx_v_encoder, __pyx_v_targs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1511, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_2;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_2 = 0;
    goto __pyx_L0;
+1512:     elif origin is set:
  __pyx_t_5 = (__pyx_v_origin == ((PyObject *)(&PySet_Type)));
  if (__pyx_t_5) {
/* … */
  }
 1513:         # Handle Sets - convert lists to sets
+1514:         if isinstance(data, (list, tuple)):
    __pyx_t_7 = PyList_Check(__pyx_v_data); 
    if (!__pyx_t_7) {

    } else {

      __pyx_t_5 = __pyx_t_7;

      goto __pyx_L8_bool_binop_done;
    }
    __pyx_t_7 = PyTuple_Check(__pyx_v_data); 

    __pyx_t_5 = __pyx_t_7;

    __pyx_L8_bool_binop_done:;
    if (__pyx_t_5) {
/* … */
    }
+1515:             return set(data)  # Convert list/tuple to set
      __pyx_t_2 = PySet_New(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1515, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = __pyx_t_2;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L0;
+1516:         elif isinstance(data, set):
    __pyx_t_5 = PySet_Check(__pyx_v_data); 
    if (__pyx_t_5) {
/* … */
    }
+1517:             return data
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __Pyx_INCREF(__pyx_v_data);
          __pyx_r = __pyx_v_data;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      goto __pyx_L0;
 1518:         else:
+1519:             return {data} if data is not None else set()  # Wrap single value in set
    /*else*/ {
      __pyx_t_5 = (__pyx_v_data != Py_None);
      if (__pyx_t_5) {
        __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1519, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (PySet_Add(__pyx_t_1, __pyx_v_data) < (0)) __PYX_ERR(0, 1519, __pyx_L1_error)
        __pyx_t_2 = __pyx_t_1;
        __pyx_t_1 = 0;
      } else {
        __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1519, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_2 = __pyx_t_1;
        __pyx_t_1 = 0;
      }

      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = __pyx_t_2;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L0;
    }
+1520:     elif origin is frozenset:
  __pyx_t_5 = (__pyx_v_origin == ((PyObject *)(&PyFrozenSet_Type)));
  if (__pyx_t_5) {
/* … */
  }
 1521:         # Handle Frozensets - convert lists to frozensets
+1522:         if isinstance(data, (list, tuple)):
    __pyx_t_7 = PyList_Check(__pyx_v_data); 
    if (!__pyx_t_7) {

    } else {

      __pyx_t_5 = __pyx_t_7;

      goto __pyx_L11_bool_binop_done;
    }
    __pyx_t_7 = PyTuple_Check(__pyx_v_data); 

    __pyx_t_5 = __pyx_t_7;

    __pyx_L11_bool_binop_done:;
    if (__pyx_t_5) {
/* … */
    }
+1523:             return frozenset(data)  # Convert list/tuple to frozenset
      __pyx_t_2 = __Pyx_PyFrozenSet_New(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1523, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = __pyx_t_2;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L0;
+1524:         elif isinstance(data, frozenset):
    __pyx_t_5 = PyFrozenSet_Check(__pyx_v_data); 
    if (__pyx_t_5) {
/* … */
    }
+1525:             return data
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __Pyx_INCREF(__pyx_v_data);
          __pyx_r = __pyx_v_data;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      goto __pyx_L0;
 1526:         else:
+1527:             return frozenset([data]) if data is not None else frozenset()  # Wrap single value in frozenset
    /*else*/ {
      __pyx_t_5 = (__pyx_v_data != Py_None);
      if (__pyx_t_5) {
        {
          PyObject* const __pyx_temp[] = {__pyx_v_data};
          __pyx_t_1 = __Pyx_PyFrozenSet_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1527, __pyx_L1_error)
        }
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_2 = __pyx_t_1;
        __pyx_t_1 = 0;
      } else {
        __Pyx_INCREF(__pyx_mstate_global->__pyx_frozenset[0]);
        __pyx_t_2 = __pyx_mstate_global->__pyx_frozenset[0];
      }

      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = __pyx_t_2;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L0;
    }
/* … */
  __pyx_mstate_global->__pyx_frozenset[0] = PyFrozenSet_New(NULL); if (unlikely(!__pyx_mstate_global->__pyx_frozenset[0])) __PYX_ERR(0, 1527, __pyx_L1_error)
+1528:     elif origin is not None:
  __pyx_t_5 = (__pyx_v_origin != Py_None);
  if (__pyx_t_5) {
/* … */
  }
+1529:         if T in (int, float, str, bool) or T in encoders:
    __Pyx_INCREF(__pyx_v_T);
    __pyx_t_2 = __pyx_v_T;
    __pyx_t_8 = __Pyx_PyObject_RichCompareBool(__pyx_t_2, ((PyObject *)(&PyLong_Type)), Py_EQ); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1529, __pyx_L1_error)
    if (!__pyx_t_8) {

    } else {

      __pyx_t_7 = __pyx_t_8;

      goto __pyx_L16_bool_binop_done;
    }
    __pyx_t_8 = __Pyx_PyObject_RichCompareBool(__pyx_t_2, ((PyObject *)(&PyFloat_Type)), Py_EQ); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1529, __pyx_L1_error)
    if (!__pyx_t_8) {

    } else {

      __pyx_t_7 = __pyx_t_8;

      goto __pyx_L16_bool_binop_done;
    }
    __pyx_t_8 = __Pyx_PyObject_RichCompareBool(__pyx_t_2, ((PyObject *)(&PyUnicode_Type)), Py_EQ); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1529, __pyx_L1_error)
    if (!__pyx_t_8) {

    } else {

      __pyx_t_7 = __pyx_t_8;

      goto __pyx_L16_bool_binop_done;
    }
    __pyx_t_8 = __Pyx_PyObject_RichCompareBool(__pyx_t_2, ((PyObject *)(&PyBool_Type)), Py_EQ); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1529, __pyx_L1_error)

    __pyx_t_7 = __pyx_t_8;

    __pyx_L16_bool_binop_done:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_8 = __pyx_t_7;


    if (!__pyx_t_8) {

    } else {

      __pyx_t_5 = __pyx_t_8;

      goto __pyx_L14_bool_binop_done;
    }
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_encoders); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_v_T, __pyx_t_2, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1529, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    __pyx_t_5 = __pyx_t_8;

    __pyx_L14_bool_binop_done:;
    if (__pyx_t_5) {
/* … */
    }
+1530:             return _parse_builtin_type(field, T, data, encoder)
      __pyx_t_2 = __pyx_f_9datamodel_10converters__parse_builtin_type(__pyx_v_field, __pyx_v_T, __pyx_v_data, __pyx_v_encoder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1530, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = __pyx_t_2;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L0;
+1531:         return data
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_data);
        __pyx_r = __pyx_v_data;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+1532:     elif T is set:
  __pyx_t_5 = (__pyx_v_T == ((PyObject *)(&PySet_Type)));
  if (__pyx_t_5) {
/* … */
  }
 1533:         # Handle bare 'set' type
+1534:         if isinstance(data, (list, tuple)):
    __pyx_t_8 = PyList_Check(__pyx_v_data); 
    if (!__pyx_t_8) {

    } else {

      __pyx_t_5 = __pyx_t_8;

      goto __pyx_L21_bool_binop_done;
    }
    __pyx_t_8 = PyTuple_Check(__pyx_v_data); 

    __pyx_t_5 = __pyx_t_8;

    __pyx_L21_bool_binop_done:;
    if (__pyx_t_5) {
/* … */
    }
+1535:             return set(data)  # Convert list/tuple to set
      __pyx_t_2 = PySet_New(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1535, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = __pyx_t_2;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L0;
+1536:         elif isinstance(data, set):
    __pyx_t_5 = PySet_Check(__pyx_v_data); 
    if (__pyx_t_5) {
/* … */
    }
+1537:             return data
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __Pyx_INCREF(__pyx_v_data);
          __pyx_r = __pyx_v_data;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      goto __pyx_L0;
 1538:         else:
+1539:             return {data} if data is not None else set()
    /*else*/ {
      __pyx_t_5 = (__pyx_v_data != Py_None);
      if (__pyx_t_5) {
        __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1539, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (PySet_Add(__pyx_t_1, __pyx_v_data) < (0)) __PYX_ERR(0, 1539, __pyx_L1_error)
        __pyx_t_2 = __pyx_t_1;
        __pyx_t_1 = 0;
      } else {
        __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1539, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_2 = __pyx_t_1;
        __pyx_t_1 = 0;
      }

      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = __pyx_t_2;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_2 = 0;
      goto __pyx_L0;
    }
 1540:     else:
 1541:         # fallback to builtin parse
+1542:         result = _parse_builtin_type(field, T, data, encoder)
  /*else*/ {
    __pyx_t_2 = __pyx_f_9datamodel_10converters__parse_builtin_type(__pyx_v_field, __pyx_v_T, __pyx_v_data, __pyx_v_encoder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1542, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_2);
    __pyx_t_2 = 0;
+1543:         return result
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_result);
        __pyx_r = __pyx_v_result;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
  }
 1544: 
+1545: cdef object _parse_typing(
static PyObject *__pyx_f_9datamodel_10converters__parse_typing(PyObject *__pyx_v_field, PyObject *__pyx_v_T, PyObject *__pyx_v_data, struct __pyx_opt_args_9datamodel_10converters__parse_typing *__pyx_optional_args) {
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_XDECREF(__pyx_t_20);
  __Pyx_AddTraceback("datamodel.converters._parse_typing", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_origin);
  __Pyx_XDECREF(__pyx_v_targs);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_sub);
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_inner_type);

  __Pyx_XDECREF(__pyx_v_inner_origin);
  __Pyx_XDECREF(__pyx_v_real_type);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XDECREF(__pyx_v_converted_item);
  __Pyx_XDECREF(__pyx_v_set_data);
  __Pyx_XDECREF(__pyx_v_processed_set);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_9datamodel_10converters__parse_typing {
  int __pyx_n;
  PyObject *encoder;
  PyObject *as_objects;
  PyObject *parent;
};
 1546:     object field,
 1547:     object T,
 1548:     object data,
+1549:     object encoder=None,
  PyObject *__pyx_v_encoder = ((PyObject *)Py_None);
+1550:     object as_objects=False,
  PyObject *__pyx_v_as_objects = ((PyObject *)Py_False);
+1551:     object parent=None,
  PyObject *__pyx_v_parent = ((PyObject *)Py_None);
  PyObject *__pyx_v_origin = 0;
  PyObject *__pyx_v_targs = 0;
  PyObject *__pyx_v_name = 0;
  CYTHON_UNUSED PyObject *__pyx_v_sub = 0;
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_v_inner_type = 0;
  int __pyx_v_inner_is_dc;
  CYTHON_UNUSED PyObject *__pyx_v_inner_origin = NULL;
  PyObject *__pyx_v_real_type = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_v_converted_item = NULL;
  PyObject *__pyx_v_set_data = NULL;
  PyObject *__pyx_v_processed_set = NULL;
  PyObject *__pyx_r = NULL;
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_encoder = __pyx_optional_args->encoder;
      if (__pyx_optional_args->__pyx_n > 1) {
        __pyx_v_as_objects = __pyx_optional_args->as_objects;
        if (__pyx_optional_args->__pyx_n > 2) {
          __pyx_v_parent = __pyx_optional_args->parent;
        }
      }
    }
  }
 1552: ):
 1553:     """
 1554:     Parse a value to a typing type.
 1555:     """
 1556:     # local cdef variables:
 1557:     cdef object origin, targs
+1558:     cdef object name = getattr(T, '_name', None)  # T._name or None if not present
  __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_T, __pyx_mstate_global->__pyx_n_u_name_3, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_name = __pyx_t_1;
  __pyx_t_1 = 0;
+1559:     cdef object sub = None     # for subtypes, local cache
  __Pyx_INCREF(Py_None);
  __pyx_v_sub = Py_None;
+1560:     cdef object result = None
  __Pyx_INCREF(Py_None);
  __pyx_v_result = Py_None;
+1561:     cdef object inner_type = None
  __Pyx_INCREF(Py_None);
  __pyx_v_inner_type = Py_None;
+1562:     cdef bint inner_is_dc = 0 # field._inner_is_dc or is_dataclass(inner_type)
  __pyx_v_inner_is_dc = 0;
 1563: 
+1564:     if data is None:
  __pyx_t_2 = (__pyx_v_data == Py_None);
  if (__pyx_t_2) {
/* … */
  }
+1565:         return None  # no data, short-circuiting
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 1566: 
 1567:     # Use cached values only if T is exactly the field's declared type.
+1568:     if T == field.type:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_type_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_CompareBoolEq_object_object(__pyx_v_T, __pyx_t_1, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1568, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
/* … */
    goto __pyx_L4;
  }
+1569:         origin = field.origin
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_origin_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1569, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_origin = __pyx_t_1;
    __pyx_t_1 = 0;
+1570:         targs = field.args
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_args_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1570, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_targs = __pyx_t_1;
    __pyx_t_1 = 0;
+1571:     elif field._inner_type and field._inner_type == inner_type:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1571, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1571, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

  } else {

    __pyx_t_2 = __pyx_t_3;

    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1571, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_CompareBoolEq_object_object(__pyx_t_1, __pyx_v_inner_type, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1571, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  __pyx_t_2 = __pyx_t_3;

  __pyx_L5_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
    goto __pyx_L4;
  }
+1572:         origin = field._inner_origin
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_origin); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_origin = __pyx_t_1;
    __pyx_t_1 = 0;
+1573:         targs = field._inner_args
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_targs = __pyx_t_1;
    __pyx_t_1 = 0;
 1574:     else:
+1575:         origin = get_origin(T)
  /*else*/ {
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_get_origin); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_T};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1575, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_v_origin = __pyx_t_1;
    __pyx_t_1 = 0;
+1576:         targs = get_args(T)
    __pyx_t_5 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_get_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1576, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_5);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_T};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1576, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_v_targs = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L4:;
 1577: 
+1578:     origin = normalize_origin(origin)
  __pyx_t_1 = __pyx_f_9datamodel_10converters_normalize_origin(__pyx_v_origin); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_origin, __pyx_t_1);
  __pyx_t_1 = 0;
 1579: 
 1580:     # For generic (typing) fields, reuse cached inner type info if available.
+1581:     if origin in (list, set, frozenset) and targs:
  __Pyx_INCREF(__pyx_v_origin);
  __pyx_t_1 = __pyx_v_origin;
  __pyx_t_7 = __Pyx_PyObject_RichCompareBool(__pyx_t_1, ((PyObject *)(&PyList_Type)), Py_EQ); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1581, __pyx_L1_error)
  if (!__pyx_t_7) {

  } else {

    __pyx_t_3 = __pyx_t_7;

    goto __pyx_L10_bool_binop_done;
  }
  __pyx_t_7 = __Pyx_PyObject_RichCompareBool(__pyx_t_1, ((PyObject *)(&PySet_Type)), Py_EQ); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1581, __pyx_L1_error)
  if (!__pyx_t_7) {

  } else {

    __pyx_t_3 = __pyx_t_7;

    goto __pyx_L10_bool_binop_done;
  }
  __pyx_t_7 = __Pyx_PyObject_RichCompareBool(__pyx_t_1, ((PyObject *)(&PyFrozenSet_Type)), Py_EQ); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1581, __pyx_L1_error)

  __pyx_t_3 = __pyx_t_7;

  __pyx_L10_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_7 = __pyx_t_3;


  if (__pyx_t_7) {

  } else {

    __pyx_t_2 = __pyx_t_7;

    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_targs); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1581, __pyx_L1_error)

  __pyx_t_2 = __pyx_t_7;

  __pyx_L8_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
    goto __pyx_L7;
  }
+1582:         if field._inner_type is not None:
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1582, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = (__pyx_t_1 != Py_None);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_2) {
/* … */
      goto __pyx_L13;
    }
+1583:             inner_type = field._inner_type
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1583, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF_SET(__pyx_v_inner_type, __pyx_t_1);
      __pyx_t_1 = 0;
+1584:             inner_origin = field._inner_origin
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_origin); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1584, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_inner_origin = __pyx_t_1;
      __pyx_t_1 = 0;
 1585:             # Optionally, also use cached type arguments for the inner type.
 1586:         else:
+1587:             inner_type = targs[0] if targs else Any
    /*else*/ {
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_targs); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1587, __pyx_L1_error)
      if (__pyx_t_2) {
        __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_targs, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1587, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = __pyx_t_4;
        __pyx_t_4 = 0;
      } else {
        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Any); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1587, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = __pyx_t_4;
        __pyx_t_4 = 0;
      }

      __Pyx_DECREF_SET(__pyx_v_inner_type, __pyx_t_1);
      __pyx_t_1 = 0;
+1588:             inner_origin = get_origin(inner_type)
      __pyx_t_4 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_get_origin); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1588, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
        assert(__pyx_t_4);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
        __pyx_t_6 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_inner_type};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1588, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __pyx_v_inner_origin = __pyx_t_1;
      __pyx_t_1 = 0;
    }
    __pyx_L13:;
 1589:     else:
+1590:         inner_type = None
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_inner_type, Py_None);
+1591:         inner_origin = None
    __Pyx_INCREF(Py_None);
    __pyx_v_inner_origin = Py_None;
  }
  __pyx_L7:;
 1592: 
+1593:     inner_is_dc = field._inner_is_dc or is_dc(inner_type)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_is_dc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1593, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!__pyx_t_7) {

  } else {

    __pyx_t_2 = __pyx_t_7;

    goto __pyx_L14_bool_binop_done;
  }
  __pyx_t_7 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_inner_type); if (unlikely(__pyx_t_7 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1593, __pyx_L1_error)

  __pyx_t_2 = __pyx_t_7;

  __pyx_L14_bool_binop_done:;
  __pyx_v_inner_is_dc = __pyx_t_2;
 1594: 
 1595:     # Put more frequently cases first:
+1596:     if field.is_dc or is_dc(T):
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_is_dc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1596, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!__pyx_t_7) {

  } else {

    __pyx_t_2 = __pyx_t_7;

    goto __pyx_L17_bool_binop_done;
  }
  __pyx_t_7 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_T); if (unlikely(__pyx_t_7 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1596, __pyx_L1_error)

  __pyx_t_2 = __pyx_t_7;

  __pyx_L17_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
+1597:         return _handle_dataclass_type(None, name, data, T, as_objects, None)
    __pyx_t_1 = __pyx_v_name;
    __Pyx_INCREF(__pyx_t_1);
    if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(0, 1597, __pyx_L1_error)
    __pyx_t_8.__pyx_n = 2;
    __pyx_t_8.as_objects = __pyx_v_as_objects;
    __pyx_t_8.parent = Py_None;
    __pyx_t_5 = __pyx_f_9datamodel_10converters__handle_dataclass_type(Py_None, ((PyObject*)__pyx_t_1), __pyx_v_data, __pyx_v_T, &__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_5;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_5 = 0;
    goto __pyx_L0;
 1598: 
 1599:     # If the field is a Union and data is a list, use _parse_union_type.
+1600:     if is_union(origin):
  __pyx_t_2 = __pyx_f_9datamodel_10converters_is_union(__pyx_v_origin); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1600, __pyx_L1_error)
  if (__pyx_t_2) {
/* … */
  }
 1601:         # e.g. Optional[...] or Union[A, B]
+1602:         if len(targs) == 2 and type(None) in targs:
    __pyx_t_9 = PyObject_Length(__pyx_v_targs); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1602, __pyx_L1_error)
    __pyx_t_7 = (__pyx_t_9 == 2);


    if (__pyx_t_7) {

    } else {

      __pyx_t_2 = __pyx_t_7;

      goto __pyx_L21_bool_binop_done;
    }
    __pyx_t_7 = (__Pyx_PySequence_ContainsTF(((PyObject *)Py_TYPE(Py_None)), __pyx_v_targs, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1602, __pyx_L1_error)

    __pyx_t_2 = __pyx_t_7;

    __pyx_L21_bool_binop_done:;
    if (__pyx_t_2) {
/* … */
    }
 1603:             # Handle Optional[...] that is Union[..., None] cases first:
+1604:             if field._inner_priv:
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_priv); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1604, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1604, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_2) {
/* … */
      }
 1605:                 # If Optional but non-None is a primitive
+1606:                 return _parse_builtin_type(field, field._inner_type, data, encoder)
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1606, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_builtin_type(__pyx_v_field, __pyx_t_5, __pyx_v_data, __pyx_v_encoder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1606, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_1;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_1 = 0;
        goto __pyx_L0;
+1607:             elif field._inner_is_dc:
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_is_dc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1607, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1607, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_2) {
/* … */
      }
 1608:                 # non-None is a Optional Dataclass:
+1609:                 return _handle_dataclass_type(None, name, data, field._inner_type, as_objects, None)
        __pyx_t_1 = __pyx_v_name;
        __Pyx_INCREF(__pyx_t_1);
        if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(0, 1609, __pyx_L1_error)
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1609, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_8.__pyx_n = 2;
        __pyx_t_8.as_objects = __pyx_v_as_objects;
        __pyx_t_8.parent = Py_None;
        __pyx_t_4 = __pyx_f_9datamodel_10converters__handle_dataclass_type(Py_None, ((PyObject*)__pyx_t_1), __pyx_v_data, __pyx_t_5, &__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1609, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_4;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_4 = 0;
        goto __pyx_L0;
 1610:             else:
+1611:                 real_type = targs[0] if targs[1] is type(None) else targs[1]
      /*else*/ {
        __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_targs, 1, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1611, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_2 = (__pyx_t_5 == ((PyObject *)Py_TYPE(Py_None)));
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (__pyx_t_2) {
          __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_targs, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1611, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_4 = __pyx_t_5;
          __pyx_t_5 = 0;
        } else {
          __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_targs, 1, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1611, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_4 = __pyx_t_5;
          __pyx_t_5 = 0;
        }

        __pyx_v_real_type = __pyx_t_4;
        __pyx_t_4 = 0;
 1612:                 # Recursively parse the real_type exactly as if it weren't wrapped in Optional[…].
+1613:                 return _parse_typing(field, real_type, data, encoder, as_objects, parent)
        __pyx_t_10.__pyx_n = 3;
        __pyx_t_10.encoder = __pyx_v_encoder;
        __pyx_t_10.as_objects = __pyx_v_as_objects;
        __pyx_t_10.parent = __pyx_v_parent;
        __pyx_t_4 = __pyx_f_9datamodel_10converters__parse_typing(__pyx_v_field, __pyx_v_real_type, __pyx_v_data, &__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1613, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_4;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_4 = 0;
        goto __pyx_L0;
      }
 1614:         else:
+1615:             try:
    /*else*/ {
      {
        /*try:*/ {
/* … */
        }
        __pyx_L24_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
        __pyx_L26_except_error:;
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
        goto __pyx_L1_error;
        __pyx_L28_try_return:;
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
        goto __pyx_L0;
      }
    }
+1616:                 return _parse_union_type(
          __pyx_t_4 = __pyx_f_9datamodel_10converters__parse_union_type(__pyx_v_field, __pyx_v_T, __pyx_v_name, __pyx_v_data, __pyx_v_encoder, __pyx_v_origin, __pyx_v_targs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1616, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_4);
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_4;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_4 = 0;
          goto __pyx_L28_try_return;
 1617:                     field,
 1618:                     T,
 1619:                     name,
 1620:                     data,
 1621:                     encoder,
 1622:                     origin,
 1623:                     targs
 1624:                 )
+1625:             except Exception as e:
        __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
        if (__pyx_t_14) {
          __Pyx_AddTraceback("datamodel.converters._parse_typing", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_1) < 0) __PYX_ERR(0, 1625, __pyx_L26_except_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_5);
          __pyx_v_e = __pyx_t_5;
          /*try:*/ {
/* … */
          /*finally:*/ {
            __pyx_L35_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __Pyx_PyThreadState_assign
              __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 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_20); __pyx_t_20 = 0;
               __Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_27, &__pyx_t_28);
              if ( unlikely(__Pyx_GetException(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25) < 0)) __Pyx_ErrFetch(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25);
              __Pyx_XGOTREF(__pyx_t_23);
              __Pyx_XGOTREF(__pyx_t_24);
              __Pyx_XGOTREF(__pyx_t_25);
              __Pyx_XGOTREF(__pyx_t_26);
              __Pyx_XGOTREF(__pyx_t_27);
              __Pyx_XGOTREF(__pyx_t_28);
              __pyx_t_14 = __pyx_lineno; __pyx_t_21 = __pyx_clineno; __pyx_t_22 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
              }
              __Pyx_XGIVEREF(__pyx_t_26);
              __Pyx_XGIVEREF(__pyx_t_27);
              __Pyx_XGIVEREF(__pyx_t_28);
              __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_27, __pyx_t_28);
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_XGIVEREF(__pyx_t_24);
              __Pyx_XGIVEREF(__pyx_t_25);
              __Pyx_ErrRestore(__pyx_t_23, __pyx_t_24, __pyx_t_25);
              __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
              __pyx_lineno = __pyx_t_14; __pyx_clineno = __pyx_t_21; __pyx_filename = __pyx_t_22;
              goto __pyx_L26_except_error;
            }
          }
        }
        goto __pyx_L26_except_error;
+1626:                 raise ValueError(
            __pyx_t_16 = NULL;
+1627:                     f"Union parsing error for {field.name}: {e}"
            __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1627, __pyx_L35_error)
            __Pyx_GOTREF(__pyx_t_17);
            __pyx_t_18 = __Pyx_PyObject_FormatSimple(__pyx_t_17, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 1627, __pyx_L35_error)
            __Pyx_GOTREF(__pyx_t_18);
            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
            __pyx_t_17 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1627, __pyx_L35_error)
            __Pyx_GOTREF(__pyx_t_17);
            __pyx_t_19[0] = __pyx_mstate_global->__pyx_kp_u_Union_parsing_error_for;
            __pyx_t_19[1] = __pyx_t_18;
            __pyx_t_19[2] = __pyx_mstate_global->__pyx_kp_u__5;
            __pyx_t_19[3] = __pyx_t_17;
            __pyx_t_9 = 26;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_19[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_19[3]);
            #endif
            __pyx_t_14 = 0;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_14 |= __Pyx_PyUnicode_KIND_04(__pyx_t_19[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_19[3]);
            #endif
            __pyx_t_20 = __Pyx_PyUnicode_Join(__pyx_t_19, 4, __pyx_t_9, __pyx_t_14);
            if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1627, __pyx_L35_error)
            __Pyx_GOTREF(__pyx_t_20);
            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
            __pyx_t_6 = 1;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_16, __pyx_t_20};
              __pyx_t_15 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
              __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
              if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1626, __pyx_L35_error)
              __Pyx_GOTREF(__pyx_t_15);
            }
+1628:                 ) from e
            __Pyx_Raise(__pyx_t_15, 0, 0, __pyx_v_e);
            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
            __PYX_ERR(0, 1626, __pyx_L35_error)
          }
 1629:     # Other Field types
+1630:     if field._type_category == 'typing':
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_type_category); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_typing, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1630, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
/* … */
  }
 1631:         # For example, if the origin is list and the inner type is a dataclass,
 1632:         # use _handle_dataclass_type on each element.
+1633:         if origin is list:
    __pyx_t_2 = (__pyx_v_origin == ((PyObject *)(&PyList_Type)));
    if (__pyx_t_2) {
/* … */
    }
+1634:             if inner_is_dc:
      if (__pyx_v_inner_is_dc) {
/* … */
      }
+1635:                 return _parse_list_type(field, T, data, encoder, targs, parent)
        __pyx_t_29.__pyx_n = 1;
        __pyx_t_29._parent = __pyx_v_parent;
        __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_list_type(__pyx_v_field, __pyx_v_T, __pyx_v_data, __pyx_v_encoder, __pyx_v_targs, &__pyx_t_29); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1635, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_1;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_1 = 0;
        goto __pyx_L0;
 1636:             else:
+1637:                 return _parse_typing_type(
      /*else*/ {
/* … */
        __pyx_t_30.__pyx_n = 1;
        __pyx_t_30.as_objects = __pyx_v_as_objects;
        __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_typing_type(__pyx_v_field, __pyx_v_T, __pyx_v_name, __pyx_v_data, __pyx_v_encoder, __pyx_v_origin, __pyx_v_targs, &__pyx_t_30); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1637, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_1;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_1 = 0;
        goto __pyx_L0;
      }
 1638:                     field, T, name, data, encoder, origin, targs, as_objects
 1639:                 )
+1640:         elif origin is set:
    __pyx_t_2 = (__pyx_v_origin == ((PyObject *)(&PySet_Type)));
    if (__pyx_t_2) {
/* … */
    }
+1641:             if targs and targs[0] is not Any:
      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_targs); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1641, __pyx_L1_error)
      if (__pyx_t_7) {

      } else {

        __pyx_t_2 = __pyx_t_7;

        goto __pyx_L45_bool_binop_done;
      }
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_targs, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1641, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Any); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1641, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = (__pyx_t_1 != __pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      __pyx_t_2 = __pyx_t_7;

      __pyx_L45_bool_binop_done:;
      if (__pyx_t_2) {
/* … */
      }
+1642:                 if isinstance(data, (list, tuple)):
        __pyx_t_7 = PyList_Check(__pyx_v_data); 
        if (!__pyx_t_7) {

        } else {

          __pyx_t_2 = __pyx_t_7;

          goto __pyx_L48_bool_binop_done;
        }
        __pyx_t_7 = PyTuple_Check(__pyx_v_data); 

        __pyx_t_2 = __pyx_t_7;

        __pyx_L48_bool_binop_done:;
        if (__pyx_t_2) {
/* … */
        }
+1643:                     result = set()
          __pyx_t_5 = PySet_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1643, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_5);
          __pyx_t_5 = 0;
+1644:                     for item in data:
          if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
            __pyx_t_5 = __pyx_v_data; __Pyx_INCREF(__pyx_t_5);
            __pyx_t_9 = 0;
            __pyx_t_31 = NULL;
          } else {
            __pyx_t_9 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1644, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_31 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 1644, __pyx_L1_error)
          }
          for (;;) {
            if (likely(!__pyx_t_31)) {
              if (likely(PyList_CheckExact(__pyx_t_5))) {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1644, __pyx_L1_error)
                  #endif
                  if (__pyx_t_9 >= __pyx_temp) break;
                }
                __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_5, __pyx_t_9, __Pyx_ReferenceSharing_OwnStrongReference);
                ++__pyx_t_9;
              } else {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1644, __pyx_L1_error)
                  #endif
                  if (__pyx_t_9 >= __pyx_temp) break;
                }
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_9));
                #else
                __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_9);
                #endif
                ++__pyx_t_9;
              }
              if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1644, __pyx_L1_error)
            } else {
              __pyx_t_1 = __pyx_t_31(__pyx_t_5);
              if (unlikely(!__pyx_t_1)) {
                PyObject* exc_type = PyErr_Occurred();
                if (exc_type) {
                  if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1644, __pyx_L1_error)
                  PyErr_Clear();
                }
                break;
              }
            }
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_1);
            __pyx_t_1 = 0;
/* … */
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1645:                         converted_item = _parse_type(field, targs[0], item, encoder, False)
            __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_targs, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1645, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_32.__pyx_n = 2;
            __pyx_t_32.encoder = __pyx_v_encoder;
            __pyx_t_32.as_objects = Py_False;
            __pyx_t_4 = __pyx_f_9datamodel_10converters__parse_type(__pyx_v_field, __pyx_t_1, __pyx_v_item, &__pyx_t_32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1645, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_XDECREF_SET(__pyx_v_converted_item, __pyx_t_4);
            __pyx_t_4 = 0;
+1646:                         result.add(converted_item)
            __pyx_t_1 = __pyx_v_result;
            __Pyx_INCREF(__pyx_t_1);
            __pyx_t_6 = 0;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_converted_item};
              __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_add, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1646, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_4);
            }
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1647:                     return result
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __Pyx_INCREF(__pyx_v_result);
              __pyx_r = __pyx_v_result;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          goto __pyx_L0;
+1648:                 elif isinstance(data, set):
        __pyx_t_2 = PySet_Check(__pyx_v_data); 
        if (__pyx_t_2) {
/* … */
        }
 1649:                     # Already a set, just validate/convert the elements
+1650:                     result = set()
          __pyx_t_5 = PySet_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1650, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_5);
          __pyx_t_5 = 0;
+1651:                     for item in data:
          if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
            __pyx_t_5 = __pyx_v_data; __Pyx_INCREF(__pyx_t_5);
            __pyx_t_9 = 0;
            __pyx_t_31 = NULL;
          } else {
            __pyx_t_9 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1651, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_31 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 1651, __pyx_L1_error)
          }
          for (;;) {
            if (likely(!__pyx_t_31)) {
              if (likely(PyList_CheckExact(__pyx_t_5))) {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1651, __pyx_L1_error)
                  #endif
                  if (__pyx_t_9 >= __pyx_temp) break;
                }
                __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_5, __pyx_t_9, __Pyx_ReferenceSharing_OwnStrongReference);
                ++__pyx_t_9;
              } else {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1651, __pyx_L1_error)
                  #endif
                  if (__pyx_t_9 >= __pyx_temp) break;
                }
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_9));
                #else
                __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_9);
                #endif
                ++__pyx_t_9;
              }
              if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1651, __pyx_L1_error)
            } else {
              __pyx_t_4 = __pyx_t_31(__pyx_t_5);
              if (unlikely(!__pyx_t_4)) {
                PyObject* exc_type = PyErr_Occurred();
                if (exc_type) {
                  if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1651, __pyx_L1_error)
                  PyErr_Clear();
                }
                break;
              }
            }
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4);
            __pyx_t_4 = 0;
/* … */
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1652:                         converted_item = _parse_type(field, targs[0], item, encoder, False)
            __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_targs, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1652, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            __pyx_t_32.__pyx_n = 2;
            __pyx_t_32.encoder = __pyx_v_encoder;
            __pyx_t_32.as_objects = Py_False;
            __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_type(__pyx_v_field, __pyx_t_4, __pyx_v_item, &__pyx_t_32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1652, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF_SET(__pyx_v_converted_item, __pyx_t_1);
            __pyx_t_1 = 0;
+1653:                         result.add(converted_item)
            __pyx_t_4 = __pyx_v_result;
            __Pyx_INCREF(__pyx_t_4);
            __pyx_t_6 = 0;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_converted_item};
              __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_add, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1653, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
            }
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1654:                     return result
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __Pyx_INCREF(__pyx_v_result);
              __pyx_r = __pyx_v_result;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          goto __pyx_L0;
 1655:                 else:
 1656:                     # Single value, convert and wrap in a set
+1657:                     converted_item = _parse_type(field, targs[0], data, encoder, False)
        /*else*/ {
          __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_targs, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1657, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_32.__pyx_n = 2;
          __pyx_t_32.encoder = __pyx_v_encoder;
          __pyx_t_32.as_objects = Py_False;
          __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_type(__pyx_v_field, __pyx_t_5, __pyx_v_data, &__pyx_t_32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1657, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_v_converted_item = __pyx_t_1;
          __pyx_t_1 = 0;
+1658:                     return {converted_item} if data is not None else set()
          __pyx_t_2 = (__pyx_v_data != Py_None);
          if (__pyx_t_2) {
            __pyx_t_5 = PySet_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1658, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (PySet_Add(__pyx_t_5, __pyx_v_converted_item) < (0)) __PYX_ERR(0, 1658, __pyx_L1_error)
            __pyx_t_1 = __pyx_t_5;
            __pyx_t_5 = 0;
          } else {
            __pyx_t_5 = PySet_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1658, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_1 = __pyx_t_5;
            __pyx_t_5 = 0;
          }

          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_1;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_1 = 0;
          goto __pyx_L0;
        }
 1659:             else:
 1660:                 # Untyped set, just convert to a set without validating elements
+1661:                 if isinstance(data, (list, tuple)):
      /*else*/ {
        __pyx_t_7 = PyList_Check(__pyx_v_data); 
        if (!__pyx_t_7) {

        } else {

          __pyx_t_2 = __pyx_t_7;

          goto __pyx_L57_bool_binop_done;
        }
        __pyx_t_7 = PyTuple_Check(__pyx_v_data); 

        __pyx_t_2 = __pyx_t_7;

        __pyx_L57_bool_binop_done:;
        if (__pyx_t_2) {
/* … */
        }
+1662:                     return set(data)
          __pyx_t_1 = PySet_New(__pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1662, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_1;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_1 = 0;
          goto __pyx_L0;
+1663:                 elif isinstance(data, set):
        __pyx_t_2 = PySet_Check(__pyx_v_data); 
        if (__pyx_t_2) {
/* … */
        }
+1664:                     return data
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __Pyx_INCREF(__pyx_v_data);
              __pyx_r = __pyx_v_data;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          goto __pyx_L0;
 1665:                 else:
+1666:                     return {data} if data is not None else set()
        /*else*/ {
          __pyx_t_2 = (__pyx_v_data != Py_None);
          if (__pyx_t_2) {
            __pyx_t_5 = PySet_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1666, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (PySet_Add(__pyx_t_5, __pyx_v_data) < (0)) __PYX_ERR(0, 1666, __pyx_L1_error)
            __pyx_t_1 = __pyx_t_5;
            __pyx_t_5 = 0;
          } else {
            __pyx_t_5 = PySet_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1666, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_1 = __pyx_t_5;
            __pyx_t_5 = 0;
          }

          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_1;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_1 = 0;
          goto __pyx_L0;
        }
      }
 1667:         else:
+1668:             return _parse_typing_type(
    /*else*/ {
/* … */
      __pyx_t_30.__pyx_n = 1;
      __pyx_t_30.as_objects = __pyx_v_as_objects;
      __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_typing_type(__pyx_v_field, __pyx_v_T, __pyx_v_name, __pyx_v_data, __pyx_v_encoder, __pyx_v_origin, __pyx_v_targs, &__pyx_t_30); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1668, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = __pyx_t_1;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __pyx_t_1 = 0;
      goto __pyx_L0;
    }
 1669:                 field, T, name, data, encoder, origin, targs, as_objects
 1670:             )
 1671:     # Handle container types with proper recursive processing
 1672:     # List types
+1673:     elif origin is list:
  __pyx_t_2 = (__pyx_v_origin == ((PyObject *)(&PyList_Type)));
  if (__pyx_t_2) {
/* … */
  }
+1674:         return _parse_list_type(field, T, data, encoder, targs, parent)
    __pyx_t_29.__pyx_n = 1;
    __pyx_t_29._parent = __pyx_v_parent;
    __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_list_type(__pyx_v_field, __pyx_v_T, __pyx_v_data, __pyx_v_encoder, __pyx_v_targs, &__pyx_t_29); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1674, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_1;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_1 = 0;
    goto __pyx_L0;
 1675: 
 1676:     # Set types
+1677:     elif origin is set:
  __pyx_t_2 = (__pyx_v_origin == ((PyObject *)(&PySet_Type)));
  if (__pyx_t_2) {
/* … */
  }
+1678:         return _parse_set_type(field, T, data, encoder, targs, parent)
    __pyx_t_33.__pyx_n = 1;
    __pyx_t_33._parent = __pyx_v_parent;
    __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_set_type(__pyx_v_field, __pyx_v_T, __pyx_v_data, __pyx_v_encoder, __pyx_v_targs, &__pyx_t_33); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_1;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_1 = 0;
    goto __pyx_L0;
 1679: 
 1680:     # FrozenSet types - process as set, then convert to frozenset
+1681:     elif origin is frozenset:
  __pyx_t_2 = (__pyx_v_origin == ((PyObject *)(&PyFrozenSet_Type)));
  if (__pyx_t_2) {
/* … */
  }
+1682:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L59_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 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_20); __pyx_t_20 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
      __pyx_L61_except_error:;
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
      goto __pyx_L1_error;
      __pyx_L63_try_return:;
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
      goto __pyx_L0;
      __pyx_L62_except_return:;
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
      goto __pyx_L0;
    }
 1683:             # Convert to set first if needed
+1684:             if isinstance(data, (list, tuple, set)):
        __pyx_t_7 = PyList_Check(__pyx_v_data); 
        if (!__pyx_t_7) {

        } else {

          __pyx_t_2 = __pyx_t_7;

          goto __pyx_L66_bool_binop_done;
        }
        __pyx_t_7 = PyTuple_Check(__pyx_v_data); 
        if (!__pyx_t_7) {

        } else {

          __pyx_t_2 = __pyx_t_7;

          goto __pyx_L66_bool_binop_done;
        }
        __pyx_t_7 = PySet_Check(__pyx_v_data); 

        __pyx_t_2 = __pyx_t_7;

        __pyx_L66_bool_binop_done:;
        if (__pyx_t_2) {
/* … */
          goto __pyx_L65;
        }
+1685:                 set_data = set(data)
          __pyx_t_1 = PySet_New(__pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1685, __pyx_L59_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_v_set_data = __pyx_t_1;
          __pyx_t_1 = 0;
+1686:             elif isinstance(data, frozenset):
        __pyx_t_2 = PyFrozenSet_Check(__pyx_v_data); 
        if (__pyx_t_2) {
/* … */
          goto __pyx_L65;
        }
+1687:                 set_data = data
          __Pyx_INCREF(__pyx_v_data);
          __pyx_v_set_data = __pyx_v_data;
 1688:             else:
+1689:                 set_data = {data} if data is not None else set()
        /*else*/ {
          __pyx_t_2 = (__pyx_v_data != Py_None);
          if (__pyx_t_2) {
            __pyx_t_5 = PySet_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1689, __pyx_L59_error)
            __Pyx_GOTREF(__pyx_t_5);
            if (PySet_Add(__pyx_t_5, __pyx_v_data) < (0)) __PYX_ERR(0, 1689, __pyx_L59_error)
            __pyx_t_1 = __pyx_t_5;
            __pyx_t_5 = 0;
          } else {
            __pyx_t_5 = PySet_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1689, __pyx_L59_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_1 = __pyx_t_5;
            __pyx_t_5 = 0;
          }

          __pyx_v_set_data = __pyx_t_1;
          __pyx_t_1 = 0;
        }
        __pyx_L65:;
 1690: 
 1691:             # Process as a set
+1692:             processed_set = _parse_set_type(field, T, set_data, encoder, targs, parent)
        __pyx_t_33.__pyx_n = 1;
        __pyx_t_33._parent = __pyx_v_parent;
        __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_set_type(__pyx_v_field, __pyx_v_T, __pyx_v_set_data, __pyx_v_encoder, __pyx_v_targs, &__pyx_t_33); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1692, __pyx_L59_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_v_processed_set = __pyx_t_1;
        __pyx_t_1 = 0;
 1693: 
 1694:             # Convert back to frozenset
+1695:             return frozenset(processed_set)
        __pyx_t_1 = __Pyx_PyFrozenSet_New(__pyx_v_processed_set); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1695, __pyx_L59_error)
        __Pyx_GOTREF(__pyx_t_1);
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_1;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_1 = 0;
        goto __pyx_L63_try_return;
+1696:         except Exception as e:
      __pyx_t_21 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
      if (__pyx_t_21) {
        __Pyx_AddTraceback("datamodel.converters._parse_typing", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 1696, __pyx_L61_except_error)
        __Pyx_XGOTREF(__pyx_t_1);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __pyx_v_e = __pyx_t_5;
        /*try:*/ {
/* … */
        /*finally:*/ {
          __pyx_L74_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0;
            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 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_20); __pyx_t_20 = 0;
             __Pyx_ExceptionSwap(&__pyx_t_25, &__pyx_t_24, &__pyx_t_23);
            if ( unlikely(__Pyx_GetException(&__pyx_t_28, &__pyx_t_27, &__pyx_t_26) < 0)) __Pyx_ErrFetch(&__pyx_t_28, &__pyx_t_27, &__pyx_t_26);
            __Pyx_XGOTREF(__pyx_t_28);
            __Pyx_XGOTREF(__pyx_t_27);
            __Pyx_XGOTREF(__pyx_t_26);
            __Pyx_XGOTREF(__pyx_t_25);
            __Pyx_XGOTREF(__pyx_t_24);
            __Pyx_XGOTREF(__pyx_t_23);
            __pyx_t_21 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_22 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
            }
            __Pyx_XGIVEREF(__pyx_t_25);
            __Pyx_XGIVEREF(__pyx_t_24);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_ExceptionReset(__pyx_t_25, __pyx_t_24, __pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_28);
            __Pyx_XGIVEREF(__pyx_t_27);
            __Pyx_XGIVEREF(__pyx_t_26);
            __Pyx_ErrRestore(__pyx_t_28, __pyx_t_27, __pyx_t_26);
            __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_t_23 = 0;
            __pyx_lineno = __pyx_t_21; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_22;
            goto __pyx_L61_except_error;
          }
          __pyx_L73_return: {
            __pyx_t_23 = __pyx_r;
            __pyx_r = 0;
            __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
            __pyx_r = __pyx_t_23;
            __pyx_t_23 = 0;
            goto __pyx_L62_except_return;
          }
        }
      }
      goto __pyx_L61_except_error;
 1697:             # Be resilient to errors
+1698:             if isinstance(data, frozenset):
          __pyx_t_2 = PyFrozenSet_Check(__pyx_v_data); 
          if (__pyx_t_2) {
/* … */
          }
+1699:                 return data
            {
              PyObject *__pyx_temp;
              {
                __pyx_temp = __pyx_r;
                __Pyx_INCREF(__pyx_v_data);
                __pyx_r = __pyx_v_data;
              }
              __Pyx_XDECREF(__pyx_temp);
            }
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            goto __pyx_L73_return;
+1700:             elif isinstance(data, (set, list, tuple)):
          __pyx_t_7 = PySet_Check(__pyx_v_data); 
          if (!__pyx_t_7) {

          } else {

            __pyx_t_2 = __pyx_t_7;

            goto __pyx_L77_bool_binop_done;
          }
          __pyx_t_7 = PyList_Check(__pyx_v_data); 
          if (!__pyx_t_7) {

          } else {

            __pyx_t_2 = __pyx_t_7;

            goto __pyx_L77_bool_binop_done;
          }
          __pyx_t_7 = PyTuple_Check(__pyx_v_data); 

          __pyx_t_2 = __pyx_t_7;

          __pyx_L77_bool_binop_done:;
          if (__pyx_t_2) {
/* … */
          }
+1701:                 return frozenset(data)
            __pyx_t_15 = __Pyx_PyFrozenSet_New(__pyx_v_data); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1701, __pyx_L74_error)
            __Pyx_GOTREF(__pyx_t_15);
            {
              PyObject *__pyx_temp;
              {
                __pyx_temp = __pyx_r;
                __pyx_r = __pyx_t_15;
              }
              __Pyx_XDECREF(__pyx_temp);
            }
            __pyx_t_15 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            goto __pyx_L73_return;
 1702:             else:
+1703:                 return frozenset({data}) if data is not None else frozenset()
          /*else*/ {
            __pyx_t_2 = (__pyx_v_data != Py_None);
            if (__pyx_t_2) {
              __pyx_t_20 = PySet_New(0); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1703, __pyx_L74_error)
              __Pyx_GOTREF(__pyx_t_20);
              if (PySet_Add(__pyx_t_20, __pyx_v_data) < (0)) __PYX_ERR(0, 1703, __pyx_L74_error)
              __pyx_t_16 = __Pyx_PyFrozenSet_New(__pyx_t_20); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1703, __pyx_L74_error)
              __Pyx_GOTREF(__pyx_t_16);
              __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
              __pyx_t_15 = __pyx_t_16;
              __pyx_t_16 = 0;
            } else {
              __Pyx_INCREF(__pyx_mstate_global->__pyx_frozenset[0]);
              __pyx_t_15 = __pyx_mstate_global->__pyx_frozenset[0];
            }

            {
              PyObject *__pyx_temp;
              {
                __pyx_temp = __pyx_r;
                __pyx_r = __pyx_t_15;
              }
              __Pyx_XDECREF(__pyx_temp);
            }
            __pyx_t_15 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            goto __pyx_L73_return;
          }
        }
 1704:     # Dict types
+1705:     elif origin is dict and isinstance(data, dict):
  __pyx_t_7 = (__pyx_v_origin == ((PyObject *)(&PyDict_Type)));
  if (__pyx_t_7) {

  } else {

    __pyx_t_2 = __pyx_t_7;

    goto __pyx_L84_bool_binop_done;
  }
  __pyx_t_7 = PyDict_Check(__pyx_v_data); 

  __pyx_t_2 = __pyx_t_7;

  __pyx_L84_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
+1706:         return _parse_dict_type(field, T, data, encoder, targs)
    __pyx_t_4 = __pyx_f_9datamodel_10converters__parse_dict_type(__pyx_v_field, __pyx_v_T, __pyx_v_data, __pyx_v_encoder, __pyx_v_targs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1706, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_4;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_4 = 0;
    goto __pyx_L0;
+1707:     elif origin is not None:
  __pyx_t_2 = (__pyx_v_origin != Py_None);
  if (__pyx_t_2) {
/* … */
  }
 1708:         # other advanced generics
+1709:         return data
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_data);
        __pyx_r = __pyx_v_data;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 1710:     else:
 1711:         # fallback to builtin parse
+1712:         return _parse_builtin_type(field, T, data, encoder)
  /*else*/ {
    __pyx_t_4 = __pyx_f_9datamodel_10converters__parse_builtin_type(__pyx_v_field, __pyx_v_T, __pyx_v_data, __pyx_v_encoder); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1712, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_4;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }
 1713: 
+1714: cdef object _parse_literal_type(
static PyObject *__pyx_f_9datamodel_10converters__parse_literal_type(PyObject *__pyx_v_field, CYTHON_UNUSED PyObject *__pyx_v_T, PyObject *__pyx_v_data, CYTHON_UNUSED PyObject *__pyx_v_encoder) {
  PyObject *__pyx_v_targs = 0;
  PyObject *__pyx_v_arg = NULL;
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("datamodel.converters._parse_literal_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_targs);
  __Pyx_XDECREF(__pyx_v_arg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1715:     object field,
 1716:     object T,
 1717:     object data,
 1718:     object encoder
 1719: ):
 1720:     """
 1721:     _parse_literal_type parses a typing.Literal[...] annotation.
 1722: 
 1723:     :param field: A Field object (or similar) containing metadata
 1724:     :param T: The full annotated type (e.g. typing.Literal['text/plain', 'text/html']).
 1725:     :param data: The input value to check.
 1726:     :param encoder: Optional encoder (not usually used for literal).
 1727:     :return: Returns 'data' if it matches one of the literal choices, otherwise raises ValueError.
 1728:     """
 1729: 
 1730:     # Each element in `targs` is a valid literal value, e.g. a string, int, etc.
 1731:     # If data is exactly in that set, it's valid.
+1732:     cdef tuple targs = field.args
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_args_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1732, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(0, 1732, __pyx_L1_error)
  __pyx_v_targs = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 1733:     cdef tuple i
+1734:     for arg in targs:
  if (unlikely(__pyx_v_targs == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not iterable");
    __PYX_ERR(0, 1734, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_v_targs; __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = 0;
  for (;;) {
    {
      Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
      #if !CYTHON_ASSUME_SAFE_SIZE
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1734, __pyx_L1_error)
      #endif
      if (__pyx_t_2 >= __pyx_temp) break;
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
    #else
    __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
    #endif
    ++__pyx_t_2;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1734, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_arg, __pyx_t_3);
    __pyx_t_3 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1735:         if data == arg:
    __pyx_t_4 = __Pyx_PyObject_CompareBoolEq_object_object(__pyx_v_data, __pyx_v_arg, Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1735, __pyx_L1_error)
    if (__pyx_t_4) {
/* … */
    }
+1736:             return data
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __Pyx_INCREF(__pyx_v_data);
          __pyx_r = __pyx_v_data;
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;
 1737: 
 1738:     # If we get here, data didn't match any literal value
+1739:     raise ValueError(
  __pyx_t_3 = NULL;
+1740:         f"Literal parse error for field '{field.name}': "
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1740, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1740, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
  __pyx_t_2 = 55;
  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[3]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[5]);
  #endif
  __pyx_t_9 = 0;
  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
  __pyx_t_9 |= __Pyx_PyUnicode_KIND_04(__pyx_t_8[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_8[3]) | __Pyx_PyUnicode_KIND_04(__pyx_t_8[5]);
  #endif
  __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_8, 6, __pyx_t_2, __pyx_t_9);
  if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1740, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_11 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_10};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1739, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 1739, __pyx_L1_error)
+1741:         f"value={data!r} is not one of {targs}"
  __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_data), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_targs, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_Literal_parse_error_for_field;
  __pyx_t_8[1] = __pyx_t_6;
  __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_value;
  __pyx_t_8[3] = __pyx_t_5;
  __pyx_t_8[4] = __pyx_mstate_global->__pyx_kp_u_is_not_one_of;
  __pyx_t_8[5] = __pyx_t_7;
 1742:     )
 1743: 
+1744: cdef object _handle_dataclass_type(
static PyObject *__pyx_f_9datamodel_10converters__handle_dataclass_type(PyObject *__pyx_v_field, PyObject *__pyx_v_name, PyObject *__pyx_v_value, PyObject *__pyx_v__type, struct __pyx_opt_args_9datamodel_10converters__handle_dataclass_type *__pyx_optional_args) {
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_19);
  __Pyx_XDECREF(__pyx_t_20);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_AddTraceback("datamodel.converters._handle_dataclass_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_converter);

  __Pyx_XDECREF(__pyx_v_field_metadata);
  __Pyx_XDECREF(__pyx_v_alias);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_k);
  __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_v);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_9datamodel_10converters__handle_dataclass_type {
  int __pyx_n;
  PyObject *as_objects;
  PyObject *parent;
};
 1745:     object field,
 1746:     str name,
 1747:     object value,
 1748:     object _type,
+1749:     object as_objects = False,
  PyObject *__pyx_v_as_objects = ((PyObject *)Py_False);
+1750:     object parent = None
  PyObject *__pyx_v_parent = ((PyObject *)Py_None);
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_converter = 0;
  int __pyx_v_isdc;
  PyObject *__pyx_v_field_metadata = 0;
  PyObject *__pyx_v_alias = 0;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_8genexpr6__pyx_v_k = NULL;
  PyObject *__pyx_8genexpr6__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_as_objects = __pyx_optional_args->as_objects;
      if (__pyx_optional_args->__pyx_n > 1) {
        __pyx_v_parent = __pyx_optional_args->parent;
      }
    }
  }
  __Pyx_INCREF(__pyx_v_value);
 1751: ):
 1752:     """
 1753:     _handle_dataclass_type.
 1754: 
 1755:     Process a field that is annotated as SomeDataclass.
 1756:     If there's a registered converter for the dataclass, call it;
 1757:     otherwise, build the dataclass using default logic.
 1758:     """
+1759:     cdef tuple key = (_type, name)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v__type);
  __Pyx_GIVEREF(__pyx_v__type);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__type) != (0)) __PYX_ERR(0, 1759, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_name);
  __Pyx_GIVEREF(__pyx_v_name);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name) != (0)) __PYX_ERR(0, 1759, __pyx_L1_error);
  __pyx_v_key = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+1760:     cdef object converter = TYPE_PARSERS.get(key) or TYPE_PARSERS.get(_type)
  if (unlikely(__pyx_v_9datamodel_10converters_TYPE_PARSERS == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
    __PYX_ERR(0, 1760, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyDict_GetItemDefault(__pyx_v_9datamodel_10converters_TYPE_PARSERS, __pyx_v_key, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1760, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1760, __pyx_L1_error)
  if (!__pyx_t_3) {
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L3_bool_binop_done;
  }
  if (unlikely(__pyx_v_9datamodel_10converters_TYPE_PARSERS == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
    __PYX_ERR(0, 1760, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyDict_GetItemDefault(__pyx_v_9datamodel_10converters_TYPE_PARSERS, __pyx_v__type, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1760, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_t_2;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_L3_bool_binop_done:;
  __pyx_v_converter = __pyx_t_1;
  __pyx_t_1 = 0;
+1761:     cdef bint isdc = field.is_dc if field else is_dc(_type)
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_field); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1761, __pyx_L1_error)
  if (__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_is_dc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1761, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1761, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_3 = __pyx_t_5;
  } else {
    __pyx_t_5 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v__type); if (unlikely(__pyx_t_5 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1761, __pyx_L1_error)
    __pyx_t_3 = __pyx_t_5;
  }

  __pyx_v_isdc = __pyx_t_3;
+1762:     cdef object field_metadata = field.metadata if field else {}
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_field); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1762, __pyx_L1_error)
  if (__pyx_t_3) {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1762, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {
    __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1762, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
  }

  __pyx_v_field_metadata = __pyx_t_1;
  __pyx_t_1 = 0;
+1763:     cdef str alias = field_metadata.get('alias')
  __pyx_t_2 = __pyx_v_field_metadata;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_6 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_n_u_alias};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1763, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(0, 1763, __pyx_L1_error)
  __pyx_v_alias = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 1764: 
+1765:     if value is None or is_dc(value):
  __pyx_t_4 = (__pyx_v_value == Py_None);
  if (!__pyx_t_4) {

  } else {

    __pyx_t_3 = __pyx_t_4;

    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_4 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_value); if (unlikely(__pyx_t_4 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1765, __pyx_L1_error)

  __pyx_t_3 = __pyx_t_4;

  __pyx_L6_bool_binop_done:;
  if (__pyx_t_3) {
/* … */
  }
+1766:         return value
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_value);
        __pyx_r = __pyx_v_value;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
+1767:     if PyObject_IsInstance(value, dict):
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_value, ((PyObject *)(&PyDict_Type))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1767, __pyx_L1_error)
  if (__pyx_t_3) {
/* … */
  }
+1768:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L9_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
      __pyx_L11_except_error:;
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      goto __pyx_L1_error;
      __pyx_L13_try_return:;
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      goto __pyx_L0;
      __pyx_L12_except_return:;
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      goto __pyx_L0;
    }
 1769:             # If alias exists, adjust the key passed to the dataclass
+1770:             if alias:
        if (__pyx_v_alias == Py_None) __pyx_t_3 = 0;
        else
        {
          Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_alias);
          if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 1770, __pyx_L9_error)
          __pyx_t_3 = (__pyx_temp != 0);
        }

        if (__pyx_t_3) {
/* … */
        }
 1771:                 # if alias exists on type, preserve the alias:
+1772:                 if alias not in value and name in value:
          __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_v_alias, __pyx_v_value, Py_NE)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1772, __pyx_L9_error)
          if (__pyx_t_4) {

          } else {

            __pyx_t_3 = __pyx_t_4;

            goto __pyx_L17_bool_binop_done;
          }
          __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_v_name, __pyx_v_value, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1772, __pyx_L9_error)

          __pyx_t_3 = __pyx_t_4;

          __pyx_L17_bool_binop_done:;
          if (__pyx_t_3) {
/* … */
          }
+1773:                     value = value.copy()
            __pyx_t_2 = __pyx_v_value;
            __Pyx_INCREF(__pyx_t_2);
            __pyx_t_6 = 0;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
              __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_copy, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
              if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1773, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_1);
            }
            __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_1);
            __pyx_t_1 = 0;
+1774:                     value[alias] = value.pop(name)
            __pyx_t_2 = __pyx_v_value;
            __Pyx_INCREF(__pyx_t_2);
            __pyx_t_6 = 0;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_name};
              __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_pop, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
              if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1774, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_1);
            }
            if (unlikely((PyObject_SetItem(__pyx_v_value, __pyx_v_alias, __pyx_t_1) < 0))) __PYX_ERR(0, 1774, __pyx_L9_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 1775:             # convert the dictionary to the dataclass
+1776:             return _type(**value)
        if (unlikely(__pyx_v_value == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
          __PYX_ERR(0, 1776, __pyx_L9_error)
        }
        if (likely(PyDict_CheckExact(__pyx_v_value))) {
          __pyx_t_1 = PyDict_Copy(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1776, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_1);
        } else {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1776, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v__type, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1776, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_2;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_2 = 0;
        goto __pyx_L13_try_return;
+1777:         except TypeError:
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
      if (__pyx_t_10) {
        __Pyx_AddTraceback("datamodel.converters._handle_dataclass_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_11) < 0) __PYX_ERR(0, 1777, __pyx_L11_except_error)
        __Pyx_XGOTREF(__pyx_t_2);
        __Pyx_XGOTREF(__pyx_t_1);
        __Pyx_XGOTREF(__pyx_t_11);
 1778:             # Ensure keys are strings
+1779:             value = {str(k): v for k, v in value.items()}
        { /* enter inner scope */
          __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1779, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_14 = 0;
          if (unlikely(__pyx_v_value == Py_None)) {
            PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "items");
            __PYX_ERR(0, 1779, __pyx_L23_error)
          }
          __pyx_t_16 = __Pyx_dict_iterator(__pyx_v_value, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_15), (&__pyx_t_10)); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1779, __pyx_L23_error)
          __Pyx_GOTREF(__pyx_t_16);
          __Pyx_XDECREF(__pyx_t_13);
          __pyx_t_13 = __pyx_t_16;
          __pyx_t_16 = 0;
          while (1) {
            __pyx_t_18 = __Pyx_dict_iter_next(__pyx_t_13, __pyx_t_15, &__pyx_t_14, &__pyx_t_16, &__pyx_t_17, NULL, __pyx_t_10);
            if (unlikely(__pyx_t_18 == 0)) break;
            if (unlikely(__pyx_t_18 == -1)) __PYX_ERR(0, 1779, __pyx_L23_error)
            __Pyx_GOTREF(__pyx_t_16);
            __Pyx_GOTREF(__pyx_t_17);
            __Pyx_XDECREF_SET(__pyx_8genexpr6__pyx_v_k, __pyx_t_16);
            __pyx_t_16 = 0;
            __Pyx_XDECREF_SET(__pyx_8genexpr6__pyx_v_v, __pyx_t_17);
            __pyx_t_17 = 0;
            __pyx_t_17 = __Pyx_PyObject_Unicode(__pyx_8genexpr6__pyx_v_k); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1779, __pyx_L23_error)
            __Pyx_GOTREF(__pyx_t_17);
            if (unlikely(PyDict_SetItem(__pyx_t_12, __pyx_t_17, __pyx_8genexpr6__pyx_v_v))) __PYX_ERR(0, 1779, __pyx_L23_error)
            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
          }
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_k); __pyx_8genexpr6__pyx_v_k = 0;
          __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_v); __pyx_8genexpr6__pyx_v_v = 0;
          goto __pyx_L26_exit_scope;
          __pyx_L23_error:;
          __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_k); __pyx_8genexpr6__pyx_v_k = 0;
          __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_v); __pyx_8genexpr6__pyx_v_v = 0;
          goto __pyx_L11_except_error;
          __pyx_L26_exit_scope:;
        } /* exit inner scope */
        __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_12);
        __pyx_t_12 = 0;
+1780:             if alias:
        if (__pyx_v_alias == Py_None) __pyx_t_3 = 0;
        else
        {
          Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_alias);
          if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 1780, __pyx_L11_except_error)
          __pyx_t_3 = (__pyx_temp != 0);
        }

        if (__pyx_t_3) {
/* … */
        }
+1781:                 value = value.copy()
          __pyx_t_13 = __pyx_v_value;
          __Pyx_INCREF(__pyx_t_13);
          __pyx_t_6 = 0;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL};
            __pyx_t_12 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_copy, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1781, __pyx_L11_except_error)
            __Pyx_GOTREF(__pyx_t_12);
          }
          __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_12);
          __pyx_t_12 = 0;
+1782:                 value[name] = value.pop(alias, None)
          __pyx_t_13 = __pyx_v_value;
          __Pyx_INCREF(__pyx_t_13);
          __pyx_t_6 = 0;
          {
            PyObject *__pyx_callargs[3] = {__pyx_t_13, __pyx_v_alias, Py_None};
            __pyx_t_12 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_pop, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1782, __pyx_L11_except_error)
            __Pyx_GOTREF(__pyx_t_12);
          }
          if (unlikely((PyObject_SetItem(__pyx_v_value, __pyx_v_name, __pyx_t_12) < 0))) __PYX_ERR(0, 1782, __pyx_L11_except_error)
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+1783:             return _type(**value)
        if (unlikely(__pyx_v_value == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
          __PYX_ERR(0, 1783, __pyx_L11_except_error)
        }
        if (likely(PyDict_CheckExact(__pyx_v_value))) {
          __pyx_t_12 = PyDict_Copy(__pyx_v_value); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1783, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_12);
        } else {
          __pyx_t_12 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_value); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1783, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_12);
        }
        __pyx_t_13 = __Pyx_PyObject_Call(__pyx_v__type, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1783, __pyx_L11_except_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_13;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_13 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        goto __pyx_L12_except_return;
      }
+1784:         except ValueError:
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
      if (__pyx_t_10) {
        __Pyx_AddTraceback("datamodel.converters._handle_dataclass_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(0, 1784, __pyx_L11_except_error)
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_1);
        __Pyx_XGOTREF(__pyx_t_2);
 1785:             # replace in "value" dictionary the current "name" for "alias"
+1786:             if alias:
        if (__pyx_v_alias == Py_None) __pyx_t_3 = 0;
        else
        {
          Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_alias);
          if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 1786, __pyx_L11_except_error)
          __pyx_t_3 = (__pyx_temp != 0);
        }

        if (__pyx_t_3) {
/* … */
        }
+1787:                 value = value.copy()
          __pyx_t_12 = __pyx_v_value;
          __Pyx_INCREF(__pyx_t_12);
          __pyx_t_6 = 0;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_12, NULL};
            __pyx_t_13 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_copy, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1787, __pyx_L11_except_error)
            __Pyx_GOTREF(__pyx_t_13);
          }
          __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_13);
          __pyx_t_13 = 0;
+1788:                 value[alias] = value.pop(name, None)
          __pyx_t_12 = __pyx_v_value;
          __Pyx_INCREF(__pyx_t_12);
          __pyx_t_6 = 0;
          {
            PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_v_name, Py_None};
            __pyx_t_13 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_pop, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1788, __pyx_L11_except_error)
            __Pyx_GOTREF(__pyx_t_13);
          }
          if (unlikely((PyObject_SetItem(__pyx_v_value, __pyx_v_alias, __pyx_t_13) < 0))) __PYX_ERR(0, 1788, __pyx_L11_except_error)
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+1789:             return _type(**value)
        if (unlikely(__pyx_v_value == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
          __PYX_ERR(0, 1789, __pyx_L11_except_error)
        }
        if (likely(PyDict_CheckExact(__pyx_v_value))) {
          __pyx_t_13 = PyDict_Copy(__pyx_v_value); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1789, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_13);
        } else {
          __pyx_t_13 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_value); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1789, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_13);
        }
        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_v__type, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1789, __pyx_L11_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_12;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        goto __pyx_L12_except_return;
      }
+1790:         except Exception as exc:
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
      if (__pyx_t_10) {
        __Pyx_AddTraceback("datamodel.converters._handle_dataclass_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_11) < 0) __PYX_ERR(0, 1790, __pyx_L11_except_error)
        __Pyx_XGOTREF(__pyx_t_2);
        __Pyx_XGOTREF(__pyx_t_1);
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_v_exc = __pyx_t_1;
        /*try:*/ {
/* … */
        /*finally:*/ {
          __pyx_L36_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
            __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
            __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
            __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
            __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
             __Pyx_ExceptionSwap(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29);
            if ( unlikely(__Pyx_GetException(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26) < 0)) __Pyx_ErrFetch(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26);
            __Pyx_XGOTREF(__pyx_t_24);
            __Pyx_XGOTREF(__pyx_t_25);
            __Pyx_XGOTREF(__pyx_t_26);
            __Pyx_XGOTREF(__pyx_t_27);
            __Pyx_XGOTREF(__pyx_t_28);
            __Pyx_XGOTREF(__pyx_t_29);
            __pyx_t_10 = __pyx_lineno; __pyx_t_18 = __pyx_clineno; __pyx_t_23 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
            }
            __Pyx_XGIVEREF(__pyx_t_27);
            __Pyx_XGIVEREF(__pyx_t_28);
            __Pyx_XGIVEREF(__pyx_t_29);
            __Pyx_ExceptionReset(__pyx_t_27, __pyx_t_28, __pyx_t_29);
            __Pyx_XGIVEREF(__pyx_t_24);
            __Pyx_XGIVEREF(__pyx_t_25);
            __Pyx_XGIVEREF(__pyx_t_26);
            __Pyx_ErrRestore(__pyx_t_24, __pyx_t_25, __pyx_t_26);
            __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0;
            __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_18; __pyx_filename = __pyx_t_23;
            goto __pyx_L11_except_error;
          }
        }
      }
      goto __pyx_L11_except_error;
+1791:             raise ValueError(
          __pyx_t_13 = NULL;
+1792:                 f"Invalid value for {name}:{_type} == {value}, error: {exc}"
          __pyx_t_17 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1792, __pyx_L36_error)
          __Pyx_GOTREF(__pyx_t_17);
          __pyx_t_16 = __Pyx_PyObject_FormatSimple(__pyx_v__type, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1792, __pyx_L36_error)
          __Pyx_GOTREF(__pyx_t_16);
          __pyx_t_19 = __Pyx_PyObject_FormatSimple(__pyx_v_value, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1792, __pyx_L36_error)
          __Pyx_GOTREF(__pyx_t_19);
          __pyx_t_20 = __Pyx_PyObject_FormatSimple(__pyx_v_exc, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1792, __pyx_L36_error)
          __Pyx_GOTREF(__pyx_t_20);
          __pyx_t_21[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_value_for;
          __pyx_t_21[1] = __pyx_t_17;
          __pyx_t_21[2] = __pyx_mstate_global->__pyx_kp_u__4;
          __pyx_t_21[3] = __pyx_t_16;
          __pyx_t_21[4] = __pyx_mstate_global->__pyx_kp_u__9;
          __pyx_t_21[5] = __pyx_t_19;
          __pyx_t_21[6] = __pyx_mstate_global->__pyx_kp_u_error;
          __pyx_t_21[7] = __pyx_t_20;
          __pyx_t_15 = 32;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          for (Py_ssize_t i=1; i <= 7; i += 2) {
            Py_ssize_t l = __Pyx_PyUnicode_GET_LENGTH(__pyx_t_21[i]);
            __pyx_t_15 += l;
          }
          #endif
          __pyx_t_10 = 0;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          for (Py_ssize_t i=1; i <= 7; i += 2) {
            int l = __Pyx_PyUnicode_KIND_04(__pyx_t_21[i]);
            __pyx_t_10 |= l;
          }
          #endif
          __pyx_t_22 = __Pyx_PyUnicode_Join(__pyx_t_21, 8, __pyx_t_15, __pyx_t_10);
          if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 1792, __pyx_L36_error)
          __Pyx_GOTREF(__pyx_t_22);
          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
          __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
          __pyx_t_6 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_22};
            __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
            if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1791, __pyx_L36_error)
            __Pyx_GOTREF(__pyx_t_12);
          }
          __Pyx_Raise(__pyx_t_12, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          __PYX_ERR(0, 1791, __pyx_L36_error)
        }
 1793:             )
+1794:     try:
  {
    /*try:*/ {
/* … */
    }
    __pyx_L42_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
    __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
    __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
/* … */
    __pyx_L44_except_error:;
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7);
    goto __pyx_L1_error;
    __pyx_L46_try_return:;
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7);
    goto __pyx_L0;
  }
+1795:         if PyObject_IsInstance(value, (list, tuple)):
      __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1795, __pyx_L42_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_INCREF((PyObject *)(&PyList_Type));
      __Pyx_GIVEREF((PyObject *)(&PyList_Type));
      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)(&PyList_Type))) != (0)) __PYX_ERR(0, 1795, __pyx_L42_error);
      __Pyx_INCREF((PyObject *)(&PyTuple_Type));
      __Pyx_GIVEREF((PyObject *)(&PyTuple_Type));
      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 1, ((PyObject *)(&PyTuple_Type))) != (0)) __PYX_ERR(0, 1795, __pyx_L42_error);
      __pyx_t_3 = PyObject_IsInstance(__pyx_v_value, __pyx_t_11); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1795, __pyx_L42_error)
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (__pyx_t_3) {
/* … */
      }
+1796:             return _type(*value)
        __pyx_t_11 = __Pyx_PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1796, __pyx_L42_error)
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v__type, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1796, __pyx_L42_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_1;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_1 = 0;
        goto __pyx_L46_try_return;
 1797:         else:
 1798:             # If a converter exists for this type, use it:
+1799:             if converter:
      /*else*/ {
        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_converter); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1799, __pyx_L42_error)
        if (__pyx_t_3) {
/* … */
        }
+1800:                 return converter(name, value, _type, parent)
          __pyx_t_11 = NULL;
          __Pyx_INCREF(__pyx_v_converter);
          __pyx_t_2 = __pyx_v_converter; 
          __pyx_t_6 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_2))) {
            __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2);
            assert(__pyx_t_11);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
            __Pyx_INCREF(__pyx_t_11);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
            __pyx_t_6 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[5] = {__pyx_t_11, __pyx_v_name, __pyx_v_value, __pyx_v__type, __pyx_v_parent};
            __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_6, (5-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1800, __pyx_L42_error)
            __Pyx_GOTREF(__pyx_t_1);
          }
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_1;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_1 = 0;
          goto __pyx_L46_try_return;
+1801:             if as_objects:
        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_as_objects); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1801, __pyx_L42_error)
        if (__pyx_t_3) {
/* … */
        }
 1802:                 # If alias exists, adjust the key passed to the dataclass
+1803:                 if not alias:
          if (__pyx_v_alias == Py_None) __pyx_t_3 = 0;
          else
          {
            Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_alias);
            if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 1803, __pyx_L42_error)
            __pyx_t_3 = (__pyx_temp != 0);
          }

          __pyx_t_4 = (!__pyx_t_3);


          if (__pyx_t_4) {
/* … */
          }
+1804:                     alias = name
            __Pyx_INCREF(__pyx_v_name);
            __Pyx_DECREF_SET(__pyx_v_alias, __pyx_v_name);
 1805:                 # convert the list to the dataclass
+1806:                 return _type(**{alias: value})
          __pyx_t_2 = NULL;
          __Pyx_INCREF(__pyx_v__type);
          __pyx_t_11 = __pyx_v__type; 
          #if CYTHON_VECTORCALL
          __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1806, __pyx_L42_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_INCREF(__pyx_v_alias);
          __Pyx_GIVEREF(__pyx_v_alias);
          if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_alias) != (0)) __PYX_ERR(0, 1806, __pyx_L42_error);
          #endif
          __pyx_t_6 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_11))) {
            __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_11);
            assert(__pyx_t_2);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
            __Pyx_INCREF(__pyx_t_2);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
            __pyx_t_6 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value};
            #if CYTHON_VECTORCALL
            __pyx_t_22 = __pyx_t_12;
            if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 1806, __pyx_L42_error)
            __Pyx_INCREF(__pyx_t_22);
            if (__Pyx_CheckVectorcallKwarg(__pyx_t_22, 0) < (0)) __PYX_ERR(0, 1806, __pyx_L42_error)
            #else
            {
              PyObject *__pyx_temp[1] = {__pyx_v_alias};
              if (__Pyx_CheckVectorcallKwarg(__pyx_temp, 0) < (0)) __PYX_ERR(0, 1806, __pyx_L42_error)
              __pyx_t_22 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+1, 1);
              if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 1806, __pyx_L42_error)
              __Pyx_GOTREF(__pyx_t_22);
            }
            #endif
            __pyx_t_1 = __Pyx_Object_VectorcallKwds((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_22);
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            #if CYTHON_VECTORCALL
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            #endif
            __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1806, __pyx_L42_error)
            __Pyx_GOTREF(__pyx_t_1);
          }
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_1;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_1 = 0;
          goto __pyx_L46_try_return;
+1807:             if PyObject_IsInstance(value, (int, str, UUID)):
        __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_UUID); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1807, __pyx_L42_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1807, __pyx_L42_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_INCREF((PyObject *)(&PyLong_Type));
        __Pyx_GIVEREF((PyObject *)(&PyLong_Type));
        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)(&PyLong_Type))) != (0)) __PYX_ERR(0, 1807, __pyx_L42_error);
        __Pyx_INCREF((PyObject *)(&PyUnicode_Type));
        __Pyx_GIVEREF((PyObject *)(&PyUnicode_Type));
        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 1, ((PyObject *)(&PyUnicode_Type))) != (0)) __PYX_ERR(0, 1807, __pyx_L42_error);
        __Pyx_GIVEREF(__pyx_t_1);
        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_1) != (0)) __PYX_ERR(0, 1807, __pyx_L42_error);
        __pyx_t_1 = 0;
        __pyx_t_4 = PyObject_IsInstance(__pyx_v_value, __pyx_t_11); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1807, __pyx_L42_error)
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (__pyx_t_4) {
/* … */
        }
+1808:                 return value
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __Pyx_INCREF(__pyx_v_value);
              __pyx_r = __pyx_v_value;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          goto __pyx_L46_try_return;
+1809:             if isdc:
        if (__pyx_v_isdc) {
/* … */
        }
+1810:                 if not alias:
          if (__pyx_v_alias == Py_None) __pyx_t_4 = 0;
          else
          {
            Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_alias);
            if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 1810, __pyx_L42_error)
            __pyx_t_4 = (__pyx_temp != 0);
          }

          __pyx_t_3 = (!__pyx_t_4);


          if (__pyx_t_3) {
/* … */
          }
+1811:                     alias = name
            __Pyx_INCREF(__pyx_v_name);
            __Pyx_DECREF_SET(__pyx_v_alias, __pyx_v_name);
+1812:                 return _type(**{alias: value})
          __pyx_t_1 = NULL;
          __Pyx_INCREF(__pyx_v__type);
          __pyx_t_22 = __pyx_v__type; 
          #if CYTHON_VECTORCALL
          __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1812, __pyx_L42_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_INCREF(__pyx_v_alias);
          __Pyx_GIVEREF(__pyx_v_alias);
          if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_alias) != (0)) __PYX_ERR(0, 1812, __pyx_L42_error);
          #endif
          __pyx_t_6 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_22))) {
            __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_22);
            assert(__pyx_t_1);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_22);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_22, __pyx__function);
            __pyx_t_6 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_value};
            #if CYTHON_VECTORCALL
            __pyx_t_2 = __pyx_t_12;
            if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1812, __pyx_L42_error)
            __Pyx_INCREF(__pyx_t_2);
            if (__Pyx_CheckVectorcallKwarg(__pyx_t_2, 0) < (0)) __PYX_ERR(0, 1812, __pyx_L42_error)
            #else
            {
              PyObject *__pyx_temp[1] = {__pyx_v_alias};
              if (__Pyx_CheckVectorcallKwarg(__pyx_temp, 0) < (0)) __PYX_ERR(0, 1812, __pyx_L42_error)
              __pyx_t_2 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+1, 1);
              if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1812, __pyx_L42_error)
              __Pyx_GOTREF(__pyx_t_2);
            }
            #endif
            __pyx_t_11 = __Pyx_Object_VectorcallKwds((PyObject*)__pyx_t_22, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_2);
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            #if CYTHON_VECTORCALL
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            #endif
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
            if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1812, __pyx_L42_error)
            __Pyx_GOTREF(__pyx_t_11);
          }
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_11;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_11 = 0;
          goto __pyx_L46_try_return;
 1813:             else:
+1814:                 return _type(value)
        /*else*/ {
          __pyx_t_22 = NULL;
          __Pyx_INCREF(__pyx_v__type);
          __pyx_t_2 = __pyx_v__type; 
          __pyx_t_6 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_2))) {
            __pyx_t_22 = PyMethod_GET_SELF(__pyx_t_2);
            assert(__pyx_t_22);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
            __Pyx_INCREF(__pyx_t_22);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
            __pyx_t_6 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_22, __pyx_v_value};
            __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1814, __pyx_L42_error)
            __Pyx_GOTREF(__pyx_t_11);
          }
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = __pyx_t_11;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          __pyx_t_11 = 0;
          goto __pyx_L46_try_return;
        }
      }
+1815:     except Exception as exc:
    __pyx_t_18 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
    if (__pyx_t_18) {
      __Pyx_AddTraceback("datamodel.converters._handle_dataclass_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_2, &__pyx_t_22) < 0) __PYX_ERR(0, 1815, __pyx_L44_except_error)
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_22);
      __Pyx_INCREF(__pyx_t_2);
      __pyx_v_exc = __pyx_t_2;
      /*try:*/ {
/* … */
      /*finally:*/ {
        __pyx_L60_error:;
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
          __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
          __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
           __Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_25, &__pyx_t_24);
          if ( unlikely(__Pyx_GetException(&__pyx_t_29, &__pyx_t_28, &__pyx_t_27) < 0)) __Pyx_ErrFetch(&__pyx_t_29, &__pyx_t_28, &__pyx_t_27);
          __Pyx_XGOTREF(__pyx_t_29);
          __Pyx_XGOTREF(__pyx_t_28);
          __Pyx_XGOTREF(__pyx_t_27);
          __Pyx_XGOTREF(__pyx_t_26);
          __Pyx_XGOTREF(__pyx_t_25);
          __Pyx_XGOTREF(__pyx_t_24);
          __pyx_t_18 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_23 = __pyx_filename;
          {
            __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          }
          __Pyx_XGIVEREF(__pyx_t_26);
          __Pyx_XGIVEREF(__pyx_t_25);
          __Pyx_XGIVEREF(__pyx_t_24);
          __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_25, __pyx_t_24);
          __Pyx_XGIVEREF(__pyx_t_29);
          __Pyx_XGIVEREF(__pyx_t_28);
          __Pyx_XGIVEREF(__pyx_t_27);
          __Pyx_ErrRestore(__pyx_t_29, __pyx_t_28, __pyx_t_27);
          __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0;
          __pyx_lineno = __pyx_t_18; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_23;
          goto __pyx_L44_except_error;
        }
      }
    }
    goto __pyx_L44_except_error;
+1816:         raise ValueError(
        __pyx_t_1 = NULL;
+1817:             f"Invalid value for {name}:{_type} == {value}, error: {exc}"
        __pyx_t_13 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1817, __pyx_L60_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_20 = __Pyx_PyObject_FormatSimple(__pyx_v__type, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1817, __pyx_L60_error)
        __Pyx_GOTREF(__pyx_t_20);
        __pyx_t_19 = __Pyx_PyObject_FormatSimple(__pyx_v_value, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 1817, __pyx_L60_error)
        __Pyx_GOTREF(__pyx_t_19);
        __pyx_t_16 = __Pyx_PyObject_FormatSimple(__pyx_v_exc, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1817, __pyx_L60_error)
        __Pyx_GOTREF(__pyx_t_16);
        __pyx_t_21[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_value_for;
        __pyx_t_21[1] = __pyx_t_13;
        __pyx_t_21[2] = __pyx_mstate_global->__pyx_kp_u__4;
        __pyx_t_21[3] = __pyx_t_20;
        __pyx_t_21[4] = __pyx_mstate_global->__pyx_kp_u__9;
        __pyx_t_21[5] = __pyx_t_19;
        __pyx_t_21[6] = __pyx_mstate_global->__pyx_kp_u_error;
        __pyx_t_21[7] = __pyx_t_16;
        __pyx_t_15 = 32;
        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
        for (Py_ssize_t i=1; i <= 7; i += 2) {
          Py_ssize_t l = __Pyx_PyUnicode_GET_LENGTH(__pyx_t_21[i]);
          __pyx_t_15 += l;
        }
        #endif
        __pyx_t_18 = 0;
        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
        for (Py_ssize_t i=1; i <= 7; i += 2) {
          int l = __Pyx_PyUnicode_KIND_04(__pyx_t_21[i]);
          __pyx_t_18 |= l;
        }
        #endif
        __pyx_t_17 = __Pyx_PyUnicode_Join(__pyx_t_21, 8, __pyx_t_15, __pyx_t_18);
        if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1817, __pyx_L60_error)
        __Pyx_GOTREF(__pyx_t_17);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
        __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
        __pyx_t_6 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_17};
          __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1816, __pyx_L60_error)
          __Pyx_GOTREF(__pyx_t_12);
        }
        __Pyx_Raise(__pyx_t_12, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __PYX_ERR(0, 1816, __pyx_L60_error)
      }
 1818:         )
 1819: 
+1820: cdef object _handle_list_of_dataclasses(
static PyObject *__pyx_f_9datamodel_10converters__handle_list_of_dataclasses(CYTHON_UNUSED PyObject *__pyx_v_field, PyObject *__pyx_v_name, PyObject *__pyx_v_value, PyObject *__pyx_v__type, struct __pyx_opt_args_9datamodel_10converters__handle_list_of_dataclasses *__pyx_optional_args) {
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("datamodel.converters._handle_list_of_dataclasses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_sub_type);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_converter);
  __Pyx_XDECREF(__pyx_v_new_list);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_9datamodel_10converters__handle_list_of_dataclasses {
  int __pyx_n;
  PyObject *parent;
};
 1821:     object field,
 1822:     str name,
 1823:     object value,
 1824:     object _type,
+1825:     object parent = None
  PyObject *__pyx_v_parent = ((PyObject *)Py_None);
  PyObject *__pyx_v_sub_type = NULL;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_converter = NULL;
  PyObject *__pyx_v_new_list = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_r = NULL;
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_parent = __pyx_optional_args->parent;
    }
  }
 1826: ):
 1827:     """
 1828:     _handle_list_of_dataclasses.
 1829: 
 1830:     Process a list field that is annotated as List[SomeDataclass].
 1831:     If there's a registered converter for the sub-dataclass, call it;
 1832:     otherwise, build the sub-dataclass using default logic.
 1833:     """
+1834:     try:
  {
    /*try:*/ {
/* … */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
    __pyx_L5_except_error:;
    __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_L7_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_L4_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);
    __pyx_L8_try_end:;
  }
+1835:         sub_type = _type.__args__[0]
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__type, __pyx_mstate_global->__pyx_n_u_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1835, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1835, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_sub_type = __pyx_t_5;
      __pyx_t_5 = 0;
+1836:         if is_dc(sub_type):
      __pyx_t_6 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_sub_type); if (unlikely(__pyx_t_6 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1836, __pyx_L3_error)
      if (__pyx_t_6) {
/* … */
      }
+1837:             key = (sub_type, name)
        __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1837, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_v_sub_type);
        __Pyx_GIVEREF(__pyx_v_sub_type);
        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_sub_type) != (0)) __PYX_ERR(0, 1837, __pyx_L3_error);
        __Pyx_INCREF(__pyx_v_name);
        __Pyx_GIVEREF(__pyx_v_name);
        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_name) != (0)) __PYX_ERR(0, 1837, __pyx_L3_error);
        __pyx_v_key = ((PyObject*)__pyx_t_5);
        __pyx_t_5 = 0;
+1838:             converter = TYPE_PARSERS.get(key) or TYPE_PARSERS.get(_type)
        if (unlikely(__pyx_v_9datamodel_10converters_TYPE_PARSERS == Py_None)) {
          PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
          __PYX_ERR(0, 1838, __pyx_L3_error)
        }
        __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_9datamodel_10converters_TYPE_PARSERS, __pyx_v_key, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1838, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1838, __pyx_L3_error)
        if (!__pyx_t_6) {
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        } else {
          __Pyx_INCREF(__pyx_t_4);
          __pyx_t_5 = __pyx_t_4;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L10_bool_binop_done;
        }
        if (unlikely(__pyx_v_9datamodel_10converters_TYPE_PARSERS == Py_None)) {
          PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
          __PYX_ERR(0, 1838, __pyx_L3_error)
        }
        __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_9datamodel_10converters_TYPE_PARSERS, __pyx_v__type, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1838, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_4);
        __pyx_t_5 = __pyx_t_4;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_L10_bool_binop_done:;
        __pyx_v_converter = __pyx_t_5;
        __pyx_t_5 = 0;
+1839:             new_list = []
        __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1839, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_v_new_list = ((PyObject*)__pyx_t_5);
        __pyx_t_5 = 0;
+1840:             for item in value:
        if (likely(PyList_CheckExact(__pyx_v_value)) || PyTuple_CheckExact(__pyx_v_value)) {
          __pyx_t_5 = __pyx_v_value; __Pyx_INCREF(__pyx_t_5);
          __pyx_t_7 = 0;
          __pyx_t_8 = NULL;
        } else {
          __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1840, __pyx_L3_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_8 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1840, __pyx_L3_error)
        }
        for (;;) {
          if (likely(!__pyx_t_8)) {
            if (likely(PyList_CheckExact(__pyx_t_5))) {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
                #if !CYTHON_ASSUME_SAFE_SIZE
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1840, __pyx_L3_error)
                #endif
                if (__pyx_t_7 >= __pyx_temp) break;
              }
              __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_5, __pyx_t_7, __Pyx_ReferenceSharing_OwnStrongReference);
              ++__pyx_t_7;
            } else {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
                #if !CYTHON_ASSUME_SAFE_SIZE
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1840, __pyx_L3_error)
                #endif
                if (__pyx_t_7 >= __pyx_temp) break;
              }
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7));
              #else
              __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_7);
              #endif
              ++__pyx_t_7;
            }
            if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1840, __pyx_L3_error)
          } else {
            __pyx_t_4 = __pyx_t_8(__pyx_t_5);
            if (unlikely(!__pyx_t_4)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1840, __pyx_L3_error)
                PyErr_Clear();
              }
              break;
            }
          }
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4);
          __pyx_t_4 = 0;
/* … */
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1841:                 if converter:
          __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_converter); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1841, __pyx_L3_error)
          if (__pyx_t_6) {
/* … */
            goto __pyx_L14;
          }
+1842:                     new_list.append(converter(name, item, sub_type, parent))
            __pyx_t_9 = NULL;
            __Pyx_INCREF(__pyx_v_converter);
            __pyx_t_10 = __pyx_v_converter; 
            __pyx_t_11 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_10))) {
              __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
              assert(__pyx_t_9);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
              __Pyx_INCREF(__pyx_t_9);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
              __pyx_t_11 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[5] = {__pyx_t_9, __pyx_v_name, __pyx_v_item, __pyx_v_sub_type, __pyx_v_parent};
              __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_11, (5-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1842, __pyx_L3_error)
              __Pyx_GOTREF(__pyx_t_4);
            }
            __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_new_list, __pyx_t_4); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 1842, __pyx_L3_error)
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

+1843:                 elif isinstance(item, dict):
          __pyx_t_6 = PyDict_Check(__pyx_v_item); 
          if (__pyx_t_6) {
/* … */
            goto __pyx_L14;
          }
+1844:                     new_list.append(sub_type(**item))
            if (unlikely(__pyx_v_item == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
              __PYX_ERR(0, 1844, __pyx_L3_error)
            }
            if (likely(PyDict_CheckExact(__pyx_v_item))) {
              __pyx_t_4 = PyDict_Copy(__pyx_v_item); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1844, __pyx_L3_error)
              __Pyx_GOTREF(__pyx_t_4);
            } else {
              __pyx_t_4 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_item); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1844, __pyx_L3_error)
              __Pyx_GOTREF(__pyx_t_4);
            }
            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_v_sub_type, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1844, __pyx_L3_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_new_list, __pyx_t_10); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 1844, __pyx_L3_error)
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

 1845:                 else:
+1846:                     new_list.append(item)
          /*else*/ {
            __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_new_list, __pyx_v_item); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 1846, __pyx_L3_error)

          }
          __pyx_L14:;
+1847:             return new_list
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __Pyx_INCREF(__pyx_v_new_list);
            __pyx_r = __pyx_v_new_list;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        goto __pyx_L7_try_return;
+1848:     except ValueError:
    __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_13) {
      __Pyx_AddTraceback("datamodel.converters._handle_list_of_dataclasses", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_10, &__pyx_t_4) < 0) __PYX_ERR(0, 1848, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_4);
+1849:         raise
      __Pyx_GIVEREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_10, __pyx_t_4);
      __pyx_t_5 = 0;  __pyx_t_10 = 0;  __pyx_t_4 = 0; 
      __PYX_ERR(0, 1849, __pyx_L5_except_error)
    }
+1850:     except AttributeError:
    __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_AttributeError))));
    if (__pyx_t_13) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
 1851:         pass
+1852:     return value
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __Pyx_INCREF(__pyx_v_value);
      __pyx_r = __pyx_v_value;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  goto __pyx_L0;
 1853: 
 1854: # Helper function to handle sets of dataclasses
+1855: cdef object _handle_set_of_dataclasses(
static PyObject *__pyx_f_9datamodel_10converters__handle_set_of_dataclasses(CYTHON_UNUSED PyObject *__pyx_v_field, PyObject *__pyx_v_name, PyObject *__pyx_v_value, PyObject *__pyx_v__type, struct __pyx_opt_args_9datamodel_10converters__handle_set_of_dataclasses *__pyx_optional_args) {
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("datamodel.converters._handle_set_of_dataclasses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_sub_type);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_converter);
  __Pyx_XDECREF(__pyx_v_new_set);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_9datamodel_10converters__handle_set_of_dataclasses {
  int __pyx_n;
  PyObject *parent;
};
 1856:     object field,
 1857:     str name,
 1858:     object value,
 1859:     object _type,
+1860:     object parent = None
  PyObject *__pyx_v_parent = ((PyObject *)Py_None);
  PyObject *__pyx_v_sub_type = NULL;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_converter = NULL;
  PyObject *__pyx_v_new_set = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_r = NULL;
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_parent = __pyx_optional_args->parent;
    }
  }
 1861: ):
 1862:     """
 1863:     _handle_set_of_dataclasses.
 1864: 
 1865:     Process a set field that is annotated as Set[SomeDataclass].
 1866:     If there's a registered converter for the sub-dataclass, call it;
 1867:     otherwise, build the sub-dataclass using default logic.
 1868:     """
+1869:     try:
  {
    /*try:*/ {
/* … */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
    __pyx_L5_except_error:;
    __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_L7_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_L4_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);
    __pyx_L8_try_end:;
  }
+1870:         sub_type = _type.__args__[0]
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__type, __pyx_mstate_global->__pyx_n_u_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1870, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1870, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_sub_type = __pyx_t_5;
      __pyx_t_5 = 0;
+1871:         if is_dc(sub_type):
      __pyx_t_6 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_sub_type); if (unlikely(__pyx_t_6 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1871, __pyx_L3_error)
      if (__pyx_t_6) {
/* … */
      }
+1872:             key = (sub_type, name)
        __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1872, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_v_sub_type);
        __Pyx_GIVEREF(__pyx_v_sub_type);
        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_sub_type) != (0)) __PYX_ERR(0, 1872, __pyx_L3_error);
        __Pyx_INCREF(__pyx_v_name);
        __Pyx_GIVEREF(__pyx_v_name);
        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_name) != (0)) __PYX_ERR(0, 1872, __pyx_L3_error);
        __pyx_v_key = ((PyObject*)__pyx_t_5);
        __pyx_t_5 = 0;
+1873:             converter = TYPE_PARSERS.get(key) or TYPE_PARSERS.get(_type)
        if (unlikely(__pyx_v_9datamodel_10converters_TYPE_PARSERS == Py_None)) {
          PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
          __PYX_ERR(0, 1873, __pyx_L3_error)
        }
        __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_9datamodel_10converters_TYPE_PARSERS, __pyx_v_key, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1873, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1873, __pyx_L3_error)
        if (!__pyx_t_6) {
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        } else {
          __Pyx_INCREF(__pyx_t_4);
          __pyx_t_5 = __pyx_t_4;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L10_bool_binop_done;
        }
        if (unlikely(__pyx_v_9datamodel_10converters_TYPE_PARSERS == Py_None)) {
          PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
          __PYX_ERR(0, 1873, __pyx_L3_error)
        }
        __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_9datamodel_10converters_TYPE_PARSERS, __pyx_v__type, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1873, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_4);
        __pyx_t_5 = __pyx_t_4;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_L10_bool_binop_done:;
        __pyx_v_converter = __pyx_t_5;
        __pyx_t_5 = 0;
+1874:             new_set = set()
        __pyx_t_5 = PySet_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1874, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_v_new_set = ((PyObject*)__pyx_t_5);
        __pyx_t_5 = 0;
+1875:             for item in value:
        if (likely(PyList_CheckExact(__pyx_v_value)) || PyTuple_CheckExact(__pyx_v_value)) {
          __pyx_t_5 = __pyx_v_value; __Pyx_INCREF(__pyx_t_5);
          __pyx_t_7 = 0;
          __pyx_t_8 = NULL;
        } else {
          __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1875, __pyx_L3_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_8 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1875, __pyx_L3_error)
        }
        for (;;) {
          if (likely(!__pyx_t_8)) {
            if (likely(PyList_CheckExact(__pyx_t_5))) {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
                #if !CYTHON_ASSUME_SAFE_SIZE
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1875, __pyx_L3_error)
                #endif
                if (__pyx_t_7 >= __pyx_temp) break;
              }
              __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_5, __pyx_t_7, __Pyx_ReferenceSharing_OwnStrongReference);
              ++__pyx_t_7;
            } else {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
                #if !CYTHON_ASSUME_SAFE_SIZE
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1875, __pyx_L3_error)
                #endif
                if (__pyx_t_7 >= __pyx_temp) break;
              }
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7));
              #else
              __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_7);
              #endif
              ++__pyx_t_7;
            }
            if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1875, __pyx_L3_error)
          } else {
            __pyx_t_4 = __pyx_t_8(__pyx_t_5);
            if (unlikely(!__pyx_t_4)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1875, __pyx_L3_error)
                PyErr_Clear();
              }
              break;
            }
          }
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4);
          __pyx_t_4 = 0;
/* … */
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1876:                 if converter:
          __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_converter); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1876, __pyx_L3_error)
          if (__pyx_t_6) {
/* … */
            goto __pyx_L14;
          }
+1877:                     new_set.add(converter(name, item, sub_type, parent))
            __pyx_t_9 = NULL;
            __Pyx_INCREF(__pyx_v_converter);
            __pyx_t_10 = __pyx_v_converter; 
            __pyx_t_11 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_10))) {
              __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
              assert(__pyx_t_9);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
              __Pyx_INCREF(__pyx_t_9);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
              __pyx_t_11 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[5] = {__pyx_t_9, __pyx_v_name, __pyx_v_item, __pyx_v_sub_type, __pyx_v_parent};
              __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_11, (5-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1877, __pyx_L3_error)
              __Pyx_GOTREF(__pyx_t_4);
            }
            __pyx_t_12 = PySet_Add(__pyx_v_new_set, __pyx_t_4); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 1877, __pyx_L3_error)
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

+1878:                 elif isinstance(item, dict):
          __pyx_t_6 = PyDict_Check(__pyx_v_item); 
          if (__pyx_t_6) {
/* … */
            goto __pyx_L14;
          }
+1879:                     new_set.add(sub_type(**item))
            if (unlikely(__pyx_v_item == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
              __PYX_ERR(0, 1879, __pyx_L3_error)
            }
            if (likely(PyDict_CheckExact(__pyx_v_item))) {
              __pyx_t_4 = PyDict_Copy(__pyx_v_item); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1879, __pyx_L3_error)
              __Pyx_GOTREF(__pyx_t_4);
            } else {
              __pyx_t_4 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_item); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1879, __pyx_L3_error)
              __Pyx_GOTREF(__pyx_t_4);
            }
            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_v_sub_type, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1879, __pyx_L3_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __pyx_t_12 = PySet_Add(__pyx_v_new_set, __pyx_t_10); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 1879, __pyx_L3_error)
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

 1880:                 else:
+1881:                     new_set.add(item)
          /*else*/ {
            __pyx_t_12 = PySet_Add(__pyx_v_new_set, __pyx_v_item); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 1881, __pyx_L3_error)

          }
          __pyx_L14:;
+1882:             return new_set
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __Pyx_INCREF(__pyx_v_new_set);
            __pyx_r = __pyx_v_new_set;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        goto __pyx_L7_try_return;
+1883:     except (AttributeError, IndexError):
    __pyx_t_13 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_AttributeError))), ((PyObject *)(((PyTypeObject*)PyExc_IndexError))));
    if (__pyx_t_13) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
 1884:         pass
+1885:     return value
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __Pyx_INCREF(__pyx_v_value);
      __pyx_r = __pyx_v_value;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  goto __pyx_L0;
 1886: 
+1887: cdef object _handle_default_value(
static PyObject *__pyx_f_9datamodel_10converters__handle_default_value(PyObject *__pyx_v_obj, PyObject *__pyx_v_name, PyObject *__pyx_v_value, PyObject *__pyx_v_default_func, PyObject *__pyx_v_default_is_callable) {
  PyObject *__pyx_v_new_val = NULL;
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("datamodel.converters._handle_default_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_new_val);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1888:     object obj,
 1889:     str name,
 1890:     object value,
 1891:     object default_func,
 1892:     object default_is_callable
 1893: ):
 1894:     """Handle default value of fields."""
 1895:     # If value is callable, try calling it directly
+1896:     if PyCallable_Check(value):
  __pyx_t_1 = PyCallable_Check(__pyx_v_value);

  if (__pyx_t_1) {
/* … */
  }
+1897:         try:
    {
      /*try:*/ {
/* … */
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }
+1898:             new_val = value()
        __pyx_t_6 = NULL;
        __Pyx_INCREF(__pyx_v_value);
        __pyx_t_7 = __pyx_v_value; 
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
          assert(__pyx_t_6);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
          __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1898, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __pyx_v_new_val = __pyx_t_5;
        __pyx_t_5 = 0;
+1899:         except TypeError:
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("datamodel.converters._handle_default_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_6) < 0) __PYX_ERR(0, 1899, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_6);
+1900:             try:
        {
          /*try:*/ {
/* … */
          }
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          goto __pyx_L19_try_end;
          __pyx_L12_error:;
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
/* … */
          __pyx_L14_except_error:;
          __Pyx_XGIVEREF(__pyx_t_10);
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
          goto __pyx_L6_except_error;
          __pyx_L13_exception_handled:;
          __Pyx_XGIVEREF(__pyx_t_10);
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
          __pyx_L19_try_end:;
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;
+1901:                 new_val = default_func()
            __pyx_t_14 = NULL;
            __Pyx_INCREF(__pyx_v_default_func);
            __pyx_t_15 = __pyx_v_default_func; 
            __pyx_t_8 = 1;
            #if CYTHON_UNPACK_METHODS
            if (unlikely(PyMethod_Check(__pyx_t_15))) {
              __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_15);
              assert(__pyx_t_14);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15);
              __Pyx_INCREF(__pyx_t_14);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_15, __pyx__function);
              __pyx_t_8 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_14, NULL};
              __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
              __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
              if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1901, __pyx_L12_error)
              __Pyx_GOTREF(__pyx_t_13);
            }
            __Pyx_XDECREF_SET(__pyx_v_new_val, __pyx_t_13);
            __pyx_t_13 = 0;
+1902:             except TypeError:
          __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
          if (__pyx_t_9) {
            __Pyx_ErrRestore(0,0,0);
+1903:                 new_val = None
            __Pyx_INCREF(Py_None);
            __Pyx_XDECREF_SET(__pyx_v_new_val, Py_None);
            goto __pyx_L13_exception_handled;
          }
          goto __pyx_L14_except_error;
+1904:         setattr(obj, name, new_val)
    __pyx_t_16 = PyObject_SetAttr(__pyx_v_obj, __pyx_v_name, __pyx_v_new_val); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 1904, __pyx_L1_error)

+1905:         return new_val
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_new_val);
        __pyx_r = __pyx_v_new_val;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 1906: 
 1907:     # If f.default is callable and value is None
+1908:     if default_is_callable and value is None:
  __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_v_default_is_callable); if (unlikely((__pyx_t_17 < 0))) __PYX_ERR(0, 1908, __pyx_L1_error)
  if (__pyx_t_17) {

  } else {

    __pyx_t_1 = __pyx_t_17;

    goto __pyx_L23_bool_binop_done;
  }
  __pyx_t_17 = (__pyx_v_value == Py_None);

  __pyx_t_1 = __pyx_t_17;

  __pyx_L23_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+1909:         try:
    {
      /*try:*/ {
/* … */
      }
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L30_try_end;
      __pyx_L25_error:;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
      __pyx_L27_except_error:;
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_3, __pyx_t_2);
      goto __pyx_L1_error;
      __pyx_L26_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_3, __pyx_t_2);
      __pyx_L30_try_end:;
    }
+1910:             new_val = default_func()
        __pyx_t_7 = NULL;
        __Pyx_INCREF(__pyx_v_default_func);
        __pyx_t_5 = __pyx_v_default_func; 
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
          assert(__pyx_t_7);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
          __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1910, __pyx_L25_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __pyx_v_new_val = __pyx_t_6;
        __pyx_t_6 = 0;
+1911:         except (AttributeError, RuntimeError, TypeError):
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_AttributeError)))) || __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_RuntimeError)))) || __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
      if (__pyx_t_9) {
        __Pyx_ErrRestore(0,0,0);
+1912:             new_val = None
        __Pyx_INCREF(Py_None);
        __Pyx_XDECREF_SET(__pyx_v_new_val, Py_None);
        goto __pyx_L26_exception_handled;
      }
      goto __pyx_L27_except_error;
+1913:         setattr(obj, name, new_val)
    __pyx_t_16 = PyObject_SetAttr(__pyx_v_obj, __pyx_v_name, __pyx_v_new_val); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 1913, __pyx_L1_error)

+1914:         return new_val
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_new_val);
        __pyx_r = __pyx_v_new_val;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 1915: 
 1916:     # If there's a non-missing default and no value
+1917:     if not isinstance(default_func, _MISSING_TYPE) and value is None:
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_MISSING_TYPE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_17 = PyObject_IsInstance(__pyx_v_default_func, __pyx_t_6); if (unlikely(__pyx_t_17 == ((int)-1))) __PYX_ERR(0, 1917, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_18 = (!__pyx_t_17);


  if (__pyx_t_18) {

  } else {

    __pyx_t_1 = __pyx_t_18;

    goto __pyx_L34_bool_binop_done;
  }
  __pyx_t_18 = (__pyx_v_value == Py_None);

  __pyx_t_1 = __pyx_t_18;

  __pyx_L34_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+1918:         setattr(obj, name, default_func)
    __pyx_t_16 = PyObject_SetAttr(__pyx_v_obj, __pyx_v_name, __pyx_v_default_func); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 1918, __pyx_L1_error)

+1919:         return default_func
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_default_func);
        __pyx_r = __pyx_v_default_func;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 1920: 
 1921:     # Otherwise, return value as-is
+1922:     return value
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __Pyx_INCREF(__pyx_v_value);
      __pyx_r = __pyx_v_value;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  goto __pyx_L0;
 1923: 
+1924: cdef dict _build_error(str name, str message, object exp):
static PyObject *__pyx_f_9datamodel_10converters__build_error(PyObject *__pyx_v_name, PyObject *__pyx_v_message, PyObject *__pyx_v_exp) {
  PyObject *__pyx_v_error_message = 0;
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("datamodel.converters._build_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_error_message);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1925:     """
 1926:     _build_error.
 1927: 
 1928:     Build a tuple containing an error message and the name of the field.
 1929:     """
+1930:     cdef str error_message = message + name + ", Error: " + str(exp)
  __pyx_t_1 = __Pyx_PyUnicode_ConcatSafe(__pyx_v_message, __pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_Error); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Unicode(__pyx_v_exp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_error_message = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
+1931:     return {name: error_message}
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1931, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_v_name, __pyx_v_error_message) < (0)) __PYX_ERR(0, 1931, __pyx_L1_error)
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = ((PyObject*)__pyx_t_3);
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_3 = 0;
  goto __pyx_L0;
 1932: 
+1933: cpdef dict processing_fields(object obj, list columns):
static PyObject *__pyx_pw_9datamodel_10converters_35processing_fields(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_processing_fields(PyObject *__pyx_v_obj, PyObject *__pyx_v_columns, CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_v__encoder = 0;
  PyObject *__pyx_v__default = 0;
  PyObject *__pyx_v__type = 0;
  PyObject *__pyx_v_meta = 0;
  int __pyx_v_as_objects;
  int __pyx_v_no_nesting;
  PyObject *__pyx_v_type_args = 0;
  PyObject *__pyx_v_errors = 0;
  CYTHON_UNUSED PyObject *__pyx_v__typeinfo = 0;
  PyObject *__pyx_v_c_col = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_f = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_v_newval = 0;
  PyObject *__pyx_v_field_category = NULL;
  PyObject *__pyx_v_e = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_typeinfo = NULL;
  PyObject *__pyx_v_metadata = NULL;
  PyObject *__pyx_v_ex = NULL;
  PyObject *__pyx_v_set_value = NULL;
  PyObject *__pyx_v__case = NULL;
  PyObject *__pyx_v_error = NULL;
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_27);
  __Pyx_XDECREF(__pyx_t_37);
  __Pyx_XDECREF(__pyx_t_39);
  __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v__encoder);
  __Pyx_XDECREF(__pyx_v__default);
  __Pyx_XDECREF(__pyx_v__type);
  __Pyx_XDECREF(__pyx_v_meta);


  __Pyx_XDECREF(__pyx_v_type_args);
  __Pyx_XDECREF(__pyx_v_errors);
  __Pyx_XDECREF(__pyx_v__typeinfo);
  __Pyx_XDECREF(__pyx_v_c_col);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_f);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XDECREF(__pyx_v_newval);
  __Pyx_XDECREF(__pyx_v_field_category);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XDECREF(__pyx_v_typeinfo);
  __Pyx_XDECREF(__pyx_v_metadata);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_XDECREF(__pyx_v_set_value);
  __Pyx_XDECREF(__pyx_v__case);
  __Pyx_XDECREF(__pyx_v_error);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_35processing_fields(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_34processing_fields, "processing_fields(obj, list columns) -> dict\n\nProcess the fields (columns) of a dataclass object.\n\nFor each field, if a custom parser is attached (i.e. f.parser is not None),\nit is used to convert the value. Otherwise, the standard conversion logic\n(parse_basic, parse_typing, etc.) is applied.");
static PyMethodDef __pyx_mdef_9datamodel_10converters_35processing_fields = {"processing_fields", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_35processing_fields, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_34processing_fields};
static PyObject *__pyx_pw_9datamodel_10converters_35processing_fields(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_v_columns = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("processing_fields (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,&__pyx_mstate_global->__pyx_n_u_columns,0};
  PyObject* values[2] = {0,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 1933, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1933, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1933, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "processing_fields", 0) < (0)) __PYX_ERR(0, 1933, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("processing_fields", 1, 2, 2, i); __PYX_ERR(0, 1933, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1933, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1933, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
    __pyx_v_columns = ((PyObject*)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("processing_fields", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1933, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_columns), (&PyList_Type), 1, "columns", 1))) __PYX_ERR(0, 1933, __pyx_L1_error)
  __pyx_r = __pyx_pf_9datamodel_10converters_34processing_fields(__pyx_self, __pyx_v_obj, __pyx_v_columns);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_34processing_fields(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_obj, PyObject *__pyx_v_columns) {
  PyObject *__pyx_r = NULL;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_processing_fields(__pyx_v_obj, __pyx_v_columns, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_35processing_fields, 0, __pyx_mstate_global->__pyx_n_u_processing_fields, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[23])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_processing_fields, __pyx_t_2) < (0)) __PYX_ERR(0, 1933, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 1934:     """
 1935:     Process the fields (columns) of a dataclass object.
 1936: 
 1937:     For each field, if a custom parser is attached (i.e. f.parser is not None),
 1938:     it is used to convert the value. Otherwise, the standard conversion logic
 1939:     (parse_basic, parse_typing, etc.) is applied.
 1940:     """
 1941:     cdef object new_val
+1942:     cdef object _encoder = None
  __Pyx_INCREF(Py_None);
  __pyx_v__encoder = Py_None;
+1943:     cdef object _default = None
  __Pyx_INCREF(Py_None);
  __pyx_v__default = Py_None;
+1944:     cdef object _type = None
  __Pyx_INCREF(Py_None);
  __pyx_v__type = Py_None;
+1945:     cdef object meta = obj.Meta
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_Meta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_meta = __pyx_t_1;
  __pyx_t_1 = 0;
+1946:     cdef bint as_objects = meta.as_objects
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_meta, __pyx_mstate_global->__pyx_n_u_as_objects); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1946, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_as_objects = __pyx_t_2;
+1947:     cdef bint no_nesting = meta.no_nesting
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_meta, __pyx_mstate_global->__pyx_n_u_no_nesting); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1947, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_no_nesting = __pyx_t_2;
+1948:     cdef tuple type_args = ()
  __Pyx_INCREF(__pyx_mstate_global->__pyx_empty_tuple);
  __pyx_v_type_args = __pyx_mstate_global->__pyx_empty_tuple;
 1949:     # Error handling
+1950:     cdef dict errors = {}
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_errors = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 1951:     # Type Information
+1952:     cdef dict _typeinfo = {}
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1952, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__typeinfo = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 1953:     # Column information:
 1954:     cdef tuple c_col
 1955:     cdef str name
 1956:     cdef object f
 1957:     cdef object value
 1958:     cdef object newval
 1959: 
+1960:     for c_col in columns:
  if (unlikely(__pyx_v_columns == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not iterable");
    __PYX_ERR(0, 1960, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_v_columns; __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3 = 0;
  for (;;) {
    {
      Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
      #if !CYTHON_ASSUME_SAFE_SIZE
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1960, __pyx_L1_error)
      #endif
      if (__pyx_t_3 >= __pyx_temp) break;
    }
    __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
    ++__pyx_t_3;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1960, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (!(likely(PyTuple_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_4))) __PYX_ERR(0, 1960, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_c_col, ((PyObject*)__pyx_t_4));
    __pyx_t_4 = 0;
/* … */
    __pyx_L3_continue:;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1961:         name = c_col[0]
    if (unlikely(__pyx_v_c_col == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
      __PYX_ERR(0, 1961, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_c_col, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1961, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (!(likely(PyUnicode_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(0, 1961, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_name, ((PyObject*)__pyx_t_4));
    __pyx_t_4 = 0;
+1962:         f = c_col[1]
    if (unlikely(__pyx_v_c_col == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
      __PYX_ERR(0, 1962, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_c_col, 1, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1962, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XDECREF_SET(__pyx_v_f, __pyx_t_4);
    __pyx_t_4 = 0;
+1963:         value = getattr(obj, name)
    __pyx_t_4 = __Pyx_GetAttr(__pyx_v_obj, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1963, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_4);
    __pyx_t_4 = 0;
 1964:         # Use the precomputed field type category:
+1965:         field_category = f._type_category
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_type_category); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1965, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XDECREF_SET(__pyx_v_field_category, __pyx_t_4);
    __pyx_t_4 = 0;
 1966: 
+1967:         if field_category == 'descriptor':
    __pyx_t_2 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_v_field_category, __pyx_mstate_global->__pyx_n_u_descriptor, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1967, __pyx_L1_error)
    if (__pyx_t_2) {
/* … */
    }
 1968:             # Handle descriptor-specific logic
+1969:             try:
      {
        /*try:*/ {
/* … */
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L13_try_end;
        __pyx_L6_error:;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
        __pyx_L8_except_error:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L1_error;
        __pyx_L7_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        __pyx_L13_try_end:;
      }
+1970:                 value = f.__get__(obj, type(obj))  # Get the descriptor value
          __pyx_t_8 = __pyx_v_f;
          __Pyx_INCREF(__pyx_t_8);
          __pyx_t_9 = 0;
          {
            PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_v_obj, ((PyObject *)Py_TYPE(__pyx_v_obj))};
            __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_2, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
            if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1970, __pyx_L6_error)
            __Pyx_GOTREF(__pyx_t_4);
          }
          __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_4);
          __pyx_t_4 = 0;
+1971:                 PyObject_SetAttr(obj, name, value)
          __pyx_t_10 = PyObject_SetAttr(__pyx_v_obj, __pyx_v_name, __pyx_v_value); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1971, __pyx_L6_error)

+1972:             except Exception as e:
        __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
        if (__pyx_t_10) {
          __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_11) < 0) __PYX_ERR(0, 1972, __pyx_L8_except_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_8);
          __Pyx_XGOTREF(__pyx_t_11);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_XDECREF_SET(__pyx_v_e, __pyx_t_8);
          /*try:*/ {
/* … */
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
              goto __pyx_L20;
            }
            __pyx_L19_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __Pyx_PyThreadState_assign
              __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0;
              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
               __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_22, &__pyx_t_23);
              if ( unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
              __Pyx_XGOTREF(__pyx_t_18);
              __Pyx_XGOTREF(__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_20);
              __Pyx_XGOTREF(__pyx_t_21);
              __Pyx_XGOTREF(__pyx_t_22);
              __Pyx_XGOTREF(__pyx_t_23);
              __pyx_t_10 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
              }
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              __Pyx_XGIVEREF(__pyx_t_18);
              __Pyx_XGIVEREF(__pyx_t_19);
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_ErrRestore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
              __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0;
              __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17;
              goto __pyx_L8_except_error;
            }
            __pyx_L20:;
          }
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          goto __pyx_L7_exception_handled;
        }
        goto __pyx_L8_except_error;
+1973:                 errors.update(_build_error(name, f"Descriptor Error on {name}: ", e))
            __pyx_t_12 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1973, __pyx_L19_error)
            __Pyx_GOTREF(__pyx_t_12);
            __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_Descriptor_Error_on;
            __pyx_t_13[1] = __pyx_t_12;
            __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u__5;
            __pyx_t_14 = 22;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13[1]);
            #endif
            __pyx_t_10 = 0;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_13[1]);
            #endif
            __pyx_t_15 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, __pyx_t_14, __pyx_t_10);
            if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1973, __pyx_L19_error)
            __Pyx_GOTREF(__pyx_t_15);
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            __pyx_t_12 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, ((PyObject*)__pyx_t_15), __pyx_v_e); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1973, __pyx_L19_error)
            __Pyx_GOTREF(__pyx_t_12);
            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
            __pyx_t_15 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_12); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1973, __pyx_L19_error)
            __Pyx_GOTREF(__pyx_t_15);
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          }
+1974:             continue
      goto __pyx_L3_continue;
 1975: 
 1976:         # get type and default:
+1977:         _type = f.type
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_type_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1977, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF_SET(__pyx_v__type, __pyx_t_11);
    __pyx_t_11 = 0;
+1978:         _default = f.default
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_default); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1978, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF_SET(__pyx_v__default, __pyx_t_11);
    __pyx_t_11 = 0;
+1979:         typeinfo = f.typeinfo # cached info (e.g., type_args, default_callable)
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_typeinfo); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1979, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_XDECREF_SET(__pyx_v_typeinfo, __pyx_t_11);
    __pyx_t_11 = 0;
+1980:         type_args = f.type_args
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_type_args); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1980, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    if (!(likely(PyTuple_CheckExact(__pyx_t_11))||((__pyx_t_11) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_11))) __PYX_ERR(0, 1980, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_type_args, ((PyObject*)__pyx_t_11));
    __pyx_t_11 = 0;
+1981:         try:
    {
      /*try:*/ {
/* … */
      }
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L32_try_end;
      __pyx_L25_error:;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
      __pyx_L27_except_error:;
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
      goto __pyx_L1_error;
      __pyx_L26_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
      __pyx_L32_try_end:;
    }
+1982:             metadata = f.metadata
        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_metadata); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1982, __pyx_L25_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_XDECREF_SET(__pyx_v_metadata, __pyx_t_11);
        __pyx_t_11 = 0;
+1983:         except AttributeError:
      __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_AttributeError))));
      if (__pyx_t_16) {
        __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_8, &__pyx_t_4) < 0) __PYX_ERR(0, 1983, __pyx_L27_except_error)
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_4);
+1984:             metadata = PyObject_GetAttr(f, "metadata")
        __pyx_t_15 = PyObject_GetAttr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_metadata); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1984, __pyx_L27_except_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_XDECREF_SET(__pyx_v_metadata, __pyx_t_15);
        __pyx_t_15 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        goto __pyx_L26_exception_handled;
      }
      goto __pyx_L27_except_error;
 1985: 
 1986:         # _default_callable = typeinfo.get('default_callable', False)
 1987:         # Check if object is empty
+1988:         if is_empty(value) and not PyObject_IsInstance(value, list):
    __pyx_t_24 = __pyx_f_9datamodel_10converters_is_empty(__pyx_v_value); if (unlikely(__pyx_t_24 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1988, __pyx_L1_error)
    if (__pyx_t_24) {

    } else {

      __pyx_t_2 = __pyx_t_24;

      goto __pyx_L36_bool_binop_done;
    }
    __pyx_t_24 = PyObject_IsInstance(__pyx_v_value, ((PyObject *)(&PyList_Type))); if (unlikely(__pyx_t_24 == ((int)-1))) __PYX_ERR(0, 1988, __pyx_L1_error)
    __pyx_t_25 = (!__pyx_t_24);



    __pyx_t_2 = __pyx_t_25;

    __pyx_L36_bool_binop_done:;
    if (__pyx_t_2) {
/* … */
    }
+1989:             if _type == str and value is not "":
      __pyx_t_25 = __Pyx_PyObject_RichCompareBool(__pyx_v__type, ((PyObject *)(&PyUnicode_Type)), Py_EQ); if (unlikely((__pyx_t_25 < 0))) __PYX_ERR(0, 1989, __pyx_L1_error)
      if (__pyx_t_25) {

      } else {

        __pyx_t_2 = __pyx_t_25;

        goto __pyx_L39_bool_binop_done;
      }
      __pyx_t_25 = (__pyx_v_value != __pyx_mstate_global->__pyx_kp_u__2);

      __pyx_t_2 = __pyx_t_25;

      __pyx_L39_bool_binop_done:;
      if (__pyx_t_2) {
/* … */
      }
+1990:                 value = f.default_factory if PyObject_IsInstance(_default, (_MISSING_TYPE)) else _default
        __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_MISSING_TYPE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1990, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_2 = PyObject_IsInstance(__pyx_v__default, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1990, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (__pyx_t_2) {
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_default_factory); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1990, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_4 = __pyx_t_8;
          __pyx_t_8 = 0;
        } else {
          __Pyx_INCREF(__pyx_v__default);
          __pyx_t_4 = __pyx_v__default;
        }

        __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_4);
        __pyx_t_4 = 0;
 1991:             # PyObject_SetAttr(obj, name, value)
+1992:             obj.__dict__[name] = value
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1992, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (unlikely((PyObject_SetItem(__pyx_t_4, __pyx_v_name, __pyx_v_value) < 0))) __PYX_ERR(0, 1992, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1993:         if _default is not None:
    __pyx_t_2 = (__pyx_v__default != Py_None);
    if (__pyx_t_2) {
/* … */
    }
+1994:             value = _handle_default_value(obj, name, value, _default, f._default_callable)
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_default_callable); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1994, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = __pyx_f_9datamodel_10converters__handle_default_value(__pyx_v_obj, __pyx_v_name, __pyx_v_value, __pyx_v__default, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1994, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_8);
      __pyx_t_8 = 0;
+1995:         try:
    {
      /*try:*/ {
/* … */
      }
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L49_try_end;
      __pyx_L42_error:;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
      __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
      __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
      __pyx_L44_except_error:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L1_error;
      __pyx_L48_try_continue:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L3_continue;
      __pyx_L49_try_end:;
    }
+1996:             _encoder = metadata.get('encoder')
        __pyx_t_4 = __pyx_v_metadata;
        __Pyx_INCREF(__pyx_t_4);
        __pyx_t_9 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_n_u_encoder};
          __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1996, __pyx_L42_error)
          __Pyx_GOTREF(__pyx_t_8);
        }
        __Pyx_DECREF_SET(__pyx_v__encoder, __pyx_t_8);
        __pyx_t_8 = 0;
+1997:             newval = value
        __Pyx_INCREF(__pyx_v_value);
        __Pyx_XDECREF_SET(__pyx_v_newval, __pyx_v_value);
 1998: 
+1999:             if f.parser is not None:
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_parser); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1999, __pyx_L42_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_2 = (__pyx_t_8 != Py_None);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (__pyx_t_2) {
/* … */
          goto __pyx_L50;
        }
 2000:                 # If a custom parser is attached to Field, use it
+2001:                 try:
          {
            /*try:*/ {
/* … */
            }
            __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
            __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
            goto __pyx_L58_try_end;
            __pyx_L51_error:;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
            __pyx_L53_except_error:;
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
            goto __pyx_L42_error;
            __pyx_L52_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
            __pyx_L58_try_end:;
          }
+2002:                     newval = f.parser(value)
              __pyx_t_4 = __pyx_v_f;
              __Pyx_INCREF(__pyx_t_4);
              __pyx_t_9 = 0;
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_value};
                __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_parser, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2002, __pyx_L51_error)
                __Pyx_GOTREF(__pyx_t_8);
              }
              __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_8);
              __pyx_t_8 = 0;
+2003:                     if newval != value:
              __pyx_t_2 = __Pyx_PyObject_CompareBoolNe_object_object(__pyx_v_newval, __pyx_v_value, Py_NE); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2003, __pyx_L51_error)
              if (__pyx_t_2) {
/* … */
              }
+2004:                         obj.__dict__[name] = newval
                __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2004, __pyx_L51_error)
                __Pyx_GOTREF(__pyx_t_8);
                if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2004, __pyx_L51_error)
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2005:                 except Exception as ex:
            __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
            if (__pyx_t_16) {
              __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_4, &__pyx_t_11) < 0) __PYX_ERR(0, 2005, __pyx_L53_except_error)
              __Pyx_XGOTREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_t_4);
              __Pyx_XGOTREF(__pyx_t_11);
              __Pyx_INCREF(__pyx_t_4);
              __pyx_v_ex = __pyx_t_4;
              /*try:*/ {
/* … */
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                  goto __pyx_L66;
                }
                __pyx_L65_error:;
                /*exception exit:*/{
                  __Pyx_PyThreadState_declare
                  __Pyx_PyThreadState_assign
                  __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0;
                  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                  __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                   __Pyx_ExceptionSwap(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30);
                  if ( unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
                  __Pyx_XGOTREF(__pyx_t_20);
                  __Pyx_XGOTREF(__pyx_t_19);
                  __Pyx_XGOTREF(__pyx_t_18);
                  __Pyx_XGOTREF(__pyx_t_28);
                  __Pyx_XGOTREF(__pyx_t_29);
                  __Pyx_XGOTREF(__pyx_t_30);
                  __pyx_t_16 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                  {
                    __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                  }
                  __Pyx_XGIVEREF(__pyx_t_28);
                  __Pyx_XGIVEREF(__pyx_t_29);
                  __Pyx_XGIVEREF(__pyx_t_30);
                  __Pyx_ExceptionReset(__pyx_t_28, __pyx_t_29, __pyx_t_30);
                  __Pyx_XGIVEREF(__pyx_t_20);
                  __Pyx_XGIVEREF(__pyx_t_19);
                  __Pyx_XGIVEREF(__pyx_t_18);
                  __Pyx_ErrRestore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
                  __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0;
                  __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_17;
                  goto __pyx_L53_except_error;
                }
                __pyx_L66:;
              }
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              goto __pyx_L52_exception_handled;
            }
            goto __pyx_L53_except_error;
+2006:                     errors.update(
                __pyx_t_27 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_12); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2006, __pyx_L65_error)
                __Pyx_GOTREF(__pyx_t_27);
                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
              }
+2007:                         _build_error(name, f"Error parsing *{name}* = *{value}*", ex)
                __pyx_t_15 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2007, __pyx_L65_error)
                __Pyx_GOTREF(__pyx_t_15);
                __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v_value, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2007, __pyx_L65_error)
                __Pyx_GOTREF(__pyx_t_12);
                __pyx_t_26[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing;
                __pyx_t_26[1] = __pyx_t_15;
                __pyx_t_26[2] = __pyx_mstate_global->__pyx_kp_u__10;
                __pyx_t_26[3] = __pyx_t_12;
                __pyx_t_26[4] = __pyx_mstate_global->__pyx_kp_u__11;
                __pyx_t_14 = 21;
                #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_26[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_26[3]);
                #endif
                __pyx_t_16 = 0;
                #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                __pyx_t_16 |= __Pyx_PyUnicode_KIND_04(__pyx_t_26[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_26[3]);
                #endif
                __pyx_t_27 = __Pyx_PyUnicode_Join(__pyx_t_26, 5, __pyx_t_14, __pyx_t_16);
                if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2007, __pyx_L65_error)
                __Pyx_GOTREF(__pyx_t_27);
                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                __pyx_t_12 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, ((PyObject*)__pyx_t_27), __pyx_v_ex); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2007, __pyx_L65_error)
                __Pyx_GOTREF(__pyx_t_12);
                __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
 2008:                     )
+2009:             elif field_category == 'primitive':
        __pyx_t_2 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_v_field_category, __pyx_mstate_global->__pyx_n_u_primitive, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2009, __pyx_L42_error)
        if (__pyx_t_2) {
/* … */
          goto __pyx_L50;
        }
+2010:                 try:
          {
            /*try:*/ {
/* … */
            }
            __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
            __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
            goto __pyx_L78_try_end;
            __pyx_L71_error:;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
            __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
            __pyx_L73_except_error:;
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
            goto __pyx_L42_error;
            __pyx_L72_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
            __pyx_L78_try_end:;
          }
+2011:                     newval = parse_basic(_type, value, _encoder)
              __pyx_t_31.__pyx_n = 1;
              __pyx_t_31.encoder = __pyx_v__encoder;
              __pyx_t_11 = __pyx_f_9datamodel_10converters_parse_basic(__pyx_v__type, __pyx_v_value, 0, &__pyx_t_31); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2011, __pyx_L71_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_11);
              __pyx_t_11 = 0;
+2012:                     if newval != value:
              __pyx_t_2 = __Pyx_PyObject_CompareBoolNe_object_object(__pyx_v_newval, __pyx_v_value, Py_NE); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2012, __pyx_L71_error)
              if (__pyx_t_2) {
/* … */
              }
+2013:                         obj.__dict__[name] = newval
                __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2013, __pyx_L71_error)
                __Pyx_GOTREF(__pyx_t_11);
                if (unlikely((PyObject_SetItem(__pyx_t_11, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2013, __pyx_L71_error)
                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+2014:                 except ValueError as ex:
            __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
            if (__pyx_t_10) {
              __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_4, &__pyx_t_8) < 0) __PYX_ERR(0, 2014, __pyx_L73_except_error)
              __Pyx_XGOTREF(__pyx_t_11);
              __Pyx_XGOTREF(__pyx_t_4);
              __Pyx_XGOTREF(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_4);
              __pyx_v_ex = ((PyObject*)__pyx_t_4);
              /*try:*/ {
/* … */
              /*finally:*/ {
                /*normal exit:*/{
                  __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                  goto __pyx_L86;
                }
                __pyx_L85_error:;
                /*exception exit:*/{
                  __Pyx_PyThreadState_declare
                  __Pyx_PyThreadState_assign
                  __pyx_t_30 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
                  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                  __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                   __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
                  if ( unlikely(__Pyx_GetException(&__pyx_t_30, &__pyx_t_29, &__pyx_t_28) < 0)) __Pyx_ErrFetch(&__pyx_t_30, &__pyx_t_29, &__pyx_t_28);
                  __Pyx_XGOTREF(__pyx_t_30);
                  __Pyx_XGOTREF(__pyx_t_29);
                  __Pyx_XGOTREF(__pyx_t_28);
                  __Pyx_XGOTREF(__pyx_t_18);
                  __Pyx_XGOTREF(__pyx_t_19);
                  __Pyx_XGOTREF(__pyx_t_20);
                  __pyx_t_10 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                  {
                    __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                  }
                  __Pyx_XGIVEREF(__pyx_t_18);
                  __Pyx_XGIVEREF(__pyx_t_19);
                  __Pyx_XGIVEREF(__pyx_t_20);
                  __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                  __Pyx_XGIVEREF(__pyx_t_30);
                  __Pyx_XGIVEREF(__pyx_t_29);
                  __Pyx_XGIVEREF(__pyx_t_28);
                  __Pyx_ErrRestore(__pyx_t_30, __pyx_t_29, __pyx_t_28);
                  __pyx_t_30 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
                  __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17;
                  goto __pyx_L73_except_error;
                }
                __pyx_L86:;
              }
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
              goto __pyx_L72_exception_handled;
            }
            goto __pyx_L73_except_error;
+2015:                     errors.update(
                __pyx_t_12 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_27); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2015, __pyx_L85_error)
                __Pyx_GOTREF(__pyx_t_12);
                __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
              }
+2016:                         _build_error(name, f"Error parsing {name}: ", ex)
                __pyx_t_27 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2016, __pyx_L85_error)
                __Pyx_GOTREF(__pyx_t_27);
                __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_2;
                __pyx_t_13[1] = __pyx_t_27;
                __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u__5;
                __pyx_t_14 = 16;
                #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13[1]);
                #endif
                __pyx_t_10 = 0;
                #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_13[1]);
                #endif
                __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, __pyx_t_14, __pyx_t_10);
                if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2016, __pyx_L85_error)
                __Pyx_GOTREF(__pyx_t_12);
                __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
                __pyx_t_27 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, ((PyObject*)__pyx_t_12), __pyx_v_ex); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2016, __pyx_L85_error)
                __Pyx_GOTREF(__pyx_t_27);
                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 2017:                     )
+2018:             elif field_category == 'type':
        __pyx_t_2 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_v_field_category, __pyx_mstate_global->__pyx_n_u_type_2, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2018, __pyx_L42_error)
        if (__pyx_t_2) {

          goto __pyx_L50;
        }
 2019:                 # TODO: support multiple types
 2020:                 pass
+2021:             elif field_category == 'dataclass':
        __pyx_t_2 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_v_field_category, __pyx_mstate_global->__pyx_n_u_dataclass, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2021, __pyx_L42_error)
        if (__pyx_t_2) {
/* … */
          goto __pyx_L50;
        }
+2022:                 try:
          {
            /*try:*/ {
/* … */
            }
            __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
            __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
            goto __pyx_L98_try_end;
            __pyx_L91_error:;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
            __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
            __pyx_L93_except_error:;
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
            goto __pyx_L42_error;
            __pyx_L97_try_continue:;
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
            goto __pyx_L48_try_continue;
            __pyx_L98_try_end:;
          }
+2023:                     if no_nesting is False:
              __pyx_t_2 = (__pyx_v_no_nesting == 0);

              if (__pyx_t_2) {
/* … */
              }
+2024:                         if as_objects is True:
                __pyx_t_2 = (__pyx_v_as_objects == 1);

                if (__pyx_t_2) {
/* … */
                  goto __pyx_L100;
                }
+2025:                             newval = _handle_dataclass_type(
                  __pyx_t_32.__pyx_n = 2;
                  __pyx_t_32.as_objects = __pyx_t_8;
                  __pyx_t_32.parent = __pyx_v_obj;
                  __pyx_t_4 = __pyx_f_9datamodel_10converters__handle_dataclass_type(__pyx_v_f, __pyx_v_name, __pyx_v_value, __pyx_v__type, &__pyx_t_32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2025, __pyx_L91_error)
                  __Pyx_GOTREF(__pyx_t_4);
                  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                  __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_4);
                  __pyx_t_4 = 0;
+2026:                                 f, name, value, _type, as_objects, obj
                  __pyx_t_8 = __Pyx_PyBool_FromLong(__pyx_v_as_objects); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2026, __pyx_L91_error)
                  __Pyx_GOTREF(__pyx_t_8);
 2027:                             )
 2028:                         else:
+2029:                             newval = _handle_dataclass_type(
                /*else*/ {
/* … */
                  __pyx_t_32.__pyx_n = 2;
                  __pyx_t_32.as_objects = __pyx_t_4;
                  __pyx_t_32.parent = Py_None;
                  __pyx_t_8 = __pyx_f_9datamodel_10converters__handle_dataclass_type(__pyx_v_f, __pyx_v_name, __pyx_v_value, __pyx_v__type, &__pyx_t_32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2029, __pyx_L91_error)
                  __Pyx_GOTREF(__pyx_t_8);
                  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                  __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_8);
                  __pyx_t_8 = 0;
                }
                __pyx_L100:;
+2030:                                 f, name, value, _type, as_objects, None
                  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_as_objects); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2030, __pyx_L91_error)
                  __Pyx_GOTREF(__pyx_t_4);
 2031:                             )
+2032:                         if newval!= value:
                __pyx_t_2 = __Pyx_PyObject_CompareBoolNe_object_object(__pyx_v_newval, __pyx_v_value, Py_NE); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2032, __pyx_L91_error)
                if (__pyx_t_2) {
/* … */
                }
 2033:                             # PyObject_SetAttr(obj, name, newval)
+2034:                             obj.__dict__[name] = newval
                  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2034, __pyx_L91_error)
                  __Pyx_GOTREF(__pyx_t_8);
                  if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2034, __pyx_L91_error)
                  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2035:                 except ValueError:
            __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
            if (__pyx_t_16) {
              __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_4, &__pyx_t_11) < 0) __PYX_ERR(0, 2035, __pyx_L93_except_error)
              __Pyx_XGOTREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_t_4);
              __Pyx_XGOTREF(__pyx_t_11);
+2036:                     raise
              __Pyx_GIVEREF(__pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_4);
              __Pyx_XGIVEREF(__pyx_t_11);
              __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_4, __pyx_t_11);
              __pyx_t_8 = 0;  __pyx_t_4 = 0;  __pyx_t_11 = 0; 
              __PYX_ERR(0, 2036, __pyx_L93_except_error)
            }
+2037:                 except Exception as ex:
            __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
            if (__pyx_t_16) {
              __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_4, &__pyx_t_8) < 0) __PYX_ERR(0, 2037, __pyx_L93_except_error)
              __Pyx_XGOTREF(__pyx_t_11);
              __Pyx_XGOTREF(__pyx_t_4);
              __Pyx_XGOTREF(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_4);
              __pyx_v_ex = __pyx_t_4;
              /*try:*/ {
/* … */
              /*finally:*/ {
                __pyx_L109_error:;
                /*exception exit:*/{
                  __Pyx_PyThreadState_declare
                  __Pyx_PyThreadState_assign
                  __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0;
                  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                  __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                   __Pyx_ExceptionSwap(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30);
                  if ( unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
                  __Pyx_XGOTREF(__pyx_t_20);
                  __Pyx_XGOTREF(__pyx_t_19);
                  __Pyx_XGOTREF(__pyx_t_18);
                  __Pyx_XGOTREF(__pyx_t_28);
                  __Pyx_XGOTREF(__pyx_t_29);
                  __Pyx_XGOTREF(__pyx_t_30);
                  __pyx_t_16 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                  {
                    __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                  }
                  __Pyx_XGIVEREF(__pyx_t_28);
                  __Pyx_XGIVEREF(__pyx_t_29);
                  __Pyx_XGIVEREF(__pyx_t_30);
                  __Pyx_ExceptionReset(__pyx_t_28, __pyx_t_29, __pyx_t_30);
                  __Pyx_XGIVEREF(__pyx_t_20);
                  __Pyx_XGIVEREF(__pyx_t_19);
                  __Pyx_XGIVEREF(__pyx_t_18);
                  __Pyx_ErrRestore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
                  __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0;
                  __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_17;
                  goto __pyx_L93_except_error;
                }
                __pyx_L106_continue: {
                  __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                  goto __pyx_L104_except_continue;
                }
              }
              __pyx_L104_except_continue:;
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
              goto __pyx_L97_try_continue;
            }
            goto __pyx_L93_except_error;
+2038:                     errors.update(
                __pyx_t_27 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_12); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2038, __pyx_L109_error)
                __Pyx_GOTREF(__pyx_t_27);
                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+2039:                         _build_error(name, f"Error parsing Dataclass: {name}: ", ex)
                __pyx_t_12 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2039, __pyx_L109_error)
                __Pyx_GOTREF(__pyx_t_12);
                __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_Dataclass;
                __pyx_t_13[1] = __pyx_t_12;
                __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u__5;
                __pyx_t_14 = 27;
                #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13[1]);
                #endif
                __pyx_t_16 = 0;
                #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                __pyx_t_16 |= __Pyx_PyUnicode_KIND_04(__pyx_t_13[1]);
                #endif
                __pyx_t_27 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, __pyx_t_14, __pyx_t_16);
                if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2039, __pyx_L109_error)
                __Pyx_GOTREF(__pyx_t_27);
                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                __pyx_t_12 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, ((PyObject*)__pyx_t_27), __pyx_v_ex); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2039, __pyx_L109_error)
                __Pyx_GOTREF(__pyx_t_12);
                __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
 2040:                     )
+2041:                     continue
                goto __pyx_L106_continue;
              }
+2042:             elif f.origin in (list, 'list') and f._inner_is_dc:
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_origin_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2042, __pyx_L42_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_24 = __Pyx_PyObject_RichCompareBool(__pyx_t_8, ((PyObject *)(&PyList_Type)), Py_EQ); if (unlikely((__pyx_t_24 < 0))) __PYX_ERR(0, 2042, __pyx_L42_error)
        if (!__pyx_t_24) {

        } else {

          __pyx_t_25 = __pyx_t_24;

          goto __pyx_L117_bool_binop_done;
        }
        __pyx_t_24 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_list, Py_EQ); if (unlikely((__pyx_t_24 < 0))) __PYX_ERR(0, 2042, __pyx_L42_error)

        __pyx_t_25 = __pyx_t_24;

        __pyx_L117_bool_binop_done:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_24 = __pyx_t_25;


        if (__pyx_t_24) {

        } else {

          __pyx_t_2 = __pyx_t_24;

          goto __pyx_L115_bool_binop_done;
        }
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_is_dc); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2042, __pyx_L42_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_24 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_24 < 0))) __PYX_ERR(0, 2042, __pyx_L42_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

        __pyx_t_2 = __pyx_t_24;

        __pyx_L115_bool_binop_done:;
        if (__pyx_t_2) {
/* … */
          goto __pyx_L50;
        }
+2043:                 try:
          {
            /*try:*/ {
/* … */
            }
            __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
            __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
            goto __pyx_L126_try_end;
            __pyx_L119_error:;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
            __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
            __pyx_L121_except_error:;
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
            goto __pyx_L42_error;
            __pyx_L125_try_continue:;
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
            goto __pyx_L48_try_continue;
            __pyx_L126_try_end:;
          }
+2044:                     if as_objects is True:
              __pyx_t_2 = (__pyx_v_as_objects == 1);

              if (__pyx_t_2) {
/* … */
                goto __pyx_L127;
              }
+2045:                         newval = _handle_list_of_dataclasses(f, name, value, _type, obj)
                __pyx_t_33.__pyx_n = 1;
                __pyx_t_33.parent = __pyx_v_obj;
                __pyx_t_8 = __pyx_f_9datamodel_10converters__handle_list_of_dataclasses(__pyx_v_f, __pyx_v_name, __pyx_v_value, __pyx_v__type, &__pyx_t_33); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2045, __pyx_L119_error)
                __Pyx_GOTREF(__pyx_t_8);
                __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_8);
                __pyx_t_8 = 0;
 2046:                     else:
+2047:                         newval = _handle_list_of_dataclasses(f, name, value, _type, None)
              /*else*/ {
                __pyx_t_33.__pyx_n = 1;
                __pyx_t_33.parent = Py_None;
                __pyx_t_8 = __pyx_f_9datamodel_10converters__handle_list_of_dataclasses(__pyx_v_f, __pyx_v_name, __pyx_v_value, __pyx_v__type, &__pyx_t_33); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2047, __pyx_L119_error)
                __Pyx_GOTREF(__pyx_t_8);
                __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_8);
                __pyx_t_8 = 0;
              }
              __pyx_L127:;
+2048:                     obj.__dict__[name] = newval
              __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2048, __pyx_L119_error)
              __Pyx_GOTREF(__pyx_t_8);
              if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2048, __pyx_L119_error)
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2049:                 except ValueError:
            __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
            if (__pyx_t_10) {
              __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_4, &__pyx_t_11) < 0) __PYX_ERR(0, 2049, __pyx_L121_except_error)
              __Pyx_XGOTREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_t_4);
              __Pyx_XGOTREF(__pyx_t_11);
+2050:                     raise
              __Pyx_GIVEREF(__pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_4);
              __Pyx_XGIVEREF(__pyx_t_11);
              __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_4, __pyx_t_11);
              __pyx_t_8 = 0;  __pyx_t_4 = 0;  __pyx_t_11 = 0; 
              __PYX_ERR(0, 2050, __pyx_L121_except_error)
            }
+2051:                 except Exception as ex:
            __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
            if (__pyx_t_10) {
              __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_4, &__pyx_t_8) < 0) __PYX_ERR(0, 2051, __pyx_L121_except_error)
              __Pyx_XGOTREF(__pyx_t_11);
              __Pyx_XGOTREF(__pyx_t_4);
              __Pyx_XGOTREF(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_4);
              __pyx_v_ex = __pyx_t_4;
              /*try:*/ {
/* … */
              /*finally:*/ {
                __pyx_L135_error:;
                /*exception exit:*/{
                  __Pyx_PyThreadState_declare
                  __Pyx_PyThreadState_assign
                  __pyx_t_30 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
                  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                  __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                   __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
                  if ( unlikely(__Pyx_GetException(&__pyx_t_30, &__pyx_t_29, &__pyx_t_28) < 0)) __Pyx_ErrFetch(&__pyx_t_30, &__pyx_t_29, &__pyx_t_28);
                  __Pyx_XGOTREF(__pyx_t_30);
                  __Pyx_XGOTREF(__pyx_t_29);
                  __Pyx_XGOTREF(__pyx_t_28);
                  __Pyx_XGOTREF(__pyx_t_18);
                  __Pyx_XGOTREF(__pyx_t_19);
                  __Pyx_XGOTREF(__pyx_t_20);
                  __pyx_t_10 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                  {
                    __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                  }
                  __Pyx_XGIVEREF(__pyx_t_18);
                  __Pyx_XGIVEREF(__pyx_t_19);
                  __Pyx_XGIVEREF(__pyx_t_20);
                  __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                  __Pyx_XGIVEREF(__pyx_t_30);
                  __Pyx_XGIVEREF(__pyx_t_29);
                  __Pyx_XGIVEREF(__pyx_t_28);
                  __Pyx_ErrRestore(__pyx_t_30, __pyx_t_29, __pyx_t_28);
                  __pyx_t_30 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
                  __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17;
                  goto __pyx_L121_except_error;
                }
                __pyx_L132_continue: {
                  __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                  goto __pyx_L130_except_continue;
                }
              }
              __pyx_L130_except_continue:;
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
              goto __pyx_L125_try_continue;
            }
            goto __pyx_L121_except_error;
+2052:                     errors.update(
                __pyx_t_12 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_27); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2052, __pyx_L135_error)
                __Pyx_GOTREF(__pyx_t_12);
                __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+2053:                         _build_error(name, f"Error handling list of dataclasses at {name}: ", ex)
                __pyx_t_27 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2053, __pyx_L135_error)
                __Pyx_GOTREF(__pyx_t_27);
                __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_Error_handling_list_of_dataclass;
                __pyx_t_13[1] = __pyx_t_27;
                __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u__5;
                __pyx_t_14 = 40;
                #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13[1]);
                #endif
                __pyx_t_10 = 0;
                #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_13[1]);
                #endif
                __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, __pyx_t_14, __pyx_t_10);
                if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2053, __pyx_L135_error)
                __Pyx_GOTREF(__pyx_t_12);
                __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
                __pyx_t_27 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, ((PyObject*)__pyx_t_12), __pyx_v_ex); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2053, __pyx_L135_error)
                __Pyx_GOTREF(__pyx_t_27);
                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 2054:                     )
+2055:                     continue
                goto __pyx_L132_continue;
              }
 2056:             # Handle set of dataclasses
+2057:             elif f.origin in (set, 'set') and getattr(f, '_inner_is_dc', False):
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_origin_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2057, __pyx_L42_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_25 = __Pyx_PyObject_RichCompareBool(__pyx_t_8, ((PyObject *)(&PySet_Type)), Py_EQ); if (unlikely((__pyx_t_25 < 0))) __PYX_ERR(0, 2057, __pyx_L42_error)
        if (!__pyx_t_25) {

        } else {

          __pyx_t_24 = __pyx_t_25;

          goto __pyx_L143_bool_binop_done;
        }
        __pyx_t_25 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_set, Py_EQ); if (unlikely((__pyx_t_25 < 0))) __PYX_ERR(0, 2057, __pyx_L42_error)

        __pyx_t_24 = __pyx_t_25;

        __pyx_L143_bool_binop_done:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_25 = __pyx_t_24;


        if (__pyx_t_25) {

        } else {

          __pyx_t_2 = __pyx_t_25;

          goto __pyx_L141_bool_binop_done;
        }
        __pyx_t_8 = __Pyx_GetAttr3(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_is_dc, Py_False); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2057, __pyx_L42_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_25 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_25 < 0))) __PYX_ERR(0, 2057, __pyx_L42_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

        __pyx_t_2 = __pyx_t_25;

        __pyx_L141_bool_binop_done:;
        if (__pyx_t_2) {
/* … */
          goto __pyx_L50;
        }
+2058:                 try:
          {
            /*try:*/ {
/* … */
            }
            __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
            __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
            goto __pyx_L152_try_end;
            __pyx_L145_error:;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
            __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
            __pyx_L147_except_error:;
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
            goto __pyx_L42_error;
            __pyx_L151_try_continue:;
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
            goto __pyx_L48_try_continue;
            __pyx_L152_try_end:;
          }
+2059:                     if as_objects is True:
              __pyx_t_2 = (__pyx_v_as_objects == 1);

              if (__pyx_t_2) {
/* … */
                goto __pyx_L153;
              }
+2060:                         newval = _handle_set_of_dataclasses(f, name, value, _type, obj)
                __pyx_t_34.__pyx_n = 1;
                __pyx_t_34.parent = __pyx_v_obj;
                __pyx_t_8 = __pyx_f_9datamodel_10converters__handle_set_of_dataclasses(__pyx_v_f, __pyx_v_name, __pyx_v_value, __pyx_v__type, &__pyx_t_34); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2060, __pyx_L145_error)
                __Pyx_GOTREF(__pyx_t_8);
                __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_8);
                __pyx_t_8 = 0;
 2061:                     else:
+2062:                         newval = _handle_set_of_dataclasses(f, name, value, _type, None)
              /*else*/ {
                __pyx_t_34.__pyx_n = 1;
                __pyx_t_34.parent = Py_None;
                __pyx_t_8 = __pyx_f_9datamodel_10converters__handle_set_of_dataclasses(__pyx_v_f, __pyx_v_name, __pyx_v_value, __pyx_v__type, &__pyx_t_34); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2062, __pyx_L145_error)
                __Pyx_GOTREF(__pyx_t_8);
                __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_8);
                __pyx_t_8 = 0;
              }
              __pyx_L153:;
+2063:                     obj.__dict__[name] = newval
              __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2063, __pyx_L145_error)
              __Pyx_GOTREF(__pyx_t_8);
              if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2063, __pyx_L145_error)
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2064:                 except ValueError:
            __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
            if (__pyx_t_16) {
              __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_4, &__pyx_t_11) < 0) __PYX_ERR(0, 2064, __pyx_L147_except_error)
              __Pyx_XGOTREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_t_4);
              __Pyx_XGOTREF(__pyx_t_11);
+2065:                     raise
              __Pyx_GIVEREF(__pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_4);
              __Pyx_XGIVEREF(__pyx_t_11);
              __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_4, __pyx_t_11);
              __pyx_t_8 = 0;  __pyx_t_4 = 0;  __pyx_t_11 = 0; 
              __PYX_ERR(0, 2065, __pyx_L147_except_error)
            }
+2066:                 except Exception as ex:
            __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
            if (__pyx_t_16) {
              __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_4, &__pyx_t_8) < 0) __PYX_ERR(0, 2066, __pyx_L147_except_error)
              __Pyx_XGOTREF(__pyx_t_11);
              __Pyx_XGOTREF(__pyx_t_4);
              __Pyx_XGOTREF(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_4);
              __pyx_v_ex = __pyx_t_4;
              /*try:*/ {
/* … */
              /*finally:*/ {
                __pyx_L161_error:;
                /*exception exit:*/{
                  __Pyx_PyThreadState_declare
                  __Pyx_PyThreadState_assign
                  __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0;
                  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                  __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                   __Pyx_ExceptionSwap(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30);
                  if ( unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
                  __Pyx_XGOTREF(__pyx_t_20);
                  __Pyx_XGOTREF(__pyx_t_19);
                  __Pyx_XGOTREF(__pyx_t_18);
                  __Pyx_XGOTREF(__pyx_t_28);
                  __Pyx_XGOTREF(__pyx_t_29);
                  __Pyx_XGOTREF(__pyx_t_30);
                  __pyx_t_16 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                  {
                    __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                  }
                  __Pyx_XGIVEREF(__pyx_t_28);
                  __Pyx_XGIVEREF(__pyx_t_29);
                  __Pyx_XGIVEREF(__pyx_t_30);
                  __Pyx_ExceptionReset(__pyx_t_28, __pyx_t_29, __pyx_t_30);
                  __Pyx_XGIVEREF(__pyx_t_20);
                  __Pyx_XGIVEREF(__pyx_t_19);
                  __Pyx_XGIVEREF(__pyx_t_18);
                  __Pyx_ErrRestore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
                  __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0;
                  __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_17;
                  goto __pyx_L147_except_error;
                }
                __pyx_L158_continue: {
                  __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                  goto __pyx_L156_except_continue;
                }
              }
              __pyx_L156_except_continue:;
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
              goto __pyx_L151_try_continue;
            }
            goto __pyx_L147_except_error;
+2067:                     errors.update(
                __pyx_t_27 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_12); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2067, __pyx_L161_error)
                __Pyx_GOTREF(__pyx_t_27);
                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+2068:                         _build_error(name, f"Error handling set of dataclasses at {name}: ", ex)
                __pyx_t_12 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2068, __pyx_L161_error)
                __Pyx_GOTREF(__pyx_t_12);
                __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_Error_handling_set_of_dataclasse;
                __pyx_t_13[1] = __pyx_t_12;
                __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u__5;
                __pyx_t_14 = 39;
                #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13[1]);
                #endif
                __pyx_t_16 = 0;
                #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                __pyx_t_16 |= __Pyx_PyUnicode_KIND_04(__pyx_t_13[1]);
                #endif
                __pyx_t_27 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, __pyx_t_14, __pyx_t_16);
                if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2068, __pyx_L161_error)
                __Pyx_GOTREF(__pyx_t_27);
                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                __pyx_t_12 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, ((PyObject*)__pyx_t_27), __pyx_v_ex); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2068, __pyx_L161_error)
                __Pyx_GOTREF(__pyx_t_12);
                __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
 2069:                     )
+2070:                     continue
                goto __pyx_L158_continue;
              }
+2071:             elif field_category == 'typing':
        __pyx_t_2 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_v_field_category, __pyx_mstate_global->__pyx_n_u_typing, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2071, __pyx_L42_error)
        if (__pyx_t_2) {
/* … */
          goto __pyx_L50;
        }
+2072:                 if f.is_dc:
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_is_dc); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2072, __pyx_L42_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2072, __pyx_L42_error)
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (__pyx_t_2) {
/* … */
            goto __pyx_L167;
          }
+2073:                     try:
            {
              /*try:*/ {
/* … */
              }
              __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
              __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
              __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
              goto __pyx_L175_try_end;
              __pyx_L168_error:;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
              __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
              __pyx_L170_except_error:;
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              goto __pyx_L42_error;
              __pyx_L174_try_continue:;
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              goto __pyx_L48_try_continue;
              __pyx_L175_try_end:;
            }
 2074:                         # means that is_dataclass(T)
+2075:                         newval = _handle_dataclass_type(None, name, value, _type, as_objects, None)
                __pyx_t_8 = __Pyx_PyBool_FromLong(__pyx_v_as_objects); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2075, __pyx_L168_error)
                __Pyx_GOTREF(__pyx_t_8);
                __pyx_t_32.__pyx_n = 2;
                __pyx_t_32.as_objects = __pyx_t_8;
                __pyx_t_32.parent = Py_None;
                __pyx_t_4 = __pyx_f_9datamodel_10converters__handle_dataclass_type(Py_None, __pyx_v_name, __pyx_v_value, __pyx_v__type, &__pyx_t_32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2075, __pyx_L168_error)
                __Pyx_GOTREF(__pyx_t_4);
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_4);
                __pyx_t_4 = 0;
+2076:                         obj.__dict__[name] = newval
                __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2076, __pyx_L168_error)
                __Pyx_GOTREF(__pyx_t_4);
                if (unlikely((PyObject_SetItem(__pyx_t_4, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2076, __pyx_L168_error)
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2077:                     except ValueError:
              __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
              if (__pyx_t_10) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_11) < 0) __PYX_ERR(0, 2077, __pyx_L170_except_error)
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_XGOTREF(__pyx_t_8);
                __Pyx_XGOTREF(__pyx_t_11);
+2078:                         raise
                __Pyx_GIVEREF(__pyx_t_4);
                __Pyx_GIVEREF(__pyx_t_8);
                __Pyx_XGIVEREF(__pyx_t_11);
                __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_8, __pyx_t_11);
                __pyx_t_4 = 0;  __pyx_t_8 = 0;  __pyx_t_11 = 0; 
                __PYX_ERR(0, 2078, __pyx_L170_except_error)
              }
+2079:                     except Exception as ex:
              __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
              if (__pyx_t_10) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_8, &__pyx_t_4) < 0) __PYX_ERR(0, 2079, __pyx_L170_except_error)
                __Pyx_XGOTREF(__pyx_t_11);
                __Pyx_XGOTREF(__pyx_t_8);
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_INCREF(__pyx_t_8);
                __pyx_v_ex = __pyx_t_8;
                /*try:*/ {
/* … */
                /*finally:*/ {
                  __pyx_L183_error:;
                  /*exception exit:*/{
                    __Pyx_PyThreadState_declare
                    __Pyx_PyThreadState_assign
                    __pyx_t_30 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
                    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                    __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                     __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
                    if ( unlikely(__Pyx_GetException(&__pyx_t_30, &__pyx_t_29, &__pyx_t_28) < 0)) __Pyx_ErrFetch(&__pyx_t_30, &__pyx_t_29, &__pyx_t_28);
                    __Pyx_XGOTREF(__pyx_t_30);
                    __Pyx_XGOTREF(__pyx_t_29);
                    __Pyx_XGOTREF(__pyx_t_28);
                    __Pyx_XGOTREF(__pyx_t_18);
                    __Pyx_XGOTREF(__pyx_t_19);
                    __Pyx_XGOTREF(__pyx_t_20);
                    __pyx_t_10 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                    {
                      __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    }
                    __Pyx_XGIVEREF(__pyx_t_18);
                    __Pyx_XGIVEREF(__pyx_t_19);
                    __Pyx_XGIVEREF(__pyx_t_20);
                    __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                    __Pyx_XGIVEREF(__pyx_t_30);
                    __Pyx_XGIVEREF(__pyx_t_29);
                    __Pyx_XGIVEREF(__pyx_t_28);
                    __Pyx_ErrRestore(__pyx_t_30, __pyx_t_29, __pyx_t_28);
                    __pyx_t_30 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
                    __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17;
                    goto __pyx_L170_except_error;
                  }
                  __pyx_L180_continue: {
                    __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    goto __pyx_L178_except_continue;
                  }
                }
                __pyx_L178_except_continue:;
                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                goto __pyx_L174_try_continue;
              }
              goto __pyx_L170_except_error;
+2080:                         errors.update(_build_error(name, f"Error handling dataclass {name}: ", ex))
                  __pyx_t_27 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2080, __pyx_L183_error)
                  __Pyx_GOTREF(__pyx_t_27);
                  __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_Error_handling_dataclass;
                  __pyx_t_13[1] = __pyx_t_27;
                  __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u__5;
                  __pyx_t_14 = 27;
                  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                  __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13[1]);
                  #endif
                  __pyx_t_10 = 0;
                  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                  __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_13[1]);
                  #endif
                  __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, __pyx_t_14, __pyx_t_10);
                  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2080, __pyx_L183_error)
                  __Pyx_GOTREF(__pyx_t_12);
                  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
                  __pyx_t_27 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, ((PyObject*)__pyx_t_12), __pyx_v_ex); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2080, __pyx_L183_error)
                  __Pyx_GOTREF(__pyx_t_27);
                  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                  __pyx_t_12 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_27); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2080, __pyx_L183_error)
                  __Pyx_GOTREF(__pyx_t_12);
                  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
                  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+2081:                         continue
                  goto __pyx_L180_continue;
                }
+2082:                 elif f.origin is Literal:
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_origin_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2082, __pyx_L42_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_Literal); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2082, __pyx_L42_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_2 = (__pyx_t_4 == __pyx_t_8);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (__pyx_t_2) {
/* … */
            goto __pyx_L167;
          }
+2083:                     try:
            {
              /*try:*/ {
/* … */
              }
              __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
              __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
              __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
              goto __pyx_L196_try_end;
              __pyx_L189_error:;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
              __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
              __pyx_L191_except_error:;
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              goto __pyx_L42_error;
              __pyx_L195_try_continue:;
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              goto __pyx_L48_try_continue;
              __pyx_L196_try_end:;
            }
 2084:                         # e.g. Literal[...]
+2085:                         newval = _parse_literal_type(f, _type, value, _encoder)
                __pyx_t_8 = __pyx_f_9datamodel_10converters__parse_literal_type(__pyx_v_f, __pyx_v__type, __pyx_v_value, __pyx_v__encoder); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2085, __pyx_L189_error)
                __Pyx_GOTREF(__pyx_t_8);
                __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_8);
                __pyx_t_8 = 0;
+2086:                         obj.__dict__[name] = newval
                __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2086, __pyx_L189_error)
                __Pyx_GOTREF(__pyx_t_8);
                if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2086, __pyx_L189_error)
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2087:                     except ValueError:
              __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
              if (__pyx_t_16) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_4, &__pyx_t_11) < 0) __PYX_ERR(0, 2087, __pyx_L191_except_error)
                __Pyx_XGOTREF(__pyx_t_8);
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_XGOTREF(__pyx_t_11);
+2088:                         raise
                __Pyx_GIVEREF(__pyx_t_8);
                __Pyx_GIVEREF(__pyx_t_4);
                __Pyx_XGIVEREF(__pyx_t_11);
                __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_4, __pyx_t_11);
                __pyx_t_8 = 0;  __pyx_t_4 = 0;  __pyx_t_11 = 0; 
                __PYX_ERR(0, 2088, __pyx_L191_except_error)
              }
+2089:                     except Exception as ex:
              __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
              if (__pyx_t_16) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_4, &__pyx_t_8) < 0) __PYX_ERR(0, 2089, __pyx_L191_except_error)
                __Pyx_XGOTREF(__pyx_t_11);
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_XGOTREF(__pyx_t_8);
                __Pyx_INCREF(__pyx_t_4);
                __pyx_v_ex = __pyx_t_4;
                /*try:*/ {
/* … */
                /*finally:*/ {
                  __pyx_L204_error:;
                  /*exception exit:*/{
                    __Pyx_PyThreadState_declare
                    __Pyx_PyThreadState_assign
                    __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0;
                    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                    __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                     __Pyx_ExceptionSwap(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30);
                    if ( unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
                    __Pyx_XGOTREF(__pyx_t_20);
                    __Pyx_XGOTREF(__pyx_t_19);
                    __Pyx_XGOTREF(__pyx_t_18);
                    __Pyx_XGOTREF(__pyx_t_28);
                    __Pyx_XGOTREF(__pyx_t_29);
                    __Pyx_XGOTREF(__pyx_t_30);
                    __pyx_t_16 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                    {
                      __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    }
                    __Pyx_XGIVEREF(__pyx_t_28);
                    __Pyx_XGIVEREF(__pyx_t_29);
                    __Pyx_XGIVEREF(__pyx_t_30);
                    __Pyx_ExceptionReset(__pyx_t_28, __pyx_t_29, __pyx_t_30);
                    __Pyx_XGIVEREF(__pyx_t_20);
                    __Pyx_XGIVEREF(__pyx_t_19);
                    __Pyx_XGIVEREF(__pyx_t_18);
                    __Pyx_ErrRestore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
                    __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0;
                    __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_17;
                    goto __pyx_L191_except_error;
                  }
                  __pyx_L201_continue: {
                    __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    goto __pyx_L199_except_continue;
                  }
                }
                __pyx_L199_except_continue:;
                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
                goto __pyx_L195_try_continue;
              }
              goto __pyx_L191_except_error;
+2090:                         errors.update(_build_error(name, f"Error parsing Literal {name}: ", ex))
                  __pyx_t_12 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2090, __pyx_L204_error)
                  __Pyx_GOTREF(__pyx_t_12);
                  __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_Literal;
                  __pyx_t_13[1] = __pyx_t_12;
                  __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u__5;
                  __pyx_t_14 = 24;
                  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                  __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13[1]);
                  #endif
                  __pyx_t_16 = 0;
                  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                  __pyx_t_16 |= __Pyx_PyUnicode_KIND_04(__pyx_t_13[1]);
                  #endif
                  __pyx_t_27 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, __pyx_t_14, __pyx_t_16);
                  if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2090, __pyx_L204_error)
                  __Pyx_GOTREF(__pyx_t_27);
                  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                  __pyx_t_12 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, ((PyObject*)__pyx_t_27), __pyx_v_ex); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2090, __pyx_L204_error)
                  __Pyx_GOTREF(__pyx_t_12);
                  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
                  __pyx_t_27 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_12); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2090, __pyx_L204_error)
                  __Pyx_GOTREF(__pyx_t_27);
                  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
+2091:                         continue
                  goto __pyx_L201_continue;
                }
+2092:                 elif f.origin is list:
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_origin_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2092, __pyx_L42_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_2 = (__pyx_t_8 == ((PyObject *)(&PyList_Type)));
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (__pyx_t_2) {
/* … */
            goto __pyx_L167;
          }
+2093:                     try:
            {
              /*try:*/ {
/* … */
              }
              __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
              __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
              __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
              goto __pyx_L217_try_end;
              __pyx_L210_error:;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
              __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
              __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
              __pyx_L212_except_error:;
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              goto __pyx_L42_error;
              __pyx_L216_try_continue:;
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              goto __pyx_L48_try_continue;
              __pyx_L217_try_end:;
            }
 2094:                         # Other typical case is when is a List of primitives.
+2095:                         if f._inner_priv:
                __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_priv); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2095, __pyx_L210_error)
                __Pyx_GOTREF(__pyx_t_8);
                __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2095, __pyx_L210_error)
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                if (__pyx_t_2) {
/* … */
                  goto __pyx_L218;
                }
+2096:                             newval = _parse_list_type(
                  __pyx_t_35.__pyx_n = 1;
                  __pyx_t_35._parent = __pyx_v_obj;
                  __pyx_t_4 = __pyx_f_9datamodel_10converters__parse_list_type(__pyx_v_f, __pyx_v__type, __pyx_v_value, __pyx_v__encoder, __pyx_t_8, &__pyx_t_35); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2096, __pyx_L210_error)
                  __Pyx_GOTREF(__pyx_t_4);
                  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                  __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_4);
                  __pyx_t_4 = 0;
 2097:                                 f,
 2098:                                 _type,
 2099:                                 value,
 2100:                                 _encoder,
+2101:                                 f.args,
                  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_args_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2101, __pyx_L210_error)
                  __Pyx_GOTREF(__pyx_t_8);
 2102:                                 obj
 2103:                             )
 2104:                         else:
+2105:                             try:
                /*else*/ {
                  {
                    /*try:*/ {
/* … */
                    }
                    __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
                    __Pyx_XDECREF(__pyx_t_29); __pyx_t_29 = 0;
                    __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
                    goto __pyx_L226_try_end;
                    __pyx_L219_error:;
                    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
                    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                    __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
                    __pyx_L221_except_error:;
                    __Pyx_XGIVEREF(__pyx_t_30);
                    __Pyx_XGIVEREF(__pyx_t_29);
                    __Pyx_XGIVEREF(__pyx_t_28);
                    __Pyx_ExceptionReset(__pyx_t_30, __pyx_t_29, __pyx_t_28);
                    goto __pyx_L210_error;
                    __pyx_L226_try_end:;
                  }
                }
                __pyx_L218:;
+2106:                                 newval = _parse_typing(
                      __pyx_t_36.__pyx_n = 3;
                      __pyx_t_36.encoder = __pyx_v__encoder;
                      __pyx_t_36.as_objects = __pyx_t_4;
                      __pyx_t_36.parent = __pyx_v_obj;
                      __pyx_t_8 = __pyx_f_9datamodel_10converters__parse_typing(__pyx_v_f, __pyx_v__type, __pyx_v_value, &__pyx_t_36); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2106, __pyx_L219_error)
                      __Pyx_GOTREF(__pyx_t_8);
                      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                      __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_8);
                      __pyx_t_8 = 0;
 2107:                                     f,
 2108:                                     _type,
 2109:                                     value,
 2110:                                     _encoder,
+2111:                                     as_objects,
                      __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_as_objects); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2111, __pyx_L219_error)
                      __Pyx_GOTREF(__pyx_t_4);
 2112:                                     obj
 2113:                                 )
+2114:                             except Exception as e:
                    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
                    if (__pyx_t_10) {
                      __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_4, &__pyx_t_11) < 0) __PYX_ERR(0, 2114, __pyx_L221_except_error)
                      __Pyx_XGOTREF(__pyx_t_8);
                      __Pyx_XGOTREF(__pyx_t_4);
                      __Pyx_XGOTREF(__pyx_t_11);
                      __Pyx_INCREF(__pyx_t_4);
                      __Pyx_XDECREF_SET(__pyx_v_e, __pyx_t_4);
                      /*try:*/ {
/* … */
                      /*finally:*/ {
                        __pyx_L232_error:;
                        /*exception exit:*/{
                          __Pyx_PyThreadState_declare
                          __Pyx_PyThreadState_assign
                          __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_40 = 0; __pyx_t_41 = 0; __pyx_t_42 = 0;
                          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                          __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                          __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
                          __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
                           __Pyx_ExceptionSwap(&__pyx_t_40, &__pyx_t_41, &__pyx_t_42);
                          if ( unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
                          __Pyx_XGOTREF(__pyx_t_18);
                          __Pyx_XGOTREF(__pyx_t_19);
                          __Pyx_XGOTREF(__pyx_t_20);
                          __Pyx_XGOTREF(__pyx_t_40);
                          __Pyx_XGOTREF(__pyx_t_41);
                          __Pyx_XGOTREF(__pyx_t_42);
                          __pyx_t_10 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                          {
                            __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
                          }
                          __Pyx_XGIVEREF(__pyx_t_40);
                          __Pyx_XGIVEREF(__pyx_t_41);
                          __Pyx_XGIVEREF(__pyx_t_42);
                          __Pyx_ExceptionReset(__pyx_t_40, __pyx_t_41, __pyx_t_42);
                          __Pyx_XGIVEREF(__pyx_t_18);
                          __Pyx_XGIVEREF(__pyx_t_19);
                          __Pyx_XGIVEREF(__pyx_t_20);
                          __Pyx_ErrRestore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                          __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_40 = 0; __pyx_t_41 = 0; __pyx_t_42 = 0;
                          __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17;
                          goto __pyx_L221_except_error;
                        }
                      }
                    }
                    goto __pyx_L221_except_error;
+2115:                                 raise ValueError(
                        __pyx_t_12 = NULL;
+2116:                                     f"Error parsing List: {name}: {e}"
                        __pyx_t_15 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2116, __pyx_L232_error)
                        __Pyx_GOTREF(__pyx_t_15);
                        __pyx_t_37 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2116, __pyx_L232_error)
                        __Pyx_GOTREF(__pyx_t_37);
                        __pyx_t_38[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_List;
                        __pyx_t_38[1] = __pyx_t_15;
                        __pyx_t_38[2] = __pyx_mstate_global->__pyx_kp_u__5;
                        __pyx_t_38[3] = __pyx_t_37;
                        __pyx_t_14 = 22;
                        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                        __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_38[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_38[3]);
                        #endif
                        __pyx_t_10 = 0;
                        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                        __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_38[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_38[3]);
                        #endif
                        __pyx_t_39 = __Pyx_PyUnicode_Join(__pyx_t_38, 4, __pyx_t_14, __pyx_t_10);
                        if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2116, __pyx_L232_error)
                        __Pyx_GOTREF(__pyx_t_39);
                        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                        __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
                        __pyx_t_9 = 1;
                        {
                          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_39};
                          __pyx_t_27 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                          __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
                          if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2115, __pyx_L232_error)
                          __Pyx_GOTREF(__pyx_t_27);
                        }
                        __Pyx_Raise(__pyx_t_27, 0, 0, 0);
                        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
                        __PYX_ERR(0, 2115, __pyx_L232_error)
                      }
 2117:                                 )
+2118:                         obj.__dict__[name] = newval
                __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2118, __pyx_L210_error)
                __Pyx_GOTREF(__pyx_t_11);
                if (unlikely((PyObject_SetItem(__pyx_t_11, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2118, __pyx_L210_error)
                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+2119:                     except ValueError:
              __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
              if (__pyx_t_16) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_4, &__pyx_t_8) < 0) __PYX_ERR(0, 2119, __pyx_L212_except_error)
                __Pyx_XGOTREF(__pyx_t_11);
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_XGOTREF(__pyx_t_8);
+2120:                         raise
                __Pyx_GIVEREF(__pyx_t_11);
                __Pyx_GIVEREF(__pyx_t_4);
                __Pyx_XGIVEREF(__pyx_t_8);
                __Pyx_ErrRestoreWithState(__pyx_t_11, __pyx_t_4, __pyx_t_8);
                __pyx_t_11 = 0;  __pyx_t_4 = 0;  __pyx_t_8 = 0; 
                __PYX_ERR(0, 2120, __pyx_L212_except_error)
              }
+2121:                     except Exception as ex:
              __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
              if (__pyx_t_16) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_4, &__pyx_t_11) < 0) __PYX_ERR(0, 2121, __pyx_L212_except_error)
                __Pyx_XGOTREF(__pyx_t_8);
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_XGOTREF(__pyx_t_11);
                __Pyx_INCREF(__pyx_t_4);
                __pyx_v_ex = __pyx_t_4;
                /*try:*/ {
/* … */
                /*finally:*/ {
                  __pyx_L245_error:;
                  /*exception exit:*/{
                    __Pyx_PyThreadState_declare
                    __Pyx_PyThreadState_assign
                    __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0; __pyx_t_42 = 0; __pyx_t_41 = 0; __pyx_t_40 = 0;
                    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                    __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                    __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
                    __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
                     __Pyx_ExceptionSwap(&__pyx_t_42, &__pyx_t_41, &__pyx_t_40);
                    if ( unlikely(__Pyx_GetException(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30) < 0)) __Pyx_ErrFetch(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30);
                    __Pyx_XGOTREF(__pyx_t_28);
                    __Pyx_XGOTREF(__pyx_t_29);
                    __Pyx_XGOTREF(__pyx_t_30);
                    __Pyx_XGOTREF(__pyx_t_42);
                    __Pyx_XGOTREF(__pyx_t_41);
                    __Pyx_XGOTREF(__pyx_t_40);
                    __pyx_t_16 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                    {
                      __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    }
                    __Pyx_XGIVEREF(__pyx_t_42);
                    __Pyx_XGIVEREF(__pyx_t_41);
                    __Pyx_XGIVEREF(__pyx_t_40);
                    __Pyx_ExceptionReset(__pyx_t_42, __pyx_t_41, __pyx_t_40);
                    __Pyx_XGIVEREF(__pyx_t_28);
                    __Pyx_XGIVEREF(__pyx_t_29);
                    __Pyx_XGIVEREF(__pyx_t_30);
                    __Pyx_ErrRestore(__pyx_t_28, __pyx_t_29, __pyx_t_30);
                    __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0; __pyx_t_42 = 0; __pyx_t_41 = 0; __pyx_t_40 = 0;
                    __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_17;
                    goto __pyx_L212_except_error;
                  }
                  __pyx_L242_continue: {
                    __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    goto __pyx_L240_except_continue;
                  }
                }
                __pyx_L240_except_continue:;
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
                goto __pyx_L216_try_continue;
              }
              goto __pyx_L212_except_error;
+2122:                         errors.update(
                  __pyx_t_39 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_27); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2122, __pyx_L245_error)
                  __Pyx_GOTREF(__pyx_t_39);
                  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
                  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
+2123:                             _build_error(name, f"Error parsing List {name}: ", ex)
                  __pyx_t_27 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2123, __pyx_L245_error)
                  __Pyx_GOTREF(__pyx_t_27);
                  __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_List_2;
                  __pyx_t_13[1] = __pyx_t_27;
                  __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u__5;
                  __pyx_t_14 = 21;
                  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                  __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13[1]);
                  #endif
                  __pyx_t_16 = 0;
                  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                  __pyx_t_16 |= __Pyx_PyUnicode_KIND_04(__pyx_t_13[1]);
                  #endif
                  __pyx_t_39 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, __pyx_t_14, __pyx_t_16);
                  if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2123, __pyx_L245_error)
                  __Pyx_GOTREF(__pyx_t_39);
                  __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
                  __pyx_t_27 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, ((PyObject*)__pyx_t_39), __pyx_v_ex); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2123, __pyx_L245_error)
                  __Pyx_GOTREF(__pyx_t_27);
                  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
 2124:                         )
+2125:                         continue
                  goto __pyx_L242_continue;
                }
+2126:                 elif f.origin is set:
          __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_origin_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2126, __pyx_L42_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_2 = (__pyx_t_11 == ((PyObject *)(&PySet_Type)));
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (__pyx_t_2) {
/* … */
            goto __pyx_L167;
          }
+2127:                     try:
            {
              /*try:*/ {
/* … */
              }
              __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
              __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
              __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
              goto __pyx_L258_try_end;
              __pyx_L251_error:;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
              __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
              __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
              __pyx_L253_except_error:;
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              goto __pyx_L42_error;
              __pyx_L257_try_continue:;
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              goto __pyx_L48_try_continue;
              __pyx_L258_try_end:;
            }
+2128:                         if isinstance(value, list):
                __pyx_t_2 = PyList_Check(__pyx_v_value); 
                if (__pyx_t_2) {
/* … */
                  goto __pyx_L259;
                }
+2129:                             newval = set(value)  # Simple conversion for bare set
                  __pyx_t_11 = PySet_New(__pyx_v_value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2129, __pyx_L251_error)
                  __Pyx_GOTREF(__pyx_t_11);
                  __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_11);
                  __pyx_t_11 = 0;
+2130:                         elif f._inner_priv is True:
                __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_priv); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2130, __pyx_L251_error)
                __Pyx_GOTREF(__pyx_t_11);
                __pyx_t_2 = (__pyx_t_11 == Py_True);
                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                if (__pyx_t_2) {
/* … */
                  goto __pyx_L259;
                }
 2131:                             # is a primitive typing Set.
+2132:                             newval = _parse_set_type(
                  __pyx_t_43.__pyx_n = 1;
                  __pyx_t_43._parent = __pyx_v_obj;
                  __pyx_t_4 = __pyx_f_9datamodel_10converters__parse_set_type(__pyx_v_f, __pyx_v__type, __pyx_v_value, __pyx_v__encoder, __pyx_t_11, &__pyx_t_43); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2132, __pyx_L251_error)
                  __Pyx_GOTREF(__pyx_t_4);
                  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                  __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_4);
                  __pyx_t_4 = 0;
 2133:                                 f,
 2134:                                 _type,
 2135:                                 value,
 2136:                                 _encoder,
+2137:                                 f.args,
                  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_args_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2137, __pyx_L251_error)
                  __Pyx_GOTREF(__pyx_t_11);
 2138:                                 obj
 2139:                             )
 2140:                         else:
+2141:                             try:
                /*else*/ {
                  {
                    /*try:*/ {
/* … */
                    }
                    __Pyx_XDECREF(__pyx_t_40); __pyx_t_40 = 0;
                    __Pyx_XDECREF(__pyx_t_41); __pyx_t_41 = 0;
                    __Pyx_XDECREF(__pyx_t_42); __pyx_t_42 = 0;
                    goto __pyx_L267_try_end;
                    __pyx_L260_error:;
                    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
                    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                    __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                    __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
                    __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
                    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
                    __pyx_L262_except_error:;
                    __Pyx_XGIVEREF(__pyx_t_40);
                    __Pyx_XGIVEREF(__pyx_t_41);
                    __Pyx_XGIVEREF(__pyx_t_42);
                    __Pyx_ExceptionReset(__pyx_t_40, __pyx_t_41, __pyx_t_42);
                    goto __pyx_L251_error;
                    __pyx_L267_try_end:;
                  }
                }
                __pyx_L259:;
+2142:                                 newval = _parse_typing(
                      __pyx_t_36.__pyx_n = 3;
                      __pyx_t_36.encoder = __pyx_v__encoder;
                      __pyx_t_36.as_objects = __pyx_t_4;
                      __pyx_t_36.parent = __pyx_v_obj;
                      __pyx_t_11 = __pyx_f_9datamodel_10converters__parse_typing(__pyx_v_f, __pyx_v__type, __pyx_v_value, &__pyx_t_36); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2142, __pyx_L260_error)
                      __Pyx_GOTREF(__pyx_t_11);
                      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                      __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_11);
                      __pyx_t_11 = 0;
 2143:                                     f,
 2144:                                     _type,
 2145:                                     value,
 2146:                                     _encoder,
+2147:                                     as_objects,
                      __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_as_objects); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2147, __pyx_L260_error)
                      __Pyx_GOTREF(__pyx_t_4);
 2148:                                     obj
 2149:                                 )
+2150:                             except Exception as e:
                    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
                    if (__pyx_t_10) {
                      __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                      if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_4, &__pyx_t_8) < 0) __PYX_ERR(0, 2150, __pyx_L262_except_error)
                      __Pyx_XGOTREF(__pyx_t_11);
                      __Pyx_XGOTREF(__pyx_t_4);
                      __Pyx_XGOTREF(__pyx_t_8);
                      __Pyx_INCREF(__pyx_t_4);
                      __Pyx_XDECREF_SET(__pyx_v_e, __pyx_t_4);
                      /*try:*/ {
/* … */
                      /*finally:*/ {
                        __pyx_L273_error:;
                        /*exception exit:*/{
                          __Pyx_PyThreadState_declare
                          __Pyx_PyThreadState_assign
                          __pyx_t_30 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0;
                          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                          __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                          __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
                          __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
                           __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
                          if ( unlikely(__Pyx_GetException(&__pyx_t_30, &__pyx_t_29, &__pyx_t_28) < 0)) __Pyx_ErrFetch(&__pyx_t_30, &__pyx_t_29, &__pyx_t_28);
                          __Pyx_XGOTREF(__pyx_t_30);
                          __Pyx_XGOTREF(__pyx_t_29);
                          __Pyx_XGOTREF(__pyx_t_28);
                          __Pyx_XGOTREF(__pyx_t_20);
                          __Pyx_XGOTREF(__pyx_t_19);
                          __Pyx_XGOTREF(__pyx_t_18);
                          __pyx_t_10 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                          {
                            __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
                          }
                          __Pyx_XGIVEREF(__pyx_t_20);
                          __Pyx_XGIVEREF(__pyx_t_19);
                          __Pyx_XGIVEREF(__pyx_t_18);
                          __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_19, __pyx_t_18);
                          __Pyx_XGIVEREF(__pyx_t_30);
                          __Pyx_XGIVEREF(__pyx_t_29);
                          __Pyx_XGIVEREF(__pyx_t_28);
                          __Pyx_ErrRestore(__pyx_t_30, __pyx_t_29, __pyx_t_28);
                          __pyx_t_30 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0;
                          __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17;
                          goto __pyx_L262_except_error;
                        }
                      }
                    }
                    goto __pyx_L262_except_error;
+2151:                                 raise ValueError(
                        __pyx_t_27 = NULL;
+2152:                                     f"Error parsing Set: {name}: {e}"
                        __pyx_t_12 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2152, __pyx_L273_error)
                        __Pyx_GOTREF(__pyx_t_12);
                        __pyx_t_37 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2152, __pyx_L273_error)
                        __Pyx_GOTREF(__pyx_t_37);
                        __pyx_t_38[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_Set;
                        __pyx_t_38[1] = __pyx_t_12;
                        __pyx_t_38[2] = __pyx_mstate_global->__pyx_kp_u__5;
                        __pyx_t_38[3] = __pyx_t_37;
                        __pyx_t_14 = 21;
                        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                        __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_38[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_38[3]);
                        #endif
                        __pyx_t_10 = 0;
                        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                        __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_38[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_38[3]);
                        #endif
                        __pyx_t_15 = __Pyx_PyUnicode_Join(__pyx_t_38, 4, __pyx_t_14, __pyx_t_10);
                        if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2152, __pyx_L273_error)
                        __Pyx_GOTREF(__pyx_t_15);
                        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                        __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
                        __pyx_t_9 = 1;
                        {
                          PyObject *__pyx_callargs[2] = {__pyx_t_27, __pyx_t_15};
                          __pyx_t_39 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                          __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                          if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2151, __pyx_L273_error)
                          __Pyx_GOTREF(__pyx_t_39);
                        }
                        __Pyx_Raise(__pyx_t_39, 0, 0, 0);
                        __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
                        __PYX_ERR(0, 2151, __pyx_L273_error)
                      }
 2153:                                 )
+2154:                         obj.__dict__[name] = newval
                __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2154, __pyx_L251_error)
                __Pyx_GOTREF(__pyx_t_8);
                if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2154, __pyx_L251_error)
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2155:                     except ValueError:
              __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
              if (__pyx_t_16) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_4, &__pyx_t_11) < 0) __PYX_ERR(0, 2155, __pyx_L253_except_error)
                __Pyx_XGOTREF(__pyx_t_8);
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_XGOTREF(__pyx_t_11);
+2156:                         raise
                __Pyx_GIVEREF(__pyx_t_8);
                __Pyx_GIVEREF(__pyx_t_4);
                __Pyx_XGIVEREF(__pyx_t_11);
                __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_4, __pyx_t_11);
                __pyx_t_8 = 0;  __pyx_t_4 = 0;  __pyx_t_11 = 0; 
                __PYX_ERR(0, 2156, __pyx_L253_except_error)
              }
+2157:                     except Exception as ex:
              __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
              if (__pyx_t_16) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_4, &__pyx_t_8) < 0) __PYX_ERR(0, 2157, __pyx_L253_except_error)
                __Pyx_XGOTREF(__pyx_t_11);
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_XGOTREF(__pyx_t_8);
                __Pyx_INCREF(__pyx_t_4);
                __pyx_v_ex = __pyx_t_4;
                /*try:*/ {
/* … */
                /*finally:*/ {
                  __pyx_L286_error:;
                  /*exception exit:*/{
                    __Pyx_PyThreadState_declare
                    __Pyx_PyThreadState_assign
                    __pyx_t_42 = 0; __pyx_t_41 = 0; __pyx_t_40 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
                    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                    __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                    __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
                    __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
                     __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
                    if ( unlikely(__Pyx_GetException(&__pyx_t_42, &__pyx_t_41, &__pyx_t_40) < 0)) __Pyx_ErrFetch(&__pyx_t_42, &__pyx_t_41, &__pyx_t_40);
                    __Pyx_XGOTREF(__pyx_t_42);
                    __Pyx_XGOTREF(__pyx_t_41);
                    __Pyx_XGOTREF(__pyx_t_40);
                    __Pyx_XGOTREF(__pyx_t_18);
                    __Pyx_XGOTREF(__pyx_t_19);
                    __Pyx_XGOTREF(__pyx_t_20);
                    __pyx_t_16 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                    {
                      __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    }
                    __Pyx_XGIVEREF(__pyx_t_18);
                    __Pyx_XGIVEREF(__pyx_t_19);
                    __Pyx_XGIVEREF(__pyx_t_20);
                    __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                    __Pyx_XGIVEREF(__pyx_t_42);
                    __Pyx_XGIVEREF(__pyx_t_41);
                    __Pyx_XGIVEREF(__pyx_t_40);
                    __Pyx_ErrRestore(__pyx_t_42, __pyx_t_41, __pyx_t_40);
                    __pyx_t_42 = 0; __pyx_t_41 = 0; __pyx_t_40 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
                    __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_17;
                    goto __pyx_L253_except_error;
                  }
                  __pyx_L283_continue: {
                    __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    goto __pyx_L281_except_continue;
                  }
                }
                __pyx_L281_except_continue:;
                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
                goto __pyx_L257_try_continue;
              }
              goto __pyx_L253_except_error;
+2158:                         errors.update(_build_error(name, f"Error parsing Set: ", ex))
                  __pyx_t_39 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, __pyx_mstate_global->__pyx_kp_u_Error_parsing_Set, __pyx_v_ex); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2158, __pyx_L286_error)
                  __Pyx_GOTREF(__pyx_t_39);
                  __pyx_t_15 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_39); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2158, __pyx_L286_error)
                  __Pyx_GOTREF(__pyx_t_15);
                  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
                  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+2159:                         continue
                  goto __pyx_L283_continue;
                }
 2160:                 # FrozenSet type
+2161:                 elif f.origin is frozenset:
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_origin_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2161, __pyx_L42_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_2 = (__pyx_t_8 == ((PyObject *)(&PyFrozenSet_Type)));
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (__pyx_t_2) {
/* … */
            goto __pyx_L167;
          }
+2162:                     try:
            {
              /*try:*/ {
/* … */
              }
              __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
              __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
              __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
              goto __pyx_L299_try_end;
              __pyx_L292_error:;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
              __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
              __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
              __pyx_L294_except_error:;
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              goto __pyx_L42_error;
              __pyx_L298_try_continue:;
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              goto __pyx_L48_try_continue;
              __pyx_L299_try_end:;
            }
+2163:                         if value is not None:
                __pyx_t_2 = (__pyx_v_value != Py_None);
                if (__pyx_t_2) {
/* … */
                  goto __pyx_L300;
                }
 2164:                             # Convert to set first if needed
+2165:                             set_value = value if isinstance(value, (set, frozenset)) else set(value) if isinstance(value, (list, tuple)) else {value}
                  __pyx_t_25 = PySet_Check(__pyx_v_value); 
                  if (!__pyx_t_25) {

                  } else {

                    __pyx_t_2 = __pyx_t_25;

                    goto __pyx_L301_bool_binop_done;
                  }
                  __pyx_t_25 = PyFrozenSet_Check(__pyx_v_value); 

                  __pyx_t_2 = __pyx_t_25;

                  __pyx_L301_bool_binop_done:;
                  if (__pyx_t_2) {
                    __Pyx_INCREF(__pyx_v_value);
                    __pyx_t_8 = __pyx_v_value;
                  } else {
                    __pyx_t_24 = PyList_Check(__pyx_v_value); 
                    if (!__pyx_t_24) {

                    } else {

                      __pyx_t_25 = __pyx_t_24;

                      goto __pyx_L303_bool_binop_done;
                    }
                    __pyx_t_24 = PyTuple_Check(__pyx_v_value); 

                    __pyx_t_25 = __pyx_t_24;

                    __pyx_L303_bool_binop_done:;
                    if (__pyx_t_25) {
                      __pyx_t_11 = PySet_New(__pyx_v_value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2165, __pyx_L292_error)
                      __Pyx_GOTREF(__pyx_t_11);
                      __pyx_t_4 = __pyx_t_11;
                      __pyx_t_11 = 0;
                    } else {
                      __pyx_t_11 = PySet_New(0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2165, __pyx_L292_error)
                      __Pyx_GOTREF(__pyx_t_11);
                      if (PySet_Add(__pyx_t_11, __pyx_v_value) < (0)) __PYX_ERR(0, 2165, __pyx_L292_error)
                      __pyx_t_4 = __pyx_t_11;
                      __pyx_t_11 = 0;
                    }

                    __pyx_t_8 = __pyx_t_4;
                    __pyx_t_4 = 0;
                  }

                  __Pyx_XDECREF_SET(__pyx_v_set_value, __pyx_t_8);
                  __pyx_t_8 = 0;
+2166:                             newval = frozenset(_parse_set_type(
                  __pyx_t_43.__pyx_n = 1;
                  __pyx_t_43._parent = __pyx_v_obj;
                  __pyx_t_4 = __pyx_f_9datamodel_10converters__parse_set_type(__pyx_v_f, __pyx_v__type, __pyx_v_set_value, __pyx_v__encoder, __pyx_t_8, &__pyx_t_43); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2166, __pyx_L292_error)
                  __Pyx_GOTREF(__pyx_t_4);
                  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                  __pyx_t_8 = __Pyx_PyFrozenSet_New(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2166, __pyx_L292_error)
                  __Pyx_GOTREF(__pyx_t_8);
                  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                  __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_8);
                  __pyx_t_8 = 0;
 2167:                                 f,
 2168:                                 _type,
 2169:                                 set_value,
 2170:                                 _encoder,
+2171:                                 f.args,
                  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_args_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2171, __pyx_L292_error)
                  __Pyx_GOTREF(__pyx_t_8);
 2172:                                 obj
 2173:                             ))
 2174:                         else:
+2175:                             newval = frozenset()
                /*else*/ {
                  __Pyx_INCREF(__pyx_mstate_global->__pyx_frozenset[0]);
                  __Pyx_DECREF_SET(__pyx_v_newval, __pyx_mstate_global->__pyx_frozenset[0]);
                }
                __pyx_L300:;
+2176:                         obj.__dict__[name] = newval
                __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2176, __pyx_L292_error)
                __Pyx_GOTREF(__pyx_t_8);
                if (unlikely((PyObject_SetItem(__pyx_t_8, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2176, __pyx_L292_error)
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2177:                     except ValueError:
              __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
              if (__pyx_t_10) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_4, &__pyx_t_11) < 0) __PYX_ERR(0, 2177, __pyx_L294_except_error)
                __Pyx_XGOTREF(__pyx_t_8);
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_XGOTREF(__pyx_t_11);
+2178:                         raise
                __Pyx_GIVEREF(__pyx_t_8);
                __Pyx_GIVEREF(__pyx_t_4);
                __Pyx_XGIVEREF(__pyx_t_11);
                __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_4, __pyx_t_11);
                __pyx_t_8 = 0;  __pyx_t_4 = 0;  __pyx_t_11 = 0; 
                __PYX_ERR(0, 2178, __pyx_L294_except_error)
              }
+2179:                     except Exception as ex:
              __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
              if (__pyx_t_10) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_4, &__pyx_t_8) < 0) __PYX_ERR(0, 2179, __pyx_L294_except_error)
                __Pyx_XGOTREF(__pyx_t_11);
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_XGOTREF(__pyx_t_8);
                __Pyx_INCREF(__pyx_t_4);
                __pyx_v_ex = __pyx_t_4;
                /*try:*/ {
/* … */
                /*finally:*/ {
                  __pyx_L312_error:;
                  /*exception exit:*/{
                    __Pyx_PyThreadState_declare
                    __Pyx_PyThreadState_assign
                    __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_40 = 0; __pyx_t_41 = 0; __pyx_t_42 = 0;
                    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                    __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                    __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
                    __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
                     __Pyx_ExceptionSwap(&__pyx_t_40, &__pyx_t_41, &__pyx_t_42);
                    if ( unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
                    __Pyx_XGOTREF(__pyx_t_20);
                    __Pyx_XGOTREF(__pyx_t_19);
                    __Pyx_XGOTREF(__pyx_t_18);
                    __Pyx_XGOTREF(__pyx_t_40);
                    __Pyx_XGOTREF(__pyx_t_41);
                    __Pyx_XGOTREF(__pyx_t_42);
                    __pyx_t_10 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                    {
                      __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    }
                    __Pyx_XGIVEREF(__pyx_t_40);
                    __Pyx_XGIVEREF(__pyx_t_41);
                    __Pyx_XGIVEREF(__pyx_t_42);
                    __Pyx_ExceptionReset(__pyx_t_40, __pyx_t_41, __pyx_t_42);
                    __Pyx_XGIVEREF(__pyx_t_20);
                    __Pyx_XGIVEREF(__pyx_t_19);
                    __Pyx_XGIVEREF(__pyx_t_18);
                    __Pyx_ErrRestore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
                    __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_40 = 0; __pyx_t_41 = 0; __pyx_t_42 = 0;
                    __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17;
                    goto __pyx_L294_except_error;
                  }
                  __pyx_L309_continue: {
                    __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    goto __pyx_L307_except_continue;
                  }
                }
                __pyx_L307_except_continue:;
                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
                goto __pyx_L298_try_continue;
              }
              goto __pyx_L294_except_error;
+2180:                         errors.update(_build_error(name, f"Error parsing FrozenSet {name}: ", ex))
                  __pyx_t_15 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2180, __pyx_L312_error)
                  __Pyx_GOTREF(__pyx_t_15);
                  __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_FrozenSet;
                  __pyx_t_13[1] = __pyx_t_15;
                  __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u__5;
                  __pyx_t_14 = 26;
                  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                  __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13[1]);
                  #endif
                  __pyx_t_10 = 0;
                  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                  __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_13[1]);
                  #endif
                  __pyx_t_39 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, __pyx_t_14, __pyx_t_10);
                  if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2180, __pyx_L312_error)
                  __Pyx_GOTREF(__pyx_t_39);
                  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                  __pyx_t_15 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, ((PyObject*)__pyx_t_39), __pyx_v_ex); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2180, __pyx_L312_error)
                  __Pyx_GOTREF(__pyx_t_15);
                  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
                  __pyx_t_39 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_15); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2180, __pyx_L312_error)
                  __Pyx_GOTREF(__pyx_t_39);
                  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
+2181:                         continue
                  goto __pyx_L309_continue;
                }
+2182:                 elif f.origin is tuple:
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_origin_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2182, __pyx_L42_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_2 = (__pyx_t_8 == ((PyObject *)(&PyTuple_Type)));
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (__pyx_t_2) {
/* … */
            goto __pyx_L167;
          }
+2183:                     try:
            {
              /*try:*/ {
/* … */
              }
              __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
              __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
              __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
              goto __pyx_L325_try_end;
              __pyx_L318_error:;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
              __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
              __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
              __pyx_L320_except_error:;
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              goto __pyx_L42_error;
              __pyx_L324_try_continue:;
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              goto __pyx_L48_try_continue;
              __pyx_L325_try_end:;
            }
+2184:                         newval = _parse_tuple_type(f, _type, value, _encoder, f.args)
                __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_args_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2184, __pyx_L318_error)
                __Pyx_GOTREF(__pyx_t_8);
                __pyx_t_4 = __pyx_f_9datamodel_10converters__parse_tuple_type(__pyx_v_f, __pyx_v__type, __pyx_v_value, __pyx_v__encoder, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2184, __pyx_L318_error)
                __Pyx_GOTREF(__pyx_t_4);
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_4);
                __pyx_t_4 = 0;
+2185:                         obj.__dict__[name] = newval
                __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2185, __pyx_L318_error)
                __Pyx_GOTREF(__pyx_t_4);
                if (unlikely((PyObject_SetItem(__pyx_t_4, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2185, __pyx_L318_error)
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2186:                     except ValueError:
              __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
              if (__pyx_t_16) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_11) < 0) __PYX_ERR(0, 2186, __pyx_L320_except_error)
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_XGOTREF(__pyx_t_8);
                __Pyx_XGOTREF(__pyx_t_11);
+2187:                         raise
                __Pyx_GIVEREF(__pyx_t_4);
                __Pyx_GIVEREF(__pyx_t_8);
                __Pyx_XGIVEREF(__pyx_t_11);
                __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_8, __pyx_t_11);
                __pyx_t_4 = 0;  __pyx_t_8 = 0;  __pyx_t_11 = 0; 
                __PYX_ERR(0, 2187, __pyx_L320_except_error)
              }
+2188:                     except Exception as ex:
              __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
              if (__pyx_t_16) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_8, &__pyx_t_4) < 0) __PYX_ERR(0, 2188, __pyx_L320_except_error)
                __Pyx_XGOTREF(__pyx_t_11);
                __Pyx_XGOTREF(__pyx_t_8);
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_INCREF(__pyx_t_8);
                __pyx_v_ex = __pyx_t_8;
                /*try:*/ {
/* … */
                /*finally:*/ {
                  __pyx_L333_error:;
                  /*exception exit:*/{
                    __Pyx_PyThreadState_declare
                    __Pyx_PyThreadState_assign
                    __pyx_t_42 = 0; __pyx_t_41 = 0; __pyx_t_40 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
                    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                    __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                    __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                    __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
                    __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
                     __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
                    if ( unlikely(__Pyx_GetException(&__pyx_t_42, &__pyx_t_41, &__pyx_t_40) < 0)) __Pyx_ErrFetch(&__pyx_t_42, &__pyx_t_41, &__pyx_t_40);
                    __Pyx_XGOTREF(__pyx_t_42);
                    __Pyx_XGOTREF(__pyx_t_41);
                    __Pyx_XGOTREF(__pyx_t_40);
                    __Pyx_XGOTREF(__pyx_t_18);
                    __Pyx_XGOTREF(__pyx_t_19);
                    __Pyx_XGOTREF(__pyx_t_20);
                    __pyx_t_16 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                    {
                      __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    }
                    __Pyx_XGIVEREF(__pyx_t_18);
                    __Pyx_XGIVEREF(__pyx_t_19);
                    __Pyx_XGIVEREF(__pyx_t_20);
                    __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                    __Pyx_XGIVEREF(__pyx_t_42);
                    __Pyx_XGIVEREF(__pyx_t_41);
                    __Pyx_XGIVEREF(__pyx_t_40);
                    __Pyx_ErrRestore(__pyx_t_42, __pyx_t_41, __pyx_t_40);
                    __pyx_t_42 = 0; __pyx_t_41 = 0; __pyx_t_40 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
                    __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_17;
                    goto __pyx_L320_except_error;
                  }
                  __pyx_L330_continue: {
                    __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    goto __pyx_L328_except_continue;
                  }
                }
                __pyx_L328_except_continue:;
                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                goto __pyx_L324_try_continue;
              }
              goto __pyx_L320_except_error;
+2189:                         errors.update(_build_error(name, f"Error parsing Tuple {name}: ", ex))
                  __pyx_t_39 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2189, __pyx_L333_error)
                  __Pyx_GOTREF(__pyx_t_39);
                  __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_Tuple;
                  __pyx_t_13[1] = __pyx_t_39;
                  __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u__5;
                  __pyx_t_14 = 22;
                  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                  __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13[1]);
                  #endif
                  __pyx_t_16 = 0;
                  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                  __pyx_t_16 |= __Pyx_PyUnicode_KIND_04(__pyx_t_13[1]);
                  #endif
                  __pyx_t_15 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, __pyx_t_14, __pyx_t_16);
                  if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2189, __pyx_L333_error)
                  __Pyx_GOTREF(__pyx_t_15);
                  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
                  __pyx_t_39 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, ((PyObject*)__pyx_t_15), __pyx_v_ex); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2189, __pyx_L333_error)
                  __Pyx_GOTREF(__pyx_t_39);
                  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                  __pyx_t_15 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_39); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2189, __pyx_L333_error)
                  __Pyx_GOTREF(__pyx_t_15);
                  __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
                  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+2190:                         continue
                  goto __pyx_L330_continue;
                }
 2191:                 # If the field is a Union and data is a list, use _parse_union_type.
+2192:                 elif is_union(f.origin):
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_origin_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2192, __pyx_L42_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_2 = __pyx_f_9datamodel_10converters_is_union(__pyx_t_4); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2192, __pyx_L42_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (__pyx_t_2) {
/* … */
            goto __pyx_L167;
          }
+2193:                     try:
            {
              /*try:*/ {
/* … */
              }
              __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
              __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
              __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
              goto __pyx_L346_try_end;
              __pyx_L339_error:;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
              __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
              __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
              __pyx_L341_except_error:;
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              goto __pyx_L42_error;
              __pyx_L345_try_continue:;
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
              goto __pyx_L48_try_continue;
              __pyx_L346_try_end:;
            }
+2194:                         if len(f.args) == 2 and type(None) in f.args:
                __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_args_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2194, __pyx_L339_error)
                __Pyx_GOTREF(__pyx_t_4);
                __pyx_t_14 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_14 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2194, __pyx_L339_error)
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                __pyx_t_25 = (__pyx_t_14 == 2);


                if (__pyx_t_25) {

                } else {

                  __pyx_t_2 = __pyx_t_25;

                  goto __pyx_L348_bool_binop_done;
                }
                __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_args_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2194, __pyx_L339_error)
                __Pyx_GOTREF(__pyx_t_4);
                __pyx_t_25 = (__Pyx_PySequence_ContainsTF(((PyObject *)Py_TYPE(Py_None)), __pyx_t_4, Py_EQ)); if (unlikely((__pyx_t_25 < 0))) __PYX_ERR(0, 2194, __pyx_L339_error)
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

                __pyx_t_2 = __pyx_t_25;

                __pyx_L348_bool_binop_done:;
                if (__pyx_t_2) {
/* … */
                  goto __pyx_L347;
                }
 2195:                             # e.g. Optional[...] or Union[A, B]
+2196:                             if value is None:
                  __pyx_t_2 = (__pyx_v_value == Py_None);
                  if (__pyx_t_2) {
/* … */
                    goto __pyx_L350;
                  }
+2197:                                 newval = None
                    __Pyx_INCREF(Py_None);
                    __Pyx_DECREF_SET(__pyx_v_newval, Py_None);
+2198:                             elif f._inner_priv:
                  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_priv); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2198, __pyx_L339_error)
                  __Pyx_GOTREF(__pyx_t_4);
                  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2198, __pyx_L339_error)
                  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                  if (__pyx_t_2) {
/* … */
                    goto __pyx_L350;
                  }
 2199:                                 # If Optional but non-None is a primitive
+2200:                                 newval = _parse_builtin_type(f, f._inner_type, value, _encoder)
                    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2200, __pyx_L339_error)
                    __Pyx_GOTREF(__pyx_t_4);
                    __pyx_t_8 = __pyx_f_9datamodel_10converters__parse_builtin_type(__pyx_v_f, __pyx_t_4, __pyx_v_value, __pyx_v__encoder); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2200, __pyx_L339_error)
                    __Pyx_GOTREF(__pyx_t_8);
                    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                    __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_8);
                    __pyx_t_8 = 0;
+2201:                             elif f._inner_is_dc:
                  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_is_dc); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2201, __pyx_L339_error)
                  __Pyx_GOTREF(__pyx_t_8);
                  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2201, __pyx_L339_error)
                  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                  if (__pyx_t_2) {
/* … */
                    goto __pyx_L350;
                  }
 2202:                                 # non-None is a Optional Dataclass Optional[dataclass]
+2203:                                 newval = _handle_dataclass_type(
                    __pyx_t_32.__pyx_n = 2;
                    __pyx_t_32.as_objects = __pyx_t_4;
                    __pyx_t_32.parent = Py_None;
                    __pyx_t_11 = __pyx_f_9datamodel_10converters__handle_dataclass_type(Py_None, __pyx_v_name, __pyx_v_value, __pyx_t_8, &__pyx_t_32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2203, __pyx_L339_error)
                    __Pyx_GOTREF(__pyx_t_11);
                    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                    __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_11);
                    __pyx_t_11 = 0;
+2204:                                     None, name, value, f._inner_type, as_objects, None
                    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2204, __pyx_L339_error)
                    __Pyx_GOTREF(__pyx_t_8);
                    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_as_objects); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2204, __pyx_L339_error)
                    __Pyx_GOTREF(__pyx_t_4);
 2205:                                 )
+2206:                             elif f._inner_origin is list:
                  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_origin); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2206, __pyx_L339_error)
                  __Pyx_GOTREF(__pyx_t_11);
                  __pyx_t_2 = (__pyx_t_11 == ((PyObject *)(&PyList_Type)));
                  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                  if (__pyx_t_2) {
/* … */
                    goto __pyx_L350;
                  }
+2207:                                 if f._inner_type.__module__ == 'typing' or isinstance(f._inner_type, types.GenericAlias):
                    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2207, __pyx_L339_error)
                    __Pyx_GOTREF(__pyx_t_11);
                    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2207, __pyx_L339_error)
                    __Pyx_GOTREF(__pyx_t_4);
                    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                    __pyx_t_25 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_typing, Py_EQ); if (unlikely((__pyx_t_25 < 0))) __PYX_ERR(0, 2207, __pyx_L339_error)
                    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                    if (!__pyx_t_25) {

                    } else {

                      __pyx_t_2 = __pyx_t_25;

                      goto __pyx_L352_bool_binop_done;
                    }
                    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2207, __pyx_L339_error)
                    __Pyx_GOTREF(__pyx_t_4);
                    __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2207, __pyx_L339_error)
                    __Pyx_GOTREF(__pyx_t_11);
                    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_GenericAlias); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2207, __pyx_L339_error)
                    __Pyx_GOTREF(__pyx_t_8);
                    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                    __pyx_t_25 = PyObject_IsInstance(__pyx_t_4, __pyx_t_8); if (unlikely(__pyx_t_25 == ((int)-1))) __PYX_ERR(0, 2207, __pyx_L339_error)
                    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

                    __pyx_t_2 = __pyx_t_25;

                    __pyx_L352_bool_binop_done:;
                    if (__pyx_t_2) {
/* … */
                      goto __pyx_L351;
                    }
+2208:                                     newval = _parse_list_typing(
                      __pyx_t_44.__pyx_n = 1;
                      __pyx_t_44.as_objects = __pyx_v_obj;
                      __pyx_t_15 = __pyx_f_9datamodel_10converters__parse_list_typing(__pyx_v_f, ((PyObject*)__pyx_t_8), __pyx_v_value, __pyx_v__encoder, __pyx_t_4, __pyx_t_11, &__pyx_t_44); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2208, __pyx_L339_error)
                      __Pyx_GOTREF(__pyx_t_15);
                      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                      __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_15);
                      __pyx_t_15 = 0;
 2209:                                         f,
+2210:                                         f._typing_args,
                      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_typing_args); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2210, __pyx_L339_error)
                      __Pyx_GOTREF(__pyx_t_8);
                      if (!(likely(PyTuple_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_8))) __PYX_ERR(0, 2210, __pyx_L339_error)
 2211:                                         value,
 2212:                                         _encoder,
+2213:                                         f._inner_origin,
                      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_origin); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2213, __pyx_L339_error)
                      __Pyx_GOTREF(__pyx_t_4);
+2214:                                         f._typing_args,
                      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_typing_args); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2214, __pyx_L339_error)
                      __Pyx_GOTREF(__pyx_t_11);
 2215:                                         obj
 2216:                                     )
 2217:                                 else:
+2218:                                     newval = _parse_list_type(
                    /*else*/ {
/* … */
                      __pyx_t_35.__pyx_n = 1;
                      __pyx_t_35._parent = __pyx_v_obj;
                      __pyx_t_4 = __pyx_f_9datamodel_10converters__parse_list_type(__pyx_v_f, __pyx_t_15, __pyx_v_value, __pyx_v__encoder, __pyx_t_11, &__pyx_t_35); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2218, __pyx_L339_error)
                      __Pyx_GOTREF(__pyx_t_4);
                      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                      __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_4);
                      __pyx_t_4 = 0;
                    }
                    __pyx_L351:;
 2219:                                         f,
+2220:                                         f._inner_type,
                      __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2220, __pyx_L339_error)
                      __Pyx_GOTREF(__pyx_t_15);
 2221:                                         value,
 2222:                                         _encoder,
+2223:                                         f._inner_targs,
                      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_targs); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2223, __pyx_L339_error)
                      __Pyx_GOTREF(__pyx_t_11);
 2224:                                         obj
 2225:                                     )
+2226:                             elif f._inner_origin is dict and not isinstance(value, dict) and value is not None:
                  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_origin); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2226, __pyx_L339_error)
                  __Pyx_GOTREF(__pyx_t_4);
                  __pyx_t_25 = (__pyx_t_4 == ((PyObject *)(&PyDict_Type)));
                  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                  if (__pyx_t_25) {

                  } else {

                    __pyx_t_2 = __pyx_t_25;

                    goto __pyx_L354_bool_binop_done;
                  }
                  __pyx_t_25 = PyDict_Check(__pyx_v_value); 
                  __pyx_t_24 = (!__pyx_t_25);


                  if (__pyx_t_24) {

                  } else {

                    __pyx_t_2 = __pyx_t_24;

                    goto __pyx_L354_bool_binop_done;
                  }
                  __pyx_t_24 = (__pyx_v_value != Py_None);

                  __pyx_t_2 = __pyx_t_24;

                  __pyx_L354_bool_binop_done:;
                  if (__pyx_t_2) {
/* … */
                    goto __pyx_L350;
                  }
+2227:                                 newval = _parse_dict_type(f, f._inner_type, value, _encoder, f.args)
                    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2227, __pyx_L339_error)
                    __Pyx_GOTREF(__pyx_t_4);
                    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_args_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2227, __pyx_L339_error)
                    __Pyx_GOTREF(__pyx_t_11);
                    __pyx_t_15 = __pyx_f_9datamodel_10converters__parse_dict_type(__pyx_v_f, __pyx_t_4, __pyx_v_value, __pyx_v__encoder, __pyx_t_11); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2227, __pyx_L339_error)
                    __Pyx_GOTREF(__pyx_t_15);
                    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                    __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_15);
                    __pyx_t_15 = 0;
 2228:                             else:
+2229:                                 try:
                  /*else*/ {
                    {
                      /*try:*/ {
/* … */
                      }
                      __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
                      __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
                      __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
                      goto __pyx_L364_try_end;
                      __pyx_L357_error:;
                      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
                      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                      __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                      __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
                      __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
                      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
                      __pyx_L359_except_error:;
                      __Pyx_XGIVEREF(__pyx_t_20);
                      __Pyx_XGIVEREF(__pyx_t_19);
                      __Pyx_XGIVEREF(__pyx_t_18);
                      __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_19, __pyx_t_18);
                      goto __pyx_L339_error;
                      __pyx_L364_try_end:;
                    }
                  }
                  __pyx_L350:;
+2230:                                     newval = _parse_typing(f, f._inner_type, value, _encoder, as_objects, obj)
                        __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2230, __pyx_L357_error)
                        __Pyx_GOTREF(__pyx_t_15);
                        __pyx_t_11 = __Pyx_PyBool_FromLong(__pyx_v_as_objects); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2230, __pyx_L357_error)
                        __Pyx_GOTREF(__pyx_t_11);
                        __pyx_t_36.__pyx_n = 3;
                        __pyx_t_36.encoder = __pyx_v__encoder;
                        __pyx_t_36.as_objects = __pyx_t_11;
                        __pyx_t_36.parent = __pyx_v_obj;
                        __pyx_t_4 = __pyx_f_9datamodel_10converters__parse_typing(__pyx_v_f, __pyx_t_15, __pyx_v_value, &__pyx_t_36); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2230, __pyx_L357_error)
                        __Pyx_GOTREF(__pyx_t_4);
                        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                        __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_4);
                        __pyx_t_4 = 0;
+2231:                                 except ValueError:
                      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
                      if (__pyx_t_10) {
                        __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                        if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_11, &__pyx_t_15) < 0) __PYX_ERR(0, 2231, __pyx_L359_except_error)
                        __Pyx_XGOTREF(__pyx_t_4);
                        __Pyx_XGOTREF(__pyx_t_11);
                        __Pyx_XGOTREF(__pyx_t_15);
+2232:                                     raise
                        __Pyx_GIVEREF(__pyx_t_4);
                        __Pyx_GIVEREF(__pyx_t_11);
                        __Pyx_XGIVEREF(__pyx_t_15);
                        __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_11, __pyx_t_15);
                        __pyx_t_4 = 0;  __pyx_t_11 = 0;  __pyx_t_15 = 0; 
                        __PYX_ERR(0, 2232, __pyx_L359_except_error)
                      }
+2233:                                 except Exception as e:
                      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
                      if (__pyx_t_10) {
                        __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                        if (__Pyx_GetException(&__pyx_t_15, &__pyx_t_11, &__pyx_t_4) < 0) __PYX_ERR(0, 2233, __pyx_L359_except_error)
                        __Pyx_XGOTREF(__pyx_t_15);
                        __Pyx_XGOTREF(__pyx_t_11);
                        __Pyx_XGOTREF(__pyx_t_4);
                        __Pyx_INCREF(__pyx_t_11);
                        __Pyx_XDECREF_SET(__pyx_v_e, __pyx_t_11);
                        /*try:*/ {
/* … */
                        /*finally:*/ {
                          __pyx_L372_error:;
                          /*exception exit:*/{
                            __Pyx_PyThreadState_declare
                            __Pyx_PyThreadState_assign
                            __pyx_t_40 = 0; __pyx_t_41 = 0; __pyx_t_42 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0;
                            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                            __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                            __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
                            __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
                            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
                             __Pyx_ExceptionSwap(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30);
                            if ( unlikely(__Pyx_GetException(&__pyx_t_40, &__pyx_t_41, &__pyx_t_42) < 0)) __Pyx_ErrFetch(&__pyx_t_40, &__pyx_t_41, &__pyx_t_42);
                            __Pyx_XGOTREF(__pyx_t_40);
                            __Pyx_XGOTREF(__pyx_t_41);
                            __Pyx_XGOTREF(__pyx_t_42);
                            __Pyx_XGOTREF(__pyx_t_28);
                            __Pyx_XGOTREF(__pyx_t_29);
                            __Pyx_XGOTREF(__pyx_t_30);
                            __pyx_t_10 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                            {
                              __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
                            }
                            __Pyx_XGIVEREF(__pyx_t_28);
                            __Pyx_XGIVEREF(__pyx_t_29);
                            __Pyx_XGIVEREF(__pyx_t_30);
                            __Pyx_ExceptionReset(__pyx_t_28, __pyx_t_29, __pyx_t_30);
                            __Pyx_XGIVEREF(__pyx_t_40);
                            __Pyx_XGIVEREF(__pyx_t_41);
                            __Pyx_XGIVEREF(__pyx_t_42);
                            __Pyx_ErrRestore(__pyx_t_40, __pyx_t_41, __pyx_t_42);
                            __pyx_t_40 = 0; __pyx_t_41 = 0; __pyx_t_42 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0;
                            __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17;
                            goto __pyx_L359_except_error;
                          }
                        }
                      }
                      goto __pyx_L359_except_error;
+2234:                                     raise ValueError(
                          __pyx_t_39 = NULL;
+2235:                                         f"Error parsing Optional: {name}: {e}"
                          __pyx_t_27 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2235, __pyx_L372_error)
                          __Pyx_GOTREF(__pyx_t_27);
                          __pyx_t_37 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2235, __pyx_L372_error)
                          __Pyx_GOTREF(__pyx_t_37);
                          __pyx_t_38[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_Optional;
                          __pyx_t_38[1] = __pyx_t_27;
                          __pyx_t_38[2] = __pyx_mstate_global->__pyx_kp_u__5;
                          __pyx_t_38[3] = __pyx_t_37;
                          __pyx_t_14 = 26;
                          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                          __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_38[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_38[3]);
                          #endif
                          __pyx_t_10 = 0;
                          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                          __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_38[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_38[3]);
                          #endif
                          __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_38, 4, __pyx_t_14, __pyx_t_10);
                          if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2235, __pyx_L372_error)
                          __Pyx_GOTREF(__pyx_t_12);
                          __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
                          __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
                          __pyx_t_9 = 1;
                          {
                            PyObject *__pyx_callargs[2] = {__pyx_t_39, __pyx_t_12};
                            __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                            __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
                            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                            if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2234, __pyx_L372_error)
                            __Pyx_GOTREF(__pyx_t_8);
                          }
                          __Pyx_Raise(__pyx_t_8, 0, 0, 0);
                          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                          __PYX_ERR(0, 2234, __pyx_L372_error)
                        }
 2236:                                     )
 2237:                         else:
+2238:                             newval = _parse_typing(
                /*else*/ {
/* … */
                  __pyx_t_36.__pyx_n = 3;
                  __pyx_t_36.encoder = __pyx_v__encoder;
                  __pyx_t_36.as_objects = __pyx_t_4;
                  __pyx_t_36.parent = __pyx_v_obj;
                  __pyx_t_11 = __pyx_f_9datamodel_10converters__parse_typing(__pyx_v_f, __pyx_v__type, __pyx_v_value, &__pyx_t_36); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2238, __pyx_L339_error)
                  __Pyx_GOTREF(__pyx_t_11);
                  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                  __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_11);
                  __pyx_t_11 = 0;
                }
                __pyx_L347:;
 2239:                                 f,
 2240:                                 _type,
 2241:                                 value,
 2242:                                 _encoder,
+2243:                                 as_objects,
                  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_as_objects); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2243, __pyx_L339_error)
                  __Pyx_GOTREF(__pyx_t_4);
 2244:                                 obj
 2245:                             )
+2246:                         obj.__dict__[name] = newval
                __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2246, __pyx_L339_error)
                __Pyx_GOTREF(__pyx_t_11);
                if (unlikely((PyObject_SetItem(__pyx_t_11, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2246, __pyx_L339_error)
                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+2247:                     except ValueError:
              __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
              if (__pyx_t_16) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_4, &__pyx_t_15) < 0) __PYX_ERR(0, 2247, __pyx_L341_except_error)
                __Pyx_XGOTREF(__pyx_t_11);
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_XGOTREF(__pyx_t_15);
+2248:                         raise
                __Pyx_GIVEREF(__pyx_t_11);
                __Pyx_GIVEREF(__pyx_t_4);
                __Pyx_XGIVEREF(__pyx_t_15);
                __Pyx_ErrRestoreWithState(__pyx_t_11, __pyx_t_4, __pyx_t_15);
                __pyx_t_11 = 0;  __pyx_t_4 = 0;  __pyx_t_15 = 0; 
                __PYX_ERR(0, 2248, __pyx_L341_except_error)
              }
+2249:                     except Exception as ex:
              __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
              if (__pyx_t_16) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_15, &__pyx_t_4, &__pyx_t_11) < 0) __PYX_ERR(0, 2249, __pyx_L341_except_error)
                __Pyx_XGOTREF(__pyx_t_15);
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_XGOTREF(__pyx_t_11);
                __Pyx_INCREF(__pyx_t_4);
                __pyx_v_ex = __pyx_t_4;
                /*try:*/ {
/* … */
                /*finally:*/ {
                  __pyx_L385_error:;
                  /*exception exit:*/{
                    __Pyx_PyThreadState_declare
                    __Pyx_PyThreadState_assign
                    __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_30 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0;
                    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                    __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                    __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
                    __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
                    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
                     __Pyx_ExceptionSwap(&__pyx_t_30, &__pyx_t_29, &__pyx_t_28);
                    if ( unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
                    __Pyx_XGOTREF(__pyx_t_18);
                    __Pyx_XGOTREF(__pyx_t_19);
                    __Pyx_XGOTREF(__pyx_t_20);
                    __Pyx_XGOTREF(__pyx_t_30);
                    __Pyx_XGOTREF(__pyx_t_29);
                    __Pyx_XGOTREF(__pyx_t_28);
                    __pyx_t_16 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                    {
                      __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    }
                    __Pyx_XGIVEREF(__pyx_t_30);
                    __Pyx_XGIVEREF(__pyx_t_29);
                    __Pyx_XGIVEREF(__pyx_t_28);
                    __Pyx_ExceptionReset(__pyx_t_30, __pyx_t_29, __pyx_t_28);
                    __Pyx_XGIVEREF(__pyx_t_18);
                    __Pyx_XGIVEREF(__pyx_t_19);
                    __Pyx_XGIVEREF(__pyx_t_20);
                    __Pyx_ErrRestore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                    __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_30 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0;
                    __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_17;
                    goto __pyx_L341_except_error;
                  }
                  __pyx_L382_continue: {
                    __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    goto __pyx_L380_except_continue;
                  }
                }
                __pyx_L380_except_continue:;
                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
                goto __pyx_L345_try_continue;
              }
              goto __pyx_L341_except_error;
+2250:                         errors.update(_build_error(name, f"Error parsing Union {name}: ", ex))
                  __pyx_t_8 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2250, __pyx_L385_error)
                  __Pyx_GOTREF(__pyx_t_8);
                  __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_Error_parsing_Union;
                  __pyx_t_13[1] = __pyx_t_8;
                  __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u__5;
                  __pyx_t_14 = 22;
                  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                  __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13[1]);
                  #endif
                  __pyx_t_16 = 0;
                  #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                  __pyx_t_16 |= __Pyx_PyUnicode_KIND_04(__pyx_t_13[1]);
                  #endif
                  __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, __pyx_t_14, __pyx_t_16);
                  if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2250, __pyx_L385_error)
                  __Pyx_GOTREF(__pyx_t_12);
                  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                  __pyx_t_8 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, ((PyObject*)__pyx_t_12), __pyx_v_ex); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2250, __pyx_L385_error)
                  __Pyx_GOTREF(__pyx_t_8);
                  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                  __pyx_t_12 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2250, __pyx_L385_error)
                  __Pyx_GOTREF(__pyx_t_12);
                  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+2251:                         continue
                  goto __pyx_L382_continue;
                }
 2252:                 else:
+2253:                     try:
          /*else*/ {
            {
              /*try:*/ {
/* … */
              }
              __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
              __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
              __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
              goto __pyx_L398_try_end;
              __pyx_L391_error:;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
              __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
              __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
              __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
              __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
              __pyx_L393_except_error:;
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              goto __pyx_L42_error;
              __pyx_L397_try_continue:;
              __Pyx_XGIVEREF(__pyx_t_23);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
              goto __pyx_L48_try_continue;
              __pyx_L398_try_end:;
            }
          }
          __pyx_L167:;
+2254:                         newval = _parse_typing(
                __pyx_t_36.__pyx_n = 3;
                __pyx_t_36.encoder = __pyx_v__encoder;
                __pyx_t_36.as_objects = __pyx_t_11;
                __pyx_t_36.parent = __pyx_v_obj;
                __pyx_t_4 = __pyx_f_9datamodel_10converters__parse_typing(__pyx_v_f, __pyx_v__type, __pyx_v_value, &__pyx_t_36); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2254, __pyx_L391_error)
                __Pyx_GOTREF(__pyx_t_4);
                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_4);
                __pyx_t_4 = 0;
 2255:                             f,
 2256:                             _type,
 2257:                             value,
 2258:                             _encoder,
+2259:                             as_objects,
                __pyx_t_11 = __Pyx_PyBool_FromLong(__pyx_v_as_objects); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2259, __pyx_L391_error)
                __Pyx_GOTREF(__pyx_t_11);
 2260:                             obj
 2261:                         )
+2262:                         obj.__dict__[name] = newval
                __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2262, __pyx_L391_error)
                __Pyx_GOTREF(__pyx_t_4);
                if (unlikely((PyObject_SetItem(__pyx_t_4, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2262, __pyx_L391_error)
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2263:                     except ValueError:
              __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
              if (__pyx_t_10) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_11, &__pyx_t_15) < 0) __PYX_ERR(0, 2263, __pyx_L393_except_error)
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_XGOTREF(__pyx_t_11);
                __Pyx_XGOTREF(__pyx_t_15);
+2264:                         raise
                __Pyx_GIVEREF(__pyx_t_4);
                __Pyx_GIVEREF(__pyx_t_11);
                __Pyx_XGIVEREF(__pyx_t_15);
                __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_11, __pyx_t_15);
                __pyx_t_4 = 0;  __pyx_t_11 = 0;  __pyx_t_15 = 0; 
                __PYX_ERR(0, 2264, __pyx_L393_except_error)
              }
+2265:                     except Exception as ex:
              __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
              if (__pyx_t_10) {
                __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
                if (__Pyx_GetException(&__pyx_t_15, &__pyx_t_11, &__pyx_t_4) < 0) __PYX_ERR(0, 2265, __pyx_L393_except_error)
                __Pyx_XGOTREF(__pyx_t_15);
                __Pyx_XGOTREF(__pyx_t_11);
                __Pyx_XGOTREF(__pyx_t_4);
                __Pyx_INCREF(__pyx_t_11);
                __pyx_v_ex = __pyx_t_11;
                /*try:*/ {
/* … */
                /*finally:*/ {
                  __pyx_L406_error:;
                  /*exception exit:*/{
                    __Pyx_PyThreadState_declare
                    __Pyx_PyThreadState_assign
                    __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0;
                    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                    __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                    __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
                    __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
                    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
                     __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
                    if ( unlikely(__Pyx_GetException(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30) < 0)) __Pyx_ErrFetch(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30);
                    __Pyx_XGOTREF(__pyx_t_28);
                    __Pyx_XGOTREF(__pyx_t_29);
                    __Pyx_XGOTREF(__pyx_t_30);
                    __Pyx_XGOTREF(__pyx_t_20);
                    __Pyx_XGOTREF(__pyx_t_19);
                    __Pyx_XGOTREF(__pyx_t_18);
                    __pyx_t_10 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                    {
                      __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    }
                    __Pyx_XGIVEREF(__pyx_t_20);
                    __Pyx_XGIVEREF(__pyx_t_19);
                    __Pyx_XGIVEREF(__pyx_t_18);
                    __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_19, __pyx_t_18);
                    __Pyx_XGIVEREF(__pyx_t_28);
                    __Pyx_XGIVEREF(__pyx_t_29);
                    __Pyx_XGIVEREF(__pyx_t_30);
                    __Pyx_ErrRestore(__pyx_t_28, __pyx_t_29, __pyx_t_30);
                    __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0;
                    __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17;
                    goto __pyx_L393_except_error;
                  }
                  __pyx_L403_continue: {
                    __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                    goto __pyx_L401_except_continue;
                  }
                }
                __pyx_L401_except_continue:;
                __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                goto __pyx_L397_try_continue;
              }
              goto __pyx_L393_except_error;
+2266:                         errors.update(_build_error(name, f"Error parsing Typing: ", ex))
                  __pyx_t_12 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, __pyx_mstate_global->__pyx_kp_u_Error_parsing_Typing, __pyx_v_ex); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2266, __pyx_L406_error)
                  __Pyx_GOTREF(__pyx_t_12);
                  __pyx_t_8 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_12); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2266, __pyx_L406_error)
                  __Pyx_GOTREF(__pyx_t_8);
                  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2267:                         continue
                  goto __pyx_L403_continue;
                }
+2268:             elif isinstance(value, list) and type_args:
        __pyx_t_24 = PyList_Check(__pyx_v_value); 
        if (__pyx_t_24) {

        } else {

          __pyx_t_2 = __pyx_t_24;

          goto __pyx_L412_bool_binop_done;
        }
        if (__pyx_v_type_args == Py_None) __pyx_t_24 = 0;
        else
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_v_type_args);
          if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 2268, __pyx_L42_error)
          __pyx_t_24 = (__pyx_temp != 0);
        }


        __pyx_t_2 = __pyx_t_24;

        __pyx_L412_bool_binop_done:;
        if (__pyx_t_2) {
/* … */
          goto __pyx_L50;
        }
+2269:                 if as_objects is True:
          __pyx_t_2 = (__pyx_v_as_objects == 1);

          if (__pyx_t_2) {
/* … */
            goto __pyx_L414;
          }
+2270:                     newval = _handle_list_of_dataclasses(f, name, value, _type, obj)
            __pyx_t_33.__pyx_n = 1;
            __pyx_t_33.parent = __pyx_v_obj;
            __pyx_t_4 = __pyx_f_9datamodel_10converters__handle_list_of_dataclasses(__pyx_v_f, __pyx_v_name, __pyx_v_value, __pyx_v__type, &__pyx_t_33); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2270, __pyx_L42_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_4);
            __pyx_t_4 = 0;
 2271:                 else:
+2272:                     newval = _handle_list_of_dataclasses(f, name, value, _type, None)
          /*else*/ {
            __pyx_t_33.__pyx_n = 1;
            __pyx_t_33.parent = Py_None;
            __pyx_t_4 = __pyx_f_9datamodel_10converters__handle_list_of_dataclasses(__pyx_v_f, __pyx_v_name, __pyx_v_value, __pyx_v__type, &__pyx_t_33); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2272, __pyx_L42_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_4);
            __pyx_t_4 = 0;
          }
          __pyx_L414:;
+2273:                 obj.__dict__[name] = newval
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2273, __pyx_L42_error)
          __Pyx_GOTREF(__pyx_t_4);
          if (unlikely((PyObject_SetItem(__pyx_t_4, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2273, __pyx_L42_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2274:             elif field_category == 'set':
        __pyx_t_2 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_v_field_category, __pyx_mstate_global->__pyx_n_u_set, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2274, __pyx_L42_error)
        if (__pyx_t_2) {
/* … */
          goto __pyx_L50;
        }
+2275:                 try:
          {
            /*try:*/ {
/* … */
            }
            __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
            __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
            goto __pyx_L422_try_end;
            __pyx_L415_error:;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
            __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
            __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
            __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
            __pyx_L417_except_error:;
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
            goto __pyx_L42_error;
            __pyx_L421_try_continue:;
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_22, __pyx_t_23);
            goto __pyx_L48_try_continue;
            __pyx_L422_try_end:;
          }
+2276:                     newval = _parse_set_type(
              __pyx_t_43.__pyx_n = 1;
              __pyx_t_43._parent = __pyx_v_obj;
              __pyx_t_4 = __pyx_f_9datamodel_10converters__parse_set_type(__pyx_v_f, __pyx_v__type, __pyx_v_value, __pyx_v__encoder, __pyx_v_type_args, &__pyx_t_43); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2276, __pyx_L415_error)
              __Pyx_GOTREF(__pyx_t_4);
              __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_4);
              __pyx_t_4 = 0;
 2277:                         f,
 2278:                         _type,
 2279:                         value,
 2280:                         _encoder,
 2281:                         type_args,
 2282:                         obj
 2283:                     )
+2284:                     obj.__dict__[name] = newval
              __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2284, __pyx_L415_error)
              __Pyx_GOTREF(__pyx_t_4);
              if (unlikely((PyObject_SetItem(__pyx_t_4, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2284, __pyx_L415_error)
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2285:                 except ValueError:
            __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
            if (__pyx_t_16) {
              __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_11, &__pyx_t_15) < 0) __PYX_ERR(0, 2285, __pyx_L417_except_error)
              __Pyx_XGOTREF(__pyx_t_4);
              __Pyx_XGOTREF(__pyx_t_11);
              __Pyx_XGOTREF(__pyx_t_15);
+2286:                     raise
              __Pyx_GIVEREF(__pyx_t_4);
              __Pyx_GIVEREF(__pyx_t_11);
              __Pyx_XGIVEREF(__pyx_t_15);
              __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_11, __pyx_t_15);
              __pyx_t_4 = 0;  __pyx_t_11 = 0;  __pyx_t_15 = 0; 
              __PYX_ERR(0, 2286, __pyx_L417_except_error)
            }
+2287:                 except Exception as ex:
            __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
            if (__pyx_t_16) {
              __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_15, &__pyx_t_11, &__pyx_t_4) < 0) __PYX_ERR(0, 2287, __pyx_L417_except_error)
              __Pyx_XGOTREF(__pyx_t_15);
              __Pyx_XGOTREF(__pyx_t_11);
              __Pyx_XGOTREF(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_11);
              __pyx_v_ex = __pyx_t_11;
              /*try:*/ {
/* … */
              /*finally:*/ {
                __pyx_L430_error:;
                /*exception exit:*/{
                  __Pyx_PyThreadState_declare
                  __Pyx_PyThreadState_assign
                  __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_30 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0;
                  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                  __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                  __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
                  __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
                  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
                   __Pyx_ExceptionSwap(&__pyx_t_30, &__pyx_t_29, &__pyx_t_28);
                  if ( unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
                  __Pyx_XGOTREF(__pyx_t_18);
                  __Pyx_XGOTREF(__pyx_t_19);
                  __Pyx_XGOTREF(__pyx_t_20);
                  __Pyx_XGOTREF(__pyx_t_30);
                  __Pyx_XGOTREF(__pyx_t_29);
                  __Pyx_XGOTREF(__pyx_t_28);
                  __pyx_t_16 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                  {
                    __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                  }
                  __Pyx_XGIVEREF(__pyx_t_30);
                  __Pyx_XGIVEREF(__pyx_t_29);
                  __Pyx_XGIVEREF(__pyx_t_28);
                  __Pyx_ExceptionReset(__pyx_t_30, __pyx_t_29, __pyx_t_28);
                  __Pyx_XGIVEREF(__pyx_t_18);
                  __Pyx_XGIVEREF(__pyx_t_19);
                  __Pyx_XGIVEREF(__pyx_t_20);
                  __Pyx_ErrRestore(__pyx_t_18, __pyx_t_19, __pyx_t_20);
                  __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_30 = 0; __pyx_t_29 = 0; __pyx_t_28 = 0;
                  __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_17;
                  goto __pyx_L417_except_error;
                }
                __pyx_L427_continue: {
                  __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                  goto __pyx_L425_except_continue;
                }
              }
              __pyx_L425_except_continue:;
              __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              goto __pyx_L421_try_continue;
            }
            goto __pyx_L417_except_error;
+2288:                     errors.update(_build_error(name, f"Error parsing Set: ", ex))
                __pyx_t_8 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, __pyx_mstate_global->__pyx_kp_u_Error_parsing_Set, __pyx_v_ex); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2288, __pyx_L430_error)
                __Pyx_GOTREF(__pyx_t_8);
                __pyx_t_12 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2288, __pyx_L430_error)
                __Pyx_GOTREF(__pyx_t_12);
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+2289:                     continue
                goto __pyx_L427_continue;
              }
 2290:             else:
 2291:                 # fallback to builtin parse
+2292:                 try:
        /*else*/ {
          {
            /*try:*/ {
/* … */
            }
            __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
            __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
            __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
            goto __pyx_L443_try_end;
            __pyx_L436_error:;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
            __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
            __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
            __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
            __pyx_L438_except_error:;
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
            goto __pyx_L42_error;
            __pyx_L442_try_continue:;
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
            goto __pyx_L48_try_continue;
            __pyx_L443_try_end:;
          }
        }
        __pyx_L50:;
+2293:                     newval = _parse_typing(
              __pyx_t_36.__pyx_n = 3;
              __pyx_t_36.encoder = __pyx_v__encoder;
              __pyx_t_36.as_objects = __pyx_t_4;
              __pyx_t_36.parent = __pyx_v_obj;
              __pyx_t_11 = __pyx_f_9datamodel_10converters__parse_typing(__pyx_v_f, __pyx_v__type, __pyx_v_value, &__pyx_t_36); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2293, __pyx_L436_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_DECREF_SET(__pyx_v_newval, __pyx_t_11);
              __pyx_t_11 = 0;
 2294:                         f,
 2295:                         _type,
 2296:                         value,
 2297:                         _encoder,
+2298:                         as_objects,
              __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_as_objects); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2298, __pyx_L436_error)
              __Pyx_GOTREF(__pyx_t_4);
 2299:                         obj
 2300:                     )
+2301:                     obj.__dict__[name] = newval
              __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2301, __pyx_L436_error)
              __Pyx_GOTREF(__pyx_t_11);
              if (unlikely((PyObject_SetItem(__pyx_t_11, __pyx_v_name, __pyx_v_newval) < 0))) __PYX_ERR(0, 2301, __pyx_L436_error)
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+2302:                 except ValueError:
            __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
            if (__pyx_t_10) {
              __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_4, &__pyx_t_15) < 0) __PYX_ERR(0, 2302, __pyx_L438_except_error)
              __Pyx_XGOTREF(__pyx_t_11);
              __Pyx_XGOTREF(__pyx_t_4);
              __Pyx_XGOTREF(__pyx_t_15);
+2303:                     raise
              __Pyx_GIVEREF(__pyx_t_11);
              __Pyx_GIVEREF(__pyx_t_4);
              __Pyx_XGIVEREF(__pyx_t_15);
              __Pyx_ErrRestoreWithState(__pyx_t_11, __pyx_t_4, __pyx_t_15);
              __pyx_t_11 = 0;  __pyx_t_4 = 0;  __pyx_t_15 = 0; 
              __PYX_ERR(0, 2303, __pyx_L438_except_error)
            }
+2304:                 except Exception as ex:
            __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
            if (__pyx_t_10) {
              __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_15, &__pyx_t_4, &__pyx_t_11) < 0) __PYX_ERR(0, 2304, __pyx_L438_except_error)
              __Pyx_XGOTREF(__pyx_t_15);
              __Pyx_XGOTREF(__pyx_t_4);
              __Pyx_XGOTREF(__pyx_t_11);
              __Pyx_INCREF(__pyx_t_4);
              __pyx_v_ex = __pyx_t_4;
              /*try:*/ {
/* … */
              /*finally:*/ {
                __pyx_L451_error:;
                /*exception exit:*/{
                  __Pyx_PyThreadState_declare
                  __Pyx_PyThreadState_assign
                  __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0;
                  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                  __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                  __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
                  __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
                  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
                   __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
                  if ( unlikely(__Pyx_GetException(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30) < 0)) __Pyx_ErrFetch(&__pyx_t_28, &__pyx_t_29, &__pyx_t_30);
                  __Pyx_XGOTREF(__pyx_t_28);
                  __Pyx_XGOTREF(__pyx_t_29);
                  __Pyx_XGOTREF(__pyx_t_30);
                  __Pyx_XGOTREF(__pyx_t_20);
                  __Pyx_XGOTREF(__pyx_t_19);
                  __Pyx_XGOTREF(__pyx_t_18);
                  __pyx_t_10 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
                  {
                    __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                  }
                  __Pyx_XGIVEREF(__pyx_t_20);
                  __Pyx_XGIVEREF(__pyx_t_19);
                  __Pyx_XGIVEREF(__pyx_t_18);
                  __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_19, __pyx_t_18);
                  __Pyx_XGIVEREF(__pyx_t_28);
                  __Pyx_XGIVEREF(__pyx_t_29);
                  __Pyx_XGIVEREF(__pyx_t_30);
                  __Pyx_ErrRestore(__pyx_t_28, __pyx_t_29, __pyx_t_30);
                  __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0;
                  __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17;
                  goto __pyx_L438_except_error;
                }
                __pyx_L448_continue: {
                  __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                  goto __pyx_L446_except_continue;
                }
              }
              __pyx_L446_except_continue:;
              __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
              goto __pyx_L442_try_continue;
            }
            goto __pyx_L438_except_error;
+2305:                     errors.update(_build_error(name, f"Error parsing Typing: ", ex))
                __pyx_t_12 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, __pyx_mstate_global->__pyx_kp_u_Error_parsing_Typing, __pyx_v_ex); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2305, __pyx_L451_error)
                __Pyx_GOTREF(__pyx_t_12);
                __pyx_t_8 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_12); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2305, __pyx_L451_error)
                __Pyx_GOTREF(__pyx_t_8);
                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2306:                     continue
                goto __pyx_L448_continue;
              }
 2307:             # then, call the validation process:
+2308:             if (error := _validation_(name, newval, f, _type, meta, field_category, as_objects)):
        __pyx_t_11 = __pyx_v_field_category;
        __Pyx_INCREF(__pyx_t_11);
        if (!(likely(PyUnicode_CheckExact(__pyx_t_11))||((__pyx_t_11) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_11))) __PYX_ERR(0, 2308, __pyx_L42_error)
        __pyx_t_45.__pyx_n = 1;
        __pyx_t_45.as_objects = __pyx_v_as_objects;
        __pyx_t_4 = __pyx_f_9datamodel_10converters__validation_(__pyx_v_name, __pyx_v_newval, __pyx_v_f, __pyx_v__type, __pyx_v_meta, ((PyObject*)__pyx_t_11), &__pyx_t_45); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2308, __pyx_L42_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_XDECREF_SET(__pyx_v_error, __pyx_t_4);
        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2308, __pyx_L42_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (__pyx_t_2) {
/* … */
        }
+2309:                 errors[name] = error
          if (unlikely((PyDict_SetItem(__pyx_v_errors, __pyx_v_name, __pyx_v_error) < 0))) __PYX_ERR(0, 2309, __pyx_L42_error)
+2310:         except (TypeError, ValueError) as ex:
      __pyx_t_16 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), ((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
      if (__pyx_t_16) {
        __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_11, &__pyx_t_15) < 0) __PYX_ERR(0, 2310, __pyx_L44_except_error)
        __Pyx_XGOTREF(__pyx_t_4);
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_15);
        __Pyx_INCREF(__pyx_t_11);
        __Pyx_XDECREF_SET(__pyx_v_ex, __pyx_t_11);
        /*try:*/ {
/* … */
        /*finally:*/ {
          __pyx_L463_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
            __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
            __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
             __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
            if ( 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_18);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_20);
            __pyx_t_16 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
            }
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
            __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_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
            __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_17;
            goto __pyx_L44_except_error;
          }
          __pyx_L460_continue: {
            __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
            goto __pyx_L458_except_continue;
          }
        }
        __pyx_L458_except_continue:;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        goto __pyx_L48_try_continue;
      }
+2311:             _case = ex.__class__.__name__
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_ex, __pyx_mstate_global->__pyx_n_u_class); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2311, __pyx_L463_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2311, __pyx_L463_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF_SET(__pyx_v__case, __pyx_t_12);
          __pyx_t_12 = 0;
+2312:             if meta.strict is True:
          __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_meta, __pyx_mstate_global->__pyx_n_u_strict); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2312, __pyx_L463_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_2 = (__pyx_t_12 == Py_True);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(__pyx_t_2)) {
/* … */
          }
+2313:                 raise
            __Pyx_GIVEREF(__pyx_t_4);
            __Pyx_GIVEREF(__pyx_t_11);
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_11, __pyx_t_15);
            __pyx_t_4 = 0;  __pyx_t_11 = 0;  __pyx_t_15 = 0; 
            __PYX_ERR(0, 2313, __pyx_L463_error)
 2314:             else:
+2315:                 errors.update(_build_error(name, f"{_case}: at {f.name}: {f.type}", ex))
          /*else*/ {
            __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v__case, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2315, __pyx_L463_error)
            __Pyx_GOTREF(__pyx_t_12);
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2315, __pyx_L463_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_39 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2315, __pyx_L463_error)
            __Pyx_GOTREF(__pyx_t_39);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_type_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2315, __pyx_L463_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_37 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2315, __pyx_L463_error)
            __Pyx_GOTREF(__pyx_t_37);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_26[0] = __pyx_t_12;
            __pyx_t_26[1] = __pyx_mstate_global->__pyx_kp_u_at;
            __pyx_t_26[2] = __pyx_t_39;
            __pyx_t_26[3] = __pyx_mstate_global->__pyx_kp_u__5;
            __pyx_t_26[4] = __pyx_t_37;
            __pyx_t_14 = 7;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_26[0]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_26[2]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_26[4]);
            #endif
            __pyx_t_16 = 0;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_16 |= __Pyx_PyUnicode_KIND_04(__pyx_t_26[0]) | __Pyx_PyUnicode_KIND_04(__pyx_t_26[2]) | __Pyx_PyUnicode_KIND_04(__pyx_t_26[4]);
            #endif
            __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_26, 5, __pyx_t_14, __pyx_t_16);
            if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2315, __pyx_L463_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
            __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
            __pyx_t_37 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, ((PyObject*)__pyx_t_8), __pyx_v_ex); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2315, __pyx_L463_error)
            __Pyx_GOTREF(__pyx_t_37);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_8 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_37); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2315, __pyx_L463_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2316:                 continue
            goto __pyx_L460_continue;
          }
        }
+2317:         except AttributeError:
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_AttributeError))));
      if (__pyx_t_10) {
        __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_15, &__pyx_t_11, &__pyx_t_4) < 0) __PYX_ERR(0, 2317, __pyx_L44_except_error)
        __Pyx_XGOTREF(__pyx_t_15);
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_4);
+2318:             raise
        __Pyx_GIVEREF(__pyx_t_15);
        __Pyx_GIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_4);
        __Pyx_ErrRestoreWithState(__pyx_t_15, __pyx_t_11, __pyx_t_4);
        __pyx_t_15 = 0;  __pyx_t_11 = 0;  __pyx_t_4 = 0; 
        __PYX_ERR(0, 2318, __pyx_L44_except_error)
      }
+2319:         except Exception as ex:
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
      if (__pyx_t_10) {
        __Pyx_AddTraceback("datamodel.converters.processing_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_11, &__pyx_t_15) < 0) __PYX_ERR(0, 2319, __pyx_L44_except_error)
        __Pyx_XGOTREF(__pyx_t_4);
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_15);
        __Pyx_INCREF(__pyx_t_11);
        __Pyx_XDECREF_SET(__pyx_v_ex, __pyx_t_11);
        /*try:*/ {
/* … */
        /*finally:*/ {
          __pyx_L477_error:;
          /*exception exit:*/{
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
            __Pyx_XDECREF(__pyx_t_37); __pyx_t_37 = 0;
            __Pyx_XDECREF(__pyx_t_39); __pyx_t_39 = 0;
            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
             __Pyx_ExceptionSwap(&__pyx_t_23, &__pyx_t_22, &__pyx_t_21);
            if ( unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_19, &__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_20);
            __Pyx_XGOTREF(__pyx_t_19);
            __Pyx_XGOTREF(__pyx_t_18);
            __Pyx_XGOTREF(__pyx_t_23);
            __Pyx_XGOTREF(__pyx_t_22);
            __Pyx_XGOTREF(__pyx_t_21);
            __pyx_t_10 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
            {
              __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
            }
            __Pyx_XGIVEREF(__pyx_t_23);
            __Pyx_XGIVEREF(__pyx_t_22);
            __Pyx_XGIVEREF(__pyx_t_21);
            __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_22, __pyx_t_21);
            __Pyx_XGIVEREF(__pyx_t_20);
            __Pyx_XGIVEREF(__pyx_t_19);
            __Pyx_XGIVEREF(__pyx_t_18);
            __Pyx_ErrRestore(__pyx_t_20, __pyx_t_19, __pyx_t_18);
            __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0;
            __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17;
            goto __pyx_L44_except_error;
          }
          __pyx_L474_continue: {
            __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
            goto __pyx_L472_except_continue;
          }
        }
        __pyx_L472_except_continue:;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        goto __pyx_L48_try_continue;
      }
      goto __pyx_L44_except_error;
+2320:             errors.update(_build_error(name, f"Wrong Type for {f.name}: {f.type}", ex))
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2320, __pyx_L477_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_37 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_37)) __PYX_ERR(0, 2320, __pyx_L477_error)
          __Pyx_GOTREF(__pyx_t_37);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_type_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2320, __pyx_L477_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_39 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2320, __pyx_L477_error)
          __Pyx_GOTREF(__pyx_t_39);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_38[0] = __pyx_mstate_global->__pyx_kp_u_Wrong_Type_for;
          __pyx_t_38[1] = __pyx_t_37;
          __pyx_t_38[2] = __pyx_mstate_global->__pyx_kp_u__5;
          __pyx_t_38[3] = __pyx_t_39;
          __pyx_t_14 = 17;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_38[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_38[3]);
          #endif
          __pyx_t_10 = 0;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_38[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_38[3]);
          #endif
          __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_38, 4, __pyx_t_14, __pyx_t_10);
          if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2320, __pyx_L477_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_37); __pyx_t_37 = 0;
          __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
          __pyx_t_39 = __pyx_f_9datamodel_10converters__build_error(__pyx_v_name, ((PyObject*)__pyx_t_8), __pyx_v_ex); if (unlikely(!__pyx_t_39)) __PYX_ERR(0, 2320, __pyx_L477_error)
          __Pyx_GOTREF(__pyx_t_39);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyDict_Type__update, __pyx_v_errors, __pyx_t_39); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2320, __pyx_L477_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_39); __pyx_t_39 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2321:             continue
          goto __pyx_L474_continue;
        }
 2322:     # Return Errors (if any)
+2323:     return errors
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __Pyx_INCREF(__pyx_v_errors);
      __pyx_r = __pyx_v_errors;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  goto __pyx_L0;
 2324: 
+2325: cdef object _validation_(
static PyObject *__pyx_f_9datamodel_10converters__validation_(PyObject *__pyx_v_name, PyObject *__pyx_v_value, PyObject *__pyx_v_f, PyObject *__pyx_v__type, PyObject *__pyx_v_meta, PyObject *__pyx_v_field_category, struct __pyx_opt_args_9datamodel_10converters__validation_ *__pyx_optional_args) {
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("datamodel.converters._validation_", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_val_type);
  __Pyx_XDECREF(__pyx_v_error);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XDECREF(__pyx_v_inner_type);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_9datamodel_10converters__validation_ {
  int __pyx_n;
  int as_objects;
};
 2326:     str name,
 2327:     object value,
 2328:     object f,
 2329:     object _type,
 2330:     object meta,
 2331:     str field_category,
+2332:     bint as_objects = False
  int __pyx_v_as_objects = ((int)0);
  PyObject *__pyx_v_val_type = 0;
  PyObject *__pyx_v_error = 0;
  PyObject *__pyx_v_err = 0;
  PyObject *__pyx_v_inner_type = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_r = NULL;
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_as_objects = __pyx_optional_args->as_objects;
    }
  }
 2333: ):
 2334:     """
 2335:     _validation_.
 2336:     TODO: cover validations as length, not_null, required, max, min, etc
 2337:     """
+2338:     cdef object val_type = type(value)
  __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_value)));
  __pyx_v_val_type = ((PyObject *)Py_TYPE(__pyx_v_value));
+2339:     cdef str error = None
  __Pyx_INCREF(Py_None);
  __pyx_v_error = ((PyObject*)Py_None);
 2340:     cdef dict err = {
+2341:         "field": name,
  __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2341, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_field, __pyx_v_name) < (0)) __PYX_ERR(0, 2341, __pyx_L1_error)
+2342:         "value": value,
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_value_2, __pyx_v_value) < (0)) __PYX_ERR(0, 2341, __pyx_L1_error)
+2343:         "error": None
  if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_error_2, Py_None) < (0)) __PYX_ERR(0, 2341, __pyx_L1_error)
  __pyx_v_err = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 2344:     }
 2345: 
+2346:     if val_type == type or value == _type or is_empty(value):
  __pyx_t_3 = __Pyx_PyObject_RichCompareBool(__pyx_v_val_type, ((PyObject *)(&PyType_Type)), Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 2346, __pyx_L1_error)
  if (!__pyx_t_3) {

  } else {

    __pyx_t_2 = __pyx_t_3;

    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_PyObject_CompareBoolEq_object_object(__pyx_v_value, __pyx_v__type, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 2346, __pyx_L1_error)
  if (!__pyx_t_3) {

  } else {

    __pyx_t_2 = __pyx_t_3;

    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __pyx_f_9datamodel_10converters_is_empty(__pyx_v_value); if (unlikely(__pyx_t_3 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2346, __pyx_L1_error)

  __pyx_t_2 = __pyx_t_3;

  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
+2347:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L7_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
      __pyx_L9_except_error:;
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
      goto __pyx_L1_error;
      __pyx_L11_try_return:;
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
      goto __pyx_L0;
    }
+2348:             _field_checks_(f, name, value, meta)
        __pyx_t_1 = __pyx_f_9datamodel_10converters__field_checks_(__pyx_v_f, __pyx_v_name, __pyx_v_value, __pyx_v_meta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2348, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2349:             return None
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = Py_None; __Pyx_INCREF(Py_None);
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        goto __pyx_L11_try_return;
+2350:         except (ValueError, TypeError):
      __pyx_t_7 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), ((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
      if (__pyx_t_7) {
        __Pyx_AddTraceback("datamodel.converters._validation_", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(0, 2350, __pyx_L9_except_error)
        __Pyx_XGOTREF(__pyx_t_1);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
+2351:             raise
        __Pyx_GIVEREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_8, __pyx_t_9);
        __pyx_t_1 = 0;  __pyx_t_8 = 0;  __pyx_t_9 = 0; 
        __PYX_ERR(0, 2351, __pyx_L9_except_error)
      }
      goto __pyx_L9_except_error;
 2352: 
+2353:     if isinstance(value, set):
  __pyx_t_2 = PySet_Check(__pyx_v_value); 
  if (__pyx_t_2) {
/* … */
  }
 2354:         # Just validate that all elements match the expected type if specified
+2355:         if hasattr(f, '_inner_type') and f._inner_type is not None and not is_empty(value):
    __pyx_t_3 = __Pyx_HasAttr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2355, __pyx_L1_error)
    if (__pyx_t_3) {

    } else {

      __pyx_t_2 = __pyx_t_3;

      goto __pyx_L17_bool_binop_done;
    }
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_3 = (__pyx_t_9 != Py_None);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (__pyx_t_3) {

    } else {

      __pyx_t_2 = __pyx_t_3;

      goto __pyx_L17_bool_binop_done;
    }
    __pyx_t_3 = __pyx_f_9datamodel_10converters_is_empty(__pyx_v_value); if (unlikely(__pyx_t_3 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2355, __pyx_L1_error)
    __pyx_t_10 = (!__pyx_t_3);



    __pyx_t_2 = __pyx_t_10;

    __pyx_L17_bool_binop_done:;
    if (__pyx_t_2) {
/* … */
    }
+2356:             inner_type = f._inner_type
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_inner_type); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2356, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_v_inner_type = __pyx_t_9;
      __pyx_t_9 = 0;
 2357:             # For primitive types, we can use isinstance
+2358:             if inner_type in (str, int, float, bool):
      __Pyx_INCREF(__pyx_v_inner_type);
      __pyx_t_9 = __pyx_v_inner_type;
      __pyx_t_10 = __Pyx_PyObject_RichCompareBool(__pyx_t_9, ((PyObject *)(&PyUnicode_Type)), Py_EQ); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 2358, __pyx_L1_error)
      if (!__pyx_t_10) {

      } else {

        __pyx_t_2 = __pyx_t_10;

        goto __pyx_L21_bool_binop_done;
      }
      __pyx_t_10 = __Pyx_PyObject_RichCompareBool(__pyx_t_9, ((PyObject *)(&PyLong_Type)), Py_EQ); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 2358, __pyx_L1_error)
      if (!__pyx_t_10) {

      } else {

        __pyx_t_2 = __pyx_t_10;

        goto __pyx_L21_bool_binop_done;
      }
      __pyx_t_10 = __Pyx_PyObject_RichCompareBool(__pyx_t_9, ((PyObject *)(&PyFloat_Type)), Py_EQ); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 2358, __pyx_L1_error)
      if (!__pyx_t_10) {

      } else {

        __pyx_t_2 = __pyx_t_10;

        goto __pyx_L21_bool_binop_done;
      }
      __pyx_t_10 = __Pyx_PyObject_RichCompareBool(__pyx_t_9, ((PyObject *)(&PyBool_Type)), Py_EQ); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 2358, __pyx_L1_error)

      __pyx_t_2 = __pyx_t_10;

      __pyx_L21_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = __pyx_t_2;


      if (__pyx_t_10) {
/* … */
      }
+2359:                 for item in value:
        if (likely(PyList_CheckExact(__pyx_v_value)) || PyTuple_CheckExact(__pyx_v_value)) {
          __pyx_t_9 = __pyx_v_value; __Pyx_INCREF(__pyx_t_9);
          __pyx_t_11 = 0;
          __pyx_t_12 = NULL;
        } else {
          __pyx_t_11 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_v_value); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2359, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_12 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2359, __pyx_L1_error)
        }
        for (;;) {
          if (likely(!__pyx_t_12)) {
            if (likely(PyList_CheckExact(__pyx_t_9))) {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_9);
                #if !CYTHON_ASSUME_SAFE_SIZE
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2359, __pyx_L1_error)
                #endif
                if (__pyx_t_11 >= __pyx_temp) break;
              }
              __pyx_t_8 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_9, __pyx_t_11, __Pyx_ReferenceSharing_OwnStrongReference);
              ++__pyx_t_11;
            } else {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_9);
                #if !CYTHON_ASSUME_SAFE_SIZE
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2359, __pyx_L1_error)
                #endif
                if (__pyx_t_11 >= __pyx_temp) break;
              }
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_8 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_11));
              #else
              __pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_9, __pyx_t_11);
              #endif
              ++__pyx_t_11;
            }
            if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2359, __pyx_L1_error)
          } else {
            __pyx_t_8 = __pyx_t_12(__pyx_t_9);
            if (unlikely(!__pyx_t_8)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 2359, __pyx_L1_error)
                PyErr_Clear();
              }
              break;
            }
          }
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_8);
          __pyx_t_8 = 0;
/* … */
        }
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+2360:                     if not isinstance(item, inner_type):
          __pyx_t_10 = PyObject_IsInstance(__pyx_v_item, __pyx_v_inner_type); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 2360, __pyx_L1_error)
          __pyx_t_2 = (!__pyx_t_10);


          if (__pyx_t_2) {
/* … */
          }
+2361:                         err["error"] = f"Set item {item} is not of expected type {inner_type.__name__}"
            __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_item, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2361, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_inner_type, __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2361, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_13 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2361, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_13);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_14[0] = __pyx_mstate_global->__pyx_kp_u_Set_item;
            __pyx_t_14[1] = __pyx_t_8;
            __pyx_t_14[2] = __pyx_mstate_global->__pyx_kp_u_is_not_of_expected_type;
            __pyx_t_14[3] = __pyx_t_13;
            __pyx_t_15 = 34;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_15 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14[3]);
            #endif
            __pyx_t_7 = 0;
            #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
            __pyx_t_7 |= __Pyx_PyUnicode_KIND_04(__pyx_t_14[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_14[3]);
            #endif
            __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_14, 4, __pyx_t_15, __pyx_t_7);
            if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2361, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            if (unlikely((PyDict_SetItem(__pyx_v_err, __pyx_mstate_global->__pyx_n_u_error_2, __pyx_t_1) < 0))) __PYX_ERR(0, 2361, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2362:                         return err
            {
              PyObject *__pyx_temp;
              {
                __pyx_temp = __pyx_r;
                __Pyx_INCREF(__pyx_v_err);
                __pyx_r = __pyx_v_err;
              }
              __Pyx_XDECREF(__pyx_temp);
            }
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            goto __pyx_L0;
+2363:         return None
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 2364: 
 2365:     # If the field has a cached validator, use it.
+2366:     if f.validator is not None:
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_validator); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_2 = (__pyx_t_9 != Py_None);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__pyx_t_2) {
/* … */
  }
+2367:         try:
    {
      /*try:*/ {
/* … */
      }
      __pyx_L30_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
      __pyx_L32_except_error:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L34_try_return:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4);
      goto __pyx_L0;
    }
+2368:             error = f.validator(f, name, value, _type)
        __pyx_t_1 = __pyx_v_f;
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_16 = 0;
        {
          PyObject *__pyx_callargs[5] = {__pyx_t_1, __pyx_v_f, __pyx_v_name, __pyx_v_value, __pyx_v__type};
          __pyx_t_9 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_validator, __pyx_callargs+__pyx_t_16, (5-__pyx_t_16) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2368, __pyx_L30_error)
          __Pyx_GOTREF(__pyx_t_9);
        }
        if (!(likely(PyUnicode_CheckExact(__pyx_t_9))||((__pyx_t_9) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_9))) __PYX_ERR(0, 2368, __pyx_L30_error)
        __Pyx_DECREF_SET(__pyx_v_error, ((PyObject*)__pyx_t_9));
        __pyx_t_9 = 0;
+2369:             if error:
        if (__pyx_v_error == Py_None) __pyx_t_2 = 0;
        else
        {
          Py_ssize_t __pyx_temp = __Pyx_PyUnicode_IS_TRUE(__pyx_v_error);
          if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 2369, __pyx_L30_error)
          __pyx_t_2 = (__pyx_temp != 0);
        }

        if (__pyx_t_2) {
/* … */
        }
+2370:                 err["error"] = error
          if (unlikely((PyDict_SetItem(__pyx_v_err, __pyx_mstate_global->__pyx_n_u_error_2, __pyx_v_error) < 0))) __PYX_ERR(0, 2370, __pyx_L30_error)
+2371:                 return err
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __Pyx_INCREF(__pyx_v_err);
              __pyx_r = __pyx_v_err;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          goto __pyx_L34_try_return;
 2372:             else:
 2373:                 # calling validation_constraints:
+2374:                 if _type in (str, int, float):
        /*else*/ {
          __Pyx_INCREF(__pyx_v__type);
          __pyx_t_9 = __pyx_v__type;
          __pyx_t_10 = __Pyx_PyObject_RichCompareBool(__pyx_t_9, ((PyObject *)(&PyUnicode_Type)), Py_EQ); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 2374, __pyx_L30_error)
          if (!__pyx_t_10) {

          } else {

            __pyx_t_2 = __pyx_t_10;

            goto __pyx_L38_bool_binop_done;
          }
          __pyx_t_10 = __Pyx_PyObject_RichCompareBool(__pyx_t_9, ((PyObject *)(&PyLong_Type)), Py_EQ); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 2374, __pyx_L30_error)
          if (!__pyx_t_10) {

          } else {

            __pyx_t_2 = __pyx_t_10;

            goto __pyx_L38_bool_binop_done;
          }
          __pyx_t_10 = __Pyx_PyObject_RichCompareBool(__pyx_t_9, ((PyObject *)(&PyFloat_Type)), Py_EQ); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 2374, __pyx_L30_error)

          __pyx_t_2 = __pyx_t_10;

          __pyx_L38_bool_binop_done:;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_t_10 = __pyx_t_2;


          if (__pyx_t_10) {
/* … */
          }
        }
+2375:                     return _validate_constraints(f, name, value, _type, val_type)
            __pyx_t_9 = __pyx_f_9datamodel_10validation__validate_constraints(__pyx_v_f, __pyx_v_name, __pyx_v_value, __pyx_v__type, __pyx_v_val_type); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2375, __pyx_L30_error)
            __Pyx_GOTREF(__pyx_t_9);
            {
              PyObject *__pyx_temp;
              {
                __pyx_temp = __pyx_r;
                __pyx_r = __pyx_t_9;
              }
              __Pyx_XDECREF(__pyx_temp);
            }
            __pyx_t_9 = 0;
            goto __pyx_L34_try_return;
+2376:             return None
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = Py_None; __Pyx_INCREF(Py_None);
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        goto __pyx_L34_try_return;
+2377:         except ValueError:
      __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
      if (__pyx_t_7) {
        __Pyx_AddTraceback("datamodel.converters._validation_", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_1, &__pyx_t_13) < 0) __PYX_ERR(0, 2377, __pyx_L32_except_error)
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_1);
        __Pyx_XGOTREF(__pyx_t_13);
+2378:             raise
        __Pyx_GIVEREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_1);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ErrRestoreWithState(__pyx_t_9, __pyx_t_1, __pyx_t_13);
        __pyx_t_9 = 0;  __pyx_t_1 = 0;  __pyx_t_13 = 0; 
        __PYX_ERR(0, 2378, __pyx_L32_except_error)
      }
      goto __pyx_L32_except_error;
 2379:     else:
 2380:         # capturing other errors from validator:
+2381:         return _validation(f, name, value, _type, val_type, field_category, as_objects)
  /*else*/ {
    __pyx_t_1 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_validation); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_8 = __Pyx_PyBool_FromLong(__pyx_v_as_objects); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_16 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_9);
      assert(__pyx_t_1);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
      __pyx_t_16 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[8] = {__pyx_t_1, __pyx_v_f, __pyx_v_name, __pyx_v_value, __pyx_v__type, __pyx_v_val_type, __pyx_v_field_category, __pyx_t_8};
      __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_16, (8-__pyx_t_16) | (__pyx_t_16*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2381, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
    }
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_13;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_13 = 0;
    goto __pyx_L0;
  }
 2382: 
+2383: cdef object _field_checks_(object f, str name, object value, object meta):
static PyObject *__pyx_f_9datamodel_10converters__field_checks_(PyObject *__pyx_v_f, PyObject *__pyx_v_name, PyObject *__pyx_v_value, PyObject *__pyx_v_meta) {
  PyObject *__pyx_v_metadata = 0;
  PyObject *__pyx_r = NULL;
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("datamodel.converters._field_checks_", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_metadata);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2384:     # Validate Primary Key
+2385:     cdef object metadata = f.metadata
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_mstate_global->__pyx_n_u_metadata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_metadata = __pyx_t_1;
  __pyx_t_1 = 0;
+2386:     try:
  {
    /*try:*/ {
/* … */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L8_try_end:;
  }
+2387:         if metadata.get('primary', False) is True:
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_metadata, __pyx_mstate_global->__pyx_n_u_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2387, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[3], NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2387, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_6 = (__pyx_t_5 == Py_True);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_6) {
/* … */
      }
/* … */
  {
    PyObject* __pyx_temp[2] = {__pyx_mstate_global->__pyx_n_u_primary, Py_False};
    __pyx_mstate_global->__pyx_tuple[3] = __Pyx_PyTuple_FromArray(__pyx_temp, 2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[3])) __PYX_ERR(0, 2387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[3]);
  }
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[3]);
+2388:             if 'db_default' in metadata:
        __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_mstate_global->__pyx_n_u_db_default, __pyx_v_metadata, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 2388, __pyx_L3_error)
        if (likely(__pyx_t_6)) {

          goto __pyx_L10;
        }
 2389:                 pass
 2390:             else:
+2391:                 raise ValueError(
        /*else*/ {
          __pyx_t_1 = NULL;
+2392:                     f":: Missing Primary Key *{name}*"
          __pyx_t_7 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2392, __pyx_L3_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_Missing_Primary_Key;
          __pyx_t_8[1] = __pyx_t_7;
          __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u__11;
          __pyx_t_9 = 25;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[1]);
          #endif
          __pyx_t_10 = 0;
          #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
          __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_8[1]);
          #endif
          __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, __pyx_t_9, __pyx_t_10);
          if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2392, __pyx_L3_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_12 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_11};
            __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2391, __pyx_L3_error)
            __Pyx_GOTREF(__pyx_t_5);
          }
          __Pyx_Raise(__pyx_t_5, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __PYX_ERR(0, 2391, __pyx_L3_error)
        }
        __pyx_L10:;
 2393:                 )
+2394:     except KeyError:
    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
    if (__pyx_t_10) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
 2395:         pass
 2396:     # Validate Required
+2397:     try:
  {
    /*try:*/ {
/* … */
    }
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L18_try_end;
    __pyx_L13_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
    __pyx_L15_except_error:;
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_3, __pyx_t_2);
    goto __pyx_L1_error;
    __pyx_L17_try_return:;
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_3, __pyx_t_2);
    goto __pyx_L0;
    __pyx_L16_except_return:;
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_3, __pyx_t_2);
    goto __pyx_L0;
    __pyx_L18_try_end:;
  }
+2398:         if metadata.get('required', False) is True and meta.strict is True:
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_metadata, __pyx_mstate_global->__pyx_n_u_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2398, __pyx_L13_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[4], NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2398, __pyx_L13_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_13 = (__pyx_t_11 == Py_True);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (__pyx_t_13) {

      } else {

        __pyx_t_6 = __pyx_t_13;

        goto __pyx_L20_bool_binop_done;
      }
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_meta, __pyx_mstate_global->__pyx_n_u_strict); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2398, __pyx_L13_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_13 = (__pyx_t_11 == Py_True);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

      __pyx_t_6 = __pyx_t_13;

      __pyx_L20_bool_binop_done:;
      if (__pyx_t_6) {
/* … */
      }
/* … */
  {
    PyObject* __pyx_temp[2] = {__pyx_mstate_global->__pyx_n_u_required, Py_False};
    __pyx_mstate_global->__pyx_tuple[4] = __Pyx_PyTuple_FromArray(__pyx_temp, 2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[4])) __PYX_ERR(0, 2398, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[4]);
  }
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[4]);
+2399:             if 'db_default' in metadata:
        __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_mstate_global->__pyx_n_u_db_default, __pyx_v_metadata, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 2399, __pyx_L13_error)
        if (__pyx_t_6) {
/* … */
        }
+2400:                 return
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = Py_None; __Pyx_INCREF(Py_None);
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          goto __pyx_L17_try_return;
+2401:             if value is not None:
        __pyx_t_6 = (__pyx_v_value != Py_None);
        if (__pyx_t_6) {
/* … */
        }
+2402:                 return  # If default value is set, no need to raise an error
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = Py_None; __Pyx_INCREF(Py_None);
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          goto __pyx_L17_try_return;
+2403:             raise ValueError(
        __pyx_t_5 = NULL;
+2404:                 f":: Missing Required Field *{name}*"
        __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2404, __pyx_L13_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_Missing_Required_Field;
        __pyx_t_8[1] = __pyx_t_1;
        __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u__11;
        __pyx_t_9 = 28;
        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
        __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[1]);
        #endif
        __pyx_t_10 = 0;
        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
        __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_8[1]);
        #endif
        __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, __pyx_t_9, __pyx_t_10);
        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2404, __pyx_L13_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_12 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_7};
          __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2403, __pyx_L13_error)
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_Raise(__pyx_t_11, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __PYX_ERR(0, 2403, __pyx_L13_error)
 2405:             )
+2406:     except ValueError:
    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_10) {
      __Pyx_AddTraceback("datamodel.converters._field_checks_", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_7, &__pyx_t_5) < 0) __PYX_ERR(0, 2406, __pyx_L15_except_error)
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_5);
+2407:         raise
      __Pyx_GIVEREF(__pyx_t_11);
      __Pyx_GIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ErrRestoreWithState(__pyx_t_11, __pyx_t_7, __pyx_t_5);
      __pyx_t_11 = 0;  __pyx_t_7 = 0;  __pyx_t_5 = 0; 
      __PYX_ERR(0, 2407, __pyx_L15_except_error)
    }
+2408:     except KeyError:
    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
    if (__pyx_t_10) {
      __Pyx_ErrRestore(0,0,0);
+2409:         return
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = Py_None; __Pyx_INCREF(Py_None);
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      goto __pyx_L16_except_return;
    }
    goto __pyx_L15_except_error;
 2410:     # Nullable:
+2411:     try:
  {
    /*try:*/ {
/* … */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L33_try_end;
    __pyx_L28_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
    __pyx_L30_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L31_except_return:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L0;
    __pyx_L33_try_end:;
  }
+2412:         if metadata.get('nullable', True) is False and meta.strict is True:
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_metadata, __pyx_mstate_global->__pyx_n_u_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2412, __pyx_L28_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[5], NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2412, __pyx_L28_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_13 = (__pyx_t_7 == Py_False);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (__pyx_t_13) {

      } else {

        __pyx_t_6 = __pyx_t_13;

        goto __pyx_L35_bool_binop_done;
      }
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_meta, __pyx_mstate_global->__pyx_n_u_strict); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2412, __pyx_L28_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_13 = (__pyx_t_7 == Py_True);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      __pyx_t_6 = __pyx_t_13;

      __pyx_L35_bool_binop_done:;
      if (unlikely(__pyx_t_6)) {
/* … */
      }
/* … */
  {
    PyObject* __pyx_temp[2] = {__pyx_mstate_global->__pyx_n_u_nullable, Py_True};
    __pyx_mstate_global->__pyx_tuple[5] = __Pyx_PyTuple_FromArray(__pyx_temp, 2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[5])) __PYX_ERR(0, 2412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[5]);
  }
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[5]);
+2413:             raise ValueError(
        __pyx_t_5 = NULL;
+2414:                 f":: *{name}* Cannot be null."
        __pyx_t_11 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2414, __pyx_L28_error)
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u__12;
        __pyx_t_8[1] = __pyx_t_11;
        __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_Cannot_be_null;
        __pyx_t_9 = 21;
        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
        __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[1]);
        #endif
        __pyx_t_10 = 0;
        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
        __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_8[1]);
        #endif
        __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, __pyx_t_9, __pyx_t_10);
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2414, __pyx_L28_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __pyx_t_12 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_1};
          __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2413, __pyx_L28_error)
          __Pyx_GOTREF(__pyx_t_7);
        }
        __Pyx_Raise(__pyx_t_7, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __PYX_ERR(0, 2413, __pyx_L28_error)
 2415:             )
+2416:     except ValueError:
    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_10) {
      __Pyx_AddTraceback("datamodel.converters._field_checks_", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_1, &__pyx_t_5) < 0) __PYX_ERR(0, 2416, __pyx_L30_except_error)
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_5);
+2417:         raise
      __Pyx_GIVEREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ErrRestoreWithState(__pyx_t_7, __pyx_t_1, __pyx_t_5);
      __pyx_t_7 = 0;  __pyx_t_1 = 0;  __pyx_t_5 = 0; 
      __PYX_ERR(0, 2417, __pyx_L30_except_error)
    }
+2418:     except KeyError:
    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
    if (__pyx_t_10) {
      __Pyx_ErrRestore(0,0,0);
+2419:         return
      {
        PyObject *__pyx_temp;
        {
          __pyx_temp = __pyx_r;
          __pyx_r = Py_None; __Pyx_INCREF(Py_None);
        }
        __Pyx_XDECREF(__pyx_temp);
      }
      goto __pyx_L31_except_return;
    }
    goto __pyx_L30_except_error;
+2420:     return
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  goto __pyx_L0;
 2421: 
 2422: 
+2423: cpdef parse_type(object field, object T, object data, object encoder = None):
static PyObject *__pyx_pw_9datamodel_10converters_37parse_type(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_9datamodel_10converters_parse_type(PyObject *__pyx_v_field, PyObject *__pyx_v_T, PyObject *__pyx_v_data, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_9datamodel_10converters_parse_type *__pyx_optional_args) {
  PyObject *__pyx_v_encoder = ((PyObject *)Py_None);
  PyObject *__pyx_v_origin = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_type_name = 0;
  PyObject *__pyx_v_type_args = 0;
  CYTHON_UNUSED PyObject *__pyx_v_typeinfo = 0;
  PyObject *__pyx_v_arg_type = NULL;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_v_result = NULL;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_v_d = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_v_converted_item = NULL;
  PyObject *__pyx_v_non_none_arg = NULL;
  PyObject *__pyx_v_arg = NULL;
  PyObject *__pyx_v_fn = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_ex = NULL;
  PyObject *__pyx_v_exc = NULL;
  PyObject *__pyx_8genexpr7__pyx_v_k = NULL;
  PyObject *__pyx_8genexpr7__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_encoder = __pyx_optional_args->encoder;
    }
  }
  __Pyx_INCREF(__pyx_v_T);
  __Pyx_INCREF(__pyx_v_data);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_XDECREF(__pyx_t_26);
  __Pyx_XDECREF(__pyx_t_27);
  __Pyx_XDECREF(__pyx_t_28);
  __Pyx_XDECREF(__pyx_t_30);
  __Pyx_AddTraceback("datamodel.converters.parse_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_origin);
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_type_name);
  __Pyx_XDECREF(__pyx_v_type_args);
  __Pyx_XDECREF(__pyx_v_typeinfo);
  __Pyx_XDECREF(__pyx_v_arg_type);
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XDECREF(__pyx_v_d);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XDECREF(__pyx_v_converted_item);
  __Pyx_XDECREF(__pyx_v_non_none_arg);
  __Pyx_XDECREF(__pyx_v_arg);
  __Pyx_XDECREF(__pyx_v_fn);
  __Pyx_XDECREF(__pyx_v_ex);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_k);
  __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_v);
  __Pyx_XDECREF(__pyx_v_T);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_9datamodel_10converters_37parse_type(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_9datamodel_10converters_36parse_type, "parse_type(field, T, data, encoder=None)");
static PyMethodDef __pyx_mdef_9datamodel_10converters_37parse_type = {"parse_type", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_10converters_37parse_type, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_10converters_36parse_type};
static PyObject *__pyx_pw_9datamodel_10converters_37parse_type(PyObject *__pyx_self, 
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_field = 0;
  PyObject *__pyx_v_T = 0;
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_encoder = 0;
  #if !CYTHON_VECTORCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse_type (wrapper)", 0);
  #if !CYTHON_VECTORCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_field,&__pyx_mstate_global->__pyx_n_u_T,&__pyx_mstate_global->__pyx_n_u_data,&__pyx_mstate_global->__pyx_n_u_encoder,0};
  PyObject* values[4] = {0,0,0,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 2423, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 2423, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 2423, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 2423, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2423, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "parse_type", 0) < (0)) __PYX_ERR(0, 2423, __pyx_L3_error)
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("parse_type", 0, 3, 4, i); __PYX_ERR(0, 2423, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 2423, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 2423, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 2423, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2423, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_field = values[0];
    __pyx_v_T = values[1];
    __pyx_v_data = values[2];
    __pyx_v_encoder = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("parse_type", 0, 3, 4, __pyx_nargs); __PYX_ERR(0, 2423, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("datamodel.converters.parse_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9datamodel_10converters_36parse_type(__pyx_self, __pyx_v_field, __pyx_v_T, __pyx_v_data, __pyx_v_encoder);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9datamodel_10converters_36parse_type(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_field, PyObject *__pyx_v_T, PyObject *__pyx_v_data, PyObject *__pyx_v_encoder) {
  PyObject *__pyx_r = NULL;
  __pyx_t_2.__pyx_n = 1;
  __pyx_t_2.encoder = __pyx_v_encoder;
  __pyx_t_1 = __pyx_f_9datamodel_10converters_parse_type(__pyx_v_field, __pyx_v_T, __pyx_v_data, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  {
    PyObject *__pyx_temp;
    {
      __pyx_temp = __pyx_r;
      __pyx_r = __pyx_t_1;
    }
    __Pyx_XDECREF(__pyx_temp);
  }
  __pyx_t_1 = 0;
  goto __pyx_L0;
/* … */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9datamodel_10converters_37parse_type, 0, __pyx_mstate_global->__pyx_n_u_parse_type, NULL, __pyx_mstate_global->__pyx_n_u_datamodel_converters, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[24])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[6]);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_parse_type, __pyx_t_2) < (0)) __PYX_ERR(0, 2423, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
struct __pyx_opt_args_9datamodel_10converters_parse_type {
  int __pyx_n;
  PyObject *encoder;
};
+2424:     cdef object origin = normalize_origin(get_origin(T))
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_get_origin); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_T};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2424, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_3 = __pyx_f_9datamodel_10converters_normalize_origin(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_origin = __pyx_t_3;
  __pyx_t_3 = 0;
+2425:     cdef tuple args = None
  __Pyx_INCREF(Py_None);
  __pyx_v_args = ((PyObject*)Py_None);
+2426:     cdef str type_name = getattr(T, '_name', None)
  __pyx_t_3 = __Pyx_GetAttr3(__pyx_v_T, __pyx_mstate_global->__pyx_n_u_name_3, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(0, 2426, __pyx_L1_error)
  __pyx_v_type_name = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
+2427:     cdef object type_args = getattr(T, '__args__', None)
  __pyx_t_3 = __Pyx_GetAttr3(__pyx_v_T, __pyx_mstate_global->__pyx_n_u_args, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_type_args = __pyx_t_3;
  __pyx_t_3 = 0;
+2428:     cdef dict typeinfo = getattr(T, '_typeinfo_', None)
  __pyx_t_3 = __Pyx_GetAttr3(__pyx_v_T, __pyx_mstate_global->__pyx_n_u_typeinfo_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(PyDict_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_3))) __PYX_ERR(0, 2428, __pyx_L1_error)
  __pyx_v_typeinfo = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
 2429: 
+2430:     if isinstance(T, NewType):
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_NewType); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyObject_IsInstance(__pyx_v_T, __pyx_t_3); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 2430, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_5) {
/* … */
  }
 2431:         # change type if is a NewType object.
+2432:         T = T.__supertype__
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_T, __pyx_mstate_global->__pyx_n_u_supertype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2432, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_T, __pyx_t_3);
    __pyx_t_3 = 0;
 2433: 
 2434:     # Check if the data is already of the correct type
+2435:     if isinstance(data, T):
  __pyx_t_5 = PyObject_IsInstance(__pyx_v_data, __pyx_v_T); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 2435, __pyx_L1_error)
  if (__pyx_t_5) {
/* … */
  }
+2436:         return data
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_data);
        __pyx_r = __pyx_v_data;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 2437: 
+2438:     if field._type_category == 'typing':
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_type_category); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_typing, Py_EQ); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 2438, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_5) {
/* … */
    goto __pyx_L5;
  }
+2439:         args = type_args or ()
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_type_args); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 2439, __pyx_L1_error)
    if (!__pyx_t_5) {
    } else {
      __pyx_t_1 = __pyx_v_type_args;
      __Pyx_INCREF(__pyx_t_1);
      if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(0, 2439, __pyx_L1_error)
      __pyx_t_3 = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L6_bool_binop_done;
    }
    __Pyx_INCREF(__pyx_mstate_global->__pyx_empty_tuple);
    __pyx_t_3 = __pyx_mstate_global->__pyx_empty_tuple;
    __pyx_L6_bool_binop_done:;
    __Pyx_DECREF_SET(__pyx_v_args, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 0;
+2440:         if type_name == 'Dict' and isinstance(data, dict):
    __pyx_t_6 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_v_type_name, __pyx_mstate_global->__pyx_n_u_Dict, Py_EQ); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 2440, __pyx_L1_error)
    if (__pyx_t_6) {

    } else {

      __pyx_t_5 = __pyx_t_6;

      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_6 = PyDict_Check(__pyx_v_data); 

    __pyx_t_5 = __pyx_t_6;

    __pyx_L9_bool_binop_done:;
    if (__pyx_t_5) {
/* … */
      goto __pyx_L8;
    }
+2441:             if args:
      if (__pyx_v_args == Py_None) __pyx_t_5 = 0;
      else
      {
        Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_v_args);
        if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 2441, __pyx_L1_error)
        __pyx_t_5 = (__pyx_temp != 0);
      }

      if (__pyx_t_5) {
/* … */
      }
+2442:                 return {k: parse_type(field, type_args[1], v) for k, v in data.items()}
        { /* enter inner scope */
          __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2442, __pyx_L14_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_7 = 0;
          if (unlikely(__pyx_v_data == Py_None)) {
            PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "items");
            __PYX_ERR(0, 2442, __pyx_L14_error)
          }
          __pyx_t_2 = __Pyx_dict_iterator(__pyx_v_data, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_8), (&__pyx_t_9)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2442, __pyx_L14_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_XDECREF(__pyx_t_1);
          __pyx_t_1 = __pyx_t_2;
          __pyx_t_2 = 0;
          while (1) {
            __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_8, &__pyx_t_7, &__pyx_t_2, &__pyx_t_10, NULL, __pyx_t_9);
            if (unlikely(__pyx_t_11 == 0)) break;
            if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 2442, __pyx_L14_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_XDECREF_SET(__pyx_8genexpr7__pyx_v_k, __pyx_t_2);
            __pyx_t_2 = 0;
            __Pyx_XDECREF_SET(__pyx_8genexpr7__pyx_v_v, __pyx_t_10);
            __pyx_t_10 = 0;
            __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_type_args, 1, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2442, __pyx_L14_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_2 = __pyx_f_9datamodel_10converters_parse_type(__pyx_v_field, __pyx_t_10, __pyx_8genexpr7__pyx_v_v, 0, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2442, __pyx_L14_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            if (unlikely(PyDict_SetItem(__pyx_t_3, __pyx_8genexpr7__pyx_v_k, __pyx_t_2))) __PYX_ERR(0, 2442, __pyx_L14_error)
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_k); __pyx_8genexpr7__pyx_v_k = 0;
          __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_v); __pyx_8genexpr7__pyx_v_v = 0;
          goto __pyx_L17_exit_scope;
          __pyx_L14_error:;
          __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_k); __pyx_8genexpr7__pyx_v_k = 0;
          __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_v); __pyx_8genexpr7__pyx_v_v = 0;
          goto __pyx_L1_error;
          __pyx_L17_exit_scope:;
        } /* exit inner scope */
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_3;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_3 = 0;
        goto __pyx_L0;
 2443: 
+2444:         elif type_name == 'List':
    __pyx_t_5 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_v_type_name, __pyx_mstate_global->__pyx_n_u_List, Py_EQ); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 2444, __pyx_L1_error)
    if (__pyx_t_5) {
/* … */
    }
+2445:             if not isinstance(data, (list, tuple)):
      __pyx_t_6 = PyList_Check(__pyx_v_data); 
      if (!__pyx_t_6) {

      } else {

        __pyx_t_5 = __pyx_t_6;

        goto __pyx_L19_bool_binop_done;
      }
      __pyx_t_6 = PyTuple_Check(__pyx_v_data); 

      __pyx_t_5 = __pyx_t_6;

      __pyx_L19_bool_binop_done:;
      __pyx_t_6 = (!__pyx_t_5);


      if (__pyx_t_6) {
/* … */
      }
+2446:                 data = [data]
        __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2446, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_v_data);
        __Pyx_GIVEREF(__pyx_v_data);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_data) != (0)) __PYX_ERR(0, 2446, __pyx_L1_error);
        __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_3);
        __pyx_t_3 = 0;
+2447:             arg_type = args[0]
      if (unlikely(__pyx_v_args == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
        __PYX_ERR(0, 2447, __pyx_L1_error)
      }
      __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2447, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_v_arg_type = __pyx_t_3;
      __pyx_t_3 = 0;
+2448:             if arg_type.__module__ == 'typing': # nested typing
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_type, __pyx_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2448, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_typing, Py_EQ); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 2448, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
/* … */
      }
+2449:                 try:
        {
          /*try:*/ {
/* … */
          }
          __pyx_L22_error:;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
          __pyx_L24_except_error:;
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          goto __pyx_L1_error;
          __pyx_L26_try_return:;
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          goto __pyx_L0;
          __pyx_L25_except_return:;
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          goto __pyx_L0;
        }
+2450:                     t = arg_type.__args__[0]
            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_arg_type, __pyx_mstate_global->__pyx_n_u_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2450, __pyx_L22_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2450, __pyx_L22_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_v_t = __pyx_t_1;
            __pyx_t_1 = 0;
+2451:                     if is_dc(t):
            __pyx_t_6 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_t); if (unlikely(__pyx_t_6 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2451, __pyx_L22_error)
            if (__pyx_t_6) {
/* … */
            }
+2452:                         result = []
              __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2452, __pyx_L22_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_v_result = ((PyObject*)__pyx_t_1);
              __pyx_t_1 = 0;
+2453:                         for x in data:
              if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
                __pyx_t_1 = __pyx_v_data; __Pyx_INCREF(__pyx_t_1);
                __pyx_t_8 = 0;
                __pyx_t_15 = NULL;
              } else {
                __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2453, __pyx_L22_error)
                __Pyx_GOTREF(__pyx_t_1);
                __pyx_t_15 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2453, __pyx_L22_error)
              }
              for (;;) {
                if (likely(!__pyx_t_15)) {
                  if (likely(PyList_CheckExact(__pyx_t_1))) {
                    {
                      Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
                      #if !CYTHON_ASSUME_SAFE_SIZE
                      if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2453, __pyx_L22_error)
                      #endif
                      if (__pyx_t_8 >= __pyx_temp) break;
                    }
                    __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
                    ++__pyx_t_8;
                  } else {
                    {
                      Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
                      #if !CYTHON_ASSUME_SAFE_SIZE
                      if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2453, __pyx_L22_error)
                      #endif
                      if (__pyx_t_8 >= __pyx_temp) break;
                    }
                    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                    __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8));
                    #else
                    __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8);
                    #endif
                    ++__pyx_t_8;
                  }
                  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2453, __pyx_L22_error)
                } else {
                  __pyx_t_3 = __pyx_t_15(__pyx_t_1);
                  if (unlikely(!__pyx_t_3)) {
                    PyObject* exc_type = PyErr_Occurred();
                    if (exc_type) {
                      if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 2453, __pyx_L22_error)
                      PyErr_Clear();
                    }
                    break;
                  }
                }
                __Pyx_GOTREF(__pyx_t_3);
                __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_3);
                __pyx_t_3 = 0;
/* … */
              }
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2454:                             if isinstance(x, dict):
                __pyx_t_6 = PyDict_Check(__pyx_v_x); 
                if (__pyx_t_6) {
/* … */
                  goto __pyx_L31;
                }
+2455:                                 result.append(t(**x))
                  if (unlikely(__pyx_v_x == Py_None)) {
                    PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
                    __PYX_ERR(0, 2455, __pyx_L22_error)
                  }
                  if (likely(PyDict_CheckExact(__pyx_v_x))) {
                    __pyx_t_3 = PyDict_Copy(__pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2455, __pyx_L22_error)
                    __Pyx_GOTREF(__pyx_t_3);
                  } else {
                    __pyx_t_3 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2455, __pyx_L22_error)
                    __Pyx_GOTREF(__pyx_t_3);
                  }
                  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_t, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2455, __pyx_L22_error)
                  __Pyx_GOTREF(__pyx_t_2);
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                  __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_2); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2455, __pyx_L22_error)
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

+2456:                             elif isinstance(x, (list, tuple)):
                __pyx_t_5 = PyList_Check(__pyx_v_x); 
                if (!__pyx_t_5) {

                } else {

                  __pyx_t_6 = __pyx_t_5;

                  goto __pyx_L32_bool_binop_done;
                }
                __pyx_t_5 = PyTuple_Check(__pyx_v_x); 

                __pyx_t_6 = __pyx_t_5;

                __pyx_L32_bool_binop_done:;
                if (__pyx_t_6) {
/* … */
                  goto __pyx_L31;
                }
+2457:                                 result.append(t(*x))
                  __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_v_x); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2457, __pyx_L22_error)
                  __Pyx_GOTREF(__pyx_t_2);
                  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_t, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2457, __pyx_L22_error)
                  __Pyx_GOTREF(__pyx_t_3);
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
                  __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2457, __pyx_L22_error)
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

 2458:                             else:
+2459:                                 result.append(t())
                /*else*/ {
                  __pyx_t_2 = NULL;
                  __Pyx_INCREF(__pyx_v_t);
                  __pyx_t_10 = __pyx_v_t; 
                  __pyx_t_4 = 1;
                  #if CYTHON_UNPACK_METHODS
                  if (unlikely(PyMethod_Check(__pyx_t_10))) {
                    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
                    assert(__pyx_t_2);
                    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
                    __Pyx_INCREF(__pyx_t_2);
                    __Pyx_INCREF(__pyx__function);
                    __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
                    __pyx_t_4 = 0;
                  }
                  #endif
                  {
                    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
                    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
                    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2459, __pyx_L22_error)
                    __Pyx_GOTREF(__pyx_t_3);
                  }
                  __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2459, __pyx_L22_error)
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

                }
                __pyx_L31:;
+2460:                         return result
              {
                PyObject *__pyx_temp;
                {
                  __pyx_temp = __pyx_r;
                  __Pyx_INCREF(__pyx_v_result);
                  __pyx_r = __pyx_v_result;
                }
                __Pyx_XDECREF(__pyx_temp);
              }
              goto __pyx_L26_try_return;
 2461:                     else:
+2462:                         return data
            /*else*/ {
              {
                PyObject *__pyx_temp;
                {
                  __pyx_temp = __pyx_r;
                  __Pyx_INCREF(__pyx_v_data);
                  __pyx_r = __pyx_v_data;
                }
                __Pyx_XDECREF(__pyx_temp);
              }
              goto __pyx_L26_try_return;
            }
+2463:                 except AttributeError:
          __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_AttributeError))));
          if (__pyx_t_9) {
            __Pyx_ErrRestore(0,0,0);
+2464:                     return data # data -as is-
            {
              PyObject *__pyx_temp;
              {
                __pyx_temp = __pyx_r;
                __Pyx_INCREF(__pyx_v_data);
                __pyx_r = __pyx_v_data;
              }
              __Pyx_XDECREF(__pyx_temp);
            }
            goto __pyx_L25_except_return;
          }
          goto __pyx_L24_except_error;
+2465:             elif is_dc(arg_type):
      __pyx_t_6 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_arg_type); if (unlikely(__pyx_t_6 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2465, __pyx_L1_error)
      if (__pyx_t_6) {
/* … */
      }
+2466:                 if isinstance(data, list):
        __pyx_t_6 = PyList_Check(__pyx_v_data); 
        if (__pyx_t_6) {
/* … */
        }
+2467:                     result = []
          __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2467, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_v_result = ((PyObject*)__pyx_t_1);
          __pyx_t_1 = 0;
+2468:                     for d in data:
          if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
            __pyx_t_1 = __pyx_v_data; __Pyx_INCREF(__pyx_t_1);
            __pyx_t_8 = 0;
            __pyx_t_15 = NULL;
          } else {
            __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2468, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_15 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2468, __pyx_L1_error)
          }
          for (;;) {
            if (likely(!__pyx_t_15)) {
              if (likely(PyList_CheckExact(__pyx_t_1))) {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2468, __pyx_L1_error)
                  #endif
                  if (__pyx_t_8 >= __pyx_temp) break;
                }
                __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
                ++__pyx_t_8;
              } else {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2468, __pyx_L1_error)
                  #endif
                  if (__pyx_t_8 >= __pyx_temp) break;
                }
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8));
                #else
                __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8);
                #endif
                ++__pyx_t_8;
              }
              if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2468, __pyx_L1_error)
            } else {
              __pyx_t_3 = __pyx_t_15(__pyx_t_1);
              if (unlikely(!__pyx_t_3)) {
                PyObject* exc_type = PyErr_Occurred();
                if (exc_type) {
                  if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 2468, __pyx_L1_error)
                  PyErr_Clear();
                }
                break;
              }
            }
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_XDECREF_SET(__pyx_v_d, __pyx_t_3);
            __pyx_t_3 = 0;
/* … */
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 2469:                         # is already a dataclass:
+2470:                         if is_dc(d):
            __pyx_t_6 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_d); if (unlikely(__pyx_t_6 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2470, __pyx_L1_error)
            if (__pyx_t_6) {
/* … */
              goto __pyx_L40;
            }
+2471:                             result.append(d)
              __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_d); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2471, __pyx_L1_error)

+2472:                         elif isinstance(d, list):
            __pyx_t_6 = PyList_Check(__pyx_v_d); 
            if (__pyx_t_6) {
/* … */
              goto __pyx_L40;
            }
+2473:                             result.append(arg_type(*d))
              __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_d); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2473, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_3);
              __pyx_t_10 = __Pyx_PyObject_Call(__pyx_v_arg_type, __pyx_t_3, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2473, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_10);
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_10); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2473, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

+2474:                         elif isinstance(d, dict):
            __pyx_t_6 = PyDict_Check(__pyx_v_d); 
            if (__pyx_t_6) {
/* … */
              goto __pyx_L40;
            }
+2475:                             result.append(arg_type(**d))
              if (unlikely(__pyx_v_d == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
                __PYX_ERR(0, 2475, __pyx_L1_error)
              }
              if (likely(PyDict_CheckExact(__pyx_v_d))) {
                __pyx_t_10 = PyDict_Copy(__pyx_v_d); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2475, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_10);
              } else {
                __pyx_t_10 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_d); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2475, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_10);
              }
              __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_arg_type, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2475, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_3);
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2475, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

 2476:                         else:
+2477:                             result.append(arg_type(d))
            /*else*/ {
              __pyx_t_10 = NULL;
              __Pyx_INCREF(__pyx_v_arg_type);
              __pyx_t_2 = __pyx_v_arg_type; 
              __pyx_t_4 = 1;
              #if CYTHON_UNPACK_METHODS
              if (unlikely(PyMethod_Check(__pyx_t_2))) {
                __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
                assert(__pyx_t_10);
                PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
                __Pyx_INCREF(__pyx_t_10);
                __Pyx_INCREF(__pyx__function);
                __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
                __pyx_t_4 = 0;
              }
              #endif
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_d};
                __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
                if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2477, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_3);
              }
              __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_3); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2477, __pyx_L1_error)
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            }
            __pyx_L40:;
+2478:                 return result
        if (unlikely(!__pyx_v_result)) { __Pyx_RaiseUnboundLocalError("result"); __PYX_ERR(0, 2478, __pyx_L1_error) }
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __Pyx_INCREF(__pyx_v_result);
            __pyx_r = __pyx_v_result;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        goto __pyx_L0;
 2479:             else:
+2480:                 result = []
      /*else*/ {
        __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2480, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_v_result = ((PyObject*)__pyx_t_1);
        __pyx_t_1 = 0;
+2481:                 if is_iterable(data):
        __pyx_t_3 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_is_iterable); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2481, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_2))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
          __pyx_t_4 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_data};
          __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2481, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 2481, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (__pyx_t_6) {
/* … */
        }
+2482:                     for item in data:
          if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
            __pyx_t_1 = __pyx_v_data; __Pyx_INCREF(__pyx_t_1);
            __pyx_t_8 = 0;
            __pyx_t_15 = NULL;
          } else {
            __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2482, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_15 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2482, __pyx_L1_error)
          }
          for (;;) {
            if (likely(!__pyx_t_15)) {
              if (likely(PyList_CheckExact(__pyx_t_1))) {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2482, __pyx_L1_error)
                  #endif
                  if (__pyx_t_8 >= __pyx_temp) break;
                }
                __pyx_t_2 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
                ++__pyx_t_8;
              } else {
                {
                  Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
                  #if !CYTHON_ASSUME_SAFE_SIZE
                  if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2482, __pyx_L1_error)
                  #endif
                  if (__pyx_t_8 >= __pyx_temp) break;
                }
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                __pyx_t_2 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8));
                #else
                __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_8);
                #endif
                ++__pyx_t_8;
              }
              if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2482, __pyx_L1_error)
            } else {
              __pyx_t_2 = __pyx_t_15(__pyx_t_1);
              if (unlikely(!__pyx_t_2)) {
                PyObject* exc_type = PyErr_Occurred();
                if (exc_type) {
                  if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 2482, __pyx_L1_error)
                  PyErr_Clear();
                }
                break;
              }
            }
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_2);
            __pyx_t_2 = 0;
/* … */
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 2483:                         # escalar value:
+2484:                         converted_item = parse_type(field, arg_type, item, encoder)
            __pyx_t_17.__pyx_n = 1;
            __pyx_t_17.encoder = __pyx_v_encoder;
            __pyx_t_2 = __pyx_f_9datamodel_10converters_parse_type(__pyx_v_field, __pyx_v_arg_type, __pyx_v_item, 0, &__pyx_t_17); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2484, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_XDECREF_SET(__pyx_v_converted_item, __pyx_t_2);
            __pyx_t_2 = 0;
+2485:                         result.append(converted_item)
            __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_result, __pyx_v_converted_item); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2485, __pyx_L1_error)

+2486:                     return result
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __Pyx_INCREF(__pyx_v_result);
              __pyx_r = __pyx_v_result;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          goto __pyx_L0;
+2487:                 return data
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __Pyx_INCREF(__pyx_v_data);
            __pyx_r = __pyx_v_data;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        goto __pyx_L0;
      }
+2488:         elif type_name is None or type_name in ('Optional', 'Union'):
    __pyx_t_5 = (__pyx_v_type_name == ((PyObject*)Py_None));
    if (!__pyx_t_5) {

    } else {

      __pyx_t_6 = __pyx_t_5;

      goto __pyx_L46_bool_binop_done;
    }
    __Pyx_INCREF(__pyx_v_type_name);
    __pyx_t_18 = __pyx_v_type_name;
    __pyx_t_19 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_Optional, Py_EQ); if (unlikely((__pyx_t_19 < 0))) __PYX_ERR(0, 2488, __pyx_L1_error)
    if (!__pyx_t_19) {

    } else {

      __pyx_t_5 = __pyx_t_19;

      goto __pyx_L48_bool_binop_done;
    }
    __pyx_t_19 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_Union, Py_EQ); if (unlikely((__pyx_t_19 < 0))) __PYX_ERR(0, 2488, __pyx_L1_error)

    __pyx_t_5 = __pyx_t_19;

    __pyx_L48_bool_binop_done:;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
    __pyx_t_19 = __pyx_t_5;



    __pyx_t_6 = __pyx_t_19;

    __pyx_L46_bool_binop_done:;
    if (__pyx_t_6) {
/* … */
    }
    __pyx_L8:;
+2489:             args = get_args(T)
      __pyx_t_2 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_get_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2489, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
        assert(__pyx_t_2);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_T};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2489, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(0, 2489, __pyx_L1_error)
      __Pyx_DECREF_SET(__pyx_v_args, ((PyObject*)__pyx_t_1));
      __pyx_t_1 = 0;
 2490:             # Handling Optional types
+2491:             if is_union(origin) and type(None) in args:
      __pyx_t_19 = __pyx_f_9datamodel_10converters_is_union(__pyx_v_origin); if (unlikely(__pyx_t_19 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2491, __pyx_L1_error)
      if (__pyx_t_19) {

      } else {

        __pyx_t_6 = __pyx_t_19;

        goto __pyx_L51_bool_binop_done;
      }
      __pyx_t_19 = (__Pyx_PySequence_ContainsTF(((PyObject *)Py_TYPE(Py_None)), __pyx_v_args, Py_EQ)); if (unlikely((__pyx_t_19 < 0))) __PYX_ERR(0, 2491, __pyx_L1_error)

      __pyx_t_6 = __pyx_t_19;

      __pyx_L51_bool_binop_done:;
      if (__pyx_t_6) {
/* … */
      }
+2492:                 if data is None:
        __pyx_t_6 = (__pyx_v_data == Py_None);
        if (__pyx_t_6) {
/* … */
        }
+2493:                     return None
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __pyx_r = Py_None; __Pyx_INCREF(Py_None);
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          goto __pyx_L0;
 2494:                 # Determine the non-None type.
+2495:                 non_none_arg = args[0] if args[1] is type(None) else args[1]
        if (unlikely(__pyx_v_args == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
          __PYX_ERR(0, 2495, __pyx_L1_error)
        }
        __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 1, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2495, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_6 = (__pyx_t_3 == ((PyObject *)Py_TYPE(Py_None)));
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (__pyx_t_6) {
          if (unlikely(__pyx_v_args == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
            __PYX_ERR(0, 2495, __pyx_L1_error)
          }
          __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2495, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_1 = __pyx_t_3;
          __pyx_t_3 = 0;
        } else {
          if (unlikely(__pyx_v_args == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
            __PYX_ERR(0, 2495, __pyx_L1_error)
          }
          __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 1, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2495, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_1 = __pyx_t_3;
          __pyx_t_3 = 0;
        }

        __pyx_v_non_none_arg = __pyx_t_1;
        __pyx_t_1 = 0;
+2496:                 if non_none_arg == list:
        __pyx_t_6 = __Pyx_PyObject_RichCompareBool(__pyx_v_non_none_arg, ((PyObject *)(&PyList_Type)), Py_EQ); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 2496, __pyx_L1_error)
        if (__pyx_t_6) {
/* … */
        }
+2497:                     field.args = args
          if (__Pyx_PyObject_SetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_args_2, __pyx_v_args) < (0)) __PYX_ERR(0, 2497, __pyx_L1_error)
+2498:                     field.origin = get_origin(non_none_arg)
          __pyx_t_3 = NULL;
          __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_get_origin); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2498, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_4 = 1;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_2))) {
            __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
            assert(__pyx_t_3);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
            __pyx_t_4 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_non_none_arg};
            __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2498, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
          }
          if (__Pyx_PyObject_SetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_origin_2, __pyx_t_1) < (0)) __PYX_ERR(0, 2498, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2499:                     if isinstance(data, (list, str, dict)):
          __pyx_t_19 = PyList_Check(__pyx_v_data); 
          if (!__pyx_t_19) {

          } else {

            __pyx_t_6 = __pyx_t_19;

            goto __pyx_L56_bool_binop_done;
          }
          __pyx_t_19 = PyUnicode_Check(__pyx_v_data); 
          if (!__pyx_t_19) {

          } else {

            __pyx_t_6 = __pyx_t_19;

            goto __pyx_L56_bool_binop_done;
          }
          __pyx_t_19 = PyDict_Check(__pyx_v_data); 

          __pyx_t_6 = __pyx_t_19;

          __pyx_L56_bool_binop_done:;
          if (likely(__pyx_t_6)) {
/* … */
          }
+2500:                         return _parse_builtin_type(field, non_none_arg, data, encoder)
            __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_builtin_type(__pyx_v_field, __pyx_v_non_none_arg, __pyx_v_data, __pyx_v_encoder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2500, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            {
              PyObject *__pyx_temp;
              {
                __pyx_temp = __pyx_r;
                __pyx_r = __pyx_t_1;
              }
              __Pyx_XDECREF(__pyx_temp);
            }
            __pyx_t_1 = 0;
            goto __pyx_L0;
 2501:                     else:
+2502:                         raise ValueError(f"Unsupported type for List in Optional: {type(data)}")
          /*else*/ {
            __pyx_t_2 = NULL;
            __pyx_t_3 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_data)), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2502, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_10 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Unsupported_type_for_List_in_Opt, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2502, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_t_4 = 1;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_10};
              __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2502, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
            }
            __Pyx_Raise(__pyx_t_1, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __PYX_ERR(0, 2502, __pyx_L1_error)
          }
 2503:                 # If the non-None type is exactly dict, return the dict as is.
+2504:                 if non_none_arg is dict:
        __pyx_t_6 = (__pyx_v_non_none_arg == ((PyObject *)(&PyDict_Type)));
        if (__pyx_t_6) {
/* … */
        }
+2505:                     return data
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __Pyx_INCREF(__pyx_v_data);
              __pyx_r = __pyx_v_data;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          goto __pyx_L0;
 2506:                 # Otherwise, recursively parse using the non-None type.
+2507:                 field.args = args
        if (__Pyx_PyObject_SetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_args_2, __pyx_v_args) < (0)) __PYX_ERR(0, 2507, __pyx_L1_error)
+2508:                 field.origin = get_origin(non_none_arg)
        __pyx_t_10 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_get_origin); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2508, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_2))) {
          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
          assert(__pyx_t_10);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
          __pyx_t_4 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_non_none_arg};
          __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2508, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
        if (__Pyx_PyObject_SetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_origin_2, __pyx_t_1) < (0)) __PYX_ERR(0, 2508, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2509:                 return parse_type(field, non_none_arg, data, encoder)
        __pyx_t_17.__pyx_n = 1;
        __pyx_t_17.encoder = __pyx_v_encoder;
        __pyx_t_1 = __pyx_f_9datamodel_10converters_parse_type(__pyx_v_field, __pyx_v_non_none_arg, __pyx_v_data, 0, &__pyx_t_17); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2509, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        {
          PyObject *__pyx_temp;
          {
            __pyx_temp = __pyx_r;
            __pyx_r = __pyx_t_1;
          }
          __Pyx_XDECREF(__pyx_temp);
        }
        __pyx_t_1 = 0;
        goto __pyx_L0;
+2510:             try:
      {
        /*try:*/ {
/* … */
        }
        __pyx_L60_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0;
        __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
        __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
/* … */
        __pyx_L62_except_error:;
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
        goto __pyx_L1_error;
        __pyx_L64_try_return:;
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
        goto __pyx_L0;
        __pyx_L61_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_13, __pyx_t_12);
      }
+2511:                 t = args[0]
          if (unlikely(__pyx_v_args == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
            __PYX_ERR(0, 2511, __pyx_L60_error)
          }
          __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2511, __pyx_L60_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_v_t = __pyx_t_1;
          __pyx_t_1 = 0;
+2512:                 if is_dc(t):
          __pyx_t_6 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_t); if (unlikely(__pyx_t_6 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2512, __pyx_L60_error)
          if (__pyx_t_6) {
/* … */
            goto __pyx_L66;
          }
+2513:                     if isinstance(data, dict):
            __pyx_t_6 = PyDict_Check(__pyx_v_data); 
            if (__pyx_t_6) {
/* … */
              goto __pyx_L67;
            }
+2514:                         data = t(**data)
              if (unlikely(__pyx_v_data == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
                __PYX_ERR(0, 2514, __pyx_L60_error)
              }
              if (likely(PyDict_CheckExact(__pyx_v_data))) {
                __pyx_t_1 = PyDict_Copy(__pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2514, __pyx_L60_error)
                __Pyx_GOTREF(__pyx_t_1);
              } else {
                __pyx_t_1 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2514, __pyx_L60_error)
                __Pyx_GOTREF(__pyx_t_1);
              }
              __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_t, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2514, __pyx_L60_error)
              __Pyx_GOTREF(__pyx_t_2);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_2);
              __pyx_t_2 = 0;
+2515:                     elif isinstance(data, (list, tuple)):
            __pyx_t_19 = PyList_Check(__pyx_v_data); 
            if (!__pyx_t_19) {

            } else {

              __pyx_t_6 = __pyx_t_19;

              goto __pyx_L68_bool_binop_done;
            }
            __pyx_t_19 = PyTuple_Check(__pyx_v_data); 

            __pyx_t_6 = __pyx_t_19;

            __pyx_L68_bool_binop_done:;
            if (__pyx_t_6) {
/* … */
              goto __pyx_L67;
            }
+2516:                         data = t(*data)
              __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2516, __pyx_L60_error)
              __Pyx_GOTREF(__pyx_t_2);
              __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_t, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2516, __pyx_L60_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
              __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_1);
              __pyx_t_1 = 0;
 2517:                     else:
 2518:                         ## is already a dataclass, returning
+2519:                         return data
            /*else*/ {
              {
                PyObject *__pyx_temp;
                {
                  __pyx_temp = __pyx_r;
                  __Pyx_INCREF(__pyx_v_data);
                  __pyx_r = __pyx_v_data;
                }
                __Pyx_XDECREF(__pyx_temp);
              }
              goto __pyx_L64_try_return;
            }
            __pyx_L67:;
+2520:                 elif callable(t):
          __pyx_t_6 = __Pyx_PyCallable_Check(__pyx_v_t); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 2520, __pyx_L60_error)
          if (__pyx_t_6) {
/* … */
          }
          __pyx_L66:;
+2521:                     if t.__module__ == 'typing': # nested typing
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2521, __pyx_L60_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_6 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_typing, Py_EQ); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 2521, __pyx_L60_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            if (__pyx_t_6) {
/* … */
            }
 2522:                         # there is also a nested typing:
+2523:                         if t._name == 'List' and isinstance(data, list):
              __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_mstate_global->__pyx_n_u_name_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2523, __pyx_L60_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_19 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_List, Py_EQ); if (unlikely((__pyx_t_19 < 0))) __PYX_ERR(0, 2523, __pyx_L60_error)
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              if (__pyx_t_19) {

              } else {

                __pyx_t_6 = __pyx_t_19;

                goto __pyx_L72_bool_binop_done;
              }
              __pyx_t_19 = PyList_Check(__pyx_v_data); 

              __pyx_t_6 = __pyx_t_19;

              __pyx_L72_bool_binop_done:;
              if (__pyx_t_6) {
/* … */
              }
+2524:                             arg = t.__args__[0]
                __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_mstate_global->__pyx_n_u_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2524, __pyx_L60_error)
                __Pyx_GOTREF(__pyx_t_1);
                __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2524, __pyx_L60_error)
                __Pyx_GOTREF(__pyx_t_2);
                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                __pyx_v_arg = __pyx_t_2;
                __pyx_t_2 = 0;
+2525:                             if is_dc(arg):
                __pyx_t_6 = __pyx_f_9datamodel_10converters_is_dc(__pyx_v_arg); if (unlikely(__pyx_t_6 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2525, __pyx_L60_error)
                if (__pyx_t_6) {
/* … */
                }
+2526:                                 result = []
                  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2526, __pyx_L60_error)
                  __Pyx_GOTREF(__pyx_t_2);
                  __pyx_v_result = ((PyObject*)__pyx_t_2);
                  __pyx_t_2 = 0;
+2527:                                 for x in data:
                  if (likely(PyList_CheckExact(__pyx_v_data)) || PyTuple_CheckExact(__pyx_v_data)) {
                    __pyx_t_2 = __pyx_v_data; __Pyx_INCREF(__pyx_t_2);
                    __pyx_t_8 = 0;
                    __pyx_t_15 = NULL;
                  } else {
                    __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_data); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2527, __pyx_L60_error)
                    __Pyx_GOTREF(__pyx_t_2);
                    __pyx_t_15 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2527, __pyx_L60_error)
                  }
                  for (;;) {
                    if (likely(!__pyx_t_15)) {
                      if (likely(PyList_CheckExact(__pyx_t_2))) {
                        {
                          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
                          #if !CYTHON_ASSUME_SAFE_SIZE
                          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2527, __pyx_L60_error)
                          #endif
                          if (__pyx_t_8 >= __pyx_temp) break;
                        }
                        __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_2, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference);
                        ++__pyx_t_8;
                      } else {
                        {
                          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
                          #if !CYTHON_ASSUME_SAFE_SIZE
                          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2527, __pyx_L60_error)
                          #endif
                          if (__pyx_t_8 >= __pyx_temp) break;
                        }
                        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8));
                        #else
                        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_8);
                        #endif
                        ++__pyx_t_8;
                      }
                      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2527, __pyx_L60_error)
                    } else {
                      __pyx_t_1 = __pyx_t_15(__pyx_t_2);
                      if (unlikely(!__pyx_t_1)) {
                        PyObject* exc_type = PyErr_Occurred();
                        if (exc_type) {
                          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 2527, __pyx_L60_error)
                          PyErr_Clear();
                        }
                        break;
                      }
                    }
                    __Pyx_GOTREF(__pyx_t_1);
                    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_1);
                    __pyx_t_1 = 0;
/* … */
                  }
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2528:                                     if isinstance(x, dict):
                    __pyx_t_6 = PyDict_Check(__pyx_v_x); 
                    if (__pyx_t_6) {
/* … */
                      goto __pyx_L77;
                    }
+2529:                                         result.append(arg(**x))
                      if (unlikely(__pyx_v_x == Py_None)) {
                        PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
                        __PYX_ERR(0, 2529, __pyx_L60_error)
                      }
                      if (likely(PyDict_CheckExact(__pyx_v_x))) {
                        __pyx_t_1 = PyDict_Copy(__pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2529, __pyx_L60_error)
                        __Pyx_GOTREF(__pyx_t_1);
                      } else {
                        __pyx_t_1 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2529, __pyx_L60_error)
                        __Pyx_GOTREF(__pyx_t_1);
                      }
                      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_v_arg, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2529, __pyx_L60_error)
                      __Pyx_GOTREF(__pyx_t_10);
                      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                      __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_10); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2529, __pyx_L60_error)
                      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

 2530:                                     else:
+2531:                                         result.append(arg(*x))
                    /*else*/ {
                      __pyx_t_10 = __Pyx_PySequence_Tuple(__pyx_v_x); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2531, __pyx_L60_error)
                      __Pyx_GOTREF(__pyx_t_10);
                      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_arg, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2531, __pyx_L60_error)
                      __Pyx_GOTREF(__pyx_t_1);
                      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
                      __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 2531, __pyx_L60_error)
                      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

                    }
                    __pyx_L77:;
+2532:                                 return result
                  {
                    PyObject *__pyx_temp;
                    {
                      __pyx_temp = __pyx_r;
                      __Pyx_INCREF(__pyx_v_result);
                      __pyx_r = __pyx_v_result;
                    }
                    __Pyx_XDECREF(__pyx_temp);
                  }
                  goto __pyx_L64_try_return;
+2533:                         return data
              {
                PyObject *__pyx_temp;
                {
                  __pyx_temp = __pyx_r;
                  __Pyx_INCREF(__pyx_v_data);
                  __pyx_r = __pyx_v_data;
                }
                __Pyx_XDECREF(__pyx_temp);
              }
              goto __pyx_L64_try_return;
 2534:                     else:
+2535:                         try:
            /*else*/ {
              {
                /*try:*/ {
/* … */
                }
                __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
                __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
                __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
                goto __pyx_L84_try_end;
                __pyx_L79_error:;
                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
                __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                __Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0;
                __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
                __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
/* … */
                __pyx_L81_except_error:;
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_XGIVEREF(__pyx_t_21);
                __Pyx_XGIVEREF(__pyx_t_22);
                __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
                goto __pyx_L60_error;
                __pyx_L83_try_return:;
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_XGIVEREF(__pyx_t_21);
                __Pyx_XGIVEREF(__pyx_t_22);
                __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
                goto __pyx_L64_try_return;
                __pyx_L80_exception_handled:;
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_XGIVEREF(__pyx_t_21);
                __Pyx_XGIVEREF(__pyx_t_22);
                __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
                __pyx_L84_try_end:;
              }
            }
+2536:                             if t == str:
                  __pyx_t_6 = __Pyx_PyObject_RichCompareBool(__pyx_v_t, ((PyObject *)(&PyUnicode_Type)), Py_EQ); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 2536, __pyx_L79_error)
                  if (__pyx_t_6) {
/* … */
                  }
+2537:                                 return data
                    {
                      PyObject *__pyx_temp;
                      {
                        __pyx_temp = __pyx_r;
                        __Pyx_INCREF(__pyx_v_data);
                        __pyx_r = __pyx_v_data;
                      }
                      __Pyx_XDECREF(__pyx_temp);
                    }
                    goto __pyx_L83_try_return;
+2538:                             fn = encoders[t]
                  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_encoders); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2538, __pyx_L79_error)
                  __Pyx_GOTREF(__pyx_t_2);
                  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2538, __pyx_L79_error)
                  __Pyx_GOTREF(__pyx_t_1);
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
                  __pyx_v_fn = __pyx_t_1;
                  __pyx_t_1 = 0;
+2539:                             try:
                  {
                    /*try:*/ {
/* … */
                    }
                    __Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
                    __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
                    __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
                    goto __pyx_L91_try_end;
                    __pyx_L86_error:;
                    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                    __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
                    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
                    __pyx_L88_except_error:;
                    __Pyx_XGIVEREF(__pyx_t_23);
                    __Pyx_XGIVEREF(__pyx_t_24);
                    __Pyx_XGIVEREF(__pyx_t_25);
                    __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25);
                    goto __pyx_L79_error;
                    __pyx_L87_exception_handled:;
                    __Pyx_XGIVEREF(__pyx_t_23);
                    __Pyx_XGIVEREF(__pyx_t_24);
                    __Pyx_XGIVEREF(__pyx_t_25);
                    __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25);
                    __pyx_L91_try_end:;
                  }
+2540:                                 if data is not None:
                      __pyx_t_6 = (__pyx_v_data != Py_None);
                      if (__pyx_t_6) {
/* … */
                      }
+2541:                                     data = fn(data)
                        __pyx_t_2 = NULL;
                        __Pyx_INCREF(__pyx_v_fn);
                        __pyx_t_10 = __pyx_v_fn; 
                        __pyx_t_4 = 1;
                        #if CYTHON_UNPACK_METHODS
                        if (unlikely(PyMethod_Check(__pyx_t_10))) {
                          __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_10);
                          assert(__pyx_t_2);
                          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
                          __Pyx_INCREF(__pyx_t_2);
                          __Pyx_INCREF(__pyx__function);
                          __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
                          __pyx_t_4 = 0;
                        }
                        #endif
                        {
                          PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_data};
                          __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
                          if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2541, __pyx_L86_error)
                          __Pyx_GOTREF(__pyx_t_1);
                        }
                        __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_1);
                        __pyx_t_1 = 0;
+2542:                             except TypeError as ex:
                    __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
                    if (__pyx_t_9) {
                      __Pyx_AddTraceback("datamodel.converters.parse_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
                      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_10, &__pyx_t_2) < 0) __PYX_ERR(0, 2542, __pyx_L88_except_error)
                      __Pyx_XGOTREF(__pyx_t_1);
                      __Pyx_XGOTREF(__pyx_t_10);
                      __Pyx_XGOTREF(__pyx_t_2);
                      __Pyx_INCREF(__pyx_t_10);
                      __pyx_v_ex = __pyx_t_10;
                      /*try:*/ {
                      }
                      /*finally:*/ {
                        /*normal exit:*/{
                          __Pyx_DECREF(__pyx_v_ex); __pyx_v_ex = 0;
                          goto __pyx_L99;
                        }
                        __pyx_L99:;
                      }
                      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                      goto __pyx_L87_exception_handled;
                    }
 2543:                                 pass
+2544:                             except (ValueError, RuntimeError) as exc:
                    __pyx_t_9 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), ((PyObject *)(((PyTypeObject*)PyExc_RuntimeError))));
                    if (__pyx_t_9) {
                      __Pyx_AddTraceback("datamodel.converters.parse_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
                      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_10, &__pyx_t_1) < 0) __PYX_ERR(0, 2544, __pyx_L88_except_error)
                      __Pyx_XGOTREF(__pyx_t_2);
                      __Pyx_XGOTREF(__pyx_t_10);
                      __Pyx_XGOTREF(__pyx_t_1);
                      __Pyx_INCREF(__pyx_t_10);
                      __pyx_v_exc = __pyx_t_10;
                      /*try:*/ {
/* … */
                      /*finally:*/ {
                        __pyx_L105_error:;
                        /*exception exit:*/{
                          __Pyx_PyThreadState_declare
                          __Pyx_PyThreadState_assign
                          __pyx_t_32 = 0; __pyx_t_33 = 0; __pyx_t_34 = 0; __pyx_t_35 = 0; __pyx_t_36 = 0; __pyx_t_37 = 0;
                          __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
                          __Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0;
                          __Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
                          __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
                          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
                          __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
                           __Pyx_ExceptionSwap(&__pyx_t_35, &__pyx_t_36, &__pyx_t_37);
                          if ( unlikely(__Pyx_GetException(&__pyx_t_32, &__pyx_t_33, &__pyx_t_34) < 0)) __Pyx_ErrFetch(&__pyx_t_32, &__pyx_t_33, &__pyx_t_34);
                          __Pyx_XGOTREF(__pyx_t_32);
                          __Pyx_XGOTREF(__pyx_t_33);
                          __Pyx_XGOTREF(__pyx_t_34);
                          __Pyx_XGOTREF(__pyx_t_35);
                          __Pyx_XGOTREF(__pyx_t_36);
                          __Pyx_XGOTREF(__pyx_t_37);
                          __pyx_t_9 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_31 = __pyx_filename;
                          {
                            __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                          }
                          __Pyx_XGIVEREF(__pyx_t_35);
                          __Pyx_XGIVEREF(__pyx_t_36);
                          __Pyx_XGIVEREF(__pyx_t_37);
                          __Pyx_ExceptionReset(__pyx_t_35, __pyx_t_36, __pyx_t_37);
                          __Pyx_XGIVEREF(__pyx_t_32);
                          __Pyx_XGIVEREF(__pyx_t_33);
                          __Pyx_XGIVEREF(__pyx_t_34);
                          __Pyx_ErrRestore(__pyx_t_32, __pyx_t_33, __pyx_t_34);
                          __pyx_t_32 = 0; __pyx_t_33 = 0; __pyx_t_34 = 0; __pyx_t_35 = 0; __pyx_t_36 = 0; __pyx_t_37 = 0;
                          __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_31;
                          goto __pyx_L88_except_error;
                        }
                      }
                    }
                    goto __pyx_L88_except_error;
+2545:                                 raise ValueError(
                        __pyx_t_26 = NULL;
+2546:                                     f"Model: Error parsing {T}, {exc}"
                        __pyx_t_27 = __Pyx_PyObject_FormatSimple(__pyx_v_T, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 2546, __pyx_L105_error)
                        __Pyx_GOTREF(__pyx_t_27);
                        __pyx_t_28 = __Pyx_PyObject_FormatSimple(__pyx_v_exc, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 2546, __pyx_L105_error)
                        __Pyx_GOTREF(__pyx_t_28);
                        __pyx_t_29[0] = __pyx_mstate_global->__pyx_kp_u_Model_Error_parsing;
                        __pyx_t_29[1] = __pyx_t_27;
                        __pyx_t_29[2] = __pyx_mstate_global->__pyx_kp_u__7;
                        __pyx_t_29[3] = __pyx_t_28;
                        __pyx_t_8 = 23;
                        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                        __pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_29[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_29[3]);
                        #endif
                        __pyx_t_9 = 0;
                        #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
                        __pyx_t_9 |= __Pyx_PyUnicode_KIND_04(__pyx_t_29[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_29[3]);
                        #endif
                        __pyx_t_30 = __Pyx_PyUnicode_Join(__pyx_t_29, 4, __pyx_t_8, __pyx_t_9);
                        if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 2546, __pyx_L105_error)
                        __Pyx_GOTREF(__pyx_t_30);
                        __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
                        __Pyx_DECREF(__pyx_t_28); __pyx_t_28 = 0;
                        __pyx_t_4 = 1;
                        {
                          PyObject *__pyx_callargs[2] = {__pyx_t_26, __pyx_t_30};
                          __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
                          __Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0;
                          __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;
                          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2545, __pyx_L105_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(0, 2545, __pyx_L105_error)
                      }
 2547:                                 )
+2548:                         except KeyError:
                __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
                if (__pyx_t_11) {
                  __Pyx_ErrRestore(0,0,0);
                  goto __pyx_L80_exception_handled;
                }
                goto __pyx_L81_except_error;
 2549:                             pass
+2550:                 return data
          {
            PyObject *__pyx_temp;
            {
              __pyx_temp = __pyx_r;
              __Pyx_INCREF(__pyx_v_data);
              __pyx_r = __pyx_v_data;
            }
            __Pyx_XDECREF(__pyx_temp);
          }
          goto __pyx_L64_try_return;
+2551:             except KeyError:
        __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
        if (__pyx_t_11) {
          __Pyx_ErrRestore(0,0,0);
          goto __pyx_L61_exception_handled;
        }
        goto __pyx_L62_except_error;
 2552:                 pass
+2553:     elif origin is dict and isinstance(data, dict):
  __pyx_t_19 = (__pyx_v_origin == ((PyObject *)(&PyDict_Type)));
  if (__pyx_t_19) {

  } else {

    __pyx_t_6 = __pyx_t_19;

    goto __pyx_L115_bool_binop_done;
  }
  __pyx_t_19 = PyDict_Check(__pyx_v_data); 

  __pyx_t_6 = __pyx_t_19;

  __pyx_L115_bool_binop_done:;
  if (__pyx_t_6) {
/* … */
  }
+2554:         return _parse_dict_type(field, T, data, encoder, args)
    __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_dict_type(__pyx_v_field, __pyx_v_T, __pyx_v_data, __pyx_v_encoder, __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2554, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_1;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_1 = 0;
    goto __pyx_L0;
+2555:     elif origin is list:
  __pyx_t_6 = (__pyx_v_origin == ((PyObject *)(&PyList_Type)));
  if (__pyx_t_6) {
/* … */
  }
+2556:         return _parse_list_type(field, T, data, encoder, args)
    __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_list_type(__pyx_v_field, __pyx_v_T, __pyx_v_data, __pyx_v_encoder, __pyx_v_args, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_1;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_1 = 0;
    goto __pyx_L0;
+2557:     elif origin is not None:
  __pyx_t_6 = (__pyx_v_origin != Py_None);
  if (__pyx_t_6) {
/* … */
  }
 2558:         # Other typing constructs can be handled here
+2559:         return data
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __Pyx_INCREF(__pyx_v_data);
        __pyx_r = __pyx_v_data;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    goto __pyx_L0;
 2560:     else:
+2561:         return _parse_builtin_type(field, T, data, encoder)
  /*else*/ {
    __pyx_t_1 = __pyx_f_9datamodel_10converters__parse_builtin_type(__pyx_v_field, __pyx_v_T, __pyx_v_data, __pyx_v_encoder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2561, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    {
      PyObject *__pyx_temp;
      {
        __pyx_temp = __pyx_r;
        __pyx_r = __pyx_t_1;
      }
      __Pyx_XDECREF(__pyx_temp);
    }
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }
  __pyx_L5:;