From 4317f38bfaf3dcd66986a69b10e9ec4d6bf5361d Mon Sep 17 00:00:00 2001 From: Hakan Carlsson Date: Mon, 6 Mar 2023 19:35:48 +0100 Subject: [PATCH 1/2] Bump cython version --- reeds_shepp/reeds_shepp.cpp | 699 +++++++++++++++++++++++++++++------- 1 file changed, 568 insertions(+), 131 deletions(-) diff --git a/reeds_shepp/reeds_shepp.cpp b/reeds_shepp/reeds_shepp.cpp index f08f41c..9eddc79 100644 --- a/reeds_shepp/reeds_shepp.cpp +++ b/reeds_shepp/reeds_shepp.cpp @@ -1,14 +1,16 @@ -/* Generated by Cython 0.29.15 */ +/* Generated by Cython 0.29.33 */ +#ifndef PY_SSIZE_T_CLEAN #define PY_SSIZE_T_CLEAN +#endif /* PY_SSIZE_T_CLEAN */ #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else -#define CYTHON_ABI "0_29_15" -#define CYTHON_HEX_VERSION 0x001D0FF0 +#define CYTHON_ABI "0_29_33" +#define CYTHON_HEX_VERSION 0x001D21F0 #define CYTHON_FUTURE_DIVISION 0 #include #ifndef offsetof @@ -47,6 +49,7 @@ #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_NOGIL 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_PYTYPE_LOOKUP @@ -83,10 +86,14 @@ #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif #elif defined(PYSTON_VERSION) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 1 #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_NOGIL 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif @@ -124,10 +131,59 @@ #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif +#elif defined(PY_NOGIL) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_NOGIL 1 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #ifndef CYTHON_USE_ASYNC_SLOTS + #define CYTHON_USE_ASYNC_SLOTS 1 + #endif + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_NOGIL 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif @@ -155,7 +211,7 @@ #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif - #if PY_VERSION_HEX < 0x030300F0 + #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #elif !defined(CYTHON_USE_UNICODE_WRITER) @@ -170,11 +226,14 @@ #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif - #ifndef CYTHON_FAST_THREAD_STATE + #if PY_VERSION_HEX >= 0x030B00A4 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #elif !defined(CYTHON_FAST_THREAD_STATE) #define CYTHON_FAST_THREAD_STATE 1 #endif #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 + #define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030A0000) #endif #ifndef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) @@ -185,15 +244,23 @@ #ifndef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1) #endif - #ifndef CYTHON_USE_EXC_INFO_STACK + #if PY_VERSION_HEX >= 0x030B00A4 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #elif !defined(CYTHON_USE_EXC_INFO_STACK) #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3) #endif + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif #endif #if !defined(CYTHON_FAST_PYCCALL) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #endif #if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" + #if PY_MAJOR_VERSION < 3 + #include "longintrepr.h" + #endif #undef SHIFT #undef BASE #undef MASK @@ -324,9 +391,68 @@ class __Pyx_FakeReference { #define __Pyx_DefaultClassType PyClass_Type #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" -#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2 - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) + #define __Pyx_DefaultClassType PyType_Type +#if PY_VERSION_HEX >= 0x030B00A1 + static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL; + PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL; + const char *fn_cstr=NULL; + const char *name_cstr=NULL; + PyCodeObject* co=NULL; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + if (!(kwds=PyDict_New())) goto end; + if (!(argcount=PyLong_FromLong(a))) goto end; + if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end; + if (!(posonlyargcount=PyLong_FromLong(0))) goto end; + if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end; + if (!(kwonlyargcount=PyLong_FromLong(k))) goto end; + if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end; + if (!(nlocals=PyLong_FromLong(l))) goto end; + if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end; + if (!(stacksize=PyLong_FromLong(s))) goto end; + if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end; + if (!(flags=PyLong_FromLong(f))) goto end; + if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end; + if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end; + if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end; + if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end; + if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end; + if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end; + if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end; + if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end; + if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end; + if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end; + if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end; + if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too; + if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here + if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too; + Py_XDECREF((PyObject*)co); + co = (PyCodeObject*)call_result; + call_result = NULL; + if (0) { + cleanup_code_too: + Py_XDECREF((PyObject*)co); + co = NULL; + } + end: + Py_XDECREF(kwds); + Py_XDECREF(argcount); + Py_XDECREF(posonlyargcount); + Py_XDECREF(kwonlyargcount); + Py_XDECREF(nlocals); + Py_XDECREF(stacksize); + Py_XDECREF(replace); + Py_XDECREF(call_result); + Py_XDECREF(empty); + if (type) { + PyErr_Restore(type, value, traceback); + } + return co; + } #else #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) @@ -440,8 +566,12 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_READY(op) (0) + #else + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #endif #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) @@ -449,7 +579,15 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #else + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #endif #else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 @@ -498,8 +636,10 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact +#ifndef PyObject_Unicode #define PyObject_Unicode PyObject_Str #endif +#endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) @@ -510,6 +650,13 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif #if CYTHON_ASSUME_SAFE_MACROS #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) #else @@ -543,13 +690,13 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { #if PY_VERSION_HEX < 0x030200A4 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t #else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t + #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t #endif #if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func)) + #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif @@ -571,8 +718,10 @@ static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { } __Pyx_PyAsyncMethodsStruct; #endif -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #if !defined(_USE_MATH_DEFINES) + #define _USE_MATH_DEFINES + #endif #endif #include #ifdef NAN @@ -590,11 +739,10 @@ static CYTHON_INLINE float __PYX_NAN() { #define __Pyx_truncl truncl #endif - +#define __PYX_MARK_ERR_POS(f_index, lineno) \ + { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } #define __PYX_ERR(f_index, lineno, Ln_error) \ -{ \ - __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ -} + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } #ifndef __PYX_EXTERN_C #ifdef __cplusplus @@ -704,6 +852,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); #if CYTHON_ASSUME_SAFE_MACROS #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else @@ -1008,7 +1157,7 @@ static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { Py_INCREF(x); PyList_SET_ITEM(list, len, x); - Py_SIZE(list) = len+1; + __Pyx_SET_SIZE(list, len + 1); return 0; } return PyList_Append(list, x); @@ -1023,7 +1172,7 @@ static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname); /* FetchCommonType.proto */ static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); -/* CythonFunction.proto */ +/* CythonFunctionShared.proto */ #define __Pyx_CyFunction_USED 1 #define __Pyx_CYFUNCTION_STATICMETHOD 0x01 #define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 @@ -1051,6 +1200,7 @@ typedef struct { PyObject *func_classobj; void *defaults; int defaults_pyobjects; + size_t defaults_size; // used by FusedFunction for copying defaults int flags; PyObject *defaults_tuple; PyObject *defaults_kwdict; @@ -1059,9 +1209,7 @@ typedef struct { } __pyx_CyFunctionObject; static PyTypeObject *__pyx_CyFunctionType = 0; #define __Pyx_CyFunction_Check(obj) (__Pyx_TypeCheck(obj, __pyx_CyFunctionType)) -#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ - __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) -static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, int flags, PyObject* qualname, PyObject *self, PyObject *module, PyObject *globals, @@ -1077,6 +1225,13 @@ static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, PyObject *dict); static int __pyx_CyFunction_init(void); +/* CythonFunction.proto */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); + /* PyObjectCall.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); @@ -1137,13 +1292,21 @@ static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, #ifndef Py_MEMBER_SIZE #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) #endif +#if CYTHON_FAST_PYCALL static size_t __pyx_pyframe_localsplus_offset = 0; #include "frameobject.h" +#if PY_VERSION_HEX >= 0x030b00a6 + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif #define __Pxy_PyFrame_Initialize_Offsets()\ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) #define __Pyx_PyFrame_GetLocalsplus(frame)\ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif // CYTHON_FAST_PYCALL #endif /* PyObjectCallMethO.proto */ @@ -1193,6 +1356,17 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam #define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr #endif +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + /* SetupReduce.proto */ static int __Pyx_setup_reduce(PyObject* type_obj); @@ -1248,12 +1422,17 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename); -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); +/* GCCDiagnostics.proto */ +#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); + /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); @@ -1414,6 +1593,9 @@ static int __pyx_pw_11reeds_shepp_16PyReedsSheppPath_1__init__(PyObject *__pyx_v PyObject *__pyx_v_q0 = 0; PyObject *__pyx_v_q1 = 0; PyObject *__pyx_v_turning_radius = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); @@ -1489,6 +1671,9 @@ static int __pyx_pf_11reeds_shepp_16PyReedsSheppPath___init__(struct __pyx_obj_1 Py_ssize_t __pyx_t_3; PyObject *__pyx_t_4 = NULL; Py_ssize_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); /* "reeds_shepp.pyx":52 @@ -1649,6 +1834,9 @@ static PyObject *__pyx_pf_11reeds_shepp_16PyReedsSheppPath_4distance(struct __py PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("distance", 0); /* "reeds_shepp.pyx":61 @@ -1733,6 +1921,9 @@ static PyObject *__pyx_pf_11reeds_shepp_16PyReedsSheppPath_6sample_f(PyObject *_ PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("f", 0); __pyx_outer_scope = (struct __pyx_obj_11reeds_shepp___pyx_scope_struct__sample *) __Pyx_CyFunction_GetClosure(__pyx_self); __pyx_cur_scope = __pyx_outer_scope; @@ -1796,6 +1987,9 @@ static PyObject *__pyx_pf_11reeds_shepp_16PyReedsSheppPath_6sample(struct __pyx_ __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; double __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("sample", 0); __pyx_cur_scope = (struct __pyx_obj_11reeds_shepp___pyx_scope_struct__sample *)__pyx_tp_new_11reeds_shepp___pyx_scope_struct__sample(__pyx_ptype_11reeds_shepp___pyx_scope_struct__sample, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { @@ -1826,7 +2020,7 @@ static PyObject *__pyx_pf_11reeds_shepp_16PyReedsSheppPath_6sample(struct __pyx_ * qs.append(q) * return 0 */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_11reeds_shepp_16PyReedsSheppPath_6sample_1f, 0, __pyx_n_s_sample_locals_f, ((PyObject*)__pyx_cur_scope), __pyx_n_s_reeds_shepp, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 66, __pyx_L1_error) + __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11reeds_shepp_16PyReedsSheppPath_6sample_1f, 0, __pyx_n_s_sample_locals_f, ((PyObject*)__pyx_cur_scope), __pyx_n_s_reeds_shepp, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_f = __pyx_t_1; __pyx_t_1 = 0; @@ -1909,6 +2103,9 @@ static PyMethodDef __pyx_mdef_11reeds_shepp_16PyReedsSheppPath_4type_1f = {"f", static PyObject *__pyx_pw_11reeds_shepp_16PyReedsSheppPath_4type_1f(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_t = 0; PyObject *__pyx_v_l = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("f (wrapper)", 0); @@ -1974,6 +2171,9 @@ static PyObject *__pyx_pf_11reeds_shepp_16PyReedsSheppPath_4type_f(PyObject *__p int __pyx_t_2; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("f", 0); __pyx_outer_scope = (struct __pyx_obj_11reeds_shepp___pyx_scope_struct_1_type *) __Pyx_CyFunction_GetClosure(__pyx_self); __pyx_cur_scope = __pyx_outer_scope; @@ -2050,6 +2250,9 @@ static PyObject *__pyx_pf_11reeds_shepp_16PyReedsSheppPath_8type(struct __pyx_ob PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("type", 0); __pyx_cur_scope = (struct __pyx_obj_11reeds_shepp___pyx_scope_struct_1_type *)__pyx_tp_new_11reeds_shepp___pyx_scope_struct_1_type(__pyx_ptype_11reeds_shepp___pyx_scope_struct_1_type, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { @@ -2080,7 +2283,7 @@ static PyObject *__pyx_pf_11reeds_shepp_16PyReedsSheppPath_8type(struct __pyx_ob * if t is not 0 : ts.append((t, l)) * return 0 */ - __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_11reeds_shepp_16PyReedsSheppPath_4type_1f, 0, __pyx_n_s_type_locals_f, ((PyObject*)__pyx_cur_scope), __pyx_n_s_reeds_shepp, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 76, __pyx_L1_error) + __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11reeds_shepp_16PyReedsSheppPath_4type_1f, 0, __pyx_n_s_type_locals_f, ((PyObject*)__pyx_cur_scope), __pyx_n_s_reeds_shepp, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 76, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_f = __pyx_t_1; __pyx_t_1 = 0; @@ -2152,6 +2355,9 @@ static PyObject *__pyx_pf_11reeds_shepp_16PyReedsSheppPath_10__reduce_cython__(C PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 @@ -2206,6 +2412,9 @@ static PyObject *__pyx_pf_11reeds_shepp_16PyReedsSheppPath_12__setstate_cython__ PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 @@ -2251,6 +2460,9 @@ static PyObject *__pyx_pw_11reeds_shepp_1path_length(PyObject *__pyx_self, PyObj PyObject *__pyx_v_q0 = 0; PyObject *__pyx_v_q1 = 0; PyObject *__pyx_v_rho = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("path_length (wrapper)", 0); @@ -2323,6 +2535,9 @@ static PyObject *__pyx_pf_11reeds_shepp_path_length(CYTHON_UNUSED PyObject *__py PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("path_length", 0); /* "reeds_shepp.pyx":85 @@ -2406,6 +2621,9 @@ static PyObject *__pyx_pw_11reeds_shepp_3path_sample(PyObject *__pyx_self, PyObj PyObject *__pyx_v_q1 = 0; PyObject *__pyx_v_rho = 0; PyObject *__pyx_v_step_size = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("path_sample (wrapper)", 0); @@ -2488,6 +2706,9 @@ static PyObject *__pyx_pf_11reeds_shepp_2path_sample(CYTHON_UNUSED PyObject *__p PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("path_sample", 0); /* "reeds_shepp.pyx":88 @@ -2569,6 +2790,9 @@ static PyObject *__pyx_pw_11reeds_shepp_5path_type(PyObject *__pyx_self, PyObjec PyObject *__pyx_v_q0 = 0; PyObject *__pyx_v_q1 = 0; PyObject *__pyx_v_rho = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("path_type (wrapper)", 0); @@ -2641,6 +2865,9 @@ static PyObject *__pyx_pf_11reeds_shepp_4path_type(CYTHON_UNUSED PyObject *__pyx PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("path_type", 0); /* "reeds_shepp.pyx":91 @@ -2724,6 +2951,9 @@ static CYTHON_INLINE int __pyx_f_4core_sample_cb(double *__pyx_v_q, void *__pyx_ PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("sample_cb", 0); /* "core.pxd":14 @@ -2832,6 +3062,9 @@ static CYTHON_INLINE int __pyx_f_4core_type_cb(int __pyx_v_t, double __pyx_v_l, PyObject *__pyx_t_5 = NULL; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("type_cb", 0); /* "core.pxd":18 @@ -2940,9 +3173,9 @@ static void __pyx_tp_dealloc_11reeds_shepp_PyReedsSheppPath(PyObject *o) { { PyObject *etype, *eval, *etb; PyErr_Fetch(&etype, &eval, &etb); - ++Py_REFCNT(o); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); __pyx_pw_11reeds_shepp_16PyReedsSheppPath_3__dealloc__(o); - --Py_REFCNT(o); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); PyErr_Restore(etype, eval, etb); } (*Py_TYPE(o)->tp_free)(o); @@ -3018,12 +3251,15 @@ static PyTypeObject __pyx_type_11reeds_shepp_PyReedsSheppPath = { #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif - #if PY_VERSION_HEX >= 0x030800b1 + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 + 0, /*tp_pypy_flags*/ + #endif }; static struct __pyx_obj_11reeds_shepp___pyx_scope_struct__sample *__pyx_freelist_11reeds_shepp___pyx_scope_struct__sample[8]; @@ -3133,12 +3369,15 @@ static PyTypeObject __pyx_type_11reeds_shepp___pyx_scope_struct__sample = { #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif - #if PY_VERSION_HEX >= 0x030800b1 + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 + 0, /*tp_pypy_flags*/ + #endif }; static struct __pyx_obj_11reeds_shepp___pyx_scope_struct_1_type *__pyx_freelist_11reeds_shepp___pyx_scope_struct_1_type[8]; @@ -3248,12 +3487,15 @@ static PyTypeObject __pyx_type_11reeds_shepp___pyx_scope_struct_1_type = { #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif - #if PY_VERSION_HEX >= 0x030800b1 + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 + 0, /*tp_pypy_flags*/ + #endif }; static PyMethodDef __pyx_methods[] = { @@ -3446,7 +3688,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { } static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(1, 1, __pyx_L1_error); + if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(1, 1, __pyx_L1_error) __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(1, 1, __pyx_L1_error) __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(1, 1, __pyx_L1_error) __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(1, 1, __pyx_L1_error) @@ -3490,6 +3732,9 @@ static int __Pyx_modinit_function_export_code(void) { static int __Pyx_modinit_type_init_code(void) { __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); /*--- Type init code ---*/ if (PyType_Ready(&__pyx_type_11reeds_shepp_PyReedsSheppPath) < 0) __PYX_ERR(1, 46, __pyx_L1_error) @@ -3550,17 +3795,19 @@ static int __Pyx_modinit_function_import_code(void) { } -#if PY_MAJOR_VERSION < 3 -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC void -#else +#ifndef CYTHON_NO_PYINIT_EXPORT #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#elif PY_MAJOR_VERSION < 3 +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" void +#else +#define __Pyx_PyMODINIT_FUNC void #endif #else -#ifdef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyObject * +#ifdef __cplusplus +#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * #else -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#define __Pyx_PyMODINIT_FUNC PyObject * #endif #endif @@ -3642,6 +3889,9 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec_reeds_shepp(PyObject *__pyx_pyinit #endif { PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannyDeclarations #if CYTHON_PEP489_MULTI_PHASE_INIT if (__pyx_m) { @@ -3689,11 +3939,9 @@ if (!__Pyx_RefNanny) { #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ - #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - #ifdef WITH_THREAD /* Python build with threading support? */ + #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS PyEval_InitThreads(); #endif - #endif /*--- Module creation code ---*/ #if CYTHON_PEP489_MULTI_PHASE_INIT __pyx_m = __pyx_pyinit_module; @@ -3712,7 +3960,7 @@ if (!__Pyx_RefNanny) { Py_INCREF(__pyx_b); __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(1, 1, __pyx_L1_error) Py_INCREF(__pyx_cython_runtime); - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(1, 1, __pyx_L1_error); + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(1, 1, __pyx_L1_error) /*--- Initialize various global constants etc. ---*/ if (__Pyx_InitGlobals() < 0) __PYX_ERR(1, 1, __pyx_L1_error) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) @@ -3730,14 +3978,14 @@ if (!__Pyx_RefNanny) { } #endif /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) goto __pyx_L1_error; + if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(1, 1, __pyx_L1_error) /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) goto __pyx_L1_error; + if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(1, 1, __pyx_L1_error) /*--- Global type/function init code ---*/ (void)__Pyx_modinit_global_init_code(); (void)__Pyx_modinit_variable_export_code(); (void)__Pyx_modinit_function_export_code(); - if (unlikely(__Pyx_modinit_type_init_code() != 0)) goto __pyx_L1_error; + if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(1, 1, __pyx_L1_error) (void)__Pyx_modinit_type_import_code(); (void)__Pyx_modinit_variable_import_code(); (void)__Pyx_modinit_function_import_code(); @@ -3957,7 +4205,7 @@ static int __Pyx_ParseOptionalKeywords( } name = first_kw_arg; #if PY_MAJOR_VERSION < 3 - if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { + if (likely(PyString_Check(key))) { while (*name) { if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) && _PyString_Eq(**name, key)) { @@ -3984,7 +4232,7 @@ static int __Pyx_ParseOptionalKeywords( while (*name) { int cmp = (**name == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : + (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : #endif PyUnicode_Compare(**name, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; @@ -4000,7 +4248,7 @@ static int __Pyx_ParseOptionalKeywords( while (argname != first_kw_arg) { int cmp = (**argname == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : + (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : #endif PyUnicode_Compare(**argname, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; @@ -4127,7 +4375,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, /* ObjectGetItem */ #if CYTHON_USE_TYPE_SLOTS static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { - PyObject *runerr; + PyObject *runerr = NULL; Py_ssize_t key_value; PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence; if (unlikely(!(m && m->sq_item))) { @@ -4197,7 +4445,7 @@ static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { goto done; } -/* CythonFunction */ +/* CythonFunctionShared */ #include static PyObject * __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) @@ -4490,7 +4738,8 @@ static PyObject * __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) { #if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromString(m->func.m_ml->ml_name); + Py_INCREF(m->func_qualname); + return m->func_qualname; #else return PyString_FromString(m->func.m_ml->ml_name); #endif @@ -4504,10 +4753,9 @@ static PyMethodDef __pyx_CyFunction_methods[] = { #else #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) #endif -static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); - if (op == NULL) +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + if (unlikely(op == NULL)) return NULL; op->flags = flags; __Pyx_CyFunction_weakreflist(op) = NULL; @@ -4528,12 +4776,12 @@ static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int f Py_XINCREF(code); op->func_code = code; op->defaults_pyobjects = 0; + op->defaults_size = 0; op->defaults = NULL; op->defaults_tuple = NULL; op->defaults_kwdict = NULL; op->defaults_getter = NULL; op->func_annotations = NULL; - PyObject_GC_Track(op); return (PyObject *) op; } static int @@ -4596,6 +4844,7 @@ static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, } static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) { +#if PY_MAJOR_VERSION < 3 __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { Py_INCREF(func); @@ -4608,6 +4857,7 @@ static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObj } if (obj == Py_None) obj = NULL; +#endif return __Pyx_PyMethod_New(func, obj, type); } static PyObject* @@ -4692,6 +4942,14 @@ static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, P self = PyTuple_GetItem(args, 0); if (unlikely(!self)) { Py_DECREF(new_args); +#if PY_MAJOR_VERSION > 2 + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); +#else + PyErr_SetString(PyExc_TypeError, + "unbound method needs an argument"); +#endif return NULL; } result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); @@ -4760,12 +5018,15 @@ static PyTypeObject __pyx_CyFunctionType_type = { #if PY_VERSION_HEX >= 0x030400a1 0, #endif -#if PY_VERSION_HEX >= 0x030800b1 +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, #endif +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 + 0, +#endif }; static int __pyx_CyFunction_init(void) { __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); @@ -4781,6 +5042,7 @@ static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t return PyErr_NoMemory(); memset(m->defaults, 0, size); m->defaults_pyobjects = pyobjects; + m->defaults_size = size; return m->defaults; } static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { @@ -4799,11 +5061,24 @@ static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, Py Py_INCREF(dict); } +/* CythonFunction */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + /* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; - ternaryfunc call = func->ob_type->tp_call; + ternaryfunc call = Py_TYPE(func)->tp_call; if (unlikely(!call)) return PyObject_Call(func, arg, kw); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) @@ -5149,7 +5424,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { return __Pyx_PyFunction_FastCall(func, NULL, 0); } #endif -#ifdef __Pyx_CyFunction_USED +#if defined(__Pyx_CyFunction_USED) && defined(NDEBUG) if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func))) #else if (likely(PyCFunction_Check(func))) @@ -5208,7 +5483,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { return __Pyx_PyObject_CallMethO(func, arg); #if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { + } else if (__Pyx_PyFastCFunction_Check(func)) { return __Pyx_PyCFunction_FastCall(func, &arg, 1); #endif } @@ -5266,9 +5541,7 @@ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, PyGILState_STATE state; if (nogil) state = PyGILState_Ensure(); -#ifdef _MSC_VER - else state = (PyGILState_STATE)-1; -#endif + else state = (PyGILState_STATE)0; #endif __Pyx_PyThreadState_assign __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); @@ -5347,6 +5620,53 @@ static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_nam } #endif +/* PyErrExceptionMatches */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); +#if PY_MAJOR_VERSION >= 3 + for (i=0; icurexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; + if (unlikely(PyTuple_Check(err))) + return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); +} +#endif + +/* PyObjectGetAttrStrNoError */ +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +} + /* SetupReduce */ static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { int ret; @@ -5367,17 +5687,35 @@ static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { static int __Pyx_setup_reduce(PyObject* type_obj) { int ret = 0; PyObject *object_reduce = NULL; + PyObject *object_getstate = NULL; PyObject *object_reduce_ex = NULL; PyObject *reduce = NULL; PyObject *reduce_ex = NULL; PyObject *reduce_cython = NULL; PyObject *setstate = NULL; PyObject *setstate_cython = NULL; + PyObject *getstate = NULL; +#if CYTHON_USE_PYTYPE_LOOKUP + getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate); +#else + getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_getstate); + if (!getstate && PyErr_Occurred()) { + goto __PYX_BAD; + } +#endif + if (getstate) { #if CYTHON_USE_PYTYPE_LOOKUP - if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; + object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_getstate); #else - if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD; + object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_n_s_getstate); + if (!object_getstate && PyErr_Occurred()) { + goto __PYX_BAD; + } #endif + if (object_getstate != getstate) { + goto __PYX_GOOD; + } + } #if CYTHON_USE_PYTYPE_LOOKUP object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; #else @@ -5392,15 +5730,23 @@ static int __Pyx_setup_reduce(PyObject* type_obj) { #endif reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { - reduce_cython = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_cython); if (unlikely(!reduce_cython)) goto __PYX_BAD; - ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython); + if (likely(reduce_cython)) { + ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (reduce == object_reduce || PyErr_Occurred()) { + goto __PYX_BAD; + } setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate); if (!setstate) PyErr_Clear(); if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { - setstate_cython = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate_cython); if (unlikely(!setstate_cython)) goto __PYX_BAD; - ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython); + if (likely(setstate_cython)) { + ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (!setstate || PyErr_Occurred()) { + goto __PYX_BAD; + } } PyType_Modified((PyTypeObject*)type_obj); } @@ -5414,6 +5760,8 @@ static int __Pyx_setup_reduce(PyObject* type_obj) { #if !CYTHON_USE_PYTYPE_LOOKUP Py_XDECREF(object_reduce); Py_XDECREF(object_reduce_ex); + Py_XDECREF(object_getstate); + Py_XDECREF(getstate); #endif Py_XDECREF(reduce); Py_XDECREF(reduce_ex); @@ -5451,7 +5799,7 @@ static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UIN /* CLineInTraceback */ #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { +static int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) { PyObject *use_cline; PyObject *ptype, *pvalue, *ptraceback; #if CYTHON_COMPILING_IN_CPYTHON @@ -5481,7 +5829,7 @@ static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { } if (!use_cline) { c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); } else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { c_line = 0; @@ -5555,7 +5903,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { if (__pyx_code_cache.count == __pyx_code_cache.max_count) { int new_max = __pyx_code_cache.max_count + 64; entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); + __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); if (unlikely(!entries)) { return; } @@ -5575,33 +5923,40 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { #include "compile.h" #include "frameobject.h" #include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( const char *funcname, int c_line, int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; #if PY_MAJOR_VERSION < 3 + PyObject *py_srcfile = NULL; py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif if (!py_srcfile) goto bad; + #endif if (c_line) { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; #else py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + funcname = PyUnicode_AsUTF8(py_funcname); + if (!funcname) goto bad; #endif } else { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); + if (!py_funcname) goto bad; #endif } - if (!py_funcname) goto bad; + #if PY_MAJOR_VERSION < 3 py_code = __Pyx_PyCode_New( 0, 0, @@ -5620,11 +5975,16 @@ static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( __pyx_empty_bytes /*PyObject *lnotab*/ ); Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); + #else + py_code = PyCode_NewEmpty(filename, funcname, py_line); + #endif + Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline return py_code; bad: - Py_XDECREF(py_srcfile); Py_XDECREF(py_funcname); + #if PY_MAJOR_VERSION < 3 + Py_XDECREF(py_srcfile); + #endif return NULL; } static void __Pyx_AddTraceback(const char *funcname, int c_line, @@ -5632,14 +5992,24 @@ static void __Pyx_AddTraceback(const char *funcname, int c_line, PyCodeObject *py_code = 0; PyFrameObject *py_frame = 0; PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject *ptype, *pvalue, *ptraceback; if (c_line) { c_line = __Pyx_CLineForTraceback(tstate, c_line); } py_code = __pyx_find_code_object(c_line ? -c_line : py_line); if (!py_code) { + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); - if (!py_code) goto bad; + if (!py_code) { + /* If the code object creation fails, then we should clear the + fetched exception references and propagate the new exception */ + Py_XDECREF(ptype); + Py_XDECREF(pvalue); + Py_XDECREF(ptraceback); + goto bad; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); } py_frame = PyFrame_New( @@ -5678,40 +6048,16 @@ static void __Pyx_AddTraceback(const char *funcname, int c_line, return (target_type) value;\ } -/* CIntToPy */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { - const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0; - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } 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 PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(int), - little, !is_unsigned); - } -} - /* CIntFromPy */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { - const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0; +#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 PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { @@ -5898,9 +6244,54 @@ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { return (int) -1; } +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyInt_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 PyInt_FromLong((long) value); + } else if (sizeof(int) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#ifdef HAVE_LONG_LONG + } 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 PyInt_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + int one = 1; int little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&value; + return _PyLong_FromByteArray(bytes, sizeof(int), + little, !is_unsigned); + } +} + /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { - const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(long) < sizeof(long)) { @@ -5931,7 +6322,14 @@ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { - const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { @@ -6220,11 +6618,33 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj /* CheckBinaryVersion */ static int __Pyx_check_binary_version(void) { - char ctversion[4], rtversion[4]; - PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); - PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); - if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { + char ctversion[5]; + int same=1, i, found_dot; + const char* rt_from_call = Py_GetVersion(); + PyOS_snprintf(ctversion, 5, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); + found_dot = 0; + for (i = 0; i < 4; i++) { + if (!ctversion[i]) { + same = (rt_from_call[i] < '0' || rt_from_call[i] > '9'); + break; + } + if (rt_from_call[i] != ctversion[i]) { + same = 0; + break; + } + } + if (!same) { + char rtversion[5] = {'\0'}; char message[200]; + for (i=0; i<4; ++i) { + if (rt_from_call[i] == '.') { + if (found_dot) break; + found_dot = 1; + } else if (rt_from_call[i] < '0' || rt_from_call[i] > '9') { + break; + } + rtversion[i] = rt_from_call[i]; + } PyOS_snprintf(message, sizeof(message), "compiletime version %s of module '%.100s' " "does not match runtime version %s", @@ -6482,6 +6902,23 @@ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_DECREF(x); return ival; } +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { + return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); +#if PY_MAJOR_VERSION < 3 + } else if (likely(PyInt_CheckExact(o))) { + return PyInt_AS_LONG(o); +#endif + } else { + Py_ssize_t ival; + PyObject *x; + x = PyNumber_Index(o); + if (!x) return -1; + ival = PyInt_AsLong(x); + Py_DECREF(x); + return ival; + } +} static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); } From b45474201907ca0c11d273b1483bd965a7d3a373 Mon Sep 17 00:00:00 2001 From: Hakan Carlsson Date: Mon, 6 Mar 2023 19:49:50 +0100 Subject: [PATCH 2/2] Update demo script --- demos/demo.py | 3 ++- fig/demo.png | Bin 41934 -> 44085 bytes 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/demos/demo.py b/demos/demo.py index 30342a2..bf356fe 100644 --- a/demos/demo.py +++ b/demos/demo.py @@ -78,13 +78,14 @@ def plot_path(q0, q1): def plot_table(cols): - rows = ((len(qs)) / cols) + rows = int((len(qs)) / cols) for i,(q0, q1) in enumerate(qs): plt.subplot(rows, cols, i+1) plot_path(q0, q1) dist = reeds_shepp.path_length(q0, q1, rho) print(reeds_shepp.path_type(q0, q1, rho)) plt.title('length: {:.2f}'.format(dist)) + plt.tight_layout() plt.savefig('fig/demo.png') plt.show() diff --git a/fig/demo.png b/fig/demo.png index babd704e436779ca3d203c9e02ae3647aeeacb96..0232f800cde1503f7ebd1151f1b3b9762e0d9761 100644 GIT binary patch literal 44085 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 literal 41934 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 z zTo`3HH-2xk;GYr1t>({R%MYBxzu=J=zAuMT4l0-Mt??6!;20va6;&sG3fwh|t zv3WM2O^l~ox%W39dp9a-YHFJ0zSqvA1`LT@z1k|+w6U_XvcR3N|3UaX&?^8bas>;0aM#@YA&mVt|H+cwRP@OQf$X z(dnjufj3|HWee9VlIsl(@<0*ZFsv4b`6evj2(>{oMX;`c9*zdXe_yj{{0kN$9?Fb| zv;r8YALHtjp!HWk!lacM1~Ri`62sw{4L=(F zqpxa6cOJ(iry9;|q|pv3-@DUPvRy?Pegg%uVh3PZe*xCA!s!no_)AP&T%SPe5WRWy zh64)UVGRupvTpJ@)lE04)LwfWu1UMPn(Osy{;w9GVwzzX_Xo<<#H1h2B6w^%iS{$j z4`_t1E<#Y^v^Dh~i0{j0Tt9z*L6Aeh+GG%Wn|VqH3-sBe^eNU7;s3q*#6&8HegFxf zyD_u1z8+FkWSh1LDRp|+z5D3l*HN?X>+GL-Et=qU3nqiLRdpfpYlJXh5ne7BWXMD| z!v1RS=`n>h-ox>kfTo$}u^2k+;0)NQcr+q$kn2Sjk7-Y$)`k~k8`^q$epJHCFbn!O zHqeKQNCBau0%9)6xzIsO^6?{q8JPl3`0wxRZxAC7i331=hauTiB+!A3DiEeSi4;W) zkHvO(ce%;6aOgS=8~w0)IQ$6E@slxsLl6oX1V~n9I8T=JigiMUYP{4Ua{82*>Vp-< zqtDUN3`WY2;vq4Kln`pm6To8y>+xNrchV}dpRj4MEQs95&IpdLEn z+sciC_kx^zhY>~t#7HGTsYtK}YJRLeGm;nox+lVixIp&+2#n;ZKu(1K;33!hJ|x7^ zr5`EE(6L6fV!uJ4;gA$ZvL0Xq-;U~egd#S(mBs@qU{K6~*HWUng+fQtFhJer(60lA zs0X>2XGKZK-A6%irbPi-9a<{Zlz_r-Q+HwtJ%4K(FRy|chKMEsIFqlJ-m6(5B_BR0 z`PlIk2Zut@X>V^8s$x^hTI%1C*$;b>NP)pfs~KAP{2))m1*zv`V9$fs@M6)+nBpOP z)|01X-w144fX-d#<$<7IQOL7&*`DbJZ{6fSKf-VaNko8HSC zlaIUa3xfa%NJ$y<#&DDyf254{d?m?1Rb)4dVxC?Ru6!gF6^<0A(tt=k2+(yivWGa~ zpNzV`U-*cv)L_18+C(m23df$>!-aNOicXQaUMAH|NiHD zhJP-s)$=GMy(P(`KhNC(FjN8t9{f16oc6x^f0`z#e?R-WovGtu|o>Hj}hoMZ|ik?%0Rj+(?Q|Bn4;0DaYO&&RA#J1{s%(umu4q~|#ABkDdxLy)KL2hV&R`wgT= z78iA{O@RZnxka`=OKxhDptbQm*F!DiC|-^neLj)afZLFgrnBY)b1wfV(TUleo7<$% z-53Nweuo?D!V!8+gL5u#pCSDj=5)O~4>s#P9aP(h*iI7hgIjK4=PIwzKxu)#?;a6XRrA?c&IJZCOTa&bykpw=@{PpK)2G`QcEhgG=VnJGmtEc; zI&c~~hNAP08Kw+9#4}`CuZ#W+5{dD%DQ{oqOX4m*i&Rw+XQ86Xjnm|qrI0SesV&8W zDldjsl{ zVCJC?E(>lNz;8-ycql^=N;|}RQE)mq2_w?n%)#@HQhfr#iFwj}NwcDu77?Ny1=#^+D8M_+~3hx=s4 zHX3g5YLbWU9MAq}oJkg4R1uNcs zcMPfbFQ8UHMo9$v)$i@??=382^E*2FCs_Z`7j?kd-g?(vFMlukc@h8X^_CWGwj!4n zyqTVBH`LybOr0k%kx`o!{o}FG$D63Zf5T`iKR?5$JT)d4F5_Q%18_GiODSkph9~vK zX6V~JW8HJo{sp5C%yIHaOcfLd87r>Ch7bBm?OWbcthV6HX6?`sj8 zak8)YcO|8%de#nu_m$}l?CaQ*lTFoY;}ds$Zv=fe-@D?eth{V9dp29tgsdTuHwFAcAEvwNKQJ)B`*9f6p6vcIp<(oT z^E%_!sl8k13)n_R{cRtZVdRji%f)c#BIGjk4)6+W*X1Iy=Ac=od=Qh40WA-nq=-4i1p&G4e( zn@icms88QZ_m3QU0j0c?w|gA~T?u+p%0;7Uxjgj9PtHzMKTAtGD&UgcdVK#_LzJ@~ zuX^u6=?`0cKyl!U;|=GLF&in*#y4?XMeS>q+a#5QC^=xURVCRNO@E-Us@Csq;U7u& z$Zn{R%=knrE}yxgD(an``AQQ<*^QO^GM8Sf+GqXoL}}uQ+sRF3rY51n>S7Fu5ciA2 zRhp5cEyL-8N%@Xn^R-VmCTe4h>#ZUj!#;X)$9tI_eM*Y#ZaE0GlAkqqOnm!*l2A*0 zfbqVSS`mrZgr!aeDl0w+v(9`=lG~#6%!x)0(Fa?# zOIc@+Bc46J#D1aVwIyZ5txU~6`NV*%Uo{UKnBg{?uV!bIi;_R0zOjBEw5GzGI=8~C zF`E>M3kkcq9mpd<_v!e8OOfhRp&{KP6J~`AHM8O#RH25erc%Nj--c*y?BWOG^rj5f zYIEr-AuqnP3?m$#_|>BR;y>+}E~S@m@71$WRaS)4$3_a;Oi90GjF&Gm=J-do{8zkH z@S@jVomSIpQ-YB_(faLdyPZt3uCE3@PP?BOUjq5g^LrUVznMoV@zBw`77p%7>S>OZ zt*4~{kLf~Xjc(va;DpKYn@PBybg#N9mz3hoyZb z`dRD571O@I{I17iWkK`<5AMNnkl9_YJ%D*e(kO&c;cc8Y2`9GJ+40MDF^)!q1~aD* z&Jn3H@v8!CF;~pA{L0#DemCxrRQvR7v#WVs0CM_?)D2cu;VqBxJD4 z_*q7uE=G#|%Xyns{}c@OI@X zYaCqQ7m4-MLX$^nLG+cY@4fgFh4SVTl7mYB^@%9xSG^0|5m|BU+5dH{h*F}j!`9HR z)Gl0z{_ph(Yr8z-dslJ;*Dw) zl~b+vC#E0%cvr~TkCf}eoQ4Or7YO&;S!zO zYFz5bd3`4Et2Mz$NRBmjrq-~7*fEz3Wy5mkJpL;IA8J0;h_XZlim}b2!?#kUXuJ(Ci@FY#5NP3#|@2aQlMXHJXcZW6N znsYw+1ZYT&FL&O=1%8HZmB5z$qd%b4!}Xe58}jX^eVpq3P1pX{`!KvqJIam<3A)@; z!O4}Kqn7f5(d=o_?x0Nj8wnH*E^slt12UuU**ESA(#M~^nAW#2k?Vc7;wz0$JfWAZ zoh0=~NBc@SV*`KcK!>UQ(Y=~e4uJLQR2a;Ryi%3S!_XSlfQ1^5A1gOBy$zg?^|_HiLZQ*)BK<#XUMM~z`Vx!-&%bmv zmtw{y@wOME^*cWof-l#83AuX4)p0oJ_O zjU>@use%3#mQ{S?3(2I%ajgw*1esA~SogUF2r1Xb`8j-dUK{QHp1=%jTUMA?WMwCj z2f?9$&=#{S%V?YvI=s6ACHrMgasv}tS17vmL>xxF$98l>FNsA_eaMcvyQtH;j4QwB zZ2fcB6Poo33FSX~MOjLDF=k$p*IGM!+D#kyF$BDJdHMM(#wV=*KAL1o)G6+G{X2yy zvC;_}mBC%iW<C6`Dud(+eTWe$DM}#hhP1&=UC*AT(1H*FBDtrYp>q3qCGhA(qkJ zMlVNWc$_oMn>+qqnObJ|z$Yck=CJDE>h{9MZ?!5ou(U3>@0a{6yCu_vZqTSQd9Kj$ z$kH@-I-p-|JZ+dIV7y)U?<*+f_pMDH+Fwpc9k~9@ zrNB+({a2-!VPZ%E$d&rQupg-OjL4ZRDidujG(X@h7BN9K>+a8=;yayb`Y6{g-SnVs zP133A7_HKKCB(ZX@y+Mkp~^!dyi3f5*jrX5qGRH5JqkjD`7S(WWYq&YRhV$dPaEC2 zPl`wHB;>??*R4btqFH63lYtiUgtrU(VKj$=U*w-WQg|=vFMlJ)+(b*EQLEi4aQ*b< zBw0<0vEIgdr?37%%`?ZCtq1(}qV|z1&X?#z`$erOKQBwikJj?;FX_5k-j(<0ev0LY zCVq)WF9XR>lzY}}qJ&PdTXE`LTNh43RPaEj+^q!+`IH;w{10|kf04&isXXl{{_Iy0 z@dtPGxMM;CWxjSx{?&78(#zVo&dOK|t#XD<${*D|wTQlPxn5GThy7iNv2nwG@6S>F zgd%<$ycBO-j4Lw!k`esX^sufguUE2T1%IZx!-VmUtx9_y#y};pA|C2^>%nV~eH+wy z?{_cvi&6^_`-soefH0A{9zF7*L;ua6cvWIqOhyUvcsH9&mI~}{CSRT9eDlCDtyMCv z??Cx8HlMT0ADv((tT(ZoKnu4UR9K!Xa(CX(rAgqI+tG-2b-HE%YXlJnz#zm-sJu); z5xWKyOr_@YQ_{85Ds}C2?;gzOd#Wm?Oa~2FkYR9heQBy(gNrXKc<{)MN&A&|Z}OG2 z6+`Npi>yewWp@z<=1YHf)!KIDCK=(w4e`n&u1>P0SVxD6T%B+2YPgsKt|)F+@o zT?u5WB-Pwpx`SNgUa7^)-?xf$GhIosPOq%u#Z8hlwI|J%{efa+On>>ZFHRmaRr(=1 zLHGNc1ho3i$$8AbGB6taiub&K4;SiAZfzESmSP!8AW!d4vnCDeVk2&<6uTf-FT@lV z*ZhV$YdR$0@YPqAXZ)79l_#$hRsJD?ahs~(=Ogs*A|<@RM;MtLuIS-g=sk-6uWT(i z@hM9lOO#)25S=A9t>+tg+?!27E(N^b&Sqa(eDFP>f7`TI`-=$g-es= z11R!+Nt}aKG&;JEajQeWug+UIh{-Ls)Y0YlY&PDMBA;hZX^i;hbg5o+LrkoPUCvFn z7MHUQ$6xp}0imVoFH7>6X@cJoD@0W7@!Y%6Q^C z0VQ!^a2s+&i>B3tA;%{k8jmQBwV{Z!9Uo%maUlJ z-(Wons-1n8w)MQ$_0{v?HwKIpqfDtYwn10t0YAIkeG{QF(ley;AZ-r0xb-B znYijRZz{V@9%fx{2IKp7gJxTTo=bo2SI3F;e5O6md*7N}KiHF{E7b__ym@v02{y(%_3WLEIGhhMqT%8G3W9{DRoA?y3eEC;&}G;E>Bel`W@tVuSEm2^ zN48P_*Xdq83-cCJ#?%$&XW=dY?N4zC=>B~2NX#tZ)%qJi0nTnJQHfUIA5+W zBt~s%>bNFmkKA1lk^TdH5js+3JlMZ`E6j@3=o0S~UHf)~A*xv`9_R6`^@EDcU~tx*Iy7itmOv52gXhMl9h5hJXiDBf~2P%sT zaXwNRt1y|!80=TN{0~CytRV?KYG9_mb5^()qW=C&p3(Khg#2HX6Po&4qt?0K())6^ zNS712A$77dzdS68%97_Q$6Rx26Hrvf{@`BFAi}hSN^r5qv5gs70fAZAB>*Gbj{<0Ykdvco zXbR>yWjvvgn0MfPeEowsxqsH&hq~vDg(cNc610^lg3tkKhm6P^NEkls6|;=1%wTNxQVrk)aBhF zBwt=!{Fszv?U-{fx)!(X-(g>7h}+)N^^tG(8H>)uBu}7p*wLZ#rlX_7!9_VYnX^ub zG3gnLl16_H22s78OOPz1sBVtFkJ_cY`(ug++L;pZUGcXHb)AIvz1^sk!-0iKoC>-F z{q*z9t*W>hcSjZm-OyXvQ8Gq_tZ8Yoo9D-5%R)vu!ul0GW@-6{%uGy=GrxTK3Z=|E z5O(E(HZ6C$`t{`WF(T-bNRyKuolZ=A#d+GFLGn*YmL-#vQ@vw!^vqSaia9!7Yd8E) z`y$oXsMd0nH_TRpQttf9%43)U0$uX6iMn^u2&`%5F5DIOKg{tfR`#J@3r~a6#BOo; z(JMLq!>5-r38T&$=1qE7PG)8%CTL1f^?ygBq3ZYR(f*@s8qu9FocXEKAZ9E@@$15` zr9#TPOBSZBiyzy=BoiDM3<*WaU#+cDyR6B*Yhly8(=+Jq=zdC9=ucqb{&+-sZmaVIw6PFSev1n(;$RXWy~$QQShazWr> z34_G=CZR7j2bmF-ekw=g(99DbMM--W*wH+dlv_H%{o423ei6UtDHkoEV7~0iQWZNZm~MNfj>w*z7Ga!%((M9 zEIuItW#_=YGaK1rz74N3Z-#QtFp+nezT!xsv&*jRmwV30v$6zT-Wte@ETJL55=QTV zY9kjq5;Vq)Vzk|>oN*p2KjiQ5@az<9aR8sD!|9h~E7>T+?5wPt)wMZL`i)gNvmu=| z<1;W36jUna$6^D)DkorYYP?yo3oulgAUBMQ(of=?=oHl1ds|QWnbVlv&n={I^UP;i z+%h5vvh#S1!8j^?hQjpE%|bJS(*_$8Y^6?*mSe=P{8;?(e_JG}kV{4;RlAD{3nwrt zd=|*3N_Vai(oxMiid!*1@?u@x6YCTW< z;Aqu}fEKhX0wSvzjr=QT#Yv*{h zgqzj3+ULEr5pUISFpWv{D)!T9HCN0mT)eLAf-r-CcUTuqhptvA^E8%kSz#)MY?}1qt>fLj)_D0*@I<3}VU%XO8FPPu<-v`?)9nm3MhD;? zYPFtgbslx|_vJhf^bTr;HW8??!<_3YFxT4Ryq}Pq{7ISRXpp&dW;M6y&7unOHCCeS zv?Y)*5XO^+NEgrn> zy;5*zqZ|G728|9HXFvfQ%@{~Wd%`A^QccIc8IoN5O*fWj{Cn{n<2bC6?}OyKAkNb7 z=2i#lYM3(&z6$F^xNw@ zXZuPt2t(OzgzqNJu zY=mFm5UVg_k5rpSo17?B#c}RE)Re|*lcRQ0B5T~IT|K$**k2~SxEaS`Y28}f;mR5N z!_fa^JL$F1GK`G*V%r)@jz3f7NP%163-H-wqqF)9drVCUdnsuIn z&=>_O7v_fTQeO*=mxb3q|LDSY>6@tH+lwe+EV|!UNPYK0{Xy&k;f<&`bG_xF$M{lJ zZ6x`Hf+}kHU&5-rpJJD; z>5RP=9EMeC&Ao!DaL=cR@4lDNP*HegW>s*(va*_1mCxjlz|_<|>Q}uqtAkg1Qr_82 z&rRAkPF7Dz6F1R`R9(}o`1BqpO8r%WaA$vkor}83lfGXL7xl`RW%fOq;`3EeP+T_{ zA0w_~x&KHa`vdQ27J72Y=f`Rg)K)vO%-RF*MuStpu_Y1RX`Fj!pY8Q-fE{_bEgG?n zR1wo_ZS=~x7xSuErA_Di8uN?!LMC@topQ_YoYooje!NK4lWk32?OX3N~VVLykvv;=q3F%)7I%C(4O=H??$6nq#jW zUjL~~Ve>D%mu`Q!FmiHsQZCYt%&kS5ucqwfu)|t8- z9Oh1QSVU9}%-@j7%yH})Lw7}(ndC##RobGIAcn5V+eYV@vW-oFeZ>qS;t$_qy9RS(y>W}j@cef$mp3cr z+QRgSgzYwWu~abf5-8@W$FlQJDNPixBCFDOzVniNQkSU+uX#$75KFl_bd|=C zcGz)vtUC24#k#Zb%PP)*kxRK>v$PP-jK=nqr1!(eW8Lf(pYI^qAFCyNJw0)vY^l4f zh(pE%QXN`%(YtpIy5z8o24adCS`2O*&1=(an;Mv9CFdw)sy%KPH$DwY#J9P>)4>Kd z>kZ!ZufOk2*T0_8+B2EpONyb5X!3%XZc5IH_oqkv^Tw`(&+2K2C@~}t8Bw*0(~mc?FfZ9S0-HL6PH!8*b3gC<@b$ z(jNAaJFr-$#lDrd6puJzx2a>p#( z;H=k@Tg|J`HPWsNI}Fis46%=WQO zD>k<6r1m?uippG0wuG<_p`b^;iYeLOHMTgu?z78L{Z5NV6`T+YdOT$j(aWodJj_zq zIk>woKppvEa969-1iZe5>s{5FJE?DUd~=hUS32i ziP5pXhoGtU(W6w^I9x`f1mEK;`3!$^efRw{`l+5pk|yVJaK_H2&EnxvK;1*4Nyq|? zR9e`z`3!?A_P5V%Q`07|Kk0P(q z_)LjdFyHH%I()J7`YYV1+;4WmTKJEMWGV4S*wP>L8b}ELo)D0vW;|<&vTqld-;475 z(u^&yNY=LW_@1ygH}DC0%n1k_6Y3?e$z<7vdp}s|Hk(ILijR?A&QW2ZaIOi$Wu!7 zZg>|)1vJ3HTreKfuG=CaiO@pA1&n>@J!$|B$NI+ap!Kii_dfmnl`8zokD%ZrKXEkO zh_`7qoc^!gUX>bqP|$M!F(Z*|-csiz(fdi#?&gr?grdLF1|9tq*cW@rA?x2tFPzu0 z57$WQL>~-K9bUU{NsLFKVj)eG-sEO{%^*e0D^Apduh!#u`Ry&6Ip`sqheo?Ocyo|Q z{yHSb8@jB&GtfYe=gIHR?qmIq%Ny!-(aN_&Lt2b~@6H)({Dhyv&7?~iL_U6Ep-b~>7bFc3X0q^txQck|h%^7Mx|NUu$``-=;P%3rf zO(jc-j5(veyZ%p6uO_}&5Gm;1dwTObS}aFIDdFI?tV(IeGG+UxaShF1@>ohWxPAnY z+N3MxE&j%sts;+J+aY-R8Lce+{^4NL0ryE{Wn#B`*#m?Px|4Zr5XdRIgh z%Be4EbT?;wdbtg}9@emnj~dY)87BX
lynMz)JZa-GDuJVN$!{c{cEC(79qh^B7 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