fix some cython code

This commit is contained in:
Oleksandr Bezdieniezhnykh
2026-03-29 21:18:18 +03:00
parent ad5530b9ef
commit 6269a7485c
32 changed files with 17108 additions and 2728 deletions
+341 -459
View File
@@ -1543,7 +1543,7 @@ struct __pyx_obj_13constants_inf_AnnotationClass {
struct __pyx_obj_22ai_availability_status_AIAvailabilityStatus {
PyObject_HEAD
struct __pyx_vtabstruct_22ai_availability_status_AIAvailabilityStatus *__pyx_vtab;
enum __pyx_t_22ai_availability_status_AIAvailabilityEnum status;
int status;
PyObject *error_message;
PyObject *_lock;
};
@@ -1553,7 +1553,7 @@ struct __pyx_obj_22ai_availability_status_AIAvailabilityStatus {
struct __pyx_vtabstruct_22ai_availability_status_AIAvailabilityStatus {
PyObject *(*serialize)(struct __pyx_obj_22ai_availability_status_AIAvailabilityStatus *);
PyObject *(*set_status)(struct __pyx_obj_22ai_availability_status_AIAvailabilityStatus *, enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, struct __pyx_opt_args_22ai_availability_status_20AIAvailabilityStatus_set_status *__pyx_optional_args);
PyObject *(*set_status)(struct __pyx_obj_22ai_availability_status_AIAvailabilityStatus *, int, struct __pyx_opt_args_22ai_availability_status_20AIAvailabilityStatus_set_status *__pyx_optional_args);
};
static struct __pyx_vtabstruct_22ai_availability_status_AIAvailabilityStatus *__pyx_vtabptr_22ai_availability_status_AIAvailabilityStatus;
/* #### Code section: utility_code_proto ### */
@@ -2258,10 +2258,13 @@ static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, P
#endif
/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_enum____pyx_t_22ai_availability_status_AIAvailabilityEnum(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum value);
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int(int value);
/* CIntFromPy.proto */
static CYTHON_INLINE enum __pyx_t_22ai_availability_status_AIAvailabilityEnum __Pyx_PyLong_As_enum____pyx_t_22ai_availability_status_AIAvailabilityEnum(PyObject *);
static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *);
/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_enum____pyx_t_22ai_availability_status_AIAvailabilityEnum(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum value);
/* CIntFromPy.proto */
static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *);
@@ -2286,9 +2289,6 @@ typedef const char *__Pyx_TypeName;
#define __Pyx_DECREF_TypeName(obj)
#endif
/* CIntFromPy.proto */
static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *);
/* FastTypeChecks.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
@@ -2373,7 +2373,7 @@ static int __Pyx_State_RemoveModule(void*);
#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."
static PyObject *__pyx_f_22ai_availability_status_20AIAvailabilityStatus_serialize(struct __pyx_obj_22ai_availability_status_AIAvailabilityStatus *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_22ai_availability_status_20AIAvailabilityStatus_set_status(struct __pyx_obj_22ai_availability_status_AIAvailabilityStatus *__pyx_v_self, enum __pyx_t_22ai_availability_status_AIAvailabilityEnum __pyx_v_status, struct __pyx_opt_args_22ai_availability_status_20AIAvailabilityStatus_set_status *__pyx_optional_args); /* proto*/
static PyObject *__pyx_f_22ai_availability_status_20AIAvailabilityStatus_set_status(struct __pyx_obj_22ai_availability_status_AIAvailabilityStatus *__pyx_v_self, int __pyx_v_status, struct __pyx_opt_args_22ai_availability_status_20AIAvailabilityStatus_set_status *__pyx_optional_args); /* proto*/
/* Module declarations from "constants_inf" */
static PyObject **__pyx_vp_13constants_inf_CONFIG_FILE = 0;
@@ -2861,7 +2861,7 @@ static PyObject *__pyx_pf_22ai_availability_status_20AIAvailabilityStatus_2__str
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 24, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyLong_From_enum____pyx_t_22ai_availability_status_AIAvailabilityEnum(__pyx_v_self->status); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 24, __pyx_L4_error)
__pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_self->status); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 24, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = 1;
#if CYTHON_UNPACK_METHODS
@@ -3057,7 +3057,7 @@ static PyObject *__pyx_f_22ai_availability_status_20AIAvailabilityStatus_seriali
__pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 34, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_6 = __Pyx_PyLong_From_enum____pyx_t_22ai_availability_status_AIAvailabilityEnum(__pyx_v_self->status); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 34, __pyx_L4_error)
__pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_self->status); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 34, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_6);
if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_s, __pyx_t_6) < 0) __PYX_ERR(0, 34, __pyx_L4_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -3183,7 +3183,7 @@ static PyObject *__pyx_f_22ai_availability_status_20AIAvailabilityStatus_seriali
}
static PyObject *__pyx_f_22ai_availability_status_20AIAvailabilityStatus_set_status(struct __pyx_obj_22ai_availability_status_AIAvailabilityStatus *__pyx_v_self, enum __pyx_t_22ai_availability_status_AIAvailabilityEnum __pyx_v_status, struct __pyx_opt_args_22ai_availability_status_20AIAvailabilityStatus_set_status *__pyx_optional_args) {
static PyObject *__pyx_f_22ai_availability_status_20AIAvailabilityStatus_set_status(struct __pyx_obj_22ai_availability_status_AIAvailabilityStatus *__pyx_v_self, int __pyx_v_status, struct __pyx_opt_args_22ai_availability_status_20AIAvailabilityStatus_set_status *__pyx_optional_args) {
PyObject *__pyx_v_error_message = ((PyObject*)Py_None);
PyObject *__pyx_v_log_message = NULL;
PyObject *__pyx_v_status_text = NULL;
@@ -3247,7 +3247,7 @@ static PyObject *__pyx_f_22ai_availability_status_20AIAvailabilityStatus_set_sta
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 46, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyLong_From_enum____pyx_t_22ai_availability_status_AIAvailabilityEnum(__pyx_v_self->status); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 46, __pyx_L4_error)
__pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_self->status); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 46, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = 1;
#if CYTHON_UNPACK_METHODS
@@ -3468,7 +3468,7 @@ static PyObject *__pyx_pf_22ai_availability_status_20AIAvailabilityStatus_4__red
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__reduce_cython__", 0);
__pyx_t_1 = __Pyx_PyLong_From_enum____pyx_t_22ai_availability_status_AIAvailabilityEnum(__pyx_v_self->status); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
__pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->status); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 5, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
@@ -3909,7 +3909,7 @@ static PyObject *__pyx_f_22ai_availability_status___pyx_unpickle_AIAvailabilityS
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
PyObject *__pyx_t_1 = NULL;
enum __pyx_t_22ai_availability_status_AIAvailabilityEnum __pyx_t_2;
int __pyx_t_2;
int __pyx_t_3;
Py_ssize_t __pyx_t_4;
int __pyx_t_5;
@@ -3948,7 +3948,7 @@ static PyObject *__pyx_f_22ai_availability_status___pyx_unpickle_AIAvailabilityS
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(1, 12, __pyx_L1_error)
}
__pyx_t_2 = ((enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)__Pyx_PyLong_As_enum____pyx_t_22ai_availability_status_AIAvailabilityEnum(__Pyx_PyTuple_GET_ITEM(__pyx_v___pyx_state, 2))); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
__pyx_t_2 = __Pyx_PyLong_As_int(__Pyx_PyTuple_GET_ITEM(__pyx_v___pyx_state, 2)); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 12, __pyx_L1_error)
__pyx_v___pyx_result->status = __pyx_t_2;
if (unlikely(__pyx_v___pyx_state == Py_None)) {
@@ -4229,7 +4229,7 @@ static int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate) {
/*--- Type init code ---*/
__pyx_vtabptr_22ai_availability_status_AIAvailabilityStatus = &__pyx_vtable_22ai_availability_status_AIAvailabilityStatus;
__pyx_vtable_22ai_availability_status_AIAvailabilityStatus.serialize = (PyObject *(*)(struct __pyx_obj_22ai_availability_status_AIAvailabilityStatus *))__pyx_f_22ai_availability_status_20AIAvailabilityStatus_serialize;
__pyx_vtable_22ai_availability_status_AIAvailabilityStatus.set_status = (PyObject *(*)(struct __pyx_obj_22ai_availability_status_AIAvailabilityStatus *, enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, struct __pyx_opt_args_22ai_availability_status_20AIAvailabilityStatus_set_status *__pyx_optional_args))__pyx_f_22ai_availability_status_20AIAvailabilityStatus_set_status;
__pyx_vtable_22ai_availability_status_AIAvailabilityStatus.set_status = (PyObject *(*)(struct __pyx_obj_22ai_availability_status_AIAvailabilityStatus *, int, struct __pyx_opt_args_22ai_availability_status_20AIAvailabilityStatus_set_status *__pyx_optional_args))__pyx_f_22ai_availability_status_20AIAvailabilityStatus_set_status;
#if CYTHON_USE_TYPE_SPECS
__pyx_mstate->__pyx_ptype_22ai_availability_status_AIAvailabilityStatus = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_22ai_availability_status_AIAvailabilityStatus_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_22ai_availability_status_AIAvailabilityStatus)) __PYX_ERR(0, 15, __pyx_L1_error)
if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_22ai_availability_status_AIAvailabilityStatus_spec, __pyx_mstate->__pyx_ptype_22ai_availability_status_AIAvailabilityStatus) < 0) __PYX_ERR(0, 15, __pyx_L1_error)
@@ -9419,6 +9419,331 @@ CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyO
}
#endif
/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int(int value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
const int neg_one = (int) -1, const_zero = (int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(int) < sizeof(long)) {
return PyLong_FromLong((long) value);
} else if (sizeof(int) <= sizeof(unsigned long)) {
return PyLong_FromUnsignedLong((unsigned long) value);
#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY
} else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
}
} else {
if (sizeof(int) <= sizeof(long)) {
return PyLong_FromLong((long) value);
#ifdef HAVE_LONG_LONG
} else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
}
}
{
unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
if (is_unsigned) {
return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
} else {
return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
}
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
int one = 1; int little = (int)*(unsigned char *)&one;
return _PyLong_FromByteArray(bytes, sizeof(int),
little, !is_unsigned);
#else
int one = 1; int little = (int)*(unsigned char *)&one;
PyObject *from_bytes, *result = NULL, *kwds = NULL;
PyObject *py_bytes = NULL, *order_str = NULL;
from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
if (!from_bytes) return NULL;
py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int));
if (!py_bytes) goto limited_bad;
order_str = PyUnicode_FromString(little ? "little" : "big");
if (!order_str) goto limited_bad;
{
PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
if (!is_unsigned) {
kwds = __Pyx_MakeVectorcallBuilderKwds(1);
if (!kwds) goto limited_bad;
if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
}
result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
}
limited_bad:
Py_XDECREF(kwds);
Py_XDECREF(order_str);
Py_XDECREF(py_bytes);
Py_XDECREF(from_bytes);
return result;
#endif
}
}
/* CIntFromPy */
static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
const int neg_one = (int) -1, const_zero = (int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
const int is_unsigned = neg_one > const_zero;
if (unlikely(!PyLong_Check(x))) {
int val;
PyObject *tmp = __Pyx_PyNumber_Long(x);
if (!tmp) return (int) -1;
val = __Pyx_PyLong_As_int(tmp);
Py_DECREF(tmp);
return val;
}
if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
if (unlikely(__Pyx_PyLong_IsNeg(x))) {
goto raise_neg_overflow;
} else if (__Pyx_PyLong_IsCompact(x)) {
__PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
} else {
const digit* digits = __Pyx_PyLong_Digits(x);
assert(__Pyx_PyLong_DigitCount(x) > 1);
switch (__Pyx_PyLong_DigitCount(x)) {
case 2:
if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) {
return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
}
}
break;
case 3:
if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) {
return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
}
}
break;
case 4:
if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) {
return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
}
}
break;
}
}
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
if (unlikely(Py_SIZE(x) < 0)) {
goto raise_neg_overflow;
}
#else
{
int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
if (unlikely(result < 0))
return (int) -1;
if (unlikely(result == 1))
goto raise_neg_overflow;
}
#endif
if ((sizeof(int) <= sizeof(unsigned long))) {
__PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
} else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) {
__PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
}
} else {
#if CYTHON_USE_PYLONG_INTERNALS
if (__Pyx_PyLong_IsCompact(x)) {
__PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
} else {
const digit* digits = __Pyx_PyLong_Digits(x);
assert(__Pyx_PyLong_DigitCount(x) > 1);
switch (__Pyx_PyLong_SignedDigitCount(x)) {
case -2:
if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
}
}
break;
case 2:
if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
}
}
break;
case -3:
if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
}
}
break;
case 3:
if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
}
}
break;
case -4:
if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
}
}
break;
case 4:
if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
}
}
break;
}
}
#endif
if ((sizeof(int) <= sizeof(long))) {
__PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
} else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) {
__PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
}
}
{
int val;
int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
if (unlikely(bytes_copied == -1)) {
} else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
goto raise_overflow;
} else {
ret = 0;
}
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
int one = 1; int is_little = (int)*(unsigned char *)&one;
unsigned char *bytes = (unsigned char *)&val;
ret = _PyLong_AsByteArray((PyLongObject *)x,
bytes, sizeof(val),
is_little, !is_unsigned);
#else
PyObject *v;
PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
int bits, remaining_bits, is_negative = 0;
int chunk_size = (sizeof(long) < 8) ? 30 : 62;
if (likely(PyLong_CheckExact(x))) {
v = __Pyx_NewRef(x);
} else {
v = PyNumber_Long(x);
if (unlikely(!v)) return (int) -1;
assert(PyLong_CheckExact(v));
}
{
int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
if (unlikely(result < 0)) {
Py_DECREF(v);
return (int) -1;
}
is_negative = result == 1;
}
if (is_unsigned && unlikely(is_negative)) {
Py_DECREF(v);
goto raise_neg_overflow;
} else if (is_negative) {
stepval = PyNumber_Invert(v);
Py_DECREF(v);
if (unlikely(!stepval))
return (int) -1;
} else {
stepval = v;
}
v = NULL;
val = (int) 0;
mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) {
PyObject *tmp, *digit;
long idigit;
digit = PyNumber_And(stepval, mask);
if (unlikely(!digit)) goto done;
idigit = PyLong_AsLong(digit);
Py_DECREF(digit);
if (unlikely(idigit < 0)) goto done;
val |= ((int) idigit) << bits;
tmp = PyNumber_Rshift(stepval, shift);
if (unlikely(!tmp)) goto done;
Py_DECREF(stepval); stepval = tmp;
}
Py_DECREF(shift); shift = NULL;
Py_DECREF(mask); mask = NULL;
{
long idigit = PyLong_AsLong(stepval);
if (unlikely(idigit < 0)) goto done;
remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1);
if (unlikely(idigit >= (1L << remaining_bits)))
goto raise_overflow;
val |= ((int) idigit) << bits;
}
if (!is_unsigned) {
if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1))))
goto raise_overflow;
if (is_negative)
val = ~val;
}
ret = 0;
done:
Py_XDECREF(shift);
Py_XDECREF(mask);
Py_XDECREF(stepval);
#endif
if (unlikely(ret))
return (int) -1;
return val;
}
raise_overflow:
PyErr_SetString(PyExc_OverflowError,
"value too large to convert to int");
return (int) -1;
raise_neg_overflow:
PyErr_SetString(PyExc_OverflowError,
"can't convert negative value to int");
return (int) -1;
}
/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_enum____pyx_t_22ai_availability_status_AIAvailabilityEnum(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
@@ -9490,195 +9815,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyLong_From_enum____pyx_t_22ai_availability
}
}
/* CIntFromPy */
static CYTHON_INLINE enum __pyx_t_22ai_availability_status_AIAvailabilityEnum __Pyx_PyLong_As_enum____pyx_t_22ai_availability_status_AIAvailabilityEnum(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
const enum __pyx_t_22ai_availability_status_AIAvailabilityEnum neg_one = (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) -1, const_zero = (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
const int is_unsigned = neg_one > const_zero;
if (unlikely(!PyLong_Check(x))) {
enum __pyx_t_22ai_availability_status_AIAvailabilityEnum val;
PyObject *tmp = __Pyx_PyNumber_Long(x);
if (!tmp) return (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) -1;
val = __Pyx_PyLong_As_enum____pyx_t_22ai_availability_status_AIAvailabilityEnum(tmp);
Py_DECREF(tmp);
return val;
}
if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
if (unlikely(__Pyx_PyLong_IsNeg(x))) {
goto raise_neg_overflow;
} else if (__Pyx_PyLong_IsCompact(x)) {
__PYX_VERIFY_RETURN_INT(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
} else {
const digit* digits = __Pyx_PyLong_Digits(x);
assert(__Pyx_PyLong_DigitCount(x) > 1);
switch (__Pyx_PyLong_DigitCount(x)) {
case 2:
if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) > 1 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) >= 2 * PyLong_SHIFT)) {
return (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) (((((enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[0]));
}
}
break;
case 3:
if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) > 2 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) >= 3 * PyLong_SHIFT)) {
return (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) (((((((enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[0]));
}
}
break;
case 4:
if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) > 3 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) >= 4 * PyLong_SHIFT)) {
return (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) (((((((((enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[3]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[0]));
}
}
break;
}
}
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
if (unlikely(Py_SIZE(x) < 0)) {
goto raise_neg_overflow;
}
#else
{
int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
if (unlikely(result < 0))
return (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) -1;
if (unlikely(result == 1))
goto raise_neg_overflow;
}
#endif
if ((sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) <= sizeof(unsigned long))) {
__PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
} else if ((sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) <= sizeof(unsigned PY_LONG_LONG))) {
__PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
}
} else {
#if CYTHON_USE_PYLONG_INTERNALS
if (__Pyx_PyLong_IsCompact(x)) {
__PYX_VERIFY_RETURN_INT(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
} else {
const digit* digits = __Pyx_PyLong_Digits(x);
assert(__Pyx_PyLong_DigitCount(x) > 1);
switch (__Pyx_PyLong_SignedDigitCount(x)) {
case -2:
if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) - 1 > 1 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) - 1 > 2 * PyLong_SHIFT)) {
return (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) (((enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)-1)*(((((enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[0])));
}
}
break;
case 2:
if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) > 1 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) - 1 > 2 * PyLong_SHIFT)) {
return (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) ((((((enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[0])));
}
}
break;
case -3:
if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) - 1 > 2 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) - 1 > 3 * PyLong_SHIFT)) {
return (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) (((enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)-1)*(((((((enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[0])));
}
}
break;
case 3:
if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) > 2 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) - 1 > 3 * PyLong_SHIFT)) {
return (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) ((((((((enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[0])));
}
}
break;
case -4:
if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) - 1 > 3 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) - 1 > 4 * PyLong_SHIFT)) {
return (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) (((enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)-1)*(((((((((enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[3]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[0])));
}
}
break;
case 4:
if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) > 3 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) - 1 > 4 * PyLong_SHIFT)) {
return (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) ((((((((((enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[3]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum)digits[0])));
}
}
break;
}
}
#endif
if ((sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) <= sizeof(long))) {
__PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
} else if ((sizeof(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) <= sizeof(PY_LONG_LONG))) {
__PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_22ai_availability_status_AIAvailabilityEnum, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
}
}
{
enum __pyx_t_22ai_availability_status_AIAvailabilityEnum val;
int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
if (unlikely(bytes_copied == -1)) {
} else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
goto raise_overflow;
} else {
ret = 0;
}
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
int one = 1; int is_little = (int)*(unsigned char *)&one;
unsigned char *bytes = (unsigned char *)&val;
ret = _PyLong_AsByteArray((PyLongObject *)x,
bytes, sizeof(val),
is_little, !is_unsigned);
#else
PyErr_SetString(PyExc_RuntimeError,
"_PyLong_AsByteArray() or PyLong_AsNativeBytes() not available, cannot convert large enums");
val = (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) -1;
#endif
if (unlikely(ret))
return (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) -1;
return val;
}
raise_overflow:
PyErr_SetString(PyExc_OverflowError,
"value too large to convert to enum __pyx_t_22ai_availability_status_AIAvailabilityEnum");
return (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) -1;
raise_neg_overflow:
PyErr_SetString(PyExc_OverflowError,
"can't convert negative value to enum __pyx_t_22ai_availability_status_AIAvailabilityEnum");
return (enum __pyx_t_22ai_availability_status_AIAvailabilityEnum) -1;
}
/* CIntFromPy */
static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
@@ -10043,260 +10179,6 @@ __Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp)
}
#endif
/* CIntFromPy */
static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
const int neg_one = (int) -1, const_zero = (int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
const int is_unsigned = neg_one > const_zero;
if (unlikely(!PyLong_Check(x))) {
int val;
PyObject *tmp = __Pyx_PyNumber_Long(x);
if (!tmp) return (int) -1;
val = __Pyx_PyLong_As_int(tmp);
Py_DECREF(tmp);
return val;
}
if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
if (unlikely(__Pyx_PyLong_IsNeg(x))) {
goto raise_neg_overflow;
} else if (__Pyx_PyLong_IsCompact(x)) {
__PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
} else {
const digit* digits = __Pyx_PyLong_Digits(x);
assert(__Pyx_PyLong_DigitCount(x) > 1);
switch (__Pyx_PyLong_DigitCount(x)) {
case 2:
if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) {
return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
}
}
break;
case 3:
if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) {
return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
}
}
break;
case 4:
if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) {
return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
}
}
break;
}
}
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
if (unlikely(Py_SIZE(x) < 0)) {
goto raise_neg_overflow;
}
#else
{
int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
if (unlikely(result < 0))
return (int) -1;
if (unlikely(result == 1))
goto raise_neg_overflow;
}
#endif
if ((sizeof(int) <= sizeof(unsigned long))) {
__PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
} else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) {
__PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
}
} else {
#if CYTHON_USE_PYLONG_INTERNALS
if (__Pyx_PyLong_IsCompact(x)) {
__PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
} else {
const digit* digits = __Pyx_PyLong_Digits(x);
assert(__Pyx_PyLong_DigitCount(x) > 1);
switch (__Pyx_PyLong_SignedDigitCount(x)) {
case -2:
if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
}
}
break;
case 2:
if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
}
}
break;
case -3:
if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
}
}
break;
case 3:
if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
}
}
break;
case -4:
if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
}
}
break;
case 4:
if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
__PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
} else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
}
}
break;
}
}
#endif
if ((sizeof(int) <= sizeof(long))) {
__PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
} else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) {
__PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
}
}
{
int val;
int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
if (unlikely(bytes_copied == -1)) {
} else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
goto raise_overflow;
} else {
ret = 0;
}
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
int one = 1; int is_little = (int)*(unsigned char *)&one;
unsigned char *bytes = (unsigned char *)&val;
ret = _PyLong_AsByteArray((PyLongObject *)x,
bytes, sizeof(val),
is_little, !is_unsigned);
#else
PyObject *v;
PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
int bits, remaining_bits, is_negative = 0;
int chunk_size = (sizeof(long) < 8) ? 30 : 62;
if (likely(PyLong_CheckExact(x))) {
v = __Pyx_NewRef(x);
} else {
v = PyNumber_Long(x);
if (unlikely(!v)) return (int) -1;
assert(PyLong_CheckExact(v));
}
{
int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
if (unlikely(result < 0)) {
Py_DECREF(v);
return (int) -1;
}
is_negative = result == 1;
}
if (is_unsigned && unlikely(is_negative)) {
Py_DECREF(v);
goto raise_neg_overflow;
} else if (is_negative) {
stepval = PyNumber_Invert(v);
Py_DECREF(v);
if (unlikely(!stepval))
return (int) -1;
} else {
stepval = v;
}
v = NULL;
val = (int) 0;
mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) {
PyObject *tmp, *digit;
long idigit;
digit = PyNumber_And(stepval, mask);
if (unlikely(!digit)) goto done;
idigit = PyLong_AsLong(digit);
Py_DECREF(digit);
if (unlikely(idigit < 0)) goto done;
val |= ((int) idigit) << bits;
tmp = PyNumber_Rshift(stepval, shift);
if (unlikely(!tmp)) goto done;
Py_DECREF(stepval); stepval = tmp;
}
Py_DECREF(shift); shift = NULL;
Py_DECREF(mask); mask = NULL;
{
long idigit = PyLong_AsLong(stepval);
if (unlikely(idigit < 0)) goto done;
remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1);
if (unlikely(idigit >= (1L << remaining_bits)))
goto raise_overflow;
val |= ((int) idigit) << bits;
}
if (!is_unsigned) {
if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1))))
goto raise_overflow;
if (is_negative)
val = ~val;
}
ret = 0;
done:
Py_XDECREF(shift);
Py_XDECREF(mask);
Py_XDECREF(stepval);
#endif
if (unlikely(ret))
return (int) -1;
return val;
}
raise_overflow:
PyErr_SetString(PyExc_OverflowError,
"value too large to convert to int");
return (int) -1;
raise_neg_overflow:
PyErr_SetString(PyExc_OverflowError,
"can't convert negative value to int");
return (int) -1;
}
/* FastTypeChecks */
#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {